김대연

Merge branch 'channel' into 'master'

Channel

* Update Login page

* Change channel component's structure and Add listen/quit event

See merge request !15
This diff could not be displayed because it is too large.
1 +import React from "react";
1 import './App.css'; 2 import './App.css';
2 import Login from "./Login"; 3 import Login from "./Login";
3 import Body from "./Body"; 4 import Body from "./Body";
4 5
5 -function App() { 6 +const qs= require('querystring');
6 - // let accessToken = null; 7 +const url = require('url')
7 - let accessToken = 1;
8 8
9 - return ( 9 +class App extends React.Component {
10 - <div className="app"> 10 + constructor(props){
11 - {!accessToken && <Login />} 11 + super(props);
12 - {accessToken && <Body />} 12 + this.state = {
13 - </div> 13 + isAuthenticated: false,
14 - ); 14 + }
15 + }
16 +
17 + componentDidMount(props){
18 + var urlQuery = url.parse(window.location.href).query;
19 + var param = qs.parse(urlQuery);
20 + this.setState({ isAuthenticated : param.authenticated}, () => {
21 + this.render();
22 + })
23 + }
24 +
25 + render(){
26 + return (
27 + <div className="app">
28 + {this.state.isAuthenticated?(<Body />):(<Login />)}
29 + </div>
30 + );
31 + }
15 } 32 }
16 33
17 export default App; 34 export default App;
......
...@@ -24,34 +24,36 @@ socket.on('chat message', (name, msg)=>{ ...@@ -24,34 +24,36 @@ socket.on('chat message', (name, msg)=>{
24 24
25 // 해당 채널을 재생하고자할 때 실행시켜주세요. 25 // 해당 채널을 재생하고자할 때 실행시켜주세요.
26 const listen = (channelName)=>{ 26 const listen = (channelName)=>{
27 + console.log(`listen ${channelName}`);
27 socket.emit("joinRoom", channelName, "dummy name") // name이 뭔지 대연이도 잘 모름. 28 socket.emit("joinRoom", channelName, "dummy name") // name이 뭔지 대연이도 잘 모름.
28 } 29 }
29 30
30 // 해당 채널을 재생 안하도록 할 때 실행시켜주세요. 31 // 해당 채널을 재생 안하도록 할 때 실행시켜주세요.
31 const quit = (channelName)=>{ 32 const quit = (channelName)=>{
33 + console.log(`quit ${channelName}`);
32 socket.emit("leaveRoom". channelName, "dummy name") // name이 뭔지 대연이도 잘 모름. 34 socket.emit("leaveRoom". channelName, "dummy name") // name이 뭔지 대연이도 잘 모름.
33 } 35 }
34 36
35 -export function Channel(props) { 37 +export class Channel extends React.Component {
36 - const channel = props.channel; 38 + render(){
37 - 39 + return (
38 - return ( 40 + <div className="channel">
39 - <div className="channel"> 41 + <a href={this.props.channel.url} className="channel__url">
40 - <a href={channel.url} className="channel__url"> 42 + {this.props.channel.thumbnail && <img className="channel__thumbnail" src={this.props.channel.thumbnail} alt=""></img>}
41 - {channel.thumbnail && <img className="channel__thumbnail" src={channel.thumbnail} alt=""></img>} 43 + {!this.props.channel.thumbnail && <PersonIcon className="channel__icon"/>}
42 - {!channel.thumbnail && <PersonIcon className="channel__icon"/>} 44 + <div className="channel__box">
43 - <div className="channel__box"> 45 + <div className="channel__info">
44 - <div className="channel__info"> 46 + <div className="channel__name">{ `${this.props.channel.nickname} (${this.props.channel.id})` }</div>
45 - <div className="channel__name">{channel.name}</div> 47 + <div className="channel__game">{this.props.channel.category}</div>
46 - <div className="channel__game">{channel.game}</div> 48 + </div>
49 + <div className="channel__view">{this.props.channel.view}</div>
47 </div> 50 </div>
48 - <div className="channel__view">{channel.view}</div> 51 + </a>
49 - </div> 52 + {this.props.channel.isPlay && <PauseIcon className="pause__icon" onClick={this.props.onClick} />}
50 - </a> 53 + {!this.props.channel.isPlay && <PlayArrowIcon className="play__icon" onClick={this.props.onClick} />}
51 - {channel.isPlay && <PauseIcon className="pause__icon" onClick={props.onClick} />} 54 + </div>
52 - {!channel.isPlay && <PlayArrowIcon className="play__icon" onClick={props.onClick} />} 55 + )
53 - </div> 56 + }
54 - );
55 } 57 }
56 58
57 export class ChannelList extends React.Component { 59 export class ChannelList extends React.Component {
...@@ -60,22 +62,13 @@ export class ChannelList extends React.Component { ...@@ -60,22 +62,13 @@ export class ChannelList extends React.Component {
60 62
61 // data for test 63 // data for test
62 const test = [ 64 const test = [
63 - {"name": "umi0410 진수", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv/umi0410"}, 65 + {"id": "umi0410", "nickname": "진수", "view": 123124124, "category": "game2" , "url": "https://www.twitch.tv/umi0410", "isPlay": false},
64 - {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"}, 66 + {"id": "name1", "nickname": "nick", "view": 999, "category": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg", "isPlay": false},
65 - {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"}, 67 + {"id": "name2", "nickname": "nick","view": 123124124, "category": "game2" , "url": "https://www.twitch.tv", "isPlay": false},
66 - {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
67 - {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
68 - {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
69 - {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
70 - {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
71 - {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
72 - {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
73 - {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
74 -
75 ] 68 ]
76 69
77 this.state = { 70 this.state = {
78 - channels: test, 71 + channels: [],
79 xisPlaying: null, 72 xisPlaying: null,
80 } 73 }
81 } 74 }
...@@ -85,6 +78,10 @@ export class ChannelList extends React.Component { ...@@ -85,6 +78,10 @@ export class ChannelList extends React.Component {
85 // 버튼을 누른 채널이 재생중일때 78 // 버튼을 누른 채널이 재생중일때
86 if (channel.isPlay === true) { 79 if (channel.isPlay === true) {
87 channels[index].isPlay = false; 80 channels[index].isPlay = false;
81 +
82 + // 기존 채널 재생 중지
83 + quit(channels[index].id);
84 +
88 this.setState({ 85 this.setState({
89 channels: channels, 86 channels: channels,
90 xisPlaying: null, 87 xisPlaying: null,
...@@ -98,11 +95,17 @@ export class ChannelList extends React.Component { ...@@ -98,11 +95,17 @@ export class ChannelList extends React.Component {
98 // 기존에 재생되던 채널의 isPlay를 false로, 클릭 이벤트가 발생한 채널의 isPlay를 true로 변경 95 // 기존에 재생되던 채널의 isPlay를 false로, 클릭 이벤트가 발생한 채널의 isPlay를 true로 변경
99 channels[this.state.xisPlaying].isPlay = false; 96 channels[this.state.xisPlaying].isPlay = false;
100 channels[index].isPlay = true; 97 channels[index].isPlay = true;
98 +
99 + // 기존 채널 재생을 중지하고 새로운 채널을 listen
100 + quit(channels[this.state.xisPlaying].id);
101 + listen(channels[index].id);
101 } 102 }
102 103
103 // xisPlaying이 null일 때 104 // xisPlaying이 null일 때
104 else { 105 else {
105 channels[index].isPlay = true; 106 channels[index].isPlay = true;
107 + // 채널 listen
108 + listen(channels[index].id);
106 } 109 }
107 110
108 this.setState({ 111 this.setState({
...@@ -112,6 +115,56 @@ export class ChannelList extends React.Component { ...@@ -112,6 +115,56 @@ export class ChannelList extends React.Component {
112 } 115 }
113 } 116 }
114 117
118 + componentDidMount() {
119 + console.log('channel cdm');
120 + fetch('http://localhost:3303/channels').then( res => res.json())
121 + .then(data => {
122 + var tmpChannels = [];
123 + data.map((channel, index) => {
124 + var tmp = {
125 + id: channel.display_name || " ",
126 + nickname: channel.name || " ",
127 + category: channel.game || "Not playing",
128 + view: channel.views || 0,
129 + url: channel.url || "https://www.twitch.tv/",
130 + isPlay: false,
131 + }
132 + tmpChannels.push(tmp);
133 + })
134 + return tmpChannels;
135 + }).then( channels => {
136 + this.setState({
137 + channels: channels,
138 + xisPlaying: null,
139 + })
140 + })
141 + }
142 + /* fetch('http://localhost:3303/list').then( res => res.json())
143 + .then(data => {
144 + var tmpChannels = []
145 + data.channels.map((channel, index) => {
146 + var tmp = {
147 + id: channel.id,
148 + nickname: channel.nickname,
149 + category: channel.category,
150 + view: channel.view,
151 + url: `https://www.twitch.tv/${channel.id}`,
152 + isPlay: false,
153 + }
154 + tmpChannels.push(tmp);
155 + })
156 +
157 + return tmpChannels;
158 + }).then( channels => {
159 + this.setState({
160 + channels: channels,
161 + xisPlaying: null,
162 + })
163 + }) */
164 +
165 +
166 +
167 +
115 render() { 168 render() {
116 return ( 169 return (
117 <div className="channel__list"> 170 <div className="channel__list">
......
1 +const test = [
2 + {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg", "isPlay": true},
3 + {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
4 + {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
5 + {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
6 + {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
7 + {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
8 + {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
9 + {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
10 + {"name": "name1", "view": 999, "game": "game1" ,"url": "https://www.twitch.tv", "thumbnail": "https://upload.wikimedia.org/wikipedia/commons/2/26/Twitch_logo.svg"},
11 + {"name": "name2", "view": 123124124, "game": "game2" , "url": "https://www.twitch.tv"},
12 +]
13 +
14 +console.log(test[1])
15 +test[1].isPlay = false
16 +const whatPlay = (elem) => elem.isPlay === true;
17 +console.log(test.findIndex(whatPlay))
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +{
2 + "name": "khuwitch",
3 + "lockfileVersion": 2,
4 + "requires": true,
5 + "packages": {}
6 +}
1 { 1 {
2 "name": "khuwitch-server", 2 "name": "khuwitch-server",
3 "version": "1.0.0", 3 "version": "1.0.0",
4 - "lockfileVersion": 1, 4 + "lockfileVersion": 2,
5 "requires": true, 5 "requires": true,
6 + "packages": {
7 + "": {
8 + "name": "khuwitch-server",
9 + "version": "1.0.0",
10 + "license": "ISC",
11 + "dependencies": {
12 + "axios": "^0.21.0",
13 + "cors": "^2.8.5",
14 + "dotenv": "^8.2.0",
15 + "ejs": "^3.1.5",
16 + "express": "^4.17.1",
17 + "request": "^2.88.2",
18 + "socket.io": "^3.0.3",
19 + "tmi.js": "^1.5.0"
20 + }
21 + },
22 + "node_modules/@types/body-parser": {
23 + "version": "1.19.0",
24 + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz",
25 + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==",
26 + "dependencies": {
27 + "@types/connect": "*",
28 + "@types/node": "*"
29 + }
30 + },
31 + "node_modules/@types/component-emitter": {
32 + "version": "1.2.10",
33 + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
34 + "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
35 + },
36 + "node_modules/@types/connect": {
37 + "version": "3.4.33",
38 + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz",
39 + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==",
40 + "dependencies": {
41 + "@types/node": "*"
42 + }
43 + },
44 + "node_modules/@types/cookie": {
45 + "version": "0.4.0",
46 + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.0.tgz",
47 + "integrity": "sha512-y7mImlc/rNkvCRmg8gC3/lj87S7pTUIJ6QGjwHR9WQJcFs+ZMTOaoPrkdFA/YdbuqVEmEbb5RdhVxMkAcgOnpg=="
48 + },
49 + "node_modules/@types/cors": {
50 + "version": "2.8.8",
51 + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.8.tgz",
52 + "integrity": "sha512-fO3gf3DxU2Trcbr75O7obVndW/X5k8rJNZkLXlQWStTHhP71PkRqjwPIEI0yMnJdg9R9OasjU+Bsr+Hr1xy/0w==",
53 + "dependencies": {
54 + "@types/express": "*"
55 + }
56 + },
57 + "node_modules/@types/express": {
58 + "version": "4.17.9",
59 + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.9.tgz",
60 + "integrity": "sha512-SDzEIZInC4sivGIFY4Sz1GG6J9UObPwCInYJjko2jzOf/Imx/dlpume6Xxwj1ORL82tBbmN4cPDIDkLbWHk9hw==",
61 + "dependencies": {
62 + "@types/body-parser": "*",
63 + "@types/express-serve-static-core": "*",
64 + "@types/qs": "*",
65 + "@types/serve-static": "*"
66 + }
67 + },
68 + "node_modules/@types/express-serve-static-core": {
69 + "version": "4.17.14",
70 + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.14.tgz",
71 + "integrity": "sha512-uFTLwu94TfUFMToXNgRZikwPuZdOtDgs3syBtAIr/OXorL1kJqUJT9qCLnRZ5KBOWfZQikQ2xKgR2tnDj1OgDA==",
72 + "dependencies": {
73 + "@types/node": "*",
74 + "@types/qs": "*",
75 + "@types/range-parser": "*"
76 + }
77 + },
78 + "node_modules/@types/mime": {
79 + "version": "2.0.3",
80 + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz",
81 + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q=="
82 + },
83 + "node_modules/@types/node": {
84 + "version": "14.14.10",
85 + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.10.tgz",
86 + "integrity": "sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ=="
87 + },
88 + "node_modules/@types/qs": {
89 + "version": "6.9.5",
90 + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.5.tgz",
91 + "integrity": "sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ=="
92 + },
93 + "node_modules/@types/range-parser": {
94 + "version": "1.2.3",
95 + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz",
96 + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA=="
97 + },
98 + "node_modules/@types/serve-static": {
99 + "version": "1.13.8",
100 + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.8.tgz",
101 + "integrity": "sha512-MoJhSQreaVoL+/hurAZzIm8wafFR6ajiTM1m4A0kv6AGeVBl4r4pOV8bGFrjjq1sGxDTnCoF8i22o0/aE5XCyA==",
102 + "dependencies": {
103 + "@types/mime": "*",
104 + "@types/node": "*"
105 + }
106 + },
107 + "node_modules/accepts": {
108 + "version": "1.3.7",
109 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
110 + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
111 + "dependencies": {
112 + "mime-types": "~2.1.24",
113 + "negotiator": "0.6.2"
114 + },
115 + "engines": {
116 + "node": ">= 0.6"
117 + }
118 + },
119 + "node_modules/ajv": {
120 + "version": "6.12.6",
121 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
122 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
123 + "dependencies": {
124 + "fast-deep-equal": "^3.1.1",
125 + "fast-json-stable-stringify": "^2.0.0",
126 + "json-schema-traverse": "^0.4.1",
127 + "uri-js": "^4.2.2"
128 + }
129 + },
130 + "node_modules/ansi-styles": {
131 + "version": "3.2.1",
132 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
133 + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
134 + "dependencies": {
135 + "color-convert": "^1.9.0"
136 + },
137 + "engines": {
138 + "node": ">=4"
139 + }
140 + },
141 + "node_modules/array-flatten": {
142 + "version": "1.1.1",
143 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
144 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
145 + },
146 + "node_modules/asn1": {
147 + "version": "0.2.4",
148 + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
149 + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
150 + "dependencies": {
151 + "safer-buffer": "~2.1.0"
152 + }
153 + },
154 + "node_modules/assert-plus": {
155 + "version": "1.0.0",
156 + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
157 + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
158 + "engines": {
159 + "node": ">=0.8"
160 + }
161 + },
162 + "node_modules/async": {
163 + "version": "0.9.2",
164 + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
165 + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0="
166 + },
167 + "node_modules/async-limiter": {
168 + "version": "1.0.1",
169 + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
170 + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ=="
171 + },
172 + "node_modules/asynckit": {
173 + "version": "0.4.0",
174 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
175 + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
176 + },
177 + "node_modules/aws-sign2": {
178 + "version": "0.7.0",
179 + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
180 + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
181 + "engines": {
182 + "node": "*"
183 + }
184 + },
185 + "node_modules/aws4": {
186 + "version": "1.11.0",
187 + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz",
188 + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA=="
189 + },
190 + "node_modules/axios": {
191 + "version": "0.21.0",
192 + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz",
193 + "integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==",
194 + "dependencies": {
195 + "follow-redirects": "^1.10.0"
196 + }
197 + },
198 + "node_modules/balanced-match": {
199 + "version": "1.0.0",
200 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
201 + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
202 + },
203 + "node_modules/base64id": {
204 + "version": "2.0.0",
205 + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
206 + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==",
207 + "engines": {
208 + "node": "^4.5.0 || >= 5.9"
209 + }
210 + },
211 + "node_modules/bcrypt-pbkdf": {
212 + "version": "1.0.2",
213 + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
214 + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
215 + "dependencies": {
216 + "tweetnacl": "^0.14.3"
217 + }
218 + },
219 + "node_modules/body-parser": {
220 + "version": "1.19.0",
221 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
222 + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
223 + "dependencies": {
224 + "bytes": "3.1.0",
225 + "content-type": "~1.0.4",
226 + "debug": "2.6.9",
227 + "depd": "~1.1.2",
228 + "http-errors": "1.7.2",
229 + "iconv-lite": "0.4.24",
230 + "on-finished": "~2.3.0",
231 + "qs": "6.7.0",
232 + "raw-body": "2.4.0",
233 + "type-is": "~1.6.17"
234 + },
235 + "engines": {
236 + "node": ">= 0.8"
237 + }
238 + },
239 + "node_modules/brace-expansion": {
240 + "version": "1.1.11",
241 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
242 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
243 + "dependencies": {
244 + "balanced-match": "^1.0.0",
245 + "concat-map": "0.0.1"
246 + }
247 + },
248 + "node_modules/bytes": {
249 + "version": "3.1.0",
250 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
251 + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
252 + "engines": {
253 + "node": ">= 0.8"
254 + }
255 + },
256 + "node_modules/caseless": {
257 + "version": "0.12.0",
258 + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
259 + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
260 + },
261 + "node_modules/chalk": {
262 + "version": "2.4.2",
263 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
264 + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
265 + "dependencies": {
266 + "ansi-styles": "^3.2.1",
267 + "escape-string-regexp": "^1.0.5",
268 + "supports-color": "^5.3.0"
269 + },
270 + "engines": {
271 + "node": ">=4"
272 + }
273 + },
274 + "node_modules/color-convert": {
275 + "version": "1.9.3",
276 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
277 + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
278 + "dependencies": {
279 + "color-name": "1.1.3"
280 + }
281 + },
282 + "node_modules/color-name": {
283 + "version": "1.1.3",
284 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
285 + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
286 + },
287 + "node_modules/combined-stream": {
288 + "version": "1.0.8",
289 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
290 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
291 + "dependencies": {
292 + "delayed-stream": "~1.0.0"
293 + },
294 + "engines": {
295 + "node": ">= 0.8"
296 + }
297 + },
298 + "node_modules/component-emitter": {
299 + "version": "1.3.0",
300 + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
301 + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
302 + },
303 + "node_modules/concat-map": {
304 + "version": "0.0.1",
305 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
306 + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
307 + },
308 + "node_modules/content-disposition": {
309 + "version": "0.5.3",
310 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
311 + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
312 + "dependencies": {
313 + "safe-buffer": "5.1.2"
314 + },
315 + "engines": {
316 + "node": ">= 0.6"
317 + }
318 + },
319 + "node_modules/content-type": {
320 + "version": "1.0.4",
321 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
322 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
323 + "engines": {
324 + "node": ">= 0.6"
325 + }
326 + },
327 + "node_modules/cookie": {
328 + "version": "0.4.0",
329 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
330 + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
331 + "engines": {
332 + "node": ">= 0.6"
333 + }
334 + },
335 + "node_modules/cookie-signature": {
336 + "version": "1.0.6",
337 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
338 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
339 + },
340 + "node_modules/core-util-is": {
341 + "version": "1.0.2",
342 + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
343 + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
344 + },
345 + "node_modules/cors": {
346 + "version": "2.8.5",
347 + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
348 + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
349 + "dependencies": {
350 + "object-assign": "^4",
351 + "vary": "^1"
352 + },
353 + "engines": {
354 + "node": ">= 0.10"
355 + }
356 + },
357 + "node_modules/dashdash": {
358 + "version": "1.14.1",
359 + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
360 + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
361 + "dependencies": {
362 + "assert-plus": "^1.0.0"
363 + },
364 + "engines": {
365 + "node": ">=0.10"
366 + }
367 + },
368 + "node_modules/debug": {
369 + "version": "2.6.9",
370 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
371 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
372 + "dependencies": {
373 + "ms": "2.0.0"
374 + }
375 + },
376 + "node_modules/delayed-stream": {
377 + "version": "1.0.0",
378 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
379 + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
380 + "engines": {
381 + "node": ">=0.4.0"
382 + }
383 + },
384 + "node_modules/depd": {
385 + "version": "1.1.2",
386 + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
387 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
388 + "engines": {
389 + "node": ">= 0.6"
390 + }
391 + },
392 + "node_modules/destroy": {
393 + "version": "1.0.4",
394 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
395 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
396 + },
397 + "node_modules/dotenv": {
398 + "version": "8.2.0",
399 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
400 + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
401 + "engines": {
402 + "node": ">=8"
403 + }
404 + },
405 + "node_modules/ecc-jsbn": {
406 + "version": "0.1.2",
407 + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
408 + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
409 + "dependencies": {
410 + "jsbn": "~0.1.0",
411 + "safer-buffer": "^2.1.0"
412 + }
413 + },
414 + "node_modules/ee-first": {
415 + "version": "1.1.1",
416 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
417 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
418 + },
419 + "node_modules/ejs": {
420 + "version": "3.1.5",
421 + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz",
422 + "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==",
423 + "dependencies": {
424 + "jake": "^10.6.1"
425 + },
426 + "bin": {
427 + "ejs": "bin/cli.js"
428 + },
429 + "engines": {
430 + "node": ">=0.10.0"
431 + }
432 + },
433 + "node_modules/encodeurl": {
434 + "version": "1.0.2",
435 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
436 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
437 + "engines": {
438 + "node": ">= 0.8"
439 + }
440 + },
441 + "node_modules/engine.io": {
442 + "version": "4.0.4",
443 + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.0.4.tgz",
444 + "integrity": "sha512-4ggUX5pICZU17OTZNFv5+uFE/ZyoK+TIXv2SvxWWX8lwStllQ6Lvvs4lDBqvKpV9EYXNcvlNOcjKChd/mo+8Tw==",
445 + "dependencies": {
446 + "accepts": "~1.3.4",
447 + "base64id": "2.0.0",
448 + "cookie": "~0.4.1",
449 + "cors": "~2.8.5",
450 + "debug": "~4.1.0",
451 + "engine.io-parser": "~4.0.0",
452 + "ws": "^7.1.2"
453 + },
454 + "engines": {
455 + "node": ">=10.0.0"
456 + }
457 + },
458 + "node_modules/engine.io-parser": {
459 + "version": "4.0.1",
460 + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.1.tgz",
461 + "integrity": "sha512-v5aZK1hlckcJDGmHz3W8xvI3NUHYc9t8QtTbqdR5OaH3S9iJZilPubauOm+vLWOMMWzpE3hiq92l9lTAHamRCg==",
462 + "engines": {
463 + "node": ">=8.0.0"
464 + }
465 + },
466 + "node_modules/engine.io/node_modules/cookie": {
467 + "version": "0.4.1",
468 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
469 + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==",
470 + "engines": {
471 + "node": ">= 0.6"
472 + }
473 + },
474 + "node_modules/engine.io/node_modules/debug": {
475 + "version": "4.1.1",
476 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
477 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
478 + "dependencies": {
479 + "ms": "^2.1.1"
480 + }
481 + },
482 + "node_modules/engine.io/node_modules/ms": {
483 + "version": "2.1.2",
484 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
485 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
486 + },
487 + "node_modules/escape-html": {
488 + "version": "1.0.3",
489 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
490 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
491 + },
492 + "node_modules/escape-string-regexp": {
493 + "version": "1.0.5",
494 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
495 + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
496 + "engines": {
497 + "node": ">=0.8.0"
498 + }
499 + },
500 + "node_modules/etag": {
501 + "version": "1.8.1",
502 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
503 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
504 + "engines": {
505 + "node": ">= 0.6"
506 + }
507 + },
508 + "node_modules/express": {
509 + "version": "4.17.1",
510 + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
511 + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
512 + "dependencies": {
513 + "accepts": "~1.3.7",
514 + "array-flatten": "1.1.1",
515 + "body-parser": "1.19.0",
516 + "content-disposition": "0.5.3",
517 + "content-type": "~1.0.4",
518 + "cookie": "0.4.0",
519 + "cookie-signature": "1.0.6",
520 + "debug": "2.6.9",
521 + "depd": "~1.1.2",
522 + "encodeurl": "~1.0.2",
523 + "escape-html": "~1.0.3",
524 + "etag": "~1.8.1",
525 + "finalhandler": "~1.1.2",
526 + "fresh": "0.5.2",
527 + "merge-descriptors": "1.0.1",
528 + "methods": "~1.1.2",
529 + "on-finished": "~2.3.0",
530 + "parseurl": "~1.3.3",
531 + "path-to-regexp": "0.1.7",
532 + "proxy-addr": "~2.0.5",
533 + "qs": "6.7.0",
534 + "range-parser": "~1.2.1",
535 + "safe-buffer": "5.1.2",
536 + "send": "0.17.1",
537 + "serve-static": "1.14.1",
538 + "setprototypeof": "1.1.1",
539 + "statuses": "~1.5.0",
540 + "type-is": "~1.6.18",
541 + "utils-merge": "1.0.1",
542 + "vary": "~1.1.2"
543 + },
544 + "engines": {
545 + "node": ">= 0.10.0"
546 + }
547 + },
548 + "node_modules/extend": {
549 + "version": "3.0.2",
550 + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
551 + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
552 + },
553 + "node_modules/extsprintf": {
554 + "version": "1.3.0",
555 + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
556 + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
557 + "engines": [
558 + "node >=0.6.0"
559 + ]
560 + },
561 + "node_modules/fast-deep-equal": {
562 + "version": "3.1.3",
563 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
564 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
565 + },
566 + "node_modules/fast-json-stable-stringify": {
567 + "version": "2.1.0",
568 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
569 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
570 + },
571 + "node_modules/filelist": {
572 + "version": "1.0.1",
573 + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
574 + "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
575 + "dependencies": {
576 + "minimatch": "^3.0.4"
577 + }
578 + },
579 + "node_modules/finalhandler": {
580 + "version": "1.1.2",
581 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
582 + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
583 + "dependencies": {
584 + "debug": "2.6.9",
585 + "encodeurl": "~1.0.2",
586 + "escape-html": "~1.0.3",
587 + "on-finished": "~2.3.0",
588 + "parseurl": "~1.3.3",
589 + "statuses": "~1.5.0",
590 + "unpipe": "~1.0.0"
591 + },
592 + "engines": {
593 + "node": ">= 0.8"
594 + }
595 + },
596 + "node_modules/follow-redirects": {
597 + "version": "1.13.0",
598 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
599 + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==",
600 + "engines": {
601 + "node": ">=4.0"
602 + }
603 + },
604 + "node_modules/forever-agent": {
605 + "version": "0.6.1",
606 + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
607 + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
608 + "engines": {
609 + "node": "*"
610 + }
611 + },
612 + "node_modules/form-data": {
613 + "version": "2.3.3",
614 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
615 + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
616 + "dependencies": {
617 + "asynckit": "^0.4.0",
618 + "combined-stream": "^1.0.6",
619 + "mime-types": "^2.1.12"
620 + },
621 + "engines": {
622 + "node": ">= 0.12"
623 + }
624 + },
625 + "node_modules/forwarded": {
626 + "version": "0.1.2",
627 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
628 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
629 + "engines": {
630 + "node": ">= 0.6"
631 + }
632 + },
633 + "node_modules/fresh": {
634 + "version": "0.5.2",
635 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
636 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
637 + "engines": {
638 + "node": ">= 0.6"
639 + }
640 + },
641 + "node_modules/getpass": {
642 + "version": "0.1.7",
643 + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
644 + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
645 + "dependencies": {
646 + "assert-plus": "^1.0.0"
647 + }
648 + },
649 + "node_modules/har-schema": {
650 + "version": "2.0.0",
651 + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
652 + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
653 + "engines": {
654 + "node": ">=4"
655 + }
656 + },
657 + "node_modules/har-validator": {
658 + "version": "5.1.5",
659 + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
660 + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
661 + "dependencies": {
662 + "ajv": "^6.12.3",
663 + "har-schema": "^2.0.0"
664 + },
665 + "engines": {
666 + "node": ">=6"
667 + }
668 + },
669 + "node_modules/has-flag": {
670 + "version": "3.0.0",
671 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
672 + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
673 + "engines": {
674 + "node": ">=4"
675 + }
676 + },
677 + "node_modules/http-errors": {
678 + "version": "1.7.2",
679 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
680 + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
681 + "dependencies": {
682 + "depd": "~1.1.2",
683 + "inherits": "2.0.3",
684 + "setprototypeof": "1.1.1",
685 + "statuses": ">= 1.5.0 < 2",
686 + "toidentifier": "1.0.0"
687 + },
688 + "engines": {
689 + "node": ">= 0.6"
690 + }
691 + },
692 + "node_modules/http-signature": {
693 + "version": "1.2.0",
694 + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
695 + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
696 + "dependencies": {
697 + "assert-plus": "^1.0.0",
698 + "jsprim": "^1.2.2",
699 + "sshpk": "^1.7.0"
700 + },
701 + "engines": {
702 + "node": ">=0.8",
703 + "npm": ">=1.3.7"
704 + }
705 + },
706 + "node_modules/iconv-lite": {
707 + "version": "0.4.24",
708 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
709 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
710 + "dependencies": {
711 + "safer-buffer": ">= 2.1.2 < 3"
712 + },
713 + "engines": {
714 + "node": ">=0.10.0"
715 + }
716 + },
717 + "node_modules/inherits": {
718 + "version": "2.0.3",
719 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
720 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
721 + },
722 + "node_modules/ipaddr.js": {
723 + "version": "1.9.1",
724 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
725 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
726 + "engines": {
727 + "node": ">= 0.10"
728 + }
729 + },
730 + "node_modules/is-typedarray": {
731 + "version": "1.0.0",
732 + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
733 + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
734 + },
735 + "node_modules/isstream": {
736 + "version": "0.1.2",
737 + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
738 + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
739 + },
740 + "node_modules/jake": {
741 + "version": "10.8.2",
742 + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
743 + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
744 + "dependencies": {
745 + "async": "0.9.x",
746 + "chalk": "^2.4.2",
747 + "filelist": "^1.0.1",
748 + "minimatch": "^3.0.4"
749 + },
750 + "bin": {
751 + "jake": "bin/cli.js"
752 + },
753 + "engines": {
754 + "node": "*"
755 + }
756 + },
757 + "node_modules/jsbn": {
758 + "version": "0.1.1",
759 + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
760 + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
761 + },
762 + "node_modules/json-schema": {
763 + "version": "0.2.3",
764 + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
765 + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
766 + },
767 + "node_modules/json-schema-traverse": {
768 + "version": "0.4.1",
769 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
770 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
771 + },
772 + "node_modules/json-stringify-safe": {
773 + "version": "5.0.1",
774 + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
775 + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
776 + },
777 + "node_modules/jsprim": {
778 + "version": "1.4.1",
779 + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
780 + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
781 + "engines": [
782 + "node >=0.6.0"
783 + ],
784 + "dependencies": {
785 + "assert-plus": "1.0.0",
786 + "extsprintf": "1.3.0",
787 + "json-schema": "0.2.3",
788 + "verror": "1.10.0"
789 + }
790 + },
791 + "node_modules/media-typer": {
792 + "version": "0.3.0",
793 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
794 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
795 + "engines": {
796 + "node": ">= 0.6"
797 + }
798 + },
799 + "node_modules/merge-descriptors": {
800 + "version": "1.0.1",
801 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
802 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
803 + },
804 + "node_modules/methods": {
805 + "version": "1.1.2",
806 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
807 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
808 + "engines": {
809 + "node": ">= 0.6"
810 + }
811 + },
812 + "node_modules/mime": {
813 + "version": "1.6.0",
814 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
815 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
816 + "bin": {
817 + "mime": "cli.js"
818 + },
819 + "engines": {
820 + "node": ">=4"
821 + }
822 + },
823 + "node_modules/mime-db": {
824 + "version": "1.44.0",
825 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
826 + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
827 + "engines": {
828 + "node": ">= 0.6"
829 + }
830 + },
831 + "node_modules/mime-types": {
832 + "version": "2.1.27",
833 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
834 + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
835 + "dependencies": {
836 + "mime-db": "1.44.0"
837 + },
838 + "engines": {
839 + "node": ">= 0.6"
840 + }
841 + },
842 + "node_modules/minimatch": {
843 + "version": "3.0.4",
844 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
845 + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
846 + "dependencies": {
847 + "brace-expansion": "^1.1.7"
848 + },
849 + "engines": {
850 + "node": "*"
851 + }
852 + },
853 + "node_modules/ms": {
854 + "version": "2.0.0",
855 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
856 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
857 + },
858 + "node_modules/negotiator": {
859 + "version": "0.6.2",
860 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
861 + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
862 + "engines": {
863 + "node": ">= 0.6"
864 + }
865 + },
866 + "node_modules/oauth-sign": {
867 + "version": "0.9.0",
868 + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
869 + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
870 + "engines": {
871 + "node": "*"
872 + }
873 + },
874 + "node_modules/object-assign": {
875 + "version": "4.1.1",
876 + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
877 + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
878 + "engines": {
879 + "node": ">=0.10.0"
880 + }
881 + },
882 + "node_modules/on-finished": {
883 + "version": "2.3.0",
884 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
885 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
886 + "dependencies": {
887 + "ee-first": "1.1.1"
888 + },
889 + "engines": {
890 + "node": ">= 0.8"
891 + }
892 + },
893 + "node_modules/parseurl": {
894 + "version": "1.3.3",
895 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
896 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
897 + "engines": {
898 + "node": ">= 0.8"
899 + }
900 + },
901 + "node_modules/path-to-regexp": {
902 + "version": "0.1.7",
903 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
904 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
905 + },
906 + "node_modules/performance-now": {
907 + "version": "2.1.0",
908 + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
909 + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
910 + },
911 + "node_modules/proxy-addr": {
912 + "version": "2.0.6",
913 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
914 + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
915 + "dependencies": {
916 + "forwarded": "~0.1.2",
917 + "ipaddr.js": "1.9.1"
918 + },
919 + "engines": {
920 + "node": ">= 0.10"
921 + }
922 + },
923 + "node_modules/psl": {
924 + "version": "1.8.0",
925 + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
926 + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
927 + },
928 + "node_modules/punycode": {
929 + "version": "2.1.1",
930 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
931 + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
932 + "engines": {
933 + "node": ">=6"
934 + }
935 + },
936 + "node_modules/qs": {
937 + "version": "6.7.0",
938 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
939 + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
940 + "engines": {
941 + "node": ">=0.6"
942 + }
943 + },
944 + "node_modules/range-parser": {
945 + "version": "1.2.1",
946 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
947 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
948 + "engines": {
949 + "node": ">= 0.6"
950 + }
951 + },
952 + "node_modules/raw-body": {
953 + "version": "2.4.0",
954 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
955 + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
956 + "dependencies": {
957 + "bytes": "3.1.0",
958 + "http-errors": "1.7.2",
959 + "iconv-lite": "0.4.24",
960 + "unpipe": "1.0.0"
961 + },
962 + "engines": {
963 + "node": ">= 0.8"
964 + }
965 + },
966 + "node_modules/request": {
967 + "version": "2.88.2",
968 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
969 + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
970 + "dependencies": {
971 + "aws-sign2": "~0.7.0",
972 + "aws4": "^1.8.0",
973 + "caseless": "~0.12.0",
974 + "combined-stream": "~1.0.6",
975 + "extend": "~3.0.2",
976 + "forever-agent": "~0.6.1",
977 + "form-data": "~2.3.2",
978 + "har-validator": "~5.1.3",
979 + "http-signature": "~1.2.0",
980 + "is-typedarray": "~1.0.0",
981 + "isstream": "~0.1.2",
982 + "json-stringify-safe": "~5.0.1",
983 + "mime-types": "~2.1.19",
984 + "oauth-sign": "~0.9.0",
985 + "performance-now": "^2.1.0",
986 + "qs": "~6.5.2",
987 + "safe-buffer": "^5.1.2",
988 + "tough-cookie": "~2.5.0",
989 + "tunnel-agent": "^0.6.0",
990 + "uuid": "^3.3.2"
991 + },
992 + "engines": {
993 + "node": ">= 6"
994 + }
995 + },
996 + "node_modules/request/node_modules/qs": {
997 + "version": "6.5.2",
998 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
999 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1000 + "engines": {
1001 + "node": ">=0.6"
1002 + }
1003 + },
1004 + "node_modules/safe-buffer": {
1005 + "version": "5.1.2",
1006 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
1007 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
1008 + },
1009 + "node_modules/safer-buffer": {
1010 + "version": "2.1.2",
1011 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1012 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1013 + },
1014 + "node_modules/send": {
1015 + "version": "0.17.1",
1016 + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
1017 + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
1018 + "dependencies": {
1019 + "debug": "2.6.9",
1020 + "depd": "~1.1.2",
1021 + "destroy": "~1.0.4",
1022 + "encodeurl": "~1.0.2",
1023 + "escape-html": "~1.0.3",
1024 + "etag": "~1.8.1",
1025 + "fresh": "0.5.2",
1026 + "http-errors": "~1.7.2",
1027 + "mime": "1.6.0",
1028 + "ms": "2.1.1",
1029 + "on-finished": "~2.3.0",
1030 + "range-parser": "~1.2.1",
1031 + "statuses": "~1.5.0"
1032 + },
1033 + "engines": {
1034 + "node": ">= 0.8.0"
1035 + }
1036 + },
1037 + "node_modules/send/node_modules/ms": {
1038 + "version": "2.1.1",
1039 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
1040 + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
1041 + },
1042 + "node_modules/serve-static": {
1043 + "version": "1.14.1",
1044 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
1045 + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
1046 + "dependencies": {
1047 + "encodeurl": "~1.0.2",
1048 + "escape-html": "~1.0.3",
1049 + "parseurl": "~1.3.3",
1050 + "send": "0.17.1"
1051 + },
1052 + "engines": {
1053 + "node": ">= 0.8.0"
1054 + }
1055 + },
1056 + "node_modules/setprototypeof": {
1057 + "version": "1.1.1",
1058 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
1059 + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
1060 + },
1061 + "node_modules/socket.io": {
1062 + "version": "3.0.3",
1063 + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-3.0.3.tgz",
1064 + "integrity": "sha512-TC1GnSXhDVmd3bHji5aG7AgWB8UL7E6quACbKra8uFXBqlMwEDbrJFK+tjuIY5Pe9N0L+MAPPDv3pycnn0000A==",
1065 + "dependencies": {
1066 + "@types/cookie": "^0.4.0",
1067 + "@types/cors": "^2.8.8",
1068 + "@types/node": "^14.14.7",
1069 + "accepts": "~1.3.4",
1070 + "base64id": "~2.0.0",
1071 + "debug": "~4.1.0",
1072 + "engine.io": "~4.0.0",
1073 + "socket.io-adapter": "~2.0.3",
1074 + "socket.io-parser": "~4.0.1"
1075 + },
1076 + "engines": {
1077 + "node": ">=10.0.0"
1078 + }
1079 + },
1080 + "node_modules/socket.io-adapter": {
1081 + "version": "2.0.3",
1082 + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.0.3.tgz",
1083 + "integrity": "sha512-2wo4EXgxOGSFueqvHAdnmi5JLZzWqMArjuP4nqC26AtLh5PoCPsaRbRdah2xhcwTAMooZfjYiNVNkkmmSMaxOQ=="
1084 + },
1085 + "node_modules/socket.io-parser": {
1086 + "version": "4.0.2",
1087 + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.2.tgz",
1088 + "integrity": "sha512-Bs3IYHDivwf+bAAuW/8xwJgIiBNtlvnjYRc4PbXgniLmcP1BrakBoq/QhO24rgtgW7VZ7uAaswRGxutUnlAK7g==",
1089 + "dependencies": {
1090 + "@types/component-emitter": "^1.2.10",
1091 + "component-emitter": "~1.3.0",
1092 + "debug": "~4.1.0"
1093 + },
1094 + "engines": {
1095 + "node": ">=10.0.0"
1096 + }
1097 + },
1098 + "node_modules/socket.io-parser/node_modules/debug": {
1099 + "version": "4.1.1",
1100 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1101 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1102 + "dependencies": {
1103 + "ms": "^2.1.1"
1104 + }
1105 + },
1106 + "node_modules/socket.io-parser/node_modules/ms": {
1107 + "version": "2.1.2",
1108 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1109 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1110 + },
1111 + "node_modules/socket.io/node_modules/debug": {
1112 + "version": "4.1.1",
1113 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
1114 + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
1115 + "dependencies": {
1116 + "ms": "^2.1.1"
1117 + }
1118 + },
1119 + "node_modules/socket.io/node_modules/ms": {
1120 + "version": "2.1.2",
1121 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1122 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
1123 + },
1124 + "node_modules/sshpk": {
1125 + "version": "1.16.1",
1126 + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
1127 + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
1128 + "dependencies": {
1129 + "asn1": "~0.2.3",
1130 + "assert-plus": "^1.0.0",
1131 + "bcrypt-pbkdf": "^1.0.0",
1132 + "dashdash": "^1.12.0",
1133 + "ecc-jsbn": "~0.1.1",
1134 + "getpass": "^0.1.1",
1135 + "jsbn": "~0.1.0",
1136 + "safer-buffer": "^2.0.2",
1137 + "tweetnacl": "~0.14.0"
1138 + },
1139 + "engines": {
1140 + "node": ">=0.10.0"
1141 + }
1142 + },
1143 + "node_modules/statuses": {
1144 + "version": "1.5.0",
1145 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
1146 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
1147 + "engines": {
1148 + "node": ">= 0.6"
1149 + }
1150 + },
1151 + "node_modules/supports-color": {
1152 + "version": "5.5.0",
1153 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1154 + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1155 + "dependencies": {
1156 + "has-flag": "^3.0.0"
1157 + },
1158 + "engines": {
1159 + "node": ">=4"
1160 + }
1161 + },
1162 + "node_modules/tmi.js": {
1163 + "version": "1.5.0",
1164 + "resolved": "https://registry.npmjs.org/tmi.js/-/tmi.js-1.5.0.tgz",
1165 + "integrity": "sha512-JyWKy9dRkZDG1h6PnpE8fJVsTrW82/yANXoP7R3u02vG7PLCvHGRGTWzBwk0ymMJGX9A+YzDx5tXQDsTeJd/5A==",
1166 + "dependencies": {
1167 + "request": "2.88.0",
1168 + "ws": "6.1.3"
1169 + },
1170 + "engines": {
1171 + "node": ">=7.10.1"
1172 + }
1173 + },
1174 + "node_modules/tmi.js/node_modules/punycode": {
1175 + "version": "1.4.1",
1176 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
1177 + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
1178 + },
1179 + "node_modules/tmi.js/node_modules/qs": {
1180 + "version": "6.5.2",
1181 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
1182 + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
1183 + "engines": {
1184 + "node": ">=0.6"
1185 + }
1186 + },
1187 + "node_modules/tmi.js/node_modules/request": {
1188 + "version": "2.88.0",
1189 + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
1190 + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
1191 + "dependencies": {
1192 + "aws-sign2": "~0.7.0",
1193 + "aws4": "^1.8.0",
1194 + "caseless": "~0.12.0",
1195 + "combined-stream": "~1.0.6",
1196 + "extend": "~3.0.2",
1197 + "forever-agent": "~0.6.1",
1198 + "form-data": "~2.3.2",
1199 + "har-validator": "~5.1.0",
1200 + "http-signature": "~1.2.0",
1201 + "is-typedarray": "~1.0.0",
1202 + "isstream": "~0.1.2",
1203 + "json-stringify-safe": "~5.0.1",
1204 + "mime-types": "~2.1.19",
1205 + "oauth-sign": "~0.9.0",
1206 + "performance-now": "^2.1.0",
1207 + "qs": "~6.5.2",
1208 + "safe-buffer": "^5.1.2",
1209 + "tough-cookie": "~2.4.3",
1210 + "tunnel-agent": "^0.6.0",
1211 + "uuid": "^3.3.2"
1212 + },
1213 + "engines": {
1214 + "node": ">= 4"
1215 + }
1216 + },
1217 + "node_modules/tmi.js/node_modules/tough-cookie": {
1218 + "version": "2.4.3",
1219 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
1220 + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
1221 + "dependencies": {
1222 + "psl": "^1.1.24",
1223 + "punycode": "^1.4.1"
1224 + },
1225 + "engines": {
1226 + "node": ">=0.8"
1227 + }
1228 + },
1229 + "node_modules/tmi.js/node_modules/ws": {
1230 + "version": "6.1.3",
1231 + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.3.tgz",
1232 + "integrity": "sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg==",
1233 + "dependencies": {
1234 + "async-limiter": "~1.0.0"
1235 + }
1236 + },
1237 + "node_modules/toidentifier": {
1238 + "version": "1.0.0",
1239 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
1240 + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
1241 + "engines": {
1242 + "node": ">=0.6"
1243 + }
1244 + },
1245 + "node_modules/tough-cookie": {
1246 + "version": "2.5.0",
1247 + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
1248 + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
1249 + "dependencies": {
1250 + "psl": "^1.1.28",
1251 + "punycode": "^2.1.1"
1252 + },
1253 + "engines": {
1254 + "node": ">=0.8"
1255 + }
1256 + },
1257 + "node_modules/tunnel-agent": {
1258 + "version": "0.6.0",
1259 + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1260 + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1261 + "dependencies": {
1262 + "safe-buffer": "^5.0.1"
1263 + },
1264 + "engines": {
1265 + "node": "*"
1266 + }
1267 + },
1268 + "node_modules/tweetnacl": {
1269 + "version": "0.14.5",
1270 + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1271 + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
1272 + },
1273 + "node_modules/type-is": {
1274 + "version": "1.6.18",
1275 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1276 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1277 + "dependencies": {
1278 + "media-typer": "0.3.0",
1279 + "mime-types": "~2.1.24"
1280 + },
1281 + "engines": {
1282 + "node": ">= 0.6"
1283 + }
1284 + },
1285 + "node_modules/unpipe": {
1286 + "version": "1.0.0",
1287 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1288 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
1289 + "engines": {
1290 + "node": ">= 0.8"
1291 + }
1292 + },
1293 + "node_modules/uri-js": {
1294 + "version": "4.4.0",
1295 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
1296 + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
1297 + "dependencies": {
1298 + "punycode": "^2.1.0"
1299 + }
1300 + },
1301 + "node_modules/utils-merge": {
1302 + "version": "1.0.1",
1303 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1304 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
1305 + "engines": {
1306 + "node": ">= 0.4.0"
1307 + }
1308 + },
1309 + "node_modules/uuid": {
1310 + "version": "3.4.0",
1311 + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1312 + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
1313 + "bin": {
1314 + "uuid": "bin/uuid"
1315 + }
1316 + },
1317 + "node_modules/vary": {
1318 + "version": "1.1.2",
1319 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1320 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
1321 + "engines": {
1322 + "node": ">= 0.8"
1323 + }
1324 + },
1325 + "node_modules/verror": {
1326 + "version": "1.10.0",
1327 + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1328 + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1329 + "engines": [
1330 + "node >=0.6.0"
1331 + ],
1332 + "dependencies": {
1333 + "assert-plus": "^1.0.0",
1334 + "core-util-is": "1.0.2",
1335 + "extsprintf": "^1.2.0"
1336 + }
1337 + },
1338 + "node_modules/ws": {
1339 + "version": "7.4.0",
1340 + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz",
1341 + "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==",
1342 + "engines": {
1343 + "node": ">=8.3.0"
1344 + }
1345 + }
1346 + },
6 "dependencies": { 1347 "dependencies": {
7 "@types/body-parser": { 1348 "@types/body-parser": {
8 "version": "1.19.0", 1349 "version": "1.19.0",
......