node-karin 0.12.13 → 0.12.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/lib/adapter/input/index.d.ts +1 -1
  2. package/lib/adapter/input/index.js +1 -1
  3. package/lib/adapter/onebot/11/event.js +90 -84
  4. package/lib/adapter/onebot/11/index.d.ts +89 -127
  5. package/lib/adapter/onebot/11/index.js +192 -254
  6. package/lib/cli/index.js +2 -2
  7. package/lib/core/init/config.js +1 -1
  8. package/lib/core/karin/karin.d.ts +21 -30
  9. package/lib/core/karin/karin.js +7 -9
  10. package/lib/core/listener/listener.js +11 -11
  11. package/lib/core/plugin/base.d.ts +7 -21
  12. package/lib/core/plugin/base.js +2 -6
  13. package/lib/core/plugin/loader.d.ts +5 -15
  14. package/lib/core/plugin/loader.js +5 -15
  15. package/lib/core/server/server.js +4 -4
  16. package/lib/event/handler/base.d.ts +1 -3
  17. package/lib/event/handler/base.js +1 -3
  18. package/lib/event/handler/message.js +9 -3
  19. package/lib/event/handler/notice.js +38 -32
  20. package/lib/event/handler/request.js +6 -6
  21. package/lib/index.d.ts +6 -0
  22. package/lib/index.js +6 -0
  23. package/lib/modules.d.ts +2 -2
  24. package/lib/modules.js +3 -2
  25. package/lib/types/adapter/accept.d.ts +24 -0
  26. package/lib/types/adapter/accept.js +1 -0
  27. package/lib/types/adapter/api.d.ts +88 -264
  28. package/lib/types/adapter/base.d.ts +3 -3
  29. package/lib/types/config/config.d.ts +4 -12
  30. package/lib/types/element/element.d.ts +119 -349
  31. package/lib/types/element/qqbot.d.ts +4 -12
  32. package/lib/types/event/contact.d.ts +6 -12
  33. package/lib/types/event/event.d.ts +59 -163
  34. package/lib/types/event/message.d.ts +11 -31
  35. package/lib/types/event/message.js +10 -12
  36. package/lib/types/event/notice.d.ts +118 -325
  37. package/lib/types/event/notice.js +8 -10
  38. package/lib/types/event/request.d.ts +29 -66
  39. package/lib/types/event/request.js +8 -10
  40. package/lib/types/event/sender.d.ts +7 -21
  41. package/lib/types/index.d.ts +1 -0
  42. package/lib/types/index.js +1 -0
  43. package/lib/types/onebot11/api.d.ts +49 -49
  44. package/lib/types/onebot11/event.d.ts +131 -347
  45. package/lib/types/onebot11/params.d.ts +184 -456
  46. package/lib/types/onebot11/response.d.ts +159 -381
  47. package/lib/types/onebot11/segment.d.ts +25 -75
  48. package/lib/types/onebot11/sender.d.ts +13 -39
  49. package/lib/types/plugin/app.d.ts +7 -11
  50. package/lib/types/plugin/plugin.d.ts +55 -165
  51. package/lib/types/render/render.d.ts +16 -48
  52. package/lib/utils/common/common.js +4 -2
  53. package/lib/utils/config/config.js +1 -1
  54. package/lib/utils/core/logger.js +3 -3
  55. package/lib/utils/core/segment.d.ts +28 -59
  56. package/lib/utils/core/segment.js +26 -30
  57. package/lib/utils/tools/restart.d.ts +3 -3
  58. package/lib/utils/tools/restart.js +5 -5
  59. package/package.json +1 -2
