김성욱

Test

File mode changed
File mode changed
File mode changed
File mode changed
File mode changed
File mode changed
File mode changed
1 -<p align="center"><img src="http://cdn.ggilbo.com/news/photo/202203/901729_732791_5437.jpg" width="300" height="300"></p>
2 -
3 -<!-- PROJECT LOGO -->
4 -<br />
5 -<div align="center">
6 -
7 - <h1 align="center">Find MBTI chatbot</h1>
8 -
9 -</div>
10 -
11 -
12 -
13 -<!-- TABLE OF CONTENTS -->
14 -<details>
15 - <summary>Table of Contents</summary>
16 - <ol>
17 - <li>
18 - <a href="#about-the-project">About The Project</a>
19 - </li>
20 - <li><a href="#roadmap">Roadmap</a></li>
21 - <li><a href="#contributing">Contributing</a></li>
22 - <li><a href="#contact">Contact</a></li>
23 - </ol>
24 -</details>
25 -
26 -
27 -
28 -<!-- ABOUT THE PROJECT -->
29 -## About The Project
30 -
31 -* MBTI를 알기 위해서는 딱딱한 질문식의 설문을 일일히 체크해야 합니다.
32 -* 저희는 그런 방식보다는 챗봇과의 대화를 통해 MBTI를 알아내는 방식을 챗봇에 적용하고자 합니다.
33 -* 저희 챗봇은 LINE Messaging API를 기반으로 만들어졌습니다.
34 -
35 -
36 -<p align="right">(<a href="#top">back to top</a>)</p>
37 -
38 -
39 -
40 -### Built With
41 -
42 -* [Node.js](https://nodejs.org/ko/)
43 -
44 -<p align="right">(<a href="#top">back to top</a>)</p>
45 -
46 -
47 -
48 -<!-- ROADMAP -->
49 -## Roadmap
50 -
51 -- [ ] Line/kakao 채널 만들기
52 -- [ ] express 서버 연결
53 -- [ ] test
54 -- [ ] MBTI설문을 챗봇에 적용시키기
55 -
56 -
57 -<p align="right">(<a href="#top">back to top</a>)</p>
58 -
59 -
60 -
61 -<!-- CONTRIBUTING -->
62 -## Contributing
63 -
64 -1. Fork the Project
65 -2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
66 -3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
67 -4. Push to the Branch (`git push origin feature/AmazingFeature`)
68 -5. Open a Pull Request
69 -
70 -<p align="right">(<a href="#top">back to top</a>)</p>
71 -
72 -
73 -
74 -<!-- CONTACT -->
75 -## Contact
76 -
77 -* 김성욱 : so3659@khu.ac.kr
78 -* 공정훈 : kjhun1208@khu.ac.kr
79 -* 고민경: komg00@khu.ac.kr
80 -
81 -* Project Link : http://khuhub.khu.ac.kr/2018103692/find_mbti_bot)
82 -
83 -<p align="right">(<a href="#top">back to top</a>)</p>
84 -
85 -
1 +const express = require('express');
2 +const app = express();
3 +
4 +const bodyParser = require('body-parser');
5 +
6 +const apiRouter = express.Router();
7 +
8 +app.use(bodyParser.json());
9 +app.use(bodyParser.urlencoded({
10 + extended: true
11 +}));
12 +
13 +app.use('/api', apiRouter);
14 +
15 +let userDB = new Array();
16 +
17 +apiRouter.post('/sayHello', function(req, res) {
18 + const responseBody = {
19 + version: "2.0",
20 + template: {
21 + outputs: [
22 + {
23 + "basicCard": {
24 + "title": "MBTI 검사 챗봇",
25 + "description": "MBTI 검사 챗봇입니다! \n당신의 MBTI를 찾아보세요!",
26 + "thumbnail": {
27 + "imageUrl": "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsnm5S%2Fbtq6cSXUkrD%2FOgk9QsUoPzQGvllliI0CSk%2Fimg.jpg"
28 + },
29 + "buttons": [
30 + {
31 + "action": "message",
32 + "label": "MBTI 테스트 시작하기",
33 + "messageText": "MBTI 테스트 시작하기"
34 + }
35 + ]
36 + }
37 + }
38 + ]
39 + }
40 + };
41 + res.status(200).send(responseBody);
42 +});
43 +
44 +apiRouter.post('/question1', (req, res) => {
45 + var userId = req.body.userRequest.user.id;
46 + var mesg = req.body.userRequest;
47 + console.log('[q1:user message] ', mesg);
48 + userDB[userId] = ['','','','',''];
49 + console.log(userDB[userId]);
50 + const responseBody = {
51 + version: "2.0",
52 + template: {
53 + outputs: [
54 + {
55 + simpleText: {
56 + text: '금방 새로운 직장 사람들과 어울리기 시작합니다.'
57 + }
58 + }
59 + ],
60 + quickReplies: [
61 + {
62 + action: "block",
63 + label: "네",
64 + message: "네",
65 + blockId: "6297b11ae7a0253c7662ccea"
66 + },
67 + {
68 + action: "block",
69 + label: "아니오",
70 + message: "아니오",
71 + blockId: "6297b11ae7a0253c7662ccea"
72 + }
73 + ]
74 + }
75 + }
76 + res.status(200).send(responseBody);
77 +});
78 +
79 +apiRouter.post('/question2', (req, res) => {
80 + var userId = req.body.userRequest.user.id;
81 + var mesg = req.body.userRequest.utterance;
82 + console.log('[q2:user message] ', mesg);
83 + var mbti = '';
84 + if (mesg == "네") {
85 + mbti = 'E';
86 + } else if (mesg == "아니오") {
87 + mbti = 'I';
88 + }
89 + userDB[userId][0] += mbti;
90 + console.log(userDB[userId]);
91 + const responseBody = {
92 + version: "2.0",
93 + template: {
94 + outputs: [
95 + {
96 + simpleText: {
97 + text: '평소 깻잎논쟁에 대해 1시간 이상을 생각해 보는 편입니다.'
98 + }
99 + }
100 + ],
101 + quickReplies: [
102 + {
103 + action: "block",
104 + label: "네",
105 + message: "네",
106 + blockId: "6297b122ab89e678ee86b331"
107 + },
108 + {
109 + action: "block",
110 + label: "아니오",
111 + message: "아니오",
112 + blockId: "6297b122ab89e678ee86b331"
113 + }
114 + ]
115 + }
116 + }
117 + res.status(200).send(responseBody);
118 +});
119 +
120 +apiRouter.post('/question3', function(req, res) {
121 + var userId = req.body.userRequest.user.id;
122 + var mesg = req.body.userRequest.utterance;
123 + console.log('[q3:user message] ', mesg);
124 + var mbti = '';
125 + if (mesg == '네') {
126 + mbti = 'N';
127 + } else if (mesg == '아니오') {
128 + mbti = 'S';
129 + }
130 + userDB[userId][1] += mbti;
131 + console.log(userDB[userId]);
132 + const responseBody = {
133 + version: "2.0",
134 + template: {
135 + outputs: [
136 + {
137 + "simpleText": {
138 + "text": "토론 시 사람들의 민감한 반응보다 보다 진실을 더 중요시해야 합니다."
139 + }
140 + }
141 + ],
142 + quickReplies: [
143 + {
144 + action: "block",
145 + label: "네",
146 + message: "네",
147 + blockId: "6297b1275ceed96c38544a08"
148 + },
149 + {
150 + action: "block",
151 + label: "아니오",
152 + message: "아니오",
153 + blockId: "6297b1275ceed96c38544a08"
154 + }
155 + ]
156 + }
157 + };
158 + res.status(200).send(responseBody);
159 +});
160 +
161 +apiRouter.post('/question4', (req, res) => {
162 + var userId = req.body.userRequest.user.id;
163 + var mesg = req.body.userRequest.utterance;
164 + console.log('[q4:user message] ', mesg);
165 + var mbti = '';
166 + if (mesg == "네") {
167 + mbti = 'T';
168 + } else if (mesg == "아니오") {
169 + mbti = 'F';
170 + }
171 + userDB[userId][2] += mbti;
172 + console.log(userDB[userId]);
173 + const responseBody = {
174 + version: "2.0",
175 + template: {
176 + outputs: [
177 + {
178 + simpleText: {
179 + text: "주의깊게 미리 계획하기 보다는 즉흥적으로 움직입니다."
180 + }
181 + }
182 + ],
183 + quickReplies: [
184 + {
185 + action: "block",
186 + label: "네",
187 + message: "네",
188 + blockId: "6297b12be7a0253c7662ccec"
189 + },
190 + {
191 + action: "block",
192 + label: "아니오",
193 + message: "아니오",
194 + blockId: "6297b12be7a0253c7662ccec"
195 + }
196 + ]
197 + }
198 + }
199 + res.status(200).send(responseBody);
200 +});
201 +
202 +apiRouter.post('/question5', (req, res) => {
203 + var userId = req.body.userRequest.user.id;
204 + var mesg = req.body.userRequest;
205 + console.log('[q1:user message] ', mesg);
206 + var mbti = '';
207 + if (mesg == "네") {
208 + mbti = 'P';
209 + } else if (mesg == "아니오") {
210 + mbti = 'J';
211 + }
212 + userDB[userId][3] += mbti;
213 + console.log(userDB[userId]);
214 + const responseBody = {
215 + version: "2.0",
216 + template: {
217 + outputs: [
218 + {
219 + simpleText: {
220 + text: '주목받는 것을 좋아합니다.'
221 + }
222 + }
223 + ],
224 + quickReplies: [
225 + {
226 + action: "block",
227 + label: "네",
228 + message: "네",
229 + blockId: "6297b130e7a0253c7662ccee"
230 + },
231 + {
232 + action: "block",
233 + label: "아니오",
234 + message: "아니오",
235 + blockId: "6297b130e7a0253c7662ccee"
236 + }
237 + ]
238 + }
239 + }
240 + res.status(200).send(responseBody);
241 +});
242 +
243 +apiRouter.post('/question6', (req, res) => {
244 + var userId = req.body.userRequest.user.id;
245 + var mesg = req.body.userRequest.utterance;
246 + console.log('[q2:user message] ', mesg);
247 + var mbti = '';
248 + if (mesg == "네") {
249 + mbti = 'E';
250 + } else if (mesg == "아니오") {
251 + mbti = 'I';
252 + }
253 + userDB[userId][0] += mbti;
254 + console.log(userDB[userId]);
255 + const responseBody = {
256 + version: "2.0",
257 + template: {
258 + outputs: [
259 + {
260 + simpleText: {
261 + text: '종종 인간 실존에 대한 이유를 생각합니다.'
262 + }
263 + }
264 + ],
265 + quickReplies: [
266 + {
267 + action: "block",
268 + label: "네",
269 + message: "네",
270 + blockId: "6297b133f591aa190554a260"
271 + },
272 + {
273 + action: "block",
274 + label: "아니오",
275 + message: "아니오",
276 + blockId: "6297b133f591aa190554a260"
277 + }
278 + ]
279 + }
280 + }
281 + res.status(200).send(responseBody);
282 +});
283 +
284 +apiRouter.post('/question7', (req, res) => {
285 + var userId = req.body.userRequest.user.id;
286 + var mesg = req.body.userRequest.utterance;
287 + console.log('[q2:user message] ', mesg);
288 + var mbti = '';
289 + if (mesg == "네") {
290 + mbti = 'N';
291 + } else if (mesg == "아니오") {
292 + mbti = 'S';
293 + }
294 + userDB[userId][1] += mbti;
295 + console.log(userDB[userId]);
296 + const responseBody = {
297 + version: "2.0",
298 + template: {
299 + outputs: [
300 + {
301 + simpleText: {
302 + text: '어떤 일에서 성과를 냈을 때 “고생했어”보다 “잘했어”라는 말이 더 좋습니다.'
303 + }
304 + }
305 + ],
306 + quickReplies: [
307 + {
308 + action: "block",
309 + label: "네",
310 + message: "네",
311 + blockId: "6297b3505ceed96c38544a0a"
312 + },
313 + {
314 + action: "block",
315 + label: "아니오",
316 + message: "아니오",
317 + blockId: "6297b3505ceed96c38544a0a"
318 + }
319 + ]
320 + }
321 + }
322 + res.status(200).send(responseBody);
323 +});
324 +
325 +apiRouter.post('/result', (req, res) => {
326 + var userId = req.body.userRequest.user.id;
327 + var mesg = req.body.userRequest.utterance;
328 + console.log('[result:user message] ', mesg);
329 + var mbti = '';
330 + if (mesg == "네") {
331 + mbti = 'T';
332 + } else if (mesg == "아니오") {
333 + mbti = 'F';
334 + }
335 + userDB[userId][2] += mbti;
336 + console.log(userDB[userId]);
337 + result(userDB);
338 + const responseBody = {
339 + version: "2.0",
340 + template: {
341 + outputs: [
342 + {
343 + simpleText: {
344 + text: "당신의 MBTI는 : "+userDB[userId][4]
345 + }
346 + }
347 + ],
348 + quickReplies: [{
349 + action: "block",
350 + label: "MBTI 테스트 다시하기",
351 + message: "MBTI 테스트 다시하기",
352 + blockId : "6297b10d5ceed96c38544a06"
353 + },
354 + {
355 + action: "block",
356 + label: "자세한 결과 보기",
357 + message: "자세한 결과 보기",
358 + blockId: "6297bc58ab89e678ee86b33a"
359 + }]
360 + }
361 + }
362 + res.status(200).send(responseBody);
363 +});
364 +
365 +apiRouter.post('/detail', (req, res) => {
366 + var userId = req.body.userRequest.user.id;
367 + var mesg = req.body.userRequest.utterance;
368 + var E=0;
369 + var I=0;
370 + var N=0;
371 + var S=0;
372 + var F=0;
373 + var T=0;
374 + var P=0;
375 + var J=0;
376 +
377 + for(let j=0;j<4;j++){
378 + for(let i=0; i<3; i++){
379 + if(j==0){
380 + if(userDB[userId][j][i]=="E"){
381 + E++;
382 + }
383 + else{
384 + I++;
385 + }
386 + }
387 + else if(j==1){
388 + if(userDB[userId][j][i]=="N"){
389 + N++;
390 + }
391 + else{
392 + S++;
393 + }
394 + }
395 + else if(j==2){
396 + if(userDB[userId][j][i]=="F"){
397 + F++;
398 + }
399 + else{
400 + T++;
401 + }
402 + }
403 + else if(j==3){
404 + if(userDB[userId][j][i]=="N"){
405 + P++;
406 + }
407 + else{
408 + J++;
409 + }
410 + }
411 + }
412 + }
413 +
414 + const responseBody = {
415 + version: "2.0",
416 + template: {
417 + outputs: [
418 + {
419 + simpleText: {
420 + text: "E와 I의 비율\nE : "+(E/(E+I)*100)+"%\nI : "+(I/(E+I)*100)+"\nN와 S의 비율\nN : "+(N/(N+S)*100)+"%\nS : "+(S/(N+S)*100)+"\nF와 T의 비율\nF : "+(F/(F+T)*100)+"%\nT : "+(T/(F+T)*100)+"\nJ와 P의 비율\nJ : "+(J/(J+P)*100)+"%\nP : "+(P/(J+P)*100)
421 + }
422 + }
423 + ]
424 + }
425 + }
426 + res.status(200).send(responseBody);
427 +});
428 +
429 +function result(Array){
430 + var E=0;
431 + var I=0;
432 + var N=0;
433 + var S=0;
434 + var F=0;
435 + var T=0;
436 + var P=0;
437 + var J=0;
438 +
439 + for(let j=0;j<4;j++){
440 + for(let i=0; i<3; i++){
441 + if(j==0){
442 + if(userDB[userId][j][i]=="E"){
443 + E++;
444 + }
445 + else{
446 + I++;
447 + }
448 + }
449 + else if(j==1){
450 + if(userDB[userId][j][i]=="N"){
451 + N++;
452 + }
453 + else{
454 + S++;
455 + }
456 + }
457 + else if(j==2){
458 + if(userDB[userId][j][i]=="F"){
459 + F++;
460 + }
461 + else{
462 + T++;
463 + }
464 + }
465 + else if(j==3){
466 + if(userDB[userId][j][i]=="N"){
467 + P++;
468 + }
469 + else{
470 + J++;
471 + }
472 + }
473 + }
474 + }
475 +
476 + if(E>I)
477 + userDB[userId][4]+='E';
478 + else
479 + userDB[userId][4]+='I';
480 +
481 + if(N>S)
482 + userDB[userId][4]+='N';
483 + else
484 + userDB[userId][4]+='S';
485 +
486 + if(F>T)
487 + userDB[userId][4]+='F';
488 + else
489 + userDB[userId][4]+='T';
490 +
491 + if(P>J)
492 + userDB[userId][4]+='P';
493 + else
494 + userDB[userId][4]+='J';
495 +}
496 +
497 +app.listen((process.env.PORT || 3000), function() {
498 + console.log('Example skill server listening on port 3000!');
499 +});
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "name": "example",
3 + "version": "1.0.0",
4 + "lockfileVersion": 2,
5 + "requires": true,
6 + "packages": {
7 + "": {
8 + "name": "example",
9 + "version": "1.0.0",
10 + "license": "ISC",
11 + "dependencies": {
12 + "body-parser": "^1.20.0",
13 + "express": "^4.18.1",
14 + "morgan": "^1.10.0"
15 + },
16 + "engines": {
17 + "node": "16.14.2",
18 + "npm": "8.5.0"
19 + }
20 + },
21 + "node_modules/accepts": {
22 + "version": "1.3.8",
23 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
24 + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
25 + "dependencies": {
26 + "mime-types": "~2.1.34",
27 + "negotiator": "0.6.3"
28 + },
29 + "engines": {
30 + "node": ">= 0.6"
31 + }
32 + },
33 + "node_modules/array-flatten": {
34 + "version": "1.1.1",
35 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
36 + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
37 + },
38 + "node_modules/basic-auth": {
39 + "version": "2.0.1",
40 + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
41 + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
42 + "dependencies": {
43 + "safe-buffer": "5.1.2"
44 + },
45 + "engines": {
46 + "node": ">= 0.8"
47 + }
48 + },
49 + "node_modules/basic-auth/node_modules/safe-buffer": {
50 + "version": "5.1.2",
51 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
52 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
53 + },
54 + "node_modules/body-parser": {
55 + "version": "1.20.0",
56 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
57 + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
58 + "dependencies": {
59 + "bytes": "3.1.2",
60 + "content-type": "~1.0.4",
61 + "debug": "2.6.9",
62 + "depd": "2.0.0",
63 + "destroy": "1.2.0",
64 + "http-errors": "2.0.0",
65 + "iconv-lite": "0.4.24",
66 + "on-finished": "2.4.1",
67 + "qs": "6.10.3",
68 + "raw-body": "2.5.1",
69 + "type-is": "~1.6.18",
70 + "unpipe": "1.0.0"
71 + },
72 + "engines": {
73 + "node": ">= 0.8",
74 + "npm": "1.2.8000 || >= 1.4.16"
75 + }
76 + },
77 + "node_modules/bytes": {
78 + "version": "3.1.2",
79 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
80 + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
81 + "engines": {
82 + "node": ">= 0.8"
83 + }
84 + },
85 + "node_modules/call-bind": {
86 + "version": "1.0.2",
87 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
88 + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
89 + "dependencies": {
90 + "function-bind": "^1.1.1",
91 + "get-intrinsic": "^1.0.2"
92 + },
93 + "funding": {
94 + "url": "https://github.com/sponsors/ljharb"
95 + }
96 + },
97 + "node_modules/content-disposition": {
98 + "version": "0.5.4",
99 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
100 + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
101 + "dependencies": {
102 + "safe-buffer": "5.2.1"
103 + },
104 + "engines": {
105 + "node": ">= 0.6"
106 + }
107 + },
108 + "node_modules/content-type": {
109 + "version": "1.0.4",
110 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
111 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
112 + "engines": {
113 + "node": ">= 0.6"
114 + }
115 + },
116 + "node_modules/cookie": {
117 + "version": "0.5.0",
118 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
119 + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
120 + "engines": {
121 + "node": ">= 0.6"
122 + }
123 + },
124 + "node_modules/cookie-signature": {
125 + "version": "1.0.6",
126 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
127 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
128 + },
129 + "node_modules/debug": {
130 + "version": "2.6.9",
131 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
132 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
133 + "dependencies": {
134 + "ms": "2.0.0"
135 + }
136 + },
137 + "node_modules/depd": {
138 + "version": "2.0.0",
139 + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
140 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
141 + "engines": {
142 + "node": ">= 0.8"
143 + }
144 + },
145 + "node_modules/destroy": {
146 + "version": "1.2.0",
147 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
148 + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
149 + "engines": {
150 + "node": ">= 0.8",
151 + "npm": "1.2.8000 || >= 1.4.16"
152 + }
153 + },
154 + "node_modules/ee-first": {
155 + "version": "1.1.1",
156 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
157 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
158 + },
159 + "node_modules/encodeurl": {
160 + "version": "1.0.2",
161 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
162 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
163 + "engines": {
164 + "node": ">= 0.8"
165 + }
166 + },
167 + "node_modules/escape-html": {
168 + "version": "1.0.3",
169 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
170 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
171 + },
172 + "node_modules/etag": {
173 + "version": "1.8.1",
174 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
175 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
176 + "engines": {
177 + "node": ">= 0.6"
178 + }
179 + },
180 + "node_modules/express": {
181 + "version": "4.18.1",
182 + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
183 + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
184 + "dependencies": {
185 + "accepts": "~1.3.8",
186 + "array-flatten": "1.1.1",
187 + "body-parser": "1.20.0",
188 + "content-disposition": "0.5.4",
189 + "content-type": "~1.0.4",
190 + "cookie": "0.5.0",
191 + "cookie-signature": "1.0.6",
192 + "debug": "2.6.9",
193 + "depd": "2.0.0",
194 + "encodeurl": "~1.0.2",
195 + "escape-html": "~1.0.3",
196 + "etag": "~1.8.1",
197 + "finalhandler": "1.2.0",
198 + "fresh": "0.5.2",
199 + "http-errors": "2.0.0",
200 + "merge-descriptors": "1.0.1",
201 + "methods": "~1.1.2",
202 + "on-finished": "2.4.1",
203 + "parseurl": "~1.3.3",
204 + "path-to-regexp": "0.1.7",
205 + "proxy-addr": "~2.0.7",
206 + "qs": "6.10.3",
207 + "range-parser": "~1.2.1",
208 + "safe-buffer": "5.2.1",
209 + "send": "0.18.0",
210 + "serve-static": "1.15.0",
211 + "setprototypeof": "1.2.0",
212 + "statuses": "2.0.1",
213 + "type-is": "~1.6.18",
214 + "utils-merge": "1.0.1",
215 + "vary": "~1.1.2"
216 + },
217 + "engines": {
218 + "node": ">= 0.10.0"
219 + }
220 + },
221 + "node_modules/finalhandler": {
222 + "version": "1.2.0",
223 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
224 + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
225 + "dependencies": {
226 + "debug": "2.6.9",
227 + "encodeurl": "~1.0.2",
228 + "escape-html": "~1.0.3",
229 + "on-finished": "2.4.1",
230 + "parseurl": "~1.3.3",
231 + "statuses": "2.0.1",
232 + "unpipe": "~1.0.0"
233 + },
234 + "engines": {
235 + "node": ">= 0.8"
236 + }
237 + },
238 + "node_modules/forwarded": {
239 + "version": "0.2.0",
240 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
241 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
242 + "engines": {
243 + "node": ">= 0.6"
244 + }
245 + },
246 + "node_modules/fresh": {
247 + "version": "0.5.2",
248 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
249 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
250 + "engines": {
251 + "node": ">= 0.6"
252 + }
253 + },
254 + "node_modules/function-bind": {
255 + "version": "1.1.1",
256 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
257 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
258 + },
259 + "node_modules/get-intrinsic": {
260 + "version": "1.1.1",
261 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
262 + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
263 + "dependencies": {
264 + "function-bind": "^1.1.1",
265 + "has": "^1.0.3",
266 + "has-symbols": "^1.0.1"
267 + },
268 + "funding": {
269 + "url": "https://github.com/sponsors/ljharb"
270 + }
271 + },
272 + "node_modules/has": {
273 + "version": "1.0.3",
274 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
275 + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
276 + "dependencies": {
277 + "function-bind": "^1.1.1"
278 + },
279 + "engines": {
280 + "node": ">= 0.4.0"
281 + }
282 + },
283 + "node_modules/has-symbols": {
284 + "version": "1.0.3",
285 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
286 + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
287 + "engines": {
288 + "node": ">= 0.4"
289 + },
290 + "funding": {
291 + "url": "https://github.com/sponsors/ljharb"
292 + }
293 + },
294 + "node_modules/http-errors": {
295 + "version": "2.0.0",
296 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
297 + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
298 + "dependencies": {
299 + "depd": "2.0.0",
300 + "inherits": "2.0.4",
301 + "setprototypeof": "1.2.0",
302 + "statuses": "2.0.1",
303 + "toidentifier": "1.0.1"
304 + },
305 + "engines": {
306 + "node": ">= 0.8"
307 + }
308 + },
309 + "node_modules/iconv-lite": {
310 + "version": "0.4.24",
311 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
312 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
313 + "dependencies": {
314 + "safer-buffer": ">= 2.1.2 < 3"
315 + },
316 + "engines": {
317 + "node": ">=0.10.0"
318 + }
319 + },
320 + "node_modules/inherits": {
321 + "version": "2.0.4",
322 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
323 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
324 + },
325 + "node_modules/ipaddr.js": {
326 + "version": "1.9.1",
327 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
328 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
329 + "engines": {
330 + "node": ">= 0.10"
331 + }
332 + },
333 + "node_modules/media-typer": {
334 + "version": "0.3.0",
335 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
336 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
337 + "engines": {
338 + "node": ">= 0.6"
339 + }
340 + },
341 + "node_modules/merge-descriptors": {
342 + "version": "1.0.1",
343 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
344 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
345 + },
346 + "node_modules/methods": {
347 + "version": "1.1.2",
348 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
349 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
350 + "engines": {
351 + "node": ">= 0.6"
352 + }
353 + },
354 + "node_modules/mime": {
355 + "version": "1.6.0",
356 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
357 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
358 + "bin": {
359 + "mime": "cli.js"
360 + },
361 + "engines": {
362 + "node": ">=4"
363 + }
364 + },
365 + "node_modules/mime-db": {
366 + "version": "1.52.0",
367 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
368 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
369 + "engines": {
370 + "node": ">= 0.6"
371 + }
372 + },
373 + "node_modules/mime-types": {
374 + "version": "2.1.35",
375 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
376 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
377 + "dependencies": {
378 + "mime-db": "1.52.0"
379 + },
380 + "engines": {
381 + "node": ">= 0.6"
382 + }
383 + },
384 + "node_modules/morgan": {
385 + "version": "1.10.0",
386 + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
387 + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
388 + "dependencies": {
389 + "basic-auth": "~2.0.1",
390 + "debug": "2.6.9",
391 + "depd": "~2.0.0",
392 + "on-finished": "~2.3.0",
393 + "on-headers": "~1.0.2"
394 + },
395 + "engines": {
396 + "node": ">= 0.8.0"
397 + }
398 + },
399 + "node_modules/morgan/node_modules/on-finished": {
400 + "version": "2.3.0",
401 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
402 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
403 + "dependencies": {
404 + "ee-first": "1.1.1"
405 + },
406 + "engines": {
407 + "node": ">= 0.8"
408 + }
409 + },
410 + "node_modules/ms": {
411 + "version": "2.0.0",
412 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
413 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
414 + },
415 + "node_modules/negotiator": {
416 + "version": "0.6.3",
417 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
418 + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
419 + "engines": {
420 + "node": ">= 0.6"
421 + }
422 + },
423 + "node_modules/object-inspect": {
424 + "version": "1.12.1",
425 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
426 + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==",
427 + "funding": {
428 + "url": "https://github.com/sponsors/ljharb"
429 + }
430 + },
431 + "node_modules/on-finished": {
432 + "version": "2.4.1",
433 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
434 + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
435 + "dependencies": {
436 + "ee-first": "1.1.1"
437 + },
438 + "engines": {
439 + "node": ">= 0.8"
440 + }
441 + },
442 + "node_modules/on-headers": {
443 + "version": "1.0.2",
444 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
445 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
446 + "engines": {
447 + "node": ">= 0.8"
448 + }
449 + },
450 + "node_modules/parseurl": {
451 + "version": "1.3.3",
452 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
453 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
454 + "engines": {
455 + "node": ">= 0.8"
456 + }
457 + },
458 + "node_modules/path-to-regexp": {
459 + "version": "0.1.7",
460 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
461 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
462 + },
463 + "node_modules/proxy-addr": {
464 + "version": "2.0.7",
465 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
466 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
467 + "dependencies": {
468 + "forwarded": "0.2.0",
469 + "ipaddr.js": "1.9.1"
470 + },
471 + "engines": {
472 + "node": ">= 0.10"
473 + }
474 + },
475 + "node_modules/qs": {
476 + "version": "6.10.3",
477 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
478 + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
479 + "dependencies": {
480 + "side-channel": "^1.0.4"
481 + },
482 + "engines": {
483 + "node": ">=0.6"
484 + },
485 + "funding": {
486 + "url": "https://github.com/sponsors/ljharb"
487 + }
488 + },
489 + "node_modules/range-parser": {
490 + "version": "1.2.1",
491 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
492 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
493 + "engines": {
494 + "node": ">= 0.6"
495 + }
496 + },
497 + "node_modules/raw-body": {
498 + "version": "2.5.1",
499 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
500 + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
501 + "dependencies": {
502 + "bytes": "3.1.2",
503 + "http-errors": "2.0.0",
504 + "iconv-lite": "0.4.24",
505 + "unpipe": "1.0.0"
506 + },
507 + "engines": {
508 + "node": ">= 0.8"
509 + }
510 + },
511 + "node_modules/safe-buffer": {
512 + "version": "5.2.1",
513 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
514 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
515 + "funding": [
516 + {
517 + "type": "github",
518 + "url": "https://github.com/sponsors/feross"
519 + },
520 + {
521 + "type": "patreon",
522 + "url": "https://www.patreon.com/feross"
523 + },
524 + {
525 + "type": "consulting",
526 + "url": "https://feross.org/support"
527 + }
528 + ]
529 + },
530 + "node_modules/safer-buffer": {
531 + "version": "2.1.2",
532 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
533 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
534 + },
535 + "node_modules/send": {
536 + "version": "0.18.0",
537 + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
538 + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
539 + "dependencies": {
540 + "debug": "2.6.9",
541 + "depd": "2.0.0",
542 + "destroy": "1.2.0",
543 + "encodeurl": "~1.0.2",
544 + "escape-html": "~1.0.3",
545 + "etag": "~1.8.1",
546 + "fresh": "0.5.2",
547 + "http-errors": "2.0.0",
548 + "mime": "1.6.0",
549 + "ms": "2.1.3",
550 + "on-finished": "2.4.1",
551 + "range-parser": "~1.2.1",
552 + "statuses": "2.0.1"
553 + },
554 + "engines": {
555 + "node": ">= 0.8.0"
556 + }
557 + },
558 + "node_modules/send/node_modules/ms": {
559 + "version": "2.1.3",
560 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
561 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
562 + },
563 + "node_modules/serve-static": {
564 + "version": "1.15.0",
565 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
566 + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
567 + "dependencies": {
568 + "encodeurl": "~1.0.2",
569 + "escape-html": "~1.0.3",
570 + "parseurl": "~1.3.3",
571 + "send": "0.18.0"
572 + },
573 + "engines": {
574 + "node": ">= 0.8.0"
575 + }
576 + },
577 + "node_modules/setprototypeof": {
578 + "version": "1.2.0",
579 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
580 + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
581 + },
582 + "node_modules/side-channel": {
583 + "version": "1.0.4",
584 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
585 + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
586 + "dependencies": {
587 + "call-bind": "^1.0.0",
588 + "get-intrinsic": "^1.0.2",
589 + "object-inspect": "^1.9.0"
590 + },
591 + "funding": {
592 + "url": "https://github.com/sponsors/ljharb"
593 + }
594 + },
595 + "node_modules/statuses": {
596 + "version": "2.0.1",
597 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
598 + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
599 + "engines": {
600 + "node": ">= 0.8"
601 + }
602 + },
603 + "node_modules/toidentifier": {
604 + "version": "1.0.1",
605 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
606 + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
607 + "engines": {
608 + "node": ">=0.6"
609 + }
610 + },
611 + "node_modules/type-is": {
612 + "version": "1.6.18",
613 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
614 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
615 + "dependencies": {
616 + "media-typer": "0.3.0",
617 + "mime-types": "~2.1.24"
618 + },
619 + "engines": {
620 + "node": ">= 0.6"
621 + }
622 + },
623 + "node_modules/unpipe": {
624 + "version": "1.0.0",
625 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
626 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
627 + "engines": {
628 + "node": ">= 0.8"
629 + }
630 + },
631 + "node_modules/utils-merge": {
632 + "version": "1.0.1",
633 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
634 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
635 + "engines": {
636 + "node": ">= 0.4.0"
637 + }
638 + },
639 + "node_modules/vary": {
640 + "version": "1.1.2",
641 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
642 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
643 + "engines": {
644 + "node": ">= 0.8"
645 + }
646 + }
647 + },
648 + "dependencies": {
649 + "accepts": {
650 + "version": "1.3.8",
651 + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
652 + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
653 + "requires": {
654 + "mime-types": "~2.1.34",
655 + "negotiator": "0.6.3"
656 + }
657 + },
658 + "array-flatten": {
659 + "version": "1.1.1",
660 + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
661 + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
662 + },
663 + "basic-auth": {
664 + "version": "2.0.1",
665 + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
666 + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
667 + "requires": {
668 + "safe-buffer": "5.1.2"
669 + },
670 + "dependencies": {
671 + "safe-buffer": {
672 + "version": "5.1.2",
673 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
674 + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
675 + }
676 + }
677 + },
678 + "body-parser": {
679 + "version": "1.20.0",
680 + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
681 + "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
682 + "requires": {
683 + "bytes": "3.1.2",
684 + "content-type": "~1.0.4",
685 + "debug": "2.6.9",
686 + "depd": "2.0.0",
687 + "destroy": "1.2.0",
688 + "http-errors": "2.0.0",
689 + "iconv-lite": "0.4.24",
690 + "on-finished": "2.4.1",
691 + "qs": "6.10.3",
692 + "raw-body": "2.5.1",
693 + "type-is": "~1.6.18",
694 + "unpipe": "1.0.0"
695 + }
696 + },
697 + "bytes": {
698 + "version": "3.1.2",
699 + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
700 + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
701 + },
702 + "call-bind": {
703 + "version": "1.0.2",
704 + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
705 + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
706 + "requires": {
707 + "function-bind": "^1.1.1",
708 + "get-intrinsic": "^1.0.2"
709 + }
710 + },
711 + "content-disposition": {
712 + "version": "0.5.4",
713 + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
714 + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
715 + "requires": {
716 + "safe-buffer": "5.2.1"
717 + }
718 + },
719 + "content-type": {
720 + "version": "1.0.4",
721 + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
722 + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
723 + },
724 + "cookie": {
725 + "version": "0.5.0",
726 + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
727 + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
728 + },
729 + "cookie-signature": {
730 + "version": "1.0.6",
731 + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
732 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
733 + },
734 + "debug": {
735 + "version": "2.6.9",
736 + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
737 + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
738 + "requires": {
739 + "ms": "2.0.0"
740 + }
741 + },
742 + "depd": {
743 + "version": "2.0.0",
744 + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
745 + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
746 + },
747 + "destroy": {
748 + "version": "1.2.0",
749 + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
750 + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
751 + },
752 + "ee-first": {
753 + "version": "1.1.1",
754 + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
755 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
756 + },
757 + "encodeurl": {
758 + "version": "1.0.2",
759 + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
760 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
761 + },
762 + "escape-html": {
763 + "version": "1.0.3",
764 + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
765 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
766 + },
767 + "etag": {
768 + "version": "1.8.1",
769 + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
770 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
771 + },
772 + "express": {
773 + "version": "4.18.1",
774 + "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
775 + "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
776 + "requires": {
777 + "accepts": "~1.3.8",
778 + "array-flatten": "1.1.1",
779 + "body-parser": "1.20.0",
780 + "content-disposition": "0.5.4",
781 + "content-type": "~1.0.4",
782 + "cookie": "0.5.0",
783 + "cookie-signature": "1.0.6",
784 + "debug": "2.6.9",
785 + "depd": "2.0.0",
786 + "encodeurl": "~1.0.2",
787 + "escape-html": "~1.0.3",
788 + "etag": "~1.8.1",
789 + "finalhandler": "1.2.0",
790 + "fresh": "0.5.2",
791 + "http-errors": "2.0.0",
792 + "merge-descriptors": "1.0.1",
793 + "methods": "~1.1.2",
794 + "on-finished": "2.4.1",
795 + "parseurl": "~1.3.3",
796 + "path-to-regexp": "0.1.7",
797 + "proxy-addr": "~2.0.7",
798 + "qs": "6.10.3",
799 + "range-parser": "~1.2.1",
800 + "safe-buffer": "5.2.1",
801 + "send": "0.18.0",
802 + "serve-static": "1.15.0",
803 + "setprototypeof": "1.2.0",
804 + "statuses": "2.0.1",
805 + "type-is": "~1.6.18",
806 + "utils-merge": "1.0.1",
807 + "vary": "~1.1.2"
808 + }
809 + },
810 + "finalhandler": {
811 + "version": "1.2.0",
812 + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
813 + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
814 + "requires": {
815 + "debug": "2.6.9",
816 + "encodeurl": "~1.0.2",
817 + "escape-html": "~1.0.3",
818 + "on-finished": "2.4.1",
819 + "parseurl": "~1.3.3",
820 + "statuses": "2.0.1",
821 + "unpipe": "~1.0.0"
822 + }
823 + },
824 + "forwarded": {
825 + "version": "0.2.0",
826 + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
827 + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
828 + },
829 + "fresh": {
830 + "version": "0.5.2",
831 + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
832 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
833 + },
834 + "function-bind": {
835 + "version": "1.1.1",
836 + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
837 + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
838 + },
839 + "get-intrinsic": {
840 + "version": "1.1.1",
841 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
842 + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
843 + "requires": {
844 + "function-bind": "^1.1.1",
845 + "has": "^1.0.3",
846 + "has-symbols": "^1.0.1"
847 + }
848 + },
849 + "has": {
850 + "version": "1.0.3",
851 + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
852 + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
853 + "requires": {
854 + "function-bind": "^1.1.1"
855 + }
856 + },
857 + "has-symbols": {
858 + "version": "1.0.3",
859 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
860 + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
861 + },
862 + "http-errors": {
863 + "version": "2.0.0",
864 + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
865 + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
866 + "requires": {
867 + "depd": "2.0.0",
868 + "inherits": "2.0.4",
869 + "setprototypeof": "1.2.0",
870 + "statuses": "2.0.1",
871 + "toidentifier": "1.0.1"
872 + }
873 + },
874 + "iconv-lite": {
875 + "version": "0.4.24",
876 + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
877 + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
878 + "requires": {
879 + "safer-buffer": ">= 2.1.2 < 3"
880 + }
881 + },
882 + "inherits": {
883 + "version": "2.0.4",
884 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
885 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
886 + },
887 + "ipaddr.js": {
888 + "version": "1.9.1",
889 + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
890 + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
891 + },
892 + "media-typer": {
893 + "version": "0.3.0",
894 + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
895 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
896 + },
897 + "merge-descriptors": {
898 + "version": "1.0.1",
899 + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
900 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
901 + },
902 + "methods": {
903 + "version": "1.1.2",
904 + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
905 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
906 + },
907 + "mime": {
908 + "version": "1.6.0",
909 + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
910 + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
911 + },
912 + "mime-db": {
913 + "version": "1.52.0",
914 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
915 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
916 + },
917 + "mime-types": {
918 + "version": "2.1.35",
919 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
920 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
921 + "requires": {
922 + "mime-db": "1.52.0"
923 + }
924 + },
925 + "morgan": {
926 + "version": "1.10.0",
927 + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
928 + "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
929 + "requires": {
930 + "basic-auth": "~2.0.1",
931 + "debug": "2.6.9",
932 + "depd": "~2.0.0",
933 + "on-finished": "~2.3.0",
934 + "on-headers": "~1.0.2"
935 + },
936 + "dependencies": {
937 + "on-finished": {
938 + "version": "2.3.0",
939 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
940 + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
941 + "requires": {
942 + "ee-first": "1.1.1"
943 + }
944 + }
945 + }
946 + },
947 + "ms": {
948 + "version": "2.0.0",
949 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
950 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
951 + },
952 + "negotiator": {
953 + "version": "0.6.3",
954 + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
955 + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
956 + },
957 + "object-inspect": {
958 + "version": "1.12.1",
959 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
960 + "integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA=="
961 + },
962 + "on-finished": {
963 + "version": "2.4.1",
964 + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
965 + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
966 + "requires": {
967 + "ee-first": "1.1.1"
968 + }
969 + },
970 + "on-headers": {
971 + "version": "1.0.2",
972 + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
973 + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
974 + },
975 + "parseurl": {
976 + "version": "1.3.3",
977 + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
978 + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
979 + },
980 + "path-to-regexp": {
981 + "version": "0.1.7",
982 + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
983 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
984 + },
985 + "proxy-addr": {
986 + "version": "2.0.7",
987 + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
988 + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
989 + "requires": {
990 + "forwarded": "0.2.0",
991 + "ipaddr.js": "1.9.1"
992 + }
993 + },
994 + "qs": {
995 + "version": "6.10.3",
996 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
997 + "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
998 + "requires": {
999 + "side-channel": "^1.0.4"
1000 + }
1001 + },
1002 + "range-parser": {
1003 + "version": "1.2.1",
1004 + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1005 + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1006 + },
1007 + "raw-body": {
1008 + "version": "2.5.1",
1009 + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1010 + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1011 + "requires": {
1012 + "bytes": "3.1.2",
1013 + "http-errors": "2.0.0",
1014 + "iconv-lite": "0.4.24",
1015 + "unpipe": "1.0.0"
1016 + }
1017 + },
1018 + "safe-buffer": {
1019 + "version": "5.2.1",
1020 + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1021 + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1022 + },
1023 + "safer-buffer": {
1024 + "version": "2.1.2",
1025 + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1026 + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1027 + },
1028 + "send": {
1029 + "version": "0.18.0",
1030 + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1031 + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1032 + "requires": {
1033 + "debug": "2.6.9",
1034 + "depd": "2.0.0",
1035 + "destroy": "1.2.0",
1036 + "encodeurl": "~1.0.2",
1037 + "escape-html": "~1.0.3",
1038 + "etag": "~1.8.1",
1039 + "fresh": "0.5.2",
1040 + "http-errors": "2.0.0",
1041 + "mime": "1.6.0",
1042 + "ms": "2.1.3",
1043 + "on-finished": "2.4.1",
1044 + "range-parser": "~1.2.1",
1045 + "statuses": "2.0.1"
1046 + },
1047 + "dependencies": {
1048 + "ms": {
1049 + "version": "2.1.3",
1050 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1051 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1052 + }
1053 + }
1054 + },
1055 + "serve-static": {
1056 + "version": "1.15.0",
1057 + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1058 + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1059 + "requires": {
1060 + "encodeurl": "~1.0.2",
1061 + "escape-html": "~1.0.3",
1062 + "parseurl": "~1.3.3",
1063 + "send": "0.18.0"
1064 + }
1065 + },
1066 + "setprototypeof": {
1067 + "version": "1.2.0",
1068 + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1069 + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1070 + },
1071 + "side-channel": {
1072 + "version": "1.0.4",
1073 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1074 + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1075 + "requires": {
1076 + "call-bind": "^1.0.0",
1077 + "get-intrinsic": "^1.0.2",
1078 + "object-inspect": "^1.9.0"
1079 + }
1080 + },
1081 + "statuses": {
1082 + "version": "2.0.1",
1083 + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1084 + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1085 + },
1086 + "toidentifier": {
1087 + "version": "1.0.1",
1088 + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1089 + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1090 + },
1091 + "type-is": {
1092 + "version": "1.6.18",
1093 + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1094 + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1095 + "requires": {
1096 + "media-typer": "0.3.0",
1097 + "mime-types": "~2.1.24"
1098 + }
1099 + },
1100 + "unpipe": {
1101 + "version": "1.0.0",
1102 + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1103 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1104 + },
1105 + "utils-merge": {
1106 + "version": "1.0.1",
1107 + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1108 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1109 + },
1110 + "vary": {
1111 + "version": "1.1.2",
1112 + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1113 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1114 + }
1115 + }
1116 +}
1 +{
2 + "name": "example",
3 + "version": "1.0.0",
4 + "description": "",
5 + "main": "index.js",
6 + "scripts": {
7 + "start": "node index.js",
8 + "test": "echo \"Error: no test specified\" && exit 1"
9 + },
10 + "author": "",
11 + "license": "ISC",
12 + "engines": {
13 + "node": "16.14.2",
14 + "npm": "8.5.0"
15 + },
16 + "dependencies": {
17 + "body-parser": "^1.20.0",
18 + "express": "^4.18.1",
19 + "morgan": "^1.10.0"
20 + }
21 +}