g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"9436550e\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"home-works:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/home-works/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkhome_works\"] = self[\"webpackChunkhome_works\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// extracted by mini-css-extract-plugin\nexport default {\"App\":\"App_App__to+Xd\",\"hw\":\"App_hw__LOnpJ\",\"hwTitle\":\"App_hwTitle__n+eAY\"};","// extracted by mini-css-extract-plugin\nexport default {\"message\":\"Message_message__W3vD1\",\"imageAndText\":\"Message_imageAndText__Gq0xv\",\"text\":\"Message_text__ZeSXz\",\"name\":\"Message_name__6ZhcR\",\"messageText\":\"Message_messageText__GzGYd\",\"time\":\"Message_time__39e3j\"};","import React from 'react'\r\nimport s from './Message.module.css'\r\n\r\n// нужно создать правильный тип вместо any\r\nexport type MessagePropsType = any\r\n\r\n// нужно отобразить приходящие данные\r\nconst Message = (props: MessagePropsType) => {\r\n return (\r\n \r\n
\r\n

\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.user.name}\r\n {/**/}\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.message.text}\r\n {/**/}\r\n \r\n
\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.message.time}\r\n {/**/}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Message\r\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// extracted by mini-css-extract-plugin\nexport default {\"sendForm\":\"MessageSender_sendForm__TZa6A\",\"textarea\":\"MessageSender_textarea__VkO-y\",\"button\":\"MessageSender_button__jYZFi\"};","import React, {useEffect, useRef, useState} from 'react'\r\nimport { message0 } from '../HW1'\r\nimport s from './MessageSender.module.css'\r\n\r\n// компонента, которая тестирует вашу компоненту (не изменять, any не трогать)\r\nconst MessageSender = (props: any) => {\r\n const M = props.M\r\n const textareaRef = useRef(null);\r\n const [messages, setMessages] = useState([])\r\n const [text, setText] = useState('')\r\n\r\n const onChange = (e: any) => {\r\n setText(e.currentTarget.value)\r\n }\r\n\r\n useEffect(() => {\r\n if (textareaRef?.current) {\r\n textareaRef.current.style.height = '0px'\r\n textareaRef.current.style.height = textareaRef.current.scrollHeight + 'px'\r\n }\r\n }, [text])\r\n\r\n const addMessage = () => {\r\n setMessages([\r\n ...messages,\r\n {\r\n id: messages.length ? messages.length + 1 : 1,\r\n user: message0.user,\r\n message: {\r\n text,\r\n time: new Date().toTimeString().slice(0, 5),\r\n },\r\n },\r\n ])\r\n setTimeout(() => setText(''), 4)\r\n }\r\n\r\n const onKeyDown = (e: any) => {\r\n e.key === 'Enter' && e.shiftKey && addMessage()\r\n }\r\n\r\n return (\r\n <>\r\n {messages.map((m) => (\r\n \r\n ))}\r\n\r\n \r\n \r\n \r\n
\r\n >\r\n )\r\n}\r\n\r\nexport default MessageSender\r\n","// extracted by mini-css-extract-plugin\nexport default {\"friendMessage\":\"FriendMessage_friendMessage__oxc1L\",\"friendImageAndText\":\"FriendMessage_friendImageAndText__5xGw5\",\"friendText\":\"FriendMessage_friendText__D6jwi\",\"friendName\":\"FriendMessage_friendName__R07mc\",\"friendMessageText\":\"FriendMessage_friendMessageText__8tKdW\",\"friendTime\":\"FriendMessage_friendTime__-Vji2\"};","import React from 'react'\r\nimport s from './FriendMessage.module.css'\r\n\r\n// создать тип вместо any и отобразить приходящие данные\r\nconst FriendMessage = (props: any) => {\r\n return (\r\n \r\n
\r\n