@@ -40,111 +40,67 @@ export interface ob11MessageEventMapp {
40
40
  */
41
41
  export type OB11MessageToSub<T extends OB11MessageType> = T extends keyof ob11MessageEventMapp ? ob11MessageEventMapp[T] : never;
42
42
  /**
43
- * - 所有事件基类
43
+ * 所有事件基类
44
44
  */
45
45
  export interface OB11Event {
46
- /**
47
- * - 事件发生的时间戳
48
- */
46
+ /** 事件发生的时间戳 */
49
47
  time: number;
50
- /**
51
- * - 事件类型
52
- */
48
+ /** 事件类型 */
53
49
  post_type: OB11PostType;
54
- /**
55
- * - 收到事件的机器人 QQ 号
56
- */
50
+ /** 收到事件的机器人 QQ 号 */
57
51
  self_id: string;
58
52
  }
59
53
  /**
60
- * - 消息事件基类
54
+ * 消息事件基类
61
55
  */
62
56
  export interface OB11Message extends OB11Event {
63
- /**
64
- * - 事件类型
65
- */
57
+ /** 事件类型 */
66
58
  post_type: OB11PostType.Message | OB11PostType.MessageSent;
67
- /**
68
- * - 消息类型
69
- */
59
+ /** 消息类型 */
70
60
  message_type: OB11MessageType[keyof OB11MessageType];
71
- /**
72
- * - 消息子类型
73
- */
61
+ /** 消息子类型 */
74
62
  sub_type: OB11MessageToSub<OB11MessageType>;
75
- /**
76
- * - 消息 ID
77
- */
63
+ /** 消息 ID */
78
64
  message_id: string;
79
- /**
80
- * - 发送者 QQ 号
81
- */
65
+ /** 发送者 QQ 号 */
82
66
  user_id: string;
83
- /**
84
- * - 消息内容
85
- */
67
+ /** 消息内容 */
86
68
  message: OB11Segment[];
87
- /**
88
- * - 原始消息内容
89
- */
69
+ /** 原始消息内容 */
90
70
  raw_message: string;
91
- /**
92
- * - 字体
93
- */
71
+ /** 字体 */
94
72
  font: number;
95
- /**
96
- * - 发送人信息
97
- */
73
+ /** 发送人信息 */
98
74
  sender: ob11Sender;
99
75
  }
100
76
  /**
101
- * - 私聊消息事件
77
+ * 私聊消息事件
102
78
  */
103
79
  export interface OB11PrivateMessage extends OB11Message {
104
- /**
105
- * - 消息类型
106
- */
80
+ /** 消息类型 */
107
81
  message_type: 'private';
108
- /**
109
- * - 消息子类型
110
- */
82
+ /** 消息子类型 */
111
83
  sub_type: 'friend';
112
- /**
113
- * - 发送人信息
114
- */
84
+ /** 发送人信息 */
115
85
  sender: PrivateSender;
116
86
  }
117
87
  /**
118
- * - 群消息事件
88
+ * 群消息事件
119
89
  */
120
90
  export interface OB11GroupMessage extends OB11Message {
121
- /**
122
- * - 消息类型
123
- */
91
+ /** 消息类型 */
124
92
  message_type: 'group';
125
- /**
126
- * - 消息子类型
127
- */
93
+ /** 消息子类型 */
128
94
  sub_type: 'normal' | 'anonymous' | 'notice';
129
- /**
130
- * - 群号
131
- */
95
+ /** 群号 */
132
96
  group_id: string;
133
- /**
134
- * - 匿名信息
135
- */
97
+ /** 匿名信息 */
136
98
  anonymous?: {
137
- /**
138
- * - 匿名用户 ID
139
- */
99
+ /** 匿名用户 ID */
140
100
  id: string;
141
- /**
142
- * - 匿名用户名称
143
- */
101
+ /** 匿名用户名称 */
144
102
  name: string;
145
- /**
146
- * - 匿名用户 flag,在调用禁言 API 时需要传入
147
- */
103
+ /** 匿名用户 flag,在调用禁言 API 时需要传入 */
148
104
  flag: string;
149
105
  };
150
106
  sender: GroupSender;
@@ -166,314 +122,192 @@ export declare const enum OB11NoticeType {
166
122
  GroupMsgEmojiLikeLagrange = "reaction"
167
123
  }
168
124
  /**
169
- * - 通知事件基类
125
+ * 通知事件基类
170
126
  */
171
127
  export interface OneBot11Notice extends OB11Event {
172
- /**
173
- * - 事件类型
174
- */
128
+ /** 事件类型 */
175
129
  post_type: OB11PostType.Notice;
176
- /**
177
- * - 通知类型
178
- */
130
+ /** 通知类型 */
179
131
  notice_type: OB11NoticeType;
180
132
  }
181
133
  /**
182
- * - 群文件上传事件
134
+ * 群文件上传事件
183
135
  */
184
136
  export interface OneBot11GroupUpload extends OneBot11Notice {
185
- /**
186
- * - 通知类型
187
- */
137
+ /** 通知类型 */
188
138
  notice_type: OB11NoticeType.GroupUpload;
189
- /**
190
- * - 群号
191
- */
139
+ /** 群号 */
192
140
  group_id: string;
193
- /**
194
- * - 发送者 QQ 号
195
- */
141
+ /** 发送者 QQ 号 */
196
142
  user_id: string;
197
- /**
198
- * - 文件信息
199
- */
143
+ /** 文件信息 */
200
144
  file: {
201
- /**
202
- * - 文件 ID
203
- */
145
+ /** 文件 ID */
204
146
  id: string;
205
- /**
206
- * - 文件名
207
- */
147
+ /** 文件名 */
208
148
  name: string;
209
- /**
210
- * - 文件大小(字节数)
211
- */
149
+ /** 文件大小(字节数) */
212
150
  size: number;
213
- /**
214
- * - busid(目前不清楚有什么作用)
215
- */
151
+ /** busid(目前不清楚有什么作用) */
216
152
  busid: number;
217
153
  };
218
154
  }
219
155
  /**
220
- * - 群管理员变动事件
156
+ * 群管理员变动事件
221
157
  */
222
158
  export interface OneBot11GroupAdmin extends OneBot11Notice {
223
- /**
224
- * - 通知类型
225
- */
159
+ /** 通知类型 */
226
160
  notice_type: OB11NoticeType.GroupAdmin;
227
- /**
228
- * - 事件子类型,分别表示设置和取消管理员
229
- */
161
+ /** 事件子类型,分别表示设置和取消管理员 */
230
162
  sub_type: 'set' | 'unset';
231
- /**
232
- * - 群号
233
- */
163
+ /** 群号 */
234
164
  group_id: string;
235
- /**
236
- * - 管理员 QQ 号
237
- */
165
+ /** 管理员 QQ 号 */
238
166
  user_id: string;
239
167
  }
240
168
  /**
241
- * - 群减少事件
169
+ * 群减少事件
242
170
  */
243
171
  export interface OneBot11GroupDecrease extends OneBot11Notice {
244
- /**
245
- * - 通知类型
246
- */
172
+ /** 通知类型 */
247
173
  notice_type: OB11NoticeType.GroupDecrease;
248
- /**
249
- * - 事件子类型,分别表示主动退群、成员被踢、登录号被踢
250
- */
174
+ /** 事件子类型,分别表示主动退群、成员被踢、登录号被踢 */
251
175
  sub_type: 'leave' | 'kick' | 'kick_me';
252
- /**
253
- * - 群号
254
- */
176
+ /** 群号 */
255
177
  group_id: string;
256
- /**
257
- * - 操作者 QQ 号(如果是主动退群,则和 user_id 相同)
258
- */
178
+ /** 操作者 QQ 号(如果是主动退群,则和 user_id 相同) */
259
179
  operator_id: string;
260
- /**
261
- * - 离开者 QQ 号
262
- */
180
+ /** 离开者 QQ 号 */
263
181
  user_id: string;
264
182
  }
265
183
  /**
266
- * - 群增加事件
184
+ * 群增加事件
267
185
  */
268
186
  export interface OneBot11GroupIncrease extends OneBot11Notice {
269
- /**
270
- * - 通知类型
271
- */
187
+ /** 通知类型 */
272
188
  notice_type: OB11NoticeType.GroupIncrease;
273
- /**
274
- * - 事件子类型,分别表示管理员已同意入群、管理员邀请入群
275
- */
189
+ /** 事件子类型,分别表示管理员已同意入群、管理员邀请入群 */
276
190
  sub_type: 'approve' | 'invite';
277
- /**
278
- * - 群号
279
- */
191
+ /** 群号 */
280
192
  group_id: string;
281
- /**
282
- * - 操作者 QQ 号
283
- */
193
+ /** 操作者 QQ 号 */
284
194
  operator_id: string;
285
- /**
286
- * - 加入者 QQ 号
287
- */
195
+ /** 加入者 QQ 号 */
288
196
  user_id: string;
289
197
  }
290
198
  /**
291
- * - 群禁言事件
199
+ * 群禁言事件
292
200
  */
293
201
  export interface OneBot11GroupBan extends OneBot11Notice {
294
- /**
295
- * - 通知类型
296
- */
202
+ /** 通知类型 */
297
203
  notice_type: OB11NoticeType.GroupBan;
298
- /**
299
- * - 事件子类型,分别表示禁言、解除禁言
300
- */
204
+ /** 事件子类型,分别表示禁言、解除禁言 */
301
205
  sub_type: 'ban' | 'lift_ban';
302
- /**
303
- * - 群号
304
- */
206
+ /** 群号 */
305
207
  group_id: string;
306
- /**
307
- * - 操作者 QQ 号
308
- */
208
+ /** 操作者 QQ 号 */
309
209
  operator_id: string;
310
- /**
311
- * - 被禁言 QQ 号
312
- */
210
+ /** 被禁言 QQ 号 */
313
211
  user_id: string;
314
- /**
315
- * - 禁言时长,单位秒
316
- */
212
+ /** 禁言时长,单位秒 */
317
213
  duration: number;
318
214
  }
319
215
  /**
320
- * - 新添加好友事件
216
+ * 新添加好友事件
321
217
  */
322
218
  export interface OneBot11FriendAdd extends OneBot11Notice {
323
- /**
324
- * - 通知类型
325
- */
219
+ /** 通知类型 */
326
220
  notice_type: OB11NoticeType.FriendAdd;
327
- /**
328
- * - 新添加好友 QQ 号
329
- */
221
+ /** 新添加好友 QQ 号 */
330
222
  user_id: string;
331
223
  }
332
224
  /**
333
- * - 群撤回事件
225
+ * 群撤回事件
334
226
  */
335
227
  export interface OneBot11GroupRecall extends OneBot11Notice {
336
- /**
337
- * - 通知类型
338
- */
228
+ /** 通知类型 */
339
229
  notice_type: OB11NoticeType.GroupRecall;
340
- /**
341
- * - 群号
342
- */
230
+ /** 群号 */
343
231
  group_id: string;
344
- /**
345
- * - 消息发送者 QQ 号
346
- */
232
+ /** 消息发送者 QQ 号 */
347
233
  user_id: string;
348
- /**
349
- * - 操作者 QQ 号
350
- */
234
+ /** 操作者 QQ 号 */
351
235
  operator_id: string;
352
- /**
353
- * - 被撤回的消息 ID
354
- */
236
+ /** 被撤回的消息 ID */
355
237
  message_id: string;
356
238
  }
357
239
  /**
358
- * - 好友消息撤回事件
240
+ * 好友消息撤回事件
359
241
  */
360
242
  export interface OneBot11FriendRecall extends OneBot11Notice {
361
- /**
362
- * - 通知类型
363
- */
243
+ /** 通知类型 */
364
244
  notice_type: OB11NoticeType.FriendRecall;
365
- /**
366
- * - 好友 QQ 号
367
- */
245
+ /** 好友 QQ 号 */
368
246
  user_id: string;
369
- /**
370
- * - 被撤回的消息 ID
371
- */
247
+ /** 被撤回的消息 ID */
372
248
  message_id: string;
373
249
  }
374
250
  /**
375
- * - 戳一戳事件
251
+ * 戳一戳事件
376
252
  */
377
253
  export interface OneBot11Poke extends OneBot11Notice {
378
- /**
379
- * - 消息类型
380
- */
254
+ /** 消息类型 */
381
255
  notice_type: OB11NoticeType.Notify;
382
- /**
383
- * - 提示类型
384
- */
256
+ /** 提示类型 */
385
257
  sub_type: 'poke';
386
- /**
387
- * - 群号
388
- */
258
+ /** 群号 */
389
259
  group_id: string;
390
- /**
391
- * - 发送者 QQ 号
392
- */
260
+ /** 发送者 QQ 号 */
393
261
  user_id: string;
394
- /**
395
- * - 被戳者 QQ 号
396
- */
262
+ /** 被戳者 QQ 号 */
397
263
  target_id: string;
398
264
  }
399
265
  /**
400
- * - 运气王事件
266
+ * 运气王事件
401
267
  */
402
268
  export interface OneBot11LuckyKing extends OneBot11Notice {
403
- /**
404
- * - 消息类型
405
- */
269
+ /** 消息类型 */
406
270
  notice_type: OB11NoticeType.Notify;
407
- /**
408
- * - 提示类型
409
- */
271
+ /** 提示类型 */
410
272
  sub_type: 'lucky_king';
411
- /**
412
- * - 群号
413
- */
273
+ /** 群号 */
414
274
  group_id: string;
415
- /**
416
- * - 红包发送者 QQ 号
417
- */
275
+ /** 红包发送者 QQ 号 */
418
276
  user_id: string;
419
- /**
420
- * - 运气王 QQ 号
421
- */
277
+ /** 运气王 QQ 号 */
422
278
  target_id: string;
423
279
  }
424
280
  /**
425
- * - 荣誉变更事件
281
+ * 荣誉变更事件
426
282
  */
427
283
  export interface OneBot11Honor extends OneBot11Notice {
428
- /**
429
- * - 消息类型
430
- */
284
+ /** 消息类型 */
431
285
  notice_type: OB11NoticeType.Notify;
432
- /**
433
- * - 提示类型
434
- */
286
+ /** 提示类型 */
435
287
  sub_type: 'honor';
436
- /**
437
- * - 群号
438
- */
288
+ /** 群号 */
439
289
  group_id: string;
440
- /**
441
- * - 荣誉类型,分别表示龙王、群聊之火、快乐源泉
442
- */
290
+ /** 荣誉类型,分别表示龙王、群聊之火、快乐源泉 */
443
291
  honor_type: 'talkative' | 'performer' | 'emotion';
444
- /**
445
- * - 成员 QQ 号
446
- */
292
+ /** 成员 QQ 号 */
447
293
  user_id: string;
448
294
  }
449
295
  /**
450
- * - 群表情回应事件
296
+ * 群表情回应事件
451
297
  */
452
298
  export interface OneBot11GroupMessageReaction extends OneBot11Notice {
453
- /**
454
- * - 消息类型
455
- */
299
+ /** 消息类型 */
456
300
  notice_type: OB11NoticeType.GroupMsgEmojiLike;
457
- /**
458
- * - 群号
459
- */
301
+ /** 群号 */
460
302
  group_id: string;
461
- /**
462
- * - 发送者 QQ 号
463
- */
303
+ /** 发送者 QQ 号 */
464
304
  user_id: string;
465
- /**
466
- * - 消息 ID
467
- */
305
+ /** 消息 ID */
468
306
  message_id: string;
469
- /**
470
- * - 表情信息 此处目前只有llob有
471
- */
307
+ /** 表情信息 此处目前只有llob有 */
472
308
  likes: Array<{
473
309
  count: number;
474
- /**
475
- * - 表情ID参考: https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType
476
- */
310
+ /** 表情ID参考: https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType */
477
311
  emoji_id: number;
478
312
  }>;
479
313
  }
@@ -481,33 +315,19 @@ export interface OneBot11GroupMessageReaction extends OneBot11Notice {
481
315
  * 群表情回应事件 Lagrange
482
316
  */
483
317
  export interface OneBot11GroupMessageReactionLagrange extends OneBot11Notice {
484
- /**
485
- * - 消息类型
486
- */
318
+ /** 消息类型 */
487
319
  notice_type: OB11NoticeType.GroupMsgEmojiLikeLagrange;
488
- /**
489
- * - 提示类型
490
- */
320
+ /** 提示类型 */
491
321
  sub_type: 'remove' | 'add';
492
- /**
493
- * - 群号
494
- */
322
+ /** 群号 */
495
323
  group_id: string;
496
- /**
497
- * - 发送者 QQ 号
498
- */
324
+ /** 发送者 QQ 号 */
499
325
  operator_id: string;
500
- /**
501
- * - 消息 ID
502
- */
326
+ /** 消息 ID */
503
327
  message_id: string;
504
- /**
505
- * - 表情ID
506
- */
328
+ /** 表情ID */
507
329
  code: string;
508
- /**
509
- * - 表情数量
510
- */
330
+ /** 表情数量 */
511
331
  count: number;
512
332
  }
513
333
  /**
@@ -518,105 +338,69 @@ export declare const enum OB11RequestType {
518
338
  Group = "group"
519
339
  }
520
340
  /**
521
- * - 请求事件基类
341
+ * 请求事件基类
522
342
  */
523
343
  export interface OneBot11Request extends OB11Event {
524
- /**
525
- * - 事件发生的时间戳
526
- */
344
+ /** 事件发生的时间戳 */
527
345
  time: number;
528
- /**
529
- * - 事件类型
530
- */
346
+ /** 事件类型 */
531
347
  post_type: OB11PostType.Request;
532
- /**
533
- * - 收到事件的机器人 QQ 号
534
- */
348
+ /** 收到事件的机器人 QQ 号 */
535
349
  self_id: string;
536
- /**
537
- * - 请求类型
538
- */
350
+ /** 请求类型 */
539
351
  request_type: OB11RequestType.Friend | OB11RequestType.Group;
540
- /**
541
- * - 请求 flag,在调用处理请求的 API 时需要传入
542
- */
352
+ /** 请求 flag,在调用处理请求的 API 时需要传入 */
543
353
  flag: string;
544
- /**
545
- * - 发送请求的 QQ 号
546
- */
354
+ /** 发送请求的 QQ 号 */
547
355
  user_id: string;
548
- /**
549
- * - 验证信息
550
- */
356
+ /** 验证信息 */
551
357
  comment: string;
552
358
  }
553
359
  /**
554
- * - 好友请求事件
360
+ * 好友请求事件
555
361
  */
556
362
  export interface OneBot11FriendRequest extends OneBot11Request {
557
- /**
558
- * - 请求类型
559
- */
363
+ /** 请求类型 */
560
364
  request_type: OB11RequestType.Friend;
561
365
  }
562
366
  /**
563
- * - 群请求事件
367
+ * 群请求事件
564
368
  */
565
369
  export interface OneBot11GroupRequest extends OneBot11Request {
566
- /**
567
- * - 请求类型
568
- */
370
+ /** 请求类型 */
569
371
  request_type: OB11RequestType.Group;
570
- /**
571
- * - 请求子类型,分别表示加群请求、邀请登录号入群
572
- */
372
+ /** 请求子类型,分别表示加群请求、邀请登录号入群 */
573
373
  sub_type: 'add' | 'invite';
574
- /**
575
- * - 群号
576
- */
374
+ /** 群号 */
577
375
  group_id: string;
578
376
  }
579
377
  /**
580
- * - 元事件基类
378
+ * 元事件基类
581
379
  */
582
380
  export interface OneBot11MetaEvent extends OB11Event {
583
- /**
584
- * - 事件类型
585
- */
381
+ /** 事件类型 */
586
382
  post_type: OB11PostType.MetaEvent;
587
- /**
588
- * - 元事件类型
589
- */
383
+ /** 元事件类型 */
590
384
  meta_event_type: 'lifecycle' | 'heartbeat';
591
385
  }
592
386
  /**
593
- * - 生命周期元事件
387
+ * 生命周期元事件
594
388
  */
595
389
  export interface OneBot11Lifecycle extends OneBot11MetaEvent {
596
- /**
597
- * - 元事件类型
598
- */
390
+ /** 元事件类型 */
599
391
  meta_event_type: 'lifecycle';
600
- /**
601
- * - 事件子类型,分别表示 OneBot 启用、停用、WebSocket 连接成功
602
- */
392
+ /** 事件子类型,分别表示 OneBot 启用、停用、WebSocket 连接成功 */
603
393
  sub_type: 'enable' | 'disable' | 'connect';
604
394
  }
605
395
  /**
606
- * - 心跳元事件
396
+ * 心跳元事件
607
397
  */
608
398
  export interface OneBot11Heartbeat extends OneBot11MetaEvent {
609
- /**
610
- * - 元事件类型
611
- */
399
+ /** 元事件类型 */
612
400
  meta_event_type: 'heartbeat';
613
- /**
614
- * - 状态信息
615
- */
401
+ /** 状态信息 */
616
402
  status: {
617
- /**
618
- * - 到下次心跳的间隔,单位毫秒
619
- */
403
+ /** 到下次心跳的间隔,单位毫秒 */
620
404
  interval: number;
621
405
  };
622
406
  }