From b70693afddc262498ba1bd2abdf82788cf79f0cd Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sat, 18 Nov 2023 18:35:33 +0100 Subject: [PATCH 1/9] added playerHandler tests --- backend/handlers/playerHandler.js | 161 +-- backend/package-lock.json | 1887 +++++++++++++++++++++++++ backend/package.json | 8 + backend/schemas/player.js | 4 + backend/schemas/room.js | 40 +- backend/server.js | 2 + backend/tests/handlers/player.test.js | 123 ++ 7 files changed, 2109 insertions(+), 116 deletions(-) create mode 100644 backend/tests/handlers/player.test.js diff --git a/backend/handlers/playerHandler.js b/backend/handlers/playerHandler.js index 7640f16..2f178ff 100644 --- a/backend/handlers/playerHandler.js +++ b/backend/handlers/playerHandler.js @@ -1,121 +1,58 @@ const RoomModel = require('../schemas/room'); const { colors } = require('../utils/constants'); -const { getStartPositions } = require('../utils/functions'); module.exports = (io, socket) => { const req = socket.request; - // Function responsible for adding a player to an existing room or creating a new one - const login = data => { - // When new player login to game we are looking for not full and not started room to put player there - RoomModel.findOne({ full: false, started: false }, function (err, room) { - if (room) { - // If there is one adds player to it - addPlayerToExistingRoom(room, data); - } else { - // If not creates new room and add player to it - createNewRoom(data); - } - }); - }; - - // Function responsible for changing the player's readiness - const ready = () => { - const { roomId, playerId } = req.session; - // Finds player room - RoomModel.findOne({ _id: roomId }, function (err, room) { - if (err) return err; - // Finds index of player in players array - const index = room.players.findIndex(player => player._id.toString() == playerId.toString()); - // Changes player's readiness to the opposite - room.players[index].ready = !room.players[index].ready; - // If two players are ready starts game by setting the room properties - if (room.players.filter(player => player.ready).length >= 2) { - room.started = true; - room.nextMoveTime = Date.now() + 15000; - room.players.forEach(player => (player.ready = true)); - room.players[0].nowMoving = true; - } - RoomModel.findOneAndUpdate( - { - _id: roomId, - }, - room, - err => { - if (err) return err; - // Sends to all players in room game data - io.to(roomId.toString()).emit('room:data', JSON.stringify(room)); - } - ); - }); - }; - - socket.on('player:login', login); - socket.on('player:ready', ready); - - function createNewRoom(data) { - const room = new RoomModel({ - createDate: new Date(), - players: [ - { - name: data.name, - color: colors[0], - }, - ], - pawns: getStartPositions(), - }); - // Saves new room to database - room.save().then(() => { - // Since it is not bound to an HTTP request, the session must be manually reloaded and saved - req.session.reload(err => { - if (err) return socket.disconnect(); - // Saving session data - req.session.roomId = room._id.toString(); - req.session.playerId = room.players[0]._id.toString(); - req.session.color = room.players[0].color; - req.session.save(); - // Sending data to the user, after which player will be redirected to the game - socket.join(room._id.toString()); - socket.emit('player:data', JSON.stringify(req.session)); - }); - }); - } - - function addPlayerToExistingRoom(room, data) { - // Adding a new user to the room - room.players.push({ - name: data.name, - ready: false, - color: colors[room.players.length], - }); - let updatedRoom = { players: room.players }; - // Checking if the room is full - if (room.players.length === 4) { - // Changes the properties of the room to the state to start the game - updatedRoom = { - ...updatedRoom, - full: true, - started: true, - nextMoveTime: Date.now() + 15000, - pawns: getStartPositions(), - }; - updatedRoom.players.forEach(player => (player.ready = true)); - updatedRoom.players[0].nowMoving = true; + const handleLogin = async data => { + const room = await RoomModel.findOne({ full: false, started: false }); + if (room) { + addPlayerToExistingRoom(room, data); + } else { + createNewRoom(data); } - // Updates a room in the database - RoomModel.findOneAndUpdate({ _id: room._id }, updatedRoom).then(() => { - // Since it is not bound to an HTTP request, the session must be manually reloaded and saved - req.session.reload(err => { - if (err) return socket.disconnect(); - // Saving session data - req.session.roomId = room._id.toString(); - req.session.playerId = updatedRoom.players[updatedRoom.players.length - 1]._id.toString(); - req.session.color = colors[updatedRoom.players.length - 1]; - req.session.save(); - socket.join(room._id.toString()); - // Sending data to the user, after which player will be redirected to the game - socket.emit('player:data', JSON.stringify(req.session)); - }); + }; + + const handleReady = async () => { + const { roomId, playerId } = req.session; + const room = await RoomModel.findOne({ _id: roomId }); + room.getPlayer(playerId).changeReadyStatus(); + if (room.canStartGame()) { + room.startGame(); + } + await RoomModel.findOneAndUpdate({ _id: roomId }, room); + io.to(roomId).emit('room:data', JSON.stringify(room)); + }; + + const createNewRoom = async data => { + const room = new RoomModel(); + room.addPlayer(data.name); + await room.save(); + reloadSession(room); + }; + + const addPlayerToExistingRoom = async (room, data) => { + room.addPlayer(data.name); + if (room.isFull()) { + room.startGame(); + } + await RoomModel.findOneAndUpdate({ _id: room._id }, room); + reloadSession(room); + }; + + // Since it is not bound to an HTTP request, the session must be manually reloaded and saved + const reloadSession = room => { + req.session.reload(err => { + if (err) return socket.disconnect(); + req.session.roomId = room._id.toString(); + req.session.playerId = room.players[room.players.length - 1]._id.toString(); + req.session.color = colors[room.players.length - 1]; + req.session.save(); + socket.join(room._id.toString()); + socket.emit('player:data', JSON.stringify(req.session)); }); - } + }; + + socket.on('player:login', handleLogin); + socket.on('player:ready', handleReady); }; diff --git a/backend/package-lock.json b/backend/package-lock.json index eeb1076..122fc4f 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -14,8 +14,19 @@ "express-session": "^1.17.1", "mongoose": "^5.12.0", "socket.io": "^4.5.1" + }, + "devDependencies": { + "chai": "^4.3.10", + "mocha": "^10.2.0", + "socket.io-client": "^4.7.2" } }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "node_modules/@types/bson": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", @@ -79,6 +90,52 @@ "node": ">= 0.6" } }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/archetype": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/archetype/-/archetype-0.13.0.tgz", @@ -92,6 +149,12 @@ "node": ">= 4.0.0" } }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -108,6 +171,21 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -135,6 +213,15 @@ "node": "^4.5.0 || >= 5.9" } }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/bl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", @@ -174,6 +261,33 @@ "node": ">= 0.8" } }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "node_modules/bson": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", @@ -213,11 +327,143 @@ "node": ">= 0.8" } }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "node_modules/connect-mongo": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-4.4.0.tgz", @@ -368,6 +614,30 @@ "ms": "2.0.0" } }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/denque": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", @@ -389,11 +659,26 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -422,6 +707,72 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", @@ -459,11 +810,32 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -543,6 +915,18 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -560,6 +944,31 @@ "node": ">= 0.8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, "node_modules/forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -576,6 +985,116 @@ "node": ">= 0.6" } }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, "node_modules/http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -621,6 +1140,16 @@ } ] }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "node_modules/inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -639,11 +1168,95 @@ "node": ">= 0.10" } }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/kareem": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", @@ -660,6 +1273,21 @@ "node": ">6" } }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -670,6 +1298,31 @@ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.1" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -732,6 +1385,87 @@ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, + "node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/mocha/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, "node_modules/mongodb": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", @@ -922,6 +1656,18 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -930,6 +1676,15 @@ "node": ">= 0.6" } }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -957,6 +1712,15 @@ "node": ">= 0.8" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, "node_modules/optional-require": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", @@ -965,6 +1729,36 @@ "node": ">=4" } }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -973,11 +1767,50 @@ "node": ">= 0.8" } }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1019,6 +1852,15 @@ "node": ">= 0.8" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1055,6 +1897,18 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", @@ -1077,6 +1931,15 @@ "node": ">=4" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", @@ -1143,6 +2006,15 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -1202,6 +2074,57 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, + "node_modules/socket.io-client": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/socket.io-client/node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/socket.io-parser": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", @@ -1295,6 +2218,71 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -1314,6 +2302,15 @@ "node": ">=12" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1386,6 +2383,35 @@ "node": ">=12" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, "node_modules/ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", @@ -1405,9 +2431,87 @@ "optional": true } } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } }, "dependencies": { + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, "@types/bson": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/bson/-/bson-4.0.3.tgz", @@ -1468,6 +2572,37 @@ "negotiator": "0.6.2" } }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "archetype": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/archetype/-/archetype-0.13.0.tgz", @@ -1478,6 +2613,12 @@ "mpath": "0.8.x" } }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -1494,6 +2635,18 @@ "safer-buffer": "^2.1.0" } }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1504,6 +2657,12 @@ "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "bl": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", @@ -1540,6 +2699,30 @@ "type-is": "~1.6.17" } }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, "bson": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.5.tgz", @@ -1559,11 +2742,110 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chai": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, + "requires": { + "get-func-name": "^2.0.2" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "connect-mongo": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/connect-mongo/-/connect-mongo-4.4.0.tgz", @@ -1665,6 +2947,21 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "denque": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", @@ -1680,11 +2977,23 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -1727,16 +3036,71 @@ } } }, + "engine.io-client": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", + "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "engine.io-parser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, "engine.io-parser": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1806,6 +3170,15 @@ } } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -1820,6 +3193,22 @@ "unpipe": "~1.0.0" } }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -1830,6 +3219,87 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, "http-errors": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", @@ -1855,6 +3325,16 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -1870,11 +3350,68 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, "kareem": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.3.2.tgz", @@ -1888,6 +3425,15 @@ "asn1.js": "^5.4.1" } }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -1898,6 +3444,25 @@ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.1" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1942,6 +3507,69 @@ "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, "mongodb": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.6.0.tgz", @@ -2072,11 +3700,23 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -2095,21 +3735,72 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, "optional-require": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/optional-require/-/optional-require-1.0.3.tgz", "integrity": "sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==" }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -2139,6 +3830,15 @@ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -2169,6 +3869,15 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "regexp-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-1.0.0.tgz", @@ -2188,6 +3897,12 @@ "resolved": "https://registry.npmjs.org/require-at/-/require-at-1.0.6.tgz", "integrity": "sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==" }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, "resolve-from": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", @@ -2244,6 +3959,15 @@ } } }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -2308,6 +4032,45 @@ "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" }, + "socket.io-client": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + } + } + }, "socket.io-parser": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", @@ -2364,6 +4127,50 @@ "safe-buffer": "~5.1.0" } }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -2377,6 +4184,12 @@ "punycode": "^2.1.1" } }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -2428,11 +4241,85 @@ "webidl-conversions": "^7.0.0" } }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, "ws": { "version": "8.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", "requires": {} + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/backend/package.json b/backend/package.json index f7a0302..751caf9 100644 --- a/backend/package.json +++ b/backend/package.json @@ -9,5 +9,13 @@ "express-session": "^1.17.1", "mongoose": "^5.12.0", "socket.io": "^4.5.1" + }, + "devDependencies": { + "chai": "^4.3.10", + "mocha": "^10.2.0", + "socket.io-client": "^4.7.2" + }, + "scripts": { + "test": "mocha tests/**/*.js" } } diff --git a/backend/schemas/player.js b/backend/schemas/player.js index 4c8560b..fe507a5 100644 --- a/backend/schemas/player.js +++ b/backend/schemas/player.js @@ -9,4 +9,8 @@ const PlayerSchema = new Schema({ nowMoving: { type: Boolean, default: false }, }); +PlayerSchema.methods.changeReadyStatus = function () { + this.ready = !this.ready; +}; + module.exports = PlayerSchema; diff --git a/backend/schemas/room.js b/backend/schemas/room.js index c6118e4..91e5427 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -1,18 +1,19 @@ const mongoose = require('mongoose'); -const { getPawnPositionAfterMove } = require('../utils/functions'); +const { colors } = require('../utils/constants'); +const { getPawnPositionAfterMove, getStartPositions } = require('../utils/functions'); const Schema = mongoose.Schema; const PawnSchema = require('./pawn'); const PlayerSchema = require('./player'); const RoomSchema = new Schema({ - createDate: Date, + createDate: { type: Date, default: Date.now }, started: { type: Boolean, default: false }, full: { type: Boolean, default: false }, nextMoveTime: Number, timeoutID: Number, rolledNumber: Number, players: [PlayerSchema], - pawns: [PawnSchema], + pawns: { type: [PawnSchema], default: getStartPositions() }, }); RoomSchema.methods.beatPawns = function (position, attackingPawnColor) { @@ -48,13 +49,44 @@ RoomSchema.methods.getPawnsThatCanMove = function () { const movingPlayer = this.getCurrentlyMovingPlayer(); const playerPawns = this.getPlayerPawns(movingPlayer.color); return playerPawns.filter(pawn => pawn.canMove(this.rolledNumber)); -} +}; RoomSchema.methods.changePositionOfPawn = function (pawn, newPosition) { const pawnIndex = this.getPawnIndex(pawn._id); this.pawns[pawnIndex].position = newPosition; }; +RoomSchema.methods.canStartGame = function () { + return this.players.filter(player => player.ready).length >= 2; +}; + +RoomSchema.methods.startGame = function () { + this.started = true; + this.pawns = getStartPositions(); + this.nextMoveTime = Date.now() + 15000; + this.players.forEach(player => (player.ready = true)); + this.players[0].nowMoving = true; +}; + +RoomSchema.methods.isFull = function () { + if (this.players.length === 4) { + this.full = true; + } + return this.full; +}; + +RoomSchema.methods.getPlayer = function (playerId) { + return this.players.find(player => player._id.toString() === playerId.toString()); +}; + +RoomSchema.methods.addPlayer = function (name) { + this.players.push({ + name: name, + ready: false, + color: colors[this.players.length], + }); +}; + RoomSchema.methods.getPawnIndex = function (pawnId) { return this.pawns.findIndex(pawn => pawn._id.toString() === pawnId.toString()); }; diff --git a/backend/server.js b/backend/server.js index b522c57..a2abf69 100644 --- a/backend/server.js +++ b/backend/server.js @@ -91,3 +91,5 @@ if (process.env.NODE_ENV === 'production') { res.sendFile('/app/build/index.html'); }); } + +module.exports = { server }; \ No newline at end of file diff --git a/backend/tests/handlers/player.test.js b/backend/tests/handlers/player.test.js new file mode 100644 index 0000000..cac7517 --- /dev/null +++ b/backend/tests/handlers/player.test.js @@ -0,0 +1,123 @@ +const { io } = require('socket.io-client'); +const { expect } = require('chai'); +const { server } = require('../../server'); +const mongoose = require('mongoose'); +const CONNECTION_URI = require('../../credentials.js'); + +const socketURL = 'http://localhost:8080'; +const options = { + transports: ['websocket'], + 'force new connection': true, +}; + +describe('Testing player socket handlers', function () { + let firstPlayer, secondPlayer; + + before(async function () { + await mongoose.connect(CONNECTION_URI, { + useNewUrlParser: true, + useUnifiedTopology: true, + }); + + firstPlayer = io.connect(socketURL, options); + secondPlayer = io.connect(socketURL, options); + await assertDatabaseIsClear(); + }); + const assertDatabaseIsClear = async () => { + const collectionInfo = await mongoose.connection.db.listCollections({ name: 'rooms' }).next(); + if (collectionInfo) await mongoose.connection.collections.rooms.drop(); + }; + beforeEach(function (done) { + firstPlayer.off('room:data'); + secondPlayer.off('room:data'); + firstPlayer.off('player:data'); + secondPlayer.off('player:data'); + done(); + }); + + after(function (done) { + if (firstPlayer.connected) { + firstPlayer.disconnect(); + } + if (secondPlayer.connected) { + secondPlayer.disconnect(); + } + server.close(); + assertDatabaseIsClear(); + done(); + }); + + it('should return credentials when joining room', function (done) { + firstPlayer.emit('player:login', { name: 'test1' }); + firstPlayer.on('player:data', data => { + data = JSON.parse(data); + expect(data).to.have.property('roomId'); + expect(data).to.have.property('playerId'); + expect(data).to.have.property('color'); + expect(data.color).to.equal('red'); + done(); + }); + }); + + it('should correctly join player to room', function (done) { + firstPlayer.emit('room:data'); + firstPlayer.on('room:data', data => { + data = JSON.parse(data); + expect(data.players[0].name).to.equal('test1'); + done(); + }); + }); + + it('should correctly join player to existing room', function (done) { + secondPlayer.emit('player:login', { name: 'test2' }); + secondPlayer.on('player:data', data => { + data = JSON.parse(data); + expect(data.color).to.equal('blue'); + secondPlayer.emit('room:data'); + }); + secondPlayer.on('room:data', data => { + data = JSON.parse(data); + expect(data.players[1].name).to.equal('test2'); + done(); + }); + }); + + it('should correctly change player ready status to true', function (done) { + firstPlayer.emit('player:ready'); + firstPlayer.on('room:data', data => { + data = JSON.parse(data); + const player = data.players.find(player => player.name === 'test1'); + expect(player.ready).to.equal(true); + done(); + }); + }); + + it('should correctly change player ready status to false', function (done) { + firstPlayer.emit('player:ready'); + firstPlayer.on('room:data', data => { + data = JSON.parse(data); + const player = data.players.find(player => player.name === 'test1'); + expect(player.ready).to.equal(false); + done(); + }); + }); + + it('should correctly change second player ready status to true', function (done) { + secondPlayer.emit('player:ready'); + secondPlayer.on('room:data', data => { + data = JSON.parse(data); + const player = data.players.find(player => player.name === 'test2'); + expect(player.ready).to.equal(true); + done(); + }); + }); + + it('should start game', function (done) { + firstPlayer.emit('player:ready'); + firstPlayer.on('room:data', data => { + data = JSON.parse(data); + expect(data.started).to.equal(true); + done(); + }); + }); +}); From d284fc30f1525a0ef12353064c085c499c9acce8 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sun, 19 Nov 2023 20:32:12 +0100 Subject: [PATCH 2/9] added room schema tests --- backend/handlers/roomHandler.js | 37 +++++----------- backend/schemas/room.js | 2 +- backend/tests/schemas/room.test.js | 71 ++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 28 deletions(-) create mode 100644 backend/tests/schemas/room.test.js diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index 962bea7..a7e964c 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -2,34 +2,17 @@ const RoomModel = require('../schemas/room'); module.exports = (io, socket) => { const req = socket.request; - const getData = () => { - RoomModel.findOne({ _id: req.session.roomId }, function (err, room) { - if (!room) return err; - if (room.nextMoveTime <= Date.now()) { - changeCurrentMovingPlayer(); - } else { - io.to(req.session.roomId.toString()).emit('room:data', JSON.stringify(room)); - } - }); + + const getData = async () => { + let room = await RoomModel.findOne({ _id: req.session.roomId }); + // Handle the situation when the server crashes and any player reconnects after the time has expired + // Typically, the responsibility for changing players is managed by gameHandler.js. + if (room.nextMoveTime <= Date.now()) { + room.changeMovingPlayer(); + await RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room); + } + io.to(req.session.roomId).emit('room:data', JSON.stringify(room)); }; socket.on('room:data', getData); - - function changeCurrentMovingPlayer() { - RoomModel.findOne({ _id: req.session.roomId }, function (err, room) { - if (!room) return err; - const index = room.players.findIndex(player => player.nowMoving === true); - const roomSize = room.players.length; - room.players[index].nowMoving = false; - if (index + 1 === roomSize) { - room.players[0].nowMoving = true; - } else { - room.players[index + 1].nowMoving = true; - } - room.nextMoveTime = Date.now() + 15000; - RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, function (err, updatedRoom) { - io.to(req.session.roomId).emit('room:data', JSON.stringify(updatedRoom)); - }); - }); - } }; diff --git a/backend/schemas/room.js b/backend/schemas/room.js index 91e5427..89fcd70 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -62,7 +62,6 @@ RoomSchema.methods.canStartGame = function () { RoomSchema.methods.startGame = function () { this.started = true; - this.pawns = getStartPositions(); this.nextMoveTime = Date.now() + 15000; this.players.forEach(player => (player.ready = true)); this.players[0].nowMoving = true; @@ -80,6 +79,7 @@ RoomSchema.methods.getPlayer = function (playerId) { }; RoomSchema.methods.addPlayer = function (name) { + if (this.full) return; this.players.push({ name: name, ready: false, diff --git a/backend/tests/schemas/room.test.js b/backend/tests/schemas/room.test.js new file mode 100644 index 0000000..13a6fe7 --- /dev/null +++ b/backend/tests/schemas/room.test.js @@ -0,0 +1,71 @@ +const { expect } = require('chai'); +const RoomModel = require('../../schemas/room'); +const { getPawnPositionAfterMove, getStartPositions } = require('../../utils/functions'); +describe('Testing room model methods', function () { + const room = new RoomModel(); + + beforeEach(function () { + room.players = []; + room.pawns = getStartPositions(); + }); + it('should correctly beat pawn', function () { + room.addPlayer('test1', 'red'); + room.addPlayer('test2', 'blue'); + room.pawns.forEach(pawn => { + pawn.position = getPawnPositionAfterMove(1, pawn); + }); + room.beatPawns(16, 'green'); + room.pawns.forEach(pawn => { + if (pawn.color != 'red') { + expect(pawn.position).to.not.equal(pawn.basePos); + } else { + expect(pawn.position).to.equal(pawn.basePos); + } + }); + }); + + it('should correctly beat multiple pawns', function () { + room.pawns[0].position = 16; + room.pawns[1].position = 16; + room.beatPawns(16, 'green'); + room.pawns.forEach(pawn => { + expect(pawn.position).to.equal(pawn.basePos); + }); + }); + + it('should correctly change moving player from last to first', function () { + room.addPlayer('test1', 'red'); + room.addPlayer('test2', 'blue'); + room.players[1].nowMoving = true; + room.changeMovingPlayer(); + expect(room.players[0].nowMoving).to.equal(true); + }); + + it('should correctly change moving player from first to second', function () { + room.addPlayer('test1', 'red'); + room.addPlayer('test2', 'blue'); + room.players[0].nowMoving = true; + room.changeMovingPlayer(); + expect(room.players[1].nowMoving).to.equal(true); + }); + + it('should correctly returns pawns that can move', function () { + room.addPlayer('test1', 'red'); + room.addPlayer('test2', 'blue'); + room.players[0].nowMoving = true; + room.pawns[0].position = 16; + room.rolledNumber = 2; + const pawnsThatCanMove = room.getPawnsThatCanMove(); + expect(pawnsThatCanMove.length).to.equal(1); + }); + + it('should given rolled 6 correctly returns pawns that can move', function () { + room.addPlayer('test1', 'red'); + room.addPlayer('test2', 'blue'); + room.players[0].nowMoving = true; + room.pawns[0].position = 16; + room.rolledNumber = 6; + const pawnsThatCanMove = room.getPawnsThatCanMove(); + expect(pawnsThatCanMove.length).to.equal(4); + }); +}); From 6fef82f36afb35d5fa249eeb280082e658034319 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Tue, 21 Nov 2023 21:16:07 +0100 Subject: [PATCH 3/9] added animated move timer --- backend/handlers/playerHandler.js | 1 + backend/handlers/roomHandler.js | 2 + backend/schemas/room.js | 1 + package-lock.json | 27 ++++---- package.json | 1 + src/App.js | 3 - src/components/Gameboard.jsx | 6 +- src/components/Navbar.css | 69 ++++++++++++------- src/components/Navbar.jsx | 10 +-- .../navbar-components/AnimatedOverlay.jsx | 25 +++++++ .../navbar-components/NameContainer.jsx | 42 +---------- .../navbar-components/ReadyButton.jsx | 2 + .../navbar-components/TimerAnimation.js | 63 +++++++++++++++++ src/index.css | 47 ++++++++++--- 14 files changed, 205 insertions(+), 94 deletions(-) create mode 100644 src/components/navbar-components/AnimatedOverlay.jsx create mode 100644 src/components/navbar-components/TimerAnimation.js diff --git a/backend/handlers/playerHandler.js b/backend/handlers/playerHandler.js index 7640f16..fe8b453 100644 --- a/backend/handlers/playerHandler.js +++ b/backend/handlers/playerHandler.js @@ -115,6 +115,7 @@ module.exports = (io, socket) => { socket.join(room._id.toString()); // Sending data to the user, after which player will be redirected to the game socket.emit('player:data', JSON.stringify(req.session)); + socket.emit('room:data', JSON.stringify(updatedRoom)); }); }); } diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index 962bea7..9a4817c 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -27,6 +27,8 @@ module.exports = (io, socket) => { room.players[index + 1].nowMoving = true; } room.nextMoveTime = Date.now() + 15000; + if (this.timeoutID) clearTimeout(this.timeoutID); + this.timeoutID = null; RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room, function (err, updatedRoom) { io.to(req.session.roomId).emit('room:data', JSON.stringify(updatedRoom)); }); diff --git a/backend/schemas/room.js b/backend/schemas/room.js index c6118e4..d6887e4 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -36,6 +36,7 @@ RoomSchema.methods.changeMovingPlayer = function () { this.nextMoveTime = Date.now() + 15000; this.rolledNumber = null; if (this.timeoutID) clearTimeout(this.timeoutID); + this.timeoutID = null; }; RoomSchema.methods.movePawn = function (pawn) { diff --git a/package-lock.json b/package-lock.json index 12ed4c5..b39a8bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "react-loading": "^2.0.3", "react-router-dom": "^5.2.0", "react-scripts": "^5.0.1", + "react-transition-group": "^4.4.5", "socket.io": "^4.5.1", "socket.io-client": "^4.5.1", "web-vitals": "^1.1.0" @@ -16735,9 +16736,9 @@ } }, "node_modules/react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -18664,16 +18665,16 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=14.17" + "node": ">=4.2.0" } }, "node_modules/unbox-primitive": { @@ -31757,9 +31758,9 @@ } }, "react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -33178,9 +33179,9 @@ } }, "typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "peer": true }, "unbox-primitive": { diff --git a/package.json b/package.json index 354a129..a3b0784 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "react-loading": "^2.0.3", "react-router-dom": "^5.2.0", "react-scripts": "^5.0.1", + "react-transition-group": "^4.4.5", "socket.io": "^4.5.1", "socket.io-client": "^4.5.1", "web-vitals": "^1.1.0" diff --git a/src/App.js b/src/App.js index e69fe10..fa208b4 100644 --- a/src/App.js +++ b/src/App.js @@ -40,9 +40,6 @@ function App() { ) : null} - - Hand icons created by berkahicon - Flaticon - diff --git a/src/components/Gameboard.jsx b/src/components/Gameboard.jsx index 000f284..8847ba9 100644 --- a/src/components/Gameboard.jsx +++ b/src/components/Gameboard.jsx @@ -67,8 +67,8 @@ const Gameboard = () => { return ( <> - {players ? ( - <> + {(players[0] && !started) || (time && started) ? ( +
{ rolledNumberCallback={rolledNumberCallback} /> - +
) : ( )} diff --git a/src/components/Navbar.css b/src/components/Navbar.css index 5bd52da..1358d4b 100644 --- a/src/components/Navbar.css +++ b/src/components/Navbar.css @@ -1,26 +1,3 @@ -.red { - position: relative; - left: 176px; -} -.yellow { - position: relative; - flex-direction: row-reverse; - right: 170px; -} -.blue { - position: relative; - right: 28px; - top: 538px; -} -.green { - position: relative; - flex-direction: row-reverse; - top: 538px; - left: 36px; -} -.player-container { - display: flex; -} .dice-container { margin-left: 20px; margin-right: 20px; @@ -30,3 +7,49 @@ .roll { cursor: pointer; } +.ready-container { + display: flex; + width: 300px; + justify-content: center; + align-items: center; + flex-direction: column; + flex-flow: row-reverse; + background-color: grey; + border-radius: 10px; + border: 2px solid white; +} +.ready-container > label { + margin-left: 10px; + margin-right: 10px; + width: 100px; + color: white; +} +.player-container { + display: flex; + align-items: center; + flex-direction: row; + width: 100%; +} +.red { + margin-bottom: 50px; + grid-column: 1; + grid-row: 1; +} +.yellow { + margin-bottom: 50px; + flex-flow: row-reverse; + grid-column: 2; + grid-row: 1; +} +.blue { + margin-top: 50px; + grid-column: 1; + grid-row: 4; +} +.green { + margin-top: 50px; + flex-flow: row-reverse; + grid-column: 2; + grid-row: 4; +} +/* Styl dla overlay */ diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx index 4a27c2d..0c67c8a 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar.jsx @@ -3,11 +3,13 @@ import Dice from './game-board-components/Dice'; import NameContainer from './navbar-components/NameContainer'; import ReadyButton from './navbar-components/ReadyButton'; import './Navbar.css'; - +import { useContext } from 'react'; +import { PlayerDataContext } from '../App'; const Navbar = ({ players, started, time, isReady, rolledNumber, nowMoving, rolledNumberCallback, movingPlayer }) => { + const context = useContext(PlayerDataContext); const colors = ['red', 'blue', 'green', 'yellow']; return ( -
+ <> {players.map((player, index) => (
@@ -18,10 +20,10 @@ const Navbar = ({ players, started, time, isReady, rolledNumber, nowMoving, roll color={colors[index]} rolledNumberCallback={rolledNumberCallback} /> + {context.color !== player.color || started ? null : }
))} - {started ? null : } -
+ ); }; export default Navbar; diff --git a/src/components/navbar-components/AnimatedOverlay.jsx b/src/components/navbar-components/AnimatedOverlay.jsx new file mode 100644 index 0000000..82b1507 --- /dev/null +++ b/src/components/navbar-components/AnimatedOverlay.jsx @@ -0,0 +1,25 @@ +import React, { useState, useEffect } from 'react'; +import { CSSTransition } from 'react-transition-group'; +import './TimerAnimation.js'; + +const AnimatedOverlay = ({ time }) => { + const [animationDelay, setAnimationDelay] = useState(); + + useEffect(() => { + setAnimationDelay(15 - Math.ceil((time - Date.now()) / 1000)); + }, [time]); + + return ( + +
+
+ ); +}; + +export default AnimatedOverlay; diff --git a/src/components/navbar-components/NameContainer.jsx b/src/components/navbar-components/NameContainer.jsx index 53b17ff..b0a68cc 100644 --- a/src/components/navbar-components/NameContainer.jsx +++ b/src/components/navbar-components/NameContainer.jsx @@ -1,51 +1,15 @@ -import React, { useState, useEffect, useContext } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; -import { SocketContext } from '../../App'; - -/* - Component responsible for: - - displaying the player's name - - informing players about the readiness of other players by changing the color of container from gray to the player's color - - counting time to the end of the move - - Props: - - player (object): - The player to whom the container belongs - Player's properties used in this component: - - ready (boolean): - is the player ready for the start of the game, if so, change color from gray to the player's color - when the game is started all players are ready not matter if they clicked ready button before - - nowMoving (boolean) is this player move now, if true display timer - - name (string) - - time (number) - time remaining until the move is made in milliseconds -*/ +import AnimatedOverlay from './AnimatedOverlay'; const NameContainer = ({ player, time }) => { - const [remainingTime, setRemainingTime] = useState(); - const socket = useContext(SocketContext); - - // Function responsible for counting down to the end of time every second - const countdown = () => { - setRemainingTime(Math.ceil((time - Date.now()) / 1000)); - }; - - useEffect(() => { - // Starts the countdown from the beginning if the server returned information about skipping the turn - socket.on('game:skip', () => { - setRemainingTime(15); - }); - setRemainingTime(Math.ceil((time - Date.now()) / 1000)); - const interval = setInterval(countdown, 1000); - return () => clearInterval(interval); - }, [countdown]); - return (

{player.name}

- {player.nowMoving ?
{remainingTime}
: null} + {player.nowMoving ? : null}
); }; diff --git a/src/components/navbar-components/ReadyButton.jsx b/src/components/navbar-components/ReadyButton.jsx index 62ea815..6addc94 100644 --- a/src/components/navbar-components/ReadyButton.jsx +++ b/src/components/navbar-components/ReadyButton.jsx @@ -1,6 +1,8 @@ import React, { useState, useContext, useEffect } from 'react'; import { SocketContext } from '../../App'; import Switch from '@material-ui/core/Switch'; +import '../Navbar.css'; +import './TimerAnimation'; const ReadyButton = ({ isReady }) => { const socket = useContext(SocketContext); diff --git a/src/components/navbar-components/TimerAnimation.js b/src/components/navbar-components/TimerAnimation.js new file mode 100644 index 0000000..f8b44e1 --- /dev/null +++ b/src/components/navbar-components/TimerAnimation.js @@ -0,0 +1,63 @@ +const keyframes = []; +const steps = 86; + +let count = 0; +let s = 'polygon(50% 50%, 50% 0%, 50% 0%'; + +for (let i = 50; i <= 100; i += 5) { + s += `, ${i}% 0%`; + handle(); +} +for (let i = 0; i <= 100; i += 5) { + s += `, 100% ${i}%`; + handle(); +} +for (let i = 100; i >= 0; i -= 5) { + s += `, ${i}% 100%`; + handle(); +} + +for (let i = 100; i >= 0; i -= 5) { + s += `, 0% ${i}%`; + handle(); +} +for (let i = 0; i <= 50; i += 5) { + s += `, ${i}% 0%`; + handle(); +} + +function handle() { + const percentage = (count / steps) * 100; + let step; + if (percentage <= 75 && percentage >= 73) { + step = `${percentage}% { + background-color: orange; + clip-path: ${s}) + }`; + } else if (percentage > 97.5 && percentage < 100) { + step = `${percentage}% { + background-color: red; + clip-path: ${s}) + }`; + } else if (percentage > 0 && percentage < 2.5) { + step = `${percentage}% { + background-color: green; + clip-path: ${s}) + }`; + } else { + step = `${percentage}% { + clip-path: ${s}) + }`; + } + keyframes.push(step); + count++; +} + +const animation = document.styleSheets[0].insertRule( + ` + @keyframes timerAnimation { + ${keyframes.join('\n')} + } +`, + document.styleSheets[0].cssRules.length +); diff --git a/src/index.css b/src/index.css index 97dff06..1346031 100644 --- a/src/index.css +++ b/src/index.css @@ -6,13 +6,16 @@ body { rgba(0, 138, 255, 1) 16%, rgba(9, 9, 121, 1) 81% ); + overflow: hidden; +} +#root { display: flex; + justify-content: center; flex-direction: column; - align-items: center; -} -.canvas-container { - margin: 10px; + height: 100vh; + width: 100vw; } + canvas { border-radius: 15px; border: 2px solid black; @@ -25,12 +28,14 @@ canvas { display: flex; flex-direction: row; } -.navbar-container > div { - margin-right: 10px; -} + .name-container { - width: 100px; - height: 50px; + position: relative; + min-width: 100px; + min-height: 50px; + display: flex; + justify-content: center; + align-items: center; border: 2px solid white; border-radius: 5px; color: white; @@ -49,9 +54,33 @@ canvas { height: 20px; border-radius: 5px; } +.overlay { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + opacity: 0.9; + animation: timerAnimation 15s linear infinite; + transition-duration: 15s; +} #root { display: flex; flex-direction: column; align-items: center; justify-content: center; } + +.container { + display: grid; + align-items: center; + justify-items: center; + grid-template-columns: 230px 230px; + grid-template-rows: 50px 250px 250px 50px; +} + +.canvas-container { + place-self: center; + grid-column: 1 / span 2; + grid-row: 2 / span 2; +} From c999bfca3932d6ad8dc1b9fa47fccd16789f17a6 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Wed, 22 Nov 2023 20:39:05 +0100 Subject: [PATCH 4/9] improved performance when reloading page --- backend/handlers/roomHandler.js | 5 +++-- backend/server.js | 1 - src/components/Gameboard.jsx | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index a7e964c..bfdeef3 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -10,9 +10,10 @@ module.exports = (io, socket) => { if (room.nextMoveTime <= Date.now()) { room.changeMovingPlayer(); await RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room); + io.to(req.session.roomId).emit('room:data', JSON.stringify(room)); + } else { + io.to(socket.id).emit('room:data', JSON.stringify(room)); } - io.to(req.session.roomId).emit('room:data', JSON.stringify(room)); }; - socket.on('room:data', getData); }; diff --git a/backend/server.js b/backend/server.js index a2abf69..fb85acb 100644 --- a/backend/server.js +++ b/backend/server.js @@ -81,7 +81,6 @@ io.on('connection', socket => { const roomId = socket.request.session.roomId.toString(); socket.join(roomId); socket.emit('player:data', JSON.stringify(socket.request.session)); - io.to(roomId).emit('player joined'); } }); diff --git a/src/components/Gameboard.jsx b/src/components/Gameboard.jsx index 8847ba9..e0764d9 100644 --- a/src/components/Gameboard.jsx +++ b/src/components/Gameboard.jsx @@ -35,6 +35,7 @@ const Gameboard = () => { socket.emit('room:data', context.roomId); socket.on('room:data', data => { data = JSON.parse(data); + if (data.players == null) return; // Filling navbar with empty player nick container while (data.players.length !== 4) { data.players.push({ name: '...' }); From ffaaf0b6f34224cf81493768d7eb730aed8690c2 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Thu, 23 Nov 2023 21:20:44 +0100 Subject: [PATCH 5/9] added LoginPage --- backend/handlers/roomHandler.js | 20 +++++ backend/schemas/room.js | 2 + backend/server.js | 2 +- src/App.js | 10 ++- src/components/LoginPage/LoginPage.css | 76 ++++++++++++++++++ src/components/LoginPage/LoginPage.jsx | 54 +++++++++++++ .../LoginPage/NameInput/NameInput.css | 47 +++++++++++ .../LoginPage/NameInput/NameInput.jsx | 21 +++++ src/components/NameInput.jsx | 25 ------ src/images/login-page/user.png | Bin 0 -> 16826 bytes 10 files changed, 228 insertions(+), 29 deletions(-) create mode 100644 src/components/LoginPage/LoginPage.css create mode 100644 src/components/LoginPage/LoginPage.jsx create mode 100644 src/components/LoginPage/NameInput/NameInput.css create mode 100644 src/components/LoginPage/NameInput/NameInput.jsx delete mode 100644 src/components/NameInput.jsx create mode 100644 src/images/login-page/user.png diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index bfdeef3..5630cc0 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -15,5 +15,25 @@ module.exports = (io, socket) => { io.to(socket.id).emit('room:data', JSON.stringify(room)); } }; + + const getRooms = async () => { + let rooms = await RoomModel.find({}); + const response = []; + rooms.forEach(room => { + if (!room.isStarted && !room.isFull()) { + response.push({ + _id: room._id, + name: room.name, + players: room.players, + isStarted: room.isStarted, + }); + } + }); + io.to(socket.id).emit('room:rooms', JSON.stringify(response)); + }; + + + socket.on('room:data', getData); + socket.on('room:rooms', getRooms); }; diff --git a/backend/schemas/room.js b/backend/schemas/room.js index e171950..90379b6 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -6,6 +6,7 @@ const PawnSchema = require('./pawn'); const PlayerSchema = require('./player'); const RoomSchema = new Schema({ + name: String, createDate: { type: Date, default: Date.now }, started: { type: Boolean, default: false }, full: { type: Boolean, default: false }, @@ -66,6 +67,7 @@ RoomSchema.methods.startGame = function () { this.nextMoveTime = Date.now() + 15000; this.players.forEach(player => (player.ready = true)); this.players[0].nowMoving = true; + this.timeoutID = setTimeout(makeRandomMove, 15000, this); }; RoomSchema.methods.isFull = function () { diff --git a/backend/server.js b/backend/server.js index fb85acb..21341f1 100644 --- a/backend/server.js +++ b/backend/server.js @@ -91,4 +91,4 @@ if (process.env.NODE_ENV === 'production') { }); } -module.exports = { server }; \ No newline at end of file +module.exports = { server }; diff --git a/src/App.js b/src/App.js index fa208b4..770998b 100644 --- a/src/App.js +++ b/src/App.js @@ -1,9 +1,9 @@ import React, { useEffect, useState, createContext } from 'react'; import { io } from 'socket.io-client'; import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'; - +import ReactLoading from 'react-loading'; import Gameboard from './components/Gameboard'; -import NameInput from './components/NameInput'; +import LoginPage from './components/LoginPage/LoginPage'; export const PlayerDataContext = createContext(); export const SocketContext = createContext(); @@ -32,7 +32,11 @@ function App() { LOADING... - + {playerSocket ? ( + + ) : ( + + )} {playerData ? ( diff --git a/src/components/LoginPage/LoginPage.css b/src/components/LoginPage/LoginPage.css new file mode 100644 index 0000000..62099aa --- /dev/null +++ b/src/components/LoginPage/LoginPage.css @@ -0,0 +1,76 @@ +.login-page-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + height: 50vh; + width: 400px; + position: relative; + padding: 20px; + border-radius: 5%; + border: 5px solid white; + background-color: rgba(0, 0, 0, 0.5); +} +h1 { + margin-right: 10px; + align-self: flex-start; + top: 0; + position: absolute; + color: white; +} +.rooms { + width: 98%; + height: 80%; + overflow-y: scroll; + overflow-x: hidden; +} +.room { + cursor: pointer; + justify-content: space-between; + display: flex; + flex-direction: row; + align-items: center; + color: white; + width: 90%; + margin: 10px; + padding: 10px; + border: 1px solid black; +} +.room-selected { + border: 1px solid white; +} +.room-selected, +.room:hover { + background-color: rgba(0, 0, 0, 0.5); +} +.number-of-players { + display: flex; + flex-direction: row; + align-items: center; +} +.number-of-players > img { + margin-right: 5px; + width: 20px; + height: 20px; +} + +/* Firefox */ +* { + scrollbar-width: auto; + scrollbar-color: #ffffff rgba(0, 0, 0, 0.1); +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + width: 8px; +} + +*::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0); +} + +*::-webkit-scrollbar-thumb { + background-color: #ffffff; + border-radius: 10px; + border: 3px none #ffffff; +} diff --git a/src/components/LoginPage/LoginPage.jsx b/src/components/LoginPage/LoginPage.jsx new file mode 100644 index 0000000..835787d --- /dev/null +++ b/src/components/LoginPage/LoginPage.jsx @@ -0,0 +1,54 @@ +import React, { useContext, useEffect, useState } from 'react'; +import NameInput from './NameInput/NameInput'; +import { SocketContext } from '../../App'; +import './LoginPage.css'; +import userImage from '../../images/login-page/user.png'; +const LoginPage = () => { + const socket = useContext(SocketContext); + const [rooms, setRooms] = useState([]); + const [selectedRoom, setSelectedRoom] = useState(null); + + useEffect(async () => { + socket.emit('room:rooms'); + socket.on('room:rooms', data => { + data = JSON.parse(data); + console.log(data); + setRooms(data); + }); + }, []); + + return ( +
+

Select room:

+
+ {rooms.map(room => { + return ( +
{ + if (selectedRoom && selectedRoom == room._id) { + setSelectedRoom(null); + } else { + setSelectedRoom(room._id); + } + }} + key={room.id} + > +
+

{room.name}

+ {room.players.map(player => player.name + ' ')} +
+ +
+ + {room.players.length}/4 +
+
+ ); + })} +
+ +
+ ); +}; +export default LoginPage; diff --git a/src/components/LoginPage/NameInput/NameInput.css b/src/components/LoginPage/NameInput/NameInput.css new file mode 100644 index 0000000..f7509fe --- /dev/null +++ b/src/components/LoginPage/NameInput/NameInput.css @@ -0,0 +1,47 @@ +.name-input-container { + display: flex; + position: absolute; + bottom: 0; + flex-direction: row; + width: 80%; + margin: 20px; +} +input, +button { + padding: 0; + border: none; + outline: none; + box-sizing: border-box; +} + +input { + width: 100%; + padding: 12px; + font-size: 16px; + border-radius: 8px; + color: white; + border: 1px solid #ccc; + background-color: rgba(0, 0, 0, 0.5); + transition: border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; +} + +input:focus { + color: black; + border-color: #4a90e2; + background-color: #fff; +} + +button { + padding: 12px 20px; + font-size: 16px; + border-radius: 8px; + border: none; + color: #fff; + background-color: rgba(0, 0, 0, 0.5); + cursor: pointer; + transition: background-color 0.3s ease-in-out; +} + +button:hover { + background-color: rgba(0, 0, 0, 1); +} diff --git a/src/components/LoginPage/NameInput/NameInput.jsx b/src/components/LoginPage/NameInput/NameInput.jsx new file mode 100644 index 0000000..491c56b --- /dev/null +++ b/src/components/LoginPage/NameInput/NameInput.jsx @@ -0,0 +1,21 @@ +import React, { useState, useContext } from 'react'; +import { SocketContext } from '../../../App'; +import './NameInput.css'; +const NameInput = () => { + const socket = useContext(SocketContext); + const [inputValue, setInputValue] = useState(''); + const handleInputChange = e => { + setInputValue(e.target.value); + }; + const handleButtonClick = () => { + socket.emit('player:login', { name: inputValue }); + }; + return ( +
+ + +
+ ); +}; + +export default NameInput; diff --git a/src/components/NameInput.jsx b/src/components/NameInput.jsx deleted file mode 100644 index 9f4d1eb..0000000 --- a/src/components/NameInput.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import React, { useState, useContext } from "react"; -import { SocketContext } from "../App"; - -const NameInput = () => { - const socket = useContext(SocketContext); - const [inputValue, setInputValue] = useState(""); - const handleInputChange = (e) => { - setInputValue(e.target.value); - }; - const handleButtonClick = () => { - socket.emit("player:login", { name: inputValue }); - }; - return ( -
- - -
- ); -}; - -export default NameInput; diff --git a/src/images/login-page/user.png b/src/images/login-page/user.png new file mode 100644 index 0000000000000000000000000000000000000000..6d15e9e62526ea987387257509b31beb06e18793 GIT binary patch literal 16826 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

IA?)MjP!%=gz=kK*5%-P zGP#1@`MIw2dKAE5{sQ*`Gu3Z^?saPH8Fz3u#F+xH^>W%~&nrF9(1iL9XzmhsJDC9P zp{aQx$p?`!_jzcoe|$vO@42Z#5JLre*3zyT-vmqG15848sc~L0DpmdeC=uH+8T)}uOL7~j&bD)?_NzY>ynF-H zCm*my$vl|aY+dxpYU>{L)J*tGJ#Di?mA+_DJ7JE;R0Q3ooaS|%7?r0&_N#HC8Ap>@ z$%r#{BLKs7&PROx-b3D=_yADuPOjS?4J1IlfGb%Unaf$MHig3Hpi=9$M-b`t{Bvji zOOLUgkU_BH+s&>obnYFtp_bli6!{!AUR7<9pX_CROyI@!HGo>&`uOd&+80@Y6V zpFXW)mAd{#tW??Vv0igEj=-JD>#SKs3~HE}TWC0LlU(vGvbf3|;*hf>Uu?V5seFy2 zFm4$msHsbwSaE!i*+-Z0!9+o;hnkH&ECVFnzKo#yjz^S&RF1|HMt(xx8kZAEkEBUL z`nTzkpzoX6mdKK&T~k2C2)Q3|w@vcX*Vi`F-)V$`q`n6;$1Sow<>pMeSGkq+7wTHc znIeodOh~D-He$!PTvm#;af5J$;Zh5H6fh+TiEC~DM^?kmxA~a(3nk(sxp7qv;*@ep z-JURPIiXy&pzG97z`nUG($I=V)^RWBTcMb`(+^Wrqo6TR=oKne`j?ea*Ux9Ybt0>1 zNQ#(**2~R(3nrP+q|}4b9cUhbd#0muARa7@M%H+x;MPRi4D`^NyUCFV{rgVoXEHMT z2CuzZOK~^+U41Q8{DD@=&HWqLu#f1N)|OC3T-O}}uNI6R%h>>M8dWupYUKW~Yewgp z;;gb73`K=FO5(b~p!x|m>+Oqpw#3yxq5(+*Oj)dWtfV_{L=w23x_-@VO##FqMB*dU zhHAw^v|d_nV{7Y8b@A0b02l{ukXi_Z3Bus06wurk<`%d|O)au#g!bIDp{nnAR)ZSk zx(ojUdVg0+wwt9cy2RND{%+}Mzovj2Udx77e5ogFfzCp`FuZ)X3Y#&Oo#u^MKyE~{+@@Gbum$pmD) zorE|Dk!D_?L5HOsw94c*EBlS{^W*g1gih#uIv}0>d4|=>_MLcL{|m&!(hMUlZSF_- zY*PRTiM~dIZu~hO$iU*tft`s!R`p5R$y#3(&9x z?wkS?L9$FKZVFSg!;z?!l<6d{gUx}WK6WhpNGH(v82j!i2~G)m1DsE*(%W1(lqPA? z@V3bb%^=V&Ge}5hms%1)2vK{?pCbzGpO_ObIRxg#f<~^1OzAsL8{7leyi90qm75YR zJ`VETEb(`FW9WiM;KtGvZfd(Xg3Zi+-^!L2M4Yk3O>4;#X8?L42q@428D&9lQlnQ> z*C~()%c0KLq1O+_9t22F^3o-WsNn}v%Fom;*%V%yk}60GxeYQKVY-QfDy zldElDnHw@~g6vj+r@0&ZH@HuIqvT0Y-9GfblXP!t?T?*@t0HvOzvjo+J%WBfp^H Date: Sat, 25 Nov 2023 19:30:07 +0100 Subject: [PATCH 6/9] refactored backend --- backend/config/database.js | 14 ++++ .../serverController.js => config/session.js} | 0 backend/config/socket.js | 26 ++++++ backend/controllers/roomController.js | 35 ++++++++ backend/handlers/gameHandler.js | 82 ++++--------------- backend/handlers/handlersFunctions.js | 35 ++++++++ backend/handlers/playerHandler.js | 25 +++--- backend/handlers/roomHandler.js | 24 +++--- backend/{schemas => models}/pawn.js | 0 backend/{schemas => models}/player.js | 9 ++ backend/{schemas => models}/room.js | 17 ++-- backend/server.js | 69 ++-------------- backend/socket/emits.js | 19 +++++ backend/socket/socketManager.js | 39 +++++++++ 14 files changed, 231 insertions(+), 163 deletions(-) create mode 100644 backend/config/database.js rename backend/{controllers/serverController.js => config/session.js} (100%) create mode 100644 backend/config/socket.js create mode 100644 backend/controllers/roomController.js create mode 100644 backend/handlers/handlersFunctions.js rename backend/{schemas => models}/pawn.js (100%) rename backend/{schemas => models}/player.js (58%) rename backend/{schemas => models}/room.js (87%) create mode 100644 backend/socket/emits.js create mode 100644 backend/socket/socketManager.js diff --git a/backend/config/database.js b/backend/config/database.js new file mode 100644 index 0000000..5901cec --- /dev/null +++ b/backend/config/database.js @@ -0,0 +1,14 @@ +const CONNECTION_URI = require('../credentials.js'); + +module.exports = function (mongoose) { + mongoose.set('useFindAndModify', false); + mongoose + .connect(CONNECTION_URI, { + useNewUrlParser: true, + useUnifiedTopology: true, + }) + .then(() => { + console.log('MongoDB Connected…'); + }) + .catch(err => console.error(err)); +}; diff --git a/backend/controllers/serverController.js b/backend/config/session.js similarity index 100% rename from backend/controllers/serverController.js rename to backend/config/session.js diff --git a/backend/config/socket.js b/backend/config/socket.js new file mode 100644 index 0000000..feac406 --- /dev/null +++ b/backend/config/socket.js @@ -0,0 +1,26 @@ +const socketManager = require('../socket/socketManager'); +const registerPlayerHandlers = require('../handlers/playerHandler'); +const registerRoomHandlers = require('../handlers/roomHandler'); +const registerGameHandlers = require('../handlers/gameHandler'); +const { sessionMiddleware, wrap } = require('../config/session'); + +module.exports = function (server) { + socketManager.initialize(server); + socketManager.getIO().engine.on('initial_headers', (headers, req) => { + if (req.cookieHolder) { + headers['set-cookie'] = req.cookieHolder; + delete req.cookieHolder; + } + }); + socketManager.getIO().use(wrap(sessionMiddleware)); + socketManager.getIO().on('connection', socket => { + registerPlayerHandlers(socket); + registerRoomHandlers(socket); + registerGameHandlers(socket); + if (socket.request.session.roomId) { + const roomId = socket.request.session.roomId.toString(); + socket.join(roomId); + socket.emit('player:data', JSON.stringify(socket.request.session)); + } + }); +}; diff --git a/backend/controllers/roomController.js b/backend/controllers/roomController.js new file mode 100644 index 0000000..f698a3e --- /dev/null +++ b/backend/controllers/roomController.js @@ -0,0 +1,35 @@ +const Room = require('../models/room'); +const { sendToPlayersData } = require('../socket/emits'); + +const getRoom = async roomId => { + return await Room.findOne({ _id: roomId }).exec(); +}; + +const getRooms = async () => { + return await Room.find().exec(); +}; + +const updateRoom = async room => { + return await Room.findOneAndUpdate({ _id: room._id }, room).exec(); +}; + +const getJoinableRoom = async () => { + return await Room.findOne({ full: false, started: false }).exec(); +}; + +const createNewRoom = () => { + const room = new Room(); + return room; +}; + +const findPlayer = async sessionID => { + const player = await Room.findOne({ 'players.sessionID': sessionID }).exec(); + console.log(player); + return await Room.findOne({ 'players.sessionID': sessionID }).exec(); +}; + +Room.watch().on('change', async data => { + sendToPlayersData(await getRoom(data.documentKey._id)); +}); + +module.exports = { getRoom, getRooms, updateRoom, getJoinableRoom, createNewRoom, findPlayer }; diff --git a/backend/handlers/gameHandler.js b/backend/handlers/gameHandler.js index b4f244c..a13ff04 100644 --- a/backend/handlers/gameHandler.js +++ b/backend/handlers/gameHandler.js @@ -1,88 +1,34 @@ -const Room = require('../schemas/room'); +const { getRoom, updateRoom } = require('../controllers/roomController'); +const { sendToPlayersRolledNumber } = require('../socket/emits'); const { getPawnPositionAfterMove } = require('../utils/functions'); +const { rollDice, isMoveValid } = require('./handlersFunctions'); -module.exports = (io, socket) => { +module.exports = socket => { const req = socket.request; const handleMovePawn = async pawnId => { - const room = await getRoom(); + const room = await getRoom(req.session.roomId); const pawn = room.getPawn(pawnId); - if (isMoveValid(pawn, room)) { + if (isMoveValid(req.session, pawn, room)) { const newPositionOfMovedPawn = getPawnPositionAfterMove(room.rolledNumber, pawn); room.changePositionOfPawn(pawn, newPositionOfMovedPawn); room.beatPawns(newPositionOfMovedPawn, req.session.color); - handleChangeOfPlayer(room); + room.changeMovingPlayer(); + await updateRoom(room); } }; const handleRollDice = async () => { const rolledNumber = rollDice(); - const room = await updateRoom({ rolledNumber: rolledNumber }); - if (!canPlayerMove(room, rolledNumber)) { - handleChangeOfPlayer(room); + sendToPlayersRolledNumber(req.session.roomId, rolledNumber); + const room = await updateRoom({ _id: req.session.roomId, rolledNumber: rolledNumber }); + const player = room.getPlayer(req.session.playerId); + if (!player.canMove(room, rolledNumber)) { + room.changeMovingPlayer(); + await updateRoom(room); } }; - const rollDice = () => { - const rolledNumber = Math.ceil(Math.random() * 6); - sendToPlayersRolledNumber(rolledNumber); - return rolledNumber; - }; - - const canPlayerMove = (room, rolledNumber) => { - const playerPawns = room.getPlayerPawns(req.session.color); - for (const pawn of playerPawns) { - if (pawn.canMove(rolledNumber)) return true; - } - return false; - }; - - const isMoveValid = (pawn, room) => { - if (req.session.color !== pawn.color) { - return false; - } - if (req.session.playerId !== room.getCurrentlyMovingPlayer()._id.toString()) { - return false; - } - return true; - }; - - const handleChangeOfPlayer = async room => { - room.changeMovingPlayer(); - room.timeoutID = setTimeout(makeRandomMove, 15000, room); - await updateRoom(room); - }; - - const makeRandomMove = async room => { - if (room.rolledNumber === null) room.rolledNumber = rollDice(); - const pawnsThatCanMove = room.getPawnsThatCanMove() - if (pawnsThatCanMove.length > 0) { - const randomPawn = pawnsThatCanMove[Math.floor(Math.random() * pawnsThatCanMove.length)]; - room.movePawn(randomPawn); - } - await handleChangeOfPlayer(room); - }; - - Room.watch().on('change', async () => { - sendToPlayersData(await getRoom()); - }); - - const getRoom = async () => { - return await Room.findOne({ _id: req.session.roomId }).exec(); - }; - - const updateRoom = async room => { - return await Room.findOneAndUpdate({ _id: req.session.roomId }, room).exec(); - }; - - const sendToPlayersRolledNumber = rolledNumber => { - io.to(req.session.roomId).emit('game:roll', rolledNumber); - }; - - const sendToPlayersData = room => { - io.to(req.session.roomId).emit('room:data', JSON.stringify(room)); - }; - socket.on('game:roll', handleRollDice); socket.on('game:move', handleMovePawn); }; diff --git a/backend/handlers/handlersFunctions.js b/backend/handlers/handlersFunctions.js new file mode 100644 index 0000000..a457d54 --- /dev/null +++ b/backend/handlers/handlersFunctions.js @@ -0,0 +1,35 @@ +const { sendToPlayersRolledNumber } = require('../socket/emits'); + +const rollDice = () => { + const rolledNumber = Math.ceil(Math.random() * 6); + return rolledNumber; +}; + +const makeRandomMove = async roomId => { + const { updateRoom, getRoom } = require('../controllers/roomController'); + const room = await getRoom(roomId); + if (room.rolledNumber === null) { + room.rolledNumber = rollDice(); + sendToPlayersRolledNumber(room._id.toString(), room.rolledNumber); + } + + const pawnsThatCanMove = room.getPawnsThatCanMove(); + if (pawnsThatCanMove.length > 0) { + const randomPawn = pawnsThatCanMove[Math.floor(Math.random() * pawnsThatCanMove.length)]; + room.movePawn(randomPawn); + } + room.changeMovingPlayer(); + await updateRoom(room); +}; + +const isMoveValid = (session, pawn, room) => { + if (session.color !== pawn.color) { + return false; + } + if (session.playerId !== room.getCurrentlyMovingPlayer()._id.toString()) { + return false; + } + return true; +}; + +module.exports = { rollDice, makeRandomMove, isMoveValid }; diff --git a/backend/handlers/playerHandler.js b/backend/handlers/playerHandler.js index 2f178ff..2918d92 100644 --- a/backend/handlers/playerHandler.js +++ b/backend/handlers/playerHandler.js @@ -1,32 +1,31 @@ -const RoomModel = require('../schemas/room'); +const { getRoom, updateRoom, getJoinableRoom, createNewRoom, findPlayer } = require('../controllers/roomController'); const { colors } = require('../utils/constants'); -module.exports = (io, socket) => { +module.exports = socket => { const req = socket.request; const handleLogin = async data => { - const room = await RoomModel.findOne({ full: false, started: false }); + if (await findPlayer(req.sessionID)) return; + const room = await getJoinableRoom(); if (room) { addPlayerToExistingRoom(room, data); } else { - createNewRoom(data); + addNewRoom(data); } }; const handleReady = async () => { - const { roomId, playerId } = req.session; - const room = await RoomModel.findOne({ _id: roomId }); - room.getPlayer(playerId).changeReadyStatus(); + const room = await getRoom(req.session.roomId); + room.getPlayer(req.session.playerId).changeReadyStatus(); if (room.canStartGame()) { room.startGame(); } - await RoomModel.findOneAndUpdate({ _id: roomId }, room); - io.to(roomId).emit('room:data', JSON.stringify(room)); + await updateRoom(room); }; - const createNewRoom = async data => { - const room = new RoomModel(); - room.addPlayer(data.name); + const addNewRoom = async data => { + const room = createNewRoom(); + room.addPlayer(data.name, req.sessionID); await room.save(); reloadSession(room); }; @@ -36,7 +35,7 @@ module.exports = (io, socket) => { if (room.isFull()) { room.startGame(); } - await RoomModel.findOneAndUpdate({ _id: room._id }, room); + await updateRoom(room); reloadSession(room); }; diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index 5630cc0..fbde0d6 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -1,39 +1,37 @@ -const RoomModel = require('../schemas/room'); +const { getRooms, getRoom, updateRoom } = require('../controllers/roomController'); +const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits'); -module.exports = (io, socket) => { +module.exports = socket => { const req = socket.request; const getData = async () => { - let room = await RoomModel.findOne({ _id: req.session.roomId }); + const room = await getRoom(req.session.roomId); // Handle the situation when the server crashes and any player reconnects after the time has expired // Typically, the responsibility for changing players is managed by gameHandler.js. if (room.nextMoveTime <= Date.now()) { room.changeMovingPlayer(); - await RoomModel.findOneAndUpdate({ _id: req.session.roomId }, room); - io.to(req.session.roomId).emit('room:data', JSON.stringify(room)); - } else { - io.to(socket.id).emit('room:data', JSON.stringify(room)); + await updateRoom(room); } + sendToOnePlayerData(socket.id, room); }; - const getRooms = async () => { - let rooms = await RoomModel.find({}); + const getAllRooms = async () => { + let rooms = await getRooms(); const response = []; rooms.forEach(room => { if (!room.isStarted && !room.isFull()) { response.push({ _id: room._id, + private: room.private, name: room.name, players: room.players, isStarted: room.isStarted, }); } }); - io.to(socket.id).emit('room:rooms', JSON.stringify(response)); + sendToOnePlayerRooms(socket.id, response); }; - - socket.on('room:data', getData); - socket.on('room:rooms', getRooms); + socket.on('room:rooms', getAllRooms); }; diff --git a/backend/schemas/pawn.js b/backend/models/pawn.js similarity index 100% rename from backend/schemas/pawn.js rename to backend/models/pawn.js diff --git a/backend/schemas/player.js b/backend/models/player.js similarity index 58% rename from backend/schemas/player.js rename to backend/models/player.js index fe507a5..bad4ee4 100644 --- a/backend/schemas/player.js +++ b/backend/models/player.js @@ -3,6 +3,7 @@ const mongoose = require('mongoose'); const Schema = mongoose.Schema; const PlayerSchema = new Schema({ + sessionID: String, name: String, color: String, ready: { type: Boolean, default: false }, @@ -13,4 +14,12 @@ PlayerSchema.methods.changeReadyStatus = function () { this.ready = !this.ready; }; +PlayerSchema.methods.canMove = function (room, rolledNumber) { + const playerPawns = room.getPlayerPawns(this.color); + for (const pawn of playerPawns) { + if (pawn.canMove(rolledNumber)) return true; + } + return false; +}; + module.exports = PlayerSchema; diff --git a/backend/schemas/room.js b/backend/models/room.js similarity index 87% rename from backend/schemas/room.js rename to backend/models/room.js index 90379b6..c1672d4 100644 --- a/backend/schemas/room.js +++ b/backend/models/room.js @@ -1,12 +1,14 @@ const mongoose = require('mongoose'); const { colors } = require('../utils/constants'); const { getPawnPositionAfterMove, getStartPositions } = require('../utils/functions'); -const Schema = mongoose.Schema; +const { makeRandomMove } = require('../handlers/handlersFunctions'); const PawnSchema = require('./pawn'); const PlayerSchema = require('./player'); -const RoomSchema = new Schema({ +const RoomSchema = new mongoose.Schema({ name: String, + private: { type: Boolean, default: true }, + password: String, createDate: { type: Date, default: Date.now }, started: { type: Boolean, default: false }, full: { type: Boolean, default: false }, @@ -38,7 +40,7 @@ RoomSchema.methods.changeMovingPlayer = function () { this.nextMoveTime = Date.now() + 15000; this.rolledNumber = null; if (this.timeoutID) clearTimeout(this.timeoutID); - this.timeoutID = null; + this.timeoutID = setTimeout(makeRandomMove, 15000, this._id.toString()); }; RoomSchema.methods.movePawn = function (pawn) { @@ -67,7 +69,7 @@ RoomSchema.methods.startGame = function () { this.nextMoveTime = Date.now() + 15000; this.players.forEach(player => (player.ready = true)); this.players[0].nowMoving = true; - this.timeoutID = setTimeout(makeRandomMove, 15000, this); + this.timeoutID = setTimeout(makeRandomMove, 15000, this._id.toString()); }; RoomSchema.methods.isFull = function () { @@ -81,9 +83,10 @@ RoomSchema.methods.getPlayer = function (playerId) { return this.players.find(player => player._id.toString() === playerId.toString()); }; -RoomSchema.methods.addPlayer = function (name) { +RoomSchema.methods.addPlayer = function (name, id) { if (this.full) return; this.players.push({ + sessionID: id, name: name, ready: false, color: colors[this.players.length], @@ -106,6 +109,6 @@ RoomSchema.methods.getCurrentlyMovingPlayer = function () { return this.players.find(player => player.nowMoving === true); }; -const RoomModel = mongoose.model('Room', RoomSchema); +const Room = mongoose.model('Room', RoomSchema); -module.exports = RoomModel; +module.exports = Room; diff --git a/backend/server.js b/backend/server.js index 21341f1..f018038 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,13 +1,11 @@ const express = require('express'); const cors = require('cors'); const cookieParser = require('cookie-parser'); -const { sessionMiddleware, wrap } = require('./controllers/serverController'); -const registerPlayerHandlers = require('./handlers/playerHandler'); -const registerRoomHandlers = require('./handlers/roomHandler'); -const registerGameHandlers = require('./handlers/gameHandler'); -const PORT = 8080; const mongoose = require('mongoose'); -const CONNECTION_URI = require('./credentials.js'); +const { sessionMiddleware } = require('./config/session'); + +const PORT = 8080; + const app = express(); app.use(cookieParser()); @@ -26,63 +24,10 @@ app.use( ); app.use(sessionMiddleware); -mongoose.set('useFindAndModify', false); -mongoose - .connect(CONNECTION_URI, { - useNewUrlParser: true, - useUnifiedTopology: true, - }) - .then(() => { - console.log('MongoDB Connected…'); - }) - .catch(err => console.error(err)); +const server = app.listen(PORT); -const server = app.listen(PORT, () => { - console.log('Server runs on port ' + PORT); -}); - -const io = require('socket.io')(server, { - cors: { - origin: 'http://localhost:3000', - credentials: true, - }, - allowRequest: (req, callback) => { - const fakeRes = { - getHeader() { - return []; - }, - setHeader(key, values) { - req.cookieHolder = values[0]; - }, - writeHead() {}, - }; - sessionMiddleware(req, fakeRes, () => { - if (req.session) { - fakeRes.writeHead(); - req.session.save(); - } - callback(null, true); - }); - }, -}); -io.engine.on('initial_headers', (headers, req) => { - if (req.cookieHolder) { - headers['set-cookie'] = req.cookieHolder; - delete req.cookieHolder; - } -}); -io.use(wrap(sessionMiddleware)); - -io.on('connection', socket => { - registerPlayerHandlers(io, socket); - registerRoomHandlers(io, socket); - registerGameHandlers(io, socket); - if (socket.request.session.roomId) { - const roomId = socket.request.session.roomId.toString(); - socket.join(roomId); - socket.emit('player:data', JSON.stringify(socket.request.session)); - } -}); +require('./config/database')(mongoose); +require('./config/socket')(server); if (process.env.NODE_ENV === 'production') { app.use(express.static('/app/build')); diff --git a/backend/socket/emits.js b/backend/socket/emits.js new file mode 100644 index 0000000..e0d6eb7 --- /dev/null +++ b/backend/socket/emits.js @@ -0,0 +1,19 @@ +const socketManager = require('./socketManager'); + +const sendToPlayersRolledNumber = (id, rolledNumber) => { + socketManager.getIO().to(id).emit('game:roll', rolledNumber); +}; + +const sendToPlayersData = room => { + socketManager.getIO().to(room._id.toString()).emit('room:data', JSON.stringify(room)); +}; + +const sendToOnePlayerData = (id, room) => { + socketManager.getIO().to(id).emit('room:data', JSON.stringify(room)); +}; + +const sendToOnePlayerRooms = (id, rooms) => { + socketManager.getIO().to(id).emit('room:rooms', JSON.stringify(rooms)); +}; + +module.exports = { sendToPlayersData, sendToPlayersRolledNumber, sendToOnePlayerData, sendToOnePlayerRooms }; diff --git a/backend/socket/socketManager.js b/backend/socket/socketManager.js new file mode 100644 index 0000000..d6bca63 --- /dev/null +++ b/backend/socket/socketManager.js @@ -0,0 +1,39 @@ +const { sessionMiddleware } = require('../config/session'); + +const socketManager = { + io: null, + initialize(server) { + this.io = require('socket.io')(server, { + cors: { + origin: 'http://localhost:3000', + credentials: true, + }, + allowRequest: (req, callback) => { + const fakeRes = { + getHeader() { + return []; + }, + setHeader(key, values) { + req.cookieHolder = values[0]; + }, + writeHead() {}, + }; + sessionMiddleware(req, fakeRes, () => { + if (req.session) { + fakeRes.writeHead(); + req.session.save(); + } + callback(null, true); + }); + }, + }); + }, + getIO() { + if (!this.io) { + throw new Error('Socket.io not initialized'); + } + return this.io; + }, +}; + +module.exports = socketManager; From f318afe071fd9cea4ec980aca8dd0ec44803dc45 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Tue, 28 Nov 2023 18:51:50 +0100 Subject: [PATCH 7/9] added joining to room --- backend/controllers/roomController.js | 5 +- backend/handlers/playerHandler.js | 21 ++-- backend/handlers/roomHandler.js | 30 +++--- backend/models/room.js | 2 +- .../LoginPage/AddServer/AddServer.css | 35 +++++++ .../LoginPage/AddServer/AddServer.jsx | 58 +++++++++++ src/components/LoginPage/LoginPage.css | 97 +++++++----------- src/components/LoginPage/LoginPage.jsx | 56 ++-------- .../LoginPage/NameInput/NameInput.css | 35 +++++-- .../LoginPage/NameInput/NameInput.jsx | 45 ++++++-- .../LoginPage/ServerList/ServerList.css | 51 +++++++++ .../LoginPage/ServerList/ServerList.jsx | 79 ++++++++++++++ .../navbar-components/AnimatedOverlay.jsx | 2 +- src/images/login-page/lock.png | Bin 0 -> 10430 bytes src/images/login-page/refresh.png | Bin 0 -> 22493 bytes src/images/login-page/user.png | Bin 16826 -> 9069 bytes 16 files changed, 356 insertions(+), 160 deletions(-) create mode 100644 src/components/LoginPage/AddServer/AddServer.css create mode 100644 src/components/LoginPage/AddServer/AddServer.jsx create mode 100644 src/components/LoginPage/ServerList/ServerList.css create mode 100644 src/components/LoginPage/ServerList/ServerList.jsx create mode 100644 src/images/login-page/lock.png create mode 100644 src/images/login-page/refresh.png diff --git a/backend/controllers/roomController.js b/backend/controllers/roomController.js index f698a3e..80a36ac 100644 --- a/backend/controllers/roomController.js +++ b/backend/controllers/roomController.js @@ -17,8 +17,9 @@ const getJoinableRoom = async () => { return await Room.findOne({ full: false, started: false }).exec(); }; -const createNewRoom = () => { - const room = new Room(); +const createNewRoom = data => { + const room = new Room(data); + room.save(); return room; }; diff --git a/backend/handlers/playerHandler.js b/backend/handlers/playerHandler.js index 2918d92..825d568 100644 --- a/backend/handlers/playerHandler.js +++ b/backend/handlers/playerHandler.js @@ -1,17 +1,15 @@ -const { getRoom, updateRoom, getJoinableRoom, createNewRoom, findPlayer } = require('../controllers/roomController'); +const { getRoom, updateRoom } = require('../controllers/roomController'); const { colors } = require('../utils/constants'); module.exports = socket => { const req = socket.request; const handleLogin = async data => { - if (await findPlayer(req.sessionID)) return; - const room = await getJoinableRoom(); - if (room) { - addPlayerToExistingRoom(room, data); - } else { - addNewRoom(data); - } + const room = await getRoom(data.roomId); + if (room.isFull()) return socket.emit('error:changeRoom'); + if (room.started) return socket.emit('error:changeRoom'); + if (room.private && room.password !== data.password) return socket.emit('error:wrongPassword'); + addPlayerToExistingRoom(room, data); }; const handleReady = async () => { @@ -23,13 +21,6 @@ module.exports = socket => { await updateRoom(room); }; - const addNewRoom = async data => { - const room = createNewRoom(); - room.addPlayer(data.name, req.sessionID); - await room.save(); - reloadSession(room); - }; - const addPlayerToExistingRoom = async (room, data) => { room.addPlayer(data.name); if (room.isFull()) { diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index fbde0d6..bee90de 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -1,10 +1,10 @@ -const { getRooms, getRoom, updateRoom } = require('../controllers/roomController'); +const { getRooms, getRoom, updateRoom, createNewRoom } = require('../controllers/roomController'); const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits'); module.exports = socket => { const req = socket.request; - const getData = async () => { + const handleGetData = async () => { const room = await getRoom(req.session.roomId); // Handle the situation when the server crashes and any player reconnects after the time has expired // Typically, the responsibility for changing players is managed by gameHandler.js. @@ -15,23 +15,17 @@ module.exports = socket => { sendToOnePlayerData(socket.id, room); }; - const getAllRooms = async () => { + const handleGetAllRooms = async () => { let rooms = await getRooms(); - const response = []; - rooms.forEach(room => { - if (!room.isStarted && !room.isFull()) { - response.push({ - _id: room._id, - private: room.private, - name: room.name, - players: room.players, - isStarted: room.isStarted, - }); - } - }); - sendToOnePlayerRooms(socket.id, response); + sendToOnePlayerRooms(socket.id, rooms); }; - socket.on('room:data', getData); - socket.on('room:rooms', getAllRooms); + const handleCreateRoom = async data => { + createNewRoom(data); + socket.to(socket.id).emit('room:created'); + }; + + socket.on('room:data', handleGetData); + socket.on('room:rooms', handleGetAllRooms); + socket.on('room:create', handleCreateRoom); }; diff --git a/backend/models/room.js b/backend/models/room.js index c1672d4..2c7ca34 100644 --- a/backend/models/room.js +++ b/backend/models/room.js @@ -7,7 +7,7 @@ const PlayerSchema = require('./player'); const RoomSchema = new mongoose.Schema({ name: String, - private: { type: Boolean, default: true }, + private: { type: Boolean, default: false }, password: String, createDate: { type: Date, default: Date.now }, started: { type: Boolean, default: false }, diff --git a/src/components/LoginPage/AddServer/AddServer.css b/src/components/LoginPage/AddServer/AddServer.css new file mode 100644 index 0000000..4c64921 --- /dev/null +++ b/src/components/LoginPage/AddServer/AddServer.css @@ -0,0 +1,35 @@ +.refresh { + display: flex; + margin-left: auto; + justify-content: center; + align-items: center; + width: 40px; + height: 100%; + border: 1px solid white; +} +.refresh > img { + width: 20px; + height: 20px; + cursor: pointer; +} + +form { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; +} + +.private-container { + margin-left: 10px; + display: flex; + flex-direction: row; + align-items: center; + width: 100%; +} +input:disabled { + background-color: black; + color: #999; + border: 1px solid #ddd; +} diff --git a/src/components/LoginPage/AddServer/AddServer.jsx b/src/components/LoginPage/AddServer/AddServer.jsx new file mode 100644 index 0000000..054bf54 --- /dev/null +++ b/src/components/LoginPage/AddServer/AddServer.jsx @@ -0,0 +1,58 @@ +import React, { useState, useContext, useEffect } from 'react'; +import './AddServer.css'; +import Switch from '@material-ui/core/Switch'; +import { SocketContext } from '../../../App'; +const AddServer = () => { + const socket = useContext(SocketContext); + const [isPrivate, setIsPrivate] = useState(false); + const [serverName, setServerName] = useState(''); + const [password, setPassword] = useState(''); + + useEffect(() => { + socket.on('room:created', () => { + console.log('ewa'); + socket.emit('room:rooms'); + }); + }, []); + + const handleButtonClick = e => { + e.preventDefault(); + socket.emit('room:create', { + name: serverName, + private: isPrivate, + password: password, + }); + }; + + return ( +

+
+

Host A Server

+
+
+
+ setServerName(e.target.value)} + placeholder='Server Name' + /> +
+

Private

+ setIsPrivate(!isPrivate)} /> +
+ setPassword(e.target.value)} + placeholder='password' + disabled={!isPrivate} + /> + +
+
+
+ ); +}; + +export default AddServer; diff --git a/src/components/LoginPage/LoginPage.css b/src/components/LoginPage/LoginPage.css index 62099aa..3376c6f 100644 --- a/src/components/LoginPage/LoginPage.css +++ b/src/components/LoginPage/LoginPage.css @@ -1,76 +1,53 @@ .login-page-container { + display: flex; + flex-direction: row; + + justify-content: center; + align-items: flex-start; + height: 50%; + width: 100%; +} + +.lp-container { + margin: 50px; display: flex; flex-direction: column; align-items: center; justify-content: center; - height: 50vh; - width: 400px; - position: relative; + width: 500px; padding: 20px; - border-radius: 5%; - border: 5px solid white; - background-color: rgba(0, 0, 0, 0.5); -} -h1 { - margin-right: 10px; - align-self: flex-start; - top: 0; - position: absolute; color: white; } -.rooms { - width: 98%; - height: 80%; - overflow-y: scroll; - overflow-x: hidden; -} -.room { - cursor: pointer; - justify-content: space-between; + +.title-container { display: flex; flex-direction: row; + justify-content: center; align-items: center; - color: white; - width: 90%; - margin: 10px; - padding: 10px; - border: 1px solid black; -} -.room-selected { + width: 100%; + height: 40px; border: 1px solid white; + border-radius: 2px; + transform: scaleX(1.02); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + padding-left: 10px; + text-align: center; } -.room-selected, -.room:hover { - background-color: rgba(0, 0, 0, 0.5); + +.title-container > h1 { + width: 100%; + margin: 0; + padding: 0; } -.number-of-players { + +.content-container { display: flex; - flex-direction: row; - align-items: center; -} -.number-of-players > img { - margin-right: 5px; - width: 20px; - height: 20px; -} - -/* Firefox */ -* { - scrollbar-width: auto; - scrollbar-color: #ffffff rgba(0, 0, 0, 0.1); -} - -/* Chrome, Edge, and Safari */ -*::-webkit-scrollbar { - width: 8px; -} - -*::-webkit-scrollbar-track { - background: rgba(0, 0, 0, 0); -} - -*::-webkit-scrollbar-thumb { - background-color: #ffffff; - border-radius: 10px; - border: 3px none #ffffff; + flex-direction: column; + width: 100%; + padding: 10px; + background-color: rgba(0, 0, 0, 0.5); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); + border-left: 1px solid black; + border-right: 1px solid black; + border-bottom: 1px solid black; } diff --git a/src/components/LoginPage/LoginPage.jsx b/src/components/LoginPage/LoginPage.jsx index 835787d..9532e2d 100644 --- a/src/components/LoginPage/LoginPage.jsx +++ b/src/components/LoginPage/LoginPage.jsx @@ -1,54 +1,16 @@ -import React, { useContext, useEffect, useState } from 'react'; -import NameInput from './NameInput/NameInput'; -import { SocketContext } from '../../App'; import './LoginPage.css'; -import userImage from '../../images/login-page/user.png'; +import AddServer from './AddServer/AddServer'; +import ServerList from './ServerList/ServerList'; +import NameInput from './NameInput/NameInput'; const LoginPage = () => { - const socket = useContext(SocketContext); - const [rooms, setRooms] = useState([]); - const [selectedRoom, setSelectedRoom] = useState(null); - - useEffect(async () => { - socket.emit('room:rooms'); - socket.on('room:rooms', data => { - data = JSON.parse(data); - console.log(data); - setRooms(data); - }); - }, []); - return ( -
-

Select room:

-
- {rooms.map(room => { - return ( -
{ - if (selectedRoom && selectedRoom == room._id) { - setSelectedRoom(null); - } else { - setSelectedRoom(room._id); - } - }} - key={room.id} - > -
-

{room.name}

- {room.players.map(player => player.name + ' ')} -
- -
- - {room.players.length}/4 -
-
- ); - })} + <> +
+ +
- -
+ ); }; + export default LoginPage; diff --git a/src/components/LoginPage/NameInput/NameInput.css b/src/components/LoginPage/NameInput/NameInput.css index f7509fe..9f6282c 100644 --- a/src/components/LoginPage/NameInput/NameInput.css +++ b/src/components/LoginPage/NameInput/NameInput.css @@ -1,11 +1,34 @@ .name-input-container { display: flex; - position: absolute; - bottom: 0; - flex-direction: row; - width: 80%; + flex-direction: column; + padding: 10px 20px 60px 20px; + width: 300px; + background: radial-gradient(circle, rgba(0, 138, 255, 1) 5%, rgba(9, 9, 121, 1) 81%); + border: 1px solid white; + border-radius: 8px; margin: 20px; } +.name-input-container > button { + margin-top: 5px; + text-align: center; + width: 100px; + align-self: center; +} +.name-input-container > input { + margin-top: 10px; +} +.name-overlay { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 1; +} input, button { padding: 0; @@ -21,7 +44,7 @@ input { border-radius: 8px; color: white; border: 1px solid #ccc; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.2); transition: border-color 0.3s ease-in-out, background-color 0.3s ease-in-out; } @@ -37,7 +60,7 @@ button { border-radius: 8px; border: none; color: #fff; - background-color: rgba(0, 0, 0, 0.5); + background-color: rgba(0, 0, 0, 0.4); cursor: pointer; transition: background-color 0.3s ease-in-out; } diff --git a/src/components/LoginPage/NameInput/NameInput.jsx b/src/components/LoginPage/NameInput/NameInput.jsx index 491c56b..e1212e4 100644 --- a/src/components/LoginPage/NameInput/NameInput.jsx +++ b/src/components/LoginPage/NameInput/NameInput.jsx @@ -1,19 +1,44 @@ -import React, { useState, useContext } from 'react'; +import React, { useState, useContext, useEffect } from 'react'; import { SocketContext } from '../../../App'; import './NameInput.css'; -const NameInput = () => { +const NameInput = ({ isRoomPrivate, roomId }) => { const socket = useContext(SocketContext); - const [inputValue, setInputValue] = useState(''); - const handleInputChange = e => { - setInputValue(e.target.value); - }; + const [nickname, setNickname] = useState(''); + const [password, setPassword] = useState(''); + const [isPasswordWrong, setIsPasswordWrong] = useState(false); const handleButtonClick = () => { - socket.emit('player:login', { name: inputValue }); + socket.emit('player:login', { name: nickname, password: password, roomId: roomId }); }; + useEffect(() => { + socket.on('error:wrongPassword', () => { + setIsPasswordWrong(true); + }); + const keyDownHandler = event => { + if (event.key === 'Enter') { + event.preventDefault(); + handleButtonClick(); + } + }; + document.addEventListener('keydown', keyDownHandler); + return () => { + document.removeEventListener('keydown', keyDownHandler); + }; + }, []); + return ( -
- - +
+
+ setNickname(e.target.value)} /> + {isRoomPrivate ? ( + setPassword(e.target.value)} + style={{ backgroundColor: isPasswordWrong ? 'red' : null }} + /> + ) : null} + +
); }; diff --git a/src/components/LoginPage/ServerList/ServerList.css b/src/components/LoginPage/ServerList/ServerList.css new file mode 100644 index 0000000..318a008 --- /dev/null +++ b/src/components/LoginPage/ServerList/ServerList.css @@ -0,0 +1,51 @@ +th { + text-align: left; +} +img { + margin-right: 5px; + width: 20px; + height: 20px; +} +th, +td { + padding: 8px; + text-align: left; + height: 50px; +} +tr { + max-height: 50px; +} + +table { + border-collapse: collapse; + width: 100%; +} +.server-container { + display: flex; + height: 500px; + overflow: scroll; +} +.room-name { + max-width: 150px; + overflow: hidden; +} +/* Firefox */ +* { + scrollbar-width: auto; + scrollbar-color: #ffffff rgba(0, 0, 0, 0.1); +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + background: rgba(0, 0, 0, 0); + width: 10px; +} + +*::-webkit-scrollbar-track { + background: rgba(0, 0, 0, 0); +} + +*::-webkit-scrollbar-thumb { + background-color: #ffffff; + border-radius: 10px; +} diff --git a/src/components/LoginPage/ServerList/ServerList.jsx b/src/components/LoginPage/ServerList/ServerList.jsx new file mode 100644 index 0000000..28e55a2 --- /dev/null +++ b/src/components/LoginPage/ServerList/ServerList.jsx @@ -0,0 +1,79 @@ +import React, { useContext, useEffect, useState } from 'react'; +import { SocketContext } from '../../../App'; +import lock from '../../../images/login-page/lock.png'; +import refresh from '../../../images/login-page/refresh.png'; +import ReactLoading from 'react-loading'; + +import './ServerList.css'; +import NameInput from '../NameInput/NameInput'; + +const ServerList = () => { + const socket = useContext(SocketContext); + const [rooms, setRooms] = useState([]); + const [joining, setJoining] = useState(false); + const [clickedRoom, setClickedRoom] = useState(null); + useEffect(async () => { + socket.emit('room:rooms'); + socket.on('room:rooms', data => { + data = JSON.parse(data); + setRooms(data); + }); + }, []); + + const getRooms = () => { + setRooms(null); + socket.emit('room:rooms'); + }; + + const handleJoinClick = room => { + setClickedRoom(room); + setJoining(true); + }; + + return ( +
+
+

Server List

+
+ +
+
+
+ {rooms ? ( + + + + + + + + + + + + {rooms.map((room, index) => ( + + + + + + + + ))} + +
Server#/#Status
{room.private ? : null}{room.name}{`${room.players.length}/4`}{room.isStarted ? 'started' : 'waiting'} + +
+ ) : ( +
+ +
+ )} +
+ {joining ? ( + + ) : null} +
+ ); +}; +export default ServerList; diff --git a/src/components/navbar-components/AnimatedOverlay.jsx b/src/components/navbar-components/AnimatedOverlay.jsx index 82b1507..5fc82fa 100644 --- a/src/components/navbar-components/AnimatedOverlay.jsx +++ b/src/components/navbar-components/AnimatedOverlay.jsx @@ -14,7 +14,7 @@ const AnimatedOverlay = ({ time }) => { in={true} timeout={0} classNames='overlay' - style={{ 'animation-delay': `-${animationDelay}s` }} + style={{ animationDelay: `-${animationDelay}s` }} unmountOnExit >
diff --git a/src/images/login-page/lock.png b/src/images/login-page/lock.png new file mode 100644 index 0000000000000000000000000000000000000000..8e56993856be6937ed7b3f36deab245f5f3fb5a9 GIT binary patch literal 10430 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 literal 0 HcmV?d00001 diff --git a/src/images/login-page/refresh.png b/src/images/login-page/refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..25988e66a8ec795caa9d1f39f416c82083dd6e3c GIT binary patch literal 22493 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

IA?)MjP!%=gz=kK*5%-P zGP#1@`MIw2dKAE5{sQ*`Gu3Z^?saPH8Fz3u#F+xH^>W%~&nrF9(1iL9XzmhsJDC9P zp{aQx$p?`!_jzcoe|$vO@42Z#5JLre*3zyT-vmqG15848sc~L0DpmdeC=uH+8T)}uOL7~j&bD)?_NzY>ynF-H zCm*my$vl|aY+dxpYU>{L)J*tGJ#Di?mA+_DJ7JE;R0Q3ooaS|%7?r0&_N#HC8Ap>@ z$%r#{BLKs7&PROx-b3D=_yADuPOjS?4J1IlfGb%Unaf$MHig3Hpi=9$M-b`t{Bvji zOOLUgkU_BH+s&>obnYFtp_bli6!{!AUR7<9pX_CROyI@!HGo>&`uOd&+80@Y6V zpFXW)mAd{#tW??Vv0igEj=-JD>#SKs3~HE}TWC0LlU(vGvbf3|;*hf>Uu?V5seFy2 zFm4$msHsbwSaE!i*+-Z0!9+o;hnkH&ECVFnzKo#yjz^S&RF1|HMt(xx8kZAEkEBUL z`nTzkpzoX6mdKK&T~k2C2)Q3|w@vcX*Vi`F-)V$`q`n6;$1Sow<>pMeSGkq+7wTHc znIeodOh~D-He$!PTvm#;af5J$;Zh5H6fh+TiEC~DM^?kmxA~a(3nk(sxp7qv;*@ep z-JURPIiXy&pzG97z`nUG($I=V)^RWBTcMb`(+^Wrqo6TR=oKne`j?ea*Ux9Ybt0>1 zNQ#(**2~R(3nrP+q|}4b9cUhbd#0muARa7@M%H+x;MPRi4D`^NyUCFV{rgVoXEHMT z2CuzZOK~^+U41Q8{DD@=&HWqLu#f1N)|OC3T-O}}uNI6R%h>>M8dWupYUKW~Yewgp z;;gb73`K=FO5(b~p!x|m>+Oqpw#3yxq5(+*Oj)dWtfV_{L=w23x_-@VO##FqMB*dU zhHAw^v|d_nV{7Y8b@A0b02l{ukXi_Z3Bus06wurk<`%d|O)au#g!bIDp{nnAR)ZSk zx(ojUdVg0+wwt9cy2RND{%+}Mzovj2Udx77e5ogFfzCp`FuZ)X3Y#&Oo#u^MKyE~{+@@Gbum$pmD) zorE|Dk!D_?L5HOsw94c*EBlS{^W*g1gih#uIv}0>d4|=>_MLcL{|m&!(hMUlZSF_- zY*PRTiM~dIZu~hO$iU*tft`s!R`p5R$y#3(&9x z?wkS?L9$FKZVFSg!;z?!l<6d{gUx}WK6WhpNGH(v82j!i2~G)m1DsE*(%W1(lqPA? z@V3bb%^=V&Ge}5hms%1)2vK{?pCbzGpO_ObIRxg#f<~^1OzAsL8{7leyi90qm75YR zJ`VETEb(`FW9WiM;KtGvZfd(Xg3Zi+-^!L2M4Yk3O>4;#X8?L42q@428D&9lQlnQ> z*C~()%c0KLq1O+_9t22F^3o-WsNn}v%Fom;*%V%yk}60GxeYQKVY-QfDy zldElDnHw@~g6vj+r@0&ZH@HuIqvT0Y-9GfblXP!t?T?*@t0HvOzvjo+J%WBfp^H Date: Fri, 8 Dec 2023 17:25:51 +0100 Subject: [PATCH 8/9] refactored frontend --- backend/controllers/roomController.js | 8 +- backend/handlers/gameHandler.js | 3 +- backend/handlers/roomHandler.js | 2 +- backend/models/pawn.js | 64 ++++- backend/models/room.js | 21 +- src/App.js | 2 +- .../Dice}/Dice.jsx | 24 +- src/components/{ => Gameboard}/Gameboard.jsx | 22 +- src/components/Gameboard/Map/Map.jsx | 111 +++++++++ src/components/Gameboard/Map/canPawnMove.js | 26 ++ .../Gameboard/Map/getPositionAfterMove.js | 20 +- .../positions.js | 0 .../LoginPage/AddServer/AddServer.jsx | 1 - .../LoginPage/NameInput/NameInput.jsx | 11 +- .../LoginPage/ServerList/ServerList.jsx | 6 +- .../AnimatedOverlay}/AnimatedOverlay.jsx | 8 +- .../AnimatedOverlay}/TimerAnimation.js | 0 .../NameContainer}/NameContainer.jsx | 2 +- src/components/{ => Navbar}/Navbar.css | 0 src/components/{ => Navbar}/Navbar.jsx | 8 +- .../ReadyButton}/ReadyButton.jsx | 10 +- src/components/game-board-components/Map.jsx | 230 ------------------ src/constants/pawnImages.js | 13 + src/constants/positions.js | 117 +++++++++ src/hooks/useInput.js | 11 + src/images/map.jpg | Bin 0 -> 40140 bytes 26 files changed, 407 insertions(+), 313 deletions(-) rename src/components/{game-board-components => Gameboard/Dice}/Dice.jsx (62%) rename src/components/{ => Gameboard}/Gameboard.jsx (88%) create mode 100644 src/components/Gameboard/Map/Map.jsx create mode 100644 src/components/Gameboard/Map/canPawnMove.js rename backend/utils/functions.js => src/components/Gameboard/Map/getPositionAfterMove.js (79%) rename src/components/{game-board-components => Gameboard}/positions.js (100%) rename src/components/{navbar-components => Navbar/NameContainer/AnimatedOverlay}/AnimatedOverlay.jsx (67%) rename src/components/{navbar-components => Navbar/NameContainer/AnimatedOverlay}/TimerAnimation.js (100%) rename src/components/{navbar-components => Navbar/NameContainer}/NameContainer.jsx (89%) rename src/components/{ => Navbar}/Navbar.css (100%) rename src/components/{ => Navbar}/Navbar.jsx (82%) rename src/components/{navbar-components => Navbar/ReadyButton}/ReadyButton.jsx (77%) delete mode 100644 src/components/game-board-components/Map.jsx create mode 100644 src/constants/pawnImages.js create mode 100644 src/constants/positions.js create mode 100644 src/hooks/useInput.js create mode 100644 src/images/map.jpg diff --git a/backend/controllers/roomController.js b/backend/controllers/roomController.js index 80a36ac..8a5bf2a 100644 --- a/backend/controllers/roomController.js +++ b/backend/controllers/roomController.js @@ -23,14 +23,8 @@ const createNewRoom = data => { return room; }; -const findPlayer = async sessionID => { - const player = await Room.findOne({ 'players.sessionID': sessionID }).exec(); - console.log(player); - return await Room.findOne({ 'players.sessionID': sessionID }).exec(); -}; - Room.watch().on('change', async data => { sendToPlayersData(await getRoom(data.documentKey._id)); }); -module.exports = { getRoom, getRooms, updateRoom, getJoinableRoom, createNewRoom, findPlayer }; +module.exports = { getRoom, getRooms, updateRoom, getJoinableRoom, createNewRoom }; diff --git a/backend/handlers/gameHandler.js b/backend/handlers/gameHandler.js index a13ff04..9ef9315 100644 --- a/backend/handlers/gameHandler.js +++ b/backend/handlers/gameHandler.js @@ -1,6 +1,5 @@ const { getRoom, updateRoom } = require('../controllers/roomController'); const { sendToPlayersRolledNumber } = require('../socket/emits'); -const { getPawnPositionAfterMove } = require('../utils/functions'); const { rollDice, isMoveValid } = require('./handlersFunctions'); module.exports = socket => { @@ -10,7 +9,7 @@ module.exports = socket => { const room = await getRoom(req.session.roomId); const pawn = room.getPawn(pawnId); if (isMoveValid(req.session, pawn, room)) { - const newPositionOfMovedPawn = getPawnPositionAfterMove(room.rolledNumber, pawn); + const newPositionOfMovedPawn = pawn.getPositionAfterMove(room.rolledNumber); room.changePositionOfPawn(pawn, newPositionOfMovedPawn); room.beatPawns(newPositionOfMovedPawn, req.session.color); room.changeMovingPlayer(); diff --git a/backend/handlers/roomHandler.js b/backend/handlers/roomHandler.js index bee90de..f99324c 100644 --- a/backend/handlers/roomHandler.js +++ b/backend/handlers/roomHandler.js @@ -1,5 +1,5 @@ const { getRooms, getRoom, updateRoom, createNewRoom } = require('../controllers/roomController'); -const { sendToOnePlayerRooms, sendToOnePlayerData, sendToPlayersData } = require('../socket/emits'); +const { sendToOnePlayerRooms, sendToOnePlayerData } = require('../socket/emits'); module.exports = socket => { const req = socket.request; diff --git a/backend/models/pawn.js b/backend/models/pawn.js index 3df2429..2680cad 100644 --- a/backend/models/pawn.js +++ b/backend/models/pawn.js @@ -2,8 +2,6 @@ const mongoose = require('mongoose'); const Schema = mongoose.Schema; -const { getPawnPositionAfterMove } = require('../utils/functions'); - const PawnSchema = new Schema({ color: String, basePos: Number, @@ -15,10 +13,70 @@ PawnSchema.methods.canMove = function (rolledNumber) { return true; } // (if player's pawn is near finish line) if the move does not go beyond the win line - if (this.position !== getPawnPositionAfterMove(rolledNumber, this) && this.position !== this.basePos) { + if (this.position !== this.getPositionAfterMove(rolledNumber) && this.position !== this.basePos) { return true; } return false; }; +PawnSchema.methods.getPositionAfterMove = function (rolledNumber) { + const { position, color } = this; + switch (color) { + case 'red': + if (position + rolledNumber <= 73) { + if (position >= 0 && position <= 3) { + return 16; + } else if (position <= 66 && position + rolledNumber >= 67) { + return position + rolledNumber + 1; + } else { + return position + rolledNumber; + } + } else { + return position; + } + case 'blue': + if (position + rolledNumber <= 79) { + if (position >= 4 && position <= 7) { + return 55; + } else if (position <= 67 && position + rolledNumber > 67) { + return position + rolledNumber - 52; + } else if (position <= 53 && position + rolledNumber >= 54) { + return position + rolledNumber + 20; + } else { + return position + rolledNumber; + } + } else { + return position; + } + case 'green': + if (position + rolledNumber <= 85) { + if (position >= 8 && position <= 11) { + return 42; + } else if (position <= 67 && position + rolledNumber > 67) { + return position + rolledNumber - 52; + } else if (position <= 40 && position + rolledNumber >= 41) { + return position + rolledNumber + 39; + } else { + return position + rolledNumber; + } + } else { + return position; + } + case 'yellow': + if (position + rolledNumber <= 85) { + if (position >= 12 && position <= 15) { + return 29; + } else if (position <= 67 && position + rolledNumber > 67) { + return position + rolledNumber - 52; + } else if (position <= 27 && position + rolledNumber >= 28) { + return position + rolledNumber + 58; + } else { + return position + rolledNumber; + } + } else { + return position; + } + } +}; + module.exports = PawnSchema; diff --git a/backend/models/room.js b/backend/models/room.js index 2c7ca34..8c3f25a 100644 --- a/backend/models/room.js +++ b/backend/models/room.js @@ -1,6 +1,5 @@ const mongoose = require('mongoose'); const { colors } = require('../utils/constants'); -const { getPawnPositionAfterMove, getStartPositions } = require('../utils/functions'); const { makeRandomMove } = require('../handlers/handlersFunctions'); const PawnSchema = require('./pawn'); const PlayerSchema = require('./player'); @@ -16,7 +15,23 @@ const RoomSchema = new mongoose.Schema({ timeoutID: Number, rolledNumber: Number, players: [PlayerSchema], - pawns: { type: [PawnSchema], default: getStartPositions() }, + pawns: { + type: [PawnSchema], + default: () => { + const startPositions = []; + for (let i = 0; i < 16; i++) { + let pawn = {}; + pawn.basePos = i; + pawn.position = i; + if (i < 4) pawn.color = colors[0]; + else if (i < 8) pawn.color = colors[1]; + else if (i < 12) pawn.color = colors[2]; + else if (i < 16) pawn.color = colors[3]; + startPositions.push(pawn); + } + return startPositions; + }, + }, }); RoomSchema.methods.beatPawns = function (position, attackingPawnColor) { @@ -44,7 +59,7 @@ RoomSchema.methods.changeMovingPlayer = function () { }; RoomSchema.methods.movePawn = function (pawn) { - const newPositionOfMovedPawn = getPawnPositionAfterMove(this.rolledNumber, pawn); + const newPositionOfMovedPawn = pawn.getPositionAfterMove(this.rolledNumber); this.changePositionOfPawn(pawn, newPositionOfMovedPawn); this.beatPawns(newPositionOfMovedPawn, pawn.color); }; diff --git a/src/App.js b/src/App.js index 770998b..6853ef8 100644 --- a/src/App.js +++ b/src/App.js @@ -2,7 +2,7 @@ import React, { useEffect, useState, createContext } from 'react'; import { io } from 'socket.io-client'; import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'; import ReactLoading from 'react-loading'; -import Gameboard from './components/Gameboard'; +import Gameboard from './components/Gameboard/Gameboard'; import LoginPage from './components/LoginPage/LoginPage'; export const PlayerDataContext = createContext(); diff --git a/src/components/game-board-components/Dice.jsx b/src/components/Gameboard/Dice/Dice.jsx similarity index 62% rename from src/components/game-board-components/Dice.jsx rename to src/components/Gameboard/Dice/Dice.jsx index b18131e..98a0751 100644 --- a/src/components/game-board-components/Dice.jsx +++ b/src/components/Gameboard/Dice/Dice.jsx @@ -1,24 +1,28 @@ -import React, { useState, useEffect, useContext } from 'react'; -import { SocketContext } from '../../App'; -import one from '../../images/dice/1.png'; -import two from '../../images/dice/2.png'; -import three from '../../images/dice/3.png'; -import four from '../../images/dice/4.png'; -import five from '../../images/dice/5.png'; -import six from '../../images/dice/6.png'; -import roll from '../../images/dice/roll.png'; +import React, { useEffect, useContext } from 'react'; +import { SocketContext } from '../../../App'; +import one from '../../../images/dice/1.png'; +import two from '../../../images/dice/2.png'; +import three from '../../../images/dice/3.png'; +import four from '../../../images/dice/4.png'; +import five from '../../../images/dice/5.png'; +import six from '../../../images/dice/6.png'; +import roll from '../../../images/dice/roll.png'; const Dice = ({ rolledNumberCallback, rolledNumber, nowMoving, color, movingPlayer }) => { const socket = useContext(SocketContext); - const [images] = useState([one, two, three, four, five, six, roll]); + + const images = [one, two, three, four, five, six, roll]; + const handleRoll = () => { socket.emit('game:roll'); }; + useEffect(() => { socket.on('game:roll', number => { rolledNumberCallback(number); }); }, []); + return (

{movingPlayer === color ? ( diff --git a/src/components/Gameboard.jsx b/src/components/Gameboard/Gameboard.jsx similarity index 88% rename from src/components/Gameboard.jsx rename to src/components/Gameboard/Gameboard.jsx index e0764d9..45f7ae8 100644 --- a/src/components/Gameboard.jsx +++ b/src/components/Gameboard/Gameboard.jsx @@ -1,17 +1,16 @@ -import React, { useState, useEffect, useContext, useCallback } from 'react'; +import React, { useState, useEffect, useContext } from 'react'; import ReactLoading from 'react-loading'; -import { PlayerDataContext, SocketContext } from '../App'; -import Map from './game-board-components/Map'; -import Navbar from './Navbar'; +import { PlayerDataContext, SocketContext } from '../../App'; +import Map from './Map/Map'; +import Navbar from '../Navbar/Navbar'; const Gameboard = () => { - // Context data const socket = useContext(SocketContext); const context = useContext(PlayerDataContext); - // Render data + const [pawns, setPawns] = useState([]); const [players, setPlayers] = useState([]); - // Game logic data + const [rolledNumber, setRolledNumber] = useState(null); const [time, setTime] = useState(); const [isReady, setIsReady] = useState(); @@ -19,7 +18,8 @@ const Gameboard = () => { const [started, setStarted] = useState(false); const [movingPlayer, setMovingPlayer] = useState('red'); - const checkWin = useCallback(() => { + + const checkWin = () => { // Player wins when all pawns with same color are inside end base if (pawns.filter(pawn => pawn.color === 'red' && pawn.position === 73).length === 4) { alert('Red Won'); @@ -30,7 +30,8 @@ const Gameboard = () => { } else if (pawns.filter(pawn => pawn.color === 'yellow' && pawn.position === 91).length === 4) { alert('Yellow Won'); } - }, [pawns]); + }; + useEffect(() => { socket.emit('room:data', context.roomId); socket.on('room:data', data => { @@ -59,9 +60,8 @@ const Gameboard = () => { setTime(data.nextMoveTime); setStarted(data.started); }); - }, []); + }, [socket]); - // Callback to handle dice rolling between dice and map component const rolledNumberCallback = number => { setRolledNumber(number); }; diff --git a/src/components/Gameboard/Map/Map.jsx b/src/components/Gameboard/Map/Map.jsx new file mode 100644 index 0000000..1af250e --- /dev/null +++ b/src/components/Gameboard/Map/Map.jsx @@ -0,0 +1,111 @@ +import React, { useEffect, useRef, useState, useContext } from 'react'; +import { PlayerDataContext, SocketContext } from '../../../App'; + +import mapImage from '../../../images/map.jpg'; +import positions from '../positions'; +import pawnImages from '../../../constants/pawnImages'; +import canPawnMove from './canPawnMove'; +import getPositionAfterMove from './getPositionAfterMove'; + +const Map = ({ pawns, nowMoving, rolledNumber }) => { + const player = useContext(PlayerDataContext); + const socket = useContext(SocketContext); + const canvasRef = useRef(null); + + const [hintPawn, setHintPawn] = useState(); + + const paintPawn = (context, x, y, color) => { + const touchableArea = new Path2D(); + touchableArea.arc(x, y, 12, 0, 2 * Math.PI); + const image = new Image(); + image.src = pawnImages[color]; + image.onload = function () { + context.drawImage(image, x - 17, y - 14, 35, 30); + }; + return touchableArea; + }; + + const handleCanvasClick = event => { + if (hintPawn) { + const canvas = canvasRef.current; + const ctx = canvas.getContext('2d'); + const rect = canvas.getBoundingClientRect(), + cursorX = event.clientX - rect.left, + cursorY = event.clientY - rect.top; + for (const pawn of pawns) { + if (ctx.isPointInPath(pawn.touchableArea, cursorX, cursorY)) { + socket.emit('game:move', pawn._id); + } + } + setHintPawn(null); + } + }; + + const handleMouseMove = event => { + if (nowMoving && rolledNumber) { + const canvas = canvasRef.current; + const ctx = canvas.getContext('2d'); + const rect = canvas.getBoundingClientRect(), + x = event.clientX - rect.left, + y = event.clientY - rect.top; + canvas.style.cursor = 'default'; + for (const pawn of pawns) { + if (pawn.touchableArea) { + if ( + ctx.isPointInPath(pawn.touchableArea, x, y) && + player.color === pawn.color && + canPawnMove(pawn, rolledNumber) + ) { + const pawnPosition = getPositionAfterMove(pawn, rolledNumber); + if (pawnPosition) { + canvas.style.cursor = 'pointer'; + setHintPawn({ id: pawn._id, position: pawnPosition, color: 'grey' }); + break; + } + } else { + setHintPawn(null); + } + } else { + setHintPawn(null); + } + } + } else { + setHintPawn(null); + } + }; + const rerenderCanvas = () => { + const canvas = canvasRef.current; + const ctx = canvas.getContext('2d'); + const image = new Image(); + image.src = mapImage; + image.onload = function () { + ctx.drawImage(image, 0, 0); + pawns.forEach((pawn, index) => { + pawns[index].touchableArea = paintPawn( + ctx, + positions[pawn.position].x, + positions[pawn.position].y, + pawn.color + ); + }); + if (hintPawn) { + paintPawn(ctx, positions[hintPawn.position].x, positions[hintPawn.position].y, hintPawn.color); + } + }; + }; + useEffect(() => { + rerenderCanvas(); + }, [hintPawn, pawns, rerenderCanvas]); + + return ( + + ); +}; +export default Map; diff --git a/src/components/Gameboard/Map/canPawnMove.js b/src/components/Gameboard/Map/canPawnMove.js new file mode 100644 index 0000000..1a5de63 --- /dev/null +++ b/src/components/Gameboard/Map/canPawnMove.js @@ -0,0 +1,26 @@ +export default (pawn, rolledNumber) => { + // If is in base + if ((rolledNumber === 1 || rolledNumber === 6) && pawn.position === pawn.basePos) { + return true; + // Other situations: pawn is on map or pawn is in end positions + } else if (pawn.position !== pawn.basePos) { + switch (pawn.color) { + case 'red': + if (pawn.position + rolledNumber <= 73) return true; + break; + case 'blue': + if (pawn.position + rolledNumber <= 79) return true; + break; + case 'green': + if (pawn.position + rolledNumber <= 85) return true; + break; + case 'yellow': + if (pawn.position + rolledNumber <= 91) return true; + break; + default: + return false; + } + } else { + return false; + } +}; diff --git a/backend/utils/functions.js b/src/components/Gameboard/Map/getPositionAfterMove.js similarity index 79% rename from backend/utils/functions.js rename to src/components/Gameboard/Map/getPositionAfterMove.js index 81f5522..6b403ca 100644 --- a/backend/utils/functions.js +++ b/src/components/Gameboard/Map/getPositionAfterMove.js @@ -1,19 +1,4 @@ -const { colors } = require('./constants'); -function getStartPositions() { - const startPositions = []; - for (let i = 0; i < 16; i++) { - let pawn = {}; - pawn.basePos = i; - pawn.position = i; - if (i < 4) pawn.color = colors[0]; - else if (i < 8) pawn.color = colors[1]; - else if (i < 12) pawn.color = colors[2]; - else if (i < 16) pawn.color = colors[3]; - startPositions.push(pawn); - } - return startPositions; -} -function getPawnPositionAfterMove(rolledNumber, pawn) { +export default (pawn, rolledNumber) => { const { position, color } = pawn; switch (color) { case 'red': @@ -71,5 +56,4 @@ function getPawnPositionAfterMove(rolledNumber, pawn) { return position; } } -} -module.exports = { getStartPositions, getPawnPositionAfterMove }; +}; diff --git a/src/components/game-board-components/positions.js b/src/components/Gameboard/positions.js similarity index 100% rename from src/components/game-board-components/positions.js rename to src/components/Gameboard/positions.js diff --git a/src/components/LoginPage/AddServer/AddServer.jsx b/src/components/LoginPage/AddServer/AddServer.jsx index 054bf54..4333c50 100644 --- a/src/components/LoginPage/AddServer/AddServer.jsx +++ b/src/components/LoginPage/AddServer/AddServer.jsx @@ -10,7 +10,6 @@ const AddServer = () => { useEffect(() => { socket.on('room:created', () => { - console.log('ewa'); socket.emit('room:rooms'); }); }, []); diff --git a/src/components/LoginPage/NameInput/NameInput.jsx b/src/components/LoginPage/NameInput/NameInput.jsx index e1212e4..307518a 100644 --- a/src/components/LoginPage/NameInput/NameInput.jsx +++ b/src/components/LoginPage/NameInput/NameInput.jsx @@ -1,13 +1,14 @@ import React, { useState, useContext, useEffect } from 'react'; import { SocketContext } from '../../../App'; +import useInput from '../../../hooks/useInput'; import './NameInput.css'; const NameInput = ({ isRoomPrivate, roomId }) => { const socket = useContext(SocketContext); - const [nickname, setNickname] = useState(''); - const [password, setPassword] = useState(''); + const nickname = useInput(''); + const password = useInput(''); const [isPasswordWrong, setIsPasswordWrong] = useState(false); const handleButtonClick = () => { - socket.emit('player:login', { name: nickname, password: password, roomId: roomId }); + socket.emit('player:login', { name: nickname.value, password: password.value, roomId: roomId }); }; useEffect(() => { socket.on('error:wrongPassword', () => { @@ -28,12 +29,12 @@ const NameInput = ({ isRoomPrivate, roomId }) => { return (
- setNickname(e.target.value)} /> + {isRoomPrivate ? ( setPassword(e.target.value)} + onChange={password.onChange} style={{ backgroundColor: isPasswordWrong ? 'red' : null }} /> ) : null} diff --git a/src/components/LoginPage/ServerList/ServerList.jsx b/src/components/LoginPage/ServerList/ServerList.jsx index 28e55a2..c23601e 100644 --- a/src/components/LoginPage/ServerList/ServerList.jsx +++ b/src/components/LoginPage/ServerList/ServerList.jsx @@ -12,7 +12,7 @@ const ServerList = () => { const [rooms, setRooms] = useState([]); const [joining, setJoining] = useState(false); const [clickedRoom, setClickedRoom] = useState(null); - useEffect(async () => { + useEffect(() => { socket.emit('room:rooms'); socket.on('room:rooms', data => { data = JSON.parse(data); @@ -70,9 +70,7 @@ const ServerList = () => {
)}
- {joining ? ( - - ) : null} + {joining ? : null}
); }; diff --git a/src/components/navbar-components/AnimatedOverlay.jsx b/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.jsx similarity index 67% rename from src/components/navbar-components/AnimatedOverlay.jsx rename to src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.jsx index 5fc82fa..ba0558a 100644 --- a/src/components/navbar-components/AnimatedOverlay.jsx +++ b/src/components/Navbar/NameContainer/AnimatedOverlay/AnimatedOverlay.jsx @@ -1,13 +1,9 @@ -import React, { useState, useEffect } from 'react'; +import React, { useMemo } from 'react'; import { CSSTransition } from 'react-transition-group'; import './TimerAnimation.js'; const AnimatedOverlay = ({ time }) => { - const [animationDelay, setAnimationDelay] = useState(); - - useEffect(() => { - setAnimationDelay(15 - Math.ceil((time - Date.now()) / 1000)); - }, [time]); + const animationDelay = useMemo(() => 15 - Math.ceil((time - Date.now()) / 1000), [time]); return ( { return ( diff --git a/src/components/Navbar.css b/src/components/Navbar/Navbar.css similarity index 100% rename from src/components/Navbar.css rename to src/components/Navbar/Navbar.css diff --git a/src/components/Navbar.jsx b/src/components/Navbar/Navbar.jsx similarity index 82% rename from src/components/Navbar.jsx rename to src/components/Navbar/Navbar.jsx index 0c67c8a..1b05d12 100644 --- a/src/components/Navbar.jsx +++ b/src/components/Navbar/Navbar.jsx @@ -1,10 +1,10 @@ import React from 'react'; -import Dice from './game-board-components/Dice'; -import NameContainer from './navbar-components/NameContainer'; -import ReadyButton from './navbar-components/ReadyButton'; +import Dice from '../Gameboard/Dice/Dice'; +import NameContainer from './NameContainer/NameContainer'; +import ReadyButton from './ReadyButton/ReadyButton'; import './Navbar.css'; import { useContext } from 'react'; -import { PlayerDataContext } from '../App'; +import { PlayerDataContext } from '../../App'; const Navbar = ({ players, started, time, isReady, rolledNumber, nowMoving, rolledNumberCallback, movingPlayer }) => { const context = useContext(PlayerDataContext); const colors = ['red', 'blue', 'green', 'yellow']; diff --git a/src/components/navbar-components/ReadyButton.jsx b/src/components/Navbar/ReadyButton/ReadyButton.jsx similarity index 77% rename from src/components/navbar-components/ReadyButton.jsx rename to src/components/Navbar/ReadyButton/ReadyButton.jsx index 6addc94..6249a9e 100644 --- a/src/components/navbar-components/ReadyButton.jsx +++ b/src/components/Navbar/ReadyButton/ReadyButton.jsx @@ -1,19 +1,17 @@ import React, { useState, useContext, useEffect } from 'react'; -import { SocketContext } from '../../App'; +import { SocketContext } from '../../../App'; import Switch from '@material-ui/core/Switch'; import '../Navbar.css'; -import './TimerAnimation'; +import '../NameContainer/AnimatedOverlay/TimerAnimation'; const ReadyButton = ({ isReady }) => { const socket = useContext(SocketContext); - const [checked, setChecked] = useState(); + const [checked, setChecked] = useState(isReady); + const handleCheckboxChange = () => { socket.emit('player:ready'); setChecked(!checked); }; - useEffect(() => { - setChecked(isReady); - }); return (
diff --git a/src/components/game-board-components/Map.jsx b/src/components/game-board-components/Map.jsx deleted file mode 100644 index 0d93155..0000000 --- a/src/components/game-board-components/Map.jsx +++ /dev/null @@ -1,230 +0,0 @@ -import React, { useEffect, useRef, useState, useContext, useCallback } from 'react'; -import { PlayerDataContext, SocketContext } from '../../App'; -import positions from './positions'; -import bluePawn from '../../images/pawns/blue-pawn.png'; -import greenPawn from '../../images/pawns/green-pawn.png'; -import yellowPawn from '../../images/pawns/yellow-pawn.png'; -import redPawn from '../../images/pawns/red-pawn.png'; -import greyPawn from '../../images/pawns/grey-pawn.png'; -const Map = ({ pawns, nowMoving, rolledNumber }) => { - const context = useContext(PlayerDataContext); - const socket = useContext(SocketContext); - const [hintPawn, setHintPawn] = useState(); - const paintPawn = (context, x, y, color) => { - const circle = new Path2D(); - circle.arc(x, y, 12, 0, 2 * Math.PI); - const image = new Image(); - switch (color) { - case 'green': - image.src = greenPawn; - break; - case 'blue': - image.src = bluePawn; - break; - case 'red': - image.src = redPawn; - break; - case 'yellow': - image.src = yellowPawn; - break; - case 'grey': - image.src = greyPawn; - break; - } - context.drawImage(image, x - 17, y - 14, 35, 30); - return circle; - }; - - const canvasRef = useRef(null); - - // Return true when pawn can move - const checkIfPawnCanMove = useCallback( - pawn => { - // If is in base - if ((rolledNumber === 1 || rolledNumber === 6) && pawn.position === pawn.basePos) { - return true; - // Other situations: pawn is on map or pawn is in end positions - } else if (pawn.position !== pawn.basePos) { - switch (pawn.color) { - case 'red': - if (pawn.position + rolledNumber <= 73) return true; - break; - case 'blue': - if (pawn.position + rolledNumber <= 79) return true; - break; - case 'green': - if (pawn.position + rolledNumber <= 85) return true; - break; - case 'yellow': - if (pawn.position + rolledNumber <= 91) return true; - break; - default: - return false; - } - } else { - return false; - } - }, - [rolledNumber] - ); - - const handleCanvasClick = event => { - // If hint pawn exist it means that pawn can move - if (hintPawn) { - const canvas = canvasRef.current; - const ctx = canvas.getContext('2d'); - const rect = canvas.getBoundingClientRect(), - x = event.clientX - rect.left, - y = event.clientY - rect.top; - for (const pawn of pawns) { - if (ctx.isPointInPath(pawn.circle, x, y)) { - socket.emit('game:move', pawn._id); - } - } - setHintPawn(null); - } - }; - const getHintPawnPosition = pawn => { - // Based on color (because specific color have specific base and end positions) - let { position } = pawn; - switch (context.color) { - case 'red': - // When in base - if (position >= 0 && position <= 3) { - return 16; - // Next to end - } else if (position <= 66 && position + rolledNumber >= 67) { - return position + rolledNumber + 1; // 1 is difference between last position on map and first on end - // Normal move - } else { - return position + rolledNumber; - } - case 'blue': - // When in base - if (position >= 4 && position <= 7) { - return 55; - // Next to red base - } else if (position <= 67 && position + rolledNumber > 67) { - return position + rolledNumber - 52; - // Next to base - } else if (position <= 53 && position + rolledNumber >= 54) { - return position + rolledNumber + 20; - // Normal move - } else { - return position + rolledNumber; - } - case 'green': - // When in base - if (position >= 8 && position <= 11) { - return 42; - // Next to red base - } else if (position <= 67 && position + rolledNumber > 67) { - return position + rolledNumber - 52; - // Next to base - } else if (position <= 40 && position + rolledNumber >= 41) { - return position + rolledNumber + 39; - // Normal move - } else { - return position + rolledNumber; - } - case 'yellow': - // When in base - if (position >= 12 && position <= 15) { - return 29; - // Next to red base - } else if (position <= 67 && position + rolledNumber > 67) { - return position + rolledNumber - 52; - // Next to base - } else if (position <= 27 && position + rolledNumber >= 28) { - return position + rolledNumber + 58; - // Normal move - } else { - return position + rolledNumber; - } - default: - return position; - } - }; - const handleMouseMove = event => { - if (nowMoving && rolledNumber) { - const canvas = canvasRef.current; - const ctx = canvas.getContext('2d'); - // Gets x and y cords of mouse on canvas - const rect = canvas.getBoundingClientRect(), - x = event.clientX - rect.left, - y = event.clientY - rect.top; - canvas.style.cursor = 'default'; - for (const pawn of pawns) { - if (pawn.circle) { - /* - This condition checks if mouse location is: - 1) on pawn - 2) is color of pawn same as player's - 3) if pawn can move - And then sets cursor to pointer and paints hint pawn - where will be pawn after click - */ - if ( - ctx.isPointInPath(pawn.circle, x, y) && - context.color === pawn.color && - checkIfPawnCanMove(pawn) - ) { - const pawnPosition = getHintPawnPosition(pawn); - // Checks if pawn can make a move - if (pawnPosition) { - canvas.style.cursor = 'pointer'; - setHintPawn({ id: pawn._id, position: pawnPosition, color: 'grey' }); - break; - } - } else { - setHintPawn(null); - } - } - } - } - }; - const rerenderCanvas = useCallback(() => { - const canvas = canvasRef.current; - const ctx = canvas.getContext('2d'); - const image = new Image(); - image.src = 'https://img-9gag-fun.9cache.com/photo/a8GdpYZ_460s.jpg'; - image.onload = function () { - ctx.drawImage(image, 0, 0); - pawns.forEach((pawn, index) => { - pawns[index].circle = paintPawn( - ctx, - positions[pawn.position].x, - positions[pawn.position].y, - pawn.color - ); - }); - if (hintPawn) { - paintPawn(ctx, positions[hintPawn.position].x, positions[hintPawn.position].y, hintPawn.color); - } - }; - }, [checkIfPawnCanMove, context.color, hintPawn, nowMoving, pawns, rolledNumber]); - - // Rerender canvas when pawns have changed - useEffect(() => { - rerenderCanvas(); - }, [hintPawn, pawns, rerenderCanvas]); - - useEffect(() => { - socket.on('game:move', () => { - setHintPawn(null); - }); - socket.on('game:roll', () => { - setHintPawn(null); - }); - }, [socket]); - return ( - - ); -}; -export default Map; diff --git a/src/constants/pawnImages.js b/src/constants/pawnImages.js new file mode 100644 index 0000000..e568106 --- /dev/null +++ b/src/constants/pawnImages.js @@ -0,0 +1,13 @@ +import bluePawn from '../images/pawns/blue-pawn.png'; +import greenPawn from '../images/pawns/green-pawn.png'; +import redPawn from '../images/pawns/red-pawn.png'; +import yellowPawn from '../images/pawns/yellow-pawn.png'; +import greyPawn from '../images/pawns/grey-pawn.png'; + +export default { + green: greenPawn, + blue: bluePawn, + red: redPawn, + yellow: yellowPawn, + grey: greyPawn, +}; diff --git a/src/constants/positions.js b/src/constants/positions.js new file mode 100644 index 0000000..c437f9f --- /dev/null +++ b/src/constants/positions.js @@ -0,0 +1,117 @@ +const positions = [ + // Red base + { x: 67, y: 67 }, // 0 + { x: 67, y: 116 }, + { x: 117, y: 67 }, + { x: 117, y: 116 }, + // Blue base + { x: 67, y: 343 }, + { x: 67, y: 392 }, + { x: 117, y: 343 }, + { x: 117, y: 392 }, + // Green base + { x: 343, y: 343 }, + { x: 392, y: 392 }, + { x: 392, y: 343 }, // 10 + { x: 343, y: 392 }, + // Yellow base + { x: 343, y: 67 }, + { x: 392, y: 116 }, + { x: 392, y: 67 }, + { x: 343, y: 116 }, + // Map - starting from red field + { x: 45, y: 200 }, + { x: 76, y: 200 }, + { x: 107, y: 200 }, + { x: 138, y: 200 }, + { x: 169, y: 200 }, // 20 + + { x: 200, y: 169 }, + { x: 200, y: 138 }, + { x: 200, y: 107 }, + { x: 200, y: 76 }, + { x: 200, y: 45 }, + { x: 200, y: 14 }, + // Top + { x: 230, y: 14 }, + { x: 261, y: 14 }, + { x: 261, y: 45 }, + { x: 261, y: 76 }, // 30 + { x: 261, y: 107 }, + { x: 261, y: 138 }, + { x: 261, y: 169 }, + + { x: 291, y: 200 }, + { x: 321, y: 200 }, + { x: 352, y: 200 }, + { x: 383, y: 200 }, + { x: 414, y: 200 }, + { x: 445, y: 200 }, + // Right + { x: 445, y: 230 }, // 40 + + { x: 445, y: 261 }, + { x: 414, y: 261 }, + { x: 383, y: 261 }, + { x: 352, y: 261 }, + { x: 321, y: 261 }, + { x: 291, y: 261 }, + + { x: 261, y: 291 }, + { x: 261, y: 322 }, + { x: 261, y: 353 }, + { x: 261, y: 384 }, // 50 + { x: 261, y: 414 }, + { x: 261, y: 445 }, + // Bottom + { x: 230, y: 445 }, + + { x: 200, y: 445 }, + { x: 200, y: 414 }, + { x: 200, y: 384 }, + { x: 200, y: 353 }, + { x: 200, y: 322 }, + { x: 200, y: 291 }, + + { x: 169, y: 261 }, // 60 + { x: 138, y: 261 }, + { x: 107, y: 261 }, + { x: 76, y: 261 }, + { x: 45, y: 261 }, + + { x: 15, y: 261 }, + // Left + { x: 15, y: 231 }, // 66 + // One behind red base + { x: 15, y: 200 }, //67 + // Red end + { x: 45, y: 231 }, // 68 + { x: 76, y: 231 }, + { x: 107, y: 231 }, + { x: 138, y: 231 }, + { x: 169, y: 231 }, + { x: 200, y: 231 }, // 73 + // Blue end + { x: 231, y: 414 }, // 74 + { x: 231, y: 384 }, + { x: 231, y: 353 }, + { x: 231, y: 322 }, + { x: 231, y: 291 }, + { x: 231, y: 260 }, // 79 + // Green end + { x: 414, y: 231 }, // 80 + { x: 383, y: 231 }, + { x: 352, y: 231 }, + { x: 321, y: 231 }, + { x: 290, y: 231 }, + { x: 259, y: 231 }, // 85 + // Yellow base + { x: 230, y: 45 }, // 86 + { x: 230, y: 76 }, + { x: 230, y: 107 }, + { x: 230, y: 138 }, + { x: 230, y: 169 }, + { x: 230, y: 200 }, // 91 +]; + +export default positions; diff --git a/src/hooks/useInput.js b/src/hooks/useInput.js new file mode 100644 index 0000000..1144f96 --- /dev/null +++ b/src/hooks/useInput.js @@ -0,0 +1,11 @@ +import { useState } from 'react'; +export default function useInput({ initialValue }) { + const [value, setValue] = useState(initialValue); + const handleChange = e => { + setValue(e.target.value); + }; + return { + value, + onChange: handleChange, + }; +} diff --git a/src/images/map.jpg b/src/images/map.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c158fd510ae0d3b49323f56b092de8d342ef022 GIT binary patch literal 40140 zcmce-1zeR)(>Q$5sdR&M3P`6&cej8b-CYvWCEeW(hi(Bu6r@910a58zI+gD_7`ONH z+|T=ezW@9EzH^rA?9R^4%+Ait&h9x}zq|efV9H6!N&zr1000BNf$Jq$23c|O$0};d zQnCt?HyyBqwkCEiu$TZ~XYcB)CM`zsP)C;nX#vD10^k5ffZxc(#Zgp6MFIGauag-l zbpV)TfztYqX#d=SYHH?U0(M=2f7T|B&aR-amS7$2iK`>D4*mhS#x^(gXVAJcC?E*W zg4Qj5)N5~We$;zza5U7!L7aDBUBvj0y2T&$pL{_S;Fb$?;))Jlaw?M2PyqCGGo_oy zkM{rO>1yTyod=*I0RT|_{-E`j-u{BY;R661Cjh_}{RML<006#Y5FYmz%s3qYT0#JT zaPBV{O&$PX1Oq_xn2DRS`wt!fG59$IGXQ6TkbrE1c7iF4r%J*_xz8BKK`59Yg`oOG zf7iy*3n9EN<7uVUOP|T^O}6Xn>vx@# zLQFt{kB3h}z(_$#O2K%Ko|gU|KPM-@w1l+2z7Nd*mcaFE01Fvr7-kp_h7y3qf`P+= zx$Xf-!Igo9gMnK0uNNW`3<5GdEZp@RfcyjQe+k;eeW6GiEq9}bI;+ww0D#1HCiDq_ zsoo5V zU2{4@+)nM*3V>AY>|7GG`1Q%62uxSbT6^l8vp=qzAG~*A9L#`ykMi%SpDtc`L4~zw<1e*P|)y%dP znMBV%)Kx$_b`?JrKDp)7R9m)6&txg|1T87=AN|j=Glju{6N|1Y{3ghz!eV zf7*p9zz#LW=Pi(GaZp90i~~>|QNZER+*rZtl_P*5U0l79eGRZQ*?XRQoEg7dnCEbd1^qdRf& zn`@ez=lLHP$Ag>Lwc2 zdm_^Krn7gs!r6&511K5mYXsb5!&J_bo-5!er)Xj2te^5r7ZFJpF-x18I!nzi8(XjX zg_K`lrdRtKxjedhP0zxcBmPWcopAE#ymw|LMEjLYPgay{|BJlHLE;gmHnjQXF|le69BWkI}(>0iVcGLPO?=DG%$U|-LD0yliGK&3Ls z!UKWf^_noyl#+U}6U_OXdfky69WoSe+uWp>o*Wt%X= zHo2OuRISWQU3vK*Bl2@h!|P0rZXxKJv214Thkh&Ds@f{7U_0C9%;|KA{x(jwrZ~s_ zZjU#StAm%asIm2jEJSO&Fx;IR9{dy=SI|L?yn}NvVSSQ5Oq+K=M$}iQof2&$0|_&c zc|}|)sZ7|OP15b6BXihxJ}O^b{3eK&Z(XWRP2fptecqq35PG^!a#U zSETWK&~UBs^veyov@F-z*?*n?$A$gxT62v)1xp_e)u;6?lz+`C4sZgc+TbTHt#Z8b za@myK0q61-K>aoCy#8LNI4H^s8b5BkC!qqV+gyGx`96Li6u)?xCLTB8m=ecW(b2#ca3rJm~Y` zc&ldp{bfH_>GLm7!`(6yX{-J|DCUli51hyhO?N3N$jYTz!tCs+TMFmcWB%Un>#>K3 znK?vtb@|u}g<4vGZgfBKLm(#|wX+!I#R>r2{Q^y$z|0AnI{nI*zu(=E=mdaRel*$K1cN^q)Y?~IKD`0g)G z8r#`@9;Y7~p}q67D?zn0X7!Q9U^}@*=A5l!)sX5arjuP(MZ+XABQv3g?<8ndic znO5^Z`peeNWSTq8{^&2(n5FxxKkXEmulZ*DIsSWNkouiuwT0FayHbZ6HF`7-I3M=+ zv5qNdY8J1}%amLQrn_Z5G~Pb+Rt#@y;Twp0Q~g(;fCTUf+EMo$peFb&un;*F;ON;= z($i-NSg+=!)x=kYGD&h5TEbN6l=OgWPhY|WnK%Te23k@k4j81N`qdi%^#=gNm45yJ ztg~)?4Xb;En+yP$wX@~V3<8)M2ELtwUwpd&;QY0=i3%V-6(MqHJpi7f4pQGu0hmMF zNW+oSVbocsVEkaK85fL$rMiV8yI%h$9)J^sL(yy8n{1c*Cg^%NgCXE`F32y?MB-Vr zWB6KYSFmw!{H4+d{?E?@&IQiBnn?JIng4+6!*#=;^&qS%^vxT4nhja4Ctvq0O&d-1F%IUD8tdLUxemg>-P>@PN4ISqi5P>OpnRt9p zNYfuCp-WoB#jz@1#jxs59$ZQ_6s%^lO*lmB|BL3Fz6cVFKK+(~SNVx`gN;!&%??PO zZfgw>5pg0^)dh#d9I`2_b~vp?^G#)GL|f(^3aTA?*}e=LPZFw0f7H5=w(Lb}PI;Zh zRv5l@o78WPb_}?E`FNvVKbWpF`w#Jiu^3WA1bAoOmVtwHCsiOrj5mWJ0HPoanQBux zEE&jj3*fiD;V1(1f%rU46ykYZe~3A#1C!u%TNh;H>HwXZ9m8}=zD|PD4I@os<>}kZ z)2`7!Cit47YfgnRR*bsn_-2lfo?Hm24rG%AhEYE{oQ@G>7ogyYm9_q3j>;~Yh3dCl z7!94=_D^QMLd6s)e3muK{##7A*oN5p<`B_<#x{jd{69wV1B5%bA9OyL1D6DKd=t0< zZ`A;>P6K|CQpdiy$bxW1z!m#Gt%SC7*|BA=qn{#lpDf z<&KH$;XudVbaubR5K6!LwYijYVZ zp%{GaOxpQ=R!!?mgJ2`$jrV6fIm+^*i2Xid{J;MzB-(y|3`?vdV2&Vx`dl3mO zx=js1gZ*E+U`}s@;cbea<=#Ip9#_-aQ&I@e(USJr?B5<6xS_VldH6^-BP0A)M7;G^-2t33T3xkxUlJ@gM!+ z_CTHZfER3U4vMN~s%$?U)KLJa6B`HsfB=fr%0cV-5CCXjPWc1B6auz$4!&%D0yNzY zgM!2?G(`X;eAYGrAt`^jQ^R9sGccHV&noq9U;_0dB(E!+eZXs<>g?#Z6fmZPTi1Zv znqKr*0JxnxNvpWt>Al`eTQ1A1*|#Y z_Ku$z9OCp}%_=nu@U(KbHMKUk5}}5Z>SbkS;aq-z58S)m=2kb}G*C5NHPSRtgCX+$ z(O-QS?M6&Rkc0}E@;S4t!t=>)hzh`90sfKLJ05RvB+Fzazm3B_@@0RaBH34Dky z2dX;_fYd3|36jBwA4EWHEW%v@cbRzC&+Gn3#Q_`vVs`up{Meui>I=N@^v8O~9l#MT zxn6_2BDeYwpe`xW$9n|8;8#_mB;Cfbl40ym@izb{$0k@Ks^LCjJdK=b{zX+@gwOl) zmuH+ukp&fjt%l9{PMMO`O|^6?eEJ2~fRaQbyg^H&TpM^!-6W9IMld01H5?aoY6dY> z316HqWrbTJhv?gTs_Al~f1}!fe5y1_r6H!b=lPR^1k<+5V8VEs1(XClQOZC>?L*t+ zDsURFtBAm9yhUe|N3OAOIKPk_*X#nYyk@%6#R_-?SHZ5^0PGLKhi{QPYz!6ho$eCt zfn1RQ7)0NAS4~IJ_d6a9xBSO+-{COeGEKy($Fl(4h_!MT&euRLR1bJj_Nze>yS;ND zRguqHQGq{Xwo7KoXS>k|YA>(zs{;3BI~$=?$wJQc2xr02r#xE&y%_))Yob!XH2(_y}HQ zS{zcKI@1Aw3^Tbu0JA>@OE(2xg!+L2mj@Gc3q*K$1UUF#H-QLI4tEaa;N z!=+z@e)#0Fzg@D!jNoNtw@yzX(`D;%4H!Il;p1_!f4sciHyc|+{%12>wjbxM4lx3h zT2e*1Ec|OPHC9&|L{}OFWe7@8aFUL!xmKeIQI~}=8(5gOG7Nky6wxW_n+g%#slfst zSXQp1NuJ5l8ZDuaoHmNzH-cOCUl!J~@*qw|s(ym%%-UMK&5)K{huaT@b1(g1m1iic zMnI7wmM-|2X3nHxbbT<@9}yp38Qh`o3;$Z}xnm|T9lpQx)Fb!S(pxa(qHEpCe1>gTrU2!dM(s`?}a`SgT3*=VnR6h(;aL93X#iY*~c$65>T#Bdwr2Pt0-0%O=&)e z|EiVhLDXO>9p#obs3MQCaiNICtpzs`z@64^;|p>H?>?^*AF57 zH3}>*u7TacOWnpN@Ua7;4?g=@pHBl1h`jDC;M8`#qW!|%+L>aCEf*4uTknjE{;-*_ z%9iPMxF%OrS_sdy+;U_$ZZ#s~BLu9i*H)U!cl@$647($u_&cQG4=obitE&OH3w~BQQ;LL2}rK3_e9DM4FnLm~#I*5y8&ue}DB=NQotKA|J>tZzSwzH<- z-DXH0RkO9+v9Og?!v~OAJ(QWFG|1D8g^%(a$kNZL zv44uQa6HzsOGo}@q`hnPmuc`L662@!3(?DKh8#F2IKOvnByw)VX)G2qUtu&6nQ_9_ z$d*ur*;E^D)kS}Zq+0=E*RMuS8AbEzXm$~O&2rzn!H%_Y6uErr@ekXMBmR!n-GbQCqo685JW=* zgB31azEg~?gI&l1kfo`)r$tWa*anAsnVaUKsF!3?v^Bas=x-fbw{sol6oex)p9Bou zIA*d^Z^I5VGY6ZOTp6RqO3}Jm1C}l)mM%S0`DYCVbvmP}PiR|ppBvjJ&03#T5k0HI znHH7Pr{)*rQZwC**Reff|2IX{T2_90MSY+m{QR+Qr<(|(LF6g?!SLUNsT{wNM!VYQ zr4`%vznP=VfB#w zrGmi^kTT?|jD!y5In~NjQF$KQ;+ad9M_8jC6XB8nrNagNb~u^B85c&=9ZNz=XL8AE z(rwLzt#TS$kHctbhUYKXoSzx4V)D!7bU&Q*z%X4F3VXu@h_b>&p_1PT2N#qaf- zG-2=>)U?Yl<+yV;7|lnL+di7#4ZLSnV)qaFE<2jqf0W0{dw0OB3oLeck0K0%xFzaD z_T$Po#3dVP4&|M7oVrZwS4`_asb^Sw#H$cyX8h7nI{e)oH^P(#Ny~Sfq8$dUC*O*? z&stkNNZY-*)T;(GcHC(8)A<{NLS*G~)Uyf5N9@HDBBfa@IV}8}C#W8a5wE4faimyw2o^3I3VO3lI z8j{2xNW*kFk|O=}0D5`f%KB~CxcD&lQwm{$J5q|H$Z%*=4t*H@ZDyoh6N02HC&PU< zC&NF2Q-^ff@twjcuUOSBA!xO^Y`!E3(bepCHb6@;CSr>`5@+Lea1vuMJ~YSgEq%{& zb(gfGFtyS7Zy@Z1I2uC^cr+5w^%$kqLK%~;rWE33!paJS7MsLU=uoh6aOy{jEUWLK z7fON!F2gj@zot};?LZaakc0;d4R&xjQw6q4$p|9XK9{A5fEhV6cK3f*x;k^{BGFA1 z@)mz?+~3*3eF?LsZpv79UrTpwLcsg#>r}7VEK^0{71)a>)+Lw zpVfepkf4l|+m;V+p-1L2v%5_Nb}+IgDZGk~R(%zz;aCAl>N&V$4qvEQZg3A>H<_@B z2?KYaZ|0~|Fs4eio47EPTN;jA!0Mvvw%r2Q-O9l3tYSP>_GUmdG9ie77Li3R>QNFD zY_0Jdj9)CpDu@0XypjjSRx4;E!6RfsD;Ow92v6HMDth>wjAL*tluP%M&s(oekI14}dJTOz4r(sNv7ophKQCEBQC_*zEv%K-h zO?S`8UX9OI%W?9Y#$g=b@}?RRh?Wz2v-T5u(4a_9QL(8&s6?%1XF@zfHIc2`qpMtDv(K*( z*j0_2L10#N@3FTh2be@`bZ)BW(%e29`>+>{dks99z6NLs-c6k9?W{U7xXlg>>3b5_ z#rVhU1RoK;Euj>PMjCF=d7kNPASDtNeQ>(AzWz3QItLnEqCY;opQPL}K~Uz6XNo1r zPwzEQpGM@?d0Zr#P2_h#?}Z!8IwWJzd2(PX1o9o-P_J+@%k$DkxpXoF(+avvjRU1f`IiK+- zn(@aAEu+C@D4W2>U_!mGjIN}{&M%`_`AlxMtWf90Nr{P2dD@t@ImPr8b+Ve{e(SD6 zueUmT&eSk9eJ|;2Ue2~p>AP0C#TN5GNSwBtL(?%bOK$WwJHaGMGVz9g;Sg{j8Q_;_^~P~Gl$%mU_e#ieo^%b>>%C@ zr6`oY*FM^ISOr}t0a&8}#xwSO1+frf)DiO~y8%xWSPq$xFC)rn`q^E+3vl22UOPCm ziX#Ez%14AJpD?~5kHRY3(ucuxX((0*+&O)~r?b1SAWpRLs>_jlMd^qUSwAJN!)JG; zA53>Lwi#=v+e>)k3e{CTaftO&xhK&@rBWWRc+Ng{tA3%W63y7i@For!^+DqC@Y+?> z9^9$lyEDZ-$$qm8#_vIQ)-Q;?Q{Y1fmQmUljfR3w$)ux0nFq-*gzoFq(`&U|8WOYZmPs5U#$(d2Xv7dcO zrK!4|X#^XdV|=&TdCmR_KH=WbZQ&^P1EmSt)=3hnuRamX+v8c)3jsGj7@ z$W&^vVTY%&IkhdAxIM2Jq%~^ep(&bFZDKPVOk*=sKw@-TshiLuok1@TLezK_#AMiw z)}nPQ(f)UvMuBxXo5`%W)=YtrqXeBu9afU9J%`DQ()R|X%Q?O*VHGjHM2@R|ZSm== zbB~0Bgz}Zc;8CfxG>qpf(s!KBWuKSHbQ0wEgyEC&#qF|fPHtZVD8d^W>=)eVJO~mt z#9cX|O`Z}>rZ0cMd_%;MdGTZ8`)tEDrl3f7UKzB>*dMu8a!+m+AQcNs<;RYf1?IC` zAlwzie6vcG*z>g~LNpvVkSahj;w}3JGW2B0{iwK6_Oc%TPp@7D z)(iAfbrX(V1KN)qgL#TS`2Et-Fo?iD70UyKUaQB7i4B+XN12^4T=aM1;GhSR&gu^b{poux++E^-r zC*z0hZzv$R%PkuLU5pmW($ zD2Cyqg+WX7{!m-T4&h-*<+AcPL3MTm|38}GQ2iX)dE2(v#622=6M6l7jF;Q=2@$)p z^HnF#&*hb00<{Thssh=L>HQ5jcb+UbQ^!8PDw;B-ae(V5jFE(JvQxhAAjZ_&t2t*F z9m{ANvt)Y1y?a4*{Ck>{zo+Tur%uz4yjt8q2Z`#31Sk}jqZV}P@uwXtFLN;E4M&vS znrfo>G|p#6{-eoB1wkxl64Yd6lrq&6O~+F)7t%nG6Npi9F5wA)HYGKP;x%E7BvmIu z#!YDssUYZm5F>FFCXE4@9h4+9QiH*y0ipr3WOX7FP1sg$)$tzHQ45k=uDwk`U2S&| z-liJwnSKpUAFhX(Fk9z^D=-D^Jy>2Ty1QlE8he-NO_es`QYB*5R=22Xl>!5g8nH+p zo}o!ZEqlj9lpv<0WR_=->0_9>Kp-&_Q+&DY`BP)bTPl=vOpGZ|M6cSnRcz(*u#5$= zGp#CfGmXC4;&)I(iD+J~^&py%OoyU7X(94fz*Z1dC{AIsk0LjUIrIv@jR~Z;puP9# z(%$^esgSep@+A9}zRL%Gzdnf4zHmIeE)nlC0~d8(h$nafHFJ(P*1Traxn8Zj;AQ!M zwQVn}WqF##R|3n@bWw?!^dVoZli|{dBDN*)YSH@|NVY^!!or+uhiIYFi)5=dl0RKm^;^$@mXa?-S=Qu z?6T=8*EV-9bPN?lq%zp5Vtfu{&&}|YI7U!BkwVe{DYV2v3Q71A!Xv4IQ?*_ayoi02hju5Kfw&QVADBl zqj;s;=6@<}R^2B!&O$4OIySvC$DED+!G!PDEl^hmU%}hHY9CNdKi6bDRsV^S?iW|f zB7qQDQa-=gFf461U7Hn%?$tA@w*%EBmnamYRdwO}L=w`J>FkyAu0)*gP|BV+h|9lIj#0zu1oJ7T?AV=3R8V0)Zo> z>;+unzND6pOX7G>G)w+kCx_Yu^sVu)Og%|iyRvj)ykY%PduamKv< zHcJlH3^=ZE)CWa^bn>9l6pomnGwCOL>nLH*TM4`6M6Bj)Uqf$UW% zK24T?4D~+lsgFi9MAOaXABO1|-I!+wX{~(L#jV#r_ zmg*L2-<@Y^YJ8ihwFNS9Ia&{Rs0iOZBWEzZZJH-5i*&(8uVJ>b8atr0Y)l#bEa0HA z#5HP53s$r5a|w>p1EzmhPN%uw8~&5TQx!{TQNkK|`66{T<7FEEURfAjje&u!rzWtf z%k>U8-Pwt^-4)Q32WV#-53KJt!Ju-YKnrf4B$68sx^X*iq2wJKLL;?nU}=n7f7+@h zq1@(xB2t{LEpvw^NT7MdGpP5~5_lYEue8fpgzLGfd!+wm7^uzxnR0Z6eM7|V9HZH& zy}^>n6c+1fbE%3RIX}K8z@?jf_dQ2G>UIPn9`0fq7Cs&Vg2b@^I`;f8=DR%}@9x{) zp~Jwr2ePV#Hc0LM!PlGg6GJUjWKGxD(nVgI!J#CflH5v2jNIf!a1I_wDDcXlae*~bkt)c4n(tGZI`HSXnf63kG3V%!1R%lxmC~aNB@(=1Ehb=v2D;$tK z_PTKx|Iw%pwmsQ5let#HF5qrNTj3*kPocDEjdL#p{h}nWLUT$W8b?4^_uyP`$-`u7 zqp$p}ZaYe!nNI4nXqzW|w}tSAgx*rQ zBH5SCGg179xMHVOx+1?N$}GE}lu4M)#m-@?GLUXH$rMhkq0N|X#SeLM#{#FMmtHYS zDHAuvSI)PPOd{bXLi^-r1tR6Fn0EJkUHbay{>hz)JDy)~x_ic#EE#O{R5y#y5WraY zhl6#p$d$jgQ_A$up$Z|urwwJ6N09Rm^{7XGk>_0qD=Q{Sqx9ah@?i>L9W!o(>y+vK z5rZrXB)#b$jD9kBmCoV$)d{`=I&&JK4hM}qn*77ddW!zW+Bf|wr9W-}UJnG&sHo{) ze(8S?wK3thqXCHE%J(itfJg9^Z+#^}OWW0(L;4-W42KW9QBy5$61(p|uMybD6zCQ_ zXBTc^(BUXIt>?TRh!07mMx&G9B@JGV`yBBv)--^TGC%P>Xksx4`WzT*%x(Q1>Ws|A zVN=a>By!riop^dD{hUC5GPQkiCPKVyDsJrZ?_r)|M2a=+D1DNTv&7XxVPiCXJe#vn zz(UG(G-@-OXj0%`z-~&xM~r3AF9b}!A+KP`uoBBCy%QGcBp2yG3zrPWJ+fHWqv){F z9X~?*e1!I?A9COZfweb_bj$1AR*jy?`}FSZVv%@+88lyD92qZ(SR`t*=5(Dh-z*!M zRLv|YpD(#u@2y;kH=6T(DAzML{w{}niVF2R$ZT9^g1 z^eS2pHyNLx>l(1o4*HgDfZ*n(4Ut(&R=NfnDqejbtwFjJc!7AlZ)okD$`SjsO}?}B zl~4VnyOQ=4Ow1CE|A780l?eE{+t9cqqRC)BiRLaggLZP_SnuO|vA%Upc^Ztu~jP=B!e&Pz8Qq_|7 zra9Bl#JX}BolC8_h}k5$K`h;aa2>I`2C8=%>?<}5m9v(=377`oHK|jCmys>C?sltT zNKT?^TE(sp)_PH(rJ^>_-1unjapfClj^>MT^4hG0N5=yZMa4&b{#U_yQ~FfY>arZj zm7WSO0`OuPQ{$-WRyhvfweFV~h(z=y4fSI^JV^J1y?aOf9)+aIpxMg*5p}&lqbY+> z;TcAs+*ATL5q6d={_4+lK%JjJBBPX^@v~IDQXu+26^8G0=-;W1%3M%e+ByyhbzctV ze@#Gtm8NraBe9Q{^97NV{9C+;xy4b&Z+)F0`q#hUehsy~6G${+VumB5{=G z!T!9L(#mY>Ud`I+y=Pek!m&OIVAHj!*Y%0HuUPX@K%dO6AfqD8`cxQ+aH_7(QCLU+11=e;!eL-alvoTKZjoXIvH6&*&$ zzHnbmY~|kbt~l=)TB2u&#FT&ZP`O_Yqg-m@mN&*H#tXL4HA!{7E`niqjOSkJsz zmWD7Jwcn&Lw(+ePCljS&ch^Uc#I`A33TU~g0og7K9;P0E= zjKcj!sOMPFPH81ye<3F?%N;rqG8o*w7JN*zXq#gCnB-o0R>mo7%Jb2fow0tc#W=oA zvQmroQ5V6~C{~2jq)x=ut{C(AiTq)vMbLXqw77ZaBzc%r4lG{DGKbf{E1>1$R@FQt zB!~R^a8n5!A1lc%b$8`1wKk)e$d0ZYvkt8=_pD^@)@-;xgKq?RpJRi@Hoa1kYhB2^ zTliAo<}7UIJiu!y zx-B4W^?vU#YjkxPEx>H`UO=lObz1Xpn{CVgnrOEvvraOHoYvyTi{?ZN%kj0yOWR?^V<~5J z#oHBoTzQC?t-i^_cTHZTpahg2GvmO?m}wZqqZjOWhR)FxrA~hL*D^@HZKQRo-6>9> z@c`SdgYo{d$rrMg#y#1axP7w@##6yV5l3#!9VH2Fh(R1@(N-Gsu|!E6gTfX)4CW<)zqGrWj1=RYH;;=A^Hyyb_71mwnOTWH5cp zX8L{`;Y^46P=2(PCTTQna{U2Fj7p7^C4yopOF^cxkGAYtw8R7oiL!`` zHLAkpd)ZLvMJ`u*;d48{b`#N6d|w8ABWx)St57z4`{;|Uy2k?T#e@Kvael#bPofZU zNyh_D)X<2}E9N+jj%#F6I$~UG=UmAbkT$6=Efob!UL>K3X&Ohox9Hi*H|&X(48O6w zfBfF%NLtCx(l+zBVEZUDwMR*nysxvw*=C_lcUeHNL6}m{OJupoJv)P!u4pGsF1e{R zZk(2;!QrB}dVN`kxIH)8)OydCJ6_T&X9elKnO)n~qd9wu*~VymRfDqXr(s0miUKK7 z(T%PbGu%&viTkG)u575aUG^)ZN#Yf~?sFthxUC3I%GTt6!(aR#7LA<$X3=)Z;Vh7arf*+aeLutS57;haB7bK3o5NcUD+Np0OrKfKW|zCNc16T$sE zuy!vPUraFXQhwZeG?}t+_?(GAffd&FpOl~Tg@1U@fbBWHf!Y~KDlC7bgIpL}g?GhA z%18(~3eRFvj#J%f%>3LFnvOBo*sO(4D(7eQ8=0?ETJs!n>^>{5#ame2hW>~+t9dQ^ zl}el8R~)lr&P0R1?VHq%JExwb7S8)2UG)d4T?@~#hV_1L0ya{GWW|#O8AJ+%5W4<( zmT+pWXuGMeSR6l}CdxTuHIr(#tfb~c)~gf=Rb|S$i1if)xVAw$nl-3AqLq-@5E6>X zt%jKXas_ea^5@@p&gcWS8Uw)GO#$MHS4FnJzg(fIgRCzI5(-%`V zmeX#V>SNO-WdC0Vw!uom?=?yqk}Zt4@7m8Qj+Aqu?&7?PPt&%{L63UfA^z3W91l4` zzihy0>DZKoQIzX_;l)mwWYn>M`WSg-v9;Vl?*)mlqxOa`h~6&owa6TAjy{N*4e}~} z^AjDFUPKs9gGshfi9KBXzXWF4KLWGD&%jJd!}N&v9WA+<;uJAYTKPu(To_T=NV%=T zW;t_SoRl{{6EWi_#Ze|=`cDeqL^a17CHdL29hVyzvfp)=yS$&&NzN`}YU5ck?N8V? zzr==ar=>m}2=P7z`31i4!%O)EIq(Zhr3L-grrIV|GR79NjGl-=T)Ph)Q=Z2y_o+=z z69cIfj|n*t#ZIyZn8`Xf zeO;W-!Uqe_PXFdcG9!pZ6{i|j99%gQ92|H|IYL*ji`DyHrfEPtP7hI&mG68vQY&Bn zILxGZ-}^j7t~Az+BhwzCwLsE5l+}4P{d7Xh(d{u;a@PM1uv?vgiE64D_i8qmhEc+b zljeEh@38I1@^87@WGn5ScgfTBgVUdR=)KkUe-0rpe;#dABjgm!pY<(IPh(I`0E z{U#|z9}`}V-&`(u0e7SIoiT$bj_ku!# zKIth9V~>rCh$v+;a%fk}F&^O!R^&}JN8mw0AXEk{dzXBR zuGlU2VvQ60G)Wug%1DkeVVgj;&WKgdXh~5g;%ZI|t*2H!3QZn|j@OautIM)7BOxc} zn;Z13`e}y}QDM6RH(mvTam;q3gn3KhZyj^F656 zrRgr3ttiZs=SMw>CM)@@JILjp83H|(+v8OhgdtcOKOZC(E6f`};oB4nCl*wE-IQdx z%ZoardP7L^He5BCRFPCupIEH1Y2~w@T}e<8V<+PpRo7Wi70ml5ifZ$v!+C<(n^Tte z`ozaX-FhxH8;7jwjf3QzO0nhbdZesm)iighsi}zh6@Ie#`1U8YsT*qQ;Dn+4TaKV8 z+)0+JoS+m1Nv%!qi_B07DtMQLPIYA>@x2eYTvrEp2}PSWrx_Wqfqm+76xO0>qT)|; zgIw0B&>IJc0aj%}5R9eqiwPpRLLSrLEY~|d(Zt1{!OMpq7#Tk>)|K2uqV1*ZI~xW+e@(R7NS-l}YhCDo?Ns)*7vP5;J3*~+hJQ+AVz(@H2Z zDUiKT;{}P1RJ7XHXtN*mRIE1aE{1#Bl6q~!tr#MOB0%u_YoO<+l!a2|9#ZuYrVn?s z$%=`I&5&72E(=ymzhc>~D=f$D3VKiNY3k*y)eTpG{}E!6qO`iMv6gB#BQb$D{WZ_pIA7W83Du65{u2*3m!?7AaDzpVij1?M665S)V=SXg)7;v0Ug} zJFr=3)m?tUs_O@Xzvw#3e|xg!#ptSL>z)niV9UJ|e$zbzHzh0gg@!X!vhm!w0IZ_^ z{{A5=B0}B8@vzh#?I!t>DvK_*tw&Zp3G+^fa&id;b5c_Jrrvdfc3xIQV!@9rI=5x9 zN8OCAj@CwWyfyrcNiM5O%NZL!sIQ~BEFyZE+CRBSVv=;uTxz0>9Xq!K zyW)0g;T+Q6EtteAMYNEAjvRUGJi^lqZ<2$yPYtJzCL4n1xu|!SqC)B5y$*uzla#@J zCXNnKFRm$$$7M3}o8gC#PX%DBc!$hP@vLqTN1=#PYC7ebbH40JC}`Z2%(P^(G8H%Q z9|R_!HfxEhrGyQ-p1M=PhY7_#C@!4~Ms57Uk{qX5a&B4~SkA6IP$F+ulr119GqWs} zuq|>))o_3pPA!|#O??s{AHsJMb^oQ&rAC|e^hv4>9hrPIUxF?^bfL8yqoUgSccauR z8e|4>scw8F#ifE%A(_YeV#?1L^YH|@&Y1>2&3DGT%@Bv5n35~cgzGC}2XCb&%lFf3 zynq;p3KXxZ9iX@*OiR^HJ^M!Nnw*}OCMQ&sWG9oYc2MpK{|73oGYv0?^Hh?0QJWr_ zkNmdSpPd|DMY1KbRt1_IYREHVvEm`&bV0YAi;zQ>drr&R8#@gh*-xCOR?cKu}1v{;V-&yqEqn5UAp zZe`L>0el|*dXjcq;g)0wE8beeYs_)dS1JmqxJp5Sp?2u${TLoOnm&xlxh;tPD)*Ze zDVsTXHN<%huu6|YD~Nu}I0tZ0VD2|hQW5CqnMJ2K*@v3ADp_KMW^h;BMb(>QJIs0G z4eEaCDctSi-Yij;7R&-Qjbv|`{-Me!DaNMF9y3G~r<}_w8hQSv@Dlkf!6O=u{n!7;6+G#(*gdHtc0m4Gz>&hw!Wp|X?h)V7%Gi0)^QE= z;Y8$XmSI0i7Ou>i-<8wdu@at;YQUQ&;d# z=%a)4(7(C*f9Ae?r%oloo4W5_OOy4Es80!Qy83FVY3WpU5%~XicJMxmahvUhN;Tg# z+ML0kTsHfvENRV6$casOt62$K5fQniK(*2l)G75TxucvQX^*92P`cmvOYFh?BIW)B zcz@>8F?7#))h6caw3&gpOtH8axkSH}e7QU$l@4|ax3q5WtI?lNCk_9(Eli#VM`e-H zGPz1UJ9a+S;E6UOGRu0;or%t=qV=pSy*GH+>~y7b!8}I7g*SDhIYYh9&j@pRWk=)D zGI)+v<&4%JeIq%_MQ2e{ouX87uTpx`i>9@9VSe%*c;Lmu;R8>+8VWb4F43qdM`;ro z{0b!!&OC~}Cq+>sCfY7_sxHy`V{arzxjh9z{I}%^>GqFGl9p(sWpSQ44p_ZwN>%-d z01_nNd&^i^yC6NYT}sEEfSE*;(Gf{*Yu+i=6qE=mmM|vwr(($%@faVx=Wu_D8PkIo zPD?3arKX`L)Bi10y3tG8)oE7vd$N*R?2>Kz6JLyXU^tO<6$w|m6?uKCcrpGthDxc?pMa`q-K^7eExiM z@R@1w5r%a~ByoFLe~cp`Pp(2)Q7We82}8I%ab5Y+=kIwx2L>pI5axzY_zbY8B;}SW zy?z&xekm2Gye)jJ+7OM99TA;n$-JXsyDUbRxua>Ihwe4yQ&YBF)`lWfBEc=Bb;uyD ze(b;z%q^q|R>jRG7QqaQHq5ksvmAaqY;x{xtDz&7-J$e4rl8V1^uRObN-%71fV-#% z?s=6iOwFsgT`GH(S0N@ybotcp@9_I{R6I6D1Ai+hTP}MI;Lw~|?ugn`B!yrlKsPSw z6QbLhZCv0lc~|91Ssq`Sj(sAPo7a_<(N(r$qz986*7}=$%lRm1h~D{I#UWGkX8LP( zXR*)8|4(gi0aVA*t$~sN!GgOx!QC~uyIT_6A-IPC8+X^>Zow@9f;+*2OMpP|;0}4S zAvq`K{Qs@Guikysu4bmEXZ7muTdSvSdRq414cFh>^}zdkyKb_$fztIFyX-=msJ{kA z*c=yOcp?TnQU+~bo<^Ez+&@vjWJdeLka=Yqp-!Bgl}nzHv`!#lgvQ5`$C2DgT;nr* zqm)*Wr@}^jAz3hU@ z2Lh-BPL$#k^3Gyo9VVJQp0CS3fVBAl()=5uKk`Zqn;UMiX^gu6L(I2m;&qUH(` zRJIVReo0Dp5z$!42$ctUux>(ae*Qx^!q_yvUO#Ju0@pJOMw#JmXDF~-a&X=)1Sd!n z>!iyP3l*8d@+ow=wcVPM>1vzdybAqt`TU8AekwX=C?%V1UlVDYnN|kTot!sxJoqF6 zmFWuW&ZTqi4q`+OzQJKIAw35lz-)@0Du36uFbyGu!k5SYpnia@jESFHc4_GL#RviJ>+(KXYGEVB7(Mw#Hm5n92z zlS)Cfd<+Ru*o8{_W?KL~_~01E$-XCvQLenAj?PX2Tq4LZA9yVR?1TIO^8uYC!YQo0 zIwlLs$yCu)_IeU=OEwu@m1c>+upEgj4?sNeY!tkfrzBqFad=~X?PNyA6u~pu>kfIy z0~s`PVn3z0=Qn7e66At>8NEc+(O3(W_}PZ4d&OXKi7+ZX08$b1;8K+B;WWB$VMgI3>>-#76 zSbX7caBY*BU$y%`d5Q!4+ds$UX9JHZ3;UBUZ+XoV~f{fee%2ykX_yhPm=SW zzbCp$9^7GsJwi{*pa6@4bSDE zu!?N?Dlx#(`{IDy1aIxV8)|g~b&8I?j=;F=Q8cI+?lf~Bm8&WLn5Jx^poTC}%OoKt zcJ>)(N~5T@vmAwWu6BYP1yJ_??;#+~D_6EaExB01Jt);XFj_2emWy}vZ~R+|KMufH z{DdGnD|V!7XzW`_ZZ;12vXvmrNjQcY}vOSP{*}NoleHcXU-EL5e`%Txsh< zqdJsO2!2Yb)4Db_oG{o13iJ~qs48&DMx7>2X%)^wAf_8B6BtFvo;UzTDR|!iLkZ;c zBq#QDc-l4$F`4BqRP%HBLlsMFj-@LG2MJ>4;H73q%kDMaxeu50GN!?a| zbCuo|=Z3ZZwBVQ;Jin-LteX^%q%$~R$JDex;kDRMC!3<*(j)n_U0s0gWOIbcL`DR` za-Mvf@^PtqS^B4vC97x5v>}2a(I_txJ@*TZs!<~IlWE?W-Ib53ve^2iggLQL&PneFmJKm6Z_Qhjlq~Yl~lh#5t zeY5F-8sla<#k`y9WxV#BXq(~&w#__Upy5`)C;6nV3iUs%-U4j(v-=Ytr`FdY6RVHX z2KPOym$_{AfR4MJeM~2dQ|AiR(oYE4jZvVv(_=>6^4X=0qsgOZJ;vk<8z|dV449wp z$Q;T6<}0s!m_OLg>ajh{R{R$S>7hu2$sOUCum~bzOzEGmIfvyEdPGiQ`{uF4^MxDW z{iLAL!Bbd?@pmRRcp>!G+xp?H^;$)PTxt_^PUA90W-5@52WYHMzJH}KM*RFqst-3- z4)YPB(_-YBm=z5nLuRY^|3+^^z(7*yW2G4iOl_#i9P~{wT&6OWV|G>WDN;Pq1Uvza zPIm!iibtdzywGL5rBANWuGHRqp&A)SRIoYQ80L63nWEVO2Cz)yUY3>Tz*d)0jf^N*Wk{JvVecCfwtZfLZ>(K+Zd< zUl3;`(+C)}j+c<9u+S&RnVx(IHMc&0bhIdtucJiJ=o)xlD!LTB+zQW!?+I>2Qy?X+C2b^)^h%R-%4on%JbICizRZNW-(@Opg9J7K8C~X_`ded z3|X2JS#tD;@GKI)SWVp6{Pl**(icV(7w}^eTMn2!{&CW31GH#AnmU9noLd1EK$)#J z7H+D%-1 zxHB3TmuLsas3uMe8gZTztS-UYq$)aSAwcc>07ig`<%wu{>GU_EZqg?vQj(jZ#4W*HHYT^o0_Bc z&zeIyRgpy@d;*k=TofW@9ZRcv(=4H^lDR(48Ztgj)BhSPz5;zOu_uqz@~oJ2*4ykZ zW+8jlP0}IAWQA}5-m1Jajm9>=F|v3#EIbceT)+}zkMt?Ob(|JgJgpRcF-dGA;3&ifKZC~yF9*=I|G-+>PAz>WId?a|7Q7d zT9E0S&eX`4uP zzjq;a+w6hwLVt%;Rg|@xYZfYV+T3Dq>gLk^dRPY#Ur-5(zzYQ{-w0=3^yxYI3)Wl< zXLjMg0yM@GB&i*anj`Er5-g#*?z9anMN2 z#-L)2IduSQO8(nZJYOunmSQ|Xu!E32$pEjfCsO6WdL55Pw!H=zMQ3_4qO2H!Nyo|& z_cS|4IjP1X7PhRgCq8g!GS)kfSDKBndMhS^Aph$uure>n-wc=V8;4LR4bQjng3l{|~X-hH7!- zCODkTDscqH6!s2Ij!E zU*_SD-;JusZ@qmQ=Kw#E6Mr-@4x5Z;o|lp627LI(-7_W8JE{h)a(Vq!wUtMDtmK+^ zPb%nelA8j7u;~9d1gT3pZ&fd!(6OpSCoQRhBrMLH3Biqwo{Eys?5~sAd6RNuH8Omy zm2H&1yff;FNVgoQT9X)IM=D12OF*{TZ*I?vnkY1Mq13lzDdp{rz~}yzYy_N)!&^83#KDJGWVb1SW3K^a_%Bj4b9X$mBA^WR*C+MjiArPEXt`v zff)uHx(Z#aiC5_?r8+&dj0XR=VfJxxnW`E8^=B#fgv9RZf-_W3&)*%WwnXq#3hm`O z^My1N>B34@@bcU@6(WeDc0EN0Kj zRLnyy=`~V>%aevB633;li7+gY{mD-Q@ch5_-5SW{ads?+ZxttIQ0^H_HfJ=bQBM*- zk=%jjfN77p>WC0NFn&{6pn`TvCHuKj%Hl{Seurx8r1F)Mi=RNEA+2Aea1wZy zcddtUWf%Bk8x~_3abXpjtJ9U+SN>peghbVg%Q5)>ugI0)@?zBSS#)V-tPbVUt9b8R zV7)avDzM%f67n$=46vK+BVeyRV23$ix%HzbD46UVsBAFkSfpqeB+M+VoWj_m%48y9 z;`R@l+dcwz{!%s(WQ!6|{$9d=Dw$Dq{DsIP_p_S&_I(tYf@49Q{K--^vhK(`cIOb5 zGHFCZDJwKltysLS=qZZ8DhiGe(lY5V4e{d;MPGHkplf|GAq$_9>$?EusoZi&oya;u zOWsN6q8;$5c;?_F&4SQ;(BAvgmp-GVXM0F5vK3a^VU3dW8Iw0HB72f|{|@Mfo!~^% zMbD-?!YGmyqc-N@o9tv%>MrX$E?E=>vqSM`<0_)Xoo*3cBa19Rjy6D?FnkiYKY8TI z=-donW^e9r3h#=9XRCCLwkW98A|_)i^eGs5^)rn?nWIpz$GE*~0=tq{ z`A`YuUZtnoJc)&WzjM)!z_?_Qy^zhp2%-~ddU^Le93?K|JF2!CrCZbA+OW_xSK!-> zqFwtLM2n&|U>hUk|{`P(&T1 zjL!F2bG{uE#=~y;LGp-x4K-)~_N5){r3P9a&+I>xGE~hcobx;hcicJW6rktk+mR=9GMz6Oq>KCLzfqeAP+R|t+Qxs= zk<$y%G34gmQNjOwC8jsX6Z@YQjh0rjQos0!sgVk25B~u)`>@#^iO^obI)Ds)OFfbE35c&nSC_I)Fc0mQ@bkax_7_uxFQ3 zZmmBdveh&Xl~KDTyd4(wG8i7JC?rFI0>->uOU9m@KLYwgSLkdta0THh+Y+Y18_}Z8 z%Agt67GS+%|Hen80`;R=T23sD$I=>6Lt}6GKFf}0_`^xZdH6L*U2OH<7m4>e|K%)g zw%`jp8#GbYp58Ayh-+K#tv&%u^0@2}Y^U$%YiacLs6*?NPKjhrZro*^&U0v|a{Dz} z*ZQ>F5s*m@zR~js1jSZ{()0nV+)>(QKRA`?>u#~;jEEbP;89h!XbCy;7LSdaNW{^y zrzqzQL{I^1&2ps^@Z^f_BN?Q=@2&H9x6=CKEW-upHSH*McYJqBKs?0pk|0J6>N0pZ z0A0!Q8akntr8glN;?$r+-8we`JM9^1mK!D|Mtk`^7U&4AwsyD-LuN79py%%nO0GP{ zA~Nh8(sBn!iDMRi#Xn_!zmX&45?r{plT>al#;ad-Cz~TEOT6wOQg?|nL2v$sqi~UH z+d!H4qvWof%NTNsigZ|@Gs{y|oWPrF*aD7dudvt6@yZJML2KH#bJyd!-w2(HOvjwk zsT|!yqL}@M<=jC;mPSJ)$Es)>G;xxJt2uj7NBS{G&Oad*NOf+)Z8VBP)LDDkvOk_c zYszG13ZSZw{e&=Y7W$qMbuB*r6N3Nbk%rWle44m71(-LJT>A#Z*Of^&Uf9+3H1(Yu z;<3gbWO^j2uY{?B^mVB7EtPhTW}J~dPcd$S=6gxoyiwL#D~&$dBEIwpR*-)`YB$-@ zmKu0FME(=P1#R!W-Nm$x3Ftg_iJ6*WkySthVTD zw{KiOatK_fp1MY~w{f7Pr@hQ+Jt-;^@#U_GUX+N=qR{R?j39k3RTE#LWC0H^o)MCs zE2YG1X&Q`Dhee^;<4mEpHC;~U(P_cDt>#NDPTXMGejN+2ptYj#gF!zQVn+@vXvzq|~7Fm`?tI0!&S;oE~9w zLQ^JQLjH?k_E%r~(!M;EEWwFVV<9Rs6j18&$PVTh>gwizmWP?-a77w(pwBG92|V5- zpivuG&PNgRL^jwJ2&z2mtvn;@*jZpDgf6@iAf#p_Quos1Pxb%1WmLf%Sx2-=)k3I| zjnpAz3nc9ZQg(L^yblYCQ{C&f^&XgmVk6PZ3Xe(vqAgUXSw-7z`4Fna}Yxh(M=+431YdW#xS>qa9J}O!n9JiLST9+>*gvkOtgu0X!-U*byd4AD+{39PAZVTWDS?)NheMAnO|bWSL{WE2JG8|17wewu2@NcodDF+uAZc6r}c$3m-Ug;&s`~zo@yhVN3 zM@zA>(L4}3*VA#m(vN?@`lkDRA2Ifel|+VsvFDLDpEJ#$sgYI7ru(hl6QWrDCp>4r zQMPUnci=mAIumhbrKG5WWh9c9W1X$NTKW?LP>A7Ph`Q$UaAb5^g@pnwoE|$J>YOHEEX`7hx)B=9nl!h?D8OU z+8$yy!@8iNc{wiVdTFzewz@IcgwCX_6C=Eg7Gwm)D|ZU{uj|3WP#9{8>uOn2CDMgJ z$CEU=ldnV$XEk%~vDjFv0etc6+y;^U2~RLgxl$x4=45hE56u!Ui_LU|Znav;wl!4o zKv`I4?DRL}(D8&fFWMeGHeveQL<}e1xkuajTT6831(LZCi}ziR5lDtb=mh;LaHE0K z?&d|8E$*Dpe<}?;j(T<0mT$HVe%#I7_#Xa*_{@mD-2A&Tcv^1*1Nc#aKmf2%^B?wf z4R%z4JFlE<+S4~X*vLTcj9}*2!OR)n8!vHzvo^0>Dn;}dMPLX8yEJKzG$NXmd927| zo;ArpWqTSbt!eZ0rBW%Zb(u&^Est_iiv6ez>K5qE{^G#cs;xR}Q7hD3tq8m>^C@zP zDm;$h(QOU>;dG1~uz2#b{gzIq62RH7?ZHM)+~9mZ>#d1Q<hTj;U@z?ZzA*UXcqphFbs_x{eJa}fj5rBZpFovF~m`S1?Z(exaPVA34~N(ir!#GhBWtzEgI$6R*i9K zZKjnu$xrc8?GU0n-(OfLQ(ahAyUTeq$kLqi>o2c{b7=}h^b({Ic9Vqe6O>YaR!eep zBY=I$NVVx4_dJni3Q+xBPMXr+CMAJECyty+qUuPoXh!QqxPl2zworj>W z!oE*HZ*YapMCkC&zI=7&R(~FJ6`@3Wm#YTrQ}pFA@ixa_5jfsB){cvkkv)Urcd{YP zBPha9D8kU`vTQbFEBoTRLIDETg+lKU(1AU?Qnr39qThrg$g~Z#ufxX6P@;v1RqSBL z|GHD~i9P*rZMFDq^?sGmhSvuWf^2igI#FMeb3~sBusn^jYtanNf+oO)`*G087nZ@Q zb~Ci0d0C2=^Nc&_cjmGCC=84{2=P=r9dv_|lGpG>sHy~0!2$8EXAlKREMt(=+|e?f z-Ls;eVq7PR(ym$yfjUe_dh%2D^f}u2CebgnHNg3|Pziu=USjWK8>Y6#YLJ3Ccrse zmO4>l))+fc91I72jF06bq*W51K4gp^dIIgbv{h;;aY_;?%+rNLV_}0 zmfX4;Aqz|W*NxUS-QQV9{RbI$V1V52)I~l_0Jlx>=oMi#0%$cot$q2eF|BM>u2^X_ z>#;9uzKFT>riqA)cN)bPBH)O&s}K3*Kk+_($-#_Vy5QQ(3T;o&NsPw=D0Yv6AagsTv2(Zh+=Js`X?!f8Bx`KpagmK6Y zH3KvpSBbVo@zd9X{vK-YwO>RNq2&gb8#Obs=fnR|O8L9!RIKOKB-H``9Ud_}O-~;> zb)i%rEVP@?|UO}YM7dPU+taMc#8<{TvXSWUmGoo3-d z)7Tnks8T_mEA#s0R-oJBod$}*jNX+9RH|~14zs(-qJcxe67eA8*_}qkDN>Kl>fqln zh6sEekB6rapBWR=gT>fZCS&Y5{RdHFV3rZ$sjHG_6qzhQ=2kNFrhGjZQttyd11Syh zQe(u?=t%2HLbOZ+vyE7mm~(nO4f(l~3rhdaGxym$WFHKxru;Pz$(K0IqMKHJS$jGM3abWwnU1iS?Fn2eLu zwfvQ<2|Dx3JfV)Kr;(03qZoFo!HFOuZOK4f#BwXk7ns2TEC2eJtdA4nsK0;v zV6`{=4^ICX8>|6SCtz+v-u`lDV6AiXcnmJV&k6SQ-TmMS*iiLT8 z`vvV;G{xFXZd;v%J*GH@vN(pCnP>!BYxy2K=~|iHObdB1l0`Q3;CQ2NPvncFt_#1D z43Z4W!Ev{@11C9r`A1bPwlw?Z4BMEy%FE5+x09~>xdIYzw)xJLGjiLUaj%O$FG@Hy zGSWqT8dCKM3MqCLjDZ<$v#S(}2wSX7^|7z+KXfBkf3fVFT;i0$s}yo2W@maEjG`kI zlS?-qy#LfrH`LtfIiiu|NnK6^akP&4jYf6Q-B*86NxP5e^NkAlg$=LMxfE?zxNU(` zF=Dqq6{2V5lUHKIoVV3KAw02XZ?kIe)+_|Fu39@pLO-J@<2Nd6ufmh_3yYZrQRKEZ~(VG7(+9 z{t`j8=r^eB4FDGeza+0etY`i=m;* zZvM0Fz$JdZylXhF;?`Xz)(_}D{sbqp)O+U4I@H1fVHls`v=WgDqT+u-NIf!4S)oH~ zAGc@UOb9Vk^}SRaEt3`aj((I`(p4Sqtf+j&BrAH$#Uxcto~qc0v-0A7L~^#Kz)BXW zFk%*Q+hl)2)Z_Pt2#WIq#-0e}hcy_T64%i;pDQ~^Bui(iJ>BIRo0oCx99NYXd$=5T zxh_U&&lpEP+tDOpYkkHD5#Ev)jx{6y`>XLD~NAQ(lneeMIf%mEk?Xs`TqUzzB9X1^AsLyr-YXIAR?|o zEK75-cVQT${z?saz1gh7NJ)YBJQTV$@2amrbM`pm7w?W}Wcvs$vQdnLBw?I&SZx zEGGi#y*B5OA4`}Y1l@x!E%dr_Sj)7GO#`>|>6bvu&bPXVUEZG(CFvuo$Gr2r%gOB- zerb{pXfi%-($ey5PMZLzzQxaC;5uy4#< zb-c6Fv)Oisp`^Y200i-v?k(gs=A$UV`UJ9;xAX)|u=0rJA(Jq#wsojh0Z?KH%l3qv zHuf9Y;$|tKbmu6>}so^wmhk43Ah~D`6mRfNQAi!t<_1QluKe9eH~(c znKf38HSi%R;HHNnCA!M0PwVt_=!A(a$jYCit$t?5esVN;uZT`$ZJoT|7cABh`oA+% z4)&4n3FVo^s~aN_2^+Hyl@}t(eHT+obX8}b7GeRW>^mdk`a_N>TtmZO zxGqCJ=om;SGN5iSTMblIHV`+gzgYUKNO5rP_V93v@ElbH5Z9PU6{xUE3Y*Gh?vMUc zzjq?vqg|9G+IfLQa3}V`csUV%&K`^q|G-E4{2%!6yf&k+7OkyKF)6ZPP<>UGW<GScjdk*4Zp|~1~&K{`N2^^o|M9{8h z9l;9QqmKkykvZ2gd^-DS&7s|FPL@wKQG7TE%K?m$XXsVAB+8v+{A%U90({=O`cX)X#j7be~x6$=|}BG zFEvy4uitZu&exFplre+kHU}rm_It)bc0qrf7~l5`pis1bRTiH5l39aZ`~g^AHX5XN zH;JOJT2JJ!?gdA|8^=O}Jj8OHo@^qH;%9L^w|%?#s2LJ`nrDUQ-RE?0@kJ8oR7>Vb zAMTOsOzevm2K5xyqHdu<)56OL_ojWuxcDCG=Ge{8vzkG0sEFiN7{ssIUY%>{DrkrX zmQfC8MEo9Vt)2Nm0o92NB{;=EWf(_t8co2S{I7sa9W=~d`Brrf_9O)I4t4(P?7sDm z4UnBN3dn2t4p;bfQqSvy0r;N~UL=V7IJ}X$MccfQSrscT|9Ok)Pl(+rZ!_NRpAfA* z=W^#s3ycGv!bCA7KJ6d0Gh#FjLe)*)WN<@UY)BQ0xF>I!*oDX`DQ>L=+l%u#tiwJ1 zo%OvOpOh)O+cU1_R}?8x;iEy>%mi{>!z&>aLr!CfL~lRYvrsXEWcQOy1hS%}qJ_RL zmW#ZCC;lq1LHK0kVB1FRZp9T}VECO407F@%`!~=XGWQ{-J*^`t*L%3aV~X%8K(gJ< zQ1$-qW26)7mCHngKV=EuEmMo`Kl;JE$>|!TYFT)W(D+NaFMx7;)x%;_;)MYb`^oq} zA=v0Ye1Pz8!RLNs;&+`tt7uL>PJw*EWu@fPFhD4}WH4&|1F6UvQ*j^Lw`O5>YEGiA zU>Mj)%Oo{qH%Jiyf03E%&J?lT)#DMe2j}aXLFjYY>WopzJSpM>+bK~cJ}%U)@s9UJ zk9u*kCKNazcXAC>G2+s;A&R93G4Qf(Gd4!*$2rP1?Cu8XCl!r(-L#gr{6wEIvV^x5 z9rDDb;7C|JO>XRAy~+h`j2IiNGBxYRpZN)pJ^u;e?{dNEnZ`RWHN~M#fEfPlz)dZH zITc2J71rsXs%1i8{U4erd}u<2hI8l5fk88LjG*W_!*ZVj*V;uHfc*kO9+@au8^L*#e(m_q$X5{E6dt+dP4l&5gOM53{ipb>^P@}ABF`aS z#CI!SkaCJ|yY_$SRy*5vO<$ud5WTfxOheoIQwWMC z?s8h7Wu9r|i=@n2Hej*$P|03}o)BQAuhz+Qx;)@tr~PLcA1fv&594~ff1N1gwK+z! z?iyZAn$AGtb?Vvs(XhPsG1H8nE14`kJ?*5g3fM)b44bZL*emPAdJhLih6It5A_zv2Pe z?%e^(pk8?#s6cE|pspGZN>w_RA+iu1rgqOqX3yS;=Lbh|k8i}gi$8{=8=(-6$#jC& z7@rb_^bK&QM5f687SA6W6svS3LnJNyt{y&)mp~7Jk&GgNxQ!%c9SaNZ9iGu7-dqJE zEP6@if7a5lgRnChhh)S`m_d8fO#WtQ9VQB~-HXkpg_v;OY2qFrQ2dNKhoAMO)DJYu z@G20r!L|LMYn$m+FN;=vx2{hqEuqJ(VNMK{fbdAglV&EBvH`QlvquRyG8XpXv{OqkAxz!QIlr{-Bz@d}H=|BmstppBfW!Vj2J!<{L zX$n)(1|2-Rg1w*fZT4Owy|kIqFSQ`<6QW)=-!Q3rHH&F;prKPImMiBFN2vGI=|#S_ zZ|5E2J7;^8Yotq#6{2!#-7*b4R&%kR5a}HWpSiB#exQ+_LLBB0f8zmmL4cmCkGb(b zia3ij)s=^phaDs=Pvhh1VW+AIy20n&UL`#vJhJLw&{6uJRmN^S8uAl@Cx9-)?hJj2 zLUjAlnwU_Z!?i66LY)oyCCobh9>Gw(r!(+kN8P8>eX2>TcLH(-xX;3CV3033oxgO6 z?(%(`2Iu8W@H;;6r*P~K{IlS>XW z-H*hB8+|J&@$`MHLOIJCaPgH7Oko?8e3d$wPobE~l4!fC=InSJCbd*LQaj~VX)w*eZLXRlG^#%gnK$%O*udeu4-HgA@X zt(P@60407T2V$IojNtOai9$ffXw5oSP_sX{>djMG4&`X%j(vuunxh9YvR-%&rUnIZ zgne$-epQw`s;D5#9&S@Tyw6qpD(xs)rD@|jMUxAY|41@DO_GN*(!qw{+Z<1Stz(?| zcdD@w`P}6lNh)JU(QuD!yD7u!$!oJO0*25Joi(Ek>9%Ic&SP!a`5(Xxist z$jnqpA$FuU76dorJePU$FWBYjO;9u9!i`Xt)?^##D3$eY#!;paD`4CyOE&W*dnLA# zbgK7B2*p`~6fLLu&4K0wxJ?mpxYJg&bMqs(zzBz@hg9KL%9{PGx`%{zy>j1jFt*in zy`Eek9^ilF`egTZ`B5wC6^3n!b18SnlZGFMGBjSS-W_$H@oj%Ep5m359FYN}J-4N< zna-sic|6LE@cb(SUGB}4P z*I0%(!`TvMg6OJ{Gz|$Vx_I=19X_DEE|?8{UfU1N78|Tutc1rJ@e=}CKP+|bwLf;DvtUaNq*UO$U!48(j= zYE3aA4#tYRe&yw6TDiz766O*?sS+_f0;PI~^_JZYKx0#4(GnZQt)dDlGRJqU0?BO}L6wI(fH&b$ zF7>k6h9>3+IzeXQi^pi+De+Xk7tIl1ms3nGR3G34v#>d^B9&G-=tN8~)|o5{TN)u{ ze5r7o=P;ZP(3`6J!pb`C;D3;hpHR<*C(~Tsq?=}MoWBk;Ce2Z9C08PD`;VLsewVdO zCR;ezQ1R(&j4cVYNwGlqX?~kjdz+;KOF&y&; zQWt+X^)%|F^o!9<79rwFTnn}|lD=f2aOC?WX5335WBmnvU}HT1Lz0~@ux3bYDf*ap zS1&QwX|P<|RY@ngv#<_~u~z+xMsvBPOmJ8F>J^P9r9wncMnQ>##>|3tzkBzYkXl;F zwA%J}weJzH>;AIMvy$o>B;N)ikoqOYnNb%P{0D5xqD9sn4gE>10_Lqfo$nDf8Vrq^ zS5!Mn$&LZ8LDZ6E;*hy|1cwz^f7|UB1r00Cwb9T{vWy|Oz!flkBnIO7x@)I20TQ5T znpnBar0FLZJrp(+anS!8dr)quP+4aI9k@RClMWM!l-_niP_LkJ;O5IRqwdf}Ni+fQ z98ERnl3+d@d75fV6z#Tw(Pf17my^(`$s|&UlG#2!p#B!BTu-1A+D(=a5rCCJ&-6G< ztQ<`}w%G9>h}+_qH=|xJJ{o^q(cN!%HIEx5`G<)F2{%7}%nXv)l9Yn^2elWpyV@>4 zAP7I^R;2fD0U?NQSf2;<2*-^DyV>G zTQ{}rL%YG3l;75TQi|D3<)oRvt@*3qro~{S8h|;l5drpbBm2G~!7>zXl!DXC$`Wa8 zM9|kmU`b`9#K0*0PzQQB*`~NQ1NGeD#JyV(69Qhe57^j^(})!9;@hCF^wlBPEDJ{q5Kpfj zykiW5-SAgu8<_K~0d}~Lr=!D62p#A)F|4lA)+#I0&;TN0LYY4qBpwJU?O0I*ql@5Q zQ1bIP=&X@Hp6GR!mz^68(NmcaE1ywv27rdLc{kS#9HaW^WEqy9=!k$-78CWO=xM!4Pfm&V_b9gVUfdigop4#e{8<% zTK!5_pvd$(+C-|&Idg_`=`kt5=A_Tr z{4FH8TGb|mt43k+mFfN@rQf)A+X{zhxIT*4>Qad_Kl^V1iCa}cUiWs)_20dJq-fDf1 z*8N?Y$tjCkjXrT}kPyS4>Bqlh<4`QVKGs<4K(Eat4@-BBEf+HF*rTg}snd;uRTxhc z&HHXe_X{jn7+a2o@{ZLBDrnen)bjECMOD=$F z3J}znH%${q=!45_Mo=;PA^&IT#1u=GOoo7V=A4UC$f@Mjze||qH>*pPn)pZF;U`$9 zj3zC7)c*_ca8H)%G(40j_rwchx!U>U9=?KsS@y~LAl~2BBFm0!q^IxM zYiC(CD*z9{t4(l({}mx(8(%iA2vN9!}VM?#1=TF`NaPKcrB}tMa=)ok@er7_e z8SE-MI;7+ODD&3|b^0uVth9Yw2y8G=kR=1D`t~p1Xu{BSVu&97;mi(X8-4107_b zcep9S0f$i-pK^)u-7CWV1Dw3*-OQUl5nA{%Q$gd%!80dgxHb>sn~Y7(?>oF|1bxbd z^LpW69j7?oIkL;GJkU`2)DPc~s$v*KAnQt5TBbHIKE1bq1z(3jsk^Dm_8m zIs?mO1;E=}5tAL6cNh!rZv5V&h&Ug#8p_sjRka6xNGB)`Kt8Nb9?=@xK)}73V$-Ou z`#`g8(~vq@l|6!0-OyJY{u5%&nYr*ML;%+_ACl}x(LMU7g2IBA3{gzsnS&%3-d-pq zksXMCD3Uvb#dcX{T5e+HqB?o>nl9IL&9YKP@S4!w(}&zYNn*I?%h*v=^}AS?mbL^Z z>jfKqVrrC@k&F3xPg(Ejhs%rT6c%_kdlMh-?$blAUgI-{AdxKRUEdT_726OE>w`!j z&D!=Dj}qFj-$yXWh2yi^j5$hQcw$S5e_FQ||uE2)!8e(utbJZ>awh zE9_uvVc#>f%REN*yUHi5Uio&NJ70aFTu_wng29u-nAPqKX8roByM?XorY2zRI$A)a z=Vl+JIAoT?rn_H7wstm=ZveplNQWe?4)T`2_2q9mmiq22RQ4$JCj<@t!PN!n9NEq; zU+ff+syuScQ$MH7CBUfm%|NfY2A|~a{mI=xH*g|SHHR5F8j%AFY}BZmZ||C{^0_O` z%4ZJJ#s5qV>yF)q-YBGzXR#%4o&Nl;&iLIABb_}eH$uTLhP9=b`C8?)-4+^jGF3Y2 zeqZKb4>exItZC@_%tr*WjVr*|@nh#UTrS zq!&M+mj+R9Ht**Lfr&zYISG^8x7XEfnK_=`B0?#b5zGdIlE`WsSD=6WR(9mDJ?SNn zB3@sjmC0*Rm7=SMlyrSDw5;OLp2xqNEvK*~nLtgkFfhInKDTgpV*~|F7U3hn zc@Ggi{;mp7Ut3w*a?tY~eM44LvSzX(%B)zQ=(9?*Kt{fkr-01nnMZ=*D@T%;PdA-* z1qdyPIc} zn8xa{$Nqm=>`r zln~g>*B`KcFzUSe0ML`#YsPC(os7DU0Ab4B@v8`tuO^V&q_dZ>X~=#;;D}*2wq6Hx zR!z1CF>tw62Snb~F6qZJtbB}MN$a;gTK@~G0(=W!BK1}JHI@Qct=(@He-f`_J7$7F zcxmymjaqlmA=NNa)-{QNS%0^Rc-W}s9jQeWusLQapPL`HKy+2bRbY{?l_4TUW{QT( zArxaQcc)&}Zx-q}GapKxGk{^R9@{hmwFBSxSt<8v%tX^&7Io(ml~o0A1?|8x5apN$ z-QfLaQ3cn)9BC&enhoa6GL0P_=o8ZhSG9j`DLln{)tQ)9t1bER54|$&BY|&Kh7U?- z43k`+$j>EIzo0lekG<}{l>pnpkAK;LG{h?-`Dw`20y|iVb3rQZ%oOaxx4j~SUy*IT z(F6f;{Wy&OiOZo0{PSLEy40Odf`}T42LU9WUHj%F`ZEv;i0&!n6k*q}wBt)Cc}PwU z5c2^`|A37-MGp2T;4K^8s{pW~WrOl50tri{f0?OL)pBCmV0FMpE}8=BZw>Aa6ZhUX z#m6&&82>4XS__h;00q#<{H)=2%Iy}uR3*GkQraC5S{ zC9BPXFVM1_Ove2n|Am2V)^k-rELV1H^6`<$-^Rgv{jtfy?}th7ofTpFb-0TI`%<8c zkz#-RTpUZmQyz;C;_=SszY&?JFrqTBzuR6|7AfC5pZtc!m;?fHPU^vT&fUTXr`m&m$RE`sY%zEsQK ze+Z~49y3Zu`v>oKK}kvIhonqsX#X`}piAF~bD!jGzw$th?6riI?E-z2`fq`BewL(F I($Crd2U~y9zW@LL literal 0 HcmV?d00001 From 87217378978d355b51813478ebd0788ff22621c1 Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sat, 9 Dec 2023 12:28:59 +0100 Subject: [PATCH 9/9] updated packages --- package-lock.json | 12883 +++++++++++----- package.json | 26 +- src/App.js | 68 +- src/components/Gameboard/Dice/Dice.jsx | 2 +- src/components/Gameboard/Gameboard.jsx | 14 - src/components/Gameboard/Map/Map.jsx | 48 +- src/components/Gameboard/Map/canPawnMove.js | 3 +- .../Gameboard/Map/getPositionAfterMove.js | 6 +- .../LoginPage/AddServer/AddServer.jsx | 4 +- src/components/LoginPage/LoginPage.jsx | 1 - .../LoginPage/NameInput/NameInput.jsx | 12 +- .../LoginPage/ServerList/ServerList.jsx | 6 +- .../AnimatedOverlay/TimerAnimation.js | 2 +- .../Navbar/ReadyButton/ReadyButton.jsx | 4 +- src/constants/pawnImages.js | 4 +- src/images/readme1.png | Bin 127023 -> 417242 bytes src/index.js | 11 +- 17 files changed, 8766 insertions(+), 4328 deletions(-) diff --git a/package-lock.json b/package-lock.json index b39a8bf..3d5e6e2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,22 +8,24 @@ "name": "mern-ludo", "version": "0.1.0", "dependencies": { - "@material-ui/core": "^4.11.3", - "@testing-library/jest-dom": "^5.11.9", - "@testing-library/react": "^11.2.5", - "@testing-library/user-event": "^12.8.3", - "axios": "^0.21.1", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.14.20", + "@testing-library/jest-dom": "^6.1.5", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", + "axios": "^1.6.2", "prop-types": "^15.8.1", - "react": "^17.0.1", - "react-beforeunload": "^2.4.0", - "react-dom": "^17.0.1", + "react": "^18.2.0", + "react-beforeunload": "^2.6.0", + "react-dom": "^18.2.0", "react-loading": "^2.0.3", - "react-router-dom": "^5.2.0", + "react-router-dom": "^6.20.1", "react-scripts": "^5.0.1", "react-transition-group": "^4.4.5", - "socket.io": "^4.5.1", - "socket.io-client": "^4.5.1", - "web-vitals": "^1.1.0" + "socket.io": "^4.7.2", + "socket.io-client": "^4.7.2", + "web-vitals": "^3.5.0" }, "engines": { "node": "10.16.0" @@ -37,6 +39,11 @@ "node": ">=0.10.0" } }, + "node_modules/@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" + }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -1943,9 +1950,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1953,15 +1960,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", - "dependencies": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, "node_modules/@babel/runtime/node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", @@ -2288,10 +2286,162 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, "node_modules/@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", @@ -2386,6 +2536,40 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "dependencies": { + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "dependencies": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "dependencies": { + "@floating-ui/dom": "^1.5.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -2496,48 +2680,29 @@ } }, "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2552,6 +2717,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2567,6 +2734,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2577,20 +2746,44 @@ "node_modules/@jest/console/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/@jest/console/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2599,41 +2792,43 @@ } }, "node_modules/@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "optional": true, + "peer": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -2644,33 +2839,39 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@jest/core/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2685,6 +2886,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2700,6 +2903,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2710,20 +2915,196 @@ "node_modules/@jest/core/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/@jest/core/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/core/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/@jest/core/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2731,150 +3112,87 @@ "node": ">=8" } }, + "node_modules/@jest/core/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^27.5.1" + "jest-mock": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "optional": true, + "peer": true, "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/environment/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/environment/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/environment/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/environment/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/environment/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2889,6 +3207,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2904,6 +3224,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2914,20 +3236,44 @@ "node_modules/@jest/fake-timers/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/@jest/fake-timers/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/@jest/fake-timers/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/@jest/fake-timers/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -2936,138 +3282,55 @@ } }, "node_modules/@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "optional": true, + "peer": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/globals/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/globals/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/globals/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/@jest/globals/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/globals/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "optional": true, + "peer": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -3078,33 +3341,39 @@ } } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@jest/reporters/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3119,6 +3388,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3134,6 +3405,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3144,28 +3417,129 @@ "node_modules/@jest/reporters/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/reporters/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3173,79 +3547,86 @@ "node": ">=8" } }, - "node_modules/@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "node_modules/@jest/reporters/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, "dependencies": { - "@sinclair/typebox": "^0.24.1" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "optional": true, + "peer": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "optional": true, + "peer": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" + "graceful-fs": "^4.2.9" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "optional": true, + "peer": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/test-result/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { + "node_modules/@jest/test-sequencer/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3256,10 +3637,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/test-result/node_modules/chalk": { + "node_modules/@jest/test-sequencer/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3271,10 +3654,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/test-result/node_modules/color-convert": { + "node_modules/@jest/test-sequencer/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3282,23 +3667,115 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/test-result/node_modules/color-name": { + "node_modules/@jest/test-sequencer/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, - "node_modules/@jest/test-result/node_modules/has-flag": { + "node_modules/@jest/test-sequencer/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/@jest/test-result/node_modules/supports-color": { + "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@jest/test-sequencer/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3306,20 +3783,6 @@ "node": ">=8" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "dependencies": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, "node_modules/@jest/transform": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", @@ -3446,24 +3909,29 @@ } }, "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "optional": true, + "peer": true, "dependencies": { + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -3475,9 +3943,11 @@ } }, "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3493,6 +3963,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -3503,12 +3975,16 @@ "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -3517,6 +3993,8 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3581,36 +4059,30 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, - "node_modules/@material-ui/core": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz", - "integrity": "sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==", - "deprecated": "You can now upgrade to @mui/material. See the guide: https://mui.com/guides/migration-v4/", + "node_modules/@mui/base": { + "version": "5.0.0-beta.26", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz", + "integrity": "sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.3", - "@material-ui/system": "^4.11.3", - "@material-ui/types": "^5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" + "@babel/runtime": "^7.23.4", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3618,69 +4090,99 @@ } } }, - "node_modules/@material-ui/styles": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.3.tgz", - "integrity": "sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==", - "deprecated": "You can now upgrade to @mui/styles. See the guide: https://mui.com/guides/migration-v4/", + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.20.tgz", + "integrity": "sha512-fXoGe8VOrIYajqALysFuyal1q1YmBARqJ3tmnWYDVl0scu8f6h6tZQbS2K8BY28QwkWNGyv4WRfuUkzN5HR3Ow==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/material": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.20.tgz", + "integrity": "sha512-SUcPZnN6e0h1AtrDktEl76Dsyo/7pyEUQ+SAVe9XhHg/iliA0b4Vo+Eg4HbNkELsMbpDsUF4WHp7rgflPG7qYQ==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "^5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.4", + "@mui/base": "5.0.0-beta.26", + "@mui/core-downloads-tracker": "^5.14.20", + "@mui/system": "^5.14.20", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@types/react-transition-group": "^4.4.9", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, "@types/react": { "optional": true } } }, - "node_modules/@material-ui/system": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.3.tgz", - "integrity": "sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==", - "deprecated": "You can now upgrade to @mui/system. See the guide: https://mui.com/guides/migration-v4/", + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/@mui/private-theming": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.20.tgz", + "integrity": "sha512-WV560e1vhs2IHCh0pgUaWHznrcrVoW9+cDCahU1VTkuwPokWVvb71ccWQ1f8Y3tRBPPcNkU2dChkkRJChLmQlQ==", "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.4", + "@mui/utils": "^5.14.20", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -3688,36 +4190,129 @@ } } }, - "node_modules/@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", - "peerDependencies": { - "@types/react": "*" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", + "node_modules/@mui/styled-engine": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.20.tgz", + "integrity": "sha512-Vs4nGptd9wRslo9zeRkuWcZeIEp+oYbODy+fiZKqqr4CH1Gfi9fdP0Q1tGYk8OiJ2EPB/tZSAyOy62Hyp/iP7g==", "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.4", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } } }, + "node_modules/@mui/system": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.20.tgz", + "integrity": "sha512-jKOGtK4VfYZG5kdaryUHss4X6hzcfh0AihT8gmnkfqRtWP7xjY+vPaUhhuSeibE5sqA5wCtdY75z6ep9pxFnIg==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@mui/private-theming": "^5.14.20", + "@mui/styled-engine": "^5.14.19", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/types": { + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", + "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.20.tgz", + "integrity": "sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -3827,6 +4422,23 @@ } } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@remix-run/router": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -3907,24 +4519,30 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "node_modules/@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "optional": true, + "peer": true }, "node_modules/@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "optional": true, + "peer": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "optional": true, + "peer": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@socket.io/component-emitter": { @@ -4151,21 +4769,21 @@ } }, "node_modules/@testing-library/dom": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.30.0.tgz", - "integrity": "sha512-v4GzWtltaiDE0yRikLlcLAfEiiK8+ptu6OuuIebm9GdC2XlZTNDPGEfM2UkEtnH7hr9TRq2sivT5EA9P1Oy7bw==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.4", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/@testing-library/dom/node_modules/ansi-styles": { @@ -4233,23 +4851,43 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "5.11.9", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz", - "integrity": "sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz", + "integrity": "sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==", "dependencies": { + "@adobe/css-tools": "^4.3.1", "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^4.2.2", + "aria-query": "^5.0.0", "chalk": "^3.0.0", - "css": "^3.0.0", "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", "lodash": "^4.17.15", "redent": "^3.0.0" }, "engines": { - "node": ">=8", + "node": ">=14", "npm": ">=6", "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } } }, "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { @@ -4266,6 +4904,14 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@testing-library/jest-dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -4294,16 +4940,6 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@testing-library/jest-dom/node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "node_modules/@testing-library/jest-dom/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4312,24 +4948,6 @@ "node": ">=8" } }, - "node_modules/@testing-library/jest-dom/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "node_modules/@testing-library/jest-dom/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -4342,30 +4960,28 @@ } }, "node_modules/@testing-library/react": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.5.tgz", - "integrity": "sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==", + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", + "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", "dependencies": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": "^18.0.0", + "react-dom": "^18.0.0" } }, "node_modules/@testing-library/user-event": { - "version": "12.8.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", - "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", - "dependencies": { - "@babel/runtime": "^7.12.5" - }, + "version": "14.5.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", + "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", "engines": { - "node": ">=10", + "node": ">=12", "npm": ">=6" }, "peerDependencies": { @@ -4389,9 +5005,9 @@ } }, "node_modules/@types/aria-query": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz", - "integrity": "sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" }, "node_modules/@types/babel__core": { "version": "7.20.3", @@ -4447,11 +5063,6 @@ "@types/node": "*" } }, - "node_modules/@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" - }, "node_modules/@types/connect": { "version": "3.4.37", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", @@ -4475,9 +5086,12 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/eslint": { "version": "8.44.6", @@ -4571,15 +5185,6 @@ "@types/istanbul-lib-report": "*" } }, - "node_modules/@types/jest": { - "version": "26.0.20", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz", - "integrity": "sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==", - "dependencies": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, "node_modules/@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", @@ -4619,9 +5224,9 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "node_modules/@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/q": { "version": "1.5.4", @@ -4648,18 +5253,21 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==", + "node_modules/@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", "dependencies": { "@types/react": "*" } }, - "node_modules/@types/react/node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" + "node_modules/@types/react-transition-group": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "dependencies": { + "@types/react": "*" + } }, "node_modules/@types/resolve": { "version": "1.17.1", @@ -4724,14 +5332,6 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==" }, - "node_modules/@types/testing-library__jest-dom": { - "version": "5.9.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", - "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", - "dependencies": { - "@types/jest": "*" - } - }, "node_modules/@types/trusted-types": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz", @@ -4746,9 +5346,11 @@ } }, "node_modules/@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "optional": true, + "peer": true, "dependencies": { "@types/yargs-parser": "*" } @@ -5359,15 +5961,11 @@ } }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/array-buffer-byte-length": { @@ -5533,17 +6131,6 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, "node_modules/autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -5600,11 +6187,13 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/axobject-query": { @@ -6327,21 +6916,18 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/co": { @@ -6431,11 +7017,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -6601,6 +7182,122 @@ "node": ">=10" } }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6836,15 +7533,6 @@ "node": ">=0.10.0" } }, - "node_modules/css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "dependencies": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, "node_modules/css-what": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", @@ -7018,9 +7706,9 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" }, "node_modules/csstype": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz", - "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -7061,18 +7749,51 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "engines": { - "node": ">=0.10" + "node_modules/dedent": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "optional": true, + "peer": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/deep-is": { "version": "0.1.4", @@ -7216,11 +7937,13 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "optional": true, + "peer": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { @@ -7267,9 +7990,9 @@ } }, "node_modules/dom-accessibility-api": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz", - "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==" + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" }, "node_modules/dom-converter": { "version": "0.2.0", @@ -7280,19 +8003,14 @@ } }, "node_modules/dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" } }, - "node_modules/dom-helpers/node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - }, "node_modules/dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", @@ -7322,6 +8040,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", "dependencies": { "webidl-conversions": "^5.0.0" }, @@ -7423,11 +8142,13 @@ "integrity": "sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA==" }, "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "optional": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sindresorhus/emittery?sponsor=1" @@ -7455,9 +8176,9 @@ } }, "node_modules/engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "dependencies": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -7467,49 +8188,29 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", "engines": { "node": ">=10.0.0" } @@ -7522,26 +8223,6 @@ "node": ">= 0.6" } }, - "node_modules/engine.io/node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/enhanced-resolve": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", @@ -7630,6 +8311,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -8462,46 +9162,28 @@ } }, "node_modules/expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/expect/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -8516,6 +9198,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -8531,6 +9215,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8541,28 +9227,44 @@ "node_modules/expect/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/expect/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/expect/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/expect/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expect/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -8819,6 +9521,11 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -9036,9 +9743,9 @@ } }, "node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -9452,19 +10159,6 @@ "he": "bin/he" } }, - "node_modules/history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "dependencies": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -9751,11 +10445,6 @@ "node": ">=10.17.0" } }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, "node_modules/iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -9860,14 +10549,6 @@ "node": ">=0.8.19" } }, - "node_modules/indefinite-observable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz", - "integrity": "sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==", - "dependencies": { - "symbol-observable": "1.2.0" - } - }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -9916,6 +10597,21 @@ "node": ">= 10" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -10095,11 +10791,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" - }, "node_modules/is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -10542,19 +11233,22 @@ } }, "node_modules/jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/core": "^27.5.1", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -10566,45 +11260,26 @@ } }, "node_modules/jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-changed-files/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-changed-files/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10619,6 +11294,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10634,6 +11311,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10644,20 +11323,44 @@ "node_modules/jest-changed-files/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-changed-files/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-changed-files/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-changed-files/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10666,61 +11369,43 @@ } }, "node_modules/jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10735,6 +11420,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10750,6 +11437,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10760,33 +11449,59 @@ "node_modules/jest-circus/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "node_modules/jest-circus/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -10794,10 +11509,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10806,28 +11530,29 @@ } }, "node_modules/jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "optional": true, + "peer": true, "dependencies": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" }, "bin": { "jest": "bin/jest.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" @@ -10838,33 +11563,12 @@ } } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -10879,6 +11583,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10894,6 +11600,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10904,20 +11612,97 @@ "node_modules/jest-cli/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-cli/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10926,74 +11711,84 @@ } }, "node_modules/jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "optional": true, + "peer": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { + "@types/node": "*", "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, "ts-node": { "optional": true } } }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/jest-config/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11004,10 +11799,67 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "optional": true, + "peer": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11023,6 +11875,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11033,41 +11887,166 @@ "node_modules/jest-config/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/jest-config/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-config/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/jest-config/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -11075,10 +12054,29 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/jest-config/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11086,24 +12084,42 @@ "node": ">=8" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/jest-config/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">= 10.14.2" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11115,9 +12131,11 @@ } }, "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11133,6 +12151,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11143,20 +12163,61 @@ "node_modules/jest-diff/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11165,58 +12226,41 @@ } }, "node_modules/jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "optional": true, + "peer": true, "dependencies": { "detect-newline": "^3.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11231,6 +12275,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11246,6 +12292,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11256,41 +12304,59 @@ "node_modules/jest-each/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-each/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/jest-each/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -11298,10 +12364,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11326,6 +12401,36 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -11341,10 +12446,26 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dependencies": { "@types/yargs-parser": "*" } @@ -11402,6 +12523,37 @@ "node": ">=8" } }, + "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-environment-jsdom/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-environment-jsdom/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11414,48 +12566,29 @@ } }, "node_modules/jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11470,6 +12603,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11485,6 +12620,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11495,20 +12632,44 @@ "node_modules/jest-environment-node/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-environment-node/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-environment-node/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-environment-node/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11517,11 +12678,13 @@ } }, "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "optional": true, + "peer": true, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { @@ -11663,6 +12826,92 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-jasmine2/node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-jasmine2/node_modules/@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -11678,10 +12927,26 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, + "node_modules/jest-jasmine2/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/jest-jasmine2/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, "node_modules/jest-jasmine2/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dependencies": { "@types/yargs-parser": "*" } @@ -11731,6 +12996,28 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/jest-jasmine2/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/jest-jasmine2/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -11739,161 +13026,7 @@ "node": ">=8" } }, - "node_modules/jest-jasmine2/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-jasmine2/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-jasmine2/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "dependencies": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-leak-detector/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-matcher-utils/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/node_modules/jest-diff": { + "node_modules/jest-jasmine2/node_modules/jest-diff": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", @@ -11907,7 +13040,22 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "node_modules/jest-jasmine2/node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", @@ -11915,42 +13063,21 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "node_modules/jest-jasmine2/node_modules/jest-matcher-utils": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util": { + "node_modules/jest-jasmine2/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", @@ -11969,33 +13096,304 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { + "node_modules/jest-jasmine2/node_modules/jest-mock": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/types": "^27.5.1", + "@types/node": "*" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "node_modules/jest-jasmine2/node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", "dependencies": { - "@types/yargs-parser": "*" + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-jasmine2/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-jasmine2/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "optional": true, + "peer": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "optional": true, + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12010,6 +13408,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12025,6 +13425,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12035,33 +13437,41 @@ "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -12069,10 +13479,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12081,44 +13500,26 @@ } }, "node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "jest-util": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12133,6 +13534,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12148,6 +13551,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12158,20 +13563,44 @@ "node_modules/jest-mock/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-mock/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-mock/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-mock/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12224,103 +13653,27 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "optional": true, + "peer": true, "dependencies": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, + "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-resolve-dependencies/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve-dependencies/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve/node_modules/@jest/types": { @@ -12411,63 +13764,71 @@ } }, "node_modules/jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "optional": true, + "peer": true, "dependencies": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/jest-runner/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12482,6 +13843,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12497,6 +13860,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12507,20 +13872,217 @@ "node_modules/jest-runner/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-runner/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runner/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/jest-runner/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "optional": true, + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12528,65 +14090,87 @@ "node": ">=8" } }, - "node_modules/jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "node_modules/jest-runner/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, "dependencies": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/jest-runtime/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12601,6 +14185,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12616,6 +14202,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12626,20 +14214,196 @@ "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-runtime/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "node_modules/jest-runtime/node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12647,6 +14411,20 @@ "node": ">=8" } }, + "node_modules/jest-runtime/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/jest-serializer": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", @@ -12660,64 +14438,70 @@ } }, "node_modules/jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "optional": true, + "peer": true, "dependencies": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/jest-snapshot/node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -12732,6 +14516,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -12747,6 +14533,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -12757,63 +14545,127 @@ "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-snapshot/node_modules/diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "node_modules/jest-snapshot/node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-snapshot/node_modules/jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "node_modules/jest-snapshot/node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "dependencies": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -12821,10 +14673,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -12832,6 +14693,20 @@ "node": ">=8" } }, + "node_modules/jest-snapshot/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -13035,30 +14910,6 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -13070,388 +14921,32 @@ "node": ">=8" } }, - "node_modules/jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "dependencies": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "dependencies": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jest-watch-typeahead/node_modules/emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "dependencies": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "dependencies": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "dependencies": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/jest-watch-typeahead/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "optional": true, + "peer": true, "dependencies": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -13466,6 +14961,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -13481,6 +14978,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -13491,20 +14990,44 @@ "node_modules/jest-watcher/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true, "engines": { "node": ">=8" } }, + "node_modules/jest-watcher/node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -13617,6 +15140,39 @@ } } }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -13683,94 +15239,6 @@ "node": ">=0.10.0" } }, - "node_modules/jss": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz", - "integrity": "sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "indefinite-observable": "^2.0.1", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/jss" - } - }, - "node_modules/jss-plugin-camel-case": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz", - "integrity": "sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.6.0" - } - }, - "node_modules/jss-plugin-default-unit": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz", - "integrity": "sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "node_modules/jss-plugin-global": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz", - "integrity": "sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "node_modules/jss-plugin-nested": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz", - "integrity": "sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0", - "tiny-warning": "^1.0.2" - } - }, - "node_modules/jss-plugin-props-sort": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz", - "integrity": "sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "node_modules/jss-plugin-rule-value-function": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz", - "integrity": "sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0", - "tiny-warning": "^1.0.2" - } - }, - "node_modules/jss-plugin-vendor-prefixer": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz", - "integrity": "sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ==", - "dependencies": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.6.0" - } - }, - "node_modules/jss/node_modules/csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -13968,9 +15436,9 @@ } }, "node_modules/lz-string": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "bin": { "lz-string": "bin/bin.js" } @@ -14121,19 +15589,6 @@ "node": ">=4" } }, - "node_modules/mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "dependencies": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - }, - "peerDependencies": { - "prop-types": "^15.0.0", - "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/mini-css-extract-plugin": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", @@ -14405,6 +15860,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -14904,11 +16374,6 @@ "node": ">=4" } }, - "node_modules/popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -16191,49 +17656,29 @@ } }, "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, "engines": { - "node": ">= 10" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -16294,6 +17739,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -16307,6 +17757,23 @@ "node": ">=6" } }, + "node_modules/pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "optional": true, + "peer": true + }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -16412,12 +17879,11 @@ } }, "node_modules/react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" }, "engines": { "node": ">=0.10.0" @@ -16440,15 +17906,11 @@ } }, "node_modules/react-beforeunload": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.4.0.tgz", - "integrity": "sha512-62n4aInZeZ3uf4Gx1rKvUjv0OoIZpeGVgnHtuMLKxNbDZz+gpsC9VyW7uEPyLHPTWqbP2UebIZa1t0K/I6S9/Q==", - "dependencies": { - "prop-types": "^15.7.2", - "use-latest": "^1.2.0" - }, + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.6.0.tgz", + "integrity": "sha512-aKrGaRNc7fZQlDnmSYrXu4cbz9QEPhScA4A2mLxhjcULDy4VILLyLhSEjg2goIw3o5LQ1zss44kmQh5LXWYGCw==", "peerDependencies": { - "react": "^16.6.0 || ^17.0.0" + "react": "^16.8.0 || 17 || 18" } }, "node_modules/react-dev-utils": { @@ -16569,16 +18031,15 @@ } }, "node_modules/react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.1" + "scheduler": "^0.23.0" }, "peerDependencies": { - "react": "17.0.1" + "react": "^18.2.0" } }, "node_modules/react-error-overlay": { @@ -16609,60 +18070,35 @@ } }, "node_modules/react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "@remix-run/router": "1.13.1" + }, + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "react": ">=15" + "react": ">=16.8" } }, "node_modules/react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", "dependencies": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "@remix-run/router": "1.13.1", + "react-router": "6.20.1" + }, + "engines": { + "node": ">=14.0.0" }, "peerDependencies": { - "react": ">=15" + "react": ">=16.8", + "react-dom": ">=16.8" } }, - "node_modules/react-router/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/react-router/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/react-router/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/react-scripts": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz", @@ -16735,6 +18171,1082 @@ } } }, + "node_modules/react-scripts/node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "dependencies": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, + "node_modules/react-scripts/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/react-scripts/node_modules/@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/react-scripts/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/react-scripts/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/react-scripts/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/react-scripts/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/react-scripts/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/react-scripts/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + }, + "node_modules/react-scripts/node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "dependencies": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "dependencies": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "dependencies": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "dependencies": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/react-scripts/node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "dependencies": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "dependencies": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "dependencies": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "dependencies": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "dependencies": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "dependencies": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/jest-watcher/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "dependencies": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/jest-watch-typeahead/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/react-scripts/node_modules/jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "dependencies": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/react-scripts/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-scripts/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-scripts/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/react-scripts/node_modules/v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/react-scripts/node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/react-scripts/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/react-scripts/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -17059,11 +19571,6 @@ "node": ">=8" } }, - "node_modules/resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, "node_modules/resolve-url-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", @@ -17368,12 +19875,11 @@ } }, "node_modules/scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { @@ -17664,59 +20170,50 @@ } }, "node_modules/socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=10.0.0" + "node": ">=10.2.0" } }, "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "dependencies": { + "ws": "~8.11.0" + } }, "node_modules/socket.io-client": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", - "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-client/node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dependencies": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" }, "engines": { @@ -17867,6 +20364,17 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -18071,6 +20579,11 @@ "postcss": "^8.2.15" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "node_modules/sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -18204,14 +20717,6 @@ "node": ">=4.0.0" } }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -18414,16 +20919,6 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, - "node_modules/tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "node_modules/tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -18814,35 +21309,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/use-isomorphic-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", - "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-latest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", - "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", - "dependencies": { - "use-isomorphic-layout-effect": "^1.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -18879,28 +21345,20 @@ } }, "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "optional": true, + "peer": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -18958,9 +21416,9 @@ } }, "node_modules/web-vitals": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.0.tgz", - "integrity": "sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.0.tgz", + "integrity": "sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==" }, "node_modules/webidl-conversions": { "version": "6.1.0", @@ -19784,11 +22242,11 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -19843,28 +22301,32 @@ } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yocto-queue": { @@ -19885,6 +22347,11 @@ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==" }, + "@adobe/css-tools": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==" + }, "@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", @@ -21142,9 +23609,9 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "requires": { "regenerator-runtime": "^0.14.0" }, @@ -21156,15 +23623,6 @@ } } }, - "@babel/runtime-corejs3": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.10.tgz", - "integrity": "sha512-x/XYVQ1h684pp1mJwOV4CyvqZXqbc8CMsMGUnAbuc82ZCdv1U63w5RSUzgDSXQHG5Rps/kiksH6g2D5BuaKyXg==", - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", @@ -21333,10 +23791,136 @@ "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", "requires": {} }, + "@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + }, + "dependencies": { + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==" + } + } + }, + "@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "requires": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, "@emotion/hash": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "requires": { + "@emotion/memoize": "^0.8.1" + } + }, + "@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + } + }, + "@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "requires": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "requires": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + } + }, + "@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "requires": {} + }, + "@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, "@eslint-community/eslint-utils": { "version": "4.4.0", @@ -21400,6 +23984,36 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==" }, + "@floating-ui/core": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "requires": { + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/dom": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", + "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "requires": { + "@floating-ui/core": "^1.4.2", + "@floating-ui/utils": "^0.1.3" + } + }, + "@floating-ui/react-dom": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "requires": { + "@floating-ui/dom": "^1.5.1" + } + }, + "@floating-ui/utils": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" + }, "@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", @@ -21478,42 +24092,26 @@ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" }, "@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -21522,6 +24120,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21531,6 +24131,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -21538,17 +24140,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -21556,64 +24179,72 @@ } }, "@jest/core": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", - "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "optional": true, + "peer": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/reporters": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^27.5.1", - "jest-config": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-resolve-dependencies": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "jest-watcher": "^27.5.1", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "rimraf": "^3.0.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -21622,6 +24253,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21631,6 +24264,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -21638,136 +24273,231 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "@jest/environment": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", - "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "optional": true, + "peer": true, "requires": { - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^27.5.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } + "jest-mock": "^29.7.0" + } + }, + "@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "optional": true, + "peer": true, + "requires": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + } + }, + "@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "optional": true, + "peer": true, + "requires": { + "jest-get-type": "^29.6.3" } }, "@jest/fake-timers": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", - "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", - "@sinonjs/fake-timers": "^8.0.1", + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -21776,6 +24506,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21785,6 +24517,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -21792,17 +24526,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -21810,136 +24565,81 @@ } }, "@jest/globals": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", - "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "optional": true, + "peer": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/types": "^27.5.1", - "expect": "^27.5.1" - }, - "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" } }, "@jest/reporters": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", - "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "optional": true, + "peer": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", "exit": "^0.1.2", - "glob": "^7.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", - "source-map": "^0.6.0", "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -21948,6 +24648,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21957,6 +24659,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -21964,88 +24668,176 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "istanbul-lib-instrument": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "optional": true, + "peer": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + } + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "@jest/schemas": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", - "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "optional": true, + "peer": true, "requires": { - "@sinclair/typebox": "^0.24.1" + "@sinclair/typebox": "^0.27.8" } }, "@jest/source-map": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", - "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "optional": true, + "peer": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", - "graceful-fs": "^4.2.9", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } + "graceful-fs": "^4.2.9" } }, "@jest/test-result": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", - "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "optional": true, + "peer": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "optional": true, + "peer": true, + "requires": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -22054,6 +24846,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -22063,6 +24857,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -22070,34 +24866,97 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } } } }, - "@jest/test-sequencer": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", - "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", - "requires": { - "@jest/test-result": "^27.5.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-runtime": "^27.5.1" - } - }, "@jest/transform": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz", @@ -22196,14 +25055,17 @@ } }, "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "optional": true, + "peer": true, "requires": { + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^15.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "dependencies": { @@ -22211,14 +25073,18 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } }, "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -22228,6 +25094,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -22235,17 +25103,23 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -22300,73 +25174,128 @@ "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, - "@material-ui/core": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz", - "integrity": "sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==", + "@mui/base": { + "version": "5.0.0-beta.26", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz", + "integrity": "sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==", "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.3", - "@material-ui/system": "^4.11.3", - "@material-ui/types": "^5.1.0", - "@material-ui/utils": "^4.11.2", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" + "@babel/runtime": "^7.23.4", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } } }, - "@material-ui/styles": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.3.tgz", - "integrity": "sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==", + "@mui/core-downloads-tracker": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.20.tgz", + "integrity": "sha512-fXoGe8VOrIYajqALysFuyal1q1YmBARqJ3tmnWYDVl0scu8f6h6tZQbS2K8BY28QwkWNGyv4WRfuUkzN5HR3Ow==" + }, + "@mui/material": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.20.tgz", + "integrity": "sha512-SUcPZnN6e0h1AtrDktEl76Dsyo/7pyEUQ+SAVe9XhHg/iliA0b4Vo+Eg4HbNkELsMbpDsUF4WHp7rgflPG7qYQ==", "requires": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "^5.1.0", - "@material-ui/utils": "^4.11.2", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.4", + "@mui/base": "5.0.0-beta.26", + "@mui/core-downloads-tracker": "^5.14.20", + "@mui/system": "^5.14.20", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@types/react-transition-group": "^4.4.9", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } } }, - "@material-ui/system": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.3.tgz", - "integrity": "sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==", + "@mui/private-theming": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.20.tgz", + "integrity": "sha512-WV560e1vhs2IHCh0pgUaWHznrcrVoW9+cDCahU1VTkuwPokWVvb71ccWQ1f8Y3tRBPPcNkU2dChkkRJChLmQlQ==", "requires": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.2", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "@babel/runtime": "^7.23.4", + "@mui/utils": "^5.14.20", + "prop-types": "^15.8.1" } }, - "@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "@mui/styled-engine": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.20.tgz", + "integrity": "sha512-Vs4nGptd9wRslo9zeRkuWcZeIEp+oYbODy+fiZKqqr4CH1Gfi9fdP0Q1tGYk8OiJ2EPB/tZSAyOy62Hyp/iP7g==", + "requires": { + "@babel/runtime": "^7.23.4", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + } + }, + "@mui/system": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.20.tgz", + "integrity": "sha512-jKOGtK4VfYZG5kdaryUHss4X6hzcfh0AihT8gmnkfqRtWP7xjY+vPaUhhuSeibE5sqA5wCtdY75z6ep9pxFnIg==", + "requires": { + "@babel/runtime": "^7.23.4", + "@mui/private-theming": "^5.14.20", + "@mui/styled-engine": "^5.14.19", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } + } + }, + "@mui/types": { + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", + "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", "requires": {} }, - "@material-ui/utils": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.2.tgz", - "integrity": "sha512-Uul8w38u+PICe2Fg2pDKCaIG7kOyhowZ9vjiC1FsVwPABTW8vPPKfF6OvxRq3IiBaI1faOJmgdvMG7rMJARBhA==", + "@mui/utils": { + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.20.tgz", + "integrity": "sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==", "requires": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "@babel/runtime": "^7.23.4", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "dependencies": { + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + } } }, "@nicolo-ribaudo/eslint-scope-5-internals": { @@ -22432,6 +25361,16 @@ "source-map": "^0.7.3" } }, + "@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" + }, + "@remix-run/router": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==" + }, "@rollup/plugin-babel": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", @@ -22486,24 +25425,30 @@ "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==" }, "@sinclair/typebox": { - "version": "0.24.51", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", - "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "optional": true, + "peer": true }, "@sinonjs/commons": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", - "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "optional": true, + "peer": true, "requires": { "type-detect": "4.0.8" } }, "@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "optional": true, + "peer": true, "requires": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "@socket.io/component-emitter": { @@ -22632,18 +25577,18 @@ } }, "@testing-library/dom": { - "version": "7.30.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.30.0.tgz", - "integrity": "sha512-v4GzWtltaiDE0yRikLlcLAfEiiK8+ptu6OuuIebm9GdC2XlZTNDPGEfM2UkEtnH7hr9TRq2sivT5EA9P1Oy7bw==", + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", "requires": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", - "@types/aria-query": "^4.2.0", - "aria-query": "^4.2.2", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.4", - "lz-string": "^1.4.4", - "pretty-format": "^26.6.2" + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "dependencies": { "ansi-styles": { @@ -22692,16 +25637,16 @@ } }, "@testing-library/jest-dom": { - "version": "5.11.9", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.11.9.tgz", - "integrity": "sha512-Mn2gnA9d1wStlAIT2NU8J15LNob0YFBVjs2aEQ3j8rsfRQo+lAs7/ui1i2TGaJjapLmuNPLTsrm+nPjmZDwpcQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz", + "integrity": "sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==", "requires": { + "@adobe/css-tools": "^4.3.1", "@babel/runtime": "^7.9.2", - "@types/testing-library__jest-dom": "^5.9.1", - "aria-query": "^4.2.2", + "aria-query": "^5.0.0", "chalk": "^3.0.0", - "css": "^3.0.0", "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.5.6", "lodash": "^4.17.15", "redent": "^3.0.0" }, @@ -22714,6 +25659,14 @@ "color-convert": "^2.0.1" } }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "requires": { + "dequal": "^2.0.3" + } + }, "chalk": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", @@ -22736,35 +25689,11 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -22776,21 +25705,20 @@ } }, "@testing-library/react": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.5.tgz", - "integrity": "sha512-yEx7oIa/UWLe2F2dqK0FtMF9sJWNXD+2PPtp39BvE0Kh9MJ9Kl0HrZAgEuhUJR+Lx8Di6Xz+rKwSdEPY2UV8ZQ==", + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", + "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", "requires": { "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^7.28.1" + "@testing-library/dom": "^9.0.0", + "@types/react-dom": "^18.0.0" } }, "@testing-library/user-event": { - "version": "12.8.3", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-12.8.3.tgz", - "integrity": "sha512-IR0iWbFkgd56Bu5ZI/ej8yQwrkCv8Qydx6RzwbKz9faXazR/+5tvYKsZQgyXJiwgpcva127YO6JcWy7YlCfofQ==", - "requires": { - "@babel/runtime": "^7.12.5" - } + "version": "14.5.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", + "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", + "requires": {} }, "@tootallnate/once": { "version": "1.1.2", @@ -22803,9 +25731,9 @@ "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==" }, "@types/aria-query": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.1.tgz", - "integrity": "sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==" + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==" }, "@types/babel__core": { "version": "7.20.3", @@ -22861,11 +25789,6 @@ "@types/node": "*" } }, - "@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" - }, "@types/connect": { "version": "3.4.37", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", @@ -22889,9 +25812,12 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" }, "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "requires": { + "@types/node": "*" + } }, "@types/eslint": { "version": "8.44.6", @@ -22985,15 +25911,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/jest": { - "version": "26.0.20", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.20.tgz", - "integrity": "sha512-9zi2Y+5USJRxd0FsahERhBwlcvFh6D2GLQnY2FH2BzK8J9s9omvNHIbvABwIluXa0fD8XVKMLTO0aOEuUfACAA==", - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, "@types/json-schema": { "version": "7.0.14", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.14.tgz", @@ -23033,9 +25950,9 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "@types/prop-types": { - "version": "15.7.3", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", - "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "@types/q": { "version": "1.5.4", @@ -23060,19 +25977,20 @@ "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - } + } + }, + "@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "requires": { + "@types/react": "*" } }, "@types/react-transition-group": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz", - "integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "requires": { "@types/react": "*" } @@ -23140,14 +26058,6 @@ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.2.tgz", "integrity": "sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw==" }, - "@types/testing-library__jest-dom": { - "version": "5.9.5", - "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.9.5.tgz", - "integrity": "sha512-ggn3ws+yRbOHog9GxnXiEZ/35Mow6YtPZpd7Z5mKDeZS/o7zx3yAle0ov/wjhVB5QT4N2Dt+GNoGCdqkBGCajQ==", - "requires": { - "@types/jest": "*" - } - }, "@types/trusted-types": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.5.tgz", @@ -23162,9 +26072,11 @@ } }, "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "optional": true, + "peer": true, "requires": { "@types/yargs-parser": "*" } @@ -23606,12 +26518,11 @@ } }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" } }, "array-buffer-byte-length": { @@ -23738,11 +26649,6 @@ "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, "autoprefixer": { "version": "10.4.16", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", @@ -23767,11 +26673,13 @@ "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==" }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "axobject-query": { @@ -24305,20 +27213,17 @@ } }, "cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "optional": true, + "peer": true, "requires": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, - "clsx": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" - }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -24390,11 +27295,6 @@ "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -24524,6 +27424,94 @@ "yaml": "^1.10.0" } }, + "create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -24669,15 +27657,6 @@ } } }, - "css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", - "requires": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" - } - }, "css-what": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", @@ -24800,9 +27779,9 @@ } }, "csstype": { - "version": "2.6.16", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz", - "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "damerau-levenshtein": { "version": "1.0.8", @@ -24832,15 +27811,38 @@ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" }, - "decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" - }, "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "optional": true, + "peer": true, + "requires": {} + }, + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + } }, "deep-is": { "version": "0.1.4", @@ -24945,9 +27947,11 @@ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==" + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "optional": true, + "peer": true }, "dir-glob": { "version": "3.0.1", @@ -24984,9 +27988,9 @@ } }, "dom-accessibility-api": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz", - "integrity": "sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==" + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==" }, "dom-converter": { "version": "0.2.0", @@ -24997,19 +28001,12 @@ } }, "dom-helpers": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.0.tgz", - "integrity": "sha512-Ru5o9+V8CpunKnz5LGgWXkmrH/20cGKwcHwS4m73zIvs54CN9epEmT/HLqFJW3kXpakAFkEdzgy1hzlJe3E4OQ==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - } } }, "dom-serializer": { @@ -25115,9 +28112,11 @@ "integrity": "sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA==" }, "emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "optional": true, + "peer": true }, "emoji-regex": { "version": "9.2.2", @@ -25135,9 +28134,9 @@ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" }, "engine.io": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.4.tgz", + "integrity": "sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==", "requires": { "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", @@ -25147,47 +28146,33 @@ "cookie": "~0.4.1", "cors": "~2.8.5", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3" + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0" }, "dependencies": { "cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} } } }, "engine.io-client": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.2.tgz", - "integrity": "sha512-8ZQmx0LQGRTYkHuogVZuGSpDqYZtCM/nv8zQ68VZ+JkOpazJ7ICdsSpaO6iXwvaU30oFg5QJOJWj8zWqhbKjkQ==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.3.tgz", + "integrity": "sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", + "engine.io-parser": "~5.2.1", + "ws": "~8.11.0", "xmlhttprequest-ssl": "~2.0.0" - }, - "dependencies": { - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "requires": {} - } } }, "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", + "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==" }, "enhanced-resolve": { "version": "5.15.0", @@ -25265,6 +28250,22 @@ "which-typed-array": "^1.1.13" } }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + } + }, "es-iterator-helpers": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", @@ -25861,40 +28862,25 @@ "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==" }, "expect": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", - "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -25903,6 +28889,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -25912,6 +28900,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -25919,22 +28909,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -26155,6 +29161,11 @@ "pkg-dir": "^4.1.0" } }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -26296,9 +29307,9 @@ } }, "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -26577,19 +29588,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, - "history": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", - "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", - "requires": { - "@babel/runtime": "^7.1.2", - "loose-envify": "^1.2.0", - "resolve-pathname": "^3.0.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0", - "value-equal": "^1.0.1" - } - }, "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -26805,11 +29803,6 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" }, - "hyphenate-style-name": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", - "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" - }, "iconv-lite": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", @@ -26877,14 +29870,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, - "indefinite-observable": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/indefinite-observable/-/indefinite-observable-2.0.1.tgz", - "integrity": "sha512-G8vgmork+6H9S8lUAg1gtXEj2JxIQTo0g2PbFiYOdjkziSI0F7UYBiVwhZRuixhBCNGczAls34+5HJPyZysvxQ==", - "requires": { - "symbol-observable": "1.2.0" - } - }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -26924,6 +29909,15 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -27037,11 +30031,6 @@ "is-extglob": "^2.1.1" } }, - "is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" - }, "is-map": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", @@ -27348,49 +30337,36 @@ } }, "jest": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", - "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "optional": true, + "peer": true, "requires": { - "@jest/core": "^27.5.1", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^27.5.1" + "jest-cli": "^29.7.0" } }, "jest-changed-files": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", - "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", "execa": "^5.0.0", - "throat": "^6.0.1" + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -27399,6 +30375,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27408,6 +30386,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -27415,17 +30395,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -27433,55 +30434,40 @@ } }, "jest-circus": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", - "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "optional": true, + "peer": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.5.1", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" + "stack-utils": "^2.0.3" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -27490,6 +30476,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27499,6 +30487,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -27506,34 +30496,66 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -27541,48 +30563,31 @@ } }, "jest-cli": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", - "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "optional": true, + "peer": true, "requires": { - "@jest/core": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", - "prompts": "^2.0.1", - "yargs": "^16.2.0" + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -27591,6 +30596,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27600,6 +30607,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -27607,17 +30616,81 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -27625,60 +30698,323 @@ } }, "jest-config": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", - "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "optional": true, + "peer": true, "requires": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.5.1", - "@jest/types": "^27.5.1", - "babel-jest": "^27.5.1", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", - "glob": "^7.1.1", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-jasmine2": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runner": "^27.5.1", - "jest-util": "^27.5.1", - "jest-validate": "^27.5.1", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^27.5.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "optional": true, + "peer": true, + "requires": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "optional": true, + "peer": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "optional": true, + "peer": true, + "requires": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + } + } + }, + "jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -27687,6 +31023,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27696,6 +31034,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -27703,95 +31043,51 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -27799,49 +31095,35 @@ } }, "jest-docblock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", - "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "optional": true, + "peer": true, "requires": { "detect-newline": "^3.0.0" } }, "jest-each": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", - "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^27.5.1", - "jest-util": "^27.5.1", - "pretty-format": "^27.5.1" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -27850,6 +31132,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -27859,6 +31143,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -27866,39 +31152,66 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -27919,6 +31232,30 @@ "jsdom": "^16.6.0" }, "dependencies": { + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, "@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -27931,10 +31268,26 @@ "chalk": "^4.0.0" } }, + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "requires": { "@types/yargs-parser": "*" } @@ -27974,6 +31327,31 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -27985,42 +31363,26 @@ } }, "jest-environment-node": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", - "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "optional": true, + "peer": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^27.5.1", - "jest-util": "^27.5.1" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28029,6 +31391,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28038,6 +31402,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28045,17 +31411,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -28063,9 +31450,11 @@ } }, "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==" + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "optional": true, + "peer": true }, "jest-haste-map": { "version": "27.5.1", @@ -28176,6 +31565,74 @@ "throat": "^6.0.1" }, "dependencies": { + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, "@jest/types": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", @@ -28188,118 +31645,30 @@ "chalk": "^4.0.0" } }, + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "requires": { "@types/yargs-parser": "*" } }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-leak-detector": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", - "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", - "requires": { - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - } - } - } - }, - "jest-matcher-utils": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", - "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" - }, - "dependencies": { "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -28335,6 +31704,17 @@ "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -28351,28 +31731,122 @@ "pretty-format": "^27.5.1" } }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, "jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" }, - "pretty-format": { + "jest-matcher-utils": { "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" } }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -28383,46 +31857,167 @@ } } }, + "jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "optional": true, + "peer": true, + "requires": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + } + } + }, + "jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "jest-message-util": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", - "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "optional": true, + "peer": true, "requires": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^27.5.1", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28431,6 +32026,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28440,6 +32037,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28447,34 +32046,51 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -28482,38 +32098,23 @@ } }, "jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", - "@types/node": "*" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28522,6 +32123,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28531,6 +32134,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28538,17 +32143,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -28649,132 +32275,85 @@ } }, "jest-resolve-dependencies": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", - "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "optional": true, + "peer": true, "requires": { - "@jest/types": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-snapshot": "^27.5.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true } } }, "jest-runner": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", - "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "optional": true, + "peer": true, "requires": { - "@jest/console": "^27.5.1", - "@jest/environment": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.8.1", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^27.5.1", - "jest-environment-jsdom": "^27.5.1", - "jest-environment-node": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-leak-detector": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-runtime": "^27.5.1", - "jest-util": "^27.5.1", - "jest-worker": "^27.5.1", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28783,6 +32362,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28792,6 +32373,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28799,76 +32382,255 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "peer": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "optional": true, + "peer": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, "jest-runtime": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", - "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "optional": true, + "peer": true, "requires": { - "@jest/environment": "^27.5.1", - "@jest/fake-timers": "^27.5.1", - "@jest/globals": "^27.5.1", - "@jest/source-map": "^27.5.1", - "@jest/test-result": "^27.5.1", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-mock": "^27.5.1", - "jest-regex-util": "^27.5.1", - "jest-resolve": "^27.5.1", - "jest-snapshot": "^27.5.1", - "jest-util": "^27.5.1", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28877,6 +32639,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28886,6 +32650,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28893,20 +32659,173 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + } + }, + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "optional": true, + "peer": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + } + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, + "requires": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true + } + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, + "resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "optional": true, + "peer": true }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, @@ -28920,58 +32839,64 @@ } }, "jest-snapshot": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", - "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "optional": true, + "peer": true, "requires": { - "@babel/core": "^7.7.2", + "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.5.1", - "@jest/types": "^27.5.1", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.5.1", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^27.5.1", - "jest-get-type": "^27.5.1", - "jest-haste-map": "^27.5.1", - "jest-matcher-utils": "^27.5.1", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^27.5.1", - "semver": "^7.3.2" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "optional": true, + "peer": true, "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" } }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -28980,6 +32905,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -28989,6 +32916,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -28996,58 +32925,133 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "diff-sequences": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", - "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true }, - "jest-diff": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", - "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "optional": true, + "peer": true, "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^27.5.1", - "jest-get-type": "^27.5.1", - "pretty-format": "^27.5.1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" } }, - "jest-get-type": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", - "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + "jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "optional": true, + "peer": true, + "requires": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "optional": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } }, "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "optional": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" + "react-is": "^18.0.0" }, "dependencies": { "ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "optional": true, + "peer": true } } }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "optional": true, + "peer": true + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } + }, + "write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "optional": true, + "peer": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } } } }, @@ -29202,273 +33206,6 @@ "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watch-typeahead": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", - "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", - "requires": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "jest-regex-util": "^28.0.0", - "jest-watcher": "^28.0.0", - "slash": "^4.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "@jest/console": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", - "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^28.1.3", - "jest-util": "^28.1.3", - "slash": "^3.0.0" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - } - } - }, - "@jest/test-result": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", - "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", - "requires": { - "@jest/console": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/types": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", - "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", - "requires": { - "@jest/schemas": "^28.1.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "17.0.29", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.29.tgz", - "integrity": "sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA==", - "requires": { - "@types/yargs-parser": "*" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "emittery": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", - "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "jest-message-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", - "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", - "requires": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^28.1.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^28.1.3", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "dependencies": { - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - } - } - }, - "jest-regex-util": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", - "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" - }, - "jest-util": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", - "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", - "requires": { - "@jest/types": "^28.1.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - } - }, - "jest-watcher": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", - "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", - "requires": { - "@jest/test-result": "^28.1.3", - "@jest/types": "^28.1.3", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.10.2", - "jest-util": "^28.1.3", - "string-length": "^4.0.1" - }, - "dependencies": { - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "pretty-format": { - "version": "28.1.3", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", - "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", - "requires": { - "@jest/schemas": "^28.1.3", - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" - } - } - }, - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" - }, - "string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "requires": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" - } - } - }, - "strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "requires": { - "ansi-regex": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - } - } - }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -29480,43 +33217,28 @@ } }, "jest-watcher": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", - "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "optional": true, + "peer": true, "requires": { - "@jest/test-result": "^27.5.1", - "@jest/types": "^27.5.1", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.5.1", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "dependencies": { - "@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" - } - }, - "@types/yargs": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.7.tgz", - "integrity": "sha512-lQcYmxWuOfJq4IncK88/nwud9rwr1F04CFc5xzk0k4oKVyz/AI35TfsXmhjf6t8zp8mpCOi17BfvuNWx+zrYkg==", - "requires": { - "@types/yargs-parser": "*" - } - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "optional": true, + "peer": true, "requires": { "color-convert": "^2.0.1" } @@ -29525,6 +33247,8 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "optional": true, + "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -29534,6 +33258,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, "requires": { "color-name": "~1.1.4" } @@ -29541,17 +33267,38 @@ "color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "optional": true, + "peer": true + }, + "jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "optional": true, + "peer": true, + "requires": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "optional": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -29634,6 +33381,24 @@ "whatwg-url": "^8.5.0", "ws": "^7.4.6", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "requires": {} + } } }, "jsesc": { @@ -29685,92 +33450,6 @@ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==" }, - "jss": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss/-/jss-10.6.0.tgz", - "integrity": "sha512-n7SHdCozmxnzYGXBHe0NsO0eUf9TvsHVq2MXvi4JmTn3x5raynodDVE/9VQmBdWFyyj9HpHZ2B4xNZ7MMy7lkw==", - "requires": { - "@babel/runtime": "^7.3.1", - "csstype": "^3.0.2", - "indefinite-observable": "^2.0.1", - "is-in-browser": "^1.1.3", - "tiny-warning": "^1.0.2" - }, - "dependencies": { - "csstype": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz", - "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g==" - } - } - }, - "jss-plugin-camel-case": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.6.0.tgz", - "integrity": "sha512-JdLpA3aI/npwj3nDMKk308pvnhoSzkW3PXlbgHAzfx0yHWnPPVUjPhXFtLJzgKZge8lsfkUxvYSQ3X2OYIFU6A==", - "requires": { - "@babel/runtime": "^7.3.1", - "hyphenate-style-name": "^1.0.3", - "jss": "10.6.0" - } - }, - "jss-plugin-default-unit": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.6.0.tgz", - "integrity": "sha512-7y4cAScMHAxvslBK2JRK37ES9UT0YfTIXWgzUWD5euvR+JR3q+o8sQKzBw7GmkQRfZijrRJKNTiSt1PBsLI9/w==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "jss-plugin-global": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.6.0.tgz", - "integrity": "sha512-I3w7ji/UXPi3VuWrTCbHG9rVCgB4yoBQLehGDTmsnDfXQb3r1l3WIdcO8JFp9m0YMmyy2CU7UOV6oPI7/Tmu+w==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "jss-plugin-nested": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.6.0.tgz", - "integrity": "sha512-fOFQWgd98H89E6aJSNkEh2fAXquC9aZcAVjSw4q4RoQ9gU++emg18encR4AT4OOIFl4lQwt5nEyBBRn9V1Rk8g==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-props-sort": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.6.0.tgz", - "integrity": "sha512-oMCe7hgho2FllNc60d9VAfdtMrZPo9n1Iu6RNa+3p9n0Bkvnv/XX5San8fTPujrTBScPqv9mOE0nWVvIaohNuw==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0" - } - }, - "jss-plugin-rule-value-function": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.6.0.tgz", - "integrity": "sha512-TKFqhRTDHN1QrPTMYRlIQUOC2FFQb271+AbnetURKlGvRl/eWLswcgHQajwuxI464uZk91sPiTtdGi7r7XaWfA==", - "requires": { - "@babel/runtime": "^7.3.1", - "jss": "10.6.0", - "tiny-warning": "^1.0.2" - } - }, - "jss-plugin-vendor-prefixer": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.6.0.tgz", - "integrity": "sha512-doJ7MouBXT1lypLLctCwb4nJ6lDYqrTfVS3LtXgox42Xz0gXusXIIDboeh6UwnSmox90QpVnub7au8ybrb0krQ==", - "requires": { - "@babel/runtime": "^7.3.1", - "css-vendor": "^2.0.8", - "jss": "10.6.0" - } - }, "jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -29929,9 +33608,9 @@ } }, "lz-string": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", - "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==" }, "magic-string": { "version": "0.25.9", @@ -30039,15 +33718,6 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, - "mini-create-react-context": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", - "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", - "requires": { - "@babel/runtime": "^7.12.1", - "tiny-warning": "^1.0.3" - } - }, "mini-css-extract-plugin": { "version": "2.7.6", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", @@ -30243,6 +33913,15 @@ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -30599,11 +34278,6 @@ } } }, - "popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" - }, "postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -31335,36 +35009,19 @@ } }, "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, "dependencies": { "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" } } }, @@ -31423,6 +35080,11 @@ } } }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -31433,6 +35095,13 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" }, + "pure-rand": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "optional": true, + "peer": true + }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -31504,12 +35173,11 @@ } }, "react": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.1.tgz", - "integrity": "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "react-app-polyfill": { @@ -31526,13 +35194,10 @@ } }, "react-beforeunload": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.4.0.tgz", - "integrity": "sha512-62n4aInZeZ3uf4Gx1rKvUjv0OoIZpeGVgnHtuMLKxNbDZz+gpsC9VyW7uEPyLHPTWqbP2UebIZa1t0K/I6S9/Q==", - "requires": { - "prop-types": "^15.7.2", - "use-latest": "^1.2.0" - } + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-beforeunload/-/react-beforeunload-2.6.0.tgz", + "integrity": "sha512-aKrGaRNc7fZQlDnmSYrXu4cbz9QEPhScA4A2mLxhjcULDy4VILLyLhSEjg2goIw3o5LQ1zss44kmQh5LXWYGCw==", + "requires": {} }, "react-dev-utils": { "version": "12.0.1", @@ -31621,13 +35286,12 @@ } }, "react-dom": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.1.tgz", - "integrity": "sha512-6eV150oJZ9U2t9svnsspTMrWNyHc6chX0KzDeAOXftRa8bNeOKTTfCJ7KorIwenkHd2xqVTBTCZd79yk/lx/Ug==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "requires": { "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.1" + "scheduler": "^0.23.0" } }, "react-error-overlay": { @@ -31652,54 +35316,20 @@ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==" }, "react-router": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz", - "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "hoist-non-react-statics": "^3.1.0", - "loose-envify": "^1.3.1", - "mini-create-react-context": "^0.4.0", - "path-to-regexp": "^1.7.0", - "prop-types": "^15.6.2", - "react-is": "^16.6.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "requires": { - "isarray": "0.0.1" - } - }, - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } + "@remix-run/router": "1.13.1" } }, "react-router-dom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz", - "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", "requires": { - "@babel/runtime": "^7.1.2", - "history": "^4.9.0", - "loose-envify": "^1.3.1", - "prop-types": "^15.6.2", - "react-router": "5.2.0", - "tiny-invariant": "^1.0.2", - "tiny-warning": "^1.0.0" + "@remix-run/router": "1.13.1", + "react-router": "6.20.1" } }, "react-scripts": { @@ -31755,6 +35385,833 @@ "webpack-dev-server": "^4.6.0", "webpack-manifest-plugin": "^4.0.2", "workbox-webpack-plugin": "^6.4.1" + }, + "dependencies": { + "@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + } + }, + "@jest/core": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz", + "integrity": "sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/reporters": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^27.5.1", + "jest-config": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-resolve-dependencies": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "jest-watcher": "^27.5.1", + "micromatch": "^4.0.4", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "@jest/environment": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz", + "integrity": "sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==", + "requires": { + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1" + } + }, + "@jest/fake-timers": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz", + "integrity": "sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==", + "requires": { + "@jest/types": "^27.5.1", + "@sinonjs/fake-timers": "^8.0.1", + "@types/node": "*", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "@jest/globals": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz", + "integrity": "sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/types": "^27.5.1", + "expect": "^27.5.1" + } + }, + "@jest/reporters": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz", + "integrity": "sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==", + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-haste-map": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^8.1.0" + } + }, + "@jest/schemas": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz", + "integrity": "sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==", + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz", + "integrity": "sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==", + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz", + "integrity": "sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz", + "integrity": "sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==", + "requires": { + "@jest/test-result": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-runtime": "^27.5.1" + } + }, + "@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + } + }, + "@sinclair/typebox": { + "version": "0.24.51", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", + "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==" + }, + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", + "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==" + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==" + }, + "emittery": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", + "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==" + }, + "expect": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz", + "integrity": "sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==", + "requires": { + "@jest/types": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jest": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", + "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", + "requires": { + "@jest/core": "^27.5.1", + "import-local": "^3.0.2", + "jest-cli": "^27.5.1" + } + }, + "jest-changed-files": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz", + "integrity": "sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==", + "requires": { + "@jest/types": "^27.5.1", + "execa": "^5.0.0", + "throat": "^6.0.1" + } + }, + "jest-circus": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", + "integrity": "sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "expect": "^27.5.1", + "is-generator-fn": "^2.0.0", + "jest-each": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3", + "throat": "^6.0.1" + } + }, + "jest-cli": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz", + "integrity": "sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==", + "requires": { + "@jest/core": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "prompts": "^2.0.1", + "yargs": "^16.2.0" + } + }, + "jest-config": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz", + "integrity": "sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==", + "requires": { + "@babel/core": "^7.8.0", + "@jest/test-sequencer": "^27.5.1", + "@jest/types": "^27.5.1", + "babel-jest": "^27.5.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.9", + "jest-circus": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-jasmine2": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runner": "^27.5.1", + "jest-util": "^27.5.1", + "jest-validate": "^27.5.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-docblock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz", + "integrity": "sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==", + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz", + "integrity": "sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==", + "requires": { + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "jest-get-type": "^27.5.1", + "jest-util": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-environment-node": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz", + "integrity": "sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "jest-mock": "^27.5.1", + "jest-util": "^27.5.1" + } + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==" + }, + "jest-leak-detector": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz", + "integrity": "sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==", + "requires": { + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + } + }, + "jest-message-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", + "integrity": "sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^27.5.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^27.5.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + } + }, + "jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "requires": { + "@jest/types": "^27.5.1", + "@types/node": "*" + } + }, + "jest-resolve-dependencies": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz", + "integrity": "sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==", + "requires": { + "@jest/types": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-snapshot": "^27.5.1" + } + }, + "jest-runner": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz", + "integrity": "sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==", + "requires": { + "@jest/console": "^27.5.1", + "@jest/environment": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.8.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^27.5.1", + "jest-environment-jsdom": "^27.5.1", + "jest-environment-node": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-leak-detector": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-runtime": "^27.5.1", + "jest-util": "^27.5.1", + "jest-worker": "^27.5.1", + "source-map-support": "^0.5.6", + "throat": "^6.0.1" + } + }, + "jest-runtime": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz", + "integrity": "sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==", + "requires": { + "@jest/environment": "^27.5.1", + "@jest/fake-timers": "^27.5.1", + "@jest/globals": "^27.5.1", + "@jest/source-map": "^27.5.1", + "@jest/test-result": "^27.5.1", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-mock": "^27.5.1", + "jest-regex-util": "^27.5.1", + "jest-resolve": "^27.5.1", + "jest-snapshot": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + } + }, + "jest-snapshot": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz", + "integrity": "sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==", + "requires": { + "@babel/core": "^7.7.2", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.0.0", + "@jest/transform": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^27.5.1", + "graceful-fs": "^4.2.9", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "jest-haste-map": "^27.5.1", + "jest-matcher-utils": "^27.5.1", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^27.5.1", + "semver": "^7.3.2" + } + }, + "jest-watch-typeahead": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz", + "integrity": "sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==", + "requires": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "jest-regex-util": "^28.0.0", + "jest-watcher": "^28.0.0", + "slash": "^4.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "requires": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/types": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz", + "integrity": "sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==", + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + } + }, + "@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "requires": { + "@types/yargs-parser": "*" + } + }, + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==" + }, + "emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==" + }, + "jest-message-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz", + "integrity": "sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==", + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + } + } + }, + "jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==" + }, + "jest-util": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz", + "integrity": "sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==", + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + } + }, + "jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "requires": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "dependencies": { + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==" + }, + "string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", + "requires": { + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "char-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", + "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==" + } + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + } + } + } + } + }, + "jest-watcher": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz", + "integrity": "sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==", + "requires": { + "@jest/test-result": "^27.5.1", + "@jest/types": "^27.5.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^27.5.1", + "string-length": "^4.0.1" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "v8-to-istanbul": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", + "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==" + } + } + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } } }, "react-transition-group": { @@ -32000,11 +36457,6 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" }, - "resolve-pathname": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" - }, "resolve-url-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", @@ -32185,12 +36637,11 @@ } }, "scheduler": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.1.tgz", - "integrity": "sha512-LKTe+2xNJBNxu/QhHvDR14wUXHRQbVY5ZOYpOGWRzhydZUqrLb2JBvLPY7cAqFmqrWuDED0Mjk7013SZiOz6Bw==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "loose-envify": "^1.1.0" } }, "schema-utils": { @@ -32431,52 +36882,44 @@ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" }, "socket.io": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", + "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", "requires": { "accepts": "~1.3.4", "base64id": "~2.0.0", + "cors": "~2.8.5", "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" } }, "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", + "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", + "requires": { + "ws": "~8.11.0" + } }, "socket.io-client": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.1.tgz", - "integrity": "sha512-e6nLVgiRYatS+AHXnOnGi4ocOpubvOUCGhyWw8v+/FxW8saHkinG6Dfhi9TU0Kt/8mwJIAASxvw6eujQmjdZVA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.2.tgz", + "integrity": "sha512-vtA0uD4ibrYD793SOIAwlo8cj6haOeMHrGvwPxJsxH7CeIksqJ+3Zc06RvWTIFgiSqx4A3sOnTXpfAEE2Zyz6w==", "requires": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", - "engine.io-client": "~6.2.1", - "socket.io-parser": "~4.2.0" - }, - "dependencies": { - "socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "requires": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - } - } + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" } }, "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", + "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" } }, @@ -32596,6 +37039,14 @@ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "requires": { + "internal-slot": "^1.0.4" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -32742,6 +37193,11 @@ "postcss-selector-parser": "^6.0.4" } }, + "stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, "sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -32838,11 +37294,6 @@ "util.promisify": "~1.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -32985,16 +37436,6 @@ "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, - "tiny-invariant": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz", - "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw==" - }, - "tiny-warning": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" - }, "tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -33273,20 +37714,6 @@ "requires-port": "^1.0.0" } }, - "use-isomorphic-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.1.tgz", - "integrity": "sha512-L7Evj8FGcwo/wpbv/qvSfrkHFtOpCzvM5yl2KVyDJoylVuSvzphiiasmjgQPttIGBAy2WKiBNR98q8w7PiNgKQ==", - "requires": {} - }, - "use-latest": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.0.tgz", - "integrity": "sha512-d2TEuG6nSLKQLAfW3By8mKr8HurOlTkul0sOpxbClIv4SQ4iOd7BYr7VIzdbktUCnv7dua/60xzd8igMU6jmyw==", - "requires": { - "use-isomorphic-layout-effect": "^1.0.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -33317,27 +37744,17 @@ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", + "optional": true, + "peer": true, "requires": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - } + "convert-source-map": "^2.0.0" } }, - "value-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -33385,9 +37802,9 @@ } }, "web-vitals": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-1.1.0.tgz", - "integrity": "sha512-1cx54eRxY/+M0KNKdNpNnuXAXG+vJEvwScV4DiV9rOYDguHoeDIzm09ghBohOPtkqPO5OtPC14FWkNva3SDisg==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.0.tgz", + "integrity": "sha512-f5YnCHVG9Y6uLCePD4tY8bO/Ge15NPEQWtvm3tPzDKygloiqtb4SVqRHBcrIAqo2ztqX5XueqDn97zHF0LdT6w==" }, "webidl-conversions": { "version": "6.1.0", @@ -34035,9 +38452,9 @@ } }, "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", "requires": {} }, "xml-name-validator": { @@ -34071,23 +38488,27 @@ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "peer": true, "requires": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" } }, "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "optional": true, + "peer": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index a3b0784..3de7108 100644 --- a/package.json +++ b/package.json @@ -3,22 +3,24 @@ "version": "0.1.0", "private": true, "dependencies": { - "@material-ui/core": "^4.11.3", - "@testing-library/jest-dom": "^5.11.9", - "@testing-library/react": "^11.2.5", - "@testing-library/user-event": "^12.8.3", - "axios": "^0.21.1", + "@emotion/react": "^11.11.1", + "@emotion/styled": "^11.11.0", + "@mui/material": "^5.14.20", + "@testing-library/jest-dom": "^6.1.5", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", + "axios": "^1.6.2", "prop-types": "^15.8.1", - "react": "^17.0.1", - "react-beforeunload": "^2.4.0", - "react-dom": "^17.0.1", + "react": "^18.2.0", + "react-beforeunload": "^2.6.0", + "react-dom": "^18.2.0", "react-loading": "^2.0.3", - "react-router-dom": "^5.2.0", + "react-router-dom": "^6.20.1", "react-scripts": "^5.0.1", "react-transition-group": "^4.4.5", - "socket.io": "^4.5.1", - "socket.io-client": "^4.5.1", - "web-vitals": "^1.1.0" + "socket.io": "^4.7.2", + "socket.io-client": "^4.7.2", + "web-vitals": "^3.5.0" }, "scripts": { "start": "react-scripts start", diff --git a/src/App.js b/src/App.js index 6853ef8..920df19 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ import React, { useEffect, useState, createContext } from 'react'; import { io } from 'socket.io-client'; -import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom'; +import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import ReactLoading from 'react-loading'; import Gameboard from './components/Gameboard/Gameboard'; import LoginPage from './components/LoginPage/LoginPage'; @@ -12,13 +12,14 @@ function App() { const [playerData, setPlayerData] = useState(); const [playerSocket, setPlayerSocket] = useState(); const [redirect, setRedirect] = useState(); - useEffect(() => { const socket = io('http://localhost:8080', { withCredentials: true }); socket.on('player:data', data => { data = JSON.parse(data); setPlayerData(data); - data.roomId != null ? setRedirect(true) : setRedirect(false); + if (data.roomId != null) { + setRedirect(true); + } }); setPlayerSocket(socket); }, []); @@ -26,26 +27,47 @@ function App() { return ( - {redirect ? : } - - - LOADING... - - - {playerSocket ? ( - - ) : ( - - )} - - - {playerData ? ( - - - - ) : null} - - + + { + if (redirect) { + return ; + } else if (playerSocket) { + return ; + } else { + return ; + } + }} + > + { + if (redirect) { + return ; + } else if (playerSocket) { + return ; + } else { + return ; + } + }} + > + { + if (playerData) { + return ( + + + + ); + } else { + return ; + } + }} + > + ); diff --git a/src/components/Gameboard/Dice/Dice.jsx b/src/components/Gameboard/Dice/Dice.jsx index 98a0751..84d3a49 100644 --- a/src/components/Gameboard/Dice/Dice.jsx +++ b/src/components/Gameboard/Dice/Dice.jsx @@ -21,7 +21,7 @@ const Dice = ({ rolledNumberCallback, rolledNumber, nowMoving, color, movingPlay socket.on('game:roll', number => { rolledNumberCallback(number); }); - }, []); + }, [socket, rolledNumberCallback]); return (
diff --git a/src/components/Gameboard/Gameboard.jsx b/src/components/Gameboard/Gameboard.jsx index 45f7ae8..5217304 100644 --- a/src/components/Gameboard/Gameboard.jsx +++ b/src/components/Gameboard/Gameboard.jsx @@ -19,19 +19,6 @@ const Gameboard = () => { const [movingPlayer, setMovingPlayer] = useState('red'); - const checkWin = () => { - // Player wins when all pawns with same color are inside end base - if (pawns.filter(pawn => pawn.color === 'red' && pawn.position === 73).length === 4) { - alert('Red Won'); - } else if (pawns.filter(pawn => pawn.color === 'blue' && pawn.position === 79).length === 4) { - alert('Blue Won'); - } else if (pawns.filter(pawn => pawn.color === 'green' && pawn.position === 85).length === 4) { - alert('Green Won'); - } else if (pawns.filter(pawn => pawn.color === 'yellow' && pawn.position === 91).length === 4) { - alert('Yellow Won'); - } - }; - useEffect(() => { socket.emit('room:data', context.roomId); socket.on('room:data', data => { @@ -52,7 +39,6 @@ const Gameboard = () => { setMovingPlayer(nowMovingPlayer.color); } const currentPlayer = data.players.find(player => player._id === context.playerId); - checkWin(); setIsReady(currentPlayer.ready); setRolledNumber(data.rolledNumber); setPlayers(data.players); diff --git a/src/components/Gameboard/Map/Map.jsx b/src/components/Gameboard/Map/Map.jsx index 1af250e..8f008b2 100644 --- a/src/components/Gameboard/Map/Map.jsx +++ b/src/components/Gameboard/Map/Map.jsx @@ -19,9 +19,8 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { touchableArea.arc(x, y, 12, 0, 2 * Math.PI); const image = new Image(); image.src = pawnImages[color]; - image.onload = function () { - context.drawImage(image, x - 17, y - 14, 35, 30); - }; + // image.onload = function () { + context.drawImage(image, x - 17, y - 14, 35, 30); return touchableArea; }; @@ -73,29 +72,30 @@ const Map = ({ pawns, nowMoving, rolledNumber }) => { setHintPawn(null); } }; - const rerenderCanvas = () => { - const canvas = canvasRef.current; - const ctx = canvas.getContext('2d'); - const image = new Image(); - image.src = mapImage; - image.onload = function () { - ctx.drawImage(image, 0, 0); - pawns.forEach((pawn, index) => { - pawns[index].touchableArea = paintPawn( - ctx, - positions[pawn.position].x, - positions[pawn.position].y, - pawn.color - ); - }); - if (hintPawn) { - paintPawn(ctx, positions[hintPawn.position].x, positions[hintPawn.position].y, hintPawn.color); - } - }; - }; + useEffect(() => { + const rerenderCanvas = () => { + const canvas = canvasRef.current; + const ctx = canvas.getContext('2d'); + const image = new Image(); + image.src = mapImage; + image.onload = function () { + ctx.drawImage(image, 0, 0); + pawns.forEach((pawn, index) => { + pawns[index].touchableArea = paintPawn( + ctx, + positions[pawn.position].x, + positions[pawn.position].y, + pawn.color + ); + }); + if (hintPawn) { + paintPawn(ctx, positions[hintPawn.position].x, positions[hintPawn.position].y, hintPawn.color); + } + }; + }; rerenderCanvas(); - }, [hintPawn, pawns, rerenderCanvas]); + }, [hintPawn, pawns]); return ( { +const canPawnMove = (pawn, rolledNumber) => { // If is in base if ((rolledNumber === 1 || rolledNumber === 6) && pawn.position === pawn.basePos) { return true; @@ -24,3 +24,4 @@ export default (pawn, rolledNumber) => { return false; } }; +export default canPawnMove; diff --git a/src/components/Gameboard/Map/getPositionAfterMove.js b/src/components/Gameboard/Map/getPositionAfterMove.js index 6b403ca..b255895 100644 --- a/src/components/Gameboard/Map/getPositionAfterMove.js +++ b/src/components/Gameboard/Map/getPositionAfterMove.js @@ -1,4 +1,4 @@ -export default (pawn, rolledNumber) => { +const getPositionAfterMove = (pawn, rolledNumber) => { const { position, color } = pawn; switch (color) { case 'red': @@ -55,5 +55,9 @@ export default (pawn, rolledNumber) => { } else { return position; } + default: + return position; } }; + +export default getPositionAfterMove; diff --git a/src/components/LoginPage/AddServer/AddServer.jsx b/src/components/LoginPage/AddServer/AddServer.jsx index 4333c50..a02c5e1 100644 --- a/src/components/LoginPage/AddServer/AddServer.jsx +++ b/src/components/LoginPage/AddServer/AddServer.jsx @@ -1,6 +1,6 @@ import React, { useState, useContext, useEffect } from 'react'; import './AddServer.css'; -import Switch from '@material-ui/core/Switch'; +import Switch from '@mui/material/Switch'; import { SocketContext } from '../../../App'; const AddServer = () => { const socket = useContext(SocketContext); @@ -12,7 +12,7 @@ const AddServer = () => { socket.on('room:created', () => { socket.emit('room:rooms'); }); - }, []); + }, [socket]); const handleButtonClick = e => { e.preventDefault(); diff --git a/src/components/LoginPage/LoginPage.jsx b/src/components/LoginPage/LoginPage.jsx index 9532e2d..0a3f19f 100644 --- a/src/components/LoginPage/LoginPage.jsx +++ b/src/components/LoginPage/LoginPage.jsx @@ -1,7 +1,6 @@ import './LoginPage.css'; import AddServer from './AddServer/AddServer'; import ServerList from './ServerList/ServerList'; -import NameInput from './NameInput/NameInput'; const LoginPage = () => { return ( <> diff --git a/src/components/LoginPage/NameInput/NameInput.jsx b/src/components/LoginPage/NameInput/NameInput.jsx index 307518a..f07ffd0 100644 --- a/src/components/LoginPage/NameInput/NameInput.jsx +++ b/src/components/LoginPage/NameInput/NameInput.jsx @@ -1,15 +1,19 @@ -import React, { useState, useContext, useEffect } from 'react'; +import React, { useState, useContext, useEffect, useCallback } from 'react'; import { SocketContext } from '../../../App'; import useInput from '../../../hooks/useInput'; import './NameInput.css'; +import Overlay from '../../Overlay/Overlay'; + const NameInput = ({ isRoomPrivate, roomId }) => { const socket = useContext(SocketContext); const nickname = useInput(''); const password = useInput(''); const [isPasswordWrong, setIsPasswordWrong] = useState(false); - const handleButtonClick = () => { + + const handleButtonClick = useCallback(() => { socket.emit('player:login', { name: nickname.value, password: password.value, roomId: roomId }); - }; + }, [socket, nickname.value, password.value, roomId]); + useEffect(() => { socket.on('error:wrongPassword', () => { setIsPasswordWrong(true); @@ -24,7 +28,7 @@ const NameInput = ({ isRoomPrivate, roomId }) => { return () => { document.removeEventListener('keydown', keyDownHandler); }; - }, []); + }, [socket, handleButtonClick]); return (
diff --git a/src/components/LoginPage/ServerList/ServerList.jsx b/src/components/LoginPage/ServerList/ServerList.jsx index c23601e..16eb46e 100644 --- a/src/components/LoginPage/ServerList/ServerList.jsx +++ b/src/components/LoginPage/ServerList/ServerList.jsx @@ -18,7 +18,7 @@ const ServerList = () => { data = JSON.parse(data); setRooms(data); }); - }, []); + }, [socket]); const getRooms = () => { setRooms(null); @@ -35,7 +35,7 @@ const ServerList = () => {

Server List

- + refresh
@@ -53,7 +53,7 @@ const ServerList = () => { {rooms.map((room, index) => ( - {room.private ? : null} + {room.private ? private : null} {room.name} {`${room.players.length}/4`} {room.isStarted ? 'started' : 'waiting'} diff --git a/src/components/Navbar/NameContainer/AnimatedOverlay/TimerAnimation.js b/src/components/Navbar/NameContainer/AnimatedOverlay/TimerAnimation.js index f8b44e1..a8742a4 100644 --- a/src/components/Navbar/NameContainer/AnimatedOverlay/TimerAnimation.js +++ b/src/components/Navbar/NameContainer/AnimatedOverlay/TimerAnimation.js @@ -53,7 +53,7 @@ function handle() { count++; } -const animation = document.styleSheets[0].insertRule( +document.styleSheets[0].insertRule( ` @keyframes timerAnimation { ${keyframes.join('\n')} diff --git a/src/components/Navbar/ReadyButton/ReadyButton.jsx b/src/components/Navbar/ReadyButton/ReadyButton.jsx index 6249a9e..86d40ed 100644 --- a/src/components/Navbar/ReadyButton/ReadyButton.jsx +++ b/src/components/Navbar/ReadyButton/ReadyButton.jsx @@ -1,6 +1,6 @@ -import React, { useState, useContext, useEffect } from 'react'; +import React, { useState, useContext } from 'react'; import { SocketContext } from '../../../App'; -import Switch from '@material-ui/core/Switch'; +import Switch from '@mui/material/Switch'; import '../Navbar.css'; import '../NameContainer/AnimatedOverlay/TimerAnimation'; diff --git a/src/constants/pawnImages.js b/src/constants/pawnImages.js index e568106..7d04d9b 100644 --- a/src/constants/pawnImages.js +++ b/src/constants/pawnImages.js @@ -4,10 +4,12 @@ import redPawn from '../images/pawns/red-pawn.png'; import yellowPawn from '../images/pawns/yellow-pawn.png'; import greyPawn from '../images/pawns/grey-pawn.png'; -export default { +const pawnImages = { green: greenPawn, blue: bluePawn, red: redPawn, yellow: yellowPawn, grey: greyPawn, }; + +export default pawnImages; \ No newline at end of file diff --git a/src/images/readme1.png b/src/images/readme1.png index b9bbbc0ec4fc348cb9a8b4c68a1757422257186e..db59bb7841b2d322a5809b6ed800d2aed9f8ee42 100644 GIT binary patch literal 417242 zcmZU(2UHW$w?2v>qEwMyBnT=hO}f;eG!+mK>AiO%O*)YdQUanBDG?D65s==AbdcVg z5PB6zfItYz%=35u_ucPs>* za+iMtef7#ejohk16B*ehD;E_N-DfH)yt>{nM;CVoGO~NA9w|`GPV4JE$jPUr`=jm8 zxSJkbHTX(Lzj{NkE}AyK7NBUCEGx;Jp1I9OsR50|Uo&UEoFVs22Kx5PsL5-VC?V6; z*7$it#YcG%2LIm0OZg2wnfJ-R$#9pZSZMu#x!>&&jkCF|7ndTr=vejr!K(<^P1-X? z@|g=4rGa!KHo39BZol;h{w@9sL^J61f{)+J(!z9ycLu%59`hL@xO>i{0tUYn#*IAU zx@6@oLiOj=&5)X7m1?!Ya^gYPNLRl%5_aOXs4$6ov%JvzJ?UktZ;m%Pb=6Z|1{Sq( zhYx*vDV;Y+JD^hk;ea)SR@-pO5Oh*?en#Fu<=~*#(a^2e%{gGfZiVl6{v;N~Hv%DEa zsu;P+y)bg)IooZK|3Xc>yfXGR*4C1< zgL#P9*u!icL;^fs{|7>*5FqzY^l!!$O ztgXwd0`qp@l@@s@@{mu7nwOVX!Q0+Z?xm{wf5ZP>De^h{`o5ME74`S`7x9-6fq6TL zipk2#iarz<6&Dx&=OOG9=;><{AnfVG|9^t~zj0I@eC)hkUi-ShJbC{U*Txp+=c~xa z_n$=nbNrwCbO>R2$L(%_<{ST_}AFZ6OOMrvBiK>gozw-Rc zp(Gm9GN8g1O&ytv1=DP@CU=&eArJ-ful>3XnrWNs!61$Rpx3*IZMtzQg+*d@!(5R}fP z;ByfCYG;`k{+T6Gb7&<^$Fmxu6hi1`gDAzOSMQ&wMB-?MtwQjUiz7#buU$u?hY2rm zgDXayz-5OP31#&SJn;q%5tI~j^Of~9-?=d)dIZCLj#k=#^MZJ6mzM~oIF|B8rsSTP z*1|b+iu|!gGWRO*+nj9%9H%tUuJBg5g2R{cT9vX*VSLoTm)a3FR_qd+&IUjuixKtL zQXuB^V8=%J)rvpHCu|aaYZBw){$QF3{p>GinkaGf12W!0nT(*>j7c@iO4#ur8t}wq zS22=8N(Q`3Tn_J6>GOth64*2zMe&1`goF=!N-Yn*?Px?F?G5CyrTTo4staLU*3m}_ z8%bX8FTEoX{;?t31xsNdc3N~RbXWtd?%KAP$vbfN?QFU zEG!R%NMkBztvx3?w!{)Bd87pY4569v%@Ggyw$lr9sRO>pq&C=AN4^Z*J6yvfH4b$; zMLV|InV+3{Ewh|DgiJx1hE8rCbfH6H)Q~)R-x;5lL%T|aoov^QOGOALabx``TkiDw zAbMad`@Gk-VPn<>r0?I`|l+)#HayBe_8Lpl<4R3WH#E2?#x1NWbp~l{1X@?A;zxka%Ug`FBg|8Wv zt=qwH;srNXBJV2Nx^TfI-GM&(zidjUUv8G?FZAXO*~{8vUiTt$dcq+VZ5{B!P}jvn2-aw;%Sbp=!RXG@bqV%FNklL4py;Z9t6lyyY z#?}`ti@xb!y_6ku!=duUQZb0YBOacgEA&j}x#E4NnT4o|e?7N}0!HF4olks~itr(F zNND9cTtWsh7J+HzKEHH4+PPJ}N0^!sdpZdGJS(JC{oz2byO4Yqq!%YaDY~b$Wr#zn zKgo#ecp4d_ewS(JY1y_zwo;IrKGyK@2#f@ZhY-JOBSVgS+7YBmTxT&xh$?_`1Eu&sH%||wAiy@4Qn2En}F~6ef$34&DO}blfUbMc63XA4lf_X zba;YJht3XH6FaC=1aycNj46_)p{)C*b=<_UC?#R_*xzIRX7DTzl7T)poC9PmvJ&13 z>E;N1*q$L(P3j(LXzsvR!<_v=Ge5i*(JuVB1f|;qzB*;v!qj_hgtWecmkn%Vi-QJY z{Xd4kqqDZygJK~cf6(ngfD+kRt~;+73XV(k1S~p340} zi>7OMO-Q;?xa=#c!trrJhgQe4e9IivI3}Jgi86f4oov#x;4NsLX^+J`TYcipYf-hs zz*N(jcPXJ|!L>wVco8Tv3YA%mxD4I;Zh5|2%0m_uSy`umvFl&qD&;Qt$<#YfUtITO zW3!XSTO=a0sm$vWXE?ishCxiyY_~Q{#+d!Ew#ht4bA*LQ+-P3rDg?JG2QIe=8FV}hW4vu6JxEw&QM5>9b0B6IE0^2a}AaV;e zQtw7HHlWH~wKbQ||)Q7TmDdeGV(?d=9WB>TeUwB!U8Py$4_LTviRfGKDa|@<^t;x#r_<>)t*5mp@=A|{1!D%$ic_abS$HPWt zO%(>_o&~wHJ9t0elO@|yKFk_P+eZKB1qqQ?kDv9`LzIp3>X^y3oWcO~vV@Eqvz0{q zpG|rLwwF|!kcFOjc~RoRbI9T?AljP*7Lma986p9Vq?LBK%O87o!(dr3%Y9vY>4UO# zQJ9wM(Nl)%k-Gjr)z$U(rJ}JA!8REk0uzHji#xke*y>El9hoQf_*h*K$yFHApSC+C zjvb*!3g4qiICs7a9Jso5MZYA@=OHvY;V1g4(dJXn%NORR)Ng0*#+x4q(4`Xw&xcn$}M*85@`rp49{7kQYl2;K4 zQrHMr4-QCr=+P}v2T+){=JLGauqpFs*D2pH3!GKC7ZzXpo;VSZhIUP1v~e_4TGOe1 zG$%1RAnB1*oIRr*3Fx|<-9?DME~2)3jqDqlxh<)Sc~=IcydXIhIeNV+XxVn5l>zp+ z+_Mss^B$}L8BKOkdA$U#c`fPNjA1=LykC5|b=(6nlh`cuRCaM9vA_}A_Gb$CL_O7P zrrfD|CxI!t!XLSU6&EEE!I@LZTGO)>|6X?xwhsvCj04sWV(ALvzdQ}rQ_Lscj*2v%vullX) zKi2F&{VDT~xV6*$t@OS~ocM;j%YqQ#|CYN=-fd@I^ ze%c0Xjz2y3&@>y?n;l zB?(EtiG2cdREnt(t=;=kT)7&?G&wp!QSzUA%#Sg(x@|E7f?^uDz3%JCIHUVOBf45Pvja8Ki zH51?OIKKIEZ*;l1r9WbBBZOl+Lp@fbWGDNN!S;D?(jna^K;Q#5^&aNPLeF-Mjx($r zjHTd9%5*3dODF>x(U(1XKgU{n>3z^=)gnYT6~$c#^Cw3in~z^o zM#7vY`!M?&{I{h z3ez2$U{$*S*>-}6^)5WBgB;Ga6*|PkUOc^WbR?D%;xmqB8Q?fLzA5$VcbTIi2anS> zRN8sYhh1J!$x%)2Hx%1Um8C1AlfU-;n(}?0m6TZ6%}SaP@pTIE7X3cEKXp>E z2?_$CB#XNWB&uwqwF7@Ft;(08+;*oSwLf;7yK99NiZ!Ptx82(B!n}7xRldH)rDhsh z<$i_YMkMTyFB>+mei0CL=2kL=XHC}0b|fF@gHy|`-g{uqrj5*r5=JHYPu zsx0OE%-S}s--mEeuL~<$Vg&m;A9un8KUHi{_LrI_r zu|6yqzNCD(b@u0cnru~8?SpDmshX%%EGA2JiB3nlG4u6WuX!C}!~OTO&HGnsh9VrL zeW0vFVe`L-^A&x6p@zcBZzfzTr*gWG@ z1X>m!qzSIl6-nYJj9zcMzU^vY6I50HL#N*q^t(R0zO6F9gn_tgFL5-mGS&|Jo@#Wv zwj1Cqud1pm~UiTVQ%QEr~jL=G=y1TH4F zqw#F0AVc&dcm;ZWOv(81MBj~tp;Y=8v`RK+xxZuRHDSuzDH&Js-N8zePm!j&*BA@1 z783F%mVNs0Rw0&$k{F^byr@fEC)6i7>>btLUj0(tSGj>()ON^PbK~SJ1Bl=JM>Jt# zZctnYVkr61@|k;J2`VeL!f?fBHl?C2r#<#4qQd<)?2*+?R9GF5@C{+L33`C?IOJ^2 zCRSLka)S{JddaZ8<^&5irkf#X65|)#fTRs!Kq%AN{JaID#^~CSB(z zq9J#yDrT(X{0Ec}7|*qsSImm7_IsIQt4cK+kwOS3?U*8z}<;=1#D%@ zzQQwb-u?4|M;w$4Q#hpT-=jF+Ed|%V>yR8X(u%m;<~MLcBl4nf520lKG8P5Q49Bmz z&g0;vAnJNKDDWN~4jv~^R7>5KH$&Z?eZ%OOlQx(4P6)?+I2nu{`qS~`kwks}F*`}) ztcV_)|h8J%kz?5hidJ687=*<;hPiFP(8KRJ$D3r#yV4bOdCIzY^Z zZ)eADhBRBT;JulUPpc$t-hyR9l2c;M{LeG{J4e^DxQ1Kyoh@odEF%>e(1_7nGtB>YWFwyvCL_VYA&jb$18%?0R$ zZ-Za+De|K$$>{?D{ugeFqTbXZx*V=l_hi0b;mNo4KWGD^#Kd8HD560%r;lY7nPx?D zc*_dZrj-79E{jf{R4WsjOoYnOqVJQgDu!f+r@~_Fh zQP?R6(9%Knr(NnJk3M89g1rq0~YtFhLcqgZLY<8rxwh)H0S-<0}WV|WLhX@k-opph&GCnK%%A-5BjR2Cs0wTh|OfSmS_SmR`>3G`lkn0noG!#8~`0$PM9!ZqW$54HVle>Tb}T z7ta#9*`YZ`2Z4yC!&h6w9GB+J!Gz>X7VsS$f7Jru9};z5iXV}q4@=UvuSev*f~+M$ z)kA0KX<`^NqF=8?B8x5 zHOZVpWA-#Xx-6YqwiK#fkVA z0TL^=3)$HBOb{aEVbnrXw|6N%xBxH#U3Y=V7w+j^EaFe$WGy95+}WiSAp>+B3na)c z2GRo=!9n(9U|!9Uhri%UO_wuNS>Vvszv)T0HgBc=x-+P)TQhj3<^3h5i z$HV3EWj|hSUobA)$*7ruYk|ZLP*8mo6LJp^De|-&Z5BT1c=?QkK2onI+*>iMaI;}m z?Nl10r=#a-gkm&|0;L{G`}E-3dztOG3hs@{iFk@mE^-I`5Pt5)Ppn09y`_Os$_>RoAI^E-eO_yH~zK9m+1uLv(PR9_i(Dk zz>SVELg^K}G$IN9dKa@iQ(-G+AXJFkqJ-8Qsm6zXmt+nI9C8U&2#SN8_Z|>OTOOzL zoM+iJDSZBQ5doRkz;1|oBdURS=_a<4%N?JCiENp3Y+!rw+uF21V2QhNAj;CH(51|ME+_M}ALl8RKSs*B=aLoSS`U>hmtI zdn9KDf-ATd)!n*^-nRHiKC(uTz~Tr@bmeg02@MDOlWZ1E1GC!aTc2))6d5Eh6wiM> z+{t4fL&_@c^7j-2`4Dg{_JlCP&D@dF^7=GjrDLKTON523IAL z;XZ(lgKmrgttaZ|{bZ`+)N4T3l`^*RJ^u0WPgNVgh+$ay52+O7i^Kx0ZdGgU4<{6z zy$nOWZ)7qu-EOQ>GHG@u5$&+}7m^VTMGqB@o|J;a+RVuy%cGSiId4{szS9I2%s#c< za@aE_e;oWEmM@6eESRH&Tbi(OX3r+@zVsHxGNq0U?b*@i=cTXq`e)$2yzo+L*nz)b zCU4B_6{{;71m>n{?j-|3IxqX|3-V}v- z*Ed#L==400K5Gnl5-(OS)ITQh(JTyQCTxe4KyDf@{^cc8+Oo8s8Cz}tlfg!@Djq;( zwbEC>=M$he*AHbXurop81pK3%NF%zL{27m)2)xnn9nzKjD3&(lqUV)^(D5Gsd{tk0 z8*_Ok;ODgqVhkcDFA8od8uR(fZRb9(JZwDz@>97D2j3O&>47?_JW0k;G~U`&y*R>m zPJZlftl*|w*Xf5E$mwRW%4|L6mo=UC-;8DzaS#)a=NrywD`zfG z4E@3x`SEl!STXMd=!6jGUra*G6wCrG_`*_(F$Y!qva$>H7a>Vp#FNtcdi@P`QN`h3 zg@i|f8j?rkVVetS58q6wwk$z)TEY(Hl$mpz!S;p24YllGtGmb5O?w{h;x@WeFn7-B zd@8!2uzz%lI9k`;$}?c%7NA$co%P4B1BDP&hWliKS&b|4)Dh&t5YqC7$@1 z^t=IB6S&o};6oCtLNAgKep>DC<+S4;Z(++m+>Pq)PP-mC;$?r2TWP|HwwT(-@Erwt zR_u#2zD{>$^b!(JBZ)Aui{KR-mC8foG5D>oPRri(cAAPe zqh_rqHT5K8Qb@qKyY*Bxet4R`$#3;D3o?m1jQP^U5cO-Z%-1(!+}HU@CNYCD=+K8F zL&-9@6|`Gr_Vxp|f1i9m105L9@{vOV3k@JW8;USyUoclBHc5A zkvIuaNk*!{FD5M_t83#Kb!#9Z>|3-WTe1&DW$XM9L(|%%*ylnm=bgzX4)(5+hG)wI zk?bw!DQbmd$Ya0bNOyr>zslFZ_KLREiZekLFJ&xrYcI9QgZud| zes-FS1MH)kMaqU~gLbKP8okXxtWZSwMA#YnlXbFaNaRRltfixd@=aNcv1E` z{Ep9{LRDA|%Xj?o)D>8Q^$_POJQ*WnI9G|anSo#a1lJYs^987zf>`K^MG7_@V^vZU z0?Sa195fU>FESO*hS>0fucxb)3n)VRX6N+I3dY?u3G>5Ob)a>iy@*g$f2*+i31{pd zEo&8DM!QqU8Pr!j&Wy1I;}~VB8r9v>GU+t}zvl!xux9pobv)<%TMo7>eli9bzxB>) zLkln^R}^<@kjI>ntJQ$jvDGWz973#xFwR;kVww;sj_*O?=eg%%nR{rJe4C)@dmy28 z>+l%pwc>vI_r_zsPd9E)JaZkH=3^MRAD-W-;BhW~`;v2m9IdA?p(K0Bu0rH?%DO5T z8;*hqZc9ls(YIzdI6ss=oUJMYiSCnz6x_zU2x4 zm*$QZal3BUirt*DWD&~S-SEzbgBY=lI`+OU>~T3>QICCmcyi}y+s$dv=24|x&S?=) z%9ahm86C)4S{uQNuD8hSG03AXqZ3YhZf*UXhTG0y%$UAb!AE3RF9HS12@gQXc=wup^ z!HWK>%pBI>{9;6Mz>G#;C#aY&ur~oQxP$CRR0gg7e$K%)KMkdpzTW@M*^E%RO`ofE zx#8OHB(=VBb%*OOI@4F|;?j?z+G2iryG_wL1??3CS=+wJ`&ME3D*7+7`t3$-syzGn z+p3wNC-bt2HwTe;!ArebpTKROfSN@NKPe8Xz-ARJOJ8D`4>vsljmtqJ&-W9LjzZC( zu~F2R{7y-^5_Nizur7@)HDg$jK5yQ@Z@uCo^OrT+2CyJ+f#l@-&vPKczG2t#Es@5k zU6to@Q9)yrV*ue$-15qZ<=|$=B3JXq2KP-SG2H9SjD+6k8y$T<6H$t#0*jRnen<3A zwM*YjyMG+k@?E~%>vttd-mH)WC~v$-rvjOu{WPT3AzN!X#AHfVbk=y|bwdh296w_^ zaXCoZOIWb@*swKQwm3Tdh^(G#K|>9p1r77Fc|p5S7?) zY{7d3^^o(sG}o7^;bG5x(#lJ&U&!AQwtTb2Xq~<-^^IXx+k%=1k?SM}Y6%a3V&UDr z>bKk~@VkXS8X9SP2+*)RJc5ers`1S4c=O^Pg`({vEq=x1AJ!?|=~oLV!LJo)eNZsX zr}<-s%qPk70nExJwC!&)TAeQUnn9pAD@z`r2l-mMjemq~01;jR^Z=X4;!VkfTVFyAnI&wWdT*sYca3WBQI|Qjbsph*cSrE|Ep7SC zr)eXW40NIUifNnf0cB8cy}q?X>W7_TtSzuy;DJeLK z+3iwzj;>^_#NnNu{zlUGFS5W?1_Fxb8FlJ$1 zj@>~>LyZMZfS}}`G<+hIw- z%AdY!G3usk%w!B@f^^yyt9$*N{ZAOSLd>>q6Z%kZ+NeSXJty$S@vTA;gEdFxfyCYw z&8Nr~>nCPl{8QE&=%gnM-3N8`gk`gvniO{=SFJ*>y2Ki7M2_9ZGeYq z`4v-riDr@HbdL&huJ>_?c3y=Mvhi>KnV32z&-$bo(0GhLW5{rgB4Vb%9xxr03hSc6 zd5MFK-lp)uAH&@OEv;4SIWEh~fsY>HC#^PLkn#@)H~}PKV0ny;{5l`iW&wxzSNg)x zKX7)`SGC@m4hFD3Mu#4Gu-!R#lt=kpjeA-Es)BN7JiKRR;k=zL)JdH{aI zX9K)B$g)NYY=Wf($d6KBbcD|8O?IZ&v{hfRLVMsWjm>=fVO!&R9)Fj7J_P{gttC6_u+mgylSM#JYh7PYtqFBw>35 zFb+HrT)FHxzY-O5lN(>|Muhv2=Gborub}R0p3wohY=L4angg>t@`#g=22G;Gg$fGT z>*eVIA-_pFOI(Gi5T^Q!%jrI_Z*_04`nnOGr=Zm$@{s9vCn?`*me%}#abH(>ws7W( zQ6{!wr6|^lYR$mVCP_fK1hmN!B&Sh{l~B^Dp@&khSr{+x3bKXS$HsoH9q^J(i5&K? z-u`%yv8>|9&wWl3VLolpvi75QlUQCXS7g1$?Aa3Q#Je{`e`-QAsk5kCC$gS!FPpYW z7naO8wD%htH3XMiIex|^eHYwp7CI_hq7U+kc>+wqo&Gp)R|dY-DA-d5cZ%thO}uFt z+%Hy_niOQY-~qfb{M0LJGMo7Q#5ta|x!(>x5rfHmU;a7&59q`?{;kEsf@z54Y-@(QXQM}fdr=g{Sk`Y(6Df6A~ zDK({FFBei&N)TQW{ZAp%ryifh6o3NK6g(5s=@hBw;Xf&s>_Gkum+i{Ck2t_lJ1DE1EVW|c z-Q}%M?dP!pB$*2KvtgihEHaCajmL!4jnR?}NoV$4{29kexQS zYV;?;xiI(1!8K@%R<>s?dRrcO{5X#be#TGq;VU@5L!n-RK?6+m+v~03?0F z-JZEif{=Nn2iEco)xVfE?blUxRiPg3HM z@AGuJFxi~81y2m~^nWy7GFE(`Vigc0{dIYU9;@=V`P;+jO8n~sA+a{*pUNB-c#f6d zm=hg#+WWqBlWLIzf2evJ5^ace`dgd)*romEhL17m zw=R4MwAqrfPM-j?r+Ock%VQO-a90npNM*5uXN#9%-^P$j?yrt82k@o+@KAI|Vt32h z`h{F*uf@l0_K9~HjQ5f{FpoMf1u5<^!i(-o{-}mwvW`CnVmP|C=dte~LChbDZK*65 zMp+d7n(*_!bGR!I%K3V1h59o>g_rn>%q#(sbZ%rbJUE7__WdC`6mQqh56E2E5&JnU zt)n%w>Aci($Wc4M{nfzW#+yG_w;3N2w&?at0ZZJK+TEZu&|0iC#5C%@_cZ*%!Y+PyKBF4Ppah&153=ycyt@>6fiTXnILX6mq+W@!s@;w9 z-i5m_*Qa4~;m7Wy|0gf_gFfDO zBj|@h!I(FN<-q*qWSt(npBHE>JWtti-VY*whVX2LIfQ?iUt3K(POXR)qa?}Zkl6BD zl%0kZsiOKqmy%eoIbEY0#GUw&*uWnY#`TQwS`EahbI0fx$(m_PuLpHF^w=D{Gok-A zCzVERNlE8?#9hEpJ>acH%9h3XO-#FWgCCx7RBJ z2Q93A+!2uhI|ag$_rtAn0L8DXPqEiM?&VAy*DYr`K5pov58Il(ig&SOg_z3Rla3-C z0bzRH;O%JL_E)_T6zM$`qXq1NN3rySo#j$#$Nf;BGqa}UtzK;mUJ*N&{Y<+axboqv z_CmJN!_Qv|0<4SJzN}@b)zp6&>^?mQ8Rp(3Sc&S1QunwN6kOGykDlN(3Q_w6-)AdM zGv0{ggcJFfieq!YMB>f?ZqFv>XD6y;0b z*k)W?#L4(PTzD6?uCWId3Q>r+n7krNAO*D4wr8?woG}WUJn!pAuRJRzk*->{`;*Q_ z?uKaM-73R_@o07_5Icg4O;SC3?+W;nWQBX1u`+|QDcLQb!0akt^bpjIftU(C*O08~ z1tLvxUx5;u9_vEIQ%KHF530N&c&JcxSS2(W9<1p<4Z-q@SUlV2k=Q;u_6&xT7?e^G z)^?V3C+J1^msWhvz(o(7uIU1-0@Z|UsHXO^7^KIY{wR3$Pz5W8^9M~? zWnNjkXaXV;*PwTa$6ij_u+01Sm3D7qS~U2GM9!Zkk~R|~S`wMwH2vhO!E9+B(yp9p zfl6{WLtiM+cRwc8hmTa~(JZQ@(wLxnL}uUY{X~dj7yEvelx*FTmos@KeD(o!4~t4P z%;eq~j9ZE?rrofuj7PMkY)^cDPAOqqCBD6GF&S;u_R&OyB?&sh693z~GLRj-wSQXG z_)6oSiuM;wnrl@k!jd z3$c-XEH>seXR0>n^Mq(C{-c_z)dypffZ_`C3juJa;oRXM6*LNQQ2hLGa7W{m4rm2x z7_(kKu3yA#6asR+wA%4TA>UpIsZdct?WIud8g^nIkpLFG|BoDNBRf(8Ru9f8q1Ssr z7OQQ4j1CZde(6MW4Z#)tcaHpUNCG87PA+;@b?*V?rFnUL$}2o0vEKUXpLq=;q!EbW zdvR;k#@=lp9?trNKg_G-ypKg=W#4<#b5#$npHP7{`k5(JRu?CFD38-1E={5{Q36vZ zW^pq>MytKM!lo$HX){jEmknh{bdvd_sL4XRzV&PWL*$ibSLnN;7gqO9+BYxEKaRaW zaiN|+COE;)pnu=%iV&V`{zPx=`67mA90B<|F}wt{uPo1(KZEKBOzqx3nqjM}8aVWJ zW0z!&|I5#GL#I)B*>4KOi`K-hI9r9V;7%pd)Z)usW1iSWl}oD|RW$TKUGHaE-9Lk% zaxRd6$YmZfjbF22>y4R6sUn*&mLzU?yqqwU3w2qEL|R!asn3@eOR6HX27Lf}3|!1O zG{bjpQt-^7hrJLy5Xh~HX~p}jQ3^k3NOIj->BOhXE)5YhSSQe2%*@`$L9LpdJJ zxo3Ypk6?A}8>3GkwVvC)G6nH2Jw2jtw10$Va6IlqVmaoVUu)X3E?M2*8UXH-8#^$XNz2rBNvWlc-hCeXA!jA{nkOfnn2qi7%+ zA8%5Pt{xAD=Aj4w!m}j8&SgH2l9@&g2|Q;-846J*&W{H?(C;5D1{h_%=#h^F!7Xid z_AB6o>if(~Kk-lKmCkpxNC*)U?O_i~puu%`qtO=%7n@}*`Wv{GK98zXd=>4RDAB~v zGCf?eeaXVk!VIpQW^3;SD2#ym;fQJ+1UCfrF~4Ca11wx-L9cd@)17^u3TugoUxDJ2 zADkw_8y>jk?ij5rHFtx8D-`LO%MlRKVla%De+=dBd^9K%vKmp0%9K65S~LqUKa_lI z)8f@hO!OGbmB@N48DZx4V0Z=Kk6A0l73aN;(6l0+$rl~qAVd9DUDERFFNKa+vPXbevE2Sf50b_eV)^4;$jsz>o~?Er zM5UmL%qZj?wt_ALw7D8~?7aX_E_53rpm<(^ek2-T@xwO{(#LN`PZ;9|Z=UY*dkBEu zQA&hF=y}2)KN5eQsz;_m!B_8=^KC7J^-D(2!c&goOF5gY66`l>@)f0`U~5*cXUKol z+*(F3*!g`{_d-&uSLo+S-)PKe7=`-vKa6Wif&6-#IiC*h|JCo{x5p zv;77b*v7trV|1Pv6J6)-;qD#oWbtdTEtYT#j)!^LJ`%li+FF^k>kLV#m9KpP@3X6> zzI2}8x+*!1|0dPoNU3v6Mo`W&(xKBPdrHp_3>L+*3YVcGF;=YheX* zaj~jvP@GKqzrI!#E2}IN^>6L!s*i`>JR#O>=!COBQDxuzW#^~DVS2wLfw8y*v_$x= zeWtw%iaHPESKkL|`4WC-AZ@`tuvX=ctS4+ZOB&2iAX=>1>HY0_lHdC2YlrwKPx47T zV~G}=WCiQ9s;8FVDEj&DXB1v5o23Hw7!~AC_P}-HQ8(B(-2T!`5gP`Qta&UgCwRl6YynazQUj)X3VNx)_?IyhmZ%z2kHp7r!mk?F|@O9#%P2w z%(NVNN8MH0IuP9=R4WTucgq-jvsL1ag_v@R73Y#f?e1U&o*?$n*1DWiOwGYmWyxN? z1Y&-E$24#?+DP*1_H#i39@-{bdt7PfxN%6(Gy?e%s9cU*4w~7PY`C&D4Ghb8?}&i@ zu^CVS-6bDml~VMxic7tVERHt2WSo&evSW`p#8HJNz>on)55lAj0Y>;#j$pD^;HHoN z+O~{m>nTYWE8tD?#7=fFcm1gxjB7#z}PYQZLZaxR1O_`&TZ0C3J2Yl7=+H5 zo!-xYdaU-URex{t{V!6^Az2>%f$zUL$x+>>p={%@(!7S$Qw`ZJw#Ix^qH_8YxOS(| zhiYV&myL8PkY4Tly!j;G7DVe3kj=|5{PoDiLrdlj_t1GmQZ4;-GFC55Vg;U1MVl8- zmHUVb_(!^^AcSZljpLreiMK{9Kb;JPSI*}*e2=akG9?#;E*xAum#w7I!py*%a$En= zPXVXV^Uo)qjkHX?d{BLEBumw31R)|1v@L6vB_xlLsE%^W-m#2o(7UZ(00@x4il^I@ zqgHa{8Y)mdkleJ4zM%HRGTqcxPtC_M6?qRM>isy?L9Hi`9=SQe4!dRYYYm5dCrrV8 z)FE_FripaP%{BpOAxJic9zzU@fzAPc)sPz|Keb+3Wh4g^6C{A_-tKQu%h#S&RuC{_ z1sZm~`iKsF6vPDgh;lkZt=|Vu(Ca2F`tX9e7S(Cu=Fm8wN9#LC3*((pHemZFfUrNK z*rU7EnG9?Ph=QZ-BNlNN5b-M3G=4WSbAfRUBd1%1{sY;K^yeNVo2#;g1pM_M`}+ij zn;-d@W7lHHN>&kyF9vZM1$ZBou5Sbu1;XcZ^xVkpxqf^1qZr{Z>pSAXJ2D}dr-$)- z+3F7l%xea@6nw=-hEUpi-Z!*`yHC`u*#Cg-!SV2!fde8NsxBJTJ%OavDsT#beqSA9 z>aePSDVPBw2%ULjRLRbfkvdK70anibJO>9*pr0mFiaB&g>uH$#83ae?H2>PJK%2I0 zn1m1vO}C4fcy(f7ravji7a#uYG5P37e54$W$6?U3z3R-KjvQ0?in0bLO~+xQ173U0 zje&irE?_ga!>w0hLtRamrsZeUgt4*9j-U}>aph@B;-dNZz@rk~9?Y-zbu^cgcR!Qu zJAKP>zqr=Y)s7GsQ+N61Eh}V6x_z3MahQyv6laTMPh=T#*>b&ge#pJN`ze|Vl^PGM zp&Vo29+yyteQw`-bJE~ARsHQGHB7hdDl14=aAZB&{;tt_KPJV;W6f3y=**t^!1=C% z;KR(ZsWD#66Ip#v%z+q7u5?fB`^N{r-^4SnaZDPB*O@(n+ZSsjb7D8o!-lfL{ofv zEd2HPXmVTE2eOS=M8|jX5pgOSb6dmrTvc_8p!hhr^utAyz7@-nHKtx{_ad zi_#8#Jw||{DT<+~3X3%6A*L{`d}-J0gi{vEb7h&(?}|ANr!$ZdAB5EucJ}6a+&97m zr&JvFeeO>GW()??bn-okoiIkekmd-TU=+n~l_XiE(^(Qrr4)DJs;L{3>Oe32Z@cKE z{Iggd?mObHzS7|J2$rjCchUDJWI7_ahl$)zZk>geSP4$Ou|JQyOnkTTD#Tkw;viv! z!$9$OmGLDRkR2ttYbZ7Qc8T`H=}6RW4^1qU2GGY0UdNlSy5((mt~1w6=~x)aB)3gguq*Lo;d_7)%V zn;t{?*QD?P?0)RPUqsuT9ptT7%w4IfAob9AlM z*n|HC=W%TA$DkOv#_yPeL*}555iCj;0@L`9Y}578=}je&Z~ahjT8K~u7EP4z_7UMc z?>!4B`8%?RdHjjw^kjyhKdK`8a|juU9_@{LbQ}j}z6jykG4&!M=v3m}YqlI7&^_<{ zNTZOsuBgEBq$-BG8gOdUNy@CyHXr=gLNFf(He3ddhHwHc^K1kO5F-Gr8o45zVcE|k zoZRhx6K0-b`aznu)iaW4)V4EGAa2uV20HN=$vuNR+PPmvZsUbb;wRbw`AhKS_IfYS z=VE`jD869j`NIYipJ2XsW&zhMQNh>M)AVJ3N7FDTy?wCNQ2*rOo<3t$M&pcHl+b=g z1VT)>GCl8E&*od*>uzS+Jss^-TDDH~VVjK=9+zUDSy)_!5sR1U!=@U4utA@P&R6O( zfRQvcFFM~sYWy*sPt8Z1w%n>7{H%SSq#8o2bU1HaFuQY4+&Brmo==&*d7=pFX1;sN zC5lt#3d6}6$;oVno+!D?#v|fxf3!G1{5iPtjg^QzR5yV;J1cR5S5tdjU~9-gTsb&J z?Q%DWX@b`rJMuT6m=Lyple%%TZhHcL!m!nR&SuUL1T6!kzuJVZ>U3!ZxqAR^1JQ{4 zLvlxIJQx3VdHhKn;vw|Z0znlXKHYaJvo|)tc7ZdQ75}vgfh15SnE~GeeG|5aUrR8+ ze*$6Tpdp#QK^c^2pR9(A%Ed#8I_cv6WnjPADn+iO;vS+aOaX*pNQkNY2*%LEb3|az zHwT-=6r_CEx~Vuf70Q+4d2_PG((|{)BC~C@sE-RzFRvw64As)na>___ZO!#0V0^TL zm-&4#uoxP@Zq$WU=;hQr5au`hWoM5L+I9SpVyUH%VFn!&ZHN5?n&h)Zh5gMIIOM-}AGZ{B5mM%(7k*^$sM+4bj zg#Yr)xmC2rWk#s6x~s(cHqu6T*x;SOH`JQjBiae^7h}r;5|SP`5jZhp)<2a2ba-Wt z(Nkm28oiHeV*hMQn?#STy($qSC5hg6xX&E)lY7ZG2`bYfVQ50An?(ic78~9@SVJ`x zY}#6-yz8Xebd7}Hc*S_v4xz9P&&m>x^;^AaVfHL{akf0Hgf=}zes(oO7mSx#(m=KR z5g#35U!c_?tep|y-Oxd;3)oRbMBn!j3TFTAA;z?BQFOEw@&zEuX5fV}pufM&<95l+ zuiovof4QQ0z_La?mO;>~n;P+BgjCf4S@_y zczCX3{%?(t^T>c@&?p`r;!V=f2%8ruckZ#0c)AS(5~zpi;Kw88VT9ql2kcU(>{q?N zEnnq#Ak6dJsV62}UTX!!yQqDSXcRoUoh+77eB9kP(-qr)=lOWmqVSxot*IL>ul6r7 zqIS9XPrr#C`Ol8qM2)B4YrABzyC0w@0`^k>j_wVx4; zT2*-LI;h-u3B8?y8cCtg2iH(bE+K341c>bA%6268mqCJA$aWWI*$5^6W-N`(>s?+} zuCW;31HC61#ouy%_Eko5Ulz5xTiyx@&QWYCh4y~Tpt!sKJm!PmOAa^=jwuEp_^jC2 z)6gY&$O0ZooF`K4g#=8J74fW9Ywj}hKIU_m-B8~5H93j7WO-wb`GDII%5`VcZiDiZ z%Qos&$n&@39nzYQngpEY6|Uzw1};83vZe=qm~7ZZO-l-hfMydLB1R<9FarOZ3=65@ zee(DDyXTo-IXT$&-dFg~KK1M}vT?v5X|hm=%>E0c($3wNLqCo30U&}sDZP@Ul+tDW#fu7X-Vs?Pq$32Sh| zkJ5|7g8zr6vy5xLZIFY28Eg66gYRcRmJzzzX z$qRy=$QHsVeDhUo>ln+%3!78$(7JN_oDKs^z>Bsl*q#Z5USeMi>T*le6=@H^|648d zJRUvfBEA5xB6!a5eJaK;NH87%b*(4>Hf_CE8ezAIAKN0G%%y{Ofo(-95U{<-*#*ru z{SlnxYB?M1MqJGPRl2G<#{-Lm5a<3#8S*U6bu%=w`ixZjc?lk;#H7qM{A1_Lj74gd za-~Sn5Jn7FKkXL{VQ~1=W|E_%+@MI~w+7Ua zF(~0MgVS#7Unj_Pwpw4FU@5Cvlz-gai!p|6ayWMg+a=sd+*$k?5T+v)$loO3A2@ei z<>$2>=-l5%#`}?di!QG%)+%39U8zaho9og{ef;K|a_>%8s%D;YpC6b3diU&EJa1N@ z#+1|(8vdPetsoGbLm+&-?%NHP^NBg5fY+Eis|G4OcMmhyxoSrp9QG9bdnAglkDdSC z+y>L!^XdkRt|*a_+v9y%mJp(ogYGZ!x~!R<1#CA%Z_Uo27)&t#U%&Uqd+Fvb4eUTXhzgQoY4DDhls&y+uFhZ0~taXIKL%XGP+GqFIibH0uHf$xr^wHeqCr{%c3z8pD(ynk@lV77J&F^~L|9b&M zcytw!J!L+OhtJ?Pg|B9VjLWk&>S%I>Jp zq%E<40wrtq-^%zWY^~MgX}_N+gTmP9kr&q=sdRgsAuD{srJpn~75k`0XP?XQOOT^x z75q(i9J~50pdZ`tMnE(@$a10i9Jrz4%!ll;4vIe>0nnF4Fa#rYKQsSh!#gDVQdDqk z9X4t+3>UNN z9cvEH3*fBP(0FEFK8uJ-a!#T0#VRz-a(c=kU8rK-r3@!_@~g1j9P|m0cRDx#<`rZP z*A)Lm^rk94uV_kdmRl>F$xE$1?fP`@p#^KsbN09M;z@PRXNV4VKsPJSiRg3{zU9vQ z%KXQS8Al zgH1My&qTQ$cN$DoeLlOp;I{kXfHep8()7Ud7l5fJMHzWTaZh)qNID1dP=Jf)`-xHM zmWY-fzT(H*;jgj;E7<7ue~}0ak5WcrexOh%qQ4B75u8;Wd#Umea)uh@@zOlIr#|u) z`#A9F1T1jZQh{B{DJw314r#dDNFM1fZVmnMZWg6X7Op_UAOPF0V)q%>wV$gx#@q|2 z`W|ZK%upNe!ha)13~lw&GGZs}2SKZhT>UpkbMHD%2}*9`6y)h)#=)ys>xMp|_L|UM zGOAv2hRSOc-jQg`BBr^(mO>17)cs(TJZ(a~-6?z+gg+7%inX`-i=z*Zo_g1O?O6LU zeZcwLkyj#Jg7L+bIoNz<@?@zNa_T>O!rx5i_gsH2XY8;LMJM|p?Ux{m5T_qa92Y#F zjaexeV`JP*$>ldsz7>`}qK7*}t%X=VUXFs!_@XKG&UTnvx~`Nsv!o}#FRAGnJ0FBy z#z`?dXDSgxj_I`&{8s;TM-+OApeZ;zEg;HfF^`*s*$%Fq#l3fSEXorohlTK@JFE5u z;q4$YEwMXAbq7G0{FBD}?H-YMy=!_~TQcFJ*<8S?A+Q^+bfim`>Fc9$+rFzG(vp;9 z3Cr@sz8;12*jKcV3Uc1Z_;3b+_*)D=3 zJV6RV+~j)3-Y(%d&6r3?GAR1C=|;?w5Z6;LN&K!MO(G880tI2@s`~1F6^!sm_JYmF zKkS3I8jvfrF?|mF;8|OaHju9-CO=On3j*?s( ziv!L`QTh*K@rnYMvC|;a2hZD9?G-xHH1PWMZxh&YmzhK2+v$U06Ozc4AQF5R{)8HI zGQh59xq~z>kgndh0LEE^R^Ib$yB_tqy>{a>!EXe!kD2!*wfLf%k3b<+a2Qv~TLvh1 zY&zWtW=2@6%WIXPmoOfnVc0F~_ibAx6g(rB$*5!Zb&fF$hW}3kbvi3KikWL_2DymB zn-&q^W}xapJWN(?znYGGnfFoNJYE3P;w4o2)~X2X0~b827x3DabGL-DOEP`+!7Nj~ zPj*hb#_PJfH%hta+kA`q`~24MAH13%&hkWKOavuJ(6wXklfDT1yO+Tvx!4 zS(UDTW_xhz|7s1u`?a~5_Er`@H01v;{G)i2g82uY=th~GgHM3N=xWq74TaZ(_{9hm z*rH5Uu}(dL#5y=Hd+!l`;6LxbH7$GGjawaQR-%g?Xrps9Mz=(SX?@j0A(w34a8bsJH}+hI+9iGu9Iv7QvU9R+FoZN z3ZKG@N5ufIVc|*QcQi-7!Fu^$kn-Z7IPlfaj0-|zBiE$NyVdF4GM`r;Tg6w6RJTzgyxgrHGOA7vzV8z1Vt_q8K>1heuVnJQlBxyxR# z#MM5FKyPN7cK>Q-8NoXbdPAf*ZTUU<#383BLA5Bn>4Xm{Y?#}pZ*kgMV^!wcEZ1)i z8@L!g`4N!ZdITRB=Ss6x_p>6Wz3es&%KIMII1zyH!mSdx&MS)^%pyPnX(1F`~}rqJ0`?&5n@xOqnK)gKU#+{&9nR0Z1-ihrYS-@xw%;cYPWkmN9uIt}^~_zTZN{=|*D&5+)en)x z(x)(GVb$K`%REXS)MwXxLE&c8dH^}Sy%sW8vegUkh?am#IGWA*HL#I8uWE$bg~`O{ zCJ1l(VJV+!IbXmek7T3euFdF}n2H2hqWfNk-%+WevJRU2sVlEK8Vy)wHdL{62mfnjX>sr6}!JX+HRQS{1ZPEOpc80D02UAVfIfDQB$I$ zR-@E1_zxEdTM@DPEKzY`eC!T z^U`<4H@L7992ouJ(R;Td2-$1H=_LCE)F#oVDG{rwKulbf%&DmW&@|=T88=E=61pPv z$mx;H!PHFb5iBFv+4zvY9s7qtvh4K}Obe8#OdX}md1zFZ8?6EMMXvd|IkV9w?6z_v|k~y zs~mdj8_ay06c-Wlee_bQKL$&zG2`B{#0H_t@8|t!`B!tQIJmO%^}49k$&Wbep~}jm zcxvlbj@5dP=$4vVQK?&^zmpSN!YkL8EWdI%As9al_oT`Y`1~vFkf&DOHF>$C z+DD=m;>Ul~=J`ldJS%sKX=*cL8AzF_hbu0IvPT~MuJ_C!#2;M1tAw!yV`EVio>^Uz z6PNjn=#HHW?VTPe*Xc5XkANS$FgQKw=DoJC>KEK6EYb3}fb7hsQnORCIyxl>3~QIV z&e5G>2D9f^CLphLs&D^${%QC*j@yBW&V@5pW|PkK;!R5SYsgTHlu|i+%+`N5)1RJx zb9eU)OjeI2P=-Uj9h`O%NA;{3tDgUL!MrGWv9`At(rX~^SM0(M@nR|gM>NRjGPx*O zA`?^BSqg-?Lm6XsHz;++&-sWD`Q2LO>gnxb1>^RFa zmbUj&n;uU#m)IVyu>x9r#^*2EV!-$eR9sA%$2tNW6q+dc;~fsN*9UA_o(GW*A&d7# zz`IE|%I@1fg<$t>X|UH(ic9#YZGxoXlN*8*Ya3L7crP{TZ}H}DU&S!K>pC-oX?>yx z{T3}yA`+ScOZR_)Hz4?L2>P$dSvueAnG&3n>2Z zzeC#dI=FatUuzSC{H^b8sXk66>n=djBLiPd{R4l27g7@apt4Pi5EY}semS~W z%Ws)hPc-L_-<#cLqZ-49QDO}cY=&DyG7>!{EF$+nJB=+z+B6{QvTr`PG9~dwS1woe zf*tAx7!tqN@J)13sZ?FRpX3?SwYGE{pU(Vuh6|9SG!=PlY3LNw3$H5A(vrCSe76y+ z7o+asLwOsZ)S%T=@>*d?TBiZ!hFjmXNU5Vxy9O4cHJLxs2BEgBbxZTVshVJ_{=D9P zJKakSrBd1s=!NYW+=v{UsmMC$NfJA$a?~;jm51;7^mh_zav~q)?|m zPa^y_>_MtUUAbGDai0mM)>na}r+&ZkJ}FG&h;E&(B2C z@5<-!NV}V zNnY$2yMcQZ@(z*%+fYlIAjFlHGvQ#8liJL%xku2R(E4+RwO*LNi&J8A{R=gLhc1as zfqg)~ACQYI;_1^I6k)m1u^S4{7r1rOwSg#~HSy`VL5wZw1avs&W`PwsjTT+vgm%X#Ob zN#$l(VNUi8@;cYA(6Wyu_=%z`6Y&NuKQ|?pdPD3Z3xV*Ym!F$O+?yu4)T|2QJg5kr zFN^eKRpOimZpJP8$=gM>D8G{X!c{abNA|{fipNv>!F2~Gl7J7olEbBOXT{#B1oJxLFFR0rA<*j1}Yxr8kl_Ru@sqe zqiKs^38G{cz_cKFZM77LNsMg&&^7k?MDyBACN}kUP7g@b(5t8KeQwSdQ0`Uy@w*q2 zEGtee&e?xcrJ+v#=%k#Xz^=Ydi3A{v2)l*~?vefwZWo^jK<@**TK%ixtnF-OfL)D@N&*Km`BQ_v(I$}5x)U(v8i$9(4u=GcgWuxZDY+kf z?sWVM5P2rIG5*6<)${mS!*zBOyK4~jqgSG@sA^Wgv#{ffJJS)wj|iXSfDSgn?t3n4 zcjp^dTARsBb32oJRudB}?-Q@8kCq0|(W9RYCKy6`(#2HzT56E8-Z+L4HjpctCXehy zdtV}8%f6d{lj0-GQz*OHpB0uE-SW|Olyyy5w~&|8&^G>O1`MbZY}ezxaeAb1$?}v1 zJ9pIz9`B=tfTq!Z+)tEhWz@2&(P1j2?A&ur%Z=9D4xHq4^5zzBT6ms9GsGnRSIQ`#}kcgb#7qo2;xk6`7K?;i(8N}&0F`M5q>8k4lZ52y3K z_@0->s-AZGMRMiobI-bQ#={;jjKR-QW2Gm@nrrtYcUiU7C$dY2Da!_}Fz90A;vU#x zlPZoTey0T;mxCpYy^>brPY4VwvTO{y^ACI04QpTpEjkgquC%3h?P==^T`;Hif?kf9 z=q65mOsegDz7nG^xw1f-Bf3C}A=4&hz6HC_3UvZ@{Wz7<>;H_{V1A;fc&wMtaASlf z&d@EP)ni=Bc@&V(mQj!QGxu4N_+U!L)l5ZLig6=+`n~V=QWz;#LM{49 zN4XsSMf}2Z!6&)ops9K+@^a8Bcqv-RVlUbXWY)A;?ugo=-K?AKrGfg7zFZb1_j8SI zy$SB~3nnHlSi(M4Un0Wr(Vo9k9n=l5=Q2*&1VdT zw&R+)4&w}*WPzUul*}p}fi#X!daZ;4Bvb{OFZ3M8U&Twk>U;3J?MdK@sD0&`P$!}J z97RYPFILwq--rg>AQ(S^O})39nxy(G;xrv+u#a-}OhGG^ujrEes=&}^5Jg@C7XrIR~Ce=EQWCgpfXSr^O$ZZdRU zUQ|1}MlV9^?>vQ9edbqq*39nn`|0e&rN2(4Saug;Ty;NU>?%sbZ`Yf$pIJtM_SJ?e4pvm+v$o zIszesU!T;eCmyiCWK%U+s}_9`_&AEkpn{KFL(@h<#VX)2Yg&8=x}*DK_z^IMkBY)W zeib=3y;NuWPP}$!Bt$bD6b>SYwW7b5zX(yFr7#(dV^~<=#R|hSo}dicUl)vLHpc5b zeN2#c4xS2|Gu_;{&02T!N{jPTtyYZG61V&fm0DPjU`t2d>At!tF7#9upJV%9cpO_F zadYultSNpC`FHjS|C@DO&;9dWsDCu`<0B?XISLzT(l4asN6-b9qPtE0N1k2*J@mMx z!&F%1#Sr@&%siVBaExQKa;9Vn7DQHn=Cw;=<-f)E`aBM5@5 z^P+Un@fTQ;Wai6Ggukez6^?;{;-%s_2x}UAbP6Rh+hI`M$Ur?}Oy-BfZZIB#Lv6i- zOR)#Lxjob+4n#EeF)zqJmC$P&+0`E9u?~-?;DnzGuMYPqAiOyTiP)F;ur}4&JCCbXNJ6LArNm}RdGA)*I5YL?)dXN>*HS&1haHxxLVYz^M za;L#k*KQ|7JdQhO%V?7`oWH}#Ls1T&hsN@t;*2n))x&uQmGHyG5*Vhc8oS9;j`xVa z?7KbhEFy*;`rXN&Gh2^8*Z|8yMmsapIqH%j?$jV{--UipDHQPx{Eq4xe6lj<`d6b1 zYYOm}*8ebJj~fjd2sP|J)nw`GhtT!!fKB1MW(`1=nA8nhHFR4Wb0H$NgWX;Re`!7= zA?{fMF|fF~EPk1EdE_q8jmp%uxSgODzo+l>vmjrSbbTio*65|Bh|dBN!1&^OWP=xH zrC?VCX_`Aj`9fm0vO)-gdA&COZLUJ_IB!BB(MQeg4M1m$RW}muwU-UzKVhK4ZeAT;J;gWq^X?&wGm@E~N~(Yg_!xe|@r&^TxrYZQ0Km)os zT=!I<$*|jUGc@;GZ5|7G=Qtzb3d^`ICeO{-^*rc)qOsj1oX z<{FE-PeduANP2Pn-J?osFyXvtH0u(`=rDcyZ+RW)&q*YleJEPK*g7v*y~vU6?7M&t zegs5jlRUhs)8FMKo!lmPnB2}SBTxpPdu@2+B^d}yex=T{UMtJF<6~PN{UP!%Yv=34 zE2y87_cA0Q_cu30)APDEZ4cbhd5x2JsNs1TN5e?A)?%pNU23Bv^%uA$BT8hH8$AGR%)(#%8Ar_EN7xQ{c%A}Q%beln{6OUn^l86b%HjE#x%L}Cj+qO_ zGFI>^li#0th8&#WbrO}l_4*ad`u2?EHdBXm942Z`;nK1l<5bbvj~lEw;vp903B zz~^8h1Vrw?)C$4ydSo1Mf91_~xwg!^oR)QX;BTQOr*B+;A?Hp>UtAEtt6mefU#3en zrsr1WpiJqi-NR-i&{2x`2uB?dDPsmkI&@SL@q2WMG%4i@TyLBg$1(n&vuc(XM{chT zcHb&^+1?%c_5PP}{f;XV-RL>it-m(}EV7%WM0kF@&HMfDP5>t0cCF&7779CY+D%Qf z;3E2x7<$tCm9Bo{?bM|-kGupT4}dX>*4JT=$-IIX1UVVl=mMW1fEaC$vP}}vDbc*( zGxF#DzsfOz%SuHN7hD!~80@+YZo9jD^>_E1>a9@!E))S)L?1F35p%vO@ko>HbjLjS zSN^4CSYp}Za9(joOJmh<-|5t?CxfTBas_Cic+KY@4%z&+&M&)7B1pSmKWD9CZGtYn zv+;kp1ig1*-oFWQ_A=^TrrNRtBLRfbj9*78 ziC75&VFP;)K#P*g$9f^?4-}|iJpa56Fqk5|s#Mak> z%`Bz$nL>DI~WXP%?IzAo8GGw_C^+0!zFtKAN>r)*-8aW1qMKb`)D3#w}MG~U` z20`KidZJ)tYx0`iAS=aY%R~0};neL+i25PkLUCl zU|G8UGVQm`>q{`!rRvsq`oOH~SI@dlZJj)9T$mL5_w31uCxynEJAv9dz2gaFc^`+=hO5Io_ciM0nP-_Tu5!xAsyMW=jmX5J2_0bO4 zyea7py-58_1&~8fPZY9oB?l+L15&Q{?Ly3$-Tq;QI0psqMf{sRAbaJN+!~d*WXDu7 zcnO~)pq;^N_b?K9Jx1R?7oQLIM#g^FLDVjlbzZhkSs{2FT3`mW*18(4$B z+%{i^&S=u^iZWnS`9a_lh((;P6}bz!cnKooL8J?n;8g2fk{9d%AY*8d7#a|n2nTTg zcbJzKe-lRD1QR1s7%mlJll55|6tCUJett%z1Wu!XV!)LD3X!d!>nOYFbS zrg^gyD!10%*Z-J)d4UL9LfxrdTuoB^rU@1-j;kFXVQo zL236yrlH8nU<7j7tT6c=KsLRfv5`zMvzZb;O^bZk#ctdt7pfV}r4oz|`@ySkOLgV6 zUq5_)HQoFL+yL9isA=vwiY|DrOei?m7YviAt{e~Dx8Orl@2^DF?K0$=#|2aI3h;!@ z!rY$Lql}UsV-=zbqnk934`4zQ6ItUO)It*EIE~C*&{c`GFE=BrcB;KQT#2gu)aXHM97vES4b<0lYeDN5_cUj#1@LD2PQJ-X0=*z?~Z1T>ti37A|{ zA!dMaMc~WD5hq1Z-*89SHaMkR-+HLUI2i*XC=N>oeW)gVfu$_8n2Wi7D2Ye`j`8ZH zj!J#g439z|AOFcOoXigxZMeQfh;o5(Bq3N|aY?>`y)o4S%La7yEypC51Bf6X{NV*C z^EHh%3+f~ylqQ7L2;z}14HkK(Fj}S0%6GTVYSH_)4&Fvc{#apr1YfQ8HR27kB9e>3 zym?|i?uyRQVA5gfGz{%>-K$D-S12Hs?*WwZ0hHc`#hNPpXF&>XRaLA&>W1>CWo`|X zAJcR_6q}F>E+Eqrn1GGp#^_P7Yi;Qk#5yDy@sm4Ke|OCYp1XfNVqiJmfO=X;#$^4U z+U+G`TAJL04G{f?;Yv?`k9tYPH+S(l?y_i9!@8ecPrXW6%10y3xCb~^)7pq$x|?jO zuFCkX&PO|)63Ing^$!jVqjlfoSIT()XyoJfk*gp;5cmc7_YiQ;P;qka=W@&RByd%` zonsYWJb?V&iY~nk@%=DR-{J0IN_@s4K@aGLXK{z$rN;_^k2rP{VAYG~mtJuE?%0C4 z2rbJneWu>X$0xQ?^>KFaSo z-C*To#qG~Tzn4% z8I!^Xb>XKlE)MaF*5SR*2M_=HyIO%Sup3Ph8bTGJk97J4UY{?0IA1pZ!I+vIh3$=O zUqL8@!C(+>AAJXMkxSGAWmD8tzL z{N4`1V{ph*Q+^`4OM+;v4D8`anl_$T9Bcxib1S9sZl=X+n2Jepj8d3_m}S7Q>~Ti5 zV+t&C7Q_}g8YDG(jSX|3v1k16bGmN}gJDsJ(dVGBF1T-p%pU@-gbnvXr_fO|&gDjq zbhi~publCNsgpUWY}w$h2jtpvUX7V41;XdRWg2^*y3XWZ z1S;femTT;kCbclV0#kK18*K8v-WvHa`N+h=cnjO5==JBJYV#4pMlU>=Uuo03nY`^C z`#KY!9JCI83&FmD^;?o5uI^-s(1ke9Rfhet4FGUDv<$8N`@8zrAvokon2^@3XX5>j zt_xfZ`_7kqJHJ4{_}2T^{xMhYMaTY^_usAV|E`5os4)$Fz1Db-@$<6^^&gBkm?#9b z2SfGwgs490YBi*M(mGT4dls-PHCx}-dIlTaF7yiYtJ(x$E+a$iYdrM|a~8YJuErp8 zRk#`2a1NPWa#pf-6Yhb^(sN)Yd%pgZxpoGz~=)OumPepy(ptpW?lb&w))`S zORN_Q1^YrW!zJ*s3(Fo=vK=*AzF0mBgsKE%lq;)N%>NJtQ%6#I;g4|=*qqvLK0VKf zH=D7Ci49e%y({?Hzy5Z~OyFL=0c(-c zEu$8o4VRvoeXTWVAfq6y@>98J2^Bur@Z>{(cbwt$1M0M@wFsF>O)Jh+pRGDeT#|Oy zascpySj?;tP@?IIn7EmV*UGpO=_nVsn)H(T^}S(($NyGk4@eI~izTGjeoL|;y2kp7 zw!=u2gNq$Tg#4UxE+FQ9T-UyuR&@2#hSSJCVm^|nWXs>zF9wCjk2OpP0V6Fnen!44 z!tj=cPm@aG&&@}Q?3&agCpYV7KhG1n+VawpRHKEB^o}+Uqyz838&?ZVJSw8tExj_w zjGXK`H}cQ*oUCL3qUTjIr#Xp=-2V(BUa_^?nF0+7Z#h0Uh@D2=00p^|E~V+kC~0Uo z{2YZ6oMPdJ0+JyL*p)qQr~X@(D4e5&u|y+VAJk7`xQdcujtkL0Q(h9k^*Bnd z^RR&WP4Ybekselx!iq&`>xb46l-A&j~gnZG8&zaijfNmn?N zl9TrW#s+5UGMgle1uo)~Uf3gjE@IASpr27UQ0PdZ7fk||oOa}i?*oJ>LY)E#t7i%1 zyKHr*F&1Kh4UMKtoF0K?&~sf!F#%d(^kGC9a{r6Q6WGPPr*<>+$NVF=GRtmvgw@gn!BMg;coPkK52|RXJ~GoXn9kCip#~q=}FkU|Y=dX4b{P z(#qk8_kT<#uvZF-#XrV40Apcw`>J1+pWj=UfU~!aq)e}Hv!0G8Ksl!**uU2eWrm1n zKfi|Pxi=j%x8Uv6qGK$^M)x{0wxe+;z%=oepix_S6!qf)Wwis}D=bekF@t_)2Dx93 z1wQD1%42wLh`uUynq{9n)pKoh^T=LV^8D%7fy03V?K?F>3j;TBf>JLhTj+yRi~jT{p(;`>q&G={?nlOt6MYB-Z!y&%49j~gY!!gj+bM+ z?D61RP{pfnRW#friGRufm=pF^3XdKE)}N|-HFanT)yZcI*3|VOY&Te&&JQt{7?jDcOLhSAgomy8Y6yL->h`-iG`tG2B{%)B)*v>Oi zyRu-%bZaFq>uwXcHsdP=<>3p}EMZ&upyvs$)PYQ&{5|m+@S5%KX&#zs8#fr!SkmK~ zH}_SA8XBtTe+`RXQXopLtXFer8>?WExq5n|lxhL>EbC@0>l<&^v}e;VKGka9WkPlG z%dw->L&JPWnD5_DW}%JPY;nDv@*plkJfMJ%w_I$s$OEb)04+}aeRPQSGjr_?SO~i+ z@Sx4#;x1D`Y=?tUZOGP@gGWFHT1h>*82`$_>WvUErPtB*O4;-}J7fN0PhhCT*(!p> zvTza==-OY>n*HW)J!T5|EfT;z2 zoT)nQk&yBExI&B@Q>1P$>g7;YRVDQ!d!wvkcOj#5c-4eM9;k|vErYC@r3>f9gTIZM zVkU&qbVgVz3WtCGsoH%i|` zgXk?qFt0@V&^|)mT(@^9Rb)c~*#>LS8zLIZU#%X+{VBUn1F82u7N>4{OU3%V#Qo)p zDy8;dwjo!^%4Y4U9-?L}s%SS%{L1>(Cyyi5vg9+L#++l%3kwFK_3UL`)~rw6a|7qB zZ;m)rBsC9&hZCt7hyf|q?|x3uwf%X$K(e?VtoybZMT>;v8at?`f)jM5)`fr+-0+`; zB%v*t&8cq(1$YsTKl25FCC%-j+ZMLGlTpL9Fvzw|AP0H$SwW(PGuwsF(+fYG&RjWA z7L~r5)<%ZGu*p^Us|1-lQ6vt>{kKy=cqDffP`)B)BQ9S;Q0V(TBEV~VC!Rfkq`|2| zb>V==|4v!|=u`Ef5$1#HXEu)|qB+n*{#yoMX3Od{W={ozPr*y}zPx*V2n*QaCBbgPSD9EvkNie5-Kuy{ zk*Pa=qup6$uXmH380on11VU?Lc$(DtNg8lz3*=@~=@u>FReNhyu&rLce>#nxDaK12 zl_>a*?1r+D?CYc%w~L~sM}LY#J5x?WO5)xGT>c(FM89eN!eJHjqOS4EW$~@` zvdwkY;IA7+@kqvCw*7N!No|GWXKeHVC->P%SulwXhKL87q?ceLu5a1LI!(~e*(!I> za2|0}2~RhzHBe5(ow@6kzY~SE?FOKy+7~%aJ%7$OvwbIXG0ah17aTeuYn>0|qL9U~ z!prj8Gx9=1^$R`5>j}mPtOD#lydF*P9RW7az&oJEgx*$s zb(`&_sK_~*xPh8SFih+r)4gk|i(+2QGoOlMYOtPHf zkQ1n~c3kZ@J7R#|>NdvQ0alv3hVTkx*>Iyv7eJ7U&jnMI+-pG6!3(_u1mU+}zpZn0 zv1t-_$e|T-Y9eAr*Yf0u^Lj5z#t2;I3!lBoQqhj#sgUht8L^<;4czw4Ae*;67KKkr z#+BZ69dOIP(evvQCdcpB%Q|THWh>J4f0+F`xfZ`mc=mkt#z4c&AJ~;t0Y@qer%A{C z9rE{UqcofH(_d|0l)v}(^0Ne*$j2H?1pRN7oAs5zppyO6)cqADL)|d5c8#~CIwrQh zp-Ki_bUrqt{b7an6Cs+Cc5E7-jQDQtJTzO$kJ#{xuDAS9P}WZMJ-d4NtE!OMW&7-y zh~S&t)+HsP-zM=}+{5P|zSGN>l9AMYvUN`7hm zDI+(WZt1*SP2xvstu!lq?^j!J_zbjrR?Z*hqcg!Qv&t4@Koi-|ZxW5G#IhxfHtI(w zA?5%M_RW~X9a)twK&TxL`Z(by7h6jOIJauDP*_i2kc*IZz19K7EvH?Vf={U@BFmqQnuSnLqTm_U{L(MrSR6zlc*QTHRnGST@=G8i07UVAFyf?8RjPCL?;UH_7}Dyv^64dB5)el>aiwb(FRTGZ|QB=2@|Ab!Sel zE1MY1{zVsreTQ@fj2DXk@T`UY`XO)AbXu=s_GxdBT`9QSC&BKj(Fff;w@JaV_(G2P z{>I7UflptU=qr@M;g4ywhvc(8B9jG`OW*1ibb5#{bx$x0Z6kv3#@BtmM-5$6@i zG_F?AMV3WL5F2&2>iYe;VIQJx|GT(TsuGxks_m+;%7c)MC49<;rkOeCz+o7{UA_I} zD<1dz2q~xJ*+nJ*^96zEt8(N%Nq}wjXpRp4e!|mC=JgXU!tVl;#=M!=E^RqSM%30MgYfAuL#F!yC&>4r{Awh6e}A+pq@CH zSGi+&rPjK;5JmM!;d42`9tNg;J2#0mrRPPh$zH#hI$-%EHc`556)JDhNlUwn^u9*| zpO|Q`0Iyy-q(3Z?-2PnMJN|8svz%SnBnbV-L&$;jP5-BWN=T(?SYAZFUnFe|M@zC< zaN{d2p8_MN_v5LVIfz=3kIS8EtoVmY(H$iZr`s46o+>?djSd#qo25itke|wY?G7!wp|l5I56i_UstRNl8?q?^?gbU{aVootKi8d|7t? z98o`l-yHH2n)r|SIlmfTGL(3*y~U6wpeVbJR8wVO)7PSoCG>yv!;YP*ek>2}*le%Y zYnZ08UJ6I(2bGx&OM6sdoO__cuPoYCs;#!tUY^y z0DtmTCN)rE;~&Bb_xOa8c&Uuao7F7gdlz?EvfN?VOB0c<5wghNrGrw=*WNqsg>ie2 zAUoI`_e^IO;9)gmT#unt8WYJU?c@=l_FfD5t6?`gkUaq7tJp<_TwwcGUACU@Sp!jR z4@Z!{vyb43{c*q7!Q#cF?KePC3fDdFXL8DMFLXwuNDD34r0<(Y-OB&*CVQ`&?OX#> z2px52WX;vRkL0fhsSu*2aBrQ2g5w=NXFt^?8>d^cOj`vsZ=@DoWPcfwJEy)i7s&su zeOSZlM0o?8-f@s=LL9ZpXiBVKC|A8JE_B*37TsUL#UD>HGs#?)p%#$gn+dh02x97Y zCK$AX!iG5b-_f%0`}$s3Rj=q9*DDv`v7-!Efd4AEUtLFX{vieXf8kwu zRtZUywX(mFV=rnqaAj5RYWlToUuIeCNKBkB?$>J@XoR1{1Ny?3ZO1VW5BeiRiK-v$ zKa^P?cFhUS4DRv0FJ zBg3pSMcHlmIydTQ{Z_dT$n)cwmBS|nb7DH+t~D+fXnnbWh6+t>2L3^rRk@{pq`$Ix zZG>Qb!I6EE^w`sLojUqNZ(##9f%@MBAOriOT1B7J5w_q+D|({z$q2OnVtJ$X8I!es1yUpRm6 zy#Cyj2u;?!p~R=MV3Y|f>4udu#hx3m_rV$TW+=P;*Yr3U^`!5HXfvO&rf`X;S4*A| z^nM0NX@05PxC9nK!@~vB{l-P_dj}kF47aPOz+wdvQJIpSDVllQe@b+m$*(UxC1mPe zq<_Vni4BUX;9wdv`PSYaA4e;l7}vdZ5*t*a@OF*(A5G^SPvsx>@sw;1k&$soB@`Li zoFooKW{)NmJ$_n}6mB+>V9@R9Wvs(+-uE`rpGjHvznH3k zsUAP@J^%Kj4!YRpJ1n^)?2M>2H~ayQV%vVpw7F|MS5ZB!TQ&!X6Lki@&u-=r!EDOj zESKA%UfN1I@42z#A8d5WIh>8(Bfh_;o@BS(^@o{M0++sNdhzPxAVfq$9*z4$7ic3? zKY8y#kr6M>ID05AO%;M-L+UUcU{TC}fxFS5K>ndhnBoaUaZvvK0yb@yRgwN_OB`tSg*4z8 z>DYI*c=q!Hm>64!v#UTiy93(stD(Wx>G;{T)8R+bQ(3_0pfz8XlTfwt%9d9NCGHQD zpF@2vw`BXCbXoBIKMO!vNZFD?4+QbQ%e{AF8g8rSI^n%Fh*W@3VKdC+`b8?c7Y_ors;c(m55Y~X`*S~mn8cMMC{F9*pJNRUN zAWf<%O!>(S^01DJ!KVJ~eGUmXSWiGJHHTQAxOUByq*rmQm1VzXzH{F;RC-H(^`kUf zG3x#oPpZdkn*J;DG;GyUc0a-kxVH<597_9XEHpRm4?mf|5t@kpaGWl3=GnGo)t|&v zUQ#n!8l6G0Gz7Wbbg?`HZkhrfk zJSYr)EK4gaHUWJj^RoW!i)NR}JLVHm-w7Ukv2}HGNAZ~sZ?!Xvyr2hv)2+MK<`Y8W zgXqbmUfMP9KH#`2V%O}ZY8Jcu73ZOa*mI96$KyUvAVEny?x~FFZbrx)NaMViyzW0f zkhNNewv40uac&(yPlYRx+SnihYoZqopo@TsnBa2z_0L;}TyMDQXcRbP%_QD2&=}aX zr=%;rAp!8ErZGV+^eVd5?@~FOCuhv$r}!mc8mh2z}v#|*M7?k z%b44{ zM_c%mmD1)|q{NS(jQOVg!8{`A(ZSM6N-GWHHXiU2A6)5J*H%TL&fXLrDRkDaqMF@) zbYA~=-D7blEw!_*R_pp4{Z!C9wcXPlL4V#hiMByuiBIa_JGV66#zOoT6lUuh{2H@q zDPEZEf8{5YC~)`OTfM$=Q^cz#1JYBB%CH#g^RSRuBJ73725gZL1}l~5Lkc~swa@?C z+wHqeOB~hrZeJvbPAD}*;!37t+-dYhe+4x%-ho_0@NEI=p3E$5&7+CB#5PJ-(O=EZ zwhA|;(P74Ux*!&X=8?}ZNGhXaC#_b?BIW5G`Z0>jiCHO{*!RqCx59>0q?L`gZz%C~ ze2!CEjpX5-x&n*Yq;s-I8P0{KlcUhWPJe{;PoMnwO$) zY#K;a{(ml6fbeHu<(`h;0dDYU?>;zTFzwii0mg$#J#eTB$Q}2u?cwX`A$}mDLNZgd z*@Wv+itb)m{zq2G!DoP8Y5Mm5<=hhjDg?7#UxgUfp1x71Jcnt7Wx~&N%CXYMiTe_j z;!5H@@LgGZo1%{ac0_*ZZGqmrY^k!;m!V&hmogqqqu8;Aft&3a(Q>Dv`C-~5S;X_+ zfF{)$E(2?M&x_0?31X)`w>l>;+McK}hHU5lwkuAp=WFR+_>$jN`t{S|z7n_OwHT(w z^uknzZi`>OKaG7>^G5y4<<(}VRu7Es_ZuAqke{~x#JB$V&)&ODMc5o_F;TV1VM(^w zZmr%P8`fG*l<%u&n1UVW$%7!%h~JbCKrya&Wh|w;)%G@#`kgZpQ;lbg>NB0e(aeHc z`-4mor&c9i)~V5NzD6lH;RLtUS#$3jgrMexZrwT^_7SK%)l!r_>tv$mV}^LYME9C+ zx*X^8v%Sa2E%#mHL9)cZ-*e%5N!wCCNQmURI5SqzBI!qhW*>@IO$e(fIntcQd6U?{ z#=C|4o!{y%Agxz$X(brO-^#()ukoihQCW$!TzS6e)AW?EJ?s>nJEMLdX3bw5Cw+lD z!ho(A*?|$SXLXZjG$p^3-9;^Pc0jnAh=VxaSUCGiI|WxeH78@T+G#w6^p92FYlN#% zx_{)>Cp5$+zbCo5ru>C{mZykXtlWQCGFHmQKa$;ZyYEKG=tYTZv|Ta^0{B;U3mlV% zYxcAsZx4@n`hVf!RqL%ah3F=p*D>W1<`wt^2K$E?;vJK$v94l8<88lo66aD^5e%o= z{)5$emAQ$wdEN||29rFL+bjTXMK8W)?m?GT(%ki;6xZ7+r zs=W9zyGoemggW)I#XDX*HKpiw+J+d(S~`r9bI+ zRS5OpUL=4;l5Gnal+?f_Po|zN&Vj74yxzLPf;W;3{sWej0{2|K>jMG!wn{stJkdZ( zI6&Yjn}vty;}fgLVrQ}gsP*d!EUqsL4vV-1A{7!FRjQ{kK_~mqJa$?^i<@BWu7Hpi zl(|f{BURLMy~r}|!=guNw{kO>4BmVSPf(3N)!3w3YEh?QEBM=*ZauhX4KaGA?no z;q%j2v{z5q16r6U&^0;;+14B3{&{SoZ)>A!b_&j1QHfkku#cIUky}c&`_@T&KR=)5 zV0RvCD5!qr^d|jnYfB{@nM*wDnKPdV@mErG2Q4VYR#ZVrOfcqqw>QnLl&)YeS=M>8 zL`vDw82u5OWjnP9_M#Uwp<_z~Ve_k(qC7JU{eAXUdC6G(_0WIpSV|(D-XPU_QU>E| z4nhq}yht~$o5krOExj$-a@F+u%?8G@2lY9Ee#(VrKdAISaaN1*TATKyzh9*faY|zx za#rT3p$mBsr=YQ6#rw7p?5X(JH)^-WD;RXd=my<<81yARhUT%fm&)FeMWHX^d*#Rk ztVx+8P;71;%|miT9rf-;o8y;F%&-TDQ$8#CE0|Nu)9PiZ!|*7R2PBmCkjeS!38j1O z6JouG2h`@R?PdbJ`E-Yy&qi|IS~p5zX=ckiG5^pfU`TOq$GTaRFn* zV4Zvgru+QvN)9}a_F^~ArPlmn>mT#wv-Mtu9PIOf$qd4)**&D#kUF#4-R%`|(x#4F zk1R&btZ=U8a>X@(dvFlh_vtGC8QIp90q`YHRc?YmV6xeak1~97fSto{EIew2A;D?$ z-iuTpG+Jes6tDT|G}ZFe@HAfF!I%s~=tJN4;v32j`)@HL0+#*Ihcxun4^Jy@c1)QX zz4r;3Tc0dx;QBpH&3T`$53%**41TyP_wheb{LM5rU>E6C-?Zx)UgQXowIfL##k?z-rVVga%as2ljgE{w z?YKOjt`yZ3*yl5u<1UK)werx^f5S_i3X9z@)~y$`d1+`8iAO1DB;8*G!b9?=&? zw%Kxv18cxIZrW)*KE6?kBe550_jONrNLkA0@};XozOPke%%EdF+esDyF&w$$JfX%a z>Gkta7D!Bk|Inm3N5+cNS73HrNT8Mgq2HL>x#!5!_{~9rN~%KbXtCw;>1uJnH-CRu z;;T3*=h22e#9llaVhUt{iSXejyT5z!SWSx8Auu+TEkpcd*usEJ&DC7O==Bs*u$#bn zyoaks4MJ+8p79W^wqS&xYz-mpDp-eWH(RGcwbuy*a%f*H*>vv><`M)0UnjNE zutRsL0e*z>j>&M`*mpuhzIbAvbF@Ar*38C4A!5N)z-C=nFum+MbUI(^By{*wr(=a` zm-oqk7K`A}H|T%Wh3uWINx+x#rWTKg-}^Tr3E%po;|V^~EfAvp)kAGZw)m?k0l~S8H6&qJ zL==V*u#H14ZPFq!9+%^=p^Z)?Q80}SaZ;h~d$|R)Z=3+6&i-ilfq9Eb%i*4=FZ>u} ze$}x?7-TFTG+wPd%kbrmLtkKc*X`y@A41b`Qxhf}QX~$;AJs1qw~z#On7mNXch!;5 z%@+s!lKi(<7 zwQ8xP)Y|=r5|ab3!{n5$MZen?dfnZBoIk()N`YrB@?4DY<<|#JAiMHxcjEqTh7oQY z97!ZgCCi2G53?7J<_c0>c8gj%c)NvGgXKoX?_H%3{ z@|YD-&uB)|t{9@W!(qH;4S4#`@u)|s-|(;tH43WF9VR>>Jg0g**~zA{x?Y!;&iNq%z&X3DwiUrp!INre=_@fyk%>G*x5qs-_QZv^6)wc-8aZS zeQmSQ*>gxp(dR58bx80`TUiet5EaL3+oN>{tg!KcnTF!owqDiqBCQIV-ADD$8R z7}h<>BaL;(mXZJO!cJI}n9LL;Hxsrr#XkClF%9x z1d%#Q^T7DgwEiPPX#YkQ>0;xg+%>44kb(@T#~(p1JudM;TK`58DX~8qjMZk_^CU&~ zFM^5IY5nGYmm8{5$-YQ*otbTuR;|l1^9z-fhe`SrIhY5Ow;Vhoo-o5b_&L_DkGgW% z1uHoe-V+^9xe+w|oYaT8#^-tRy6KOLjL^WVgOM*gMY3eF_!X=*UOThzp) z>B)D9-1^=qv+O&+017L$D{iraC}uY-Nbu`DXgYjntKD}6nt%nr+&Wsj!Kj9ohC>d=TLlf7y2rgH&sj=Qdq=)bU;?$o^$44rA+7D^~b*SO+oX+;02vh-ZeMQ=zqtu zuN7Z~GlNM#5#wTQ<13$gc0IyP`8t=P z6FA!9*q=lyS>9$TN}+UvqXH6M<6p1bJA@?%=?Bz7#be*VQYt- zv+l8I%h6?v$q8!jWXMp|7rByVX7;;2tH>$M9PgjjXint37lh^~758r(5pw!B0IX;K zRWVjVupXDru>5r2_oNowuEM?Wf%m+#{<%5< zbyToVR+0WHL32Cv0!48Zr^^Gd{l&i+-N2@Bo$J+m+U|iLQ(-h0(K&LsM@rUbmkFnn zK*i1Or%!53=z5Wxqjp0b=7%G+uA@^i#X%pc1LPEYVE;~Begr(x_aR6}@( z^^?~l*w69vw+z$7ZgH89n-r`qIqXOj*rCP z3=_QiUPPwA9Zdr5R3l;&TrasZ8vXsAiCfP=7qY%4NyIftm67TJU{%mNo=<9!!*++( zVAE)@MeiNH+li1A;5aY7vdkw$wJCh(8=EFj%%U-!~70P6MuFkhAT#f!~8|_KULj1>6L) zutyRwn>KtZ5qSa4!ac<}^B;aoyb8!bVC-Y6w3B$cAkSN=xQn2~ioj#C7Zx9QkqsmY zNF!=C@K<2<10I%39B2X4N+igg-$z{1^;lZ2yu|1$&x0%Fp^qU`3Q&8skv5tRMzx-O-<4Y;~`9bC2=}{Zg68H!=BF0ziJAH9okj57&f(5x zymNd@UG-S+{NK}zj6s26id!EBer7lNVcf!6VzP4S|E^~_GxTKys=t;5jIQ_8l`7;0 zC&a^&d8=In_?btnNKdDG9bLW{wMqf0u--w)Nme%f?a8UJThX%l?N=RU$bO{nW|Y^+ zUFBE8pj$YPmNxAy)t<&-JSOob=+8wlx1N5*%uDT{O!R1d_VK74S|3@cvRTf>_dJd3 zk2e0Fr!|0&jt{bjtd=&7oH+q2!?qhXUkZPUkB^0f%^d?toZ|# zn-oFi5ESIO6p;M9o8{t8A@9cEy9A7R;Jw=PUPdwY+^Nj4=6cguxheiVqlaNgpF`u~ zZF$=JCvrfs=}umh)v4RZDCmzyx#Bm!oDS~(mHhZw5550AJ^R@iaVop0`Ru7qv0`fy zTyBh?!WNRrAZ2^bRWQ<_HMtCnDXfs>=6x}7k@$VjU~YsZOpQhgO~dGFDD#J$jCJmz zvLUN<;Cy;ZT$5He5?jacjcs|o@lPE6W#3{2j_aUGUV9Srylta`RI5kqtf*fIYCCcz z?vYMXB+Q?zoLa*o_7PZAzwL&(AWubQ$;oVuHl`(RnHV>WG--VpfSixx0FkL#V7| zE`KL2mt+`-?G1wWnS3c*@(+gwMwMnMK4!A0xMu&nB6yRWcjOf8rn+3DM9X!xiy4qo zg?e%GztnOlS|UdJFC?7)&R^M|dz`DU=*0rJAKSmpZbPWLd4)zObx$U~T`wbAeguwv zNzk+6-#aoBARgx|*Nw`NfODz<90PzroA1J>5HnA4dy<&z9r8!41KP63j?3L(Si~8e ze8hVO;rhcRS1$NjzaS~^8EC9UJB3eOW%hXe$eGO>mn<)-c4J|sTJo6+m?ZXJsgA?L zvs;y(F30}~2G+vS(HjbHEM!4h$rpJaF*EVRnSO!5b^#NmD_6J~|I#mFo`a)x_$G5; z>5kT6g6l_pt%6wO-cd?+yzK~b-!#4l#M} zwLG_I2|gKnDM2VikcH2r2f(a50IKCM6?&E|YXK+{7(>PddWH~DQBt?HOu3l{&N=&J8IWbdUyrNdg74#TC@85zS^zV1?i`FIrkV#Ic2 zP`Wwqw#Ba&AiowcSE^RS;vt78ePB}Pap2qeBmZIatdvxQFH+cC9P=%uV>#G8{m~2t zfzx;=aYY?dokN*pqy9##42>LY4o17H2ZnaU_}KOePHv8`X-{Qp_ayUf^|_J?c>;Gy z{`uK>W1b#gQc8Z3bbuy|$6xOBh)hX_@}A5y&p0#Le1K#?nN{la(HTCo5tiak<4rCv z1r0D(!1n6XEE@<>28H#u79-Ep5AH5BYM|QZ4aMf>I-?WU^uz9M5s-Z!A!z;=pLeOc z6oK)S>w~exeAFty=zx@E%jmJ*dY)K+D-Khn4-|2Z5g+lv#Jb$+xIhO`vsNt>Zn=mF z{TT}~j94vO9v|r)z5gtJEiweDr|j~(zP(8OZ!a7bUT$|uMW3ayOy8SH7{gKut9{Qb z>VtmaG(|}Abu@s}{oY_e`l{>59olqKHP2m@tvzf<8exn+@C|;#s9kIy+~^i zk9z!>`K|Tu%DE=Zm`(`bv1$l_g%QNP!bW@wvOFKT;roYJ3SUo=b5&U)rXxm%iwe_3 zZyldS3%TUJb{h=!VuXjKtDHpYNVyu*U8UsPq4V)*+aY5+kf#?JKI@Pk|nXOo3Kyc5yR!jweJA=@+s`Q>;wC^FJ5yxPi}B zW-+|{L(xpIv+0NdPU%l^;lJ;yDDAMTK?MZU_YrRsV7_4q-+Dr52%m@7Q|XyWJ!&IOXpaE_=_Nxqt6UFbq; zHw%)eBaCSfy-DS|6vY9Zp2ffK>Wd~dYO_7(*Vsw#_NMcCn(T8w$M$yG&EOn?WX&mW zG}*^8gK3%Dfvjb)6`e^B2ifDie={Q?ri*PA4BH)?ErHQ-o}z~WTf*gU4Lxi=Z8e*p z??{=$6A>ML^0dg0UBhmue?SG{aQLcs@)*vGle50w`^%gF1PvV;nf4 z?p|F`;Q*-8W*<+uk@ku;svm(xo=^H?3eT^uoVfq&VMPaDhx?l`8W5>vn!%(R$Z@1d zMc`zbsTt6r-C{zD2Tlw3m-TK`ES!H>@Fleli@!$cBR{C^f8?7jyD67&d6mfv&*ZMd zLY0=H;d7=u;$NGb6eSB-3Iw4fErEKiIP=pAuLJ}-3*PLP61x7b11YZ1G0gr)DQ>y$ z?*QC;fnXlu8hZ2sG&l>ZT+y~C4LgaYKASmdC4pFAk4Ev$Ql--kojBbMJqpjb3~Hr4;3M+x(W8PuY#JP^6XcMi z^ytW}NgBZn3u@Uvw>tpc-h+*R`k;<_N`%Is%*sP(-Yv;3aH1`#lH|pWdJy7}lmrb) z&F0{#Dsc8&Lp*tJcQdo%HUS*!Q?btMcA}lYaogA zIESXc4&&zY_>pM^WhAk!VG)jzceM1OtbeY<=1mb3t5s4s%8mOnTj9q|8MOH0rOcx{ zxW9U`nkqk??`7v?jt_la+;jQP}MTeUKSA5-Nz+WmRzBW|E7XxQ*aZQjU#f z_%C2*o{WRdc6cT%CJ`D`9Ko&o2GIsm!|uV?JyunF=VMbr!0`*EF9&t9vu-)kHh~%| z3nGT`F~rXh??ZoQZ>4{K?jr{;)~aE}Wo+h&u^h<63+0(_Wpdf4I(H*CshRG_Q;EuY z(eu{dY;oKsyIK^U5ftsRk@shgzx9rSJkZf;ZckXri+-?+nyHB5 z`ek6>IyFY49bMB2+WDz?dCb4oK%#T`A*ronWPGg|4f*;TdF^r^dUcfJtwIAg0@L}7 ze5T@^4DoG&)`2!O-yXE-%uyp?ZYmKrKfyDIq4L;uV8r>df8X$RdJlxFb?&l?aKjCa z{+G3iI4}=9qZN?LE7IAvcz1Jbt%;*^1_M924j1CLX*QXvv#gYqc7}LP2sm#GtEvB1 zjv0gh{TUln`ht*-x84Ue{-^XWo+SZ<`!Q=pi6?plYf>*)$VS*@EA(4Mwq51S zW(ee-$V(>oPHp~;LJWtp4H3+j4>`G_KejidtMU3>Ugd?t-R#dl&ZD)y#X_*5=6mx? z#ByjiY1`?f2fCh1L`SU0#Z;Ty!3iUTe@D@>74)}L4gB~af+l+} zSg!Lz*#BW}|M=On3YIalCuC8c2O6q8OC%b*sCdjc`a{HqNu1{!Ef3s9G zaK)-#+S|*9zgj#8$qF(R)U4$YBL7 z{W8JkMMB2+=31(^u-mzltx2?ZUVxiCE_aZBU8Un_e79VkTNa&yHVniMSC|V9Dg2!RacVYiTwxlm!N+L=TN|6Lr+^yOIuq0#VmI6oiz_^p=&@X#P*h@w9)?>pqc|u^|cODBtcj7Cn z^vn7TnG*y-1AYq87=Q0@XJnusv$cScj-L73Y(+X>*G2LAL#KK=WU5xk`^{o zcj>W&0(yuG>zj9Qn^-vZJr;K5Ag;9P8y4RmnL9dMhD)kw3d@ zhOQm(C;f|T#0sz`CUOQY3%@G_$DbCnc(w;$w0GzD<oiRm6iEuVOfxJOO|6pF)j_JR~ zjBnO>J@T_isO{9I4@}9AyiczBPX3rb7`ccUfyFiq0RviZ-f2F-O_jAI62syF3F%U3 zS$l9dnqT2wH%`J+vAh8X+z5epAhDr=3n1%$tj9yQ&uq68^0tflj>WvNawdo_PNNNNQiwfwKOUI>v|^c0d6EO zxA^b}=#AMz;^1JKu1LZ3Rq(2yXI#$=VaqBC5WZ6r<4(-`I)wYw<>_C-vn?frmX5Ny zi|AOB2#*+#L6u+j)QX8FEkd3Z_L=f35k|#>V6Gx!~duAW z`>*>rc9PDJ2O}IC*W>;*{xyGLjjT@?h0621j8bjXs8UUxa%9t=WYCL(ANkb0y{D_6 z1HS3LchR*sworEa=RyATMpx1`=6T5n@E*w4{R`QC0XB)lSQ`5-p@nMruAPm^si?sw zyehEUNNi<2Wlb8A^~q6708YHeNC z`|PD4Y2xFTeLA(8Ewt871oZ_a33SSTv5bLKB?r?Rc)%PAwTjZ_)4GJQ96Z{571_T#0% zkH{R9gNLxqB5z8Smt6%nCF!^)fgmj$HePfd=F;-~FLwBEjL1U)>jvsu2B27r{(--+z{6i{yumHY6$BW){rYxkC1_N6sn>UM^&#Cj;Y9uol=&`b4V;(*;^*{UMJIU9%^jJ;GKRVd;QKLI7^P=atQq&`Eu zShdP{(dTU!+^SrxLlIcz?-t-@29l2(_3Rd2!8wx2hBwWTfyoR;GMXaB&C@QVoT=qg z0&O*dS&cjpb<`u&LcSCCXU%X(3>Y^IOc$JV)E?lwFefgESH1H7*30EY-je%SeC<8| zY;&PzUdA9}S6_EXrOY&sT>wo;al!1}$Ga5vKV?1~`w_as&}-1=bL7x$-3C{9L#FpA znF*ocpBlT)4W$_ApZ|ti|0`sd)7kM&%uBSo!%M3{mwWwD+v#ere{h}gK*nd`tc#q1 zE>ZN+J*fAZlb1e%V4q-QKhQn8g|UBT7MCaHDzP*a(`!fuB|TQUE0_l{&sG&(G2` zv$FNcHTW+YKIh5}Fagk&cU1uKD!760_>Jb;xd)zmLM=A%2EMnP6G(!0w4JDt;2MMt zVIUDMB_PFIZ7K}{KzDH^F7*4!>0)-Rl_Y1YoYgM27)}7`euZW|5e?jIlvC@v+NtZO z9sni6)2W6h90kGK6Eg^SlWjrHdiB}8Cl8??!sEz>iv+gFmL6mm@;BT!LnT=94|yHn z`X4%9)~1j0W!--~?cqVLw5AQ;c$(Lnn#>o`*K`YcMwg`|uFcQ=k=e}@UPyQQR&TX> zzFd*id%43I9l6HmluFp%q^2Qhs=KI!L?4=}Jkxj|MPuR za!#1R&Co|foeu-oIv;KI4SxIj(EumsiR+GcJQo=s`P(c1n3rP_MBn~exrHr)o$v6> z+wXzmC;isVfbV7(dHc0xE=(QaU!KoD^1q*Ue&*`74?$}X0{t?1)U*HSYz(0k(9#{* z^?pynF+#rc)R2x%=e1#O;m&wiXY~W1BM4-DV;dBFYjo0_~WB(3b&*L3yu7+ZB z;_~pX-|1KbHNr3Yicfk#tJ|OD!#$j5m$|$OXdxf-=!~NYjclMWH|FSo9Z?Byk-?G` zr;wb49v<$Fc$0{_BPRg2xevTIVugGXy##tmRJl)XQ~naPnTjPoWGbAnKhW;}K+q+% z5FN);nEdq{jRERF5+|VapMIFvZ3GQ@E}nw@JQjj@Wg}HdcKP;egUG$^{?EY{kr4|< zfl%(Ne^(cDrja`OD`F_J#`A$Ime18*z5S&PJ;9{L^#l^8`L2chU-{L-MtoLOZ0Nip zbnncxr7+H-zz`I_GXGE3xJ>C`@@r_1G7gKl@sS~NCG=N)rmdBSPxt+=JbjTDP%wnw zuzv7ZJx*e1&%9|&-t<=vG`_M8oi%(Y zAkU(y?WCL&gHy-ho+Kv zAAxputmij2P4^^s{|2@d!E?~S>!cGdz zvGH^boi1bRFpuu6m)Cw+HVXs3AUHE+@P2ZiU>U{D??k#p+&~AE;Kwup(TIc7AcBsI zJF!NVs`TT8R;iLnAR%bV@}%JL6qwq_GYehL{I1 zC9`1+xHad(SYE5_7DUis2I>=1K$dE(CBjnB>+X zNfL$_T%wmbe>9tY6P3~n;3Di82WAaN3ha?pKcOr~ZWgrN1JaqBV!YmZ5uAK zk3po>mY!T1h4s{MVO^Jc8S~D5T+|ic-db(F0K zbpAWzqN0nq$%oF6iBhorvMN`LMV?tdP5wrH$5WsB@xyS6Hg7s88M$!YftU*A-($hs zy>Vv|r9Iu(YrcH?A}{!R;cuH^MjB-xHrkT?a(3XohtGS7kYa*x8zEJy0k$YIheoP_Y4SDxT z$LlEDlF8wN{Yftjou;&B-P3@S!{Yhykx}e--oHHKVz(QBo=G9}CRI8;+di5>I}ZPkX4b@;Li5!W&e6 zqXmEq@Yg-SiVKssgM$tTrO`~zW8wuscYaRo$i5ro#h~8o*LNY4YauFmvd7~c0(0^E zG3f6BVMrpKrZK+$^?Q+UY%BDBPvQd}@vEEpWoy^6gxEY*`yTTo^}0ys1F)bB`UA;3 zR*YF?_-&uo;^FO{*gfejN?Qqs3o zXuFlVEJ?=5L{r%mMm(hvzSJh2LVAm!_-!MucgKQio$0+|k{*U{Z}Tzv$V}v1UWn0e zM|(Ohb-%K)KUHqif9amkw0#p_brXbtr%qg|+|q<>bSm(iJ)dN-efqQKL`yj5Var-2 zZRsCLu@X406-n!4Q!#ifPI}2|IdI}!M{XDUR(E(y;DGG;s|VPryt=b9O;VyHc}975 zFHI&2d^SZ5BS`~MaEgz=U5hwpC!^g@wR1=Az72Hl`Mz}@^D{{oy-HJzMGV>59sAQd zqM4+tnxZ*pm(FZ7$2y@#q|4u!ntWMeeV?c7Z3!*EN!1K{g5Mg&^1*{~5u#s6#=BoP zAcNCKMotM2XSl`}Zb~W+jByeYreKmcET%ay4Z1&x^YQPG<)`0h^wkB&H%kEE4v2U; z3C@rIhh1aBuiCQ}LPy<+Acr|G_uO%MlHcwZa4wqvZdNTSd|$Td9>5Cq4~titM^rnT z-IE0FfR-zxoG4rN%rSSNK$rc}qxsf|m7{Fx$0ar!->$LO|WS>JW2aUzG9($c6^B2ptRveXc6|P3;h6);5%iO=;?Y?^wJ^x z5&M9kGkl{)+ctRs*GqNLbSJQ&uRY^?E7!Hk+`~gF$I*Bi8Hvst(c002R2%zX4Q{?5 zrxgcs)PCq2f2uZHe!B35+ny2Js(S>37hPmw+H76%H&{6Dpw3UZVhl;x|IMX0C-UVn zv0VSYuP&p$`$Yb^w>5ljcw^^daFMyfH77nGZY7iQHNPHjII~13k*iWFZU1oyF$>r^ z+C+GoCG<#OA=f*l^LAubvu2d7o#;fJktbnkI*tZDI*L01Xe#3vI}h z(q8!F7V>14gI1ng=J`GSdq*ClKi#rozyFl&hL@%y&YPrChjE72fp1HnLR2bHpYJ=9 zX_GYzgWv6IFaIrfj*Jx(koyKW!}fSnbgX2NmufCio)~b@^U8L;qOC5#5kEysVt_#0 z6W7-<7)XGMIX=awGyc)p=+U9>|&Oq8&PoYCiymKY2p7sgQw`ys?YOJ(_g)0i->=W!zftefOG=B-|S>Rb@`I*5JgNceZdsst$4EXQ0}Ewt zru`ZqL--|c>MVIJ|HXm*{@l1XgZ$mEz^igPJIiZdvhs7HeiRX#!jb2~ESAk(!LwCQyGFwo%lf;vgZYOW-#?Kv!)H$j4^-0>P1!ub z1oMirrBhI}-@W{M!8|odmAQ4oqWBv*YhxzssP>APpOWGM$*cZ#x_R@+hy6S!lEmsu zD(BPaIK51GmI?~&>4@?jd-<04j44?)(h-SCOhFxWz4xHYVd-pA56AkV;I{vZOjIqt z;D@utO28PMf4lr$vrp6@`C5nSjTCAJN&DQ#c&*R#9rbZZ=C8K>Jzd%USqz;6{t#+?8`Xw#GKc6J{=f~fJtllK- zCO6_{(d3W|&WTMnclka`I6-IP9YN;QJ@Dj~YwpxC(^~|uXgGT){0}$~&+!fb!ElwT z^sBO4kb@XLgdXs*27x3f7ejyjpDO1;M2Y=XJYG^5gXau^U;ELZY{^+VT-K-S%|ran zpFP0PITuIf!fqJ*J@uLDF}uUa*BV@3-wzgb*3sI@{{5_1qbREh!-;S{x(P)JyRQXh*%&(}jieO$sUB=D z#ua>}2poITx9H*)3Yd<*w|9$Sj~GNMChueO*x1Ax^aKg)llypODC}djJ|Ur5?wQ--@t9X z#Gr*q2cD~bVbEOmCh?u_0&8CU?xeSPhcR{Ts?v*wH@3r={P?S*Sld>)yrdza`@okt zN}>ue!}~jRcSQ-nnWC03QWbMgF6>pjYY|1UGvEaR_y&r)x@vguNQ)3wkLQNOui0N+U6ZNJ)uGcS{UCbci%aO4pDx!^Gux z?{oiy^E_vtz0X>Eect!W7&DPsbCIL`Cd*}gb_czMn*{5MU z0nV-Taju)9RXgYdUW75!e2gJ#fN&?|92RtJ9q38U8xL1t$d*RxGGbwXJq7$G6#RwI zmNl}=0^mYTD3UsJbNTxws2)~R{gVt@AiHTSay~;R4qx@8p+X4R+a{x+h_{sd1yT`8hG?fbl5MQD9XkweY%>QQr z5U9NIInXVe;_~!+=oHc5-=1Z)Nv5P{rE-pbyhoKaI1b&s;4daFzK*z~*wpS-DHEJ* zKv+nO*mo()Xyra@rw{YNGFJi%YJ8b#47wk9<6}+H%j7r#<8CqOtA&-l#ApAF+iu+x zk{fUEj^vVbTtN7|7w+OHk_mhv>DVJh1_g=@n}5=(r!kg%Bgr9DLMcJ_0lJdhG|MM= z{~|`FWLl0*r2s8iXkHo+Bhi0B4q|Fm8PNS%*ld1vjgvD8uKM3y+kkG>;=;FsF+ zjI0)i^}!Vi?FK$L58GQ>ZUeLLrZCR}j2hwsIl+1F=Z#Pt$*f9lHRuVrM-%QPG5}PQ$?9E(?an3abN3{bY_HqI~q7D(%TiNpTuBqp}{hN z1rfC|r^~(cM7>X553)edfW0r(cebnh#({=e$PdgW?@cRMHRE4aEP~>Rk3|HIo*H@X zh_T6j*9z};P(1Dlk=5V3Q>@hw|FASfo{BsZn5I9Es?zt@D1sZr!;>gL{nDc(=7PWy z@BrH_S5Udae1&9tL#At=CCgr>=gA&s=ipwKEF+`C;3-!;I>3_NLw3mOATHv?-ju{m}d6HWu!kKafR zA|0Qia!FGf(S!$T=2X;&$oTzXBOr|uYSuMU(gF?6Ldvj0i zT(%qTVfBo6Kq3!v!#PCSP*-QO(_6q_`|w=RlEmXZGo2${rzdY^Uy6&lcQZ& zGE{)_viiyxJKa2l&Hhw}|KWM0AmJc^&M;I%4x}Dna@0K4l@=5HEZ?S$Zw`#OC zjr35Q;cF!jCt*bx#rhciHc5__k;t8}@RIJXXn82-4xnO7+`;-mPqMs({ub{6jJkK5 zKxYP1QP`IBHn#lUp8A5>o_=q^UH+JJzUxEieX*;xMM^bl z`$u7`r`?rCyq6O!aFtet8t7*AZ2w$pN#Oiy|HG9%K``@Edd|?YC=^|KwBfQLwy-}S zYx7{c2dO0esw<-KUcL{-tUb2$2OIYWbC|~lbRJMw5$KVmi44NVM^xlstKU!AZ4h)& zg%%m?8guiOvDqq%SmT&JOJTnZ3R>S2t*0Q-Lgj~2ShQf}JaOofptc5rD&qR})SF0m1(^ z;RpZDj;oJciSs5r^C=;x!ZtQH352b)VdI;?v*#D-BXB|%bn7e~iu5#Um#_Y2#MJ%Y ztKShLT($nZ>XYB4019Vw*k|IY%)zy#`#(Q4JEwLCQHSw3rMlxI9Nxdo@|Nt6;kKap z*EKCu(kfYJTR4$qeGa(TA8ubifl~vFeua4}+buj~Br~h)J>Dxf`=e&BohJ}0ie&|; z@Qwnv^mtW#b$;*nXB9f&%XjD;40fmIJe{jp`_(~YqSM8y?N2hqKNl$eJ->+rRy1Fk z*>-p}LHCI#32PCd)eY4)z9s+tu!JO8Lm8jX^c&-T;S+Iuhsv}JTvr!24UarietJ{| zy)eITgr=+{Iz8KG%s9eWVTXk*C+U6mwP3fLS15*e8+tj;P{b$7t9V8$UlcEhA7q&# z%CG?s6ijq0QTn#HLbr9?-r>WJK9Ij2JD<>oG4?qn*AbbX^XI-!*_aM( z1rJQ1wnmEa-vRG&x2V_0r&(~ks5k-X6lU>x!S>sn93XL(Cio%0!XQCRNJiL`X5D^m zM<|<0rc_@ufWH?!RLYc8%h#mep=5MUtY%z#E)e_1E9cd7_bjaLstle%Bz;J)^AiXY z5!5f{yV#6+&hNGjjJWB4fh zy37t?_664x&@~vowfzX)m;pZ#P&+(hT;1*!UzM-kIlBs7TLBRaGk~anAYU{G{B{q> z$1UMyt!^)z*BHCFq85jxf@>c-8PJ#Y1^8^s6P|fF#&4ud53Te^V4vnKt`3 zIGxHs*FaC`tb4gWjsdr{hueeRHz)|@0?hw2oJgiMEj;0=hFCm{1`+i|hF&Obp2(gB z#Pkcw(j!IdQ8N!CXKc9}s6S)g4dxW_rCdZBFR@Gh{h>4SOX_d!u7tJoY4;zc4EU++ z!+zs^{?FW*Rxi08=#9!`|vt%=Z$!cL#o<&63qrpQ=jP+uX*4Bqs!iFh982Hzw-*m946gC4GANZ`^y`TnTf49^?! z+08(GG&m?!_4K&<#wtSsp9+Mcv+|Kq86b4ERVBZUq%RtLO8BQz;&}WhvPhT&dH>Hne{+9K4+TERJYs%4{P8a>=WXX} ziv9wr*9>_ckl23qB%3Y#35|Lg?vTvX|8O7joZM5w_AI}Xp}>vwC0kE#YLoN@Ns?{j z3`=3bO7Ge#MUX;ndP>(;sR1%Yra~C-z|iE=NH~I$<)amM&jI<1o9UGqQ1Fd2D<^ia zL%Mx;O1CNuYh3fzjKE;NXv-L#F93S*dce*pWOGXtZx?xnS-5@M^k(3T=jFZmsPAd9 z!;PojA`o68tN@;dt>G$(Q105nbk@tVR$mhV+n=dJ4XR%M^nQelM_)gH;Cz$dw+ZaK zxhC$eSiplteq|l3Lu)S0mk_e=iHKI$UMtwv>c04rPMnU7T}!tyV&n+a7mBi#CN#j= zu<26zY}$k(HMFGk@n#y7z4pF){psKm&ErVmshtB##NKkv5NkbUgfa`}(*5p+?%KFM z%2a5Ey6?`32H>9v(>QpIu!md$-yJV{U+QEs|JSScw5;VDKl0+B83|j(B}>D?{?WJf z4YshJ(_5eeWe9#D4GVgC!j52y>mNu;0>yqF;rh-J%VPEw={XVLEyrN+#j%K8#FI^B zW|FN~KwB-tVh%Qx10u;=0Yr^M1*o5%1ql}0hps;C5$<=QebxAt4JglzEo$@moLXob znV;x3N6-sI9(ZOXlET4aqAfo~bsPHe7jiL^0;o9aN9xy)c0x=yOATv!MAVGa%6{mB z41WUI!=rl%d@1sVhw9O9hSiNuPxd-2O})_fh6q!tVaJ*^g5^^KfN!Kgt<&$;*hToS zXPhMV<~N0)qnB)nzPO!lseRn(wFr(nkj(I+h^}r;Nl$q%VHV!6u!R|h)E@WAU)5iqV{cFh8O8{98(Az z-m@S&#aUvX5HRQ8fwFdPPh{^6A?-?Bziw;bOD-l=2N$mM6Rn?UAhb6Z^Zm+liAR0A z)IM2I)O+muM{iLW(e-RBCYdP_6(cjhESoaf_q6*4d{hu~o$rH*e@ z=$iJ#J&|ZU@XW6oGX0qdMD~!6U#>UW+_gO`KkxTx70U!ew}AXP0s0SoVs77cVpDdeaEI>i`Kb31GcFme}3u z>8WDp(FwTYHXJ;l9Wp4XuYz`}UdFl{)+G&X5K^J2GVboXKC;CaRaDU7j_J zwp!-x{$ArL@@K=j2XG|C$H=wRc<@RO6LI7_KRS7!F+ZY7!<#=1xcAh0-qHvFmt!~j zWmf7PD)@41nhv5+KuS!n((U=;9#GlX3zsQ&mtqDh^3&sYm-TPWev+m)Ur74fc2h+3 zV-)_}FRBSya}sl~E}^jOL~x1?s1Vxby1%8c;aLE_Z{3K)HF7Pu*f}}`ED(~Ba_&CS zV7$@l+Td$4=&biQ3V($kjW5zRdS@QTlova40N2vahjhUQ*v+Sgv9JlWchv?ti-!Ke%2BLJauA_p$LH9*5Z!smm2VNeO8cs^ zAirk3uNvOlkL)R_FGE#VADuC2jFS?iBWFQeKiub0(z-mzSGjpWiyco+bH^2;JOJj7rudc70Wy z(OVC_6b`@}|LF#>uhtYwsy(-IKf!1zY6|r3RX}$bcrCf#6|2Af^NGHCY8kZ(j>!$! z2X0tHFN>PqZ<5|huxbe?C%e0XRqL?zfr>&Nuvaz|i_DMHaax~;#!+h8Y}qZQX|f0N z=+F7>Pc#lS+8=~*&wF2kWFtB+jqxQZndcO;Vb>1#n(UaW17K-JANI&dC9G8fX7M5> z7EHQ_re6#UaC;6r6{!M`@Vj>K>o@0wo=%^n z5)&D-mTdCON<6usR5D4Lk1z&XX7)#cSlj!YJCMeFT!h=KNls^G@!EuACIVvtkE71Q zJR?4Z<$D|@q~0-EsX%`IOQ^`6VfB|yRN)!#&y^XSUk>!_NdP-ZkS1zR&I{uugH03s z#n1{4{5`ZJInN09L$$l9zOkRo?tg6G)iB1nn-6xQ9ohKY5a!#MoH zjj_8(eVL?5m%ta@Z7A*EvzeGk+md*RfK_x6CJtbMJon>UiO7d2G^*jyF=n^Qk~ghK2&enh ze^1s)2jYcEoCV6KzSce)XyCM2lp#>&$KN8QM-$n7cL$O-3{rjL{2gV+Vcu~#Cj5MC z3u=^H0&f@S!%(`|T>aSq2U8M%mY4VGSr)f1B@W={ z1}`sOhd#Z4CyC;-2=i|UuI(s$(tuO08_V1KD#qtQzFfhZvfHnfA+f-QSpYr7#w=+k9+rD6wpg5mRqoE%7#y%& zonTcy#f<}RtQzoFa9sYckG=nm^7k?@XV>JA{g8a=M8?aJdb)5|tUb9Ap`Y0X`MM%h zy*oVn)1<;arRr!H7C=EOvxyLT!>T>fkkU|6`*R_MUV`qf@n(iKR5&m3!e{V~=|<_J zN=ScoKC-mcaNUi+j6<2JspUX76CuR2lO zZS`(z)+@9m(?OU>hps*XaynIh;BBz;%IAa)L^z7LO4q>@9HcddyMa8n`l z!@9c7`14eyi`qJ6xWBJAu-54Pn@p-e!ARHrYa{mlS3;D{5E6jxc7SIrq5^%@pthx!%@eGk-;T^9;-M7qBUCL5URB zSXSWIEI&C~%^Fvf{*3PI#w5RbNHX0d{+cigkh*8ad=9wHFu!^?=VRzp@_qGWPaXS` zg|%3dr7F%O!~Ay>5?Tp=Q(}Ze3|J6qr`Rc>Za!t62ZUJymDhSsz$Sqhlr;?blkbgt z&t&EP+V9pHWOibgKkhi!5#IW5yAAMTm5cnF3YtE&yy}-+|6>N3M3-H8O1YPO01Fj9 zQ`w90$D!${#E~>WcNNIa!j8j9KGD+rmk7ub z+?|EC^Tz5F?oPSq?Z@dl8W-373ujnLZqWTJ@;(N#TZ1}uIC^bEKG(es=w4jG!j9yA z{-A>-K&ye(Z^X`2w=d_u_GwR5_Irz|zyddiUOp7dC3Z0T#+NoN{vFqzXPk=oCn;Rh z$Tsu-yg9)ulKS*>JI$oX`bs&<|FnxPpK10<0jvw@;LaMktw66}`c7DO zvzu--`TM)kYi3+;;*sSZ3%yE&;_fI_<>`fYJ(=pbXbf zXyIcgWHJ7^@`*UdmeYYT*j}!di!f*c-G5n38hVQKKiV$h%X{!0$-{QuPYib3pI%? zi#vEN@%WV8#SQgqOx3e*lwFsc7FSR(r>jqv+W|jn@lF~J*6c?K|4$gA_Wu6QV}dK} zsS6e29mQ76CG-?YZ^(T!51kA?mGL1=v|fEQ1I`{OK=3Dj_5q z@R;Q#9d>FSbxD2Mo?JQ``$#Q-vFpc0Z3n$ilJJ0y+Lz?bWw1N;E_q$m=iQGyOgW*r zN`*d9E*>B^_Tz;hWdmkOP0sMDFq?n^pEAlrl=sSjkSEo~@=k=9V!eufn}PYl6g{NM zmfj+v<+Y}EHO!Q;$Yn^TjC?$K5c^SnVWdUfzi+ku&Jod1IN!9Z0QppQq$HnWa3FU& z^N(V)rMM)u`$sIhC9uy9ay^;;JyYO|vM#B<%5O=X8vqWY+83*`maklLb;^t*Sj?#_xkxgC^PpKayP|3ywt7X28o_;NGgctGeaUNef) zZaN3Nbk3SE$Q*Gznt2d?zKA;5P$5{K54N`klu%Ow+CC)qR?)Z&ZfH~7_H*6yQJv*K zb;L3URq=m!bpW+giXiwJ+wW5wY$bfNM?ozFN&>Z4QNy`lNwIz&_|oasUc#+NVqG`( zRBZ!be&G)62Midao7rXOgZT`%foB-sx^>gl)%HWRy*Xt%kEw&TKET~sQR#3Pwp)`$ z8HH9cbHbZ|T4EFH@%$wZF02XrT0i*0&QCB_L!qF z#+(B?#RkZ47t-!SfLK=02-qhFcef-tehs>E{PtVr-v$N^w|Jo3zo;U%)B`9I0Fq!0 z_|M!Dld5c=B{O%e0IUaKsKjXs+#EirJ-$vF*Wt^kwv(g7qqGww)Z|BXP^aUU3PSUQ zugs%KojNI7Cup2F1gs@|WAAh8gW2a8eOV{~pp|%r)O@YI8%^rWC#m6<_(tl!c;| z(Ec3e-DA8F^XAWtfwznGT;8wsP4XYunml+c-XH|Nn+AQ0{B1R|xB)cjPVZ4Lh@x@~$QQqF2b zQ^(!&k-B;vTgWW{$@yG;6P_8e1slHzOn3;&CD)M4dXkF#IMr#wSSSpkv^z$OB~>}%6nd$q)`z|O_@LsOUtDg96>Cy=XJY=EEd z{sSMWH9VKN?0$Wx^nA2UN%!fmPsoOPf^yPmrjyam zOJjf&Lx@%MHQs^41S;TqA*4+*ZLvwtUL@6d!$SNh0alb|{@XX&Vf?tx z=a|+x%?hjYZ#xPz{~pUdRe{~Oo`UQm^<@1Sa=(2{hYI7_b;%YWdhGG_ioNs8>MPuH z&D{Ql@wKSn2UR%dD0lHrqyuHxBVm9F;o|D&C-BvFg>TD=ygUS1yV2L2eBgr2InO01 zMv4ia<@?GA^WofNk+mQ&@ieh9PIsleIC6P)MP+LTaqo@=$( zArNhRjQz)#E)s~mA7a~SDNs*8U@+$nv|fW#Gl|~2H9~f897u(Gr-^+1+xP4_hTZzl z`gDnpCC(T(mXlotJaxjs`fVyEi2-B#COeg8S4nFz6~fH?AF2qSiugJ^C3_q=b(!H; z0CN@3t8#$`InLle`ZW`tZ1MC>iNSiH5F^b(vivZgt%0aIVM0wZ^%O1}vQ5KMXG9rX z{bT)AbDPE-Xe)KDe|K4%FC;gH3$8#c6?f=!GgW2_Tmw-<>RGY3VR{R2&DB^5@7&Py zxb=;L#|@)%HiS5OG)Xx8hINl{AcK*N4&27LvGE~ zD{mg28wF6`0;W87Q44|6>U)1A>6E^|{HFLY*nQ7ZWcz)kq2H1dZMA3Q2P@N_S%fF_ z#*@%{zo6C2!j{^@+v&HFy;NCxBZy(GDfSC(r3ZbPg6ao_;4#a~!k`GYHPVe#RBs_xLQ- zfkozseg+CU@@an+)Hl*SStvX{xH!4;hMVNP=6p^`Df=N=&|^82HFj$iJ;#emEKEwR zmz8|T@cKX8bV1Z-U{8E$Wf%*8W;c zo)*4-^Kcj1aDwdBM)V0p9MkMh;b&L%k`5mdXRkD>ukk~C0srtFf_}csDu?2LI7n=p0%fGOQb)!P;T;xLE zKsGF!>QXj6lry&b3W8)t; zF+T4yBkFvkx9N$TEfXp98Xqx{*yh_T~pBm3bb)OnDpQ=M4DtI!jq!BKmf4-MTJ%c#=HOX=tf0et(?ducD?Rg2k8VdYGg@f{vr@~Oj`;o|75!cRdzl-msqp3wQUnEHw zTv1G2FK1_1VEgXl*Pb(p?Q?e7aCZ8UTN(Vj?>afK>Yr14!d)KgV;>LE9;*NO4@o0? zvRS|cr;b(PPXnP6?t7oNJa&{KlQ>tzYb*$R+z6B6zulVxqJj~OyaOPNk`$F*dHv@$W)AeqcPs_bxt8hCHe`Rzs5PXDTV7b zDT%COalQ;vg%F3_BItrm{a=a-LykJpfB^00fl=gIGhSTnat`B!n{m1NQ7gT3XQ1G3 zhu!RI-!ujh;P!1Jdq+R{lF)&l96C5897F#AAQP8P;MqHF{&z!Pq_csY4cGKU&sL!O z@hDMxJrzsU8;Rp93?ln4*n>BjJZ5?p7%>3P4?$@g6t?0YGIAkdp!tpMx*LgKE=qEQ zL--2xGav7{9O{#AiH%c)+EsL(NpD%g9OyoKJz-P%EI?6H67t@+8aO8eKAn=VAK^!; z(5POOR31}iiUu&};hNFROd~L!#xc)^fa=&<;(=E>otCOb+oysO zRlsjnKeE<O%pjkRHd$c&YNL@x_u6~ zck1+f9(OStF)m9xaj%1xc(jLwzlLzqeyGn0>PKn zvbyOml1W2QoW^UNU?s}}`c8$|r~&o!{QkOg*kd~jnBYhJs0W+bq1G%#N$`_#lnnn% z7bWSQK5^4?w(znufw(x-azD?JWIv$IGBWw6SU7rbn>HoTVYH~Yrp`KrRQ;Q}Dlho! zx^5_yf!gMIV*Z0Tl8C;Z7;@z-2Y<;EP5MBR(*~)p%WGbeX4RKWJg2UoG;G!;vn7Ps z%7)@0o*p{gD2Ft2XG2@#yP9Uq`RDqY2WC4ODd}31nv0L%XkFrJdbM+jyy!;gzVY8N zXg4J}oBdE&q)Z&?w0x7KpS|`J3EU!3#Ev}~n#N9?!Y}~OMDr~Oj-7t=Cz!!bd zHxmkw!#nq8>2F{Z_QE@Dcqz5kR{&~8R0q!UUYBqn#M2c0u4XZf@UZR}-Usk-c8q!x zEH8o))JX}&)qe4+o?7P9#M}2PZ_!6em(}Pv{A{PKK&}zX?4v|pV4e8rQa^x#fUp$jTz%DcSl_} z0ZT+bKC;AdBKI@wEd2CO`ZG5K9Xq)k<-)D%7&}($7Z! z))G0SG4kjiv%=OV&{A&O7fU(c?`bGkCaWSdcZAW)EeuX=^7*%dwLdyV#}|Yz#eAsW zSlt0EVCrl@r-a=gz5}JNAs=mLYZLbOZG_4bmAVZr0YLD>ZY&pkn6Z@Cz>O5~*57{u zYvr8NTXQhKW{fTTweZ1M6K0&=^!ki7k2`D@q+QQJq_MEKhriaYk8>6oxAQ+*jOUXt zWP(~VD{5|57pZkmA@n*=+_ICfxLoMzCKtBEp#Y5Rt+;*C&!qV_Z*L_I`5ucP6oPG(OdwoMuYMO1;J7=*2|db1 z$1u)VK^cBG#7v|ZFLA|9pw>S;1FuNF($ZZG!FM6Jf{uZk4n8ll?Ct!K&;&p&(MRxN zAoeCm<@WzGJBFbWf4Np>qHv|yBn;UuxVgvpWiHxGxrW15M^6w&s#HkY5SiMX#X8O&^++&CR@|R)7JB7aRJ$yXQPK3_RiZ}@OsiJ zK<)Hipj*QjaZA(HFTgtGEF17#)!`lQgPj?C8vzlmp>yw}>6hW&fX#>a3#~BGhrK0f zl-~hhPfm_G-5Of6D9kjDvcH`n9x!@z!y~z81s(j(62;qMZa5NrP<@aTB=?`m;TXZO zC6BM($FF~<{g)+_ZfuHA+W^YICW(I@^t~q9Ztg84>IczfKj}-!*GGJ^H9+(fvj$hHz>3fb&wsL6*c1^&)@n_ihCA+RN5ihW&p;$d%w8}Vb zP-%hVB{(@Z6IO&FyTOm}1EWHnywBNoacNG4QlkuRz{O|zZw{w9{eQA^77g29Fx)xI zFLlN{d_XyEZgX;y2;QT$_blO>j0Z+>)((JRgsR@lkugeGM~fdGJst%`2ot^Rf=xJ+ z#>v%)CIWck^GW@_#{rgE8Y|W(`|JGs!N6KT=t3)XZ(io8WXK-wE$%#eIf#+p z^a@^O4Cb41!U?D!VzMCf2QjTgz=n-E-S>xo03xqW!B+s9@raLYgi&rdsuqNuy>skm z(Wk3!xASBa(!ixDN}>Zf+m}yo%vTFdmT5u?F#UHU(K!W2o>V@=eTtaWJt6Ud62XVQt6IHt|dPcDW1s&0EhPRv`X#~&tDK|e?|={hc9kFQFnu0qdWb<`8y z^Tf43P57-Ol(K8Txh9aRJt1%3T0lG_Ln$QxD?n!XfPO1(RL+$uWn-ZJoIb;hOc%Y0 z*KM6og#DqYs|eGUfauilVsnAp^NOFV*t36eEm3Bm@K>vNiDcdv$^ZRFbcPEBk;Xb( zl4=x?$!2H2c=?`wP?AH@L{F)x?d8s6_8=OyoaiRK=$|@WQp9qDFMYY268gJd?+R)V z`&Zi*OFio+ON2%DB$Ata@Sz&*Yog2t|4EZ%BW-282I}`m>itNwsWIx_TU|3sI=$0^ z3w6B@(=Y;{HnW9zIlx5suWIE^Hhpy74QqSTxv?mnWO_N_JJ_p2Q|s}%jy>=M>M(9^8NY+u2g3J z-*vjtiErm#JCCn8xFN@O*oWe<*SR~)#P${DJdtE#KGUHs}JO(9N{80&;_bi7H_WsweukH~9xwwt$YTba^ z9?2M)ZNJmG<6$*4Wv}j$ZPM~Me8WMomjlwE;N!>>Uz_a^pzmmo;-J@nnrLuB{OXk5)Qi)nhQeqV z_858}vJOW&2v>7K2e#cty)pHuTGG31FFYE39JPUJ#HnULG#}f6$@uQSE&K%0)HJ(R z$s^fNYG1P79OO?H2yt-p{Q*VKJ1%UiFQ^(v5>1gTmM!)Xz)NVSBwXCk<30Jxr|{~O zu#g=^L9JDkK!iExw((*=wYOU{Z`#bCx0N=k>8o1i^BbW~8`UR^oHbf)(#M2a4{pYr zK_rGT-g%JABnomkpow(C+v%yNQS{748<6hYw!zur%r!cY45~u1nvGRFip$B0F@695S-HOPbpY_O+^9wr~x_JslRe3oE5*q8p~{ z42^ET45N`Ics~_M%i-}YY}cdh3|_M3e;Sz2RZ%_o@({1v;y`4xs+SzKJ&l+UBIm2w zm*Q$XE+hrU7=vS77HOCYm8J?K`{$OV<4S$a7c_qB(5g>-`SSUaB9V@KdOK}yO|DsM z)EwkwzK|mI<>AwRrw-c!E2{`$V=C;2e4dN7>2BcYc-!eaYAi$LkF{Q1vK(U-1>@hR z?Ob zrP^jJ+u*Ynh&PN@zkYn(7@I~L$*V-RSZ0Z{c+~q8yZE6w_?t?AsReY0`--wNTWRw3 zMCWab{~$uj|GAE)bEC*;KU~Upd_-4uW~88xhF%SgsPr0N-+E}eExwt$D|5)fayva3 zv#y}#=$dHsHt6M{ndO!gp%y6jTW$se#kq`^ud21k1#i$Vq5e5Cv{^%ME-EmyfVUsj z9$h9aH7sh=#tp7BFLF*y6|x0eg3vB zFK`*RR_T9M2Ymedd{iNf3DV#H-h1`87_mvu{On{5PWMOHkU!oc(xEM=jUY@MeOH^T ztfsi8?B-*&?Ovl>lhY6c`6Lypp7@56fso74J!gMLBeLAKf+P~GLd^Hp!AJ_SL2Zba;R_9E!BlX3_vJm5lJZ%wEN z(y$}1@cQb7$MJ$N2vg8DRefjE1-~F0qxfM*AfGSv6YvIPSX=6%Ug0NDgThalZ%b7^ z@lc@L77BM@LX5!`tOR^d(O;cdBRaV4D^@e^sU2>TA(`0Q7mu-Q+6n@Vm8MC(&3JoJ zC#&i*r0dzR;l%cUOO=O$vR9TCcdvagu17Y^&$s8*c#~g4Mt!#lc|^4s*nC9Sg(emx z8WKOT*7mUAwG!U>yN=J-lClO}uO@e_*aOKd1vh1=fTAq+N#yG`ZUI-^w5ac@EZ>ji z-4aw75eV+;O%0hd-uV}Pmrs&#A4?An_pF$w-MrqQR4CYJUJ__sL8IiUR5cqI28(V=vY;KCFmbzfo2 zRa|$>JvF!r_@7y6d4k2Ck?+^Hg>rame^Gj4#sxL|RJMWmfKm!eA6@Jdi>aI~8NrNfSgWn^>=DkNvTMBa$hvw2(gQRZDDOF_ z=H59U5ONf^^sg?lfnG#OQCQ9PMMgzbci8`GEfDA|{X<@mwNNtqg9>H!#cquv8 zh=<9eXbs{RJ;i-TTY}?ClEwaZPw2UMrJX83?oJmsOp!Vug;(=Y&Ub5#4ysnk@2y)D zY?*tR(Fah1MiPlu6E!Wirfi>U<_Cz&;j0W$#F9+&QR72Aai|fkX`|&s-Nv_!5ZglIQo1XqW!;FcCS!8Q+0sDsFANxdq>S}C5Hz=k00tpd2g{biTQ7J#DFJ23CK0zP~)xt%z>ut z?(Mx0K2`$RJxAyJ0hWJrB5?yn&3Zd7u$|zI9g(7ys6E8J*JEtRp_$8zA4QS_7W9KIEd9q2?P;!%57ACMD|UXzom<#jQMti z8#r!!{!@pAhe>!qt~a`NK7rt_2Wi7}}E&??4#oC!Kdt^@&A(XvvgH05p94w2HL& zKQx{7UlU#%hDBN$l*UOYN_Pp2?h?L~0;5AfIt3;jBLyU70us^)h~(&!lx`SE*T`** z?d6yEk2vRZ&iy?1bz$l_E}|@Ke4T9?&tyUfu*wG}ir7eZ zTlM7WEgfMl=3Y(*f!mClt1`Y{W|wZ0n1Lm`w)Nf0X!Oquz}x9_|Hth}avJ!PmOGGCN5{!YgqB}< zJ%hQiqTH3YNidX|F)P=AQ@iE32Zq;27ob_N$Jf@!JF_;=XruAsWu*SU+*As|h@oF0 zOSsRlIZk4IrRb41+GcJA`);HN3FO)c^Dl%oWvr=JR%g8>Xkg?iK-3$A6q;w`N_wWX zd(ooqzcRPO4%jl3=`fARL6^fGu^tnzAW?!<`4MBd*X97E=*#!XY@ltXU0(zzk$n2Q zU);XVC%8H#DG+bu;^6xcPpK;y3YdSUbVy-{Z$K~2)_eBwW|W3rckB~*V{5bgzxTra z|E0HajNTY^B@;)1=_)yP44jZQBH?*ElHF*#)*~e zwn=!}a|d>9g=xU4Pl|o*vv8YQD-4_A%s;*%gbfU7kA%mEUP9s>hfq8-EA$g$swN$8 zvZtGBzO=fgTX=W4JC>PHh7ApX*%tmPc$@-dsKjq=FdGe}HA$vBt;_dc5$Icj7r5+# ztAmRzp|z>Yo#OH0h7^Mqk{f{6gZ?;)U*1c$=MSH7Z}L&t44l2ZzH?``n5AajxA$>`S**dXG=E2eBcD-4^>0WBovZJ`eL`2~1~;D@U|5VNf;b4YB^FA8vp&cV zXdzGAo=?-6wlW^jeeN5HlXA@ncvJ6^I;m_d?Ie7&^)KO~rc%BS-(I;!)%)#3M7Gfd zRL9tvt4;Aq5qVg;M&aIO)`cMHfGmv>i!4ViRjQ2S{zl@;08iMgbZV^9J zM7`YTIhRsTp(Ec_qCSU?Z}euWJAIGlOnb>4=yTv%?eziLAouB_;U|s3fLGvL-`AG`` zXLinrEjLN@7XOoMzvGuzHVdh9K{Kw)0__sXsQ^5B1zsf6GL91{C%!Iyl;9V2O7n$* z;=-lnCenC`{gY=KkehI@1tX6ZBFF(jt6bew|AWqz@STvz91 z>aUx40;v`9tJ7cd8)*GDpZ1`0evymmOY$4-VGETLI_VYHQMD%pEhU{fut@PN&^2r_ zK)>sGjm8O3>EjTVB?dh+UT3zmJ%I*%ks$4UH7V2TYjdXRp8IBU!jH-crB9CrI*V!?t!0Xp5uQ#uDRC zUdTs>`WdxnI@m5I*0((%BU|_)?l;ZN#i+@`=8^Ft|81HvQ=i(Ly({CR{%O(lrKfaI zQ^%sh8sJ-@vy{`RzDMbEN~$lG7DguoO0Q@b#_eD4jnRcz^x$JR)4h0%Fl%SglpYfF ziXtx}JurNnVfU`ZzsZ8+k4h8QpR;_>c>)~VX&3GCl3z&hSQbo4A)4A6Xk+5S20mWO z0S8Gh6vb9p#{;_Cv%&CZ%nQUo?;U07|61^>?wZ005yZ`5vdH?W6mO0=KSX_+`dN*X z{G-}0`c536knQPOdi?z{)w`Gh)wR401fqYQvWStXQ_XP?F!ThUA1h9V8E#s9Rl%H$ zMwX6d8?{UJ&$9LAPqu&1dd0-zV4zR3Sy0M&KP7mNw%jP`y|nCN3?tHyR~cH`Zm$K7;?{JWad4fN{Qzz0oPeW) z&nSE-N};^IF~#@o(Y3M~!QU6y6X@i7O^~|Ee3~CCR+w>ROgXUbU2k`QrDIdabJK(pe3eW}jA0_X zhfCj_vXfCa_|MZrq;h#vGnrDZsMqr}c?9ve3U&|_GH-Yp=zM|(!AB_vAx?s3A;obR|~=^Q9+F$nql(IAWu-4*9#mA#GH_P zFoT_Cm>AKZSpLP!{-xSF|KAj`(9VpHJGl6D!iycSgdAoufccON(YUD|#_@5jg-`y1 zN%X(Xq_GpY4EcHau8Xt7+td~ar6#w zS4;&vJXqI09i3b#CihB*Xa+yW;-SdpusBK|M8Er2Ff16)NuU|qLF40?y{_GS9VdH% zA8{z?#C1~9gN0B5#fF~tK&U=$Io!Wc4qeCVJ!D;Z5I#P3arKI`m@kFwIZKWyU(xEZK0by!yiQcwOAQ;drS zib&$#;EK^yLlakk4C{G|5Ye2#@5(H15!~bdXqXJkzYSv=vdnPOIDh$`BTW4nU*z|~ z*Te|_i5~J__k|>4e1k?=gs9V`3~nQ@?ftBY^KC|@q=!a-!u$GYbHqON$J(5sXMdZ_ zDoeigT1if+#pUU(>HH+l!LjC;qb;;m`hH!2{%qX7QXaPew=X7)kwXuu5UFzIjRk4d zx*5YHSVAcKmeAGnu#R~s?rh6fJaUZH^A4h?0dJFsH<%T=2uiVHh1(A9 z28O>8n<^GGXqJvIWC9adzZ*)JrxZ{qBgms0jjlty%jtu@KB>NrJ3Be-)XpK~ln)~S zU)FmlCNy;JnG>*ZGmxL_>jeHa)pL0)MR_g|A5h_bCyt&$Gaa5j>|d_AC1950li|#L zeYbp1}YF5c6${GYw6` zZ>KXQwOdLi5o&p9fw$w}v#A>j2Z~eU0^g5@+(k}6sueMKFyrmg(s*W|{zNvh+ePr% z)cfGxA*!%@DPH#e%J*U`Jum8@`Nz`ZR6eUXI=U9_dkq>Q_5FABc8;)rT$$g14CUf) zDI8hI_6zR2-oh(&)gu;0HL=|B{4G1LgWMB#==>lit5Dilv!yd^0%wZZdov_>k`6uu znbHQ>=h~fB(!0XTJ?;YbGIIhs7f|zYhbcJ1e`20VP`cU9q&s4(Ep?WH!*#+%6l@+) zx4>{e^P!GjAlyHl0WhLa3*es05Jpklx(ip>`Fh9qYq2OtH}6FYsH9{J-Pg!dEdE>r zjy%VW?w*=`{<(()R8gU`~u#4_@{M zn|}Wi)>8|6|LaiugLljk!4yi}fB2m-O?={CofrtR@@*Knn1=zD_L(C9%5x zQm?R!p#hrwKARaX#(zQ43JK(rxvdy&%a8CjTG(Ie|23YPqS+{6e(v@BXaMlR@m*s# zId>2h;ru1LstQI*%#lg4;oG;eT{Y-I-?cgxPt4{jQub{ITdQ!}#$ohaYbIPhQP*u8 zXQBIEVDG*$>3h;BYumfKkd{qgVmm0z&6wViQ7S((ac(6Gc)Kkb*4P>zQzqrT=lwqaDneN0 zgKvQZqk%x!k+K=)khSmrot4j*TsbAbgO6+aWX@?!Mpmmc)uLh^o&&L&Z(1Jt zcvZdzY;UF1eOXViQ&_zRqfVx80ip^^vv?x>WjTsjOg{ulU(vqSI} zUUlf+{YvoD@0Xv~k>NA19_&KDF|RLz5ey+)6HFcLeZ(AY*F3Er%labB(o>V#y;jWs zjy>MJ!?)%#l8HMGlt9rd5PFi40C-(fFc3hea1i(2TTv6J0)0_?1AyomH=A|h}6$dk^IjiamI)dCyd}^9cIo?s!s6XjaFdr^c|W2b^&_ZXoS{C4Q+fW zpSBSrk%|zd3#j~ADyNct+ix_&B|K3|W+q1;%BhYx+WlutMW2bW?Eaq1XHR@T3z;8Dt!MZTr>E`T(F1h9;~=9_HfYk*h#*1BDHr zK({t`ZEKX}3MY%UdO(TR;Y;t=1QSSUn+7}Nh&AhCy=JY1U}r>M)C$%dpOAMt<*E3& z1JPTnjStu<2)`uQ{Xdl)L<7ebFa9UHUKUuj-R3uLmc8)qoPk$@WyU6ya{zK?WFP*j z4P}zU;O_oxg*ACvP=iUiNE?4LHe%O8MrxCAcN;i63jthrIW?jaQJao#xgs+m1E?_p zu4osJ>Q03e;KJi+A!kn3kN8V?bi$KA^uL+&SF$|Mna;k_ z?E>$;x5P3&k-@GM@0dk9jc|XvoSybh{6W6vjntQyiFJkgMY>d}iJ2=f{AFFCW;=Dv z!?VRVc(d|fcwwr)cXvb80m19{0ImmY8L zk&x!MP2`au-2UgDIy#5c_pYn5+TV?dCiU*^ezDl*wIO%5%*^DkG&Z3p6hcp!p1>g8 za<=z-#qZ%0)-HI1wWvxdXeR_dNaCN3a@jB~LT>9wNJOMON=XP`2GPa*M}!r5i5&*t z%YgqG&ybJ*mh{<+=H^2Zmtas0bHl{L8Kz#!K9(v?&ItsZRYJF0bbMQ2JD$CK zuLXIStNG5^(mWPf#7}Ei<1;=n3|x09ZO1-}1nVp(%j}uoXufSc0F|b-LUR{PFuj9SDzEw!YtygCyO} zA!XFY$gHtBEY-Hs@0myjF@Lk-6`1dK5QDl}%!(2%42irp#ln0xn6X14Y4s`$M zPC*I&UBuaX+yHi<76!Pn&_PP&){FK0Zt)aSDkyjr`~x?{2=)r_*k5#$lXM#5Pih_?z95U6ke?R(W<+#y^y@)1KbWHQmME zHy(anojw+(WL%oH%h+kJvPvYl-3Gete$0^ix}*c<`)(@DQ-<;wp98Y1X&Lq9j1N1Y zcg$qs7^5@_L~tZj@m5{|0qMqHhmN1;G$3l9CTK>Xx3W!G1e41g)E&HE4&43y$n@zU z3sJH#{Hs7{Vnt#&QF78}8MWRRWPPLzWxbj9@#uf^Nx#e$hpm4Nu|f^%@g8crvl75Q z;xh5(@qtn5MxNmKD0uvBIX?+}cdw`))^GZ_rMkG{WBo+dKY=jWxK-@cneXK* z|Lax5GcG+0UAVs_12TmI)RH9>c6KF4M3FBFtY>J=V?Rin1R)Nk^=O227F zmJ1~8?|>NGiPG+Io*Zj74PlpG|2vx}TC%wnaI5dO5mj)!n6R&F=#x=DZ^PDdIq<##BXu-*R_R`J$D~yN$$#JFIQGF{-n+8BS*m@ zzIIio@|#Kp)bSUx)olotN+f}n33C07na%bCE#@o9mKQ0zAM4MhKTV;v<4fc&1b-i; z?uw+gD_qB9dKLjHegB^6k}&{9!lv@2$tjtt!pGxheRe>8uJdT+*nxO-gHd7ww*JQ} z$}@!_V2EB~{qZ7Rr(zqAvKv5Il zAVOGfE%`T$ArE(7fwri=>WpFk6wLcEwf99bK}q2H11AoJQ=g8n%8(i2J_nugZTo)L zaUh$xrNu+Q&;FDM4k+sWa~dlyWMRrgn?6gJF8e82VcUQeFjmG<2ia;YHlqbN>9g z!wq|B%OR^Xb*3-Z&5Rociah#^Tkun?@TWw^X0ZUt&sw}@0?s|AQbtZU--(7AtgnyH z%w{LsO?6Xr@U93c(j&GXB}hW1=s={3DfnYR;n_rCDV*hy)q?ul5Vve7^$j1uX~`EN zH4OCmVLg}xE8yrbo|3Qs!9TdRLmobi>$ZGzk*ts>%#Ym$S-7#ghWQx6u2LMwD1c@& zpk0_h5Rpc97bBvi2?^Gulq7|uOrKOp7pwQGcn(n~`T7eEOI_xI@w66^+$w(Sz4gji zsxaRq;OFek3{fP@)&}<5hi%-Q9C7bNGj3St#%o}m7Zg{0r+PG)K9bJMB%rs2 zj!}a+xJIQgbTblF>J%dN;f@ivc>pu8`<~DG9Gi;k4+teV5*D8e((B& z?zhZkF%q5H<<8u^1fLxbTUZvpj5E@v#(!|GI2ucr0RE$=<8^D7iuk~G(Dw3|?ci@^ zYa&x1q7PC$65-@!Ku#g$`jcWcd@Y%jr6>hF7{d_Y06F#e;lRhT9#T)@+M3e2>?Fb* z>QT)MY^7OyKr@!QzlzM+UeoQ(wUBbK@XWDbHFF!!yNQQNok{cU^am78h1Thys603J*+x&mZG|L8K%;{;{*TxwE)L z9=)(f$GhWf2PV1_Ju2c33(-!d3L6NW7DkdByyFkNX#X|)5t(L(ZR$+_(HSe8YD7;w zoj|ujjUsSiOI8jw%y=|)BNbKUZ%43kJR3(GkjhT_3!Yy&N zn)1AsLN5(pnj_5D*df`aWM1?E*VU-ngM|e=_&kzEwH8@Deu_+sS7ANlNR%sJbPf>O z@_vnjCrq+Ot#2gWIuiI0btje`LIURxWyIe^Dz? zH4CX7s11aR1VAMwFahv{=+$jUC?=zP6JF|CBi3&rAJtuMdFF)s*Q`Qw`<{g}%yyVj zwg)lC@rvwge~CMJVqx~t?LhJ!dT_=IQBPmeca0T^W2`WXX4I*oe&8G?f4zS1S)G^n zcG-xX zi=x!ydrXb|9sXzJ#LNHAp-mr-lLapxw@H@nMGFWyiN%R!3{R6QJ&)Ld&Ch#YhUPOG z^*d4fBk%tVsaRYtw+l}6*-sw@SUNFMjQg=^V1FUaj*6ksjCV1vk>}a>lUI*adyY~z zlZZJb$^Y33hua0%EwhAk_{{JgPvM+(f|&=m+adTpVq!rm?W8KnWwB~S6IVQXPOQb`dYT63H%=%z>8FC>d zAjkcx9`v;L-+WBU^cD5@fx&w3{?oL}JMOdMQQh5c0G}T6DjcvlE*Q6*Ptml1KSWrd z$IlVW+?cqWNDfCkuEU2SNp-wJ`e3>=> zF)2Y=j?}w*g(vvlqu6S=P3o);CAL3-+__%{y?tr3OSUel3Xf%~(hqUNFog&${Z2Il z0e5g@fW-ywF6h>2zs-fuA-JpP-c-K{-rBOY>iIEVkj5>cEOh}(7p2~L-SwS~&b|4j z4XMt&n9~>uV$R-q6pa4u{oxCql3Olv^j{gLXnVv;DRzqyMzeTF94!3S`&0B}_&sJo{VrM^JAq|E=woc{=4C}?B?`Y_Zx*Ji z6T8bzlGT4P3UL+3;+6lAI=_W zIDfzjh6Psqt2>}GP$qp7Vp0A;xfb@?5M$dzFie65;W9-3 z>*H{$wAaO#bjhM*^<=EXnqmZ=Kjk=BHzA(z9Kk>+!%*3Z0{R#?>mLmjt|FQI3UU+h z*r~w7x=U6SB#dQ;JY~rzN+;Pp27fQClaJ7a6hCF?QP@X%li$OJ7!)xgnHNIx`@hdf zT|GCqh&2Vq|9p&kzxUhFB}tV*MAD)DGt)u<3%ic1-emZW5hOpS>T|?CL1x!?^Rt2G zutGAJ-P4tqbR&?7i1j>Gw`NPsYN|eFMBm04_ZmyQ{z)WxMcW-mbq?SjNt&kXf%evZ z5pF*fP?ADlUWnM4laIle4Vwe#iG4>8;1s1|Z<6+JC`H4%goTp^F!e$mQYAeB@37 zv>!!@@R^q_c{{$a+F`U|EI0l0fyU!rb{KK&7_ccasl3XL{#BH_)USWR5 z&e51bAMi|l)hqyqXdfBtNpeD{Bf6$ZJn@csq<6#EOPoCMcdxIb{zJ zF0f4Jv@NNj`f;qUMV|4&1uvj?r^u51$<%wo$Js~Yj`*@zn0x)xhc(C9)a}?r_jx_B zFl|ixW(Rn@W?_$s^nBl%3fS=~g2DSHgS_tRG=xew#$;oS24UP815N3^{c7Pn!WKzvv(UDPD&iSUCmlpXe@gXO#lfXWfdEZ;x22N~T|6F%KnE8wyqlwingEp1~dP6+g<^zz+y;g?n2w*xX z)ylA!KkVYApE=$oQHAk^4-JEfHurx;cU#Cxe3MS}x_~M|N)u_011?Mie=h3|#?C(c zPn9upaYg6ptj$vw0(=`#WD1*|`inc8*WmIfgO}TkoCRTtTFoDW@>m#t)?dF)y&+#ePl60kXVc}?dD6dBpPvCmT7shio*!bwZlnk$dIJcXbEQ5(}vaz_>@MA$&v zoHTFx1%!$X(_~yQ`>yWnefn77(Wai7g|(Y4Ri`{Hxam@oEW?M3=Y#B1k+7}xrESwB zq3?kWx@n-yOFaJdO0MW5K_{`(aiH61onj)t2DVwxD=yG^wrjADz$K)1Ivqk7dCDu1 z1jNszRKB-7V_shXC?#$ojIO)z-Zji2UF?uu3xCH8kzERT)&pul;J?_c+Z%){JT`0K zq|tl*5bPR>F81@!Kc-#d6!_G?nAJe9)Ob#&b6A7`9OX$sWEH~R+v1gCVlPgwKeRO$X?t|PU<|$f8 zlKyNANbhL?OMrI#AbLkq+@ob6<*7EqJ|tCzuXC^$(X2hwFVYIKtEYY5GZ*R4p^HCnG)|&2PPWM37px!B2lP4nP9-F;u==L}6Fb0Z zBz8!rj-SROw6RgfMCWhoNmh|J77-5EwD=8mZ6?KE&kn#g-NG-}$q!yRTu|*sQ}CQ}eDYyCX0`h>{bMiDEQrm$?`f@8c3{<_y>7rou6ky~>8x?? z_e2(Mkac?P%yLVquJ{RBxqcp2u^vmmN5o#cQw=cZAbf~0(7ZJ$LLREv@9p$^C>nx0 zurWk5I~Ooj0*>oC4Oh2hBCzx!ap@26;oGlr)@`9~f7g-qZ(ehX`Xx`AWarW-jlWGv z1D${$wj<2u#e+SY(jr}Xyu4={tdxvq`h?;lFO!5NaOid1y0|fm%H&Jqf8hsS8El{2 zsO=jMCYh4M@Hk&hdSI^LIx+6~-^Avi!Lh=LAKL8J-Knf*27b>yDOGqiB$~!FuPW4S zLqpz4lxweqa$^sfl-Y@BV1Wv}{}sWyYvV$r2Aw%gqSoJ~4?WI;?Y*3x{}?l98})bZ z@jkdH7{kSn!F$)4Vx3lDBAYTyxY&Z2KcVZvNBtWl_!Dug#wP#i0eh}m+Ig7@N`9#S zw6vH6*$2A-CXC_)uvP|j^b{Fz*1(S_rMUolDSqrwVOmYo;~Y9p2{*=sQ_Uh|Eak;g zdHFYgP7B$uOy>DNS)Q)e&-$ireapn|{)wUk5V! zTu^CWFo4&MO)I;$ljks71g<5!EcTdtKaciC(LLL{vFcx6@D8BZ#T9at-}35Ecaz~C zXk&1Uy(YB^%a!4!Okj+8nje3(LSPNfPMJ{kH8+9+lg`3#qW(iwKD?!PhD}X>#P~bkIO$Y|5`j=a%-r~=T`}?| zY5Vq{h(T9X`|Q)df81nxs7_~oho*8WW9ddVU7&CF&Zq>G#!G2A{q;7Uh1DpF4hUjz z%jVvOwibxqxu>(>dQ!#%`2NRDPK1C$5SR-Ffu>7H}%6)OHxNutZ+q6l91;#1L>{-rSZ zjedYy##umv@1rR3M~qa}8Il;a7WJK~bH|o96cH}s;afmT%c8ZP|F!hfhPrgU!u;$0 z35*XNv65g9`MHv8S*LPj8`B1>+5qcwZCkE>QRyqvvGSH@EU7Z%zy~Ni27L%rN6KRi zvCKNq2rB*7q#%vj_rTckFEaPzT#4!D&0| zr%5;e116jzeF3t0DIc#TUN{5njE5WRIv}LQ$qf*L`@nI!E68{Ia_prb`CBixsWD6{slkFnboeM;`5% z>HD|hh5Tw#5E}hJex5Zj=${*f6yGr?E>0y3(PA?|afwnt4)9P2V5zM7^~DgRbvRv3 z5MP*jMgsix1ZEdXvCgPo&>DugXNXanjPvM&k8DASEm$_(Q2&AI^abjp!lQS^BuIh;iXS%d#g}vJ`~q zR{J8lBZf``A2RKBQ%WJj68+Aml%?ZS_z~$&xTC?=FE@u=U8ltH(Q;N%;oWsEiRlet zAts;m%zb|^-m8F&8H{&o4=XM}+^#cPihvwe|2w}nhn0o5>rD;%fd}0Sb3~}*ya)-? z>RM;z*9fO);i(!u{aKVA&dG;Ltxflv;rknV4d+lKS_jify_3Rg#}bL)3)S5w*s#W*q0L;i}Xdl)j^YpvW&bcTMK;78y+JZ;(!EH562)F|( z>+z7E>7UwYyr&+hAs39FwHMC9y3Ih+c9C2A0U_>5ayy#z$o+2zD}=pByEe`D7?O=; zh)3c}4zd@uOLA9P^;et^+VnlTS1wke->P`i2svZW+#b2>b53^0STZ&Xt9*_rt`ZLe zwE4&=%j&j| zc7>!WQQvBY4Z~=&?5bAR>R-mtiL%pJkXqPF0I*)OzHinaeD6N*ThgYp&k2z){dFek zD0P16QeI!{W`4f^R|{-AT^z5LKe7)VD2>5KA}#$dfcO0Kn=gJ6m6r@874_l1ama`n!Z8Dpd0_bbVWyN5LVqk8qm2FW{V(hsM;1oX=n*o&et4+)R!%VV zclqsOYOu(Na%&-4i`p@`RP=92u<-h1e#IB)nq%e(>nDU+3tK{xlBvbG%K6(^l zE7}ZC!#UO%=JijYZkpB9pTQAOySI99Ahc~A6Dw^yD%||J3f9oPQF{oJF!_c0h!`xZ z@3+zySmwwYcO+zPndy+krPW&4<3Dh_i5N(kaGx&-D{pMn=%X}Cb)V6GElpoI`14TX zwga`?lEh}`{0td#nFDUe*S5QwVJuAgZXzl)nt~~oqp%U5lPN~Bp6!rCUi{(aB_?GO z7oQAktLm@YEIp=p_-HbBC_wr726G?bm}6q(0_V^#X5S$KicEMB_=N_MS(?r^ybSWR zcJ}ZK+gtnX;i1=hT<5(vKhIE)&z(86r)&4lSMlm@n&~N29;tCT zd7Fvd>gvFE@$Zjxt+q}BxC0GQ;efj<9}nsTuif}O+HkdBNN|!B$-p|s$L%>h$S2Op znUh;Qk_uBd#FmZT+#Carh}GG$13S{X-dfc!%WNYzl!+HMrc5(9dECzvs=xMj9VUS| zGk0Ib1a9WuEld4atNgj0MH9Nk-wI z9RcBg#kCL7{;QSaCAXu#`V-`GiQfpiqdAl<2wrgf{$x$hX&2KMo!j?JMf2H!z1WDg zLX>B`#@r(=vd0bdYLB@rxR_{(yvT0|)mW35A2T|}?C+8@zn~pA4bTACZRq;ALfZ5PAqGCvSS8-FXrjk9GYmA^#ipD= z=5O|7e!_ket9ezYgB#elhkn-jZRc04U-}p9gMav!YYqlOV)1#PlLBaX9wqov=nuFn zseznd(z4h*^uL1hk+810MdpGp4UOIvHx{Me-DXdy3?-3ZkB{|fpk@?Q@k-D4lmcE%iW@G#Tg5cNR!$itqW z)!6jd@Uf07t|SwsZiR`3anpv!;?b(o_e&D+ot+5z+cO8tmcq^Q)ERcqhbZkl*~&=id>RCKfYIK$-%z)lWW9#ZVR*r!w^Vw{?kFDW z_@DTM94o248mI^GM6@YrZ1tgrNvf0|Nzq*dfjOJ<8y@9xro-oo`=Itqdjos-1}2i>}jIiJM@$Q*M=XLuBaGYnKr^6XYoc z(^eE$i1Y*U4W;+}e&bm>{fVT<<4}B$7cz14U3e-@=)dQcLP~a@Uf{Fllxa1yCxC}7 zSdR^27->jmFi!j=^f~JDno+(75ww^Kpl8puwVk@ili4kQ9hGr~R97TJ@Ru>wuM+Zv zQKXg*F}5SaSyhea_FTJZ(1(9E`bi&r|D;iuUe+g5ZLb}b8ebJr>PdmC<<$K_?&s&pGB|w;!>c5@qx{D z?U_s0-?2buql@o<8@Q;3oJ}cgJBC3IQ&mS>^NfQv?kf8X1C1$I@zws|y|j|}z?8)N zB*9!rQ8#3gSDDuXe2tsonl%i$axjj%kwqy^{*D#Uno(5qRLauQxQ`j24u9`W1yc!` zPG#l6nlCQh1>ws2@c&-^wzB)__~VP$A;H77AA0b}wKv%JHbY0he+0!d*7>xJ5p0=r4Cx1HMlYEbhLJSWDNBg&SwXib52Ca1GyYY=hJvEo9(YNh zD;dF^JNyk_pUboVn?}jBUspy^isC35V!@Uj0-srjZ`0MbDE@{UlULyWJX6m4nTt~c z|Ljw!Ih{!e#V77j%DAhfkR< z_JJbX9Z(eGMamXC-mi32maKyw-P;=MqmdPKnNoNDklQUo(^*;LfX+YTfHX?8O~4VS z?Ae)H!hwS`b>qjn7nzoZ-ox>C^ z%JKr?#t1PJJ_h9TC*{VApDtyC9xF4ddKr^KqK($_SYpGuUsCFaf z=MiPNP#%=cQ|!&yhvMGHph}MhB8bX0^W#m@3j>AgLMbw_T)4wG?&7YoJVvQNh!KVL zbBwf4PWtfO$LGPh=~8sPX7`J`!B?Mq zBI50q4*^^@nUaMyHHImg_*d6}gwt=GwXeKOYld{NLLm*upkRHfhfn1U)!WpG+{^ZV z6e&5s9IN}QCT+Cmo*fldVXB=Zm z`@{Yzagg(PLOT7ZbW8c5JdxWa%_OT~q|md)D-Sut^cpIZP9OzdAN$L6@UWhqs%uk| zQ(yvLwCI>Pzk?smCmFJD`Dw=4XkE2{z=`dWyHd}QVhp~Z6C`Cu?%B+@jg0RHmcl7U zk9r(2e&+xA`aV1zn!RGr+XGnY^?jx^er#1#Fj#9_Z=mpoMB`G>M}=&BLv=k~$3Ls) z=K-DKXYDZhl3KrPdpiAPef0W+GUEN0goDLmJeMac4UMlSFJ4?X-xJi;Y_d*oR1oQ@{vKa{Z=>CP2hW))M! zmsIeh3V`ec_O|pPJ3-O-XRW(qm}TyP~DJvVX`7z6C1iw^CGX39&DGx7SHl#K)=Uf34Dkt22tXYT<-ZV zi*l=xS$#^XZ>%In&uc5LN{mrA%%ytgS@-Mi&rMcchin@%@k^i0vOi%r;7Kt!cvDzf zxQKe4ov{2{FD|!DC7M^uUFoul@hL08!KfJK);JBLocl1r_TKxtt1U$*olsr{XP77< z(Uez!e-UN*Btrsd{gOb2`(6#6I-@OT#Y0_iE1P?XsHALaJ>f;Ehe}^A6NJ1(SjmkzDzd1%`l?}> zvZEjw!gMr*Bb(HPw>Ann&-fZ)ZgL0Mdir966M|BGWG(FTb1;*J{G;_YsHl>`g-pYW zor?*(!xM{_eE=3mBqOqTAZyFNG@`xYsVtYxcz&fnF9zqPPwHnfs&DJ~j==2svHQhS zEkhVXui^oSwUG8R`v0`BZhO%eM<9J7T%j6l2|>dS0BcroRF0GB{$ zzlQx8{SVLzL${uLyn2x7-v0wx^)IAqr@#wVDyN9V2wu^a@-o(P;RRr->DboD5;CR* z4DYl~>Rdg3X8ZwD_Fp`897L0%rQQA} z4N7DbLY-1x|7HI>jD({O(R&kwf7%ZI=7;W>kxDLUr4Kn+5ggQdXTb1Slp^ViDY&C*-p_{$wE<9sH)DU)Qg#+FlqlW|J7|m zC9j~Zo!I|m$*eSdoc^oMz;s;Cyj7|3Y>CV@|Iu zkJ;ulbQ4)1tR))lzp(t;uXYMX36>B;8&&y4LZn3Nl1(I~s0-CcLSQ94EBtJ#2Ct=7 zh*KZ*HjNWhltjL5Y6$tvF4f?Z%p@fM-~djc9cHMf8n##zPdi;TGqmN?$y%C;Z49u~ zK>!M56F!N62LkasaZ&A}}YHqqN zaEUQ77f#$V-~e>O^=yb!pl?EY_#c$@Ss1djalrj!Z@TM0pop?7KfQz>&hc8ueNsMo14jfF#F* zog_=GaR7lS$FMkuY;Qchck-AlCLX1szp7>Db7|2AGTx>x`PI-akXRz zn|1ycan26j{}0;!lm8b$+o4ss^W$6ta}CTjFxS9b11|y%u-I^Lg9V2hzcQWU7FXNi zW1rjFBfpQSa&$Osx~k-zvdpc0IZEfuI}a2818Oz@x-&~>tmgHJ#)5}`kZ*2U z#_a8+FDRH3Cy0_-N0Dh^AM!s!w#xK(ESvftP+|pVA&wd)!VaftM(&V^yybev+X!q9 zp;@d+^I!ahQqGdeqYn)Ffp#6#iT}Y$X!d}Dn3c3CM#r2GsECXdV-QynerCHrS7^ zUTd#jxzZj3{^7md_OhL^iUtmOyNX!%17{g0KHgG2*)MejVqWghqLs#S=u1#P_Tba% z@An8#3tQX!ZDnJn?QCziMf&FzRJ!e0c;%z*7q36to__VK+Q+@__q3h&eW0!G?YC<$ zzuY!&Z?@&ND{XssCk9tzd0eQ~c=|Vn=eS_`>gsCSy1kX+)wNaXve1^7m)j5h&=0lO zz3z4G6|Z>3srVwEM*nWgeR1pN=4N~CYhT;m{`R-Gcfb4H?M-ibQ@eHRR@>VAkEzOJ5Yud*Z2{{Z5@Zs8htW+P;CFehnnNS^(A#6{va znYqNv6lXqQAu7mhnmGSegAoBQFuh)(UpOHY9>!+#s^m<^^N>Nr8{1df&D)FZnd|%Q zgHJu%-v9omGgr2ihuh+-|Gl>G@b5-cjEa0RX%Yc1b8a#%BO_&H&!<%z!s)!!{J#$^ z)v9))et?Cl`4<;UT7)_ddV>xHMuRMr34Y;kbij>s2LWdI4F?CipgaGQ2l*nU4EjGM zi`eNdqx~mzDVPlsFa)8WIZ0;{I<6my>kt|BLGp=(+K*BQ3TB54U!l3>S1V`(R{={* za|E|yfwuu>42jY5SYmp`dNcGvpKr8P&ipvnz`bi=W?UVITs{7{lFB>at(i+WMVtFO^wHLq zNq-1u?dfX|wcmKhKWQKLJAX&}w(t4w_W0UHb=ifT8Y69GjF^*&pP}UT?c42Fe&tu% zJKph*_W7Ux`RyCN;Tz6CN=9ED;y4}ietZOQ3m#}t%E>Jl{g}xd9ZAL1 zw}GZ?Ck|S94wsbtCn zLtKTXgt!f7Tc|EM1S$;}!sJ;w^1;b%OR|f<%c4?sv$kBwC7H!B$rQox%zIcuz2va* zM-8U@i+k!Wk2qvXS<1EkS+#?Ks`SgI?VW$49X$I_+Q+V6X_B^DK!9=jQywATUv2w)?`w-IPqwQMJ;n9h4btiy8xoKoS)C1tb|}ot52+)oD6=^qk@~TVWNx0$J)=&;ri}E_ zv5<1QPU=nn%&g1#3qQNH&w2er?ce(JH?;rhfBe7Ozxr1{$A!nuw)k8Alfcxvbj{bY zuGtW5;&DsJbfq}X5b;cjy({ZDW&Q_NJ0*T*Z-wv^4FD@=`4mYazCfvH%Iwx9tyKrM zxKf5C1P<0Uz9tPyhH-ccyYHQeeK&`ZWj23{Iu5~-o*W&c&@y3=y*jdPM0L=Vu^dIM zY55!KW>8Ybq(Wn{_N3{Q#j%!H1PtXckeS5&<&_Ae$0}Dm&VEa!V??H6CtSFMp{h^i zO6t%qI;m1BQ6ht*whS=!wxutN6MIqPgF))0y;8+l`O@e~!bv%$(PdB>aqh@c2~lNl zjKJCIlqloi?-PlBD^3O4ajd`O0%{(Jd++;uanL^H(#zVPd;C+{8xD9_;AYi!WyQMC zsiYZc!l_brv~-{(=ZCol?pXt6E;`z@YgI;1r#~Mp17hi5hbv&#bGCf<6P=W+-DMoL zbyl7iz0JnG_)8mWZEXYhjDEVq3fnTb=yrGa+6o2P|a*-fvgAh5x7j*j{_>hYL z@kc$fvIVi)CIpgveF7HQt=@2zkc3p_6#sIle8O`<|ATQC8mYH5$gBUt45~DW%7lM7 z=ylK;trT#%TZtU1Zb7eap=@#790APdT(>*L;a5*SR8b%}K%@ACxp7?~c~G4g76~OI z$|{*9=D#egi1EY#G%+a=GgmOsOc+YWhOwiG>PglRDA32Z- z^{Bn$L8pwqz3O5*t7sZs_MK?}uWnpwm)I}1v%S}DZ{Fq!uFF8!gO}o7}|aI$mpnzHXeizuY6#6d)v>;O9ONLFyT3& z85r+Jx<}@@QS7Kcww#N&T7?t z;L68KF7UR2vuo0oHRFHS=Pk33YpD#-2d87j!Ljda{U%<)WL|fSSW?Us&kLQ5189VF zPL^0`mQG*iJA_KE)P+-?PO&>`qYjb`$S4m!^rQ=#*c1Mpw%52ym;j)zTKq3*0aNwT zfn=XJW!>UETExAce+XVf?9F5o9dQaed??nD9VGx?)edP=H8@AML z-DX2O4-+iyF0{3Ub%rqGY|)jjU9M`YW2XO-?-)DX32;0OrX|qqBy( zhpp(1d>Xzu=P8%34wAu@Js%?QA%?pN=aY|hP;O)H?Hsi2o6Bu`Ym?i%`|alSTWzb| zYF95~LSp2U1l_3WQV|jC7wxyub#|-?8L*mQNgNG_%8!AVmzTz(zZau^XkaH}hGvHG z(f%?Z4;mwB?Wg3)q{L z%!e@v^60i9-7P%n+o1=^tS&)c^AT91g;V>~nOg;>y!;Pv1Ir)>A(OSK#%Q{|VnzdGtC*m`V;&qV|FkAp&SXFuD(h6 zO_d$Lt2>R$9i|H?selJwCj(nR@T|bZG!9mV!(_?QN*7qCBMlWMV`IIX*zijQ@4(Y2 zw6lB~8T2NVMlk7FY0BkqE=0q_D@ziAG|xGU^Qz3MAS(-Lz`Jydr*E%OZqG6R z*=1T{704c|93x8_>9l6d%jfz@-xlq}V}Q)o9U2y&L31HjXo| zb~aey@d7F1Z@E^_EHW%D))U-p&A^E;XVOzm+*8=b5!6A;xWXYDj+$v#)JFQAh~5LR zw>rmao@lu;hPRH|-GuYW=S+ls;1BHpk*pv46!K@zqZvoVy7y}zZjjaw$_IqhJL0rL`rVxgg=C=zx(f&L!87AqC_Dz z@Df2mrU^NbS9p~f#|Z#o#*$sihcd$J@FpUxAt6uN2#3hVMVa00mNzs&Jed#+hMH7(O{R0UMLv#orRf~&-J4Q?DJksq)*Ov z5aPpZ9m$>~wPg!zF7sCW4!7iY_Sqjs$K?6VcKcwP)g1OmXhjJg%ZW?!m>ygC_j>dd z90pgUbjoy?G}tr!R;LQzhckc4k z=kgM(mvPX9v%x&i*aSO(>E|t`R(=XkDp(~F=jB6{{rn=)PgZK^KhK|n4%PQg zo8Im(&jy3Y)ULbhG`TKlHlx{eK51?Wwo7g-1UdqvfhRa7>JG&|shldDTYx zIc22n`kBimXJ2Jf*Ht4C`{w)^KAchT85Q$;b@Otp7nuEUMx%5txN6)Fe8onKl<-hn)7oJ*csS!3m1x zlA}<@JuX9$gd10z6OYt9018VfOQ5>i6Nxe;H#dAZ_`rbT+6Ho&@&~H-h-#l9OMjvh zSaXEWf?0~mBO_4-t^X-a@)jrjZIp-vz6w%a=}EB~aPapj4C_3~#|oh0?LYGltm+M3 zP4LS0Z*Q=FW|K^uGcnj#T@xCpdcxL2T^hO%4a2gk@xOanLClYH4cv9mcst8G41 zFvg`u)%ZBy4-u|hxe_vN>X9XmJ)6a8g-qz$fNO&(*fad3Tp5Yw?JEh-2tF zFGbTvb^E4l!RL1LJj^w4b`6}p|KxUD7}FCOGZi?K%w14sy93@cxW0V3z3KN~Y7am9 z>h{bB`1;QEf7%YNy{_hOfkDw3$^5GCKs+<0afbkDyM2!WuD>wuhy^%#=7yMf!Z^_z zK(75@l@!Jj?{ZC6q?1#8ia#>BP*Yb?l#VsAa4399OA;Zym>qcLs*U2`^+8_VY#{yww)7G%K=o7VGO=ZRW@kCSGl3?tLzgsDXm4~TAtl^$7UcGm+f#&CA&x*8i4%9Jw=t6bArCbG*${&nkf zK+MPnZ+FWMdT5;~`p1JW3UUEhW(>(QAuOmTs zvYUsw1|GBq`gl5(?cKnfO5kjT69aoT^f}gC19J`Bl?I$!&ldC#CXQOj6s^g0)=7`_ zwQG-*llI*I+ZJ)sCi5?=_*oGHK69oB#K&#MI3igwq5!7x8*=NjoH3=>p<(J}{+~Ki zlUH1j?~;%nfg(xXU&@K;@R>H0`_|(Dro@%4KnPXPn#JMkShnv{wzoXtUu8m;cT&Cx z{IfzPjmpp7cnWm@#|3E2t$YKM2+^6RJAsvQoC>Ry&GXRAhoVCYVG(95W$Hne?-92R zud@Vjz0YMmQ<9W%L=o7QMPU)l@-PZOF(yxyWR(o8#GzH`!Y$`1l#9Pt|5ghAsXlJJ z=X#K!xS7_0ixP+{Sylqm(-6We55S21JpLBNY13<_p*G(sLVJwQK3N6HxH(WCub##X z!Ri_*3wY<#N)Z7FFYN#NTJZfFY+u7r>wH|A{UZaNmBu$5IA@aUeZ(%;Do;Mq3YB(6{k$3 zVAr0os0A9*)V+niBGoO&YLL)#*Ks_j&c8@hRU`>eK^Kim4OV`Hs^=(dpy8xLOWGzF zpOTQ5u+`AQDiN|7wNs&}$VaYp!jn8TqVt#fhlM3J8fZK)V7RpVY};9U6+fPq2Y&~= z$OTPbi+BC5GJ4-yC{lbnQO{%2wqb{eGP{H)JH zoU&S>^T8+`JsdRQDU(8;&eRhmr8C%l#Z1wH4a&+|f>uu1Ll=-JiA?1eC{y7n_wcFY zRQ2c%gAAicU6oKl!;@9$xSnoGFgtlLDC)(N+%$@3K^psZ1iZS%o57)Bo|=lbO!FJ@Uk?GY@XnDu=kd(W$#WlkaC?5u{{tR4K}DrJr=AQw z{g2QUh#zr17(?a28{1g?m7aVONe>@H*$W`~<&7i*K&T9a3ICF#h`D2b8nP!%@_F3U ze5HuvrC_;{80dJYLr`EO=_BBN|F3Qx3ZL9^cCv~VR1TJTG;lP67n!F!l3-t%+yW5d zfm6^@K`nchqL3Ak!P7}3-}I6s&}qETDNM2xR8nqZTBgz=zG%mSmi5#L%$~H!7Xs*n z`k+jeUAI6xv7G8*23N`Cl<$Occ20BSq_5!^x1q-^&7umB%1FIu&&KCru7SJNKsph? z<9xSx9S$RQr!X$e?gTe4pKD;QftQ#DFdsT-`WnLm>5!csI;0c5^M7CUaxR>m|DA80 zlU+v|vv_9qI5(oYN>;qxUNq+Q;-_SADHO8s!s+YF_TRkz4t03DdTM)a4}+zQy1CAR<=DrF`zEGdm%X@=bIG>%oEH zMc}~#4gxNX0*WyZ!lr1HP{buHqrems-L#=uios7|AySrAxOl1-64U{eNn?a3w+uma zxwFIqKRf{JD8ng}e>rPKsvI==6<`M^9jS^A^~*a~0IOw5njc05TXmlBw=R++q>cgV z8RSXTcF;jnR&`O1W>8XQy@W}aq9!@Ad+Gc%*TCIt;7DJ(d&CYY{vA4?<72*(cF&rf zBg{4M;@3bX?3uZZ8aoHx*---!xHxy%7rh1_`ildDU*K}daM<$jKqgQ8h9H59-C6=U zrfWDzv1R2f)l6T84f28Kn7P`sjvpLDuN)&W3O-QK(&p*5NOl}*|62%vJ>?(&M>u_^ zlmsh)!&j61OfGTot(O8)mpt?+z^Fg@()DNHn=l~gEgHDGuGeD#KOrkE6rlH+JYnRD zS|OTEb)i)iSNTPnVj|`$esaN!5U|OMX&mx;&}p>?5}}pMrP(Qck4` z$7U`?8Vj-FuO8%{tWu=Kah`(H`3t2il$8@mL?r^KdY0fNo!L$(XW_?^Zqlh!<+bfwXo9X zyIkZsz41FV^)b)7H7O1b6J+LpfQ0eres0g^d$%oj%Se|Sh6|@R7`*ZdYToswTE!SK z61>xwS8Yf+4gmAN6LR-MbYqIEjKK|G>cE{ur~VxD3A|gVJn|F?&YBDgqQsivFFRn}d~ex=4m{=Wiks^4vrB&bJnugd z2)>G;^eS_TCmnJqm)`gwb!{N@p1Dek_MlO92dwj#AC#yo)Wcr|RznF@aOyAn_k>d~ zb}UF1XSkwh>z%q=PO!XS0+_t{VXlD(ssZ~e-P_MV*~9&Urz^t#92dLvSie2HvZl!( zq^s75t&I8cerRBqm-vorWa-s}bw4Q2Y0Ne7fHdIb{=86go1bVb_i75@-0d8kEmoNf z#h=n}qrdKsyRL*A^RKh7%QgBBmG9gust`5zdoB;4j($YlnDnHZp#On*z6&jp(5SiD za;==6j`lIsX8j)@ppC^d zu7Qtu4P@lxlJdb;W$vgvSbfjA%{6cl8pukKix$kK5lPU~KA&@4YWgQ7D3Sa1FZ=2~jc9cM5@XrcbS`s+<&%;~;F98j>#bF-i8klQf zu7R^?K*z;-Ip?DUoO79Doqsd`XWlh6Gyh|M^2P=-v)bI@B~@-51)2Zru7Kt$?>L*` zRX6&|KbT}AlVSL3@fX6sLX}DKdkYUQYK_B8^b>C~7%IlQQ{4Tsex})6tmm zX~=uU1`MF$#Y+yz41biPZpC#u(h&X}N5f3Zboc-cf;50No@jN7&XT1?@B`T2{%)dg{{9FDW*qWGIJBke4I z{FlQ%j-XQR{6U-29=z*9H_xEO*&cj>-a}CTj zaGx~b)a+dBucp)^^Ka(sV&*KK`9CWqBya?3m#lMipZ_6JbAB9}#HX|WAU2)T=dEcxhIZp4W1&f%~X|al2EJHM16RUwP$pI`)B0RbN2+!@M&sAPI^=SC#G)jmrbaJn1D&uYFF`3oZ=ye zEaJbVf*o(1%p>GAw4CLtpCZrj?d7@MnRxjuE-C>Ai)03rIOo2a7KH&5D(Y@{WhF_l zW#nH`>J=72c=HEy=@1`JS*l1mmO?Em{&lYS{(kw*qK1^&sq2UoXI(}MY*Z4F<3vsecEZpXM5Pk!wIBJKh=eBCqPadUFlTHE^Fb zpc6G5wK2oWB2PIUoqsbo7gQe3>;A{S^DiNH!Nf@_IX&ilU0ag$Eu@h7Uta?FzV0=_ zGP2hn0+5zYR$*CE{IPm6G^6JK#6oPk3TAmg#P`ool;R>;uKzLorS5bJlZ#%-b$JVm z4DZ)UX!u{8^*?%@ha=R%L9T!c6QuCZVK`C}s||q?DyOEZg<#z|n$#o2EDaJ&dpr_Z zNWOeHWb>R%i&(9sS=P&EJ!{>;dQiYvhasZ#<)2bb@~wCe(}oUFa>u#8JW$X67Vx3^ zOM8ku$j#4l4ZJ8d;P^K9R__NHG+y&C*T7r@AK4n1IB3|B*%4g}DzkMPlWNV`v*SO$ z0?1_&oYk>Koml379T{f&v6U%{E;I9gJd;`G$TIamx(qW8RGc>OhsB%qcNAihMr1h) z>B7)7D5LTgjp3tZtu1`SnN(m1P-n`A&LEmR`PCN(U=-&lObali^hhw!0{Xs@Ay%{$ z8Xi7W-uXu+-k~DAnbgxsDUGE7R6)nkmv~5fvPvhfa|N0C9W&_X zYQa{=%SMReL5tx0E^r@rZD}<+*#_lc2}cs$_+IAa=r7&yOp>HdXTqE#omT_2cKTa& zSKG7tmbc&yj{C)fy|zMsw5ROs(HHEa^vSVLY=ORTo*)l9pkv1kyms+j;^9rv3I!W0 zD{VF7fO3VsZ=veBy>+Xtu5Glft<84n($%)(d&78nH_C&_xF4 zeUN8sYpZQ+Y`}A&t*op?o+;TezQ%c4GM<8;&AHpS(yRXUmDRSrh3c1=+ty7+G;U>!4+I^)BK>k#KI~Gwjue zqYJrOUgNmBzP^oEHRskt0HlHsU&~0yW5Sj#OI!rHisnC+b1lfS^W!_x7ZejMrvE%1oQV&!Y{j5+>P1ETKzAA#v+K@kO0x z*Z^??#e-WtAu1&lN?E>I51hpJQvU#^xW~?Ql5{z@bdbKJSV#hereUULB%tG7?vk^y+l{`u^)a14YBMP2L`ZeHo{1 zab>YCS;)J{d2(lWx81&dyFGkqrN&mID}Cuqt>D0&HI&h7ZHvC|>vRv6R;oARv@9;K zwx#8D#zmQ@6L~nYh(=0&&XdMEYkj(0jbb zSO*zDO-HSF#q?8cjdhMKR&jn(B{jHb&U1wOq=C^BoYcGZpslJe#es=|aE{q)OSE@< z6diCU652X*=6#aoC>b3f9WE~{XNQWjj$+j-eu!lLvu_cPfXsoD+BpCA`QN_r7H?4v-%76e;p|3>)(izRWZsY{)hO`nbx5A$v=!HM zSVFC)fr-ryZCS;6(ktOFz6g2JkG#f9ekCU>Ec}*143#M>0UN=>FmZ9LQO}EWA$A#RpYs;mf;^76%P^z`4>iUbd}3SPeV~S z%2b$iJ%&36*2ut@f0d;GAaUdwcxeEu8kHeBp)7$@$y&+t9QB&()3DGSb+Dn72Yz&$*mcj*Q>4BG2*8r-3viU!(9$FQavHg=?SlU3|$V;n`KL zB|P}JGkWq&=;<>WzW|<3l#{R@x_Y&(;xr{>%ugZDZMW$Ri8SVvHf7?k#8qFompGeei=%wZ|TNlvTTfcImQtwZODZ4ETb_=UK(da$jF0Ofs2>IgWi2q^F)0wG76#Nfq3E+H9B5@AU3R!-lsfwL@ixSWi8@h)*U3B3C zScve~;Z2e<#NLV;&czB8!f@qGz)@L4X!swoHpQPil-VLyB#DPW4L5LxO}84-;8N8_ zq`Kso3GFEpqh|J?w^u;HCR*nxL7_>DE`~oh$m!q3;ZZ?m62hXQ9L1Jy!K#{Uwo}Oi zrsGLnN3f`isRAm`4R-t&FKGaEm_J-Xr(_Ii7>GTq6s5^qi&4Z;^D|bsCUS+y*$+;< zHAy3rijO7c#E0&c)s+m@v%bLXP9~EyEMRtu<<(`JIE;DfbVeDfvCoJ+M?0?uysg!T zaE1U4JQ=9kP#vUgu6FGkyNuB_tec-QxlOz8u)2E5ne_sLw*jAh_SyEbM<2@y)6VWz z+r@#{*tpDv16PMLw&5&d+_?T+TZYcc+HzY#6JA8ELFi=}}F3+=lFqVK<`kPoO<$x{SwK z!8i;5J#_p2c4^~E+uU4en_JJdo45AbGtWNV9=Xiq`Y_J%7F-UEZxWG(v-t{fsQg~# zK)}osjmFFD({%D}ai!&ak zpaSzoHAwFq7#Qyu*|xcu;UT;@|9t9ge{-uX()Je_9J{WhX(sHdBb3dnoSMDuY>slf zb4EM!9x~gx?C-rgPFFPonJE>ajPSP_BjFkXQmNtPnnL26YDNb=&Wg_t;ls!{JA178FoSCdt~ zc3-UmFtn5hJRLtH8VVaI&16MQlb_>kn`d41O1} zFSws&r~jmv!%Zxo{~2V+?W zV>(gYk($8VOJu2C=3+<7;QhT@ThF%rrEP2;t7xp^t*(!H4keGX@FRX!{!4BBu~$N8 zxm~&3+M|y=#)a5#a4UNyJ5^UScCfF0LXC+p#cArsNcI!G5x>`v)feiir@FA#mboBU zUSVqm_gR;g$=hWmkK4|vryFC1k7s7qSiij3N&a4|^pb;*(?DCKA8?5MpzX5fjJrnL zx7z|+6_&l$-=M=REoZ)I>+FSg0U#6MhpP>%A7jPn#(n}O-qgEDW-zk~9$4DR_UrVF^=cBU+;S}Y&evirCWZ1diUbGQv!Em>$NULf ziS$6e46^tbuL)Ry^`fO~7wFZ}<`CDd0>g6e1q+3A#tg>gBWxZfu$)wmkpa{+R`gyt z99@q0!|VEsDo+aH)Y59vmS$B>{*+5c%}6&DR5G|BTRuZI>L0j(2@1sdLsSK!VfO~b zbjmP53tk!UGSNM*=v_hC#(+OT!~XJ(>+J^4+T{%<(MU9~@9nIH=HbJm0mqE}+l!NB zn!%p8G`SK^Pi;H5Z?;RjJMDEiGp}02N!r_N3%9u?MW;SszmhA(7a4BeyxIQYKm3R7 zAGzS}sx8ubn{$=T^?O*n^RA>hf)`o(zjf;tSNrAc{N``IyWP0C*`9dviS~DY@NZ{a zmxYL&#$hr>bA4le*4F-wpTpjHiPr^q2hh= zaop|{VvLxAmaj9vvpyD(LLV5gFHPouK=Sn?{SfbxQC1F^{ok2=)UdG}z@cEX0AK!x zG6QV|17*1Y-Y4PA;+XN&U&^CiMB{&C+~w&`309>g5a$jOaOD7Ff5c5C4n>K^V1#*z z1CUxMIaLPGwTjm9Oal`-(sqnnF{1L%!wKR;)5@Eda_|zD3_*n?XuP6i*~(2kD;F_} zKY6HvV0l=kTc{u%xri?ei8wnDIG{mec4Q-60lPdQ(s?F+&O^4KKqI$T;kp#s^0&sU z5oF%dNOEDz)$KE^to__GA8Oz8p5JIUu3m0WJojAN@~ZdD;XJr!W;#bi1N9VV1_Aw# z9%(o8wnVx&yU%cf9%n=Q#?e$k4Zm(ozW0m|ZoizI`{j<;E7oyXj{@I^t zzxdvFx0@e&wryU&PQSEQ@&F)?ng)2+tMT&$>Z+acF8`G)53x$P!4sYv?b&Cpx3~TH zPqZKYyZ>9LI|Qk2;3n*HkyZOqCwcc0L3eqIvg17V%2&1bKlv1?h4$Zl%{Q=5?MY&> z1jRe;Qo!0-OS~nRA=+u&%SlIvIg~mtv{%03W7==L^Vi$Qd@N6R-n!Y=udokg6&-i> zu|wJ-8Pf*ZD8r0MN#Dz1p9%f;?nZmZKYOly^;>?f{pIBmPV;uXv7uYBX@ zw9o$RN80-G(<}t=Xz>LF=kenn92gR3mUC`pfM<-;zjJ#Od8!P-wRD`Sj`|hG_-Qn{ z0RHEcO?_gpK{<1MtI_& zlw;ZKcxFDP+yXrs-u13`wO{y!UueJjtH0Ww<09fJ z4_k7QHwomxPN89iJtj}d| zY~qNrq_eOS9jPV9iW7kNXAO>T>v8p=m$jQWb})`h?Pq`XpSFMUPv6*?U-?FWDOJ?*uRZ=h558}dZ0 zw_KOGD625)>3PP$-8Hx81Lk^=*KItvMLV!c`#XQn>)IRs;2+~w`U)$X*V%ixjf6H1 z<dEP_LZ5XJ;x)Kgt4;E?fT`F10KNHZPy<9 zt!=EJL`Ja@KT7;rUS?CH&(d2e1$)tnY=UibDw7D#h5HJ5jyQ)tF&G1i$4}QrY zqKiEBkd0ndu`3}lOB0i#HY z%@R?`Izz&UYB6W?dXD9B?hvCIpeT{uL*;g{!0X~eC%Af${8cVT@Mayf!j?8LR?u=X zbz(wO{+3dpawFR)Q`|_^%aq8=_vD$d;j7UVw^p^pk+L~xh-fw~TkqtY{{X3U3>{hH zhJ(dgnONjDjJ}$@ysfkbDccd)m9G+ToHhd2NE_V7o2RNLSx_;%ZDtE}H|XQ_ihpPBag`1hKV{^z)|FU}yp z`tgryU;DLR2k+{ulQA>+P8^p)`qpp#*7oh+{_XA6SFW~iW96?saw!FG{^$R^{o*hF zV*9Iq^;_GY`7{6J42K%o*+XM4>Uih7{(1Y(zxF@3-~KzUw7>YZAB|J^ZpJ#Bw%i|; z4bYB%ZxQ0$WMxSjXA1{7Y3@bYUs`MLd*TxN^gpTn!Y{wGefgjM`1Ucsb(?pXv1*h$ zYA+Bj_m?$1<9B@f-IX+q^@Hu}IJ=j51;;0}pZ@7pR?%FVyUeXA_J}RBU(Aa%h%NZo z`CGOWG{c{YJ2YoZnQu5C12G3v;X2x!rMz}LUqDa zrJJYp$ttRP54#nh`QgE8AdNH}gks%Y6xzurlMU5xH*c{@>H|8<&$X}rOFz{fd*m7m zD7YkXFpil&Mz_Ap{#Cs0{#f(B#H*9(Y}uz}J8li?Po&shM}Kv(!fy!+OvnrLitRc@G}Nk-vjc|3jxw&!xt;MO7<62z99@QH6_QI&;AyfF}v6#8N^uN_sFA zv{+hU6Xo63%9)r`md4820xZgu5W zV4rG`R(;B5qXohG3zX$VPc)3_UT+)LWN?6dkRiNF{fF2_WbTLF-r40Y2v_AyDC721 z9BKf@rtd?D^TZ2A1GZa?Mw|`$H4b@JhgdyZ=1Mqmq_z2d$5GncKAQe89Um7}A@`(h z9q>Lho_t(_?>_hUVoHxf`>)vm|GUO(JGx+hB!Z#~hLkYSUjPgQm<+%P07 zIBB`!&jes2cxiZYSU&A#!_Zjf!36iD?e1@~as_Qj?jCHiN0C)SbX)I{LIQM8wPVx6 zZ5YIpS>IL3A`G{8w$TB6d2)9-6N~pX5Cn#nIf;xF_c8gG-JQ$^cg1TCbpJKLTUrwO zG)1d$gHqRd*0m&A%4n1+jiXTP8T4Sotp=)hAqBE z<=EE~vtsmK?L8dgMEaZ2KbNVeCF9l^yg zE{{az9?V2~yoRN>71PiZ38zpl;$>NovaE7-(y=3w3PJEGubm9SiJSWOb1ivRr7Tk| z$dyJaIrL6_kBRg&ln2}&Rkb!;naa-JI*_jkDFrBl)G&xfrOVLkYGS65OR z&^~Ht&qY>?vSNg+>EU)%FAZ5`jd`>E(WVm+ghA7>tY=oQ?6{gh|GJ+wzs(=bwP>q zI_3NDaTk;pZ)F%e(Tr;_&J(z0yU3gNy;9$6w{XyIHC`2lqj;;~v$RWb9ESmisS6W? z<+Ap~6y&sUihNXmpIOr10=E|H-Diw$bn6v+%qFCVeVXMG`$R@mD8Ly*R7e%Z#eigV znyX!?ZgyQ`U2{)b3sV++@YnW(aYpWQwDW4fuVWZSFLd6lbnmE1(QX-MHmgokWzM#F z2fObldB`*88S2_EA4ZwJw~R4IdE9>HvvP)<>3Uz34&5y8PA1FRdEp{m?-ppvr^-D^i2fbXWQSA)Ob| zQKSGFvLPlFMHvBg>s&#zizlfF6h#RgDP3|Dx62X!G!ExDfWSno0*SI>%*a&6q5J@a z%HVG^iYua$mV8yOs$ce3 zPv7#j*1SK~002M$Nkl2)=q^(W}l8q6fx-Hsf3Yd&4U@mROQlT)l*^csb6|3M&xHOL&d! z?QuUEHAcA7eT;%LhQ{Vj{B6LK0<)znS*|E-+m`vEQ}+KY^Qwd;zC7TCvzE{i?~7#9 z-pVoITejdN7I(_`LO?s=DydI%Ivv#HMikMPY#6FOG{2Cy*qI(Vcj7QFzgP|2UHf|x z08K!$zcL&0ZEXkK1qb_d9t42Z5ebq}v;FW0l&5k$o6_F7+CCgOUo>k$szX#~spvXJ zv?gE*((9Ho2|0!sGv$AvGs-iK2Cl|f_2{Az29^a>hf-ej`oZ5acsm~BshA9xE?ekU zUMeCa0P+~MH6tt3sRL9T*ZxOni4hTpyf|qV2BrgMT@bh;Iou{YgoYxxQKQa*xm7_+ zfRI)f2Ng#sZAuAP3KCA{^+L2X6VV%ES>g=M{UUyD>tE2Ch%Om=s zc9sJUQl5;~L1X;$9+ZW3q~b0AyEsp~%Zwjx_j!5e)L~c&|C%&19<>*z1nuLAflW1j zFTsmX*G8iUfb-H`SFX~&+DkHrgF4}N3f&VK9$%0PJIKvm;0?&KCr(8pRBZZW|Hz-8 zAGikW|7i|vNN=FbyBSAi7j(j3s3CJV!bNt*fPJmJ3p1;K+w;uL9s{Tw7LH<#jpajX6r$eIWc@FjqrW5J{y?1)vcxLui-Ywj1P z<;y{|PGdpTMsS%`R;nTq49ZnVQ1I&l?n~O^JDQH~ z)55iD59cH0zXbfhd1OzTct5wZ#p^XLwQJXSyMGV5Ckg4c3}AS8wYtDlXNxFj1;@#v zWer$Xow~szFCP~lgB8D~;2tdhcMxTt*JE^&vAPJ?hnK!xo<8sC z6B)-2omiUN$F^;`qSPH0xTH9vw6~oj_)$ulz9_jj2ivAjP9}Xc6DsTRD=Uu7!Vt{CxOv$?Vy(3h2be218_s8wdA&A=+4%wPfaG%fe zsKtZ~?J4y!mmznY9pK7Asv6{u0roHcN5&qg4i1X5)`tDd&}ZI{|3Q9j0-1OVfYL|Z zHvzAVm*PZ^w*}6A0 zEtn-WdIKC8^RPi=f-nQpVK?xWORO%OOc;>$f#EY_hM3Ju-PUl|@`NGIloPdzZr zq+-I(!wXRZb&IJav%UPK{i=aUkKRTHa3Es1y#1!{?QrQM=fbMyE%oWc3|**WxP8sn zd~N%>ulvjGEswskeY`LKIwpKN`)3|uOuhNdf0mcW-e_O*HUBN*Yv~Bi{SHiS_3h_L zMlhWqY-}yTjQPD|oS0jW_@rsu&y2 zrv35n2-FV7WJ%+Mpzcl#u6VF&S8SwL_Gz$W zyg^r|$fhx^G|*2JY>hcr(iROfQT$8ZIF6JgZ_tK<=p%$)m%CU*xZubvD^=kO6?(FK z;^Ra=I+n#h6X_uO0M6xf6{Bj*S*E`0iOtW<+KM@xGUGl8SGRL!;Sa}CwZmES)P2;z z^V{n%@yRXBo;}(+E5r0R)ArK3b`&#GCiGJ!?)}J@=CbchGF~w3u!8A6#DuW3 zezSJ8tZ(eLj^mv=cu|@kFF*s1l_i|8v{3H{#%W1ftemsK)~BGi`6g>QO_jUDTLI45 zeFpgx&#_z0C}Mx0Jdb>H;3(;-waarw*F zpsbdq{=xBPA($yvZf`LFLxvRV`i01S49YO*`k5g4@s7{P#>*HY>k9n+8KPgWnxc4b zhhgZ;hDPohAg2qMj(0l9g_f2!&(7lf@^^)uS%mbcld-F*PAsnxQKLcw+MAZvHc(0< z8((yTKDYksN56M8bN{hQ1AL}~eQ1d2__ELCT8PZl41pX|(UO7;;C{Zz=ajzdyZ&1H z1e~dpR?vn}4k4Ewb9R#7DnTKrTd_ zh7x?D=sY2VjIU=a{<4a3}dLl7BT% zZ^u4oE%uc)r**qajT3JT@(2zWG`rrNLgkBeWOiPrf9cdbFPyH{=YijAhEiw#wSAnA z`OBxrh}W1hJ>;i!GXK-|LwIET;QoSIjv>!v-a+54GdXXJtHrR zJw3Blu_y$}c0kXBOErKBoL_h^+L5QXQ(6oxglblC;^Nl@-E_a`ga! zjKi!0D~iCKcRV~n40#Pk2#exGp=pH?UhQCOyH`6afOH&;;gXXnOi=KNrZneB2ps>@ zxBU)53jZ*FK|6nni+}O-aan^3@RsPLHp&caoG=;Xp93LRvx%9lU;3r?pZen3 zdkDgd_vDlBKNic|n!eX*9xhe`E4*4oT^sCMzQ}g0##iqAc)A9hW6twCo%;PMwQci6 z^~_ja9xJBzi^(x`^bf|oHETt*T*uA76Gs5sR`Y)+I;LXsGyh7LB5k05cHxQt0dYN= z-mT+!)g8M|3*35QR7~4W=dQ}~fI^QCXDQB4m{mc||AT+Y5dSB9ODd24bTssZ;{Om& z;AB)B|4Q0X6s!SOnH-U_V+CQ#d@%CrsvZg;#|q{iV8sijHt|`hQE6HGxU0d6M--(^ z*2q^pDa_>K^{QMU^nepbgVR@cKrj3O5GKE=3pgsRoMWT2w6f+Ve?y!%WumUO(F}ic zrJ3x)LjK}E9MH)v7f~Njh#tB=9}vrr5H_~dd43-m)vPN-dTRQBJ#@q`R(|(poECoO zXMQF|_%xW4$~4~M9}PYf;Sjg{qC*U5Hw#mvelpjxaVM95B$nKvi7&WHYW+OF3l{H1 zM*bpK_Ks84#6e>$_hD9GBr^ZT6Ea~bKL(^ukSWud_c&+%@Aja!A7C2_JWiN*kjy{U z|0v4X6A;AlK+rL(EnFh^{NZy1qVwm%CH{~6k?oNG6B_tGl8CvIc5xV%Q;#BEMf?xT z{e@KLPkPi}$Wedj>0H`o-bV?Ua!({7AcRvX;$be?VjFtI^@J;jV}~h}!WoaqTIj0T z5=*Q@K~j@b)ti+r5bNe8XJnSYOSRIQ^0zW2pT~NrfQ*@71qTls#gsV8y2SdVH&Y_4 zgk_XoK>da7q&%e<)R+$wDJuY1G^F<+!sxE0=ljpGoaFmYcTgPikMx5&-)+6TwR4`} zlKpu?^{6{jnBDkWozXsfKHhicS`foQJPzLPa-Js~hkqx>@I3rZ!X5i^?^dIkCMF?oJM8h||IacMvA6;?Vi@No?c}$);}ts2pDt@gRcj zf9!kGGQlE&x7nHNowGAnlci+d>a3U4&sg%lxKeYW?@(km&wv#}IyG+(O65~fL|Nwl z@DWVg36zBTf>Ze_(BMBF0)%~UYkZLK0CwnBc9i6y2J0~iP$n7vlHwN>@?_&f3-L`X z;6I*S9xUqeBvX8gS!e54PcBxmOI1;-P=0ZACd{Q)A&y(BNE!r}BW;8jIN}OWD^|iI zDng|kTINSU5fh{28BJ!RO&*4Y;bc>qo@Lt0<0u ze(I-wYF?&%B>S$CzJyu)4`*8dN78tvvgXYwn5yU{w!VdW(#Q$LCcP6Fg~VJA7RPlA_Kg3e5D zJN##maxYs%!leG;T6q_J939o>`bZ4Qf7;*uuG7%h-O_a<_*sAHVP`kX;tij$}?wnUo|jRWd_kWAtP~t=W)AJ7Gw4fJMEbB?_@=aL{u)U`nPAlZuu^CoZv2=6?RDQnW%HN&-(z)zcXZSf@^1CCKlcl&*okscdZ+Biye;EA6**;gV z2^l$u&l?*X?JK|XE8DLzR{j~Uf^l@57A*f|UUn<|SAOMJ4Ip0}7D*HUYJ9D^Dhy!;Eo$_-x(W$=+mF{`O zFJcaP9+R02`-ePp#!gN{&BJBaSX5y!0ZOQ)kjQD;{?w5iqbQp^_sEZ2FyvtpKAFd7 z$}%T({2JEf3_&C~8NwXme}tqq9UCB`KFNfQ@Z@!ZvkOM4+adl_15$oS2~ahGPON14 zOw}IpoYuccMY5_p8Ls&iZv@DnnMxYV1%s5=8d;v%4ID0!Frr5WiFzwgj}$7&gf8-q zTbczAME5YQih@VAqUZi_v8|1QKy+p0mZdP^NwzLoc*wsbFe7B-pPSXif1+r>q732d zzods|XAJ`=Qsu*8E$?d?F| z&b4~w#WEj#?X)NU-tdMuWHs%-|KOAD%{NY8QM3Hpo_as4Xs>Ty@C9FRqVSrCTetYa z`2~i$=t7$sqL*mc;p6h%9AoErDTA;6m>A5Ls8a5!+K$K5es?1FU^<^|Tb~b9)(X43 z=iQMzD4l%PevEl*${BbP=Er-;{7XhAVdh`@U!1T${|cK0m@)ri|6=>d&k{|X4GVR^ zy8qGVe=oQu{zt^*HmL*&cJufj3;^AX;RHx->VJ?=I=jijf(WdBry^;zYB9_0TQ`E&2>^zk(^cMqvy4yralpAni{_e<_$bpn(YMS#3O+u*8#1D|}#mIpgs8 zJm31(x3*9Eq)%#Zd)wREpM3eF?Jr$E{Z$;63n%<1ebVo0Z++{J(LWB?$MO3hg6i}Z zW?qzQpIWq2@M2jznlG9Kz|Ydqf>OUA>p-<#ZJkkg~#xfA5=a(-@D1-7NSF8!~iEO}_ zXPWx#Z((~lH^y_$ObDAdo(=x?&P_DGnP2gTj(R!fr>#2ar!AAKcEQ$s`kBp%p0q34 z1glWLf)TD%UF9hR=4cSdnhyM<<)if{xA2bwTtIrv`5|2sEdD^3FxBxuAWJ_%y*d9* z=I<`F>2hjp^BR-H(oae&#Gz6CN6pvdK&NhLhD8Q4IUM3#eIcT?!uM z38AXG{Bfd$NlwZ*lq^V^yvO0hRD}ljZ z&r(L!h{Zn{`$ipJqZ-s5)rO117Fv2*(GmU1=Ft z;Ir|<2JP5#zKys9vo)SwLAP!sx3}$Wqg~#nIhsnH%evaV;)AaJ%+HMN-$pLletDfq zRUb(Nz9V#ifp!q>G4W)mIQj_oq;hgC_mvOG-`jgO9$;aQD|hfo8y)ewsW^QHdpezqi+qj9Uf$eVL68BHs8Gbj_>%6_7~p#=Jv<0 zy}W((D<8irv93`6&sbe=pYhm7wV!$F>Gnlm_{R1P-}24vKmYQtKv(s2g8f`SVg8=9 zyHe@7fR=fYZ36u&_9X-7Zb{O2(~lWyIP=E6aC4ei;42E!yLB7KgRsZ=zjFC<+uXUq zcwf)k?;Y=Xk?-BIdmh|AU!~Y&n0vc%sa?Hth4JqI*=o<-yg~kAyX3p}vQK#+d;75* z9&^eXj2Qinj023yE-&_7;S3q-w%9hV9JIAH-`ls`Zf@@JP1gl3Zuu7Nx?`D3|86^^ zWEg36a8l6jY~#r8bAD+3A-;04h4ou$w{P9XgzWQ@=M8u(ud1yXM>{!QEp-yzxqH|2dR64$K_dJutJN(DfMkXF*$KT0G|NV@J}HC3SdFu| z@-3_Yc=*~^!xvg<+unI54%-sd324JSuB=+j&&zI^Rr^ihU8&87h~ zlnss(s|M7X!Tw^o?l9Yhz{Afr>M7O(WgjKyUgeJC%iXTKxvR+Uef zD94eY4$3MxV);=I>%#fULmN11T*Tt&E%mF{mpybXb`KxwT(T?0T7yWqw)U_ugvRz= zTGw`!J#po6ZOycyq)Rj_ZHe8}VK|TXgmeyI$8hYQ=Rr?T^2X+pbqzWTxnWkrm<@;t?whT(Xbqw+(KcpM}-Kw}?|PVvgq6_Nm~lx)OOisH-P zv%FEVzj)r!2XMilln@~cXH=qBg~Dq5qE__@jw|Z@wY}4RjD&Ga6s?3)7z1}8Zo4!_Rf3Kz#o(BN#)*R z+`0K&yY%qG?OFE5{Gl)YqwNd+z`u)A?-i@Pt9oWJoW^GjYHrT};GKz0u0DU_r+%`1 z@89_D_L}AOcKt)|Z>yI#s2}cNc7sb(`E5v!k>5Ubyms#-zgKw+IANRHx7)+7cvbr# z9}WL^-tdL(3*Y#L_RyuP)sKr6a5{|kb&S3JSV`1vsWbB2=@5g|>D>wTewLRrJEizj zKlRh?%f9T(+Na}C-;W@jFa5GFZI3bF+HPE5X@BI8{PFh2H+}9A*|j6`>-J5++`e4ZPU^UTN`$vGc$&d+PYywjtEgnG_ZF@Vc+Tn-! z4QB1$F8PnX{8jBePkf-g@r`e4f8xvj!$>@tj!fZ1Cfud!UKsC5n<|PbW)86qanMwv zK7@{gze&d=POx?CH`-0-ew`WftiCBNdu%&+HBVWl--4c^BcTd5MX zvV(B#BQsH0m0bw(0kZR)$M_nRuZ#R9Vu~)4eQQ><1<7f;joPq62CB~sx za>$_qY3H}NY1XR4xGteu3{eh>Ri1HBB~^Jd4W;0Ulj?k2X3Tynl?IpL2$mq#4CRo4 zFN0J%3p=4NoaGt|q2rN;lFGM)GI0`Mn%>d*cYN| zU{(CIptr78SZDp=@BLftU;gYbw2$Ijic24Qwmr=9zU{P$WwI>|;`FBLPv)@?^M)rvJzHe_#9gAA4*2nBArJ3fpbxcDuD%8_?}v_A+~ngX|KM#=`#cjC@6W z^y`g{qw*gqS5Ne(XEENt_Q=cHyKvIB{(tt~1l+cys`HFH&u`8Vk^}@)v;+hi5xcA| z1ril3NT3QWq;a525TRP>s*+Yp`m+QDr9UaF+S0GkqL4{IresV8A;|=kDIo!K&V2di z>E3tessF$Kir8nL`|fz|IrqJU7w_G(V@Ir5Q$(y-J0f=MGZX1w{Pfe!>Vg_mua{av z1`?42EF6?bfEybI-(7e=E6+(gcI;Ss`OE)p+B-9oUa3;01#t>CQ7J(yzbl z*V9Kn^1)V6Tr6{*G~jNjHcp?KS6}3_QaC_tS@`rPKA1lI!S|#eebQBFZt{3KrEj6~ zO=9*`^=SHeT6U*wk!Xc|2DwFj^K?ObQHO?Phh#%WMhDZx*{*cUS5Bq9W4qEbpD8EJ z9S#cgLyr==n)52ny-`W{2euPSeW_1NsPB8vyV3{W{qFRrAKsTnMwZg#_)HqomWo-~ zn_f9-^xcA~?x2Ka}SQ8AZ<-e^D&suLc4pVW>w>?#QkJOPeF0h5X-f zTX|qLuILi=?@B5)rKB7U{{tYU*&iSVE&b)nwNIgV;S;jq{{R~NF<4Qb6rug_Q0_Vf zodV?SXGA2^7ciut<#KWF0=Yz#VjNLw9y5%}l0l93>_BNZ--7G(d@|6ejku3 zGn=E70}sFKRibQExiFb;{g`mj@R~Jc;hFp$3h0LrytSKXG~$7-1=UA)df?Dtn%C0j zvmXBN^uQS{P0Y-tUD|Bbuj#4>8))GdS?HeNs!p_YM!Hw|?{M=|RK0(jMT&KZdkC zEfuw~Q5L?>X`4#hDA*|PVB0JFz^eyVC9u)|=9_O$|83u;CA%%xSIOaf(Ji;64}Ivv z>4{JL!M5PMh-708*oaUHMS3teGh7d(%wR*sjrZ{Pb)Z+O;=*@>7S?@BYpw(gUs>5n}8G{XSdJ z$_^-rSq*p0#t7r?rLdztB?ao!Z8s={xNiCNLg!b>)3(GRT{)zm=;6=lh(rYW&3>N)C^| z2;=&oAxSZLu(1>4L09RjGF~d^(b$3V$P51?R>a~lT)%RXaO7~JZ1Snt+5qNT$f!KE z@1<0Ohuh0|Uv%p|aF7F$9K>i*U=WP_m_^Yr4i#WU5e&tTu{@T`2vo$B%{MUACuMW% z3>pT}kFNpM>#4WECLoXjKm+EA7mJ7AAW~+#iu}NU4`Re2T;X(Hq>*jh`dt)moH@#X z*=5P~bRY_XZDAD=+^9NzSP5=&L{1r%V?h-U`ewyHER&WuLxt3V!Byl%0h1DHH9cb{ zqsT7>s>8aWz>gSpRzb8wSL+Fdw>h|qy_rv&She)nJ2jmiqRs9P)^(pY+3zyVSvhGm zB-MmiC{FnQJAN|#`$PApD@MoCYiqMAzd3O#{q2#%>9tp0m0l{NxvaGhbY0jl@mW1N zo|c2NB*(1p?0A|MK0wJTSd%*S=_9qD5WM)-VFI z+5>k~&S;Mec8?7A#L45%z#b6y4MQ*WdE8x^cbxxX8 z_og@fWqR5WgJ1i@HG{*#|5tL-{=mq~px1s%7cmwM(3HGqSJ$lvwP%kDJd7wR1oXpR z^=tZgzoyNO9G*z~4@{-KBWKdW%*oU{I+O;r$E$m^FL|C?4>}%aRQC06ygU8oD{o1o zdI8|`w>+X^=kee7t@PLLxHbLpYaW?i{^AE!>F$Mk%Y0D#wz~Gtru}-;vwzQ+mI~+7 z`02Ch)X{^2^$t+cP=ALh_uh=c4qFYKqx4af5suJ_qes%&({t&H%NEj}OJ=l(?0D+i zGo=UE)2VNyUyc>9{3!_i>)&{40c2@TGnTyQrQ6CX5#Klz+qyAidm!k;<;8)p zet{QPp4#yEs|Yhsma`1*W&CF}FXJyDlG#~`qIEYvV+m)6I=0OcPCNnbJ^ojEf+~&` z{zt&j2dql)W%`x>p)|&S{0~^9uhhRCZYHuUrl&am2a{gj%O?2Zf4Hv+pRkA0<%zD^p9T(*+BvU!MLI{0);0ETl!a!+NpzPFhicv1qQ{l zLNk0M3%^NFCdyI_#)Ez?464iu%y=r2tAU$g7)0U8^o_hh&?vaYOL53oAqU=T)R}2l z95o7v%2WM9+mMxu)HIyA4aPsv!*b{8~2^k`O#Gl7*^qkWnJ~=7kgJ0mZxp(J~=g!UMELvJvshB`JbH9YxnZ<_~W>NCGAC7l3uzsdpIOI zJ$f^Cc=u519~-ni<@tI_dv0`cN!7%f<_s_fG^QtWt?&;Q&B}ZCl z;5gzw1A7EWPHBZcDHD?ME~@ zXkh!oH@`Ri{0kqP{?qGjP1j$4G%ad|pT8v?v7=6$mh}*p&d#Kh$0h`=ts4?Xljw5R zG~2seUL?rIJKGqK^jblPE2FQ9N(S|AMZ)|L-M{}5;~MD2*&9!%PwE`N=?V3J*%kHg zB|W4q&dDCg+4{sMPp8-Z(e3NY@cP@+^`AH;nN>z_r1O__)X}1h@U&(EXHHFfnRVaT zZtHGwUe4musE$R_Lnd3+JY3@ra05@93m%JQ6S-B!X;r$l7WtHeuK*5O z#ap%F%m?{k4<&-SsLd5!_!mTMZWTbr8FB=G&q)bN=lM6wOC88riMoKt^0!)A$wLd; z`Xy^N#B1I%W_{hmX>Ll6jU2ZwJ+1X|E|jLMv~5c|53Tj9lKK0@%yc>-C+mmulIBW9 zkbYdt5FZnq)3G`mI%gLmrgtqP@E51dYZh1K;H5aTONxR zIR#$?pz_k5{uJ~>OCYFpj^mU`%gV5yq57pu2I~0rry`v~Df$2iR3@?&51P1FK$y6Z zNNUq39bif9^nj~aq?F|cJ~S1->U1t@Nc{*I158M#!A%-4L2wI!m1bsKz$A?bq=i|5 z1~Ui{Wb{DpXBG7+hsG=Z4f-@haAfffw`l%yp+evM6+A)7v@T-p&!%Nm3zV1Xqzv|VHg+N(H|-lehbg-BHo3u%VAnGPyOfY11q_W>s@kO zE?;A>R)M-=*RBNIdI4E_HR#WB_+<{IhvgA^J@2C* z|Fo9I)OUT-=B(;c4-OhcyQ+gr^$;Ni;{afSTK-di?imh?Tki%kWHdyZWvUpf#(A1e$NqpftVP^@ngQm7i(RG4Mnw&B1ncUx#F1>O% z^>D_YMyvjTF7colVm&NjY5m6t#9tA19lTq~+TJ;7n8~o8rm409&F0ZgIL^iBS0S%x~24#nYjwR6%sM6NOIyL|XWyJ%3dULW1N$GSTk#lwb4NR8{Et=`qnH{5?a%)i?c=^o?1cXj z%bn22>oBlll*b29?bZh``859 zN3FcZxLHlW*p{sre>K1}meVXNH=)=(Y`dH`9*!85 z7d<93{zsZAl==rYObNB9^Go{5tKf!vXnniV^w1S)-vO5DwGm!#H&4nFWDn(t-duJt&PL^9 z%epJ?Z6)H(-^-k~JrtW&2AItd*t5G=Z-jQGU%2+J^jCj#^*KdIA0F;bz%>Qwz0fIr zuwE5SuAy^~L|rn26yvY16-;ng#$WeE;|;8#n;4hD4Gy}Dc1+kup{sb;N%23( z#2FBNG+R6ZvYo}RI+?Na6NyR^wB!28@$iY@uh6$iaS{7J=s>x=aA0Rl__zm+19l}( zN|1)G%v+5@k5dROZpP@nTEb~Ym2cv@x};%3WYa+i{R zib8`yexW4#Dnuo~CC(SHtiS6L5-AdU#j+qu##08r0Rpi~K#Fu4N0c{f`iTSa0-REz z5t;;Ex#&XQ7=&9VVoGq&F~ZeAN$^{A#Z@oa>)nH))*}SGoTf)9v>xrayT7m-Km_lWF%zpC2xJ9 zN&053X72WkJtEz7tdM&v zOuXtfccxdr?zZ%TUwLHucfYgx5+#n?Z@grG`pw_@RysSmm|pdYtG7a;7~DjT(8!qVSMXimG8+fD$A6Xe4k3Ad_!#&aF);+z23-cIl;^4wq0-;0@NtvL} z5}*Ln54>g&UMu>NQ^g84D_(T);yD>Rh#0#Z_@E>7I}(tLfbKgH%G2j&asT(pGkP2H z(7FyZ>zg$h4&ZT|r=C7rD-uOmsY(J(W>vZJ60i6vsr}aJ_pHy#)a&XoQ-rT(o z0O#ACI(<_6k@o1Dh_n9w;_%2=y6^6z>5eBAxvtEm^+LWy zCDZEI|D`?KTEbjT2QFVu#|~?={?fkml`kdDtj(mkv!~tt@e5hffH%Z!oB>wxiFFL2=C01H}0dz0yIGjs!MG?~U>zXgD2}&ekBr?O}gq_Tg7`4Miw&K9^hdUJ3 ziSodL8dWGSiaUk8g53ZVS4t5YCL3i!kieADQ%KU;sVclsKI2hT5OE)( zyuJuApkrTnJ9ct%N}moIOke-n7t{0p95}W=jn$Y{rEJf&x=LB=cNJU z*13NA^?-oY|S6*8i&@xq77|LiXhr^o-um>jhFH#pa3 z;zhrjZ5D>G^BTAnO?udU(s z=FtC<0sEX)mI+Aaa0b+N!hc}gr#<6eFur>U)a_ilrk$3?uekH`*j?q(kVORBVEe0# zSo&;~wWEc1M4uI3fm7a&93$7La8N!tfd^9ggGVlE@pe9x7M^0{!He;R!^trrl)`!R z>L7PQN?NeZ4R=nd(MNt!f&qf@+DVJu9&Dy#$&)KZ@jJ`%W0cAWoevi7!$S@4lz1q} zS;}R#87R9(DiZf7PjH13rDK9)Wt#Ua5fEq1YEfxum7qAcRKAtTz2JR`JhDpw1M~|H zXiy!7cRE=y)yZqm=A$b-ckQGXX$I}rjvP!!FJ06T4y8^59$7etZJ?LID8fbqdx5K8 zF$ACn-=Gf6#F2=OUWbbK5$$iSxi@FCk=Y=JFgAo1KQ|b0`@}5x$TwI?Oo5u zIcW#)yH6j<-jgmL-4)GVjtYIKI40YX2y@n}&*IP@2ZnS6!H~{|62hUuB{@x}(tdrl zqQC!}+LCrib*r~8)h{`^#ZQ|$sh*b^c;mHIE%UMvFDT4w332R!Is#^o7Ec#%OQ(+> zO+y3AIwfDnL4@%TO`NlEPUAN;5SD?IR)XZ$kq>=(3vqO$J55fXPN&DGHLEw7_Us$h z(x&X<9E}={hZXg}MO?f`;9BfcPTIm{^>fl%z(-@>VmNYaK7H}aC(~!X@b7FL1->mbM$}IKsvVGtcgs=JsWnOAonP3%v5&sikTSy8d5Q5qPF-Le#$jU>t8vJ!3VYm>{@vvn z2Wk1#v@8hnX;5df$S+wKmWL_un3^HolfbWh961N!iE*C?KYSD{lJMydQZ5+H%HT{~ z;h*^28D--0;7{CzSlZSv@yOM92`QH~^MXfYf|nh2g{24v)?LAo%aU0*R22M_LO?Q5 zuvln-C|>9TVXc`j-;h8=^!20kP`_?K%SBgYZB6pmhFN>K*7#dKV_`8q#-beMqYwSbR_!kBm5|I)qsV zB6E!;PabGkb8Y1>8Urs2=vX*!EFKm80ezr+aY_n7JYnutJ7ZwrjZZtMc1$&tsJ)@V z^A)iF@edBDz<9WGy^2*o{K>F(YozkIUpCt61L_qtMSIR z20m8?3g16MOymTw;dG)~{?IcmC|XlB{^mSNP~UF*VI(yE3sz~x{~($E$;?^!A1E_d zlPQGmivJPgzcKS;e2jQ#)4mI7nHKr*M7rxkcq{+M?L&EL4}3lf96=-M#mxi+-fISK z6;?pf2neQB@of>gLm3K@;;33Cod+b0EI9y1p$IUqJ0;pPRU*VP`U)BMs3K;_c<$uI z1HpmTbb~b-J|->JYI7d70CW29sFEW@dK6b@7d~c4LJ?9~76@1>2p$To6{mYXkX{eS zQs^5G1x!?M#3ckpqFR;U|A9H2$vU>3iWbfb#LqC?eq&88D?g*!953>B`v0%;e4Ev zMw{cW)4?QM=lrOLisaDX1~Uw?=CM82uzOfi|H!M~S!(eQW z1rhQ829~04t~ricN}Ma~-!tT)cbCQ(b%f7f5mB%9VCN{euQrX5he$cJWpCPvC-= zfa&NK9man<;#4rXdJw`S(7g&vqlUb3LP(u~J>zHyqX_Win z+H&Cf(8{H!Y$6n$U1n{R3^2!)<&GLM!+BtpT>BWUIf$I@l7S47`~G zfm^}bC=>n6-E2jjQI}y9qW{^lx?sL{=iFx8GbS?S)in>AoapYE74F0S#8q)Wbq3#6 zTCo?cT)mu`HB#w75oS*?np`=*h(GQNJGsbqE;J=~HPqOlzynn2rxgjMJ?_z?n#F95 zFy$WmsB;g$h0c0?zoNg%h})oGOPBL~jpa_ruu0Zh0z0Q3TEepVLSc`olkgKt$#chF zwL>!X!!?{Q6s$wmcr!<`d6jiUPQ{}A^_92J9jn{5D>ZEKl>IrR#w|fBEEK8j;?73C*bQ(rOEYUAZ zYo{U=xAojCw_AmSMs6_BBEEXFX-2H?HewOBAD~&}EmtLl)mN5i@Ml^uR%5PMb)~i% zI?+y7FU-qZ}>!o+BR%FdI;Ggt_{b`@dGgg%LS!j6pShMujGCTn1 z<`MDc_OX2#Vu^KYTx}h?$v&!hef4DP*fw7Rot1iNZfl`O#&m+mU&rlPWCCjI`rjCT z8KYh0(eso?H>t*dDqiM5ncygw)WwrCvJ3bsIEwfX z&LuDVAFys~p!_HqjmFXtMGq>;?4j{zUhPde4_Ts&e^C|@U&80IAgrjGdEXhcaEqu4 z+qsb?g_%HwA{5h~nJbC9)@K(0A$YZxsl}DMe zVEwNnKlxwQ1|Q&GtdFi!{z3>ts?C>(pZmKUJE2SV+Ets&cY@%K)1Z}>mQ4Rvyw*$^ z+=|(a{?9!QS_xQ~?ffNvTH%8k70`XiAFJ9< z4T4I~gh=dgh$d3p!}b$f`GmC*g`XN4O+Ttxu|GV1B>kq&kXkR0|Hmhe3Vu&|+R(_F zpzeUmE!Q;x*U4y_5v1xBN(YI%=HH(ZKUQ+Z#a>j^dtMz z)1R_0VAUteOiiIt#-DYOZ88(w1z*H-JE@i5whT2~or*TuM-f@M#idhp!)CdYHQO$1 z3Pjz^^;6Uupk^nwG8LyyNqJ9n_z%U&5enLqka_$Eue-3^AsH3=EHoh!TkLfp#$|#sX19L@i(pmm1`NSN|teB@Poa774QEA1Q%FyN$VQq_4 z#&{%HgFY#OD7b)tXmet~ zPu#XG!GBnmR^rUc)o13QFJg-Tpzi8>F6$zz%@S`Ww z5B%8Qr;mK%SbEJH9-Kb(nTJ-{t3}8M?xTXI+y_5)@*FVew6m?Qbo_i@)75rmxNa30 z&Jn7O3Fp*98*#6OD(o?Jg5OYUvu?`Kmfgjj2b|hUuD}@o!HU8uEqFye{!(7?=J7v+ z+M~gF0+N0N?dUeh-!%R!19H*71tc3o_X=v-zizvr1O@2R@5`(lX-qj;F3YC`2xX7T z{)g#DvhiwWzTx(T{D|Um`oS>-MNkV`+=(rNnF+|EG^P*xM1-T2^ z(ehz$x-~K9>qfy#rbU=clXP%X+>44bOjap$lxF%^5ey>=6LDY(RAzX^nZDD?&$+hD zG$`Z3`hhq7_r1LIkX-Zu6fGz<>L}B95dd~Rlm_4Kj#huF8r1RYbDTj?3v*KY8^=$j zpTFmh^b><4=}kH(?ML+zz^D~f16&a$AGrT6_H)fM)SzWwX(&mteV&wt}lX+Y(E_FsQFz2Q&qO**2`!7qR1j)!*YXPmVvQNcm`XE-1|MSe2 z;phY5a;-W3=Wgh(l5sQXQ@Sn$0EsqU<3xG^ocgtAAv%63!1vKL$-x`&%$m|oN>?U@ z@Ik_{45IF?dDv;tM!+a%`VcEY{)|gPFZ(&p1ha0El+krw$V2znKtE+6-l$LlsE z1oXei;>Sd#afS)gpVprm4##pp-?MLmhF2@y+!~`{i$3A2(1%Wu4aoBs3Kx>f2E-bu zv7-aBCd)!h;5<6^+|Hp zo}}{sMu*xyNRHq$hsG*RlkZpatyQ%X-U~0^1Z@(j)IKG0;LIYygeJOEuRwZqiu{bG zYiCri!)io5YHYmG`##HYsBLmw)z_1rC8w3OKptF{yLBqPHk7+9>8D30^cVg6(LibR zF7orxm``RZ!tDGtcNZH2`Y!t847)1mC5v9k;hD;MdIhlcNYM$}z%bd63r$otwnX)) z4$MnRki>q_Hu=zc^mrgqxN`lnk8WEI!ePsbu@q4$#598$(TsP&!^De7=})n?lBtHh z+A0gs(TAz@)dN``*sxg8pHr{XS#aioHjgg&4Iug`alcPMa?2q&FkWz&0SFc0iJ|kF zd}`wa+OzegxUs0umKk~93k48hTR=YDqcXld`koITPrvp5{G+~8dUbl+2lBEdNH-aV zb@1=oKX7$=&eKMP=iB;3RDXK*Pam)igR^*eM;xeQ)oc8hxR?z6!aptF3Kl$Lgg95( z<*q(2^Q#M_h2?4WXPqIb@2W1%b*1-TeP!TvOz!aQWQN9z)H=QHi~5m#*|ae0|Cmmz$G$wjx)f3 z0tN#a452J+otq4C<8FBpI_-G+fGVj+}nm6c(L(@Is|*qrPezXnSNw7`>9 zDLT*sKKQ8K9ECn!YE}UB0jub%f+D3Rzw$FG#p(fBSI?Ly-cehoJU%l_3@Xldltg~5td$QeiQy2fdoRg+LQ_UdMndxAh z`p3Qw=|I_wp|cw3#TzE54c7%F0 z>$ErRnfuePyzJ}g?{4H^T#X~yHqs}{8E5q}O>vJYjUmRvgVJh4P#V;6Jsx9}?tRU2 zGCwO?FM8QG+A6~@zx*4Pp^3lRjcsD>eydT+uXaw_R`F~Vp86>DQkF5n!FU_vZ;Yj7 z{LR&8GL2D|ifY`&_*=$*N`^18PHrbM(#V}Ma<{RgqVoS1E* zP^`Zy3r`fLOj`HWLns5q^V9)RK2XX(Smavvp21$sACL#0fWc$60|#d$`6nPLQ%W(7 z&8&_U091{BD1xU9K`Xt`r+lFgYU3*&T;7ZaY$Rp+mNEDMEPqzI(oot?2jnaU zXs2kO&}T$mp^g9h`ufrfm@#TY01xic<{5utB=WgsfM6mPcq^&JTy$;ugx|p*a4R{b`DZAbQTR>PIlGZDF z?8JO}`73WvS3a;e{m0i_wI1lE^Zw&&uS!>5)t7$#w{A<|FHXUx5n#&8U#*b4neIJq z$oO()+&Li{zwz6*rz_em!vl*9&HEF}`H$sVW3i>^R%~la1XdKP95juYF*auaDKo}j z+McwH!aW!>{x-&I$CY2^&?()RywRBKiV`kRsGedx2$u+-!SIw(6p9hJ3P$64_%yl~ zfb+#enX(E0M_gw5@Ir`v_z{O?aDd75nW+j)_L+ckp26$%L&gSu06-S<8(jC$L?&Tn zri+_k1KDt%xH_(6=OC#9Y51a)$r<^oi(7LbU$oKzlGjL?j6ahmK~L%AidC+G-WPw{ z({xl3$}_DDQ0Tj;(!#j}i{jt_ul^QYgMpV}l=I%mGd2Km4g*Q{yST|s3HhU_K?;2r z1H}%7(y-xWrvonve0}n4de!dzZ6yu9TZH%H(`W5iw*z_ot-E4~${^1R3tyj{=!_hi zwfnS=7}<#s1JF)TYNk=0wBDTDvAa@#9V2iNaixLMN2-JtBjq7!z2et>_4{ugC9ScZvN((4#{vvGMs3VzsORr zr+T~zc%7TNeFSVXPW3wIHk}nVD+bv-)J9p9$v~c+2s=o{KhPLm{13{nJN^r4I9Cm{ z9{+V4<3AM}UlGu| zQx1ht$=4NJmHei!a!vpt$_m786iWF{5C3CwJUvavPIMxG_kW%}6Hh{&AW*~kKPJy~ zOpa?L$KS{S{7wzu`RAm4r`FtsC)b<)`bfIw=~s7zv1eR+b^5Ef9oZUg+x|RU5zl{& zBUpO=7;Ah_n*QGO*M~YP!(YC&S%$?OoTZnj9Su$6CgUm|O&*6)ePjGp)>`AgDrv*< zzepkfBTntein0hOKqt&6TILoa}Y%EKj_B2?NFRWX4Q)V$hrsCnlVran%(3#vPRb z27hXTa^#yCkpWC5V%7)GI02||R$-t0l zLZ>^tD5c8AC@sc+-x|`MMYcWVtT9G;Ptge8I7Hr*tay3t z71s_vY^ZguN`mZ~2yAiK}kGkmWIcaMUR&uGswIMF%Y*z!+ulr8D1Ga#4 zqe1^|?>eLbxj*&v+M>2VVf`ZD?e6YNZ+Y9nEw`H{j-&_PZfBOnV;T1XVC;Cy+Yg#X zr)7BCyY5|I*lpx)#kOvPOjXqOm^PN}a+M){R^vZoE@Lefq5b03Sf>Qnjnl&+i;;rS z-#JDH?%3JHc+H>kj11dVQOx5%{zniei*cS6J<8ed@H?Z~FA*BI0h7XC0GG-Ny5TV5 zyOccO3w>aV|KWnh6%c`=OfZ4c^j#ukc0JMPa*(`Y+#HiAriC*$-Kl8cvojN<_ytA< zkU&4i<)2uhAlDztAd0u_TCzX@?|3K;zTF+Idx-p}$nQ|9l zwyuGN1q{D}yIirfk+hZH@{qJvnGbyESo-mQKAax&*!H}Dw2}^Z!T;V59Ca2Zq?~cK z61KXpcU9u~o}mMi&)@v4+Mw=cJ+09Mr+N z^DmPuG(!)<_3>X2jQ{u(y5cxTtrY))dobvq?XKD{a+dL5cvMxqqqWagv^Z@NUwpQAb^gK$>oDshgT8`!em*wP<$l9pAEx*|2_x6R5? zU+C^lGdhs-^d!dlZ0Z|7k}e(XOK0`?JH2Pj-{(|D$HT$tX?;s@IQ5H{rI|D0YbhO{ z9T%6Jd9~p7G%v>aqdoQMmp?bBj&rv*fv$Yc7=4I`EBIcpHH^+ZApQ3B_NV?Z1VU8W z*V;H+$+3~j1u@9p+De_*(rn4amL1`GfdbT_Yq5I;z4@#0R?_eH*UGll>zI*%rTlE{ ztNO<#GvKIyGFs@NYf1f+y*%!t%X4YCUp>38E1jP0O1IvzGxp>kZ<|Rc4lbsl{_Zr` zJ0-St3@B~9)ECzhr@|bUYz*i~#QkD#>R;Bu)Uyj|bWleUX_oHr(WUf{x9`jgLbu*I zoerO#FfRkrACbPLp|m(F{ff7qZavU;={&}+ozW?3YDe(arGhA&2HPCBEl*cUR)@Uw zsP@HjD0{g){?jZK82>#AxbDKK0eAe1@geMLcmXjj6s}SnA0`~4@A?*?a~SCD|3INZ z-_Eh<*JsPX=lx}(PuUP9d>uG7cgh1Z5(Rx6I9^~NMSm0$O!O)v%JduQ*d3tZHADxg zQb^>7CL4AcSE-Z_P!5K*JO+jUg=tH~b0V-Bbj_->bAG^9iV>0UdSO8Hg(sdK zvJ!M(DhK)wg+9djpAC031~N&6eoZ|}G8eWaInG6)D5c16`mSvivP>cW`5IY~51v9V z!Si;0ISg~OcPI@kYoEwMZ`!@@k~A)_`R2*#G+mDI-VT9Hl$~CjPd6>jrbB&dal7|Q z&pPf!htaxfU7kk~?xg!FaY+u&l8$rKRrSkP5-uIlnM9VUHnr=OMDjn2P>J2)v zezrc}y$OC=1>tnmuh;?XtAxO%OgG z=cH|dt!;ypCF?pO2FszL&g@^R)A??X_x6^D*07&3tZY^*+DAMehI>ive|b?~DzRNv z`<4@NMs{TH{$1%yUzyabR`XX(HcMfva5K|$=}R|Hr(T_Jw*S&A)#=0wW}7SDNY%q= zT)7wTwkeEu9xBuy=k+Y82di$u^(>^_2li=(ygPmMYZGZ!XCm%IKv&B2__yke~uty$9X>|t*$)u&Wu(u>NF#zT!DevRt%1{|NspG3 zV}acMj{tDsAcS90{GTG9%XwULQT+s5;AMVYCK?jt&c)QVDCIAjt{WiwYwL#6tc`7|w+ z1qQqx0O5r+{W(}z(N`Jv&iP4+4D%lsqNZCUg+4P=s=07DjY&Vwa8c;(WH5i$WBaJ` zfH@}zc4Bc#PmH7KmYK8ZtBVuqo^O9OO)ku*FPxoEFE~5iK7y-Y;&T^ox#Lzjhl}av z`wpjxnRzW$%79v6G3XAd7N|evA5#q5nVfZn}Tpe4O)j(}!}5!aVCy8M|4h9ky|;WW1E;pw{T{vrL+ zFTW#=kI$r!erP5=@~VH>h^1}i^Kk##*L@)!Ke3Sh$!&7VG?Ny#!yncWZhg+Hgi2<5 zB%_eNDByFzxVq$rSUU6BLgh_>WklAm`-tXVx3TTv?WjW(8QRe zKz{wxMS;>lanBcWoM=BKY%KRGLptNXF0prw^a%JolqQ{rX!{sKZvRJP4<1MOKT0$G zz*Fc`3%~#w{ttc>X^jwzLQ!Mjk5Eb?Mfg9J|D}6oq!HFLgc_rJ?VtfFCO83}U^O^e z?xPu#2bt)IiYpt%@#?9|DsF*mWhq0jG6P-iIB~-V6a2{wX1rnwP0)2=f;Qy?4|GH5 zs(XpP9V#(oo&fX`pdd0TmoN0muHmax2z?N!P`(IIxg>*!t1deg3Xi${wUsROHmJ_f z)ib1(q^0zt7r!)J|FB1-JtJf3?CCR_$rwt^bg_Ss8mKx6%FsOx)3xe*^b?vXPb}Qm z(_p^H5$ReC)NI$~S6-3s)5iN}UHcrJ+}|TJiXqjKm)Ei>bTB9yyjTI_8Ib(13+izXVl*{C+^POfg(WTl;DpL&Kj;HflrV%EPy_N#!Q-*Z<%T9l7sn+>A?@VIt^$$#?hn4^tm#9 zkV*Szr>8ZOFZ;+R?6&hl*~0v+zl^XrtASYifw4^sdO#i=Vaj1KJ^l%g!<<>J*v=Dn z*qfcGJdF4z!phm|jrI_30_CPauvtF+L3Lc`)MIoWU_Jihl%Y#HK6Vo5#sI7bTqTq4 z?CeYlD*O=DrgY))Uogf^1FI9%O*Q@t78sXR9Qu9{QAWtVi<(5Wk6v&9bCKpvAGI4! zS4hB({U6hemgQ!b@A;NFjwVNd#p)uog^$829rR7e_)Ls?CEo<%GkJ<@hy%_c3Ya{w zx;0TsXBhlkiE3!d(xAzrqXJ93K^(A9tdRj8MV%guOHh?{{g4m#A|&acAee}os4Is1 zP=3%wd4RyfqW%R}lq01fOhsR~p+%{xeE?|yF!4vpj5uzcc7Ok|h-#PvC|BRg{1-oY zP5QZKK0Cw;l~^;C?v+Em6H4_}dW_`8ZvkkeoEwuaqqFeDw4A1N=tOm97iP85csdP_jJWOh=tTm)o7|&6I;7j88@LRx*{035N_-u@+L(odR-D6?YHK5z zi>U6W8dy?4jk%EMR_wo7T$)W|Bg5&bPy1)-1^@avl8o&O_144VlKQwpSZ!=`Yau_X z+1>{Qdg5}LnVm_4vH{E5ry7BD{i(ZQbIOS3yxavDZs?dCI%@uOea>^AmY)6GYs9B} zxB#$*EmJ%H1;U9BK4R=4 zu9o3dD@n&VU)2Q~R)yH<%Hu!vi z*tuwl0P&}E95-E^ULlKZE2Rw>rTqwj3x?GbK*RsheJ*F8hCB&h95jImcQA#WJ?AN0 zS>V(pDoVg9qDWxGwkZHf@vDGm{A%I4jl%9J`y9Rxj@EgU`QzN07iw- zQ28brW$g@PXUZG%OdL*7N2pH`@mVTO=0VBO7kN)rqX<+AF48QtXVkb+N=9RcjBH~L z`NJ6j03y0(SZh>CF3;77x$k@^4Iy}IFFmRhbsy#OX#?eL z&s+)CzY0-Qf9M0FMHh-{)f1@r?Uu7SH!Igk)5G9h06%5*l!mj!tTDIbl_srQHIqVs zyU34N{H~g>M!TdBkj_hA14G(>CIUU0)tlFg7|S{iz%H%m(YEWm>_psR1VsdDrX3W| z{k8r8-{DXl!Ld0ux6B<+`Q0|uDw^e^xk*hILx(l6Jss2ccubMqP#yMmFPnRW=Ckh^)_5cTZa5V=&^#{8vDJ*&rE5I=}p7KeR_!O(gRp; zI;Bnh%Z##1^QlkMTx&k4id@~+t&{`%v)rSXat8a;mmEvQ7ld~~Ho0F9p2K5% z<<81hNmo7ET<;khy^O>d>%L-nsz=e4B&vJES9hYD?RhP!Bhj!~q3E!BL54kN-lin} z;hts?EFqV?k>X@%fcKh>2de-gT2{@#6XU<D9G3RCo`7_-fev2m(=ZgoCliqmt?Xe`8T;+|yFI+P4r8*QTKRlGMfcDH)+pYb*3U zAgeFg|A>K0tivOS1>8VEtYSsNz-SJN@Quz$P?^j;%-XF}7LEmu6lo}jDP`UqtAf(3 zSTh}z0v0OJ1%H7@Dd8}>yzvEym7eLtKP4&KL|>Z9oH#drPzn`ARaozihpH*9fUAw8 z27ujj5*5rMi8~u0yV6nEE(fJbx@FL?uRW@i9&Jz^l#aUxl+drIM`r!0EbBQ_M11wC zWf_en3?+?!Wl$Ohs#p5Q7+1ln3;1p}5okG(rHL+{$d%WlDgSQUwGXmvY zR;(zBK5Uw(BR6W@FQ^8^(?DgI1*D#j-r~(%p>W3n2W=XJ>L&17kSoPOM2dl3FMnWg zz%q()!Sn9&lAJb`Rr~GLhw2?@OI9{|fOGnUVp*O5+T5>I?VruTw*$)hLm%xxwgwJF zV%)hHc2)zSch#))zxAL##7jpi%bXRKoGR?s!%CT9+P%9Rxk1}s&}M#?|Mf5>SXmjx zH)>VuH45?qe;3;y)T!oj-xwMl6h}P5VNCRZhP8l{oUj;iVkS=;>6C~i2^&?^5WFp= zUAuAeg7?u;MJ2_stv||kEZaRK_P@rGAk~=Q$IBL7%WcJ*fnGUGP8GO14b!Z(CDT$C2xir`9iR;o z&E6G{t4oLf4kB;ikEs68E3x1dw$-tfu@yGX=Q(L&zGJ~p`70EGO_|o4dKW`yHL#!~ zV;rP!+ZVS;-E2ApYBqVB7*8%0z&imGpUHcS^b znc7y+(=Y~Di|qUW>;j~#lR~`0p}0zvp*GA&48G(<$oS;g5u26jy7gxHb^32u5KaM-U923OIz!Cxu6l)0F24AYDB}R`|DcAVql_NOicy@Xq+?xj#a5d7(pOt zvqp{bV>T}61Rk1H!58U9q%s8b7H!bXyTgS?ta3=~OsWGqHTt?kvY2@fKJB2v6lK)! z`8Yc>iWCg_p?Loc^^RIefI<{-jz_vyd9^#L-Y^+-{SID$Tw?7XYLsP8LQi(6e8W!@ z4(cs-Y&gG`M-)6g?A9*<2hAb6AJJOw3fuwN$}hD0IOE4bGz;01r1apsWMt5iA3ZTA zo`;K{*y@_edR8CQiA?g-wFIpfIJ&g#J*zYAdbKRgZ08)KtO6UqTMs>HW=fl+hx)Yq zHIwGGR5d&_k`C%EU&i(Wm+sTjwU)xQbiC9vpXT%iaF?fid(xbyTbGu!B-C81TV`cW zjvx;MXC@cZ=z$Rpys{11$zIg#%o2a16%+f|N6oB=xh~OWxy^5ZZ<%ToSklbv=~JiE zJ{{XKKPAJgCycWb+DWSijA8Aknw?(MCiSde>Io+7Q>pRT*kP;M8APKg&}QptC0?$| zuKF1TSG4g}lETtzXGM9M0;co@;#&++6uPmjsr~&9q}N+@mADG6MpDhb1RDKk5n|nUfWpLdozz)s%DL-o)T+{$QWh>+#Jv=23AthSAFoVIk6|P8BpsvObpgnA;L1m*-WxVOu_cRF`Qx(_yc0=0pomN{{h>rfdTDz(jn4wGaUbb zE!498sC3MmCmjsiJ14D!j9o#* z<}qJA629&KC=U?(KXwiTD{qdOGIZ*oe6nl>Kv$BLSdI(BeE_D&L#GeBqF>{|8UQc6 zMkfDvSD18BC8FuMYUejl%Jfk*oYQ_%X#N=rD@>ejPn%P}sCP9l)o^{27 z=uR_h>}$kUwHjt7wd5nzXEiZ6zc{I59CoLDd&knZzICViznsN>ZA9_|Bpc)fWG5Aa z5%#4ld$dBIhfy}hpB|q~vlHFY^C_*)OCH&;vlE)N)WNGm+Vj}SU~}hvEuExt5%-0n zfodGxA%@Dt0@vZCLlsqekH>#fl*b|!9eGKEf9&Ck37UB0lM!Db+dV9wogJl;gP*tP zgmB7y+z7Dxv!5XRjQ2Peyd!J>103LFJZIKUQQHyygwGMUiZ_D`B?#g0uVTc7A9(d+ z`#*xf|FH8`cx@DOS>%Qm*_O)APVqh@htiqN^Q<0lzzbMTnlZ@BP60(;W+QY5L@8z05W*hek6!I7aFiIBVMpbgMo&dS}jzr?H_?znzQ2 zw0Ga`bm-7@y79)t>8F1BzqtSDg*O{6`ZE2~As)E%&DJm2E%pzxEepFbFx-<)9_>ow z^F8U`|GQVEGZSaDtQ(!bONX`kDXy>FgSq>&tJf)Y%f6XMvj1yz6 zLeu!0SJyBC0%DRS#(x0uP6VzzOaw!{$A8_B&JbTYg9WK^0|}*=A&Vn4z<~3ls~sub zDm45bl~Lyj|3_EbX5|XD?*HJt1$N;UeDNpB6*j`73XK4ZXvHZsdrI?68vbMT8YtYT zD8|E{AN*1hgi4FGQUg^C!9F0!geQoaWWGuIg`mh{#Rvh1_8A_80;BSq=#wZ2$^d7gnO72AKNhT%hZcYr!$l2z zcW7XGdMZunYYIy`9;I7*iFi{B|IAOx+fV`hx_fRqO-@c~-9r|wK z*KWBzJ^1RY^mKfsoT%N#?C;0=K@PfX#0V#illJxca|_gkMiNa;tQYRz*Di)7{+1i7@^%PKOO(99EKj z0^0%G1IFwa&6ywb_>Ug|AxXM%WF{ifHcdEKhBX|?(3jjjDj;y2G!chUb3!&s5HWGY zTCGzASzt&p&$EJQ`Grir`?z%tM^RX8M#jJb6JMrxCfp;erAvbhuXZGoPN8s}yWx9sPj=0*&Ef z`0my~EFJ8u4xaLpPfjm>?SD#F?Y%^OPSg6D(wgTSJ9V<{?n`4PX->y6a3<8=(Mxnz z)P(lGO{IhPemi~Z8#kpN|EE`^-+R?hiqa7+ZStn4jF@)y)33cG!cGzOSC&Xx3+!#v zixD`8>fcLUm!>!T(M{>p#69Uhyz*t~DNp{{G&e8vsKAHBW5x_x^hQj%g7?KmbgRF} z-={Ymr}Rz8)5m7hul&+oX?pUja)@W7Yn_GFuk#DbF7>S<-z2Ne;z%F^~2e`CZ|_i_TgD@I+e@nVkpTQ&X*PF*m@f7t=NCg9XVJ^q7F z|Lu&)cM1PP_oO%ZA1Y_k{;}JDb4MDpj7I#h%rw>83(A8 zs~JN3Kf(=vcr)R2HvA9LLjrO|#q^8+1$CXapkE6MArxhT&{n23!bNc_fz&Jv5DqF6 zu2hI)g&<`n4L;-IUg-g)U*myLl#jh+AqpO+%UCMkSaD8MIqzM|O2Ki0Yw++!fiW6= zh)zyLUz|c8X{Z?=N~n9MQQ>xd1BVkS3Pu0|O1HitVaGzKA@s0gL@yG$;4~06Y3JI( z-0W<6@IxM)9<=v>O@Y@8td;2T+ffjvjleH&6{mDLx0*>im1g*SQ1{6+Hg=ab(jV5* zEOJ`h59J(TTQCsr^6}j3f?NH;erQivmtNDGnAFna@N7DI?Az(ck*Ty>C+5o-_^7}z zckGGdj{xB^dj|d1bW!9V)VY46BYo-Y*|TZA#H0v|<0K9||VGNr`-VtAV%|xQZ!IjtGBtr$k?I@yRI;z_1o*yoRBd1FN8mV*o`Y zTY&Iw@PB~i-;#V2;(Gt_3*jW<+6#6in?o00>S`Nty`eSJxWg+r2iSdVD2Kl;#QHjSuDpFKH~#`g54%lGa{ zBZCLi<@>MH5g0n+W3bQIZQ-=cX?w)-2F60=D$`(XZ2iZdLK_;>tfY>A&|WmIyLXRj zS^0FDK7G35FAi+~oV2aWe6hsNYapB@^`lyY-RX1EJPc>i>9uhmzgU^@8+iGU-o}_r zeTbc`1VH1K=ln~_8z zMVlD3LS&dwAB-Vjw-Upf1se82&UqmS6%3=i;6!8<2amJ-_GRVDxdi3-S5jS6;Div8 ziW8LhaD@s`6K4T0ym6L^Ts#?ms8T8%G>GySDklesYMB!tA*AZai84Ud0)`pwd)?dB zP|Lg@M=NFP?KbU=;qy%66O)?37}3(xTpHrb1EEYi&@6O?mO>p&!!~Mc>w1`(S@1yb zfqHscXJ*9*$xX6UTS05JM*}VnxtSq9j)4|)Q8&x8@fCyAPrcGcV!c1ybR{T}dUkbY z`AU29a|s}Vp?$3tz>7Z4>N|n`Y8*p4mZAbjuNiOf7N&tj^N{((utYmti%MtH(E)5? zcj(ug1XSas1So+0>^O z3g%~Z=;@LcCiT(+Hk+jy4x8kI6}I6mGlEr#iW=LaJt3;hc{PHGX?^=qpBfq%Vjmpl z+txy|b2b{aj?OTtgsR5lc8kBmYVWi9pmx8`o13G}s{EYx<|VzXG00mDnI06)sv!ha zrEihoTHuJ4-&oCr3>h|&D4famW`#3=l186d(sDI>74=OwH6HXKoyxw4d*7=&X;Ek3 zVOy}W6*HW}tL(>NeKG4nb&G@!kUYP)jw`}kT40k+}CA#4YA7SPjbdb^0qfFMhh^;n1=jmw^?>Dr z?K3>JN?A{|fXQgwuq*9^{~-)+ceGOo>LN1sY(xk@g#LwtR|4fYzidgo*#8lO#}!P`hA@5a*;hfzm3fJf8!?jS*3RJX|oVPK*>L zfQbM~no$H48$+VMY!6taOq!hiFZK0{SN9r(z}4oiCNClwXRWOa zdWpS~Nr!MR>tU^r&#^Ui=2CYa#Z0QCG}A4PH`nN=>}}#f4I9G)B`3gej&r|!GrkMj zM5YQCk5Ncg>+6DVxi@1l^sLp4)7|?HpYJd zjX-k0wK2vLJs_St{+GTRHUqqolKl@Qc%sOOR;F>|@-o`k^kV~TPoSX;>O7F>CYSM8 zrtwHuKfi+>?zy#h)qKZQdVew+EWTl~M?ocey_&-EQM>%}i0PF}@X2K#*@R>eK ztuAEJ#KjHtDIgdxiE01`OLv}?5Rhq>3O1+ui7{B^#gFO3jQ%61y0N! zq?=k^0bEvlY8Z-)bmhhTuS|?qQKx6Uz$XMn408FV;u}`c188$zc_5DmfCh3@59gisU}V& zx22+ip&LE{BJV!Nf2C%>8@$zh5R%( z>&4J2VB&Vt3Ll`snTgCYDD$!C_#i04C{Ov;i=qe@@vK;-*(ri6;`|WRy*JcRHWTI& z&R95XFiMHILddsz(tv)>0inR65*0Ol-AS3Kk^7(tt_)|qii=Sk4(MCu!daGM<6dQK zoauDR1O;UzG&sF#jBtTkDV-0Y3mRVggU3G!)|cOiozbD1BRb*T7FIG+uQACF?c7); zzC*rJ%`F>QmBrjK8#=E?))^i1uxHnZmMla~HVc`_jX)PWHy{JsEWI^J*$euV&VtVK z8XVK?mI_3@@d~rb*APUTjjAkV&&9q$3j9Muf2Dq=CTF#mDrOBR9c^87M6jrC!HOrB z7F9}ezkUdVvp!5Gay_Hi3B;@7R8MptB(v0>H0QcQgZa;fsA#lYS4FsXVrg0x#5oC7 zP8BHwa>t$5ieg724078EJOa^2yNadgR!`F&LhS0%V~5jams}d?O(wT>)g`x-WB*O- zL4CT^2S_qrdgIjegg!A=`XMxecHIU<`=X%oYHINKpf<=qX7|U>j_d7XEx~6Tyb;_K zs`lEHx``X~R-7~VYw!_#E@^3XQV*>xsRsYW+1&*4CXfs5oHQF_RZBeJm+>E#^Y~xd zCF8H`CC-g=s7lqdeGJuEmm;?1QkWe6cr!2hT_on-JJA1%&= z4VsxWW=aZK%tn~Hgi?|fgE%;JW-c>DVVYB!U2zdMGUdTzz_ z^b#)vLznb9H*q>W;Hn3v!za$9pS||E=_x<)RK49dpN8b6@jXY5d5F0#F#*v`xY%Y+ zZ0G5DT8$7EKJ~fJq_@8L&FPW@d(!a}M|D_gEPF2JPNPobVhsJ8tXwTAz`ak#)CXFX4rR-H{!-p=uuF?t9ZH24K9qOO&hsj>@x^2 zQ$TJXqF-jpD*s1Wevr+M3gToEpmm&9hqD)BAE`k@flra6lUzn;_wI~Pa|l9*$Oi%8VrvV<-Q8aFYGx@_t57_ zCaOcJQLEtq0-xn@ITWdglI<}|TE)UGD-}yhP>Gm-DU4zQT-nA}-ADE0%#u}LjIXml zMfN6LwTUEB;jm2Uw5mn5f;YYSFVfd1^tZhbyXBO85ql|8c! z>>J01dbE#jQ4hpI)vNEfF3d}w{xK~X_oO@TJdsYGI4CFW=WR3T7Cb219>QPcpl#eC zF2r-v+;mh&>hRf4QVY2;;D0cyq<>`$ECYPhA#bV%xa&^Hs0wg4{10kUDFQ5e+3;~1 z{)Y;(HC#w|L6nj0YZtOXd=3^K*}srd^8Re!0c050`UOkrV|4nD9nMVpz?4VhBHa0E3P~Sa%jMl>4_GeD~k4#k>a3qaU~)+QpKk;T8wx{)Np!GxbRJ))zyng2D z?@152TxWuA35%d_mx>tP-ZA^;4>kyM^$& zd+tsT(Z{BNT$Cs1I>suwgVf4XZ~BXB5`B2lJ)i0B)>HK(FF%kzefCUx?hpKvbd|8} z;$;GATmuKsqAm0yY&eU-);yr)jy zl^*rz(e#GbU7PxQ4r?33nKUxctpkD=)ax}n(A$&xc+z%f4hFvTwKM6R?>(6QfA-!4 z%Ch9F?~KfRxmMO*-Kf4O z@4c!P8JX|ixDj7`TSR>E-MDe%zWcpb3UBwGKRaEX_f;3m%U*JKdG530>kkd9bTZw{ zF~;yV=R=P!mig27l=u9>!{rVC;_c<0i(2xa_ChoAk_M5&35(F4!K-yjKh0*KJE{r2 z&HJP~X3Kr|b;=L_;MbO~{F)2phBi9BLwJ|9tb&b*J)6}O>dNpdlHvCy!{d_STuX*8 z-zEdrrBhaPLpeUFCjwf?cloi^a^d2A<^KD}%isUWUy&VoTuAl8f@dUHnafbm$ShXH zYp*U6T=YJUdifNv6y zEbWd71#LnFbf#H%{g0qw{{x<&7bHamIB4jgGTt3RFwliQA37)Cf3VigBwPWcK?+`x zAQD|wre9^DjLKuW*bv+=AApduO0@515;~Y?PSEel-*LW^gF#R22^f+dU&I8ABaNa? zhlYu|oTh%sgDCkvARq`hL?A}E^l7-v(j=C5gFm}XEA+`8~Vo4EUu?v%|ur$dHYu}@mIHP0FhyzSGHP%`HX>i>Go zgyC9R@@p)aF~l9b?ZSoW^6`%@ zYbH&$nsiU;cVwTyp=AYMcvF<;wOx!hL*{c`Hy-m-x7RZL3^5Hz^&A$sB4+qG`b>o!iiG9*E1P*b|@(`3Hw^ zmY98_OoUsxPnsPC@t#lRu;VcaljDE5JQmNYVVsuiz*YXO8Osy4-Q`uae$pc#G}R82 ztJu40Q+dC=u1sd_VuA=d@;^iX(~pnAxP&tV4t@lNHSmE9XO1>Q8uZ`jPppy0w9#)emtZoap-$MRou9t?}i!}P>SihEVyf+yaf+hK5_uw zAZ;EW)Egb?Pzatk#SyEMC@P{sqmTt;wwE zQKZWFW3^2F=!dCWm3}t4vynmE^^@bqZtg5t^;xZ*{eZeZ=}~#7qV}xcz;vtJ9HO2p;yf| zw8mpqJJzqVkCT2|5@bV$cT+uzPO+tdipM6~exxZMS+}LP;l$RKW(Kb4Q%38O?fUh_ zvaC7pO|2&x*DTv_s_gO#B+ z;cK;P$vgaj?h&d@2_I{kme>CCkCh*L_0#2`J-y9L`GXHWqkPBr+*kh5 zKmBNV=WjhKyR;HN`mB_uh5*Vg9M$JEy+0wOprL$62#T~)dk8`vPnHSJk5~Qc@l4{%k!C508 zM-3Zg7||g@twDj{qYk)xfhW?rCbo;dOS$T1_@vRJe%dHh)=c{Bltm4Eok`YW zkw=}ynffE&8(wm^sp}2B8ojI;x1|X!a@AvpZ9k`zmp?7;XMum~x2k&F()A=Tnl*`5 zq3St;e14BX)v}?7_O!iqIX(+oL${?z2OEm7iv2bH*7->s;{GYVDo1HqA}vY$etwjN zzJ?nwTwYq!16=VyyX20F=^#3~JG(BM_DEdm*;jOVsPN}$pEUfoSHox_37K+rimtm)_hmL9=OsB^yK9oO{Y&3gHsSIM#J5q{z)FO)|wuL|%CaIysMb z>+fy9d97T&daw+@70uR_P4L0#(Sm2Sk59tSV5z!nO99y2_)^<_x3GCWP1v|(8 zXfN4nT*)d76rnx-Q)@B)E1#;-AHn`dg(of6u~iPl6PUvPP)z&_ISu`a)9sgX z9-kUdL1jJnW%|%1Kq+VjPo4;Ijt)ZXH%3hrD&5?+{}cXKy9eFz093g9XrFjg+^C+U>a8Ps6w(pOwr1P^>V zk1+>H?I;*!#TB!700(Xq9`xZ=umN0osA*_|+NBuu4H@WzUszMV7>j99_)Mq@Jc1Ld zJ&N;k7?x1S_?C86R~@jhGItzzy~{u~clT(;PFrZ!xPe!o`g(^wGrHhHk>vwhWTlbq z0`3!2C8HacX$%7OuKMCyh@D?ixDB;fbDP-*{eD^T`Ze_RCwic@-RA6Hm>+OdbrH33 z$TpqwJL3?C=sswxCBz}h^$RlmebV;k>`3ikZ!{-4`)GjnnSA5CXQIRV24hpbviX{uO=YgxR>g!j;M9{+VF*H6p@=kZt9VKbwgzu~PrI(&&(f&)Mu|6K;` zF>6L@VC1YT>E2cwq9E0op`EnG{~%u5Q*LA8HTp^?P*fc#TDX#+mAJtHK6-}1bSA`< zSalo8a4u-%w2F6Hv&-u2xcm=p1z=goAk0}QD(o}yio^|yd?VIOh4Q-I9z{dRFv0Jx)MWCW~$+W${kIJN{_l221QMrTUH*&p^|Qp2C6>N@#yAB zC(cuysue~XsJS)03rjO=hpy)63QKC>G~|ARX^Zc1J)RuX?3te;3Ll?0Qp1kV9O>G! z>6}AJGy&ZJ>}2mKjL_Dq&eHh74@vHr#A`liQ4M_10s9GV%fd10kS__1if-z1RP_El z(>YGx3%${S_|ee!Zk$`JIkjQU4#8Q^WL#vce9=><%P-#etkU)l*RNj}+$HrX)?_6$ zX3kUwBUS0AOui}K8(k|WjX*tnQ4u2+L201QG@L6l4N;AZ7#xD=f6;w2lHtL)-s6}u zB(Hmb?VHR@njSzLDWrpuh4M}NydKt>z6`(E!K$es#RZ9|TspC!*#33tXewKZ_Xd`pbajP;HQh?NocKXM@8452#yn||fcJPSATe9%tkFrPLCcKjdQ zEej$<1jbCz(kA6=s7=^cl6>ql3;o8=sq%A!lrKxU0U}yucg2W59-X$pkjUhX;P(gMK_#gc@n6CgLpQ zBhHLo;s?YEf;M2FmQqr15_4t@Skw2p9t2;DkSP&D{YC~(hd`WHHSr04k}(?7+7675 zU1^;hmz4AXj1%dk`Gl<( zsR0bQe&^0k>hbni`R>jtpo*x+?Kes!omch$vvJs36j=ofTVEhgHN|`9vjQ^wv z*yBGUhZ9g8B*8Z0^$!1oLK%{7J(FWQ4k<41KMWhRiME%m*#8k7W2|UF&pPXdzQ(<9 zJj1`*wzW_#<4G)GK?IW8@|&^~;LQcJenvo^JrOk{S2~_#%G_P3kHZr~lVp)Y6@Dmq z@GU7Exk?BwkM=gNCNo;2Ke!?!t$amHMaY>DSc3PF#n$u4Fd(=AGhR1EykLE2e96%b7fZ(7p_# zIL?`abkKD|j}}j7%qaF@xAwKB>9~DX^7|CqmKBcX8Aw=-Ms;~<4F29eA5?}zw^I*q`c;J zpSA_Et!J!quVS21=T@*xYC?y%D`AW3+`EiLI9+kAJep&sF+i9Ow1OTo{k_+HLNa_% zGCbn|8J=dizyD7^sq+1Wejaz;cKf7JNzM2hx}=48-M9NcN@t=3IP`=gLp>2x*FG_k zqip#f&M_!4wFm)hlUeivW0VI5`fZ%7H4Fd8C;$xlz$&!;kC^ZQr+7dP08~D9n}{~q z^=-(*m+}cng`gj8l+x*c)pT=aCH zG8@heDv2q-O2>+$5|pZVD9v40p!w+~xS(oq7zOGwb~ANt2To@Ke1$@#AUgp{G<~j7 zQn)uPUrYLwa|g4bkWkhKe8RE0ay-N$olCCb>=e;RO*wr;2dZGugBNPpP{oC>f--6g z@TV%I6J5KO5V`6h=NEC|fF6@K6r~POL^YsoC^n%)_adynZaBPgRhy6#$(9XShBH;f ztKH0G(?)qR;C2S3AZKEJ6Gy=9Z@+fAIBYBi8&ro3;5RLu>7?!>N{4I)%i2!Jj6*%8p;#zq=hmHQ3 zfBTv8Pu}pc^6G#1h2^h(x8A(mC;Zg^Hea6c#ZN7-ef=lOQ=U9qzV{VRivC>7*gi6@ z&mf!7umB@`jQdO;Km!;J z_ME~w3f%4SpFFVUNDm7yd&B(0&!E73BH{}O!&Lc=(6bW8PiL`(xC;{4^qeum2Ehg(qV7{f ztn{NT?&(zBC4JkaXQKE5aI=F~6zp zINtbk50s#?Iz?wRj$1oTwt!#|{;U>iq zjoSZEi7ib8*#7_vcEy%HXoAoFhue)VaB@t4yZ=Fbcl{4a>Dq0882(SB(NJhf>?hi# zPipWA6eTRPV$gP56<_v0(3NqA{JzxMOIDG7<#Ovwo zmj;i(d-Ez<5U&Fel&a!3oGKB9HF7xeZA`i+?W^PZ(morkq4Q%~+CkuPGXzl|A@mTR z?AX%YMdRWfexd6xwg|00_b$vb8|GDcdYjhYn)M@Ph+4Wns1K%yoo!S}-NGbm1=Z(R zTdJfosf>p+{;HgjQOY&e5I7=Q)(CRK_GyW8|c z*`pqjk+3G3Gx|k)0B@xGoIoT=5A8nH&WaL8JxbRi66!^=usOav7Z25{DT0EO;4z)L z&@Y)hD#->O>&y@qitoM*Bme}%?y_E$XocDGht}waAvtH4_8l~BhHvc(CoH<020U%i z<1HuH4@|)0^-k^K%bVpr?|ZEL_8)zjX&mKV)oR&?mvRA&2pRLFciy8rh;B&}PADcp9oN#>>NxY)OX4`0rxcgg@mRSrP+31A^K?K>__*6OL(BRjc)w8mdVN#>enu2!cw zZ47ls?*~lnvf2guK*$D+^dtLDh$nSQQ*QVlXljT5ft^u#NV|D7^kY;3w?-g4Q1ns8 zL3oVKZ7CPOCNurLU#INgfoWt%^c$VH zVfv$OH- zR$uISpwMxCdm`?ckv6Vp<`Xb6_en$dwlCXy{on**Oy#kc7dO_5{+)MUZ|eN0ltA&H ze*e0SRMv^t2GveS{>;q&k53OnvyCJBdTpL=u)p)}YsZq|cYa@crtK3_wxqoe=)PIt zxvlm|YX+D)%0!oMS|6$0xO7K##KSuX$Jv13z!#wZ^It2*{)gK^O*h0L{0||q{~`G8 z{)h0G&6+E^!L`yG+e3_Nab()ncQ6a&1nwvoask$0!v1kp0q|gA_zM5a-|l3lgvVWw z0WM~*R8Xao@mL_I>jV;{SrH74fVJBc1}+%YwFw6XjT32*QBq@ZZLT`g_|0P1Y41A_;Bt5E;21g7NX}XgqQB<$PU(v zrfxZ{XZE3kUlrI@D^9Jv(KdP!sTPA?1P!^UF{6DCu@)*mIC5Drcv z^g5iH2P{nCNa3q8RwgS!zKbY)*(eyZZ4tMEU{yGHbm|I#Q>Ougg2iD?;)YBVl@3ki z>KeC=IM22LivY(8P9R-n%#IEk*m<=S!pI?NE7Z?QXIV$tA) z6xl3zh)z5mC`b~A7oRI^!Vj3GzR;xsrLYGBo!e=BAw5K)G;OHy$lq_!7SEk;cXG{gbav)1TzuHa$)2%tC9Jhk{SLx&HlYGCkk3hMv ze2zB1RioM22lKiQwEGrGyvd31Q(N00lSUm?3M|KL{TMga$R05TeqEWIx*U8hC67 zI90@tKx@9~hm$UpBAmK2X815spP~q9`uQHlJvqNKlrpr7OYL5IBYgD#D&TU-ZUetTO$Ux{N4Nnj65s6tDHzYIW{WH z#(k7CedlvM&=T9dDvjXC{M6!^F@Ts*hG4EgB4J)51Q z+du^wH8PBU4i=TR9mm=oWBqqz7_5%yPSJQCbEpCAabz$5g917J(~m3u^fQ?LNMC{N zIGXe<)A%1159#`~=^JJG9LmE@0L(8}>g+%Qq0+bPTuQj)fU&_~J|tlHnDWt>hf41h z2t2|{%ED&>Ng`Qya^E}2p_?l+!9r-r0-=spX zF^uMrcTK}`XqZrSkl1tv0x86qRn6cTR^{YOt2<6BKjCiGx$XR9lWV69i?1B8+q7y| z^IcV&Zl<@>juMAfZN5h-c5K)|z6F;0>cv#n8+q+`FW5*^1H?|T0bV~p%4VbAn@E!b z@B8uJ06u{tx1v3zdS++F%MX43-Q|zovshmFSMM*6KfeDuRPtZ>S3YHU%2A$%l68`O zFt3x&pw5Xm#)H5*5E=Gi@VGW3QSZFb@~6NubBJejmi5veE^_>5{LS&+638)pwIXy_ewB1 zHrxL|Ui~rKXXi`TmM0N_UcZnD^Aqwj4g;Cqi2W}bT7~sft*)yRBx7-W6vK@om^oZJ zA`Xf;9&-gD9zy7^GJ~MIl%+I2lK=xO_=aMLPN6C?uRwcVS!(n)5#%XQrbRz=5Hx_` zF{;Jo0zl-fv?%VNJj-O5THzsx5Ts1vqtXe5sU+9!3JYu_IYKs##J~yeSaXz}3OYDt zZD(!Zv@61@>La7iY5ew!1K?6K7)eN7^{SgT54-w6pWL~<`_LzXBNk&z17sTn$+nIH zXYK3asr?8E7SUZ>e?8fDqoJbd9sT?c-$>fL!wdQtgigS9D+4m1=V8f`{R0_IV+Wy^ zeDg)miv8a2TrMwq{>S!J1^K`CpRSaz``U};#V@+p6P9{v)9eY^MCEt9Z zPZ=&8nvKp;9vZ;qZn30o{t6S@vkKT0&I^eX_(~_8xvH7O6rAES0>(31E=3oukZllV*1$>tGq~ccQv?wBUkAml zFqf_Q3FwSWs{oDnn%Cr`51sglMwdQ$qYK&K2i4J1{KUtQIWsX`mbK>>d8tk$M8i3Y zmW~@|SB(JsIoF1#?Kd{c%+!uIv5xq0I=?sopK92%+9z#8FGJv93_GOmEW^y~HgdI( zZA&}O#jV&UEuA#pEg5ETx1)b4~D3{-~KZ!qkF`2pET^7?aQ`azek}yk{OJ=_?_)CY)nge%iFJ(XT9(}XeEs?<(L(&6_>+na0~NA`8vs)LBUJ-5o@*GjcoalZIR#WTNiWC?sb6>C}D6D#qT_In~=9f6-5j|McZrF^orQaP~hc z8KZ7=Nf`y@HA#`8gurJ1qo#%b0aF1VZ(S;`!u&ziG4KJTGwmIZi5^a#%eMR$bGmJi z1v#)$hO#++Ag|z^6v!NxTPD0-++RBYtj8x0m{|c~>u3Ce2s+B5aLiCq&cPG~AZ?>O zGbudT@a<7nA=pUOFCf@*>*=o$voJ4c2HuE+#h9GO45dTmBdS8>%ug*Zn(;>wrID-< zjwrE!i_L9=Us6L35l~Y5r3dnE=RoJ&^M^1@60^6AH*lm$#gB!U$jmfreKKuLPv|zX z{mXuq=hQ`B=ToS>&isz>PLNnbJVxeP?Sr?Ma{8{;Pk?0wXDOj(HxulQ!-wH{Gu3Yn8|vr>zFq2Rm}MGjDEBI{bsa3)!B)%p~iUrjypA|PnO57 zER=KS$I6YzFPoq7EzwYeVm2QB;nM?#&NN@kfh_&}>Xtr}ok?xXs(sqLWklG-32n5; zjmB_8Sjg-H*}IxIxh0>gB$+@5N{IfZv(hQUIRK+^a}6AWi1X^T*BnWQYinEO_5bpL z@~z+XzA~e_{DVJxPI<}8E|d!w_g|kyK5*~;z;nv9%6;p1zOTIge}AB?3LkF=dL0up zAnN7GC;gETrxC>Y0@>F8dg!?hCe$~(0Zoi+lW+EUlbsybrhdyyo8|TY0vZ13STej+ zI(YpXKU3CL;UV+~ciGm6Zx3jkUxs!(({BH>+Xa>6aa|I*!r)tJY9pSl+-StZ~N44gVwHAsvok5NP{9=@Xg5 z$cC8znJu(mp%jvUfxiEM)z6b#js|rcLg>S8_+KG^?HTqvqjS-ag$xr~byy!yni800 zlwuamltcuf<2kV+XiMec46HEgXRpD#+yZl8kQ@Yfq=?D_4^D$!H4TDFQJn8;bt@{A z>aGPDg`h@6vC3woQ%Y%>ZqgNoLbkXl2+D~E1X7h0#vn}baM}X#sMn>z7XgPh2f9cZ z%(4BZ&+>+L&YwKY{!{~^t$JaPv6c1i9%FXgshcB&ctt(*v%H{v(ik+U)2Ol|U^+S| z{7!Z{+9Chu(F-4;#I4vT?ezTV^5GACsC-%@_oR&4nRBN-L&-X|_U`US5TgaUS?1`~u`l^gJ6)6j&nHb&xAD0z{{uKSX z?@GotO_u97mdn=U)pGjm-DPQQzI0|g<=ub$hviQ``iXM!qCVTBcH|Yej2wOpf<42v z)Xn6&Y}G!2I@>GY(p*)gMk;AccXwtwYxhTZCaD2vB~ zp3!nU&GDaFR!}}g92n2-;c>;NP9GO0@nPJ;v!N7x6ez|KNN-ykFclg8kH>voo4&3c z@PEkjHCW67qfLa`PGX`X>8p(D0O!wyg$j6&QQ*P<5uLbU(zVbw{+Hsuy|<23h`Xo| zERetgLV^(d6h`1=(7XRy2=bVrP#!J1GU_s7LRpnCTV>z?b@71~H;G_pOi`S=P2FiG zUHC8pl?68NqN*SjPLwcfGh^jFo7c*FfA2SB6hyjy_G?Q{O(<7RqEygownt`zUXEQ_(^FFR)xY$l z50;O8bV>13)GuTMTW`Si`8SLa|7jd!NT$%fA@O%{vZ87 zdGX6Hme;)Y=nh(&kze|C;rJgH%d39m1LgDX{POZOUwzj4bl-0S9wY9tMCIM(bmscE zwTbSl1}ww({qP6Mofn@|Uih`g)5$@iroB7}ZczDQk7G=3H!-(6h|mG0Q-)^(V{;hq zh{tG8^8|o)3NCsa9kGu8z9N4^jtwsj1RPF=VvrOopp)6*fQ_(;NeGDOvxN|Qz@A@e64l@A0&SfEEd@JImRTkBSUB~pT`BP`g{hxWD-2Hh^@){x>7aXq#Kl_pL z1y4O+{@d^POELmC_;!?J=aHv=FtH^kZEQ7+opyTcCyeRSV-ssrWomA++*p3ROwL~_ zZ+Y{F%R7JT56ky`|96(t=gybusaR(iuQ$o^U>6;jNfT?Edplv|PwJ8EUIAIzVqxLt za+#mLqx`S`0gJh0gV3iP?eNBqjw_3|S>@rm-}A;|EzB*WW& z`E)sRen8B((BunNnbdxIl4-*@qcd)x(P3*Ct#K-fRQgnm$R2-naJ$^*$OL!2$NxHM zqa`o9{12f`+T378_pQ#GQNjbipij&W9Dt(l)E487uVd!`xgs;Hg7^lL2r{aI3+K&G zFGrzgvF#r+=zE>r2PVcfIls<*aEb(5h^cUL?@BW!)E< zS@R4K4+8phWMs8B)>g{I>2ZB1dr}7cRQb?{mdo$_-gv&nZzEytuU%jR*Tz{}^=n?9vx#=>=78805{J9c-{T+{$_y5`B z<$WJ}?m$KQE%bl?2d@oHhPS@+YWen;-_fG@ zIU1!yF}6A|qT|-kzdYcof9b4$PqcU(2N35fisAeL3v_o~m@ahF!&pA9GqY$oque04 z|EfDNemCeq=}`R-#lxErbf6EPD*Xx(3;#peAOuFI@Sc3B1Cv$}hc1uE>A|)VmA>Oj z>jwC%{#Q-J%b^_R4jP>#24FW1VgPwEs(^E*KZJ%q7{OyC4jN#9P@*}q{q!u2rWnnr z(v@v^Tt!$&NtNMgMvH>UW^T_AB1;Ld!%YZ7itA7j=UVH;5GxW{H%3JU&tOoxl;#2r zPQW8QB>(^?6mOce;6!jP$SFA^ZTKPh3dx2+ZRZ`F|_I|h3I~=#x!Cl5jkm3i*f#V=$g{>Ife}a@t=LuLqnC}=Y;>;U;d0B zIKbmJ`-m(I&?5+8v%+X?GhH5wl|si-rveU(%|CI^W;Nrl^6NNFJ7QG#_#Y*7RK8N} z4pn^Nf8e|55vXu_a>ekX<3^vA3e9l-V!Qwgqkf!O&INw>G!^K>pOWnVnD3+yoWK>J z7jGNKGr{EF<^uY1B1J-hIPxjRL4h$DIX&rSSgo}Lux7hZ5HPraVITr*ItZDaDl34<-<}$TKWH6`TkrrV*7OBMkq|<51UzV03mdV-*b7(4e?;0#8Jh z0dHg}!7$(fK_KZy$P}V*NJ&PGEuMi7B8C%Zx*m{a7V5(WH=b4q>8wudT>A z!ZBOYA~A(^y|p(!F{PjGBQac9lQGOy^luvqtx>~_^c93=LKb{X4&Qi33o~#M^=9#e zCgwUba!lo+Vdu8|<};5}#e?^3#1;jQWsAq5d)oun?d=sd!K<(Vk&RC2=;f1+-|E~b zH*PE{?PfW9TI$I? z4h}3`(mV=2jX6{ubc%fPND(mb<|SspqDz4%oUH(?c}B9GKK3mFvd7IJD6^dB?^!z* zey0qV9h?9TA1c6u6UDhi`D(cq7#)LV{x&7k6%)ItVV`2M< z>Ir_=v`%Ywc5s73FPU$}K54Z1HCEOSIBclS?ZAv{iwnBcIP2Wxw5Y?5O=t^_(_`iO z!fIJvpV7+%Gnz@mOwmJB!7io%06+jqL_t*bSW@ugdMynj%w6(v!kQY%xb_#>+|(Mk zjj3`?G?&H3%;{-aiB;K-psS5PM8*#tf?S%A1L#leGYgpyQP(%t^@vk4F-wT;lg`}j_icUUK55uA+m~Iou?^i{oExZL`1cPK78?St3zbyAGN8N7r*e7jxbL7DW z_TBA@^G?o4pdTs6{sWhS^Ue|WB@!Uc_8HtzRY>`MbZM;Nj0OJfbYeCN#F6W#dZJ-m zkpu%?J0JcB{tpftE*Z{Jcm^h;a_|~cT<{te$sUErW_u8}XCYVjaizzPNz`zpVBT^I-9@AwM#-UP|EshjL7=m=$C^}N&7sqhlH9#7uRY6hnGPDe&s!u;EmCmV;?1)rF#@#`wH2`Zsl)vTk zVh7j!5muqC^aaggEQ!YW>2(c>3o5Lw7&K7M%xVuS^sOJQrkTA2KM0tiu+a%Kv!L}% z^O^}+S!Z37-awSguMaxvvDLcT%4S*N`;MA*nLsu*f>p`jwyZV{f4u_y#-dkbfd7EX z_yptU%1W8nY=_pMmkq5UVrE91NjAx-Z4}OE4=l?uv7weD9ZHWL_H(_tI+9BYb( z(xe-ijus^;T>Xb>esb1T&vU1{4z$~vq1_o;H-gSY(U)Mt zegms3Im}|YOiWEHC#?6Rz$V7)Ea1d!dGl{PTE5{M=gM=xayU0K;06Di-*UCQ=z8fcl`g4q#MRE&;8C%&)7o-IGrX(I+PL;@ zmq#MQ|NH9?l^_1^=A#B|I46sqf_qWCH*8iP>8P&+hfz;rc3a3A%-Y+Qsf%dUffExy z`T*bPU&QSzF#f_w*w2O^1Rxn0^$kA?)TJFcZm^UYK850HhcUUMR%_c3MSZNc!sEZn zyZvJONEdFNCNZQyF7OeDaD+gY)Kpsi0C@XB<`4D)S597;b*GUoJW7B*eH=flkzaA} zKm)CWKZ6rj3+WtN%TytPrC<=?SbQId>7d?X1N10Og`3Bcq@hHe$pO~RpQ3&q>qIhO zB;F_V&Lk8_4k<~Gf?1Vs;|8E5sTi zB?_2F=VdWfD9VL?LnjfA=u9Iv4=7>)0rNB~TpL(eojYM?&)$mFlR0*%R_9(~$!+K69p=lTIgZY?Rq`A(V1w z^@y#=N25A0o#}7+BRNq+8O_)U3?=f*cw-hPX7i$E4$c;m~3{ zyg#7Qkzt<+7UlL1w_=|(WKOwzb2a!>({wwa5uAi!YT$VLq+uKArkygSnMhq}MsQs- zO~hEdea)M`Ub+0K^3hLRFJJcD9bXk0f?yx{=ws#P<`u71yt(-4=;Jn0^g#MPkJ!_I ziBF>T;@m6EH=~N@Ou4ZdyQ~*Dv}SSh(emMsJti53-zGo$$;Zpp8y_o+at_BQ^k(ze zHI2K|;%Qp!cH|tyG69+B(&4=p-)QZxO!`!>ebTfo=1>E+vghMY>6lj1jInq;PQf-S z#`td^qq66EQkiD_C!H~$4D5IK3-$=Ol$Q<#ULas!Mf(_rqe<-WKS0s--h_&=B4*P9 zeT=)%*yaC30}_I;>zt8`D|qwF8RMbZ1P{?RefbplD>()!Un~oUB{3!r+`bwI14}55 zGhm6_6hb(tC@?j+$pEHH6c;mP(fkt!kbpy!!H|V?(D1e#N_VwT8KOfO?-8OiP91r{ zRh}8_fB`G&S2+f0xKzhOB*QBoCHPUL833e~G2X;2`nt|nYF#S8j3({}LxHhdytrhr z^-5*vjy70@mVLl-g zpf)F6xUL=Wnbp%43ey;M$uE)Noi=XAlLoKgZMGtMsH2;J4`^ZdAwSVHd`i11?5vaB z5GN_e)c{S&Hz7Lr6_~P8Qyk-o246_vb$rGRIcr;*9ew&2-cc47o~&8rehD0nE8S<7 zYuE13HWr<7`hwn)OtN;w)ak--1X4RUIBu|9JEX0R22sf~F4<;JpDXkFD#b&Oo|6nm zL9%kg|4>YHsBVw{sz=9xag(Gxz6Ul~c}g_> z^gjeg9^}ADp6TisXO&kB`wc+j|LDS#O|BF96G9LZNda#(AQT)$p#eUeK>VDR=c4ho z($~3`7Ay>TZkICy84UsVBseiz`kkc1v9hcj)N)2!NR zIWsv?ZalnH78h@*apGvvxaHPZHJkbziXQXnVrjAawSYE{Gjns&<(A%@TWp-5oRtD@ zR{3|znYyNF>Q73?Pri1!+|;ezlGen{%R!vgV@ssB2BHG&@3?BI8}j5_YB`wwc|v<=yeb#~j7Q^Tjx7`9gBu${a3^zy53{;l%zSNwdr zac!x*{jE#oOP=zF{gXRHNtuK4w}0$EmJfe$rF_Nn=;!dKf^upcsv-3VBEHkU=AdXZ zBbnA2(Y1!|{?DwI4}Wy6{OFIqLoahIk32YhY4Pq(gJLraxY|k&~dy>Ikqhz71y{+nV*pXsU3=D%!M+t!A=b1Do z=pvDu6JP}#&J9r*#QTF8T`HdF90RWsAY$d{vVnzh;kP?P1(Bx{-lK!g@EDGwQVin+ z(GRvw6`G=Bc_60$<_A%Ye9m`X$YXJVQ;2Gd3rK`}rikh3%1i)R3+UuWtLo6!n7r_m z38*J>;BJCP0CRey4iEqPe&7eo+urt8Z&do&V~_iB-RGY_CxeBaX0@Z<6(+cq5 z#}eXhQe~F3!2Mgk{pID#>Tcd9(19pmr1>!P1O=qP<%i^$t(2!c`7Rmp8|9@h{x*N$eL9&H->Dy(7;T4;q9Et(9GLa=;_^Di z-Ojw8@HT1fH$b8{E9-Y(X=j%((5 zRkPr{NDwx-H}7nkoc1Ci@|qco>5g73(Q=066&?$&m9?$Ka_Q2!^8CMWqkQN0{B_$d ztXGDdxn}I*AySNBnVV->L$6<(F0c9ySset;~&70S>;qOz**ZswX@)ghh8qLaU z_FZOBs5^~8F2h}MkSp*ro>qnB-VV= z2o;O6xQU^y*YS)zXI4m+V*+C*eS9X`S&VZkB)BF}l*Y$mas+h1s}dS}u?R!~Ws%Am zFA)}k4a#^@&)ftaQg8@@6~md)C~u~Hh-=eViJ-4CRx*6mjxGLJV_@P!Mp3ASqeU#? zphp}S;X~O9J|=wNeeORIR*>W}gJ_s=ie?MI+KWvZySesDJ6a zg@07$FH-I&t%+?TW0U&djIi z=WSqgQn}Q-!S^}bj{Br-vwgmB#Yiv-fg?(b0@WaYWIdE_s|qJ}5(Bijfw$ehs#kr;i4lGVKgWDMHR&5+J5;X>>uwDGq&S0wXKoS&@q0L~38M zi$NV|*77HGoHKFIVEQ@PPWsbKy zk(WAFy4y%CM&02M5$HzdT8|ld(83#m8-BM_uga@9Z=!PNSCq$mbVr?DmcoO7I zYcS6CVM}-EA$L19;*&C#(B4{=j?Cb?*01TVSZm`}H7Lz#opkf&6m3g9(}F~>>P}HE zj}Y7hhR_c7VgZNAFMBle?R!BEKHWxe@MupkwlqLfa@##(I}8+R&+43;TB5+q0vlRO zI>EG$`V7|l(xnSpGrAcGvB`Z+`Pl9zxc}5XkMU|{1q^S2E1x?<_3QH&^_D35 zVU@i`%f*EonjzGitdetlOf+pV8|)Dg4aS;H*6HmT{#XDxzC( zqQSe7M2#MsgSdN~&`aray33ukv8L7+wV-~pKG&RY|5)RVOfuD z*@$#YGkJ9I4J}~U5VO{ehy^%zbjlQ63=eISq3kHW&#l-eEsgp{HMAk|aF4We?B0^z zE6PvZJFH%fRj+d)fugN()uO%CE{({4#jhA>zB(?9dDY5&z z_%-#Kjzz()uszYFjKs>)O>GA>@BX@|o3B&a&v8Oq{dlPNOb&>*^H1+)NM?ZV=%u8+ zLbLW71E^1%v3c{f)(7Jsj_a)Vp5zy5T-2HM&Tk5f{~a6am0Cs$cmFO^;Shy)gH5z=doNgY-@E5xE*qA zEC?LX5jV)vs|-szQ_fOi*1vrN6^gm8>i-xaCGiu2I7116Q}`0llAKC_<|gatLMp@M z0WPcyN*afN;gdK~{V`eQXF$GIy5T&3isMwB5~af|A>Ou(I83OmSfCKOdZdO70x)T6 z;8HPg#&s}_nye}-l_pA4uJ{E>TrAg=pcT0YFPuV`7y}M?f}j)u)};j-@yJ4Reon1a ztJz3G84Zsr5LHkSsc5raP8va($VbtTUy&zxKo<0>=Y*DhLR(*;gBdwI-4J&G78=2K z1R55298kJK`&#d9Mq(aoL(j`;Z6q26#>%`5D`6}b`GT+egv5Dq2u7MZR$@m6nn$({ z=0lGwG^;j+dNbQk>Fsr zu?FH+2aF1$q9*!%N9xFRJLXMqt1{5|iw?J*-CLqA+CV#apxd6*&OTy1+Mf$i8QX#s z-Xtkv(3()&^)~QZaiLkBN#8x`#)>8`+wK{0F4S(&-9+ur^pW{_)?d{-FM&5cgKv)8 z0_-$4wH8`!&}A7*q?lQ)Nd^DKi)VD!%#(_<s^2Qu(!sdBuDr_K2 z7lhVfPE+I1V4YlcT|a%=R$3Q=VRXs)gPqxV4ccs5+KIBvoxzU8UEPH28DU~P?59<1 zK3Eagr4J({+m7p;>uX7kzP(d$u-*9c{2wKfE}YEK0OOfAdD86}IUGaNu+oJ? zuy8~0jGszE(``uye4RQ%7{+*kHGL;}1X$WMpg+tMWw+WgqkWb3@p2$q6OkETMxPp z`sC@t0Yxz^fd}YFkCz*W>(?Zwq!g5_4GykH7cdYE5FR8(M|NLIG?)ECYP$;)#wVxc z(CkS#oCa>mK56O%zVkdBivxk8oim#-%OmfTFjNg3Z=baOSc`SRwdZTi@Ai-uAR81gQDuqFY z8Ivlkmp7>l+2M&)&q8n>Bb5$De1ddmyfZ^CKxPb8KJG6bfL$iWbaVs`av5v&3!=hi zWRY(FN7vAZ^3W3&c~r6ZU*O6^KF_ELr(L=heMUjv7{$?JhR)lFs8rYg!Z#v7)830B z#C?$SB!&$jMj(dgXs^>(2u>KK5$KN!v@PdBH1~tuFYh3{ zd*u%U=U%i(x6`CXmd?{QSkgT@RQvC-HwF`@xcf6c&{pdBONOVv!WW1la)&hjGxqZb zBxj!d5uoB0RmXO(b*V6sq%sr(QVEca7MSrJ{!gV(iEuffuhKMCBN7HBr2i8w8muN# zxq&C)uXH1ei*Wt|63+@$yxpl{@hmhD0g&I80w|{hlSsTu8nb7>qLK^{jfqU9>mqVu zpEW)|OL}VWwoO1 zM{A=tAT2hY5K;7VEBqGv`zXUnI~bj|N8O&$Th9H8 zd2B;A4aB+TjzKxbyWPXvPF(mVhY5*0Vg0g5UJUV!9(wMRW||V*4X_TdDU4;3SAo3~ zT(^xf3X)FY9REp)bW-hq=s-EY3`wE_<5buG(Ad=WKLl-G#g1MyHIM&-VHE3*^$->{ z*p>^(_C#hm*RhkUJjU$seWU_!7Uvs}h_U6j{*VW? z5h}g7I5}Da)Zbx3>aaKLVU1ev(kH3I(!j|+X~WX&3Et@Qd)be)7ubA-y6r?<H>Yv#bPWEu{`p|2rLJ{Yqxk&t&Z`A0i=3s zG0y8+o{)8i*G4%d#Zx|)06;#4{0L>BVL$TBwqo4SP}>ng(0gVJJWAdY{lM6*f3AU} zwb}m>tnt%?0*&bep8;t{Q}_XCJCl|TiuQk$FK}2AkR83aIjIRsu8RWVod$D39yAoJ zhI;LVay1nf4F+JCJ0iZN=&3(RNKq3+d945%rXcO!k)>DR?8F%+)~H3t1(FbV6oE@P zeTR{G%I3P_>E3+=O^&&S4NMuTK0yZKdUGZ!Q3-;txbe^ci~~v_8AQUfvbkXNHSQ%A9WVl*_7^CXN$13OIgXozm3!U#gx z%T9zn4;UTWO~cH$6B?+IMY65-YsVVtc8Jl`%Z~JZ1!H_{hxV6W+UbLihs_Ep8(ATO zfa&DW-*s(W0_1B0aj4@jo=D4aLN6-gCpFsUghz{A|05=lVsfRcKw{y4D8id1GHTv! z!uBTp4?*Enm=8#Y14pd;q5x0i@P8^zd4a~OYn&^*BD9@fQ&7}_mJXabqCRjkQ*M>= z8vW|*K%QVaD&X2<%FPpJx+EbLX5d=F3aJUg2us!i%Kd8aw(LcOTn%n;1@E!(J zzXRW4aG$`025jd1B;r(@3WPT$-1>_9lwOOGSRpwMpX?f5ZJ z_AGi_K6@hFC(+}k8kx^+xO(%RFD1ov3;;2!m(my5{0$^R5eJ6n=xAO>3GifoKgn*2w6!y#*Qt;fB*(Q67I@@c48o%gZo?=uvt4R68 z{FZ|9K`|jg?At01i-@R$2X8-)RGF--7||&ckl`!|CwwSPm_r0h+@CC>%!>{pbLSCzypfamO=M(;Z1AJ*X!{8mdIlnm zC5r8aJtxx8t-^NbZn=}#ZVlYZebS2O;0&-iax+Kc9#JpM}-#u51!LLta-z!;r9;RFe#cl{4Wdp-lG zME;fUao)Ot4tT^1W#9=QR+H&u|A#!M!C}DiY}Edb*uvSWSX4$au61s<4g;NebHwT4 ze+bUr9Hl7}{tsfAj*fnD00qP(U8MVK?@IC40X&5#(W_!mhJ$gE9z-FSA$T+k#!C$M z$X}ob$j_W(L7zo)(I^jdp$s0Q*0|25?+Oup3#CLh6okIY#7S`lI5ZA1f?UB#bru0Y z6DmZ7P|0j=>K6^jQwUvzq`ARu&_{_?{s2A3(Y0V|yWAD)T3MA(w#r45MyH)|8x zoU{|u>`JM?N&cV;?!hFshJbOVN3KhLHV%y-8=-x)a-(+S^ou?24?GZ1-&9(%v$?VN zt1A`Zz9(LNN9TMSQG4P`ypS)~wy=vazzI*b~Z6Xd~otZI89V z*FAL25|I7M^+451N^bY!O!>4O*-ux4#9f#0UR#6F*Q1Xqc27lC+NPy%@8}dxQ#|0o z=AthKt$xG)WxMa_CH`zD^?ENc6a1LxY^%pabGYKQUu*;JmDU1?u}Sq%4XMX7<+C>2 zT?YH+M#Z=lRqw6WXalOc%~kr6>Y0HyLsrRgt2XiVI@fV6PU6MnyF4hx0r6v8R-f?t zF_Og?@={o7Hj9dPODnE?S}$o#ETIdY+HF+#%l-$~DsMd@tC`^(ehDS)tbtoV*eV#^ z!dCH!&`c`bgoBn7b?q)@>Xc$CikBxTz!a6rsG{gw%@>uDJ|GSK`WRJ^wlkfVWUHvIbE|9KO7ZvDXbudWH6CVlc^~wpfEt-6D&fZa5}haf%5v7A{deaL^SI( zyzx>-xek9}NjZ#kD7{-Ua`;}Tq>+HhLK9m@PmaeS#WRgq8ZM+k* z_jxb80iAZLciB;-cC=Y>o5wL;ni64~#@gVzQU^zA-x-`*CUg|+p3vx11GMAu=0+%x za5HecTbzTLp=~h>#Z##5?I>GWP4y|_2E0)+yboM8V3e$^ z^snlr$S6@SD*C2TAn_y;WI;c^-AP#y!dF2DHjIj}_)Vyd879Jai4>^8HZbJb85dq2 zU3NEo#leACg%x}|fRAh%3rcL57G`i-;h9P%a45tPt6iw!g7SifzRqz^>SSdoQNg?t zsn&UzdnW5rAw=i=LbyF_$BU8@6KS!^yd)P~#dnlvrkcA4W?Gr4TkGlIDRnF(ASZP}FJWMgMXE_dS zYhDn?jxnB!fu@})9^-rDdmOhzQsJ9?55(cC2p6dEBXE9j3b8C1LQakIK`xVhw*R4+ zzb>FoK)LWkDt-JP&*0GRC5y>M97y{VrZ4}eb_V-D4HcYYT?n^NnO-j_LNxr2=v(23 z1sCXr?}O^o+LbX~_*OPEtppfy1{Zw*@%Lc0B^_Xg~e7y~D9r z5ZOl%uzLIG{uVGSnD6k9N6D|Sy z7ziwil#qj)R30`LiIkbHa6W9z>$s^nd>ekkDd=;MVULj`l8g3*(?tK-)=Fq_H6czU zsP)kv&6|!ysxx75$2HE=NI@t7K$`Ji4V65nMT<6!8?a$j1{~WJ~*Q9 zi8=TKnL>v|dvZb~8X=Pnq5wpkPTV*+QHCeoo-spN(Xp!_=s|hl+@KT|wh4^}Lsy2x z;6fAupclZTp@M)w9Lp&?pI^CDScKz%Nc#=634Mgu53hLV)X|_EY zZe>=FJ16upZeO!E)~0@56AO$U%>idi9G#I5W%nJ7tgHX*J4SCq*f-{rf+rd{(ZGHh zXpg_?LC9CgKIo!!@oE=5)5Zm9`Zg_p0hHc!dnSvxkkiBj zO~o06Ra)0j32;+2ar-~m2qmR&gf+vD0*bi(A6@w-$aujNfd>LXN`6xqHI3D=cFhne zjHp9fk2}K&=`y0!)`DV?G~x<~g?fessW@T}B^ZktIi~jzR%v#+95G!V093F;Bv+4h zXb2pO>c|NIZ{`MaRMar6O9(4DoG~ewxRMAyOLByDWgC?b0l<+03ggmJY_1y~EsF|K zaHv^~n@Huo7cKJ9W9}@?LUg|oyJH=~?y@welW?mv z;F%&dv|Y|LZ7dshWiH!7?cF0`Ic|4`MJg;#bn0w}dXb=hfIDyApdRfyjW~)41A z6;K1lMz!u7(FFAns|8&w+oH|u_+gsg>Bsn1eTt}73%$Llt>_qIt1 zJu0qG=%fZ3n~({IIPWuz9HR8mK-|76!FDTY#$O3Qo5P`^Cwh!SD8^gHeSQx0oZ~;2 z*iFi9&#IO|*|lVIY9%CnmP@b>jkX-t2p|wbKT6s=sx-*L_b{yJ;~TjjC_VijrmGl_ zZ98GEhr+|Q;T|G?(2u?s^wa-<5WbSX%oA>!0IU?wut707Gu2^fc!yzdCC9qJpGqM) zhes(}gB-Ng|Y{y5y;t7d9G(a7- z9kh)1s%zS+1Cd+N2>X!l;3BJ4Ce5C?W3QHp3B62#h`QdC!^Rt&n7l20pctc%0rX=| z!AO0_(gn6DI~KV45%SC)akgb7k70%*cxaJ*+P_yObni3rWqtRC7=9{d87X}3(dg2F zOY?1c-Tu0c+wi$Op)g1d)F!SrK1i&+anZhey*S{dQMFOU_*)0{WU4#WrOwFsuYCBm zqfr?LR^68aCvJM^tc?FakY<}%({$N{4QAzqlai*)^tnsavvC0qE_w**3PNhOO&5BR zC{HCIWRPq}fO8goimSheJn(l%h zQ}sELyVas=_|QxlZ%V+IDYWQEHIjj9cG6e6iqp8D??C{VN*}r*zu-n3&_H`2N%HWz z*NX!Qv-i0+zP$lXa&8k1*d|3I$mV#PaCRIvrlPRBAx1;jThlUHr7SPWDbt&t+$3$t zZ<~;T-rSH)q1U=U>JHRC9!lvW$PP_Ta5E@;^_N(hANc zcEWaZv^`}V2e`^g&X(SGW&0k7n(ihSDL!s<-1<~~3*AX{1RAijq??>};09#afwtwb zl=C)X^dF@(ZLj9iua#!E$a#Xxf}F*&$KUE}~7gquZUE zbYWM|u3L}!aUdls4~A#_=ee8k=s#x6U`v^mCxgp?;eTvY8Mf04`Ct`T2g^+ipC$aS z{3-+-bz-rartM5u0*X<*Ul#Ev@_0D_BML)0_-FL>AW>YNtYFyBVg+qjGYbIEUEvM* zFpg9rjBMzP0e}N zz=8b64Lv!A;h4d>u1(X?V;yKj7=LdZEKF3-YX+o72XE~GQS&a3U%y-)x%^O>IXhi`>-Vpezw%x0DwC6H{GtbZ+%RH+ zw71!^($&5vCu7gD#GB`}wHTBpC#%zu8TGuTJ)&^>rlzOL(%OplD|?_k^x%4-O8%!; zzox8{*O@PqQ*s=~R#Zxwk<*xAZGA;XdQ9}ic#p8Qw&s2~Mfo0KWo^04&(D_|H&RvbGkhj?LQ zsyw=MyN*u=-# zsrDosH;l(^rGeUblq%d^|ATb$tN$Z-7m*&i<3BDOG%K$ayD=)sspf;x9Be2tjyRr# zED4u5c{~LJ0{f3G_i{1uMLk*rN{fBcbQunk7{_o6fE{zt6>+*Df|-O7!7M?TD>7d* z9SN92^@u46n9}LvvVDe8F%{*4OXwS$;zUpoPKPoT55@Sxjfb*^b7_P$O2bAWGC~0^ z3jjeV%x6Uv4ME9u0dnY9nIb^L3Hp?Q1{8Iq?7)Hr5xqbPO_aqOAMSM0r-ltJ97Nyi zWnK;F&h^c5;j!yw;ZHtT{?+gPL0PSLzIM{6FfrJzozU;z?4B6dy>&C19O^kkEQDvv zMLOnKx##punY|$+dttqt(Gx*7Jsn$*){eszZE>ItGFkEY58wBn%ljX@T-Fzs%7&bd zrRAGW?{uaLJC+|5b~a<}^PDuf3)4FDBO3(TnxQ&dI)-$Y@8LZ#Jn?GGX^T748vNT>k_`y%fN!yas zg1pl27>XAMcGBomQ3p|VwkSO*1l(R(;MGQza)d6PxvN}xbfG+UDIB`lGqcJQ-o=A; zya)CJlQB6n8qLp7O_Vd!6LJziUVi>(UstYOUkD>9F=<)(17TVd(g@(NDtvWv7^w!N z`?mh+Pgz&Q$(x!SE6X>x%GAtwIdy8jtgSDU^XEI|(ribYH>*Bry3vS-!g}1$so!WE zgSQOfSLlkqET@3J4fpWO=mk$P-bOq&>ZusiX5(pEy{@uy<%uCD`${-GqJq(4VlOir zvEh#p-`q_4Qi{^C!O7Tcbmv4w4FW@~}$a>l|A0)BYu~?^ZO9;3gU*9NClB@mvskt)$u*k!slhD5g2BAIrQ-%rFf9irN^;xqmQ|DL9vuEbZ1v%#v+Wgit z&}!ddkcR7IKl@qFF5mh?KTuBTCT4wQxvXmTh}qehnK{`U^_znlSPItbtUb_HR+q}u z)L2ZF=?u_%+ zsnU7$k=9U=T_Fd7T^UNi=G?e(L$*`1XV&64C-A9(aZfI=!kbxjMhT`?u$S9_$&->HYKx4vzYi{zs(fxNH2U-(rU-7&b%~0Y^Fo z;eoTl1Ugb;(688)A5Z6^tuyN!x{R4D;44{0U=MA>J>xQYdI}hX!vBE~L9pfs`UVtz zXek4HE@D8X!JraiHqEuE`ZEf{$w^C9MB%v75rK@P9)vlZ95C|Zs3sxg!HkeYTyW%q zCpM)FhUm|{0}!P+X9$XzAm~;}sci&P5?y-O~ z*%3WXWUi1jP*cvHyAZp28(`&uP(ZDuz~9F)DuxOXOHyLUQ7cq*JWy-=8PhbvG;e9j zNz+JKzCiS!G|h~{SeaGf?RK&&KP(+Qh`K`h;Qpk@AT$s?O7+B_s*XpX1Pm?LYntj= zom?w(>KL2rtLnrWDE0VkjV~1_uy&MoGOX~$&v-_8#VcM>?mB(88k)2S$8R^V-NqIz zcdb0~$Op<#|I2?=?!ITaJpToHq&m4MZOB{TCJYBnGGl2sRy7oj%UQ@>BzG!7POXDC z8QPf%I^oj{gAk|_P01k{EAM*8W3oZZ8M?;-t3gA+2yivU9-cQ#q~BfJ@Fqu5xP9Oq|3Iuj{OBvNMvklt(Oa@4%+k( z74*Ouym1n#hi|vAVUjC|J?1GeuV`x zh-BfwA8F))Jm?{Q#7I#b`Xuq&Mjr{d10gRnRa#MGsgrW#*2;DC*az!LM36w^j~kF1 zg~W(EbfwW))X4dcFnSo*?7^nocAC|sW&k#q*UV!w<9f*poh?r5`XqY$X@D+H-Ex~i zdnYhcLv%(1=akyumL4_gs7(!3=Q3y$+ByOUoWXpU;p3nDWO?kd$I2aZXSDgh+MezR zR<#z5M}f=B%UUzVLzBHj7+m^PH{^{2@=Z+4xKB;UD6u}|^qI->@lQNb9?{w`X1T^B z_a<)#_zeLRA$c{}j3Ym)n$kV(9*sQvg1Su4K>q6Env0VxYwP1>dQNN87MIJ7tD9x% z1|4!z-?eo2tA;>*P24KQ)`Ine_~E2n&HQnK10Y%4Xm3+dABO}FnnI$mB|(oLY0rS>&7u7O+zYHgt^4`ZeF zr`Bisn?;Hti8?q5w?+eWhgt#g_)l!8Q?Q;n!<6c4e1o--dJ#wK4QI62acfN%6WWiE z#F#Zn@X?=XKjMS&-!2h6x#Q}rK(li{_f=Qk1_lw(fy;m_y%9!L;^80osBEwTwLPG* zn5Jp`4-tkH9tWE~g(|HEN5z*EL+w!`)Ij6^r~t(`WBSgLw&~ORkRSVx6G)&wWe!zG z!Lx>cArO|B|3XXwOK6B-hzur9VHRCLkh^!fD@K@nSOc*UVOtbsy%{-v#EEfrnhPne z(v4z)0&gf3K;Blwn43O$O|_Qgq@-@;WxhEwDAS)FAcQM)6MU+u@}b1Q2v5i-Lr-?4 z4>x{>Ug^V?Qj{;g1Q*o+{P6-h#5GM_`bvW!(xly=kn&icwu-=7H^TR%S(3!#87h{+ zjlX_FG_Zb4pOmBSjuYr1-S($?WwuBuJjQSv$01h(<{Opcdh?FA90?P8+}F`e%en?s zrsjtg?zniV-23_WdVSoOX00aFK4YQ$csYCa>@msGU*&*V2OT}~4B^h6Ia@l@W98K8 zdEI2|Wd%8Me*Evwr^kQlx0{ocmA+QgH`PzW4mrt(c3L~05RoPyPdM2#X=P(Y^zPDQ zzDuJ0nR4pF8JPw-W#WT=7CkJ!DGCnKGT=+?74~~^he71RxeHi;^8d5s(>(v79tTNE4CP+oqBbr(?J1A8$wLb6-7kp5FidLO~(!_L(=J9 z?OG0z#4JQmlvsc=2*@ClRYg%%RF!YM@4h<^{r!CR*}wnq{@?%3@7`CyJ@@{9zccK! z_dffav(NsWbAIPHeoWn4Go-Vs{DDDU9#~X;FX_b$mKFEVNq;QPN`@#&>C8bHoqSZj z^l4boG6_P2*6|EfnF^%7$yFM!n=QeRMmR9(8}Gy~e_ zH8klIDUZJ8QSU7+i?xn@&fwnFU%T(2*E)_qD>gldtNmHoDZ+7e%+B%OC9Ao)(ci^# zhiiN!NGA|af7E~;eN+!rB1AJK(O674^ao=uqpj^9^8%I@eLXPQR#93|2^=P&oWT|L z0rUg`S|u`>6*16{Fnp7*;nlgpKz_2du*n;JEz;E+RUG5j#m148Ai2nDX*f_(5MO7# zlol*k27%DOc&Ww=!cPH-d(x5>3kvwaO@p%76i>y0BOD%ng0+)hwLqmJ6w?P+8^+*K zaPq~lSK&<;Xyvg$O;zP*m04n<{HihQ9$~fNY21v5VRh82K9Dl-zB}gph0Y5VX@3;qxFiX-4S-qE zdA)_YJgdEUmu6JQ80A8$8PXxm>=kA`_RI;lNDQb=4ULa@pu$!|&`VRi%_^f!^6j|r zyFJS5klAa)bf6D>dn$CYg2qI~D&jc*D=Vi@b-B2xH^q;PmoXV{eWL@q3ur+N z-w5`yeZh;yQt{wPk2T_8oQ2t-&&|HtxH_7R1pVOE09<0^58H$UI$^{|oPrAb5Bg0$ zVz5hxG?JKo5S= zWCo8gepb)0hg_yg-!o|(f5Een9^7NVFj=7kwld!cf+#r(A5X9%4I$u!L*B+={Gkg| zo57%krG2`q%nlen16<;gcb0&fNFFkK^denT#ce!WJzQsw4c71L62Y=kPf%36weVng{bPq&&z z;}oer&8%>^r>9VrivcfP+n-G`)4K1QrFX+0gx5-d_PrY?lU&(lc&YyAz=YTa9B){w zU8=)+&O!~7rpHF$6%FDGS_WiRb+o?OyBi)h%FB}7_#r9y0U0vvPZF0qbvdg9P8>^Y zH156;`kQ>3xmxKPDJQR)a5w1Fu_M~{EJIZ@0J&y~g0kVDSvQX1W|OJ2_29v_;}bF)KuJn z$~B}jNR}2@>g?BX37Sb$nNwClZg7=as+GFX?N(x6!wmBwcA?s4xN1F_@yg(F=j#C&&12g@Ip)Z0$LLOHB{2 z?T?7`H854nfxHzbI+q9Kj{Tz)3}26{YnTnhx}pI*ekxz^ANX2m)rW&sAaT&gq3h{) z5s%)7zBHoX;RAe38Zj>5n3{1%j43)217Q`Nf!sGyhEA2GCy;0t#Ne?0nEN4@SVxHB zFi7YsgMtl$rYTN4#z8X%bo zz6BY@&C3>&;~E?t`Z?fi#==4Ren>#|vZkIYO%2imoZ}}We6&6sHQac2L8m^O_Gh7liC5QmM8MfRZqY*F6^HqCfzLK%HokKs&@z3@99-n0(^LtAqy5 z(29(?Pl(u=K0YJk9>@?7E-Nw&G-9f;Xu*RW;a6xe?-Thcg#HsZV)B}}qsgOW`OUXO zTq2%)G^h|(lX&1ckigfp1n8;jZOq@Rf}`Y62bUk@x>pnr@E%CuKmvOqfo2v>18W^g zE17t(Vz$addXE1Lz;c&O9(0ZWv6l^;0Z*PVd7vWw(QSVSuTcx!<9_CZJ`Y^B886A= z^c8kaT~Xd3^uHx(EaslFIH6@mK?Hb9PeL(FmQ8mhAv>HolD`(CQ+}n`G*cR7jD`?- z4z33h_*$0$r(a(!mrvGLi~a%K0|^{RV0RMmtP*3p#?Cs_HVCmZJX@p~kH2XkDD1Ba zpnIH&i$?hz{~fC1zXo;ZZN~qwEikm4iwkMc*Bx)ng@r%If0M4X*0p~a{{;vR+bz{* zfnrblN9mX!VSix1bm)`cc&bqXT-p}U4{6C`1TpVsqa;2ZlEMUqe#(g;31PTFlb;bP zl8uQ@6*6E*wNVIEWRDCg79R@5gd%^96duGA_^PSsa9jdGY_0=Fuz@^iL6C|g6iA7P zv`QZkvQes-PE5d%c5Dc)-UeV z14;)HIFP`0C6F^|l{ALsxHufp%E9zbjMcu zmCV8IKmuR$5?GOzSX%EOu&?>j9~AIF0tXV<8wqH_CI(fbk0F_Xoyh!=B#R-(cv~z= z_4rSk;Buy)EH!(8htU)hKas?Bjs0Qcq#{#(zpT}^f6Rt*2n26qf8dvMP7w1MX9_QsH z2ZM06{J8^b{shxq{>~FV{2#aj34DD>fOhW}7WS#Q2g{uMByrRzS|n)!DEl2RQUw z;n>Pm?H_2j?GHdJtZ&NS*gr;M24!Oe;@ry*A1t@xfN1E+Yf2Rlob(WMsX34M$< zza>xcaEi2-L_=VqgzMAxusrc0PU;dQn}nOQ!3YaBY$gSiAHRakyxMA*=1;R7t*?j+u&jP&X?FAaP|+VCP@ znA9SPvufi&Pt*J$R*1U-2-)U!%8@h$_g~&d3c)fKaD%0>wunkok{iqNin(y1z$y< z?OgmjjW4~xk;A$r62|{(e}D%^lK08kGB6-!N~KSl{KB6Oy#@`l7vN4x5@EEruuo6@ltJAP>DOkhU5K>riY`zD7GKg?F$J^6^ z${!+>M?R?97dQKfLPkcf0DLwDuE2mN9{Us38v06ce9ZK9?CL1FQ3*f!o0&NxAzoe3 z$q=&O#41E9%U4q6>i~mPj!saI@+oiT_v<0G!j&td6C34gJ6Ci&qWTkVfOY!axHO7) zh+{qewu&zM)>h#U;I6C${M~FCp*k#Wb-AAdlJzkly+TeO9+iJ=a7^EFq&+Kw_R_}z zOWE##;Cm+3FqH2^|$9J6=fTXdTdskq2-?X;2A& z;3bF8P}MzqDsYUQ9>1I~G+J0GL7}mK&__b(G6*FlgzvP6pi-?L^8s3LbA$$nBVScF!iWL` z6KRPRbXGq|j#U50DZ3b20UebZ(hZoV1b9FKs9adjnM)Dk5zPGJ8es>yC|_EqajSa(OmXQYD*R5So!p&FlPl3&a?O?QmFm=>)+*_wL}3+nVLI{K^mWtQX7e_$&tY7V4(TZ!> zR)YFRr@2?TWt&UYvO96EN?G#A)^^w^WBM5M=C0`on}hBdM9QNVfy;!~1%wO_+<^qX zRwPjSV{P^fm8-Rq2)LVjPXAVGeyf?X8%<9(2o>Gc8l_PDHM49z-D99$%LR6@usFS1^wFB z5sF-VT`A~?9mF(GRd5DyA^-tV;q$a_DkYHWPCn6!7z(dqDi8*g=;>(`R;pNB zc(@D~O#{E_iw>~nG7uV)@>7tg%1-&SA&?*ZD=Ijk;KKU%^MU9iFT$jmQEvEKE(gHv z4z`pP*ESdJouem>BSixlM!q@eHvEWDW> z8I4<-vnsR%HGMM+5ctrp=-Em{G1y0ug02<63X?vdRSeIhc`sTWH35Wq2-yfxI9xCr zD<5Hmn1)dY1bkpM!`!Nt_I%Pm1O>ylsluXkX#j*X-GU)oSrr$|S%?8r$p?LxpTVSZ z)fj&y8wBA;p({GmZ$2AAsaQYIzvQbtls2m@1V#Q_;fW@oh>FZ?6O=O@c+?*T7eC_o zNV;Q*1JD*M_u5oV82AV?wTY{#5zrO+wp|)?uJ3lj4*Y2#?gkf66uWVqr-j{M`FhT~ z8~JDBindx?YD<{vwQB78+_nrgeWqv)sqU8A%C?EOd%4nYe5;dW*C4z5Ub43dzDIJh z$CGs#Q~}q>bX~xMgaZkDRZ4*IpJhL^#hSiA-)0P7kwL}y>v5#^2i+L|8S5B30p*vS zC3J($9>>~}0)oEe{v@5HAfJtjaID%5Xe$!mLN+!KR{Mjn$A1RfiU#8B2ZKJgOt{D! zb^-Q}^rN$ws6i+O7DU)T@&TYY-i{v-PIhbreE^-=VeBJj@t|*6$>TkGibr31CJla5 zkk~I2Fvefyf{IavDFdB886DUiHsnYKzv(&^2>oL{v-2zrAnqL(47q{?)ua%O6xPru z7ZC80##!VK`jMN|XbB1vB?g^d8vuvtHqJ(qEOgyzLIx)hBnr@IqCAQ~ICha}IyJ`m z08yAm#g7I8CD#vrB_;;ruX(w(IC3m`+75he*PZU7wE?!_2e;dC7maP8P+^;rZ7UnV zoJ)go>VC8B+y@!l#w5J%HnL^OP<8AtbNg<$#B30n6V^w*SC$u5SN_bqKr=0=wDV=$ z*VDaQ9@{CqHTHHg9Kaq(;1MbT6uJ6BFLfXt<&~`#=V6#BLfNn?aAdV{g+9^*Pt07k z`v`q4CXPI~DhW`pCMlzbA`qmLt_p+BWW-+3akBLo;lPQnp)Zf^AEzn3f`ut3)&y(& zN3^gU!mbJW-Xd0Uw(SpD6P14DPxNEv%-Bpjxig!RSwO~BMjDRuJ0vcc2Z|h$03cDG z*fkO&3xbxV;8=4W&_Nyyw()jo6nKqMMw)P05JoNBDrBrxlLkRSaBJ>B6I7)C(?E-8 z_=BbxkXLE;2L*eh5EVFXw*T<**baR~P_NK;S+nw>r=R(90xTqbBEqo*#Ky@%G2)Gd zN&>}@tdB7Lvht!V{bo{`>a;<~vm$HVYROwMmwR2kqLnBwhuA!3Xgvlt&uWOA0^TC{ zTCk|FwQ&cbZArk>y*QDd_vHp(oSTc024umig9Yc(qG;K>t7jn@ga!XX$o)eR>&Y(3X=p%xv-&E3?FtP>{Xwo|H*e)gGNgTy9h+by@ zCO@e?n)C{R0X8SUU9!1!h3l1&?lo4!CV$FfIn` z#=&aSAi4YXI3B8o&GfOU4J8b0T!NtxU~IUzfP?_JFqR+%c(SZKaAqXB*^e+qNwZo6 zt-QrlzbqWX3fST{EEl=Tgy}g93{Y}Z8U;qfQ|%QS^heA)yvG(L#(Z@G{paZq_&xpuO5f0bjK3L61b7v;J|cts zkarkx2uI##{0Gcg!GlgCk9{5bP9Koo(+ZDpG5kA^ao4fC;$Q;C_6TtLOXCet(>LSF z!vISpH|6zyUqPckL6!Q^HV1&#ty-QHUJOXDk|wI!Dqqi1_u!bO^L*D z0Ajf+%F+yFY2i6t*%XBU!m1_RF9e%DSj~~kAM~S03{V}4z>#Xf3N}K-ma?edvNA0x zp0_?0nNh5kG;L1lENX-9Y-*Ek1oUNosuMR@-BrE*rf*YCb;fJQ9ABQ%4^`0}nnWJH zXJ>UT#fA>PVJ!R9hQK`%DL?vPH*RCv=z#T|WNp2*KEy%FfdsxPBw#%Pr)wKL?LTIV zXzQ(#;8$9Vzfv;*8dx`_3A)-`6`#`R={ZLgib;U#|5yqh^MO!*0*zGycSSK1Wm`fF zV8K|&*=VSAgeL3{lpQ7-Hj5z1kNqPYq&tp6Fy>{yt@IUX8qOjgHU|a9E@6TOobY7& z;c-M|!@1k#hgR4>$|)PdFAm6T6CM3PApD`a^!afS3iF6$SRgZ8!vsMw$6W#b(wVr0 z0)q$=vBm~ILphVe3fRaK%22r6{cqgBn%RhsD^fEnN~Ho29JDf@pg1!WAwvMp>br^fG1bJzsnv)*VfF+&~Q``8MUte3c365a)xs!rSYbPa3___9JdP zOM1Qd*)9K_C&mtT)IqwwzPei>Bf9Qce?(`#jHB z{uayN(4fvb8dCcXHNl}6s{-gB(gVq&P6!<8ZnseCxQ*o(k8iW{m&*9)c;#@ws|yRuWl(P{4A4&WB)PgWES;ru3E|z!5`|gYRJOG(hsi5ED#PlWa6_wq$lDjn zyvoaqPfCvW$`-8)3U8VTzjC@3co}LVx7soSZH$r+zPSt6lGN|Kf+G^_qC~l{uu|sB zs8||N@g#qif#v#_1mw5YQg1{rTdC;=+QDVB_PKHW?SNoc7U*ZSbtSo4cT0b>@^#bf z4(~Pn-Qw@&w>!L9`FBH~7MKs|Hk34$p#5zVaNZ)!^beG|1&xn$m&(9!OIOq-CEuiP zJfvqp*+Rn^oA5;cj&ExkY4jn+I*m6T@)*aOe2#`Y$1wgwnSLBAT=YSuso_Bqt_{Gz zj9>pAQ-wQ>HE?IYYuP`71~_;Hro%z_h)Mg0d)hzH2>N_cAZN?qq(dKn*kAA}ZKMcE zlygSRl#;1{5E1tzA429WNee&(!a-2~^foClmjA3ki8Px|3?)}{I0Jl`G2N(9;frDs zAGnOde$v4U3<84}@Pk`7)8Q^>C7o#^BD{#l@kB$n&AWoun>N^7Wr3~1BLKTfv&pN& zK85+v;%b>#>MIkPR`UtL0vpwU*QcLOwypeuAmpS`sEk=oDvOlt8YM;LRYwO}=73A# zL9r8V6uiq!k*X&%xo}OO=8ZzTI7$k7lC<%Wrr%|F+{KV|3yu<0W78I&%IA&+&q1Rp zY{du7jmp>Iw6`ymxayC3uLVdy;Z7MY&)JQdlAxsJGdfv8<{=yn4nAKmfYVc>eX zE%8T2WLWt~TzQYSu|EEU3;Jsdi%~GQIw$n2I#6|`49gf=Ry$i!Bkmhgxs_>kd0qy> ztct2MB>yczaHr`(@UbSb~G%_r~BgSg5Jzl=|)vX$jQhGHLHMJ zpZLRJUgFq;yOHbHAl2>Y^XW7PUzQf(IQ=^$yq)abDsSu?p*f^nNVuGFteI_xi z0mYcnlC{!r>>pBE!nCdh&h)`dIv~0TpZ*;t#U9h=5^zweW}+wo9BD|?`}$D3Oat1o zB#(_C7^Y~E0b+zQ1|+Dc6&n#E02gAASsMzPE-SCHlhMALaeS3wWJ;U`V&P^k-K#(v z`a(d77;ei2L;_$+t=gonQJF)#I&YzWa1ln+)I zAO|$?P%nf71cQ!x5?)8BW+^5BIM-39%tS@4MomYUn82y4AwUkk#4{+IOaW8An9ff6 z9fc0yci>I)29Dz?Ernr|3M6V?iH9@TCnWhp48Uj0R=gz%x-sLh3UXFl-f$C?N7$qan(OQF{U=Gb}an! zn!cNr!L)*=9KcYV5uqXLIQnBaq$0;n0?jt#xE)-;%IqCq8?c5F-o@D^%{nN-WphvT zqrFdHSA7E+PD?XOW<)ZneASe0zSc|ki&H8)ZY>5CPn~OpX;sp8h~Jqv$nUzX`a5Ao z+1_^APU#1Zj^0Wd(PuQuXaxiVAGa6fzuNNMYx@1@3H1ZU3FPOtsruw>FKh~)cvdv? zeewKCxj5B(`+{up8%2%&r&}6D=rO<|nOS4} zcf6v~0Rnv<%xwQCr*Sf?CSw!&Ug^`_Z3(ja3p~}PsA(~)j{Soi(g`1fl*)$T<@n?a z+7%y;7@PBJG^#K{wpZ_sZwz$$|P2yyk60SmIm!$cT0!3=A@VHhcsxX83FB$YhH z6Egx$68IgW5=1}P1WwN2h(%ufV#Ix_Mp%dfLVy^Su_2L+H~~rG&ZiL5o_xU7Vdqz} z?lBzI@*{Avk+0#f(yu5hXN2_3tHESwpv=k`8P-$qfE4bc@-K-NhS<>Xu<=nj3_OD# z0TT0y_OekPRgie+jOTaX zxdI|^2T#Ex%TBZe264#=15vNGhCv*85>JL0@ZGqn*IK?*kjykx3opa;B%n4>dFyUtHn>%Wel20L4CLa(uvUhLC3p13f@aus_l^MREzg<* zh`tj?;OtW$WKh|SGv1yEgnJ#)^#tEZq;x{el1AT36vX)6*#?@Sb!u>WZFyRvJ*h}x{pP+#KLl%COs~}3b z6jSkVuUJM;pNDuHij0#hqfr4~4tC_kbhQI3{ioKAsEgu zO3HvR3&9Hog#1vfMi~Z?9@GT@3(Gpp4;NQ^tDhM(p{hzg2e@jB2cWO(55gof)0KHC zA1=aCUi0nvC{z{=$jIv~8p>&=#6>=EF$=cZAIm>&nM95dQx23F*L`OUOuo9);L~+N zUG#9ICH~9h*Gr~>Bw_PTY@5z{{%#h4(^SKT{HN^Ow9=n<@b>Z(*I#Fex@FM`2UqLn zSDTDl54iS~7RJ6O+Pa?9)Tc2Tw9uyTxPBvA>LX6`JlZ3+pf0KQ%b97K^%+x@uo5@K zK9ltbw2AfbV`wZa&WZ3)SzgeroD4yl`#>2hM*7PQ z-FwtG>1&=%x}1QUwW5`^r{jUGOkXMsD$n@Hi1)ztW2DaNA!J&G(*eH7MGQ#-EJe~| zX_LMgXFs!xsZ1QRwM#5{4#+-~tj9-Hem&UDYcZAmelk}3WhgIQQoU%eAVy(42+{L{nA-kWtYwIT0`(likoGtX^03Ow?6$f$;k(J%Gs&eWPU`kiDS`K*eA0 zWJo;`^{oVxqEE>~7TwGtc=+k!mjP#l8e&uTGia-`P)OGDB7q$v%&?lea zl2P5UuVmj!F_Bgo2xI~$te@9sU3vwCyu-BYW=V#;fcl$O5JPoPRwAL#z03K?4OOR&`4-PU3HMfGc7=RrHl3= z`@kkNPbU9`=`WRYmmbn|w-!3*9}x0I8Ht)<)YLfa30mD+x`DPX;{BR6U%|+AALx{- z?OR4>>$-t*XiP6m2*sr-8H3UOaurK8K`Ig~ zE4PFD zx5HoZ;@QtCvt_lnjqnd3-!&Bk#c)e%Q+k96q9@iau?ULQ{C{jW!_zOLecsj6}DCJH$0xhkA1#XV1z~nLK)=OdRRg{;-j9 z=*X>F_8XI~P&-mLj2UPdR?_Uqp=ueLn{ZSX+Ws1~UiyGGqx26Cm8na!ddu=ix%u(m zP;PnROu6CFHwxcO85%oOhBTuVPV?q|sR4Z;KlJ)o7VWg@fNNh#U(cb|FGyEtQ}wa& z^2FP}p)Bawk+H+ql}j?3#}AFiEQBP4HbPbm7?rT@>SGKLS#HH_+pU@2=#jhbN$Zhv z<)gA2?WR24T!FJ?9IQ!3@voPbfV(aK)t2vG(>MO8Fj}V0GtgB+&t|I4l~d=X=ZCK? zV@IO~9SCxOvcci_15prJtxV=P=C z2>U}!Dw>oS2V2O|bEeN2#28lrHOw}qM8k8p{UZ*93Z8;KG@#OPd=DA5O!++y1{Vq; zIK@MxMZZc8260i`*x*jkXowDHx~OO<#GM==Xj65mlL7icleaPg0O%Uw8+XlXyp&Ds zVlf~b(m{x8(^tT9QW9huLKF^RDl+BhfeOROP>2lSG&vgll{1lxbkinRC2y|~g9rD9 za}So^zFSK(=gyZ2jUsGzW^NL7O8*~X5S5`qJ7Y*OV^X^PQo^jf`q?;f8{^tb4zM{u zv(XjDdOt?)2phkt*lr^&(WtUR25Br+nJFES=5kucILnd+Q-u7Zq03Kw!V3by09?>C zcJ#>LE6PVE1~OcC;mAug0~Gi&pM#fO1_nDF`?5sxYpH5Cj&H{`ZL1rR%GuA+6LJ{) zIpfgwuaJKO*S!~M1JIsH?TyU_*HvfrFl)w1?A1G5_`bz0vm@S77jg~nbnK3qTLN8?lpcw5&n3 z=S!FLdcJ0*`eZP#>V9Z)qTKi8{_=qjE|lke>wnNp*0h#8wKuC@d&JaUc-X#pT;|9zLrkG|p!<^KD>ESbp2Qa|HSf|)g* zfN?9xP5pgolbN)&_0{3WKKiCS3yTBgmdAcmdB;0GBKe=y`EY+w9(>>)*GJ##n0mL4 z0xyIF`Z#<&o zQ3%#h^_XM~EFO#n0gxHfC5#N+9a)juAIK@QV=0ugfvsE8#04C0E9HQX;NmR}@`^qT zfSVtKCG^D?%!GlMSh$m?!pev6s2M~7eR6;U#Rfj3CEcil4$x8YF>TtOzBsLc>u@=9=HYVt)1Fp7`X}!#pZdc;DUUmOvRprTq%6;Ii~>fOergp= zlWMq?42cs_xsDMQ;X2l6fR4D(jfC;o+~K+$Q;7nx57G8phj-mcur} z58OuSNk3_J%kcA``AqrJ7rs!Q`+^sg$-{?T-sR=k2REX9RLeT!Y(xAT48ka}K5fJw zWdGCB#WFG>!$S`lgJ&<4Z@lTr<=t=jKg;S}ca?MJ{<=Kr*6YespMHHgbHD2U>{Pko z)Ji#feo8Z4dQoO!LB~amnm3HL0U2IPY9r&L!%CB3qx#{AL{~ZWGd+DT)do1CzSe(4 z(Y2lSY37f9_I=;|D1i>@A>gR)C)7vc2|ap|qSQXY)qc4J?Avju37LNSTP?>ApA-*E z<-~2vjnG=U)bP0S$Z@LX=FW&LvN6V-G`u_6X_x*+7hsuegPbk+O{lPLneP20#{i$+c z;ez_Els0`C16A@uWpjWw{0u`HYRI^{>~jQZf9L_yiO)3p4ejW}iR0z&yZ^d;@Pl`j zXFl`U<#CU@MQ63~Iuvj_IsJNZaj{HF=grUS{rTFzxo7{#dz8LI&q!MI36GAB$?%=={oJ`TWnyAd;o0)h zkA6`8qbm2en8utQN`|FpkjtQWK!0aHPu|z!myUG*3i)Ol_kDstRBi#N$-#@i^W_DNkzHe<~UO`j(swWTNUv`Dc z_r%+tR^IvUH;BajCgX92E<`uhomL%Vl**%a?s5x{2nmLs{pYH^5 z9{&|hT0nPT6vv;P;QZ2q!ssY(*P@N-PbA&fJfo#D*f68d$$+x`)9G$P74(~HrLP_f zrl19n=2vBv7g%QZng@T%C$`YZ?B}<<1t%X4M!fuMWsa=QBA4^K_((Y z;Nl{160KiUvLRHa;LY@fBm}62CqXsz$>uVFKtNUQV0g~6pHp7@${+XMoTEpN3ZDij zDHu8=`%%WU=cL`K5I$j?D?$XLDs>flrd>%#F*8%eRP99>X-5tpE%)AcuMMz|-gJHW zxetA)eA}s0r35x|C_Rd6wglK+e#*L0 z`m_up29*20{N?iT_x^Et^6j^mpLx|kEfa^d3?mVe>40(f5s(^QsnY#?sLEx z{O#ZRt@7Y!K3jh9yS}^p@JnB6#Z9}Oml8jI;>51#XIp?e<>+>=c-hO#+(Um;e)=E( zlXCl0ZkH^=C>+v~I)mtD^5s?dR;?R-r;M5jo7X|MdY$q7#fPhr|F_vyQmqv|?fwz>0 z9=_muI(ChW0~rFBX6MVq*pYH{^5*iXPY#!tz4F(*9fE@vZ~2B3<=6h*&qyf`l#80N zJghu2!+j_=G|(2Ybs{+NIf|OK@Jma{MC;B>O3nr$Uu28?(n#aQrQi7fexuxX|NG1T z_7DGd`Jo^BA+>{X4eSesIjZd(-7f2i`0OWbn09(Qz75auL-73K@BMzYoBPUZfA&Yp zO^jUg%TR~@@#9CDzGVZrB4dRjo#{9A7O`#mGcwK&jUSQ@y(oihqCE7_LweYm zEce`fPkH&vKUuE7{+jYD|K?TRbBSR%ramyJ*>jAv*_j!I*_pZ4wehnQ*6rH-&CV_O zAtv-tzjek(KJwx6`Op7xdEpD6UViT9UZ;wbfj~o%1GiyoJ7Z5GZoT?NjvJ+;zmO5z zI(Vr2)nEP9@^60iljR@%*xxNred<%CM<;?FbR~OS@_?VVl69PQMtn0vr+xtpN7&#J zhi4=dp1w4%hq|-nnp4-84}9Ra%b)#e7->y?V)$sB;akAc3Lc^~>br4!j1RQpfl99d zCmX7XYf@DXAya%fmCAjFhU8dXvbXvn)p7<`jQ1Wwxd;uL49utewtteoL>~4B7@MM6MK+ABuMrS(Ra_)4w zK{FaIqm&ifhSanq-*_^jjFcp48j&uhr7I29l|;lERuzGec*4?==;tKQ`!3Fvk81DT z{Zd}HO&l&mlPEAXAHj77&Y%GA?%)~(E^|%!1yhyG8kko4aVb>X!ov@hIX!_c%Rs#K z434;5}_pKb~lDC?&%DP98Z@j)=#(GiP*Y@nX5TJ!pxCd^>jy z58I&c9rCTrspQ;w6@OSf3~Ru;X>zjMsKKV&ZAL$|Oyr9CKp{rih#ejuQ7c%{Op@em z!(OvF+J`oveNsyo&y`1wO_T`@S_}71m0y43ZJG0*LFLzT$tmfsl|g6Cu|tNoe{qib&;e0N=w3Tw?nVc z7y8vtdZh!OGTbP=e+-R*gK*0wKd27ThgRD;jwn7Uf~)X;;*A2UjOt$+7$2iUY5O!w zsd;zFb-ElsrFvBV`0KmxD*xga-d8^VH|NW(&wN6;|4XOKO#gHlKCE^q!|TYT48)ab z@AA>KwaN6Uyo1tbt2PXm%b$Jl!{u#n`;X<1-}~Ro*|Xb0@g2`AKl-CTT<*Bz z+13U5AYuf%pmzqTGwu5wmws7XI9nck@LtVcoh#RzU=Q80UT8pn@R)unv&o+tF`^g% zb6+trz0#vKL>e$Gr{g#{-L6l2@)pm^7@937kCR3`FI!MAGBET%EAba$8 zr4cU(MHq~%%$N}uSaf$@#npBh_K&~?fPn^u$_|*Ek^JUeK<*L3(bzwvK@WW3AdkZE zMVPncZC6$N!ARv(AUt!TE3t60CdjJZ9|e-%xPvjS0#zoL%Gjci&2p!Ck-8NV5T;~2 zSfo`75txTx3S(h`PtMHafrAt_F#H=-7voa0yy^O-piHZUFX#)A=_jx$+IETjLMEd5 z4gmCl4C9Vw88KD13JKnoEGY9B97Kak8rsVuqhXaLHzoILX@N5G6v#{(j+u=0ozlpI zv+=1rh!h7o@-% zw?yOgh8qbY<7||utfXP&spK7}viT4OZLUULKQtpFO>gyme)>YWMf-<_gu7p}Yq)0W zR%I4xyY@7C#B^U9j=B>Zo}ZhEv$QlbGpDCw!ckXxy<4+v~U?iMx$BMfvbzND!t38eRx_b!T96JbihY2INLgxP3UL6UzR%rxG385qJ8ngIYH1y zbuORE%?#R-44`2>`ET8!OxKofQEy%G5)1pybkIdv9?|TDKKaB`$ znez-UOd^WfE-JRQ~Tb{QGi7GuP+!Fi08-%?)v>YpmtYx(X?+9OzwoWQ;+ul}9?TK?02`i=6-zx<2k$AA1)QLL^j zB8#S=*_~OdbqSpn4+5P3hCZWs>DvBIT(n8Tz0(7-J1xU2+K<<_I$UN{UcTRg zyQJA4mf0|jN3{~Mk)x%iOPm?z&QiSfpz4n^`K*{!U$fJFW$N5~xgg_kaZWf`hE|!G z(PAcvJF`#L=@nrw{0yh*dZo{6=9HO1R#h-?Mp%B-5igf6>MI`o<7&+q?1|y>`+7|~ zA@khI40qqzv&c#eWkFXi&C4hkeeTrt@ZjYSer+6U#)8ZEjFC7y5Z#~~WQpUckg4i( zT4hexv>JCm>X7kEeGLTqF&f!`B11>SZugNFASEzv>2479H;-aQLVSRL!bo}G13&S3 zcScHCu_``7;zl^@IXsC3~+aDc~CqQ&~i{TX=d89TFEMmVH`+M0tCk5GjaTm z;MzFUxka7yg9XE;l?$+^JxMc?$PV|x5LCeuLb64jj3P!g6c;)eip-$G0(VXYl0IAm zhilPtBZydEPo6rV?-(LloM;Gkn8QG8wK;l&3kI#7^0ml_bj0`Z23_*OejUZf1i0#p z^61dfWxa8>qD{?|BQ1K~$OR$eRKCjVR-3%25_!2F$I=r`j|SAxB0;hkR0q@Cf9cnr zqp`7(GN`xR4k_F4NX+ihz*5BP+8f~7sjJA3X@+1z8_ExBW-AS|(QO$h>oCw3dJBXX z0x&vxabZleOyi<^m{~NzZ_hAlA?@W|hkk`ZyX zYd=ta`WK$Bw;;9TysV{m8Dk5Y5oUiE1KglKL>YQQOLH_pwINy<3XUm!oO>JtvHOnF zAg;80QNq1gpsN^BXxnsHKRE7+w|?=blOno(B@JgB?S$$N-K3u19tj&-;s66MRGL_; z9%Lg&UO$kk!&&jhBd}6rXwr$arpr+!CvG~W35?k?duFCwtL3|L>~ZC5E=p1*RwR34O?;>@h1c$dVt2M3x^Z@`1ncnUmfsz_!`Ak z5d+uyr0it>#kNU`+>;> zbbuSZu6Q-11qm92B5Z3A)2jOzlNCYVt@*c6ob@sl2?bp;W^5WJP3q>>+LcY^>t3+>DmLyPmEBYG+r zd&9y3C;T<9t=GsJ@svb08q=PF6dw#2;KGWxaTiPq4xH4M@{rF^x=}KsMs;meEx zqHE*M>8(y2vuBi-O|MtR(Xwz^esMuXi|;wj%~!H!AdDPgB>P#| zas*f6RIxP3!Ra91!;o9jfD%;)rgXgRrw_>M$^Oz5LxlFm%xN&zX5zz|Eg2O%GC*G$oc z3sdE+>pJ8`U9g9R4Z*u|>(Eb}*vQj5aCJsAEHH%e$cFRA(ImF%IwbW8s1W>}O5wkZxw){Vzzqfq;&NJnwU;VD~hF^P8d7PF^ z4v(sBXkaH_NB{sp07*naR8#zta1E=jPGF!#{89PP7iY?;?|Mvm z;*UJ7JT(5WX57x|#UtfV-_qQpkxV^wt{lGZm_jbN=ZwTDk}dCf_aBzir%#usTzg|J z+}az4+uuBRUwPLb{6YD)4UM!Fec|C^nYuWoWw3|Dan!?FY#W85KWqfiGfe_VPBU|& zd**?1_JU~l-RyJWfNu}(J@aodk~e@c06eBhb_<#^9MrP@R~~wxoLAip>4D;bhaN09 zTz|c1&)92)j4>D(WC!UR8#&tJ794L+FKPecs2+AN&7GIb&zGrbt-@>}@5Ue-(}!-h zWn}s{dim`9h4XqS&{sC7Yd5u>a}j$pH|8)?*%#P$?<V=|AGZx&vOMJ!l^ux9D7s zic4f_?2o_)0G(Xr0UufD)A~~n)EERV#mnjeiq1}-img?|&^kzSDk-4wJzfF|yoPaJ zrHdqzj~tmBKEh#O(NmFe9Q-dxmB;Xuf!y3$_6IEw7uYC?{=#ou2CsRH zC)JJUt89j`U}~icKL$pcwdAxBB%x5DmK`M_Z%0E{7O28-V`DKz&+^kwTuR3+tA!v- zZ(-JWKK9Ixp5w=kmP1k=C>R`HQDhH`s!r^3?59`;0bvce#8I{!%3rKUnfW@PZ@_Q>YU)GwKOt2yj*lZy1v~=huTDu3C~WQ0AxU$zn3VK zIh7}G%?{~__lh|cwWo8NQHo?Tt|baOkULR@M>@l;r^KE(wi3A>{hF6Sf`epF9@mqv zV7(+uo)&*wA+sI~Z|>4lv>2oEY1K!wINr~wzA>SFa4b+Z9f&@{*=;BeCcbDN^fzW0kLwM}GH_k_)CVt>*T3~+R z@m=NO_1d3wZd$W!nq84D>6?{OrzT|g9zJ!oq%e z&)s*Ybk+gw*M2SDpyh-1^mXL9Urrk-)R&Kn&yy#@7#*%}TQj)&fuz1Yx;{r6>w;Vk ztTkW8Mq>H&8qGi+(yG8wE!m$qdQ7EO$y){)`Pvh#z3FG;%zJMrV(Dk0uUE>^Bbu2X zAJSepN;zcO{baoMxq&|e05;AxzCj13MoJfzP=1A{Ju znEGH~mEU78{Yqd6%YB!0BKXOrt^mL=#L3ohGCdQgD{%q3xuYRU|i~kel{u)CQ|U!Ou9{JmIFEM^cOO# zbX=Ye?rvYa?%wZN6%M@mlDeVl?)8Vk>CId#V@$(y0T)*Bl8`55xVIY)F96$T@ zG>M_co(?wiGGoRQ{FnxWL&`UqUgOInJV(C9fP93umq*(9S)vrBMI9d7iq ztdQ3Ze?9`C(qPZiunf}yEdhcr({_s6`MQOi;a20IPw-^t*)^r}YQ7yXJ1kd|FX^pw zpVOO@Jb`nT*qWChOnaB~sX^XG^b;)Bk_>&lB%*0yHOskjVeYivE*;SpMzl2ey{vdS7t&e46^)A1y zj6vi+hC(79#mt>qTE*!IjF@WEU7I=h{1jaxeyBk`R7i>YC*GHNHlVNCDuRFV>zCo~ z`(^29TV+AxHWgC+%rNt-joS|}lDWExe?ga$1@}ub8f}LP#{8=6aI~uLaO%YC@>id^ zRDS&R?<&9ht}mBs?zpKu>*v0`oWAZ%Iep=@PVbOGAmF8krgb>9_L(Z@eWxFE`B+kg zrrA?@2SkT$4Yxeu@#Vp;nF&FyabKC5Dvy8sEsAp?*SV{hn!TiL?`-yJBix&%i8B>& zS+A>3Uu07|1;yxM{$JmQ)mDxSuYVWF791-bZAX9N$I%?q(^Jt7Z75J{!8dI){k`vC z?C`ukk5Q&zVNh?4N_T5we0C-_uJp#end~wh9@cmCLCTIE!TI4rciv3jy@Ll_-Xqk$ zGQN12eZmb?3nBg*4C9M{U>z3;HQDIb+CL!;!-LobHkj$7IhasN`fP1T`e+3! z0+s}+#1wg`n?QmbnA$`wQB?55q|Xll1iwg;iZac0-<+-sYUB?Gju4e%KrVzSYjA{1 zXoZjh1CzNEedT5?I5{F6<1PwT^Vc$(5*<$bTd+>1bHS;&pxg?&{H9RzD@~d7OGh50 z(~098GeRDa%wNLp;BG{nd=2%C7k=VK^~BBiWBRB?m%BGxR)9GrV41tt0 z8cWu!Hq^QZHC}N2j0SQGv}&iRq`GTQul8yvj`ObOrAR$UXhW|yK%;t?Ifha?XbJedHe?^==mK{(4MZ{m7BE(XcSHwU z`b|l_a6wz;_ziSHup%BhO|%(MoalC}cHK(9GHuLKP=V{+2Ae2my`Xn+dGBa_NAr!% zejQ^{E=pi5&8pZOkuf!+r7eAp;Lzxia{uR6%Zq;acgtPMaq=HLt~}`9=X*e^2LGdLIFh{XlwkX`;PntTO)rPyHE_6Tp@hFeSn>y|b zA$63?mSKMYQ}ck^2&6PHE`Y5lL+2zQN!UFJ9Yi~pP|eraKjK6n?9fZSXeiNyU05JW)o#M0dBi?&bwr)JrrNn&?)ck z`+gLP0i~@#lZPuoo7Rm(UGT%@T@5{EzZ^@uJ$chajzQn;I>m$T5 zP^5v@W(fsiC8Ef@I~|$mAxPgg_3YhIS*$wFV@7-P<}T@w*kcp=ZsDo&$qx^ezxzM` z=W=dxpj`Xh$CPKi^p3K6Y(+1BNDKN5EEM(j-0NQVI=$8T>hj~`lRXVIuzic(1}7c3 zpa1!vUzY%Fi#EkC2FZ0n_aq^Wrz_d6H)6C+r|sV;&y`BsZ+dOM(-Uu19TKk|7)U`VHM?gDL{f`w5ob3*I!=NFC=_5J!QTl9q{1+fr6m?+&F z;^rG!fQ(_2To{)~C zEnJ5I5iCdm;bPnYPqZCDG2^vw_R3WBl#TpULw@GPc`~E!rVp)F`N@N9u9nNeI`3DD zkEZ=xEe5U<-IV)&E4Vhj z*}n3{k6kQ3^|S9U_uMxo$jLHzd{VkX{e@{EX6feS(f%y#AZBZs;|;}BJLR4iXgvaS z=w81r_*5Q_7SA>`rL;$wA(So=ibWZr^LnvnQfJGRbETaAQh)iufAl-$3tDMfdE&|P z^q=^)a_L4L5_>d0OyAxE)kSUH;J^R%UoZdq&2KKRIeBe)!X|qnNeAvtZ+cUC``h2X zE>05mtzE6d#nq<24qI0=`f8T3O&f#l>bpAr)_&zNyc$+?$Fx6UxTk+cmy6@S@T(6x zI_wYBlVUwy*XT~SrnuGq04nVdkN=TTsI1{guJ#YOq_@mKtTNdC5pqb`{!vh5hl_TVV~wE zZMeWN+2lN3*}@WD(wWY4bqGpWj6RCwyhemC_%MJ7dD;)W6u(*s0k24f&0R1ZIE^>( zn@^`Pof`BFROuV1aRZ-76k+C!NOCeY^WXDn8}NN_?ZJ8<$gLr9HEFM5jginS%A=S05`?V?ZRNDr`iy^k}rwDf&ad*z;{{`b-++*ZC}S)0^9c)I-9 z%idAG^c9`(K08=OuREfXDAadQzV5r~`#LUTQ1+SksiY!$BnWoPJg7W2&}s&K`iin$ zn4YtNcI;YxUTXeO`OIhZX{(q0m-2a)cj8%(D&PG2?=0u9pDqiBm&(PNDIHBBgO~4u zB9|>X&INqi+ul~5DC28011(Vk2mD*#`c~~_?fQ0N0_jfs_8YgYxc%_9jfef9mo(@{ z`%U{w_uVYZcJI{newY1n9vN@zn65;R)7rP@NCVd~R|&nw|9}U)d;C|JtTt{cHV^Bv zKZGCaBS!hP^qqzApLSvTT+E>8YgSD7F0+3igZ%?spo=UZt60pZ5h{PRKf+Rq3~7JB zb8r?jjKR4u3jy$${K7 zSR5>8KRa7q@si&xpT0}y@C|6$Q*U(XaE>x3)I0^F>ISsOkIolQ%U{I;#8{J|y2#AL zoL-Y>1LxFG`O*U;<$r(u2g>{Jn<>{k|Jw4**F3#kJbXb*y{HbAAA^Vks9SFnZbb?Y zKKyX`$VWa>Ue3X_+i<{>k53{UxC041QX~*dmoff&$;&foYsX(ENId>~fDYS1QQ?Sl zyn!Gd6Fwu3e1TArre8yK{7?EOC;E8@8*~D%L(L zMVa8Pp=*W}a-P)8N;iASqrx$j7mC{?EA`l@2ZCV4H~Udz%_{SbwQiP%`kG3Pc{fOm;0SezF^jM5Y)(dJbxh}VWeq;R8dz^kyu zK_2IJRuPYZz%!d9gbX7Q{Z9ESvkA3t_v~1C-#5Ztgt9YqMSsl)Q||k%Y}@pbhbtv)H~SVc zx<&08Ue&`cLs2ZN(%G5DQ!U0B9}=Lq42<;Y95sFa@4}h#M0LD>__)WHZy7#PPJe8= z{M5_-b2)wAQGJ4EvJ4N5`D5rSdedx0Z`6ULpBbpD?otBX_b$e&9*bC%4N{WI)my47 zdM#pRW~_Yju9fog*Zo2H+^oKP`VGV7+yC`;!tO!Q6)bSsD8o&*gS+PGneks~cAQfD}I{qsTgy=nv4l)AL8e9;L z=&*kj(7&}Ad5yc8gEdcLvHbynVFas$EWhc<-Z37d(Q!l7{^3|iX9_DXu0)YJV8AGo zi$LO6N#Q3p@`-dsMqE-!yhMcngr(+lW}-8!yN$54-h|KPNRCz5mia_ZyMPka+$W+; zt~cej9yJny)_YSrGivg|uG0N<X0^RE7__%@HbBSMaR}mj2$T#FAbG@?p-cF@w4wPAN}G~SvYy9 zeCHd#t*qR9Rwr}luv#5E(yxPJy=_Ei{SEf>QTsTKp;1f?-t|4tc*Zk!{6!PKghKvq zN86%J@w*y(((?SWy=m9or41dQvHL~yYSBx&+%e2jk1&(A-(_#}Vt@8~b*UVu8UH!B z*{(hQyW1(P+8AwIYiHGJN>yhjQS+vvq1=v7`q&9Io9S!(7l;~4>;tonhVdZ2I`)r| z8c*0ivP>#(p&}x^F&!HGst3wQa?+PS;nMz5O_>M4l72PhWWl)r%DmvK%|Oou*{sxTX(%2DxUROH+36^=Y9dKsdIPD7XJSAMkt$Kq?uJMrf3fO-tSJjZiDr>PHX+9VtIuo~-- zTiIY7xK1nJKvdyaTk9}g8NaM#TaQ@MGFscgM=F?9I_>nG_}w0MXnAJdo!&R&x4Vqp z;mz`InyxBxPgqlaHxQqtN3HTg5eFUXkO_V7l`l=`qsg3crnYf(=ulah(kH^k^&LbV zbUdPcPtVXt+h29-6U&Pq^;msK{6hKXuleKhrL#KK{+dUZh4WKobZMsa>2p%ETKW@O z^+y`2kZb>%PO#7(F9rDY0H@EJFZbH&k5=WgW@RMiGu>t7q>Z|rcBj;K=|@xfp+%Hu z^`H~I3;kf+I#xrSONX8=mbnG(&QoXO6O(gue2z^Sbw=6jxsmdNFMp4|B%tNr7u-

-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

em9s&k)}lq2-hxz` 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 Hu0mjf&2pBj literal 127023 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 z z^i-BpMI5KM>Gs_3{O$5YjvtXh2xo8C)&6iL=JPwMt$h~#_sU~efouu1gxb{SO4ZfX z&gTKOFOTlNtK1*a6tM^JW2U)$O_2NzD-s$>PQ5SoD6ydqAU{ADOqbCZFWbm3Zct#XEFxmz-bn! zQ#*_BIA6&zotoi#eVD6};2^xsGYL4xpHGD_9etRk^uEKP9}T4DdyNwECdkyzEm}9R zfFEf<2}d%-bx2A-S($BH#X}C#*c1o@@Teb~6;38!NnopO#Y75sVH9~3&3tm?2ifHn zbOYg1c$te#_r0lW$lTjC2fqMoGl*ee?}u;AI+PB-Y`~&_oPP6f=8_qpckQvp3E`X% z@kO={FT)64W?;jb89+u80xcZ&cNy?vetB)WMQEM@l%rs~q=(`=mr%^T55;;aZK#;RmA;Ugpy= zOEjbLgacxT9;oUMliiykqje=lZ9KUAp|xC_*4pIgV|^-?+HUoc0m}wfA@ALc!9=N5 zMx)Zum^Wvz=A9ePC8|1ZcR1q?SZf<%Wr?q5m4_3UY zDXh~WABV9gGEeLXjYLQRN;+_Nk)qAW=tuLmAWq!5Wp|@wd7x49A9dhW8*K~G+-MdE zjYf@VIk&@MQX;>O`X2Af0f=R3ekZrl32lg8?s%O0EhT=+P$m0=2Mbr7}|uTuRU91g2?PH z2qY1pHt8~X5jfG9HFf`xpi1Dg(xW{)+wXlzyVsr}dGBCG$Fw ztFr*7CRJc8P?f{xb#1lURNM91r|r7)AM3fFJ5G_2JG`tk za`jtSy*V9U&8r{!ZEA9Xc6iual>PnyY%~-*rB8j%ie|F=cYL(q$nw3g{5E|3EvwHo z@K+uSi=EjiMI7ZOA?P;_6r;f?a4~NJEq;ViJ60ZVPJ*f}*d)kX>K;T>GfM&Q^@fhr zYSuxll~_A*?&d+Vs=y`quH%kMS!EO)37Gco1z*_mj2WsrG-o;viI1r^C3|ZYreab- zqTg>`9HuBowyP$ba{7xDW}3;O1C0eJXa2+B^p|M|t@B9vj~ zInSvSlFU{snarI4Uq~m93Y9^iovD%qn7k!1%;~-EVbct^ltW9 z-8xZ*olv5bnQ38}rZ`8CDIM7VJNSY)f8<~MD9R>1r-K9yit%d$>zpm*w9nF!9fyu0ih<2ttvhD zP~gqG5E@}mABfr~B?Vk}n^XmMFK@CpNcb2K3VFEu_J2ZtPv$7GmO%y9VJ4KVShVfK~d<-DBhF#*Qh z^xoI*R9TB6i<6lbqWM;`6%Ru-pB#jH1vH*fmfzuNt@Dq`&a}l4O2eaTej5k7bp)Xq zp5r}^hs=LYO!<2VwE%QvF?4F0#z%c`p46vxF8mEQ`89C}v=T|9lj|uWx`sm2E=MmVm;I?L+6q+rSF3Bxpf2g2(sf^_k zBbjkW8$Wj{A8Y&DLosmC`Pgv0fP2KiK5~c;&(amL*?w6`!6PVf-V>B2XEmn2UzZJO zo|YjDl^p&XRr7s*^8L|voYY-UjDX$-L479ZDHMFNxIImY|Kx40^Q%o8Lkqb1vV+fp zkwK_iqAx+48m{p4F7O|j6&jJ-;vpQPH6)b|E-`1QyN@^dzH~8or*~D6T^WDi-2c{( zD{{0F2UTT57+Xs{KlYYR2}>KJ4C1T=nwdZ8RtshDEc^Y1A!lkCh|wYyq9J{!t5&6i zlOEW*sm&%OH9h(SK4)BO?H1*_4ZHBn_W+ubw8<7zOR6yLxgeR$5hf+)F<7m9T@})$ zlY9p7bUg|HU=nco{T*1f-UU9{yQl@~h@EO=1*Vb7{u0C`a|ZYk32?|t=>bvlgHwpC zt0DM_Nt;FBMmECDUsBg>!*hHA?L_`pK8xoJ34u}m0{=Shwh#gVMC{Gzf5Zd6dbwR* z?w*2}u%$(kMqH5k7#L~gai9+Nc@3VU=cM_`4H+pD!BAUp#O*mmu)m%_Ih}}9sNTQ! z*|~1NX2y@bFeg>WlZovHfRu*F`5DQ&;QEG6P4hsg+B@okBAoq5OL3;Nv9N1$5+=Yv=d1j1=zV-f?igd%+mcUo~7 znR=%Jxv$%)`v&`aZY|eolFWbwcxJBwQ7SQ!8#o?;)Q!pg8MsmC6KC?@vKXZiDd9@{ zlC9XRmU1%GuFn|V7kZpyeu+&7wzEe9FR4{q9q>N{Ry^L7lt2d_Ngc*MUR1Si*@iNO z{uyY6po_i=u?iT*oIz&Cu)zE9GfLi9`9nAai&)OYGqgjx0>OB+wv&5}v66YnxqgHY zQ_`dqD|Ez3OaULOc&FGDN^B;5r4PVB7B2lEWGC}RI}7R$QI*bz!f@6d)ZL>dYUt3O zs=@Eq(l0rOkI2jJdwnhU4|H_hcovAY=xeR9@UFr2JkxoCZ3js!5Eaf}m4T*cCZfe0iw zN9zZQkleT#qKk+MKFxE(`+CfmT=HkX{68{rT}1Ll` z*o86HA3Fz!*jVhe9`f`)l3!QRsE5bd4g{;Mq)6P=odd!s5HrZr zqG~9s8bsUQkVYtDx|2j?|&}s zzr)79KM1Y1IyDY&V2s>k7kpZ)s+)SggkypjuiTdWKs4Ul#dX8poUN z*^9SSROiNQ93f1=#RCMTLGJU824O;F2wuE%g-BDGXXWU-1U#l{3b8!gl@{V49k~U{ zD`u{oNWjMLdtRcAeTN)?|L zz-+9K*TL5Ex)r;>+1XnAjs0YCvbC8YLXG?@MMs0EAe3PkAVAV;zI+Go%FvaQ=jWlO zm{?`JhOt(Gg142IM@i8GU{jW541J=Pd$^r;TMeIy8Ajw_kwU76)~seG!acH^FZ&$5 z2{uwpz zg#$qu4Ruu1uFpn`6?I1CQZ$6#hgTC@ipWVKYCbY9JB~24*nnFOwTbzRxg{Z`6EmQ3 z8jj%grMT8XJ{$WP>S(`>n?NMbOTd0GrK^r>NF7hVWG%}h>0vFY(vAiPEQVR7^wbl8 zx01$-Vp&DUi|ZDbac>Zt49}Kz;#7Ux;gEot`2Eo%s!dncLb~IrkH>9>V zgHXABdPwxMEmQCALzr=xr(bJNs+7{zf90MDs#k)m@P#0%`(usshI!_hNbGX2ltFNV zAL-zgb+xD>STd#xteYZuN=ReIWtl2!Ec~1Un*R!%s72*?B#x2th!X6CzePHtCbl@w z4oU|9Dh+pj-tA;MHQ9E}8hcdHYj{lxd=jaoEuyWaPkn=nWBv;zLvu;Ye5E8$0;GQZ z##lgD91_ugYnb0)Y&DXh8HFlErBRC`;4YXE(nkQUsP-RTxeaeIRHzB(1Oo%zD+G;) zz?FlO#L+Uu%6?s1rW;rw3b>%FNEZhO;RFIZ(W2#OUO684h)5{6l>M9tADk#zT(XI> z;93P}_(|AcuOl!iyBH{!Gdn2>LFK_bWldJw9pyiz$X>J0v%OY}ZKmzUQym_+t7OPx zU(2%Usms4?k4D)%Uat4XuICaLF|*R++@OqrBT#@p(=Fzd2Bf1Ood@5$N(C$*)9U_J(NJ5yJ0P-eAmAsTTcCphE~XX?b^_3LoK z5hGdTyFSGVkh^);FpgG@?U34|4k?ij60#JQZl>!$7p)r+T>VEM;JtIfwDjqbb6@#;riJ&8I>$}7- zW4;G!Wp^fS*#Tx~@34dTkUKo+KHM_&RkihK zRyte?Dz;+bxlY{F@TVp;jxuJ;66Y7wnyH>(Zy9PFoF1=_){S#5KEr?w=K47E!}A7X zP{qL|5F^H;CGzz4aouUlUoY={(e9Yy`1q z#35fGuu7kI25IeB@&M%7w!|4CUcCq9x{MgcSK}=$b}awpi}s)ENw^k zrWNSf+p`SGzd71ERA(YOr7quSlzgY~B7`>;8;h`5E{m?aK(_4R#4c0`L)-u6wLr43 z7-4Ymi%g|>M)mhCD6_fS^rrDN=)dE;If9ZNDyBspt}~lm)gEiQm*BP6XlaplISgrI zAU8l_?CR>_^@FhE|4rSqw?GoGv*E>Yt1kgeI`pg((MVRkw6(JpV(L%pA7)f{ak ziJ~VgVKmDG%~N)Qzy%kCq8;Snzn(cZS?vHYzm5#XPh#`-*4gCq-b?6{)CNq*XXbn9 z>a)MoVfDoeu?SI@v$_6BmWp{YSv_Ht;$gVG^EDE(@^*iNGbOi-najKz6TBCaECe;q zE|9~^*XR;2aD(CQl@cNK>LiXSlO)E_Qy}Y>LSiJi?7)!~EOKWM7BCsF$*y zwwITMCQNq?VKelP6tr3mB3K)R2N`X5)AJ_2N9gN=;afS$V~ZiIk-Giktdsn^54`C< zBgSM`gZqYi`&X!P*`#}HMd9EHU-w2U=&}J#$OucX%>QBQD}(B4f^BhkcL@Xw?ykXt zLy+JO2X}W(a0~8sa67oW2RpdCyE~Wf-Mar?_1~V^wfD@fo>{$mbpcg$PWec*cU7Vs zmiOLvA6VtB_;RpEMIe{B*)49{?UyY@Alo?jVT~d!a*A5mNgr(W8kY0x#XdOy>|3iq z-U)X0NLK`g)RJ3-Wt(QKKK*2fIj_Hq;-hsEyblAP(rNXPX|wUENefMBKt$WM7|ls9Gg__G@{ zRt;x~P~TN#`UOvSmSG|sztH({2H-x^l|KC^q##2^;&e;WX=ZA|i$(Sq(A06PJndJ% z;(Wmhw%EG|c{OK;NrkF<*7=+y!6mGtia|<{XA48)WKif010BY<98bei;fn1(43|Gp ziG~g=K0Tnl-6M|WVLr(rIDVwR?@;xygi)pl{ByaQRY4g(L3S!RRgYIeM1*jJ!_@T* zB(QaABPKX*7jLoM_H#+6OUP8Fq8v2i7I)Ehk|Z96sO3un!g5B((OHl?`%+u~k?1n{ z1!xz9?%2;{BB#jip&fRX?w#E@9a*b*3CH!{AdJOVCYKyj zx)-~gFADfcA5Seda`$@B7-9d>Y&1ZBOPM!XMz#Vf)rUm5N5p#U8TQD>T+gH-GTfHu0Fb|gSMya%5CDnwE>>G`4=*QrA?~`G2@GwM z58grUL0)v?8DLw(eMAejSB z9vZBb^X}%M-C-i|m7GR#|4$G(Yy%q#`}y;|-j5Dqw6$C)`kmeGF-wWSO10OCBGmNY zoQOu>x$@&G*h#P>?$1Gx2|JGn%ZQ3kpwAolp))W==1yUXx7JR1dk&<|nnTrQ%V_Ss zPA7vUEkxm$m5?K~w!%Sa5`M$ZBSg!i_byL3WVM6!P;Ludd2?~xqL4*|bfQ$zr86u* z`BXMmoizErV`26@&ckHM>n+HD&VQZp2io?oGC98ra;f%kDr zo3r|)n_tiy$9JaN3*i6VcJPbTy?h@p{{iyBbXtC&u=D)hoWrdXck6e6y{NeMOecI0 z11~ebDl48MEAM5i49dH{{2x316!C=eZ!nGToS#K&YyDEoa8k5W4+Hgr%% zcOqzFb<>CJF5s>JCNIqc(~Pk|5bN{eLa)X z`SXV}_?UmY7Z$j+#KD#iHd9}YY6zT+e#?wYw zu@>|k%}K+`G|(BiaGGg@lr-rDmE(`3-Jc@uyBzv>{wBB&m>7%Hf7HcI+FqrEh%4m_ zED(KR7oDZ_{Ono)C^jm4z8?@n3x!$sSCJ_R=$ut0&|}t3)yUhrE@w$m@_h!gCrS~D zd_a8p?u9VlxVEO+>3dzkZTNs!wbb&90I4J;_q8^!U37)Yd6>mkOx9qgNR8M!3?zJB zfv2G)DF|MVwcy7-hqufL&H7^ay*&wk{_bt~hQ7ZI`AQ;# z;Rd0vgl>^lzcJV@H!b()N7SQ?$xJ-&FN1q=-W~A_A>JJ4JBDLCuYb(>Dh_k5rRx~v zfDscETU@t6W%5K_f5rdP0-!?O)T704_w_-jgW_NMwfGQyH;WW#MY^nw9}Bh&R5zUwM-^`j*&W2!V4r2JQ9j6E6f!OzkeRDdgkJKLr-|ba%{=22-^icZxS51`Gi-5_`eny5 zZSpx#k#ooUxv_5IZ#_i~^nM!&>_sAL@dgp4{OFJuNr;@Iyo6S|Wr*BC&-_VNo?BDn8chseU48I_xrDjB2U ztD4g$6qib;yEAM;{$$8fc)QqtFNQBVpLlj_$ME9}Qt^w{ycHd5+auSTg+C)1x<_?W zv=*v2&>7NfoPNK3VM_I-9y{H+vBgd8C9FxUy?+I*gw(uqX39-vr~k;M(SF`NyHw!< zz9I{Y94wCdCb(@xh8UG`bL~&;;%iGE^6k<2CbFPZh4n&v z^T9De1}xpwv|)~LV?I3cfQjs`fCiBm{{@shKZTYVS=(gv508P;-9+3QqFw6c#31_x z0kuRYM{}wBfBU;#<{wT24_jguNHAiR9MSw?blFus)w6a_UguaYx(JFHSqxG@P_x(& ze)KqnDc@xjJU0W<*h&t1Un2St95h@$SfUjPRl5i(6x)&jZ<+`{12y>3bM4{#0uupz z-6c*)3E5Bt7kyuxD0T`gjaY69xI-zV_T4=gH9 z_He(Q2b5B?*ZRqfK)2w%A&<0dwx~f_Y$OJGO@SIGOWfl4_2{kP0Kx;P?J{E+vOcjh zC9J)TJZziq4X5ir#b-z9$#!K==#KGEzuC8Vi0{YdBzjYJkN?A^hTpMR)|prRodZ$1 zE?I$*Rp{1)O3-JITNsfY6Lhe+%ZpRY+h<-Dag>k-A3Gw{RvlNpuQKt&-Lg$i(m?u^RyWlR*@q?%QOM&kPS=0uE|slQTtFBJx?h4a7j7%HUUqL)v_O|`qy;>c zdEP~belGZpJi`OWmN<*gosXhs2i&?#7zSW{#mPXP9k4g?{r;<5Bel(1d2x7C5HbB= zdS3QH@vJ~CNkGMY1yZB#B)cYxHj;fHpRr=XiTDqAY8{#4Ou627NbL7M@>4&B<`u1D zv3Yv1?u;XjCz-T>1yMIQL(#683570-i-4hz^06w0^Sm!5Lt$VJo$ zwDRH&a91DQs&yN&|5N@>D#4kYGv~je#6zTv0U4ln0fP_%6)3A2kYGRU<{*;o9M(HC z?r^uzegR`nWP~~j!zHH#xrcc6%5+JkHD*Xd(_Kct$=6-hg-kxH29X}EqUbD+97sv` z^U>R=E!evXk1AL+L)o&>ZH|N0I`xkCZkdPE_NV3SA+;+P2`nvAz^{$&O4?dD8;flU zB$LAkP-Ko&PauboMfW0ur9+fA$x+p|{0g<(7eAN<*nK=PA7P#LIYm>PtG^C$c;n>g z&lUMKAu9F;o6@~Zj&UmDkzWNI9g>5x;B(lRaB>fM%1K>}eWGve`X#R~a~;NAa;-+b zZ0~Za6G{UgiLaJA<^%>l1x}cNA?ES2{h(NI4DbEfh*2>ga&$LIU6ikI{2tUyf>fv5 zXZvehqA!uTV;psc1#VTRMY)3mSU5!0?WSF;lW3t?OdYQvHPbeu^d&fid6hbO4d{Lq zbVgc)J#V%FLHP7^%nnJD^!^ZggZj#!nv6N0bpv}h8-GLJ4j5sh6tW?wF%HN=z6dKlyM>bH~a9QwEh4I{6Y${dD{ur!XCNA<}J=F zM2Pa(MgN{h`cu zvqihjgNokv!(I2Iz#RE!F}IOp+rU$3{$PPF4`oKPiacM5S%E&vF~8^|(7}s6nLoEGdCQO{Ysl ztD;gS@WtLdGwTxI0E>E~Ex(vxI5+)5Amq^iw9ij~QBYY2d4HOnMh$8llyvtv&*XZx zHHJ!6cWD;ywSqz=V6g-ej0TZc`AA&0fF!8GyHQJbW2z?^uH;j%85~wF6PVPYnPiyxnj7)w%Eiwx79nv8;NHKO0oI&oLUI zl8u)rPX>@D8i~TUNkh;CU@;Z>9K5M6z%TMPU?Fk|AP z>cnhQCQOupUS?2%j-OAY;}rztWSKbb^6{3oKD(8I9R8jV%Z`d13e_&-kO=DYx(shUa@vAdtt_ZS` z50)jLnOrUI`T{Aa;!IU1xs<` z0i)xHb5>p)^vRL5_-=_-q*8L`sx^+9ZkL7^Chke4+n>kD>cu$=CtnmAr-2gp?_hy- z<{>nrGLVY%)K*(@HD!g69|eoO?}Go|Nx_3eL()Y;C?5$u(g53%a@hUIaDeU?1sUkU zWeKHHp6GD&@V>o8}gTTH}&!QxNPS+tkR?h;m{|MZtF&uo_JH}6-EQ#vm0 zY+P6s^n86KXN;3K^snr9E-Ho_*$~C&p<$suZCNd#T%g4PLSy<2y6V_g->!O{h5X}j zNb^n|p?!d^8jBqM}`M#L^*7fqc#Sjv_u0-9^;38|0>RRTVS+QXqmYxm_h=9N&- z*pRu7VR`H7*k#)~P7S7E_0@fO{0W!-3z~W*{o?PX2?c1>K8Z$n^L%wF{=#WtkaPIv z^oe@XihsH2-2l3p3(VE$Xv zG3CByyX*flc_Oj%1&KeYUdbHh%{K*|xXm zCFSmP$z8MjR*JewR*%EG(bY^gql_F0xI=hsd`vsDQ>7beg?4C<7k#uJQ8y})PN6f? zc-Cg3IU#0U86Vc%tDViQ)0yy%|M^)w7<*4&2+@f&e_&ZSphESl)0yUbP{iIDmLn@T zM9q|?m7o(=ErddK4r;p|6C4nwBm%VCV!GG@ebGeasVs;jt$W61V7m~g!9*4vY_vLe zoq^Ccb2ecDz z=@?%Hk#G=jwDKW%1~kN&W>y(HR?sxT2el`^ZIQWtqtO0f7b3m?RC579PlyIqihe>3 zwxOyho(P|V{?8T@a1er)lNsmZN<{-33cB60@2PQt#csXQ+e8<9zYGMsg&MGlgW&$x z-%|W@4lc?c9yoLubT!{0bs%bPO}+I+RiKj%y+hKjVV;=Ss| z*ELk0Rf-)Te9FHO5L?Un^9ek@SU1UkGnUe0z%(f6`A}X3LY>G2+A@^rx$gb_@6^#_ z7TyB>C6Nw&z=X{+8VC(Pj{y+H{cp@)I#!4Y(BEOOh5jMWVB4aKyxSV6D}xLSQqVlP zlc~J>upxlSjd&>PZ|yy^aforQ))vKmFl(>wvGrq7Z(5oKynzT_nXa-M9n>EYBDY1o z|D>h3reMADliPcZk$z2bo5p|km=oDgiFzL$r^Sh-O-o+b?u$7|Hrq5t_r5?(da8ik;zwdrY3b*`VwE$A;@s%}!N@F_;8iT}rbE#D zG>ngsYOan^r+V}Jzv>~F(8>99C^2On>j*oTPQ|EM{-$Udo!`!2H3~RNg$8T=KJMQr zY09RpS-b+VxOYV84WKPT{Pz7kfxz2%hDP*gK9+nO_p_vSOY!r z=J$>kazXYl_HPXvO^4j)tMn}2M)N338G|AE4GGj2;^N+L1zw;0e9vGR z(qSI>e5#Y=GPOh=B{$_LhEN@V1-zdc);kd`YwKgT!4Lko7He|s8?bEy7_q^u6@HN9`yPE|M}xio-t zf926ci!Yb!-!T}IL$L~(mlt|K)qC0QfscJXgtd@du=@E2*YkV?{K%nD{#ylN&d>#D ze_$99!I4)|Z*p`&#IvM?djs}K9<%Fgvl!MkIgj~*B&?Kd|H|xp^j(KAY1VPqmbGiu zP$+9ej7V4t6lG6%L4fN3uI8}L#+zG9hgVn9g9%anyiq))hP%@igzab5h36Pk6L03@ z+NIshHDOW7R(_x`s(n^>`?irsjUP@8((;!<#l4kn(51(x{2olh7JcNp+Kl7eWSBc_ z$APVYPnwNkee{6YL-c`bz5=Q^5o`m4hTmYK9HT@igUdEUe}k+Xtypwo7MmMQ4Hw5+ z43Z^536PI`8dWnEve9C^EfNOy@fv+u&GaXsf#@8J+^mTpEi}rv$ccMaf4+kHkct zotg5wN(MWS!I`Zw(;^IoiQl)8b0 z6kC%*v=AzFR>nc<352`2zxN|SU%cI9&w4$ddKO`S{XW>!En=j9R4GT))KeWw7M&?m z-My9%z`nb!E6>TVen3QEut8ri4`||K0pepkSZb76y7!ZSY!+4}2b$zkypM0Toh~=U zgjyq-*)XmXU?80=$3_^JxgzRK_p}F5zy1mW3f!z?*JR3Ce&w$6RHBS_G?g|zD6Kyo z-P@&{`UDce{Jkl;cFhvcVkn9GMu|a825`7s=!vMTX-X3FhuJ4Can|1yb%r}TOuA2 zaU}bOvJ@!tW}XSEF_7k+5679nSwG|0CWbJ@JZS2CVse2-1WL+@Yl*iemWF^!YRT>( z|7ejc$&C6yKEW_TJnY1ZFtZDkU-?`?J~EG)uwn%Vl-=P&;R0kKRZeQ=48Sh*=@TOR zhsk&3=~Wz|ztU3Elg2tkpF>%E^v|1j+**7dga`f>1|VqN+R`1}=t(@k1Ul7zf!$@v zmKzC17p8M^Mo}Q?#aI!z;j>yBPt^ZYHJg3>S=DOSnQLQn6H^bed@_?YGzJQcp+ujZ5T4^9zFYkvY796uidnDj*(QnLfn3I$ z#>cY_Jw6My`BBzoS1cQ{HI0Nsuy!UdMw_l}Jxyq0JiXO&3x`10?04fIU%S?3#_Soo zGeVDG4>KPN*=r$kL&)d29g->NCa!u^Pt69ElaUb|#)KC5LTCQ#Kgoe;LpsAK_~t7At7zaUomJT3tUTR84k;*%-sDG-)hrbshCG3WGBZD z;g-k61<72==S}YoCUl|OxbXwM_XJ#b<{^3#sye#P_hLBrC#k5R%=qClLe2x)T2a_PzBtt%=j4j-)sS@YO`KzhC_ zOeXoSyZ-2tU1e=uxfBq@L141+7|nP6!MZ)D8v@SG?IZgmQQoU^-U9GEM%Jh3dMq}W zve!YhDpHk&V)@&aQg8*qu#Ubpb1|`&;Ter4mI-6g1Y<rWZ`K?Jq6aNeqPe;OM4j;j<{laxXN(?AW=zzM@OQ->rL9UM)~DH@{R z;nF`H7;Wl&J=`m~)BvsBHc;RM$8Evly);H0T)M~!Oo#kc{fohn=#Symz|W4-Sg&V# zag26{t)Qs$RmuyWA%Wf6T4ZI9T##N!aWK?#0I>L8@iY!zbcmt2C;NFEI5xR{i!^sw zlt<6_g%nZbt~JiZWr7pI>MDX<`9A68Ql%QF#?hzeCRQUz`)eY^37ssx!7Svobl07y z=Vq1t(Wa@B56QH*Smi=U$i=79;pdqyvtRGKAt{se6q4IL3TveCjGW+sOa_F46du*; z!uu5Z@WtDUf#YQFMR8#O%e0J`36)W`=HLFq!uGfKHZx)UczIOPW(7%=zJ7X}auMiJ zA=u=mjx$@Qk@GjJ*ul9tM0xzWWV{I25%KaBd@a`p8D^Xtrw!lmJ<<=4uKp^|)}IC+ zc%|aX8L<~mL=6m_I^!I$G-#jtGIeZ7M5%5`kx8+h?r8-g#R0wVWMIV^j7Ck8L+f*Nl~b@02h#YV@DQx3*t%N#D-s$}sw?RVD6KBm=8$h{j^$%Hdp@zDWkUO&E)dGbMbY+VCOJeE{*uB}({d@p88Ib8522h?Qv6>C?QRyDkwnh=fK6N);ExXkQVsr>7fjDvdZ3L+Qyv zx+3w-?8vkQ<>+S!c=-9(x>|I`n3BJ)LxWC9T!{wM^HF=k zL!dlSeChzRU(t0vb(;|&Q5&s}AnOexX)_mMpsXj&7MN{U5Y(VK8e^uy%3v3}l~=+5 z1W1-kx4(6sQeddma}-cFc$8yEA%H@zU4von=kw9+>77XE@G_8^cD3vae5$KXYQH6y zMIpz-%G(hr^M8-VWhJeZI(kNx3(|9_Am?ir^(2#rax&9dhAtBINL$-|39@^Nuj znM#d0V+@?woq6_|Ag{eG;gbWshxl;0K6y;=f$`uR0i$XjQJG#TWy2wA*4p1D@mO4~ zBU-Zfk*2By2+vU(?X|5ueR=#Euk|J_Sa8@L%5VR@{un)z)hSq@68?!kqXq18qGGrr;-zOyqK z4qPZWth9AC-P*|{*brYH@G%-KhE1_k%ZSY2TZM(FVG))K&5VeF+yK5RtU`J9fn33Y z12aT}Jq0pwIu0D7l@el}*vYp`Fpa`j&~pzm$oAp2#2}!iv_9nikWM3AA1T;t9V{HJ zJa{Z!ObdtPlSu)|g_L~B7#++gt=m8LV%FRsn~(A@d}H{Ku6Qn9)G`)d z`2ZS41U8?Y^u5q-3nyK@#8r4OHCiNt32lwtRLU%05MD6?4lY^>m0LWM#|ZvM*oa~l zDP47RAklJ<$`l~XYv>|8K#1y)=RKQBKN0<#-!b#nm=I(WCZhmIh<<<~)od!Qt^|9t z1~63~lEDjuSV^U!;w6vv4FNrWD{tZQruh6@nL|b`MOr)x9%etAIuzwU>6B|yUQL__ zXexp|a2n%{4RowL6p`Sg>Nk@d2vai0FRDTgI`>C=-IAI%UeQ|Be+-37X@2zlQ}{wF zFetS<63Q1xOeC=>-$xTkjk$=x@OZsl&;apIoFDN+!^AF79I;h>CMlBIGSTW>L~u=$ z6v(2Kg6Knfg|DQB6mnXFX@-Z4uXRD=cCPwQ8?PM*g-T0#{)ANhw~0 zZp^EogvO8=7A6^N4c;kl}ZC!V@4RWVb$`DMiFoY(C!U;I6dvZRO8so6yah z;fuBd;l0P-kY}gD5w6_^gZDq_yM!>Vell>~4M=G!-dd}RWsZgNtx6+`+cX}Li`YSB zHRhW#*dqNwQ$nOaHCq#=ii}kQBN(tdZS#-$-WAK3{0i1bX8)^XiqQ#@o#-F{5W~OtX;3Hb4+_ zG6Go+_dzOmo(sNRR~3yF*N;x7hA)Op*GeL0)L(_#c1o~#w$0wA%CH)E3Ie|wEL8cJ zX(Ml=Ai;x`YJ6DzT^Bs(mAKs=?fcM9nJYe`Gnr00#zbmW9!s9!k|6x)djXC_!eoeF zZH6TMdZ)hY^!)v1{~+YAC*ZjE>qNO}F*zl;&t!7DDha3Dd;gOCXX($uVq{^Z;l?0e zy9c*HIcWwZmJV855|N7D1@aXSlDh#9DX2E{pE`Codox>K_AaiycSP&QFT25XRuHrM*^`l^qyRCxIg+q)*aYoJlxZ>kQ%S ze<)Rgivth=I8%om=`SeD9D@p1CVY%t2J}SX{`cljX)1OP#FeX`4mH7Y)R{Fc34WxQ=$a5X zt4=*u%?bFbU~<^}y0h9$`oc7bi6puU!^CT-_^qaUv$J*84pj^g&-u7pJ4y1!$vVjL zz>JmX8Y769v*#BZPXkY&8DB!xMXFujP%K>`yV5R`3wy@(na@{o?B5!ljvlMd&dMu- zIK#uX%XBth>;YYWiD4TJSOQJj~WFyeTB+@U0E(J>}qI-cauApl6yu+bNRc9Kc`GP)fH zDILn4XAy;8x_jR{=;z(1Oj&VRAn13zWP%N7eQGrpwCHVJsyOyR>=*}9T z<=^I?m3WV#jmqQt%Dg6I#;dq}mp@k-1Ef{mttQ+V1FmA5?GnwEQYN_L`u#Y5W5-jb z;Ud@~?s8;}Zqt7x$kZ13AFVhvH2jA;RjOwT?S(-Rg|gL@a~9bqTv@zcy!nm_PA(wHsR%ncxt0bN{CQTWA#{Ab+Py&`{v%!r-p(PDw+bq8b zug+!f_wH9pYh|~4ocgIj9-A8Jp15G4!DN?0WGE2`<}Y@b@LQ?t}rv)=Y6YA>yI7yDN;puDo~6;YY36czsD#amfw9faR_# zEL*mVVgc;MM6RrnJYkc~Ah)r5QM33Fv+pOz31Cji`*0@PcHObs`?*v`YfY|t4*dfo ziNQvqV1*R4)XOCAVJYt-ZVD|d5(NrVh(;+|dUg8LtvcNs?vl+=!{22c-}3(gjp-ZI z^2N}2G&u$ ztM+XF#pg&|%jzXcwT5^AR)#$-MY|)CBc>Y$J?n;-45#Ik#!7s~{)9s^ zE{+=>9^UMGz7AzHN;=@*p3|sc8u_>{9Y%!9{dTLbC3X|5AwPMFAiiSJ<}mvIJ0O+9s+Zk4rH(#Dq$ymY z*_`DSaJYyzSOkCXgMuR`phd2|EqotM7%&A#bsjcY0_-^&o10783w6j;W82=-kG|T= zzrbqp$qSTa5h17rE2rMR4mhW^DrpLrdjA<4eC0wHNg!6q)?n-*f$<4*QGbU+dE2-3 z^y*!!QKdkz>eFUFNv+!cB4vS*;6!K%jxbvc$E8LM44>DhB1E8I1NB&%GG>E#&>)Gy zRpaZ6Ry%U6OY#~5i0tGhf^PbRUVDjOY^H|g)u*6udWtcErcUtZZDWOKZ&8zZJk0dIH>&;P?IK0Vf1ljc%Zo@HTRK4t zmS{DJMm<>v@iy|2X+sr`gSdojJJW ziSKDDT$t|SQ}ebEqB0Z7VO@)7n!-Z6&dAj`r!8i1Jfj%AUe;9FUBml^@yt?&lujOl8OhCU6yuJ8hr^w@Vz{?J5*@B zlJBwFbxfCM%DOaEoCQU^NaM2^E}z=gm8REso!$2r^sy({0fH5OP89y{@WytzAi7$Z#fblxN~Bk3=W=2< zvD?KPWLtH*HvjdNDh5b8MzYi*A?!MYzpLi%r|Bkgz~^+&sWmu`5>`ZY4wkvu1wKWA z7BRppHe8XwBMy^x0GjWRWalkCpGzNT58of~(-$Tl_9!!grev=!(0BmeJAI;T_-9W4My+2FV}&^p-f@xq3}TxvLg}yLw&fxcE#u}Sv<1A zYjWYx&~9|syS-^=GsQ2298UwZBckx#LoF*pAz&00Z8XNS$D9A60MGqYAvUB1QUyc( z^0B}}G0*_pFU3Df)=g0-5Bi58R~BA)nPslTlsX9E-x0?%UxB&A7{)_A;kK*EathUj zk92!FkCm7axol5|Mo>Ni+|E7M_9k^o@y0RVvDxi<@13K$&d+GPIBuXC`S6NQ`fa*7 zoXX5|4Nj95&3yX_$Jjky8cq#a0g^h!pXtkv-}Ys6lX`9LqZT3$o=-D<21%ro9optd z!0%Gi`*@d-4Wdygm~LN;fe(_iuvNXQ1NBfAm_wBHwXuGB*>}*Bfnnn}-(xLgYaAyr zwF9|gNAi9|@1vM4P8223^QjBalfS=8f7kCcF!j=a!G=gTpI4~sC83{#XI0ejDi%W4 zjm$;2@YEWgj=? zU}s~abQ<}34XSrSBg2jV~JCfcU{0Kg%BiH|G+fE4Xywh_o8$pnnZoLpdTzJ2 z3WfI3A8sSpdV|$Fk3qZ6AAScLA7MV;5A zb2zq!p@U3FCm|Icu!2zaEaITl(6?U|aX}rn`c?dV%>K8)4|^PbT^ob{qT5TdZ_*7; zDh%+U#DYH-AR~L87+#k$V&N_Vt%?$o=1JVJv=pmcy2twvG92Icg_ayMt!>jGMj_%< zfX->)?u&O-KS(1X4%^kP`QD1p=NY9}VHDG{i&wIa7v5j~SJV>V1Xq?Dt)p_AJyaiy z+jTRuPC069SVo*oM}9<>FeNcXP$%1QGhmeiHDs8IeFsBSC;y?wOpO&)uiUg%`I|qJ z9#wbnhyTBp&0RD0NK7^w2{U;1{PmNL!F(xHi~vRUyHj`STsLC@=v&sZ=)67Dv8373 z_~b_mR~KbX-ohL*4RR*=SPL{(g4pbqkio#BftqJy&`PE2{C({x!b+eYLOjrV;G!$Mrtm*RoHSJtmgqmeA@Yokzd%-icfIGv0|-#LMHeeFx2T zVXD}fb9*|S+?q(%5COI>Qe??HC2}#7{c+4eW^%3_+6W0)E=@-pA- zf!T9@#d)SB)@mzaRV1xO!^x>CsQk`=3)yljR|!xT>~;e}5Fko7>$2xk8Lp(iC|WH0S$VV9rrankBtkMQujr{&%tkT(%ucvrnzoU zIVm?2$#x_wu5pLl!XR%@h9ROFGNM?;r8wK|BxDSua9ANo%j)AC@N9wqR&099KA9yX zEN@TW)OhMZD%``{)OPY}Jt7dS2nm>~4?Y?+wzJ}pqT~?G?T%9uT@egLe3f2qAe+&x zmeiriFudfHRq%y^LVH5Qr#qtfgNk4~&$YtMrY&KOVvLG+!LbRM`400=Tf3}==V17^ zaA||vuO;1^SyeTl!w!*1fRrxA;j18cpbzG&{sYu2*^#E-fumS1DKYE?)Y&I@CD#pR z@f;`jOf!v&Kj3^L9CN#hr1)ZxG9(^UHL--sCFoPYhUO<#UI3p8Np`zegX;km|Jo4343 zTA70>>h2UArU@#uB7%b~Fz)t=tBC@)+Q?ZyS2y+SvAj`iYC;u6utRvelja7H&CY^E zpTOA`lmAde&V&JNgE(?3kqF=e(v?VvXt$M%NORO8d$4ysX#-M2s$-jGmFl7DGju(@ z%Kw#Eb&%-sp63ZlAx6m|!+84}k3o^}_O%DuIoD6scn5Uj#?e~wuyKc6p+@>G9wtcO z;|}b?jYF*#gyN@MaTa5peX~zDn(I$#t;GzfqZKB9M|@yce_=ZnjWb#UWhs`tgR zvQmH$m`I~7a+NcL<__bzWgH>76OeNW&z@+8pHvgV@7V&WA{VqS0MA_|&pi344?5vc zDjQ9%bvRBl$gr6TTJpAYo1Pl`wZ^LZtPEeNh+KnyzupW<3Ok@g9j9FRl(kuw85+-# zWAgcdh7J4>5O*E(qh5o3rzlpf=&@tiYd5E6Qv)BWSc19X-RCl!UI_<$(XgSrfjle-qyEd4$Dhw z^;!tKe@@;fJ?U4$NIEoIh7?jLhvF&wMbUnF>a)*doK{UhM_vFrJWz$+K^(ya8D3C~ zSQxQsCGx*OroXqw*~C`iRe%RcHf+iWEfoj|VYBN>lDLDon4&z=q%7>XAPFhu39P;E z794Hsj`CCAeY@y;Ab0IeAL5uS{qYDNgw0d&o3UI2#jYzQgwx){IK4DvDV@MSTy*da z!nySsyPY`}pClSD0NTx(|7&libQYS3DVaP%{p(^{pe7`}yb8s8EhEhGG~!g;%O$0N z;pW6-{LmiwA0d%A$Zxu1$*zkr{Hs-*pgDSRp|NyjIQroB&X(=#s=}Id^C?nA^DmY| z_TKU-L#rb7;5lb{byosna-!^3ii{(6_IY^HeCx3QBx*OX!~GMpM2RxiHkU72*)|eq z(1xGv^m|zVsX&Q>8YUy&^f34OdH>&Xe_Dqdnq>??9Bm*hc#jT6J8sp0-UA z?&M-;?Z&}Y{yi>h)=FnXiwo|4kx&})^0=!iDG}RLbzVfBMWMycKg-Op{7}HS!RLI# z->01`93ISxG8sbi&Q;GLgwhe*?zwt!e*DdNd}!;#uv+yS6?x|-AF$+*#1a9O@_{80 zwtMnn?F~Q(p@?wNM{W76Y#h%+;?2z6 z<5ZF@%Tzb>8aWR8ece@M7?T6T7Ho$PA-7d?s>DHNc((061Yuw#rmi3+*#rg*siQa7n`!b6KFtlZtV? z;4J^GULdu^EnHFZOH`~D(B3zL^QcZLe zpnK%hurpkMoArxo92F-5p3C-dyk#`X->BGxnT<6x zsq1fVhyW>5+1jehKV$u2)ws+Xog;cvwoq|+oTjkkUYb`TKU+O zlh|4n3}q(YEnKulgdMftHy_?bM+uHB zT1;TC<$5~t4w&&I8Bxw-qiZ;ddhUB|$e4}moQ&+Wfw9yy;ki!&VbPPXKrMutPnzOVx%&tnBUF)e z<{tIcDjqR6F1W6+?jMd5_h9{QxoXzcGkpBMg67AJ110*IE*4!NK6DjM_5uSzH+$l2 z;n(hJ0>~X}cpJ4d3Y`rg``3ZK610vt<4^3MkoPOG2(bcSv8=mPi8e zI5Cyn&M*{)m;iSUwN2uj!QMb%Afy{0ab7{657mn#67&2yWSB`oBiJpND&!Xr(&|mt zMM+NEQ)DEo!MGfmo5yJ?K(PSIkH>0~yR>LN?4CDtpze8E&R7M}y||=X|EhL~EOC^P z|JyRN)47fS+oBTIVNOhtIxuD`)b35L2_XdLv!reON2cd@dwe6{$lN5YBI)$YXWqLK zDX-eMCUg;$!bA-P*@%P;_=@)pMP1=kBcbv%Gy*>L4Qd}5{X zux%rvlUO*2{U$W*nQu6!}Oi@x9WJ-*C8_MDp|N310(HdppCaM@DjM3+5HJdsi=ol_dHdaz= z%m7$gIkzXGjcGoA(3#pEIsAbCDEj5O4$5J=nJQU>7Gr`Is|_f%oy&Lpkx9g5&$#Xz zg-Tg_#O3QPgse8t8P;_f9Xkw=KO+02*;aXu1|qaIi47%HW8uf+B$J zxBNi%S0@z5Q>R9&;NM?1PjjGL95MLbVE9L+zE;dci-Eqs)D<>m9B~y(E*h(_%65~{ zBA?-XO5XNPkCSZ6jA$MhEhG&=8s&@1{@A0A;E_SV2G?j;pSYwJ!YWV}CE54U*pW9P z5Jgi~ErC=sat5s|dHITjuqgJpEb7hjb=B?$m1eK*pgk=yO7jZ)O!a;TJvRTvAp3&V zzh)0pF0)$pT2cvRk3jTE^_>#}P~acrjat@8{(I z1LQy(zcZ&KBikj)4G#}c^EX3#(lo+JJ8nD{(Epg^F&hEgC1Y8y)aA&(rZ@1(kCaEauWQ?@_o z;9?1w`=o$6ANInFcIIm%pG2vuF6LDbj6Nnyc2g{y(7QA4srRa*A-S>H_f#w**2I@i+|mW3*Z0rs3G_0_pHe4TKIE6et`5j3j+a zst%nBY3fb_S~L}mDZtVlM4yW_Jo=WWNQ*{Utx+)J{Ti2d%Y=j%fdYX7O(_rrwWeeV z4+8}P1&jh?&}gac6drKOGX-rLU&Nc4+7xf6}8+5#n38vm($BAEhwvf4g2#hA_s38tRQ6?krTZmd9cOl13L$3^*lT zan>lP@jenr2b_d}K2RV~pg9HBj}tYIKRjJC3UHWDZp+~>uX(niFea2dBgVrOpcX-D z>*Gh%2pp$v%qUjb#ZO~Izi-7iYx01&5eMAuB4YNyDVXHIM;ERV@KIHT28G)#nIJ%q z+=R$)mA_}!)Ue$&9U990P@dpQJ_Y)6st5fLKmK+7t5sclze{ndWXgHCbfVuaY-^QR zMATdx=%%*V*jzcda^YSO1SgW{<;MJ2Rbk?I@E+%iTF=9uQwc6PaHQdolR_FnPIcQ_YDm9oT9e&7)Rr)!SO3KqSOe+;kSk4B3Ww`r14*4T~fb% zz;5((ArQ)9T*9wWE;W3;UHb9ikzNILG|Mt#x$qgvgK+^J`N#@TUc)pke`C>AP_LPi z7~HPJQ3md=3jc^Pxqt)n@W4&v2&4g*<5~S3kdRqLPdsI3#BH)S+eTn9nz+XGBG{6#U27C;S4Ti`I0hX;;` z8^2Ip2Zy9Q3>b(9N5?$+1+OWfKP=S__z}C)6f`z5Cej@-oOuj8&}D;m<{a%0BY65p z8k^PL4`ZIzJ53u}wyak?eEYGyQ>&y}Cf{c4xi)4rXy1;a#~XHG>0a%5!x9`K-eeSL z>_s+N@xD& zvr!2N@dgSsp+NAX)`TeGQJ}yOQ6LCvLsS?;nUoh_13~T1wNG07OCmqmTAQ|-2syBh z*J;cs6g35tn3}!}4_i@S_=RRG*j~@Aa=!hZM=LI%6a|8ywxx=50GWC2kBeM(AKV0w{H$L906+jqL_t)XTRY^bv%q;+HmPCTN7Frk_#CT?>yK^4~4po~a`wFjeTujjQ-(PqLJ4U|y6 zD}?g(D0A|aWe3`1Q`=28Y8+;RsEu5$P&b&|uAQ^3ukP63WQXWC4FxtwFR^LJxkVFt z&2vOveF=O`z0Wb!Ub9IdE%QNCW6cM1C3`;5p@~Y9@@Nv6o^lUXolI+7S5A;(mt}{MC{bSwyt(WQ6p%gBmN< zTG2OBoqr_Nq~TE#7aWLJ=!A>=GA7edbWzKKhdgM=#)F>TdC(UU5B5&&4t(7f=qn2O zsdCF7IxUT*HN_>Y!KhV}QbyW%)DVUTfgK=nsYhGfL-3N$SGB_)*vdc)lkRuNaG#&27R)PW48*)FM?OWLo$5FvAr*=JN5Ob+iUs>q{n6M#-SQR ztpJjVflk0tRljaXVJap?J{_yQ@6g)`xkidWmnz4x(g{XNI0%O$p`F8F@qrJHZxDNv% z=HDAXK`yYX2((tvhBHj9iu?iPLb(7%AHJmt2X`SEVY|k=h<`*e5N#LWGn%AE4fxdN z4m5(I5&M{_22Hhv)J)wNNUP^!mMw$~u+=DFUDj61SIEz5C{VYj zp=yONf?QYx^PHO#;dyfJN^G~hT;#d8iJUnqa^!xIlOGY8KkvegO^WP01RrcKQ9o&& z1d%6avB~0z6H+~URxVt)5XF`7`#nYvT3ukIn_x#nJ`I=!zTz}|w4FL5XU4|CP|3&# z2pn-E4LW*%li!_1u! zgmyj;PkA(fD!y$sTK6N-*IYU!|1xt*9s;frFhuUPSAz`*M~X~iD>lTDFM;Mt3{=Lx znuOHYh{X5olB@RYkmp}@sr=oOu#W>&FhX|V^HK5nu$(`DiXnc%*Z zDKOE|aiwJv9abS;(*d&k+{KGAy1O;Btuojq&h>m1O^vN*q#>>ip+K|(w2Ro6nF%6% z6?SEql!M^nKBl};rIr~&+uq`o+yEhN4g%XzXxEYuNXk`k9PYo%fXzS~cKwTnhGKk$ zc5WC9jY3f4^yD)t<5HMQ$s?FzEvOdE@rh)lL3ezj0UI>=F0L9iauD~*323sge`sv6 zjM>_(Jau+dt}pGD$1||OgB{*HwRJSHKsX0>_P3o*mVOmK=y(*XdX6b1=^nC#gU`Ob6>U|^yi*ijYM{Uc+pZ#niuuxk5E>8MyCCNMj0uO|^&t8}J?(OG6`-lG%IbC3zUD zHN6#=@f(ZHH1b^YNl5yYPeBAMe?+R>pAD)w^{^9}IQ5}_w)$_1-<%}x^ zvmiwhKOB1+d+9355NK0UAP8!kve?!((H!LJs42x=Q%4uePl%NF2IQ4ADBI+b`8gQ~b6{7_J$`;Ht;C(^N;+<4=S z^6&n`n`LBlM2^irA)}+Cm`bEO4`&e1Hd`*WALvDip>(ngT>By)A)X2ZHNqlXg^cfj zHtNxeyzxzMT=qpTH^26VH^?LwC?yW6t(sY-lm{)V4g zt|s&I^K$i$D`fWKj6CDuGd0xsi6Rptvo&VM zR_t0bcu8B}d$oN)s8{{W&*{U(dGCrbDanxwwv&7M@LW_IL`}1D>L&9UD zL46!C5mqEi7cObh^NmiakAJDk=mVS3PGPjqqXw4&tScrzcc@lPGqqgkbsbd+KCzPY ztp&|Tv4~Z&(1w)Cm@RAkgNJmzI!D6c4 zhorHBSK}~uE>y)JYAReb{T3fl^%JL03Oi`XH`?K=+Xci^Wt@Bnn&BkQS)E_gv5bH%D3M){M&ys$fWm#+v+t4tlvk}jj{oEB3LNk<_$#t)vYhq zgMpXV-=3oH`6DdPSo*fE4n`VzUl(a9s1Vgn*J6FES;7&nHVp-$I=X3691QX5I2SKA_JNmN@wfrSTcg4mhTT>^pq5z}OymYwzGDt-zO zhO&sCD}*5=7P%r35NS$$2X0y;6I53bL))Ot8i96Q>L|7Zrwf$c2%y2BArd}7%jkO0 zkp}#M0)YZuQ(*91pzEZBfPn&m0>elF3J*L|iL_2JQQ2dob_#HjK(p$^I|(S88jHTH zVPziWt$ZE^+n7$SVhTtW;o1R4*19~9&WS5nyg>ntHc`~B`PIG=l5Q_dV@6fO9PmM# zms^0;v;cPxup3hE3yihsH4^Y!ML`B;SQ*wSThPtO-;!J7JI;SS#i<^$)I;3%`hxKtC2Y#=@eit zCu6W_+Lg=7ISq!XAIf%g=|I7Pswirn`W4iO8;fZu_)TGzU=H!h$cSnY`6^AnUw{gX z%n6)*b>LND{;pS9htBz_IHMNP*;(S=)NJc8_1U){H6uqj2MPoV41@wfP#XwY1JXc& ztwRAiAwGW|3rof(RFGI$#7bHSHL&DS4U-C0ePnlTZbqm2a_LcrHbzXi0AOOY&ovsquKIrNfG6s0`&vNLxv+LWBd-^DyLQh+4sg zt0oZ!P^o1#-vZk?YS`c%rZ30?Kb@*_LCOMFDbp8U5vvLns5M+ih*p5EW1JzXK!HGk z_7n($T6_A0w}ArNo&sZVhD=S531p*ir$UGnOMOy^D~lEUR3yc*5ykVHkyi~?%&T3rTpkO(7?2|5R`hg_l z1&lz8$3sTwssT8;1hY@vU8jq2H4$`m)u&~*Yh)o{pg^F&T2degYHLZ&fGbd73sQj7 zp49Zr&n^h3LEVBxxD^xH@99_dMgejpCpzY7;GO0h7nS~a;Wg@vAA%{uJ~A+Fas)h-hiY0)68 z)vo~M=Rr{Gl87N#puhkr5CpXW5;vd@6xa$B_`v)BPIm9!Ek_v0r ztcfaUHEE%rJ!+Kb1_SnRdmp@CitvZ`$AA3Cat1qQ#4)u=0j-K{!c0(ef}5Wb?ORaG zKtNlRs}EcuciwrYx(K0Qs-BWn%SRpKfPwi3_)`>Fqu>_32p53@fdcDBfgq@@8>u%g zqE5_~oz6yr#m{s$ORK%#$TV*0xY;}Ffn2h`W_3WFP%(sc1OK1;>}Q~1I$m>$d)kE2{Rgy%=TBp+BgCD9yN)TG6Mk!n7&LquZ8fXss_qF1SJHat`0ce^ zH$&b+8aD?8f}plJ%4t)lvYGHzpCMy}cCLTd>D&6St*$%aXcliPT-)*aZLfT}{Pu7C zwv1;+p>WEoHchv>;kG>xusYGV6U~T&0zm<8Fjy9I`8hdy^r-yGZ~UP=^BK>OiI@Dm zP6^g3DP0X2tIZ=Ew)TlR5AmJww|Z}aMv`(G1fnAHQ$bqdUm1~a+#n;_ zH~J=ySPa4Zaci)KX>}*H0|1 zztvTrd=1(UqAm1WKU$}}yEpyjX|t!lJ1T`x!%Tr7s10-JY+%~znNz=vuAlGw`PRs{ z7B~#oc05yS_Vi~wT_$qg=--IoH7s`9``K)~oWMhID2)XSvob387ZNi0v=_>GOa)HI z5kI9X)A}(uKjnQtKs;0vrGX6YKCbzf|1I<7xa_)gpX|A0w`2`JwkA@jLfb`%FHg67 zxcXnBA0HcqjoNPAVoBieR)HIrQwX$ZR*$;-FZ$I=wux!8x4+Gv{x(GuUTqQz1VL?+ z6x4brb1j)uz0lVzA8Q#G@i)e|*7%#{VJknIon6}NwFrTUQ=c@t$F78`QPW)n+7O_z zJQ{=2xh>sOR4OsIvJ`GI7U2Q}7WR7o$PD7A%~ldqjye?wfr)|zw<&@KO#IYiBi^p> z=@<bEo=O#G(vN zdFB@vm9Bz4B&p$3`#a{3t6c{Onm*E#B<(?9v-}P!iJj;-sCc`@yWR8OEuBKR-YGCx z4$ynL!k6nv0aFlt0Aux%s4OT%SnhVK_=r#QFzd%EXPmmH`lx`+UR zT866CN!V{`Tv#2sq)}t!)HYEa)+Z1Z z8$lVXN#j`=rvX0%$9+4euxllvOglDNi@7t`9uR6VXRFpP8L+TapX`U&n7jl~2H>TQF z|200h`%d2L8{^}5{V>0JeD&9sp2l;(?iD(vwbT2?^bFfQHEOf-b20&kv_{V=1gbcN zh%TTLeJhoc3Met`Fu=OPSxAisTCN4G0#(ftHB8i;(brlH*Q)uU5QAr4fa)SC&4W~+ z8N(`5Y(1cH>3*Bgs8#6r7QmWpFadA(+D#?33BjqfdS=XP#$Erc&F3v&S^DYmy&dSvwsryfd}oeg z`$V&0pJ(Cxbp%Ho0+H#jItkzPiR~1&ge{@y@*{<5%@~9~ibEsgJE_XT0i71B7bB)B zi{}b|>>-62-1Y->3`f;j0Y9l6ynevhF7moiE(xvDxL>=1^@v7ZleH5xx=0X@BBG$yCw)7$zbLL27ya@9POJ9=ozfrCub)WT zeA{pO+n^4wHVFlc1#Ob#hGY(c0?7s&m_`j-r#L%l)H(?&)FL!8yMBc=!^iWW8J)$| ziB6mLJ!r@>N<-ttyv8~0xrUI&sz$4Gg#rW!PlqN&H2j|Usa6RQ56b+sR1f{Q!3ixmefR+lo=@Qru@gOc2!fdU!8pQ6~9 z9+OX_hYc5&=7z`7t?r!~-EF>$LGzDJ6zN3YPTz<3o1X$}%W*e9J+@^Is+daR2%Z{^ zcfadh@|n-vAy0YAQ|0KX^D;R(sdhsoOw4cbBQ;lTYTl1jr_Bzd4sQi@ooeDDrnfG= zEsyFG@M&8N)r#N>72~X&B=kiIeGHQ zC*?&ie!l$NYky7_L05L*8Hge1%0WMe7^03|RQ-d-{53>B_*?eGjlHq;*f>+;$|DB5 zu}C24acd)^WrPR0gRg%Up@N}}QF_5D%Vd&7gAo_gqtl+aRY3_~m|`vZ+TrNw7Y6(? zhI#^D9Shhgft8Mvuv#`OC#8|c%p?IQTrod%719srR-?=wa4CH}e(pDlRR$}|rk}`~ ze2e`h+*9N+W(IgZTuc{l_#34^(&)3xuUIT3KkG-D+E2hjwWRqN#g<$DNK~-cgZM7yv0Db+$Q+%Q zH@)di^33Ny+l7z#m8)$rFL3+jh|JWX1wSky9~@-f@eiMq4}9PQGJ5?ba_ZD6**CQV zi(M8m^*^faT+*B}ZwA)jo4vy`;~zDw9;Vir$t#tLQie?=cLF&$xgR@q%*qveuae*S zkH0PRAa)vgjr%VXEC{5N0|rMUmw_7MCBJEe=G1Kr74C&UH%&OLFT?Ao(_~&Z#p&;;6~B3c6L~;mcqCvb^^L@0Hx8*QfwhnQ@LvYktcgH+2S_UQkPN zimeT_nz}PaTlT9DFWZw|cS6+(B9Ps*>p z?hP7_HjD{qS(i~Mv`eMUR{sft+Ey>&uJRYhevLUPK!a5p+b44Ei{+`%Y#kfB8ul^J z2jwOdOU*co;nd+Y#1QYEz#gwSo0_EYg?FoP=*(mC5E!7m>+Lc>a#b`{3Fi;~3qREL zBjA|1L+~6cpD!c*5Gb*w5JR4uI3$HjZ<4}m{;llYzh6#I9&mUpoi=h-bqUhnL8Imq zvGU~cjMU)D0ZjD9v)`5D7J=c8YVcgUWwBi9Z* zbP7XOGHaNe7P3Y+F{oxu)r&547Ne#N23ZRjpd8IVDRSE`x#^dFT0VI_rk0_3Q`K^s znnGNI2UKg;0Igv*#M-jn`9$+`Y966gTY%tn?ew^O51Q?XKl-}FZ-TvHg9bigW8Pu0 z)6mw($sFO(_u!4so|NpPyJYUI&y%N4?2v~pgAj_rXKfrBSmdX~X?lX^hfB(=Mxrhg zu_)2H@AyFp4wuO%k$$Mu6z@$B=j7Ax{d;+|^tfD%&w&+ZxDXm*t;0h_9&~BA!#&$* z3-b9$!f6vzAP8!kxbW60=~Xbx1cWpKRr+K&S6*?2Ja6B%`s{GYy`w_C9>x)_dhUeG z9Qm%qPd+ZSx%2uuHinJ6_Z^VZ71v31_obLkTK=8knDm0$ORv8|E;)Qy{#ku#Ii{^V zulZ;8d35GYPkKoy1J+lYJ|S}Ceu`H1gFJ}w6xc3oN@g>5z?aeRX(&X)aY_`DLKp+VE#n%Wk^e z+K7C$3{4sZw{(L?dh*$?eNtxbxL4%p6qxO^z~P^dQQ#hzx;UmxYmejlpG2;lmeLPG z(7EO1?p@vQqSu&x=GbX@bQ;b@&zzM4os5F<)F5nC!O)!m3FZ&5k+7e!be;?FJehRq zcdQG%ZGKV8XU@st^94D49KvJ93t8rK%L|C?n3#|GJMQ!O_&((0mX`UD7hf;(yrq1Y z8`#r}@V^BndkMBQ5=_5V;jER`I*D3I#z8BW`lYi8yi1l@76Km)A!sK&gy{-NT6+rg z;zzB321{9i_FF)@Dj**Ao@pq_aPh;&|=+srN}FAn1E8M%A*`;(#Q+0R!)qJ$njm! zvg7-yi7{xJ@Q&ca*SsB`eQtci1p*q_e!*%C`arkJd2A*vBJvC1KR1K-sd)&VQ)r`07TDdX zHomxgFI`=9KwJR4!L%`n9bl_dAP8z(y@b2SA6M8FOV}DHJ1S|~i$D`pD}(6>jtrTN z7jXXhBO>pA63p;oPiT zn4MA0Ssp@821foGvvn3e8Bw(EbIhJ#bO~Qv#nLP`4aXKh=gx>+#1M92UPdrwaUt5H z(j&O*W4-6&N#x@%J}mNT(Bb(%;gUioOPdv@6C>U-7%|57QY~R6T$X|w-UCcQ5Os*r zUXl8GsDCtX%%9G+40TdN;#Nt4NQ;KzT_KcfnKwtMHc|Lyln#I)FVL+V6ltjFE_@sn zJlUssuC1wpDQv02zV3~=@ z)gx)y525g3ELhMs%|Yr%9)&g#d3Xx*Kmio#=mbprrTCUa`yUuE{wM^_pE%&|X~#+$ zB{Gm>F=)+ziir`V3@&W2BH8g`2yy^UBxE2kR)Vmm^w`Qjt_Ru5IShI0NCEm$v*|58 zgNYVl+)4vi9XUeakbi=Z_8tg7g*W1PmqJ>7%w>!k^S>(cce5gQecW~Uv^i9Uri0{tGPsO7>rM<(mz(equO5P9zf_QOpL+lT>k$Zf#0s8B zT7r(YONE~Cri@ijJP5RdHJ+^x!q1kbKoHcnbn&{(S%W6CB;({^jMKe~V>W^&_23n{ zf+->6w7)I{Onc0>XrU>+GvosezQ zjwA!S5RM^h5VUx31h1obCZS0($`zU;V_81@rIixInScWT3U6erI3D_@$or1r`Rj-j z&w7L?A18qG8^8tJ(44959N$5(<#;*CDH*jQ(Jn+s_8i^Q&k+x<*y6F_KtYxrDp&5& z-iFrz6*T|<_P#XO(xW`@J^S77+}SiUXc+QvSBKQlt~1#5n-{2KxG`qpnzN!gV4rEqh&_3-|gIU&z9%u z?)SUroO{ms&i37N@6r3tocnG4_40Io-A}*W{Wi)B_6tDT5MM^M@#kE{|6y6vpSsp- zEr)vKa~FhbwAfyS6F%T+NjdE^>*U!aBpLw2sb(SJU3!u;gV3s*sJTM4ZX z2RJGw1VF#p0lew^6-+7f0vx!8uu+^HwJ6V7Mpz#F&&3nYYcyhra!zMimLd3&&4NV1 zt{Qi4rENM_cKFRvWAxZrk%vHXj>C=1P#gvk=G%4f;~{9YzK*3e$!_S?R&thKPNYj9h@qdG#CWb&81dOP) z0cDbJX|Jp2G(PrK%mcX@TA~4lJ39r!;ltDL^UuBv0@%sXi0}XT|4JquFCra({*@6& zcK3PLce&ZgB(S|7=C_k^-K}ATj#A>$d*}t!B}D`?$`2oYRWT&_eVfeih@-WC0SE!C!xMK9-pN!g9^KSwWFrqdAnb>O*l%VM`_PtA(OLhvA z{Hq+M7_n5bLW_Q1e7UX1N)FmS?DrF77Ad&&Js^JtialRpmg>mlrR zWNi{iT5Hmq<^;Ar9QOJQG->CS**hH8r|s`^Ue|dnRC;-R`?C?=slE#T&nKLQGs&i5 zgm9QwJA{A{wH*R_PX_bs2+8)igexu#4L1}ld$=_FBfTrSxrdy-EfZyj4MuTYMug8W*gP$@Tl5jfC zVcyDwi{^ zEEcQDPs1!vl4+P9Wg12Vg?Te}1dOPSJqvbm1Xj=kuFoeILHf-wI!U`8ekZrx?vFbi z-Qu=~o@pcAXx?QHMc<;@4S_(&T6vk~dAC=4es+l#{d;!ZzeD z7u~_QF}BR1Ex#JI4Lwpzl%<(zNX*jLPao>t}Gss_V14KgP4aa)VGO$4gq>Wgjf<;oZoY_s#u{FB=VxM{)}Li;itJ#76T? z^T`=JWMIwMMxP@P;3fc@$amU1 zDk&Nx5?a@`h6a}8lA;Z?P@};In;J^3L5sa>-WHZq+B_?;!52(H|(eOX$Q0frU>Efo8Z@C#%FH)3B7_9Jq$G*y-LuAlVvV@8DoDZHK_&YjO8!{1PH+^!pIQ zNLXALOh-aQO`ZWnJCKf~VB*dSBs)|oIKJdtp=`Lfe{sJo%*;o~>)I#JzC8oOYS>d;0NjK51A?fE8-RBNnKwE=CV`;joYIPoEboPxV3aL+{wpA90{ zphE%$o@}IK9e!Rlg;l)s`=Ldga&Sxst(I;L>CD-~c`dZo!?xLkoZGnNvF%v_dsEV) zzT0|<5bXtNUmf;e^{sj~m6P@Lb(vq_xMBaI8mYC7qRc`|x4E$qX_A~~ z4Z}@tqI()t2*a&HrbJex#EkptG!eA{*~Ud^&U72I)fHJ@#iVy=w=Q443{Bs4Qi4X2 zk`MbUmIFDhahd=mT_x2TTrlwI(!GK7bB|2fsLC2}#Z3&!g1Ch(y#^1V`^PDG(;Ci>GO8Kb|f9I!@`I?O4RC5**I-f&{Tz4N^Z|fkcb;j zoRIyC3vL_G4EA3Id+``U!?n1;d3oC*@9mC%ajr1!yvR)XGREoP#R`Z@0rTHhUX^zh z&&oPT%$lq_4PK_^i4%!p6(pwI;~bq%al*_WnMK$K7O}T2X68MWEz5-|%mFH34j#Bt zt^gGuBvbR%C2o6B9I!v_FrqZCioI@UXJPMe4*OG*40cjQ4ii|+yU_~J7?% z5ZWRR8SA{bfjnyS61AQOpiO%n@Z&6pgd}?eVYoCv^QHMes<1Q-M_CR{41p~KjHqp4 zVQ1|Sc=zkE2i>>u)BA-nv9l&UU<&{@nmPa0WMCSJ` zNfnx>O=!SUAQE{rEE#CJQh{J~f*_i2)#5-WZ*!P$W@bi;Yg|x}Lp!@Er%s&`+;l^M z-~Y)^WCcXctw1J$sX?Pb5(A>fxnx}MFqB|H1QLcHh#-a^k5Hqwyetnq@PIt}=%dm6 zxf#q+V_K>qIHhNmXiRjlSQJYeE{vI}f;{oW6C!WNWOl#%HZ*%6r3uebbFn7rP{!Dp zj8T)3pFJV+$0tROjJWAJ15G5q@tu(O9vAugk3^24{Ebqm5&XFwO2a7QZGI(=z=*$= z#N%rL>@)(mVo2|i-+{&Nw__g9h~{|Z&Y_ZfQsnl3ymP6!?E~1d>eC`GC6SKb@PuLK zQj<_f&~$L(SH`#47qaNtXQ$;G-##gS^4!0W^(q>s3P?>EM2W&9S4@UU_iY<`x{K2c zRiItv&?ZS2C-qk@OP0syUy`R^IwSI(AA_(^&xZK9VaGt!>QjDLa7dme(CA^z5q^V& z9Xccz&x1%5ugK^A>+i|Mix*|H?D5E9h?7K3SAnKMVtB1XxJ>FGLc+@VX(x_fC(l0n z6HEudFffN(iQACcx?bWFY0;3(ro|k5nM4iI7@2(VTGS`c!8?{U{zf4v0BJO3_g;rG zG%7#4#Op)XihL9K0l`48E-uQkqetbH^_on9P}K5S zr}5b+6>(jN+Hn$>cG5|srf#V`s(_?%Md>WGXs^Eflw5W2pgi}?OLFz~*GumB+oTAM z8eD+4WTY6(a}??`Zs;?e9Be)C=9;dv0<};s>Cyt-@8a0w)lC@zqhP}isWL+y!<29o& zQu%u~i~I-9PsNaOhceT1c#PaBklJ5)OV6*2#No%@Ao9CEKpN0d8ATeNM@Qk~m`iJ7 z2(&@Kh*}#^ChbMePCFy+VzI3=I@)XvxjcLjA&vBA@#_mgD{1 z!O0p)THy~w?#G1On{I>uzI7s7>hz5NaO1QF+jWP3_!+1PL131Tc^85|&khgsNLCAZqp0 zqSw3yJ8y1c8#5lS4kSz)h4b^MiK$$arG{NgYDeYxSUUXQtH-WgU6 z_!IYS;557sd;Y<}fCpg7EGQM%u}97 zHHfebo`(N_6H_Q|N1eiaLiu6c;ld%VSWR0C2H(;lg0ziBNolxYj-%Eqt}}{qmBPGS z7WHhFi7QJ5EC+mqfnsUqIGAibk!^VNect=Ko0KKD_tW;Fqh|e1++TURdMcp7!V& zk94n^1lG&=v5}!T(*|t75&tsNP(YiIbEq87{2lWCiEBSD`TR&ODFS*`N9S!XqwoF4JBDLbj&aMi~K6F zLE_gY!B{V-@!CbH7=pnk=Cp_=zfO7CW%H;b&(mo8o zC=3!6fvZpW-J@){ddxi>{Ld!8ZzOCMWse$NS2k!s+z3q?8+#|--x-=; zAk)H68w#2#NKa2ojulpLo>gKHdc-<6s0^*2>)As!kcAzp0viDS;H^`B)DZ^?=U7p0 z`yfmNFde^#Icq-+NBySb&XA6P3oCL|;F~3oiz0^4f;ope8$J-u;0l@(~R38WHs zD9Fb4g`M-{{;+{_Kg5gJ`sm4~>$S6CO37uiTu$D{r8}}^4*B4AV;DMiK#9ZZ$jhgk zF*SsR)u>k_k2zr=QY?ol%;A9+$H$fN2yqBzGKP)~#_#)=G2D3@wA%2>)gL*84-Hy&Lz^||)+*2tRzpSwjc7G|cQiCi z37_MZoj^FRu|8zIf^Wc;0(f1*ZV|N%>N|wtG_WLt_aF_&P(D9*(swRihv#uCS{W`E z4$z-pc`G`>M|`>qj5h*eJdw_Iu8zh3O~hpr=uScN>ue1IBB$l0Q=F?kLR`7@*q_Nm zKuh%GrOZ;)GXm_nkszV^^F#?1gA)=ok`UT*qOiWZ2}6DV48K47Lre<(H`oMuKW@GW z&yJ%~L8VE_oJH;NJWjBJ?dpqub>|(w=^i!z@fB#Tg4%{*Ar7t=2}e$&hIp`#8dpf! zYtBI{lMR|PPR!=2#5xF}>s_;QchYdY@$DfU(DDtM4)t!HCI`T6i@*tCmE6R4RP2~+ zPXf%9k$YN@CP$!IE>wNOv@5QoXdmcT@RMPY4 z4s+ao{y4q$LjPP%2MoE=ch;|XcEh0R#*VL91mfDj*DNrvrG!s&wGjkWq*O7VgcZfc zS`lh^{5S+fEgL1$prB>E9a^c|?h!eE8f5K9sDLn>xO&;Uo7;!w_a{WIc@HYx>wE)P z^_8f1pnpjX+0?R<-EgY^)eTfqsH@Vcyv{&F_;?P1RV{bSgar+(+9>%Df9*Igm(X++ z5oZh~l-&HI(30y5zCA&}2>-UbVGf}o9cTX^(s9XqJj-Vx5e;xT^pbW5z$^2D0=O{X71mQk0=g(={5K(GmUBiaBGVET5$UDW1B+%sv z{e_nCSbYFQ=N|k{gXEmV_w?KfHdqguaBd6rcGxew8Q7OqjnEhfkGZVMOs!z^0H3oQdRh!_bfozd_Skt zc({mdg6>j(d2LAe4P|dH>YKvsbh^bJN4)aCAGMN0{bxjw9AU5i%8bB}mJexiDM!12Q%Rh7!%`8RSoGl*tG*v0Z%{6fu&~|^m;TzrI^S6FEnb*7C=eh(i!4?!v+LG(D z5xgfaUpO&{yRh{mhoat6qp~`QZIX-0A znsQOzBUuiko4%_HLj*R=9%JN&qQ~q8u#@y};dQ(Ed{(n*RgtX={+i#iL5Kq)Q zx7`(Z9bGIUNw6$h((LPq^7@DCBP{Y)4uY(TX!pheaWHJmt-*Yux{gnXyeMIN3X`kM1#R#W^Ux9m83-J?!~nz)}1-jNftmyif(k3P-)rvjTZW zq+;6CtA1C;)|0Y(ATzJq4fVrv+UYg^4{YFFYZUH{;A}}}W>6#&H!T~YEJa~H3F}V4 zDAwLiGqw3P&IHt#e99rrY!`9<`Rvce^9d#gD0^R%1lYaIJ&uUFDl_p4?;$0v8wr$m z0;w{P`M-w_N$doNv};B(8g*OPEXr!u8#U2f*6bGNR+=tDzIMX~e`du3GmN`;4>69L(d`VO3vLCh7L_Eh`t!T_J8}na;0%o zJqIqQuRT10lSsrfH=BkzB{SxMhPM{7ng|deFOwB|T4T zrCiRBwC?%?QQm*a?Ny}m`6&++X8XC5e)Y&9{Y5?tYsuGHn$CQ@F(LfY1TTVAT$t=z zw4(5b1jH$fil#Sj$b6+lg;f741x{I6_BMw#A8vi_$Nyk}VrOzB1@?0+<1FI_^&G@k4%@vf`%>>Q zwIWBMdC}*zV%meMH-uv?9F(k?j|rIrD0J}8CV#PaU6G~K??u$q2p_N5E9){1mzq}& z`aZ9`d@m-#9S3O|NiHNvFg!;}2;`g)!n-Ste8F<5Qu#T?B)x+fqIlX|PHZrC3`=Gx zY6D=cTcdE;XO8gTFSROle0jPVQPa?)w6d~d25=ushQ@KuDn5NX2D{mwc>y)L@;n(4 zX~1_fkcBmmma>3PjNOBl6xqT^PljuHF+?otKGXI@L8Sp)E~l+;eIAztVzEYlkC9lqwL!-b=^@sQhMBO7`eHZ`B#G)jnwZ;{rPE}`vV5InD#j&cRK`luSV6Sy%= zEFX%U1b^FI^?70F!lUeNHd?BXjjTO-5VjRJzl}!Q=i|+MnRR{cE}?b)OuSY_P8oow zBF?!N&m*xbt=7ew{rblP|EHPXglzLdb-)NyJ)=Wi-`j-}-D98)<{@hH+(kZ5;&w`@ zLe^ywJOk|Sax$Zjfud9EIAPFBLBRvfx}Hx_5R{iG>TMQozu-(^?{3JO?CXdtxy1A^ zM)a?r0#nTxa0S|SZ<=c2<95*qj@wSXD|O*FzzF!hvg9~JGwl@bOApsL2lyV}6(4ow zbN#VF#8q0h;bIB7jr}<`Hr}-MbhE;Av+BttiMK0#6l?J$nUhOjhRarGS+N-thOqa$ zdKv^bw#MhSM((!af6yxV;jo~3GZ(@KHQI*7!~|&W{h~G3`<4^ z8;6m8gSLSD>uuidAYRCjl>XWARK|L`+bS)wu=lh+ugf~gDlJUt;O4&Bfr#k{~Wpa-NK`_;g=?!0CS8qx|XLCqS)P zlyadf{1PtoTFym7&jM6zO3?@eJiRU6OGBNLe*FW2cowz*ie!o~>FLFboxF6e*xK>G z3nh(po6*1}0$f0@*qb$QCjg7RL(8(hiB-q&O0+Vt}79_}`lV77hsnJKHp73UYH ztmKJzA7eI|k}b1TYRlth5-&_A^DC=$|F0-`dbKzX3=u;Pa^^BZc1w@jm6}!ibgZ=Bk4}_a z9XFHEr&JKpUG`2|a7F668zvQpN;qm5} zq-C%C1q#Swu9}FRoC>6>O`n7}*e9N*T7GxLNBGr|#ius#6_z1Ch-6UQNej|P?;ZrK zx=`z;1FY-B=MHQW3)o1?oNI+QT`Ci-t$fp*PNY*Q7yqU^{)Mp9c^{EDVA+H&;MrN} zCRo%MOE~H(v^sD$oD=eJz`EiC$}ft)g%OXmx+swpcYYVDh z0ZQQo)AQ$^*~>_cU2}YE`i({Hvs}_;tgV>|*9<#`A46#>9~UBhE+QjLoQXwSJyK%kH6*H5`tjE}~xQ!3#zxy9tW z#{cp(Wzcc@VRLmWxDP^Nj;s-!U@^S}3ml0K=~P6l0^4G(FjV3VU(Ao~vOdXc#oT@f zfALA6`P;A`V931eqqBCHxLoczmTl8PXFMgG5TQVl#w5`#4(TWN?RkGFXo-kFQ|xoV z*JkSpPBd&Jo4>buP`;20Q83c|PG4QXHqUVq^7Km*RyOy`k3UNWIV@FRJ%1OQa_3gp z!3mkIs?|g)n=0u_lTcPs6?*e>FShHlwAz{l&*SK^CzTE|ODgNgiWJ5heKy#sO_@>z zhL|nJ-2OLMOv@1^I>m_b)XCful`F22oW^D{5gP46_z(J-4AnIw3)lc?!VqMv)1wfF zcHuo)u|OqzYmd(XAyY^>s6snrzp~W`V2pKi)#3PqU5GuPTkDtH0PefN#^wO^7>C+? zxD>~a`u5v5?S1!O%o5%UqtE)YiKRYrZOg9K8FBT;pW&HxPVUUKRC)``M5+qZ4)&4J z8BS6ZKVj)TamHI^e*H(2q!!Iz4prAVF zt@W)dY)L;Pe))z+tY^|T#fiy%)G&sseMs6b!LH*qU#vaV+o#6V+o&b1UnT6%#_wv| z;~kRTBYsX59|H|}dI0|s*oB-S=QGd^F+t<02XT(lch zmvBPHUH|sI9NXEf7`ZoBeF_TFL%#*@rS2ZM4(~dsMClay{&2{+wN%h+SO={dH+8Fb z=2`^r<8Ph@pYPQ5WV&6@d4cEADsRX=l#GV~rDdKGpOOrC6WD7- z)#G&QL{e`Rz$<^H`FWGmD9V51)_octU#mj1ck7_y5Yn|z9t8g)a!YwjL^DE?3Z~`il>!xv1bUF)C?KOmD{Kyacn|u*n<-zIC54 zUgk>RMG^pW*K&r^%Ns*tv}V*$#plb9j65b6zqF!l`38>c*XpEqa?>3=ZU8wH7`{0@ zNO5%R<7ust@dNMgZdvvTzsWw~!_AM3_Rx4gw;@)nf6m^}*x7r(MSBr6v7T1nFXt)% za9}t)QSk4xw}9QGi!*w=c=$Y!@4I*ze9y*+>uHO4Bn=zF@Zu0Az4X#}wv};uecRW! zmT~F>o$@(;=B>fS1H2>ev}JEzIcjcMZE}U4i*zS~LNLFlheP1oCc?MbbO>odSb1?a z$@AJ(MNGcg>OR_RWN)26JgHuMu9Z<-CR`>I=|p9Qb;b6VlxhCmrEL-7M{0&0Yh_E^^g6(Epsg^BK=aS4iAO z4P+O6K>u6?s2*4QzEnB$(Ac-s?BDxY!i5`r6>WEexkrUwHt@$0T@&bG^%4?-Nz8102z@3 z%pa$JTu1g_Ab|F9SFuC{H4%`8G&_!vT4z*<5qMHdMQ_#5rZ}7+B{R`!)^UA+FsZei z^(0{k_U`7Xse}+-VSiE-be6S}DixYp`;s14xjQU;Le4a2Iw-(^Vye4v5tkm|Kk`j0 z4>ojBLFx7iTjp8U;CKfY4wt|w95-+_M_B|nHf|>Gvo#)L@YTgV6%t-|YPU#hP`M}Q z8{W*&tt0*vtYx!yPyP$$QlPdL7S|W*n#6dVaGZ6fYhN)S?4qzR8v0)~Eb0Ef#zBh#STl z<9#}n){@PBjh+19gZ^d(;*N(Bl!YCX9{&e_QTEJ|AF?y#nyrfTAQ=Xdhnkh(77d%lYHNS?z1Zg|i`t$1$sILg{Q~DI1|js~^KyRW9Era43shX*&BA;)$~nOiz^GcAsCj zbLWJXwM4C*gOYqtiBB;s;O(EX+c)pWMc)}B8098%9C`|qIQEET1=zpubaXWvu{dJ8 zNc-A>%sWXdqx@d7l+`_=Oi#yYtdUi4j1U2QtA>>jPJ%tP zfB?Ph^;P>O?Q(=o7Ei5qS4o*^4&EC8J!tlwbF)JwR?d@$*WO~9Xg=sX=UWKpTC@03yK<1A zc898k7>3-kMIdIz)=};M+#lPoD zjmtd@?esWwG+c{ITkS9?DEb@(QnUJq*RG3uuVUvyqgeUCccP>1SUGCkcr%$TBI!2% zJAI7?a5Ci}Io^T`vFnn_JA$wL(qf*oCY#8Y9BS(dPuGBZt#OMd%5h%r2c zW?Q$Fm5VpXOAAbG*eNqT&WwgMykx?Bd~}kzQM~W{X0idc4>c>YME;W)74}5fusYf; zCVZE!9hZdyKd($0P1K|{5f7u(i5rdoVcRP)8lS&ZXs1q% z86RGL9WEi5wU((x+eo-6Td0QPcGd@*;9H3ZJFsyq^6J_ftw~31VUKn~(`N*n%pVOI z8A*Kz&k3ID<#z{k@z;2P$nC@n`^d#p+J8E|YN3bu7BC@&{$k?0N*)}c-mx-x&hc{a z)+@kf{)Du#H&B}=!mBLQ6O!(NAHQ8BN;N zl*?A4D%=E7(?kP}CQ{{(o>=2VZ3mb8F!b-d2S?$*}s6EP?BuVEaLW782nG&vGsvA6Xgy44o? z9_`>L)eHG4S9+$;j!@p6xOLFi4ft+*4+OlYrnSJLU7E@kx5oVyDjtzCd{C3MgWhDn zba#C>;j1s7!TY!F11Oy|*%{aqDBrT%K^)ber8F3jl_ca-$?s5}#(xzsc!iWviygZP zsQs>H7?+i{XMYGk9mC0coi312Nc`BYBdVy)(9&dSRMD);(k_w=6m3U$y;KM41Sqjp zwvc9h#00CVk(a|^T!~|??URK}a|s+z8^y9Q;&r(>Jwvd5^sMkUn76<{yYtp)@FclJ z`Kbw-i>w+B8d>Q38Q`5_PXLsI{9{69*DAgp|FXo>8LO&cWU?f7P%?D5*-zvmWGI=T z=u%p}?wf2?!=8+Z$VUCs1T9SWW(I;RHT8b@ZD{GP5>X8ey$_du5@LvicG+c-U9A1N z{(GO6nye3kqLVtlH!Ze56udSuY$3etU%!q@}?Yi64VYH{!b!V$EvNx9JQgc&| zdjyV(L^$mXn?@Fl4?~xE>=-=9`_eV6Iz~JmRKBFlq~#xKNyHxbGv}3fxEVaz0o~}+ zPRu<}^AqOOiW4|K=cFY`5I8+QD)RVi zcxQ(f8^OjjhM5S*OnPDnrfAXCbCE z`YevTvci?HIbR5m1k1W35ykd|DL;x`w6Fr|CQbaFXL#PPg^o+nk4_9l;6hqIn7ODc zRa`TS4WW#u1>X^3wvu6=$p)VmIiX&IMxpE(z7u@odR=!+^ZpWg(4a#CeyH2y;M?$|-7Lu>ePK7VpXTaSEid!!vWL*_ zrI7U0g2FtG9N(C+j2rHl!!7`{OI?U$Y&@wGq_!R3(Lq;;V`+~?)#a#$-)8;jbE4=2L6=qr z1EyJUiuc~kl0t^xRk?Os#g&U$Y#)|FF8O~H78`Z#pQ_YW1(TN&l-;oZnL!jZ38#AN zJLP(YqV7Q4<=@vSi3juN%2?E9!Tg8VBq}ZwKx;H&WGiVW2gc?IEnimiF)QLtNLW64 zRzLZ~ofF34M&$i~9Z*l5mh1K+0F;l8afgcfrj>2sl-f8M@|zg_ff(OAAv?(?NT`$|h-fn0g? z3L~$H9TwT2FGvuaH9{mEE;a|nPH}>MJwI|MwXe`QCihGP+*9%Y!5VSU#aG(OgDD*$ok1ju!Ra;PakVo;$~gtwvN5^Qq3FL|MHz~jCDP$9 zCZLL`P+;)y(^`4!Fh2sw#r#U|fA-d1xND-%jN4tsOIS8v4xH(%lrFnE9PVV?FANc{ zYH+mOn%g43dW%a5C{V(uOxaC>!a3w%Kg$!zX!q4HULclaXcGG;qN|0j;*~G3&}R(? zP?@8aqJ?Z=J_0;3U{W>|(PtRpq%2a|cqwHmY-UToLeu}fZ`L>sLMLC7@eu9>4w&J? zlG;q5kg!tj6=RXDRlgbg<+=$e@2Aw&P43TJUDhtz6`6Z@9)89Hv>?OKfsJB_Q=JNP z^e|kh!YNEC%%x+shvHThSiVFVvBlL>bX(UUt)Kr7G)nSXU#Og(W6(b#`>*)>jVUb? z-WgUy+gGTQ&2nhnvK{Z==#}mDc|75ZSM-eR??7hwbnK90XS7UEmp9_)z43q1-&n9< zaXxTTuP9hHvD=fTVR$XhIzJz`VLanE2 z4=;7%8k>(=qFx8-x9y+Q2MT~4HQ-{&F-u)`!GhfR;s#PwY9PsC2%c%HrXI+0(ThKd zcO4~w{&6G5!`~p6Ig{qf-r!h`GM0&-(jJs&2j zlYqK<>`>kEZx$eu5Q^TT$dDGv`|VQCGM?-CtQ)7MjcnbG3qu4Q5k*rzUM{4m7wD17 zGrC_i!TEEmp%lgGr3+b|@D3=^t!7)&kj5 zquCCsjw7*rhJ_c)`ch=p$7T^I%s+ioMC;Un9-Zn_qEHe^k}Lo`xc*i|U3F6uPxBB! zSZ7fY>uc=`?cs(juk8-n&du+BZIahc04)pkAKO)?rpoJ8!s}WVa5JvIyUeL?u|g@{ zZ(<~L=Gs}^5e!LFvs70a?994a`$XbI#Yj9SumG2FG>~9g{O-dz?W$yOLL)Z^!!Xg9 z=Arqi=(Q&9XT+lEhC0o9a7?&eq}#PS58yiAZlL$%znK$g4OY>=T0~Pr%EN?H0(a>* zWv;1%@hiQbOWhuA1${Rquh9_+-G!DJrBBLFpqbcqxeImi9jvO#)~;j@YN8_J1x@@R zqSsoawSJeBsod~f?N9psnVnMQO4YoSA!+XPkn+l(vy)c+e-(vOzh1^T-a$;Yw6)`m ztG`bSEjw;~PC{CnR3vrr^>A@fyFOmt>(2NkbkFhRR^o8@e7&x)fI6;9%EV4lttpY5 zk2fvfYOa_`f>IE$ri*z1OKqD^-MRPU%b6_nkRGc|rXfDtr8sL3lVhAhDMIkg2 z)Sr1pBZYB~6I}!wP+L<&Cc`QdH*7}PBQJ>xfyE0V6vvf^--wSK8yn-Qq$3GZxlNP= zhg=CT+U_`NLGD^()07gEk_fd-QfQ?@72?FTMAA1TNtyNFzly?VeK1-4mSi~d>3SB%%DyP(`gQY3R_$dL>Z5B|`*cMNJ=H{13r8}DF@lR==Ec7>WEF#VO7 z#f&27UeY5f4ZX4@eopp;V(nWckQn_jhG58r}lFNvIx}eck{3{kO;VM zI?ximG4h!~qa7D4?WYSAk-!8+j1;QFrC6S%lRuas9x(&7i9{}Tmw3fVM*v7u4~NM_ z&X62cANT3Ch7LYx`dV&YG@AWyijyb8&v7FiI48{dUqR!a*zx^!o53g1-GAcy{|+X| z{^umn32NR(ouYro$6n~HH3K%8)4yobkWTm4-DpH$2GxJU(0`(lF&c9YHqsBS{|--3 zxgqasMu>8PUGi_Es-eP&;6dnY;s2DxO!PX~BDf*FCLRCLi0rQk74`{(KKz&9pTQpm zN@(^6wgg-L50e`r_z5aBCS^hRAB~2HkqED#s%u3Un%4ZsNf;3lY^bmr_1D{f+uk1t zO`p!!ZL|M93Zh0pg__?-{r_$I7IY=`lDmC_;y-EEe@y-V)%pK^bv_Faxkn05p1}9N PfqtaK - - , - document.getElementById('root') -); +const container = document.getElementById('root'); +const root = ReactDOM.createRoot(container); +root.render();