\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.user.name}\r\n {/**/}\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.message.text}\r\n {/**/}\r\n \r\n
\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.message.message.time}\r\n {/**/}\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default FriendMessage\r\n","import React from 'react'\r\nimport Message from './message/Message'\r\nimport MessageSender from './message-sender/MessageSender'\r\nimport s2 from '../../s1-main/App.module.css'\r\nimport FriendMessage from './friend-message/FriendMessage'\r\nimport avatar from './avatar.png'\r\n\r\n/*\r\n* 1 - описать тип MessageType\r\n* 2 - описать тип MessagePropsType в файле Message.tsx\r\n* 3 - в файле Message.tsx отобразить приходящие данные\r\n* 4 - выполнить пункты 2, 3 в файле FriendMessage.tsx\r\n* 5 - сделать стили в соответствии с дизайном\r\n* */\r\n\r\n// нужно создать правильный тип вместо any\r\nexport type MessageType = any\r\n\r\n// структуру объекта не менять\r\nexport const message0: MessageType = {\r\n id: 0,\r\n user: {\r\n avatar: avatar, // можно менять\r\n name: 'Some Name', // можно менять\r\n },\r\n message: {\r\n text: 'some textsome textsome textsome textsome textsome textsome text', // можно менять\r\n time: '22:00', // можно менять\r\n },\r\n}\r\nexport const friendMessage0: MessageType = {\r\n id: 100,\r\n user: {\r\n avatar: avatar, // можно менять\r\n name: 'Friend Name', // можно менять\r\n },\r\n message: {\r\n text: 'зеркальное сообщение для тренировки css', // можно менять\r\n time: '22:00', // можно менять\r\n },\r\n}\r\n\r\nconst HW1 = () => {\r\n return (\r\n \r\n
Homework #1
\r\n
\r\n {/*проверка отображения (не менять)*/}\r\n
\r\n \r\n \r\n
\r\n\r\n {/*для автоматической проверки дз (не менять)*/}\r\n
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default HW1\r\n","// extracted by mini-css-extract-plugin\nexport default {\"affair\":\"Affair_affair__+qN8U\",\"name\":\"Affair_name__18UcR\",\"closeButton\":\"Affair_closeButton__1WdDr\"};","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"Affairs_buttonContainer__GO-pE\",\"all\":\"Affairs_all__w32T9\",\"low\":\"Affairs_low__qCXMX\",\"high\":\"Affairs_high__il1Im\",\"middle\":\"Affairs_middle__BKl9E\",\"button\":\"Affairs_button__SFIcj\",\"active\":\"Affairs_active__KdOmE\",\"affairs\":\"Affairs_affairs__6+xm7\"};","import React from 'react'\r\nimport { AffairType } from '../../HW2'\r\nimport s from './Affair.module.css'\r\nimport s2 from '../Affairs.module.css'\r\n\r\ntype AffairPropsType = {\r\n // key не нужно типизировать\r\n affair: AffairType\r\n deleteAffairCallback: any // need to fix any\r\n}\r\n\r\nfunction Affair(props: AffairPropsType) {\r\n const deleteCallback = () => {\r\n props.deleteAffairCallback(props.affair._id)\r\n } // need to fix // создаёт студент\r\n\r\n const nameClass = s.name + ' ' + s2[props.affair.priority]\r\n const buttonClass = s.closeButton + ' ' + s2[props.affair.priority]\r\n const affairClass = s.affair + ' ' + s2[props.affair.priority]\r\n\r\n return (\r\n \r\n
\r\n {/*создаёт студент*/}\r\n {props.affair.name}\r\n {/**/}\r\n
\r\n
\r\n {/*создаёт студент*/}\r\n {props.affair.priority}\r\n {/**/}\r\n
\r\n\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default Affair\r\n","import React from 'react'\r\nimport Affair from './affair/Affair'\r\nimport {AffairType, FilterType} from '../HW2'\r\nimport s from './Affairs.module.css'\r\n\r\ntype AffairsPropsType = {\r\n data: any // need to fix any\r\n setFilter: any\r\n deleteAffairCallback: any\r\n filter: FilterType\r\n}\r\n\r\nfunction Affairs(props: AffairsPropsType) {\r\n const setAll = () => {\r\n props.setFilter('all') // создаёт студент\r\n } // need to fix\r\n const setHigh = () => {\r\n props.setFilter('high') // создаёт студент\r\n }\r\n const setMiddle = () => {\r\n props.setFilter('middle') // создаёт студент\r\n }\r\n const setLow = () => {\r\n props.setFilter('low') // создаёт студент\r\n }\r\n\r\n const cnAll = s.button + ' ' + s.all + (props.filter === 'all' ? ' ' + s.active : '')\r\n const cnHigh = s.button + ' ' + s.high + (props.filter === 'high' ? ' ' + s.active : '')\r\n const cnMiddle = s.button + ' ' + s.middle + (props.filter === 'middle' ? ' ' + s.active : '')\r\n const cnLow = s.button + ' ' + s.low + (props.filter === 'low' ? ' ' + s.active : '')\r\n\r\n const mappedAffairs = props.data.map((a: AffairType) => (\r\n \r\n ))\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
{mappedAffairs}
\r\n
\r\n )\r\n}\r\n\r\nexport default Affairs\r\n","import React, {useState} from 'react'\r\nimport Affairs from './affairs/Affairs'\r\nimport s2 from '../../s1-main/App.module.css'\r\n\r\n/*\r\n* 1 - описать типы AffairPriorityType, AffairType\r\n* 2 - указать нужный тип для defaultAffairs\r\n* 3 - дописать типы и логику функции filterAffairs и проверить её тестами\r\n* 4 - выполнить пункт 3 для функции deleteAffair\r\n* 5 - указать нужный тип в useState с affairs\r\n* 6 - дописать тип и логику функции deleteAffairCallback\r\n* 7 - в файле Affairs.tsx дописать типизацию пропсов\r\n* 8 - в файле Affairs.tsx дописать логику функций setAll, setHigh, setMiddle, setLow\r\n* 9 - в файле Affair.tsx дописать типизацию пропсов\r\n* 10 - в файле Affair.tsx дописать функции deleteCallback и использовать\r\n* 11 - в файле Affair.tsx отобразить приходящие данные\r\n* */\r\n\r\n// types\r\nexport type AffairPriorityType = any // need to fix any\r\nexport type AffairType = {\r\n _id: any // need to fix any\r\n name: any // need to fix any\r\n priority: AffairPriorityType\r\n}\r\nexport type FilterType = 'all' | AffairPriorityType\r\n\r\n// constants\r\nconst defaultAffairs: any = [ // need to fix any\r\n {_id: 1, name: 'React', priority: 'high'}, // студенты могут изменить содержимое name и количество элементов в массиве, ...priority не менять!\r\n {_id: 2, name: 'anime', priority: 'low'},\r\n {_id: 3, name: 'games', priority: 'low'},\r\n {_id: 4, name: 'work', priority: 'high'},\r\n {_id: 5, name: 'html & css', priority: 'middle'},\r\n]\r\n\r\n// pure helper functions\r\nexport const filterAffairs = (affairs: any, filter: any): any => { // need to fix any\r\n if (filter !== 'all') return affairs.filter((a: AffairType) => a.priority === filter)\r\n\r\n return affairs // need to fix\r\n}\r\nexport const deleteAffair = (affairs: any, _id: any): any => { // need to fix any\r\n\r\n return affairs.filter((a: AffairType) => a._id !== _id) // need to fix\r\n}\r\n\r\nfunction HW2() {\r\n const [affairs, setAffairs] = useState(defaultAffairs) // need to fix any\r\n const [filter, setFilter] = useState('all')\r\n\r\n const filteredAffairs = filterAffairs(affairs, filter)\r\n const deleteAffairCallback = (_id: any) => { // need to fix any\r\n setAffairs(deleteAffair(affairs, _id)) // need to fix\r\n }\r\n\r\n return (\r\n \r\n
Homework #2
\r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default HW2\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || new Array(16);\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || stringify(b);\n}\n\nexport default v1;","// extracted by mini-css-extract-plugin\nexport default {\"greetingForm\":\"Greeting_greetingForm__5eaVf\",\"inputAndButtonContainer\":\"Greeting_inputAndButtonContainer__0wY6N\",\"error\":\"Greeting_error__uaO2S\",\"input\":\"Greeting_input__gk-pO\",\"errorInput\":\"Greeting_errorInput__vsjaO\",\"button\":\"Greeting_button__3hBNs\",\"text\":\"Greeting_text__51HVK\",\"greeting\":\"Greeting_greeting__40fll\"};","import React, {ChangeEvent, KeyboardEvent} from 'react'\r\nimport s from './Greeting.module.css'\r\n\r\ntype GreetingPropsType = {\r\n name: any // need to fix any\r\n setNameCallback: any // need to fix any\r\n addUser: any // need to fix any\r\n onBlur: any // need to fix any\r\n onEnter: any // need to fix any\r\n error: any // need to fix any\r\n totalUsers: any // need to fix any\r\n lastUserName?: any // need to fix any\r\n}\r\n\r\n// презентационная компонента (для верстальщика)\r\nconst Greeting: React.FC = (\r\n {\r\n name,\r\n setNameCallback,\r\n addUser,\r\n onEnter,\r\n onBlur,\r\n error,\r\n totalUsers,\r\n lastUserName,\r\n } // деструктуризация пропсов\r\n) => {\r\n const inputClass = error ? `${s.input} ${s.errorInput}` : s.input // need to fix with (?:)\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default Greeting\r\n","import React, { ChangeEvent, KeyboardEvent, useState } from 'react'\r\nimport Greeting from './Greeting'\r\nimport { UserType } from './HW3'\r\n\r\ntype GreetingContainerPropsType = {\r\n users: any // need to fix any\r\n addUserCallback: any // need to fix any\r\n}\r\n\r\nexport const pureAddUser = (name: any, setError: any, setName: any, addUserCallback: any) => {\r\n // если имя пустое - показать ошибку, иначе - добавить юзера и очистить инпут\r\n if (!name.trim()) {\r\n setError('name is required!')\r\n } else {\r\n addUserCallback(name)\r\n setName('')\r\n }\r\n}\r\n\r\nexport const pureOnBlur = (name: any, setError: any) => { // если имя пустое - показать ошибку\r\n if (!name.trim()) {\r\n setError('name is required!')\r\n }\r\n}\r\n\r\nexport const pureOnEnter = (e: any, addUser: any) => { // если нажата кнопка Enter - добавить\r\n if (e.key === 'Enter') {\r\n addUser()\r\n }\r\n}\r\n\r\n// более простой и понятный для новичков\r\n// function GreetingContainer(props: GreetingPropsType) {\r\n\r\n// более современный и удобный для про :)\r\nconst GreetingContainer: React.FC = ({\r\n users,\r\n addUserCallback,\r\n}) => {\r\n // деструктуризация пропсов\r\n const [name, setName] = useState('') // need to fix any\r\n const [error, setError] = useState('') // need to fix any\r\n\r\n const setNameCallback = (e: any) => { // need to fix any\r\n setName(e.currentTarget.value) // need to fix\r\n\r\n error && setError('')\r\n }\r\n const addUser = () => {\r\n pureAddUser(name, setError, setName, addUserCallback)\r\n }\r\n\r\n const onBlur = () => {\r\n pureOnBlur(name, setError)\r\n }\r\n\r\n const onEnter = (e: any) => {\r\n pureOnEnter(e, addUser)\r\n }\r\n\r\n const totalUsers = users.length // need to fix\r\n const lastUserName = users[users.length - 1]?.name // need to fix\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default GreetingContainer\r\n","import React, { useState } from 'react'\r\nimport { v1 } from 'uuid'\r\nimport s2 from '../../s1-main/App.module.css'\r\nimport GreetingContainer from './GreetingContainer'\r\n\r\n/*\r\n* 1 - описать тип UserType\r\n* 2 - указать нужный тип в useState с users\r\n* 3 - дописать типы и логику функции pureAddUserCallback и проверить её тестами\r\n* 4 - в файле GreetingContainer.tsx дописать типизацию пропсов\r\n* 5 - в файле GreetingContainer.tsx указать нужные типы в useState с name и error\r\n* 6 - в файле GreetingContainer.tsx дописать тип и логику функции setNameCallback\r\n* 7 - в файле GreetingContainer.tsx дописать логику функций pureAddUser, pureOnBlur, pureOnEnter и проверить их тестами\r\n* 8 - в файле GreetingContainer.tsx вычислить количество добавленных и имя последнего (totalUsers, lastUserName)\r\n* 9 - в файле Greeting.tsx дописать типизацию пропсов\r\n* 10 - в файле Greeting.tsx вычислить inputClass в зависимости от наличия ошибки\r\n* 11 - сделать стили в соответствии с дизайном\r\n* */\r\n\r\n// types\r\nexport type UserType = {\r\n _id: any // need to fix any\r\n name: any // need to fix any\r\n}\r\n\r\nexport const pureAddUserCallback = (name: any, setUsers: any, users: any) => { // need to fix any\r\n const user = { // need to fix\r\n _id: v1(),\r\n name,\r\n }\r\n setUsers([...users, user])\r\n}\r\n\r\nconst HW3 = () => {\r\n const [users, setUsers] = useState([]) // need to fix any\r\n\r\n const addUserCallback = (name: any) => { // need to fix any\r\n pureAddUserCallback(name, setUsers, users)\r\n }\r\n\r\n return (\r\n \r\n
Homework #3
\r\n {/*для автоматической проверки дз (не менять)*/}\r\n\r\n
\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nexport default HW3\r\n","import React from 'react'\r\nimport s from './App.module.css'\r\nimport HW1 from '../s2-homeworks/hw01/HW1'\r\nimport HW2 from '../s2-homeworks/hw02/HW2'\r\nimport HW3 from '../s2-homeworks/hw03/HW3'\r\n\r\nfunction App() {\r\n // для дз 12\r\n // const themeId = useSelector((state: any) => state.theme.themeId)\r\n // useEffect(() => {\r\n // document.documentElement.dataset.theme = themeId\r\n // }, [themeId])\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {/**/}\r\n\r\n {/**/}\r\n
\r\n )\r\n}\r\n\r\nexport default App\r\n","import { ReportHandler } from 'web-vitals'\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(\r\n ({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry)\r\n getFID(onPerfEntry)\r\n getFCP(onPerfEntry)\r\n getLCP(onPerfEntry)\r\n getTTFB(onPerfEntry)\r\n }\r\n )\r\n }\r\n}\r\n\r\nexport default reportWebVitals\r\n","import React from 'react'\r\nimport ReactDOM from 'react-dom/client'\r\nimport './index.css'\r\nimport App from './s1-main/App'\r\nimport reportWebVitals from './reportWebVitals'\r\n// import { Provider } from 'react-redux'\r\n// import store from './s2-homeworks/hw10/bll/store'\r\n\r\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement)\r\nroot.render(\r\n \r\n {/*для дз 10*/}\r\n {/**/}\r\n \r\n {/**/}\r\n \r\n)\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals()\r\n"],"names":["aa","require","ba","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","t","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","qa","ra","toUpperCase","sa","slice","oa","isNaN","pa","call","test","na","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ta","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ua","Symbol","for","va","wa","xa","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","iterator","Ja","Ka","A","assign","La","Error","stack","trim","match","Ma","Na","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Oa","tag","render","Pa","$$typeof","_context","_payload","_init","Qa","Ra","Sa","nodeName","Ua","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ta","Va","checked","value","Wa","activeElement","body","Xa","defaultChecked","defaultValue","_wrapperState","initialChecked","Ya","initialValue","controlled","Za","$a","bb","cb","ownerDocument","db","Array","isArray","eb","options","selected","defaultSelected","disabled","fb","dangerouslySetInnerHTML","children","gb","hb","ib","textContent","jb","kb","lb","mb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","nb","lastChild","nodeType","nodeValue","ob","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","pb","qb","rb","style","indexOf","setProperty","keys","charAt","substring","sb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","tb","ub","is","vb","wb","target","srcElement","correspondingUseElement","parentNode","xb","yb","zb","Ab","Bb","stateNode","Cb","Db","push","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","addEventListener","removeEventListener","Mb","apply","n","onError","Nb","Ob","Pb","Qb","Rb","Sb","Ub","alternate","return","flags","Vb","memoizedState","dehydrated","Wb","Yb","child","sibling","current","Xb","Zb","$b","unstable_scheduleCallback","ac","unstable_cancelCallback","bc","unstable_shouldYield","cc","unstable_requestPaint","B","unstable_now","dc","unstable_getCurrentPriorityLevel","ec","unstable_ImmediatePriority","fc","unstable_UserBlockingPriority","gc","unstable_NormalPriority","hc","unstable_LowPriority","ic","unstable_IdlePriority","jc","kc","nc","Math","clz32","oc","pc","log","LN2","qc","rc","sc","tc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","uc","wc","xc","yc","zc","eventTimes","Bc","C","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Map","Oc","Pc","Qc","Rc","delete","pointerId","Sc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Uc","Vc","priority","isDehydrated","containerInfo","Wc","Xc","dispatchEvent","shift","Yc","Zc","$c","ad","bd","ReactCurrentBatchConfig","cd","dd","transition","ed","fd","gd","hd","Tc","stopPropagation","id","jd","kd","ld","md","nd","keyCode","charCode","od","pd","qd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","vd","wd","xd","rd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","sd","td","view","detail","ud","zd","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","yd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Ad","Cd","dataTransfer","Ed","Gd","animationName","elapsedTime","pseudoElement","Hd","clipboardData","Id","Kd","data","Ld","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Md","Nd","Alt","Control","Meta","Shift","Od","Pd","key","String","fromCharCode","code","location","repeat","locale","which","Qd","Sd","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Ud","touches","targetTouches","changedTouches","Wd","Xd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Yd","Zd","$d","ae","documentMode","be","ce","de","ee","fe","ge","he","ke","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","le","me","ne","event","listeners","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","oninput","ze","detachEvent","Ae","Be","attachEvent","Ce","De","Ee","Ge","He","Ie","Je","node","offset","nextSibling","Ke","contains","compareDocumentPosition","Le","HTMLIFrameElement","contentWindow","href","Me","contentEditable","Ne","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","animationend","animationiteration","animationstart","transitionend","We","Xe","Ye","animation","Ze","$e","af","bf","cf","df","ef","ff","gf","kf","lf","concat","mf","Tb","instance","listener","D","nf","has","of","pf","qf","random","rf","bind","capture","passive","m","w","J","v","r","x","F","sf","tf","parentWindow","uf","vf","Z","ya","ab","ca","ie","char","je","unshift","wf","xf","yf","zf","Af","Bf","Cf","Df","__html","Ef","setTimeout","Ff","clearTimeout","Gf","Promise","If","queueMicrotask","resolve","then","catch","Hf","Jf","Kf","Lf","previousSibling","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","E","G","Uf","H","Vf","Wf","Xf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Yf","childContextTypes","Zf","$f","ag","getChildContext","bg","__reactInternalMemoizedMergedChildContext","cg","dg","eg","fg","gg","ig","jg","kg","defaultProps","lg","mg","ng","og","pg","qg","_currentValue","rg","childLanes","sg","dependencies","firstContext","lanes","tg","ug","context","memoizedValue","next","vg","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","interleaved","effects","yg","zg","eventTime","lane","payload","callback","Ag","Bg","Cg","Dg","Eg","u","q","y","Fg","Gg","Hg","Component","refs","Ig","Mg","isMounted","_reactInternals","enqueueSetState","Jg","Kg","Lg","enqueueReplaceState","enqueueForceUpdate","Ng","shouldComponentUpdate","isPureReactComponent","Og","contextType","state","updater","Pg","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Qg","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","I","fh","gh","hh","elementType","deletions","ih","pendingProps","overflow","treeContext","retryLane","jh","mode","kh","lh","mh","memoizedProps","nh","oh","ph","ref","_owner","_stringRef","qh","join","rh","sh","index","th","uh","vh","implementation","wh","xh","done","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","tagName","Gh","Hh","Ih","K","Jh","revealOrder","Kh","Lh","_workInProgressVersionPrimary","Mh","ReactCurrentDispatcher","Nh","Oh","L","M","N","Ph","Qh","Rh","Sh","O","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","baseQueue","queue","ai","bi","ci","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","di","ei","fi","gi","hi","getSnapshot","ii","ji","P","ki","lastEffect","stores","li","mi","ni","create","destroy","deps","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Hi","message","Ii","console","error","Ti","Vi","Wi","Ji","WeakMap","Ki","Li","Mi","Ni","getDerivedStateFromError","componentDidCatch","Oi","componentStack","Pi","pingCache","Qi","Ri","Si","Xi","tailMode","tail","Q","subtreeFlags","Yi","pendingContext","Zi","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","R","$i","rendering","aj","renderingStartTime","isBackwards","last","bj","cj","dj","ReactCurrentOwner","ej","fj","gj","hj","ij","compare","jj","kj","lj","baseLanes","cachePool","transitions","mj","nj","oj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","pj","qj","rj","sj","tj","uj","vj","fallback","wj","xj","yj","zj","_reactRetry","Aj","Bj","Cj","Dj","Ej","Gj","Hj","S","Ij","WeakSet","T","Jj","U","Kj","Lj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","insertBefore","_reactRootContainer","Uj","V","Vj","Wj","Xj","onCommitFiberUnmount","componentWillUnmount","Yj","Zj","ak","bk","ck","dk","display","ek","fk","gk","hk","ik","__reactInternalSnapshotBeforeUpdate","src","Uk","jk","ceil","kk","lk","mk","W","X","Y","nk","ok","pk","qk","rk","Infinity","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","callbackNode","expirationTimes","expiredLanes","vc","callbackPriority","hg","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","finishedWork","finishedLanes","Ok","timeoutHandle","Pk","Qk","Rk","Sk","Tk","mutableReadLanes","Ac","Mj","onCommitFiberRoot","lc","onRecoverableError","Vk","onPostCommitFiberRoot","Wk","Xk","Zk","isReactComponent","pendingChildren","$k","mutableSourceEagerHydrationData","al","cache","pendingSuspenseBoundaries","bl","cl","dl","el","fl","gl","hl","Fj","Yk","jl","reportError","kl","_internalRoot","ll","ml","nl","ol","ql","pl","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","rl","usingClientEntryPoint","Events","sl","findFiberByHostInstance","bundleType","version","rendererPackageName","tl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","ul","isDisabled","supportsFiber","inject","exports","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","map","count","toArray","only","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","definition","o","chunkId","all","reduce","promises","miniCssF","obj","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","i","s","getAttribute","charset","timeout","onScriptComplete","prev","onerror","onload","doneFns","fn","head","toStringTag","installedChunks","j","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","self","className","user","avatar","alt","_arrayLikeToArray","arr","len","arr2","_unsupportedIterableToArray","minLen","from","_toConsumableArray","iter","TypeError","_slicedToArray","_i","_s","_e","_arr","_n","_d","textareaRef","messages","setMessages","setText","scrollHeight","addMessage","message0","toTimeString","title","placeholder","onChange","onKeyDown","friendMessage0","s2","Message","nameClass","affair","buttonClass","affairClass","_id","hidden","deleteAffairCallback","cnAll","filter","cnHigh","cnMiddle","cnLow","mappedAffairs","setFilter","defaultAffairs","getRandomValues","affairs","setAffairs","filteredAffairs","filterAffairs","deleteAffair","rnds8","Uint8Array","rng","crypto","msCrypto","uuid","REGEX","byteToHex","substr","_nodeId","_clockseq","validate","_lastMSecs","_lastNSecs","buf","clockseq","seedBytes","msecs","nsecs","dt","tmh","setNameCallback","addUser","onEnter","onBlur","totalUsers","lastUserName","inputClass","users","addUserCallback","setName","setError","pureAddUser","pureOnBlur","pureOnEnter","setUsers","v1","pureAddUserCallback","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById","reportWebVitals"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/media/checked.0b6a1bcf5d417ff0a947.svg b/static/media/checked.0b6a1bcf5d417ff0a947.svg
new file mode 100644
index 0000000..19d18d7
--- /dev/null
+++ b/static/media/checked.0b6a1bcf5d417ff0a947.svg
@@ -0,0 +1,3 @@
+