-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathBadBoy_Classic.lua
365 lines (345 loc) · 64.3 KB
/
BadBoy_Classic.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
local _, S = ...
S.gnt(1461,"1067,1059,1067,1051,1059,1056,1048,1050,1059,1062,1047,1063,1051,1059,1055,1049,1069^1049,1068,1047,1052,1045,1058,1051,1053,1058,1051,1062,1063,1051,1059,1056,1048^1046,1065,1069,1053,1058,1051,1011,1062,1065,1058,1049,1063,1047,1045,1060,1049,1039,1045,1051,1041^1042,1067,1064,1046,985,1048,991,1057,996,1003,1051,1060^1047,1045,1063,1053,1058,1059,994,990,1056,1049,1051,1053,1064,994,990,1063,1045,1050,1049,994,990,1047,1045,1063,1053,1058,1059^1062,1059,1056,1056,994,990,1067,1053,1058,994,990,1048,1059,1065,1046,1056,1049,994,990,1057,1053,1058,994,990,1057,1045,1068^1042,1067,1064,1039,1046,1063,1064,1041,1051,1059,1056,1048,1050,1059,1062,1047,1063,1051,1059^1042,1067,1064,1064,1067,1059,1067,1051,1050,1059,1062,1059,1063,1062,1063,1051^1067,1064,1039,1046,1063,1064,1041,1062,1063,999,1011,1051,1059,1056,1048,994,990,1067,1059,1067,1051,1059,1056,1048^1042,1051,1059,1064,1045,1058,1069,1062,1063,996,1011,999,995,1062,1063,996,1011,1003,1051,1059,1056,1048,1056,1045,1069,1053,1058,1051,1045,1062,1059,1065,1058,1048,994,990,1051,1059,1059,1048,1059,1050,1050,1049,1062^1067,1064,1039,1046,1063,1041,1067,1059,1067,1051,1059,1056,1048,994,990,1062,1063,1047,1059,1053,1058,1064,1011,1063^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1047,1052,1049,1045,1060^1067,1064,1039,1046,1063,1041,1067,1059,1067,1051,1059,1056,1048,994,990,1062,1063,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1041,1045,1011,1058,1011,1045,1067,1049,1063,1059,1057,1049,1062,1063,1045,1047,1047,1059,1065,1058,1064^1067,1045,1058,1064,1064,1059,1046,1065,1069,1039,995,1040,1041,1063,1049,1056,1056,1047,1063,1051,1059,1053,1064,1049,1057^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1063,1064,1049,1045,1057,1051,1053,1050,1064^1042,1067,1064,1039,1046,1063,1041,1060,1062,1049,1060,1045,1053,1048,1051,1045,1057,1049,1047,1045,1062,1048^1046,1049,1064,994,990,1062,1059,1056,1056,994,990,1068,998,994,990,1068,999,994,990,1057,1053,1058,994,990,1057,1045,1068^1062,1059,1056,1056,994,990,985,1048,991,994,990,1062,1059,1056,1056,994,990,985,1048,991,994,990,1046,1049,1064^1067,1045,1058,1064,1064,1059,1063,1049,1056,1056,1039,995,1040,1041,1046,1065,1069,1047,1063,1051,1059,1053,1064,1049,1057^1042,1067,1064,1046,1059,1063,1062,1063,1051,1060^1042,1046,1065,1069,1053,1058,1051,1047,1063,1051,1059,1055,1058,1053,1039,1050,1066,1041,1049^1056,1065,1047,1055,994,990,1062,1059,1056,1056,994,990,1048,1059,1065,1046,1056,1049,994,990,1051,1059,1056,1048^1042,1064,1062,1045,1048,1053,1058,1051,1047,1063,1051,1059,994,990,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1055,1058,1053,1039,1050,1066,1041,1049^1048,1059,1065,1046,1056,1049,994,990,1064,1062,1053,1060,1060,1011,1056,1049,994,990,1047,1045,1063,1053,1058,1059^1042,1067,1064,1064,1067,1059,1067,1051,1059,1056,1048,1050,1059,1062,1059,1056,1048,1063,1047,1052,1059,1059,1056,1062,1063,1051,1059,1056,1048^1042,1067,1064,1064,1067,1059,1067,1051,1050,1059,1062,1062,1063,996,1003,1051^1047,1045,1063,1053,1058,1059,994,990,1062,1059,1056,1056,994,990,985,1048,991,994,990,1062,1059,1056,1056,994,990,985,1048,991^1062,1059,1056,1056,994,990,1051,1045,1057,1049,994,990,1051,1059,1056,1048,994,990,1067,1053,1058,994,990,1056,1059,1067,1049,1062^1042,1067,1064,1039,1063,1064,1041,1067,1059,1067,1045,1047,1047,1059,1065,1058,1064^1047,1045,1063,1053,1058,1059,994,990,1048,1053,1047,1049,994,990,985,1048,991,994,990,1064,1062,1053,1060,1056,1049^1064,1062,1045,1048,1053,1058,1051,1057,1069,1067,1059,1062,1056,1048,1059,1050,1067,1045,1062,1047,1062,1045,1050,1064,1051,1059,1056,1048,1050,1059,1062,994,990,1062,1065,1058,1049,1063,1047,1045,1060,1049,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1047,1045,1057,1059^1047,1045,1063,1053,1058,1059,994,990,985,1048,991,1068,998,994,990,985,1048,991,1068,999^1051,1059,1056,1048,1050,1059,1062,1062,1065,1058,1049,1063,1047,1045,1060,1049,1051,1059,1056,1048^1047,1045,1063,1053,1058,1059,994,990,995,1067,994,990,985,1048,991,994,990,1062,1059,1056,1056^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1053,1064,1049,1057^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1047,1045,1063,1049^1047,1045,1063,1053,1058,1059,994,990,1067,1052,1053,1063,1060,1049,1062,994,990,1053,1058,1050,1059^1042,1067,1064,1046,1051,1059,1056,1048,994,990,1051,1045,1057,1049,1064,1053,1057,1049^1042,1067,1064,1046,1062,1063,1051,1060,984^1062,1059,1056,1056,1051,1045,1057,1046,1056,1049,994,990,985,1048,991,994,990,1056,1059,1063,1049,985,1048,991,994,990,1067,1053,1058,994,990,985,1048,991^1042,1067,1064,1039,1046,1063,1041,1051,1045,1057,1049,1064,1053,1057,1049^1042,1067,1064,1039,1046,1063,1064,1041,1055,1049,1069,1063,1053,1058,1047,1063,1051,1059^1042,1064,1062,1045,1048,1053,1058,1051,1067,1059,1067,1051,1059,1056,1048,1050,1059,1062,1059,1011,1063,1011,1062,1063,1051,1059,1056,1048^1047,1045,1063,1053,1058,1059,994,990,1046,1049,1064,994,990,985,1048,991^1042,1067,1064,1039,1046,1063,1041,1062,1063,1045,1047,1047,1059,1065,1058,1064^1042,1046,1065,1069,1053,1058,1051,1047,1063,985,994,1011,1051,1039,996,1059,1041,1063,1055,1053,1058^1042,1067,1064,1039,1046,1063,1064,1041,1057,1069,1051,1059,1056,1048,1050,1059,1062,1047,1063,1051,1059,1063,1055,1053,1058^1067,1064,1039,1046,1063,1041,1062,1065,1058,1049,1063,1047,1045,1060,1049,1060,1065,1062,1049^1067,1064,1039,1046,1063,1041,1062,1065,1058,1049,1063,1047,1045,1060,1049,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1057,1069,1067,1059,1067,1051,1059,1056,1048,994,990,1047,1063,1051,1059,1063,1055,1053,1058^1062,1059,1065,1056,1049,1064,1064,1049,994,990,1062,1059,1056,1056,994,990,998,1068,994,990,999,1068^1062,1065,1058,1049,1063,1047,1045,1060,1049,1051,1059,1056,1048,1050,1059,1062,1067,1059,1067,1051,1059,1056,1048^1048,1053,1047,1049,994,990,1068,998,994,990,1068,999,994,990,1046,1049,1064,1063^1047,1045,1063,1053,1058,1059,994,990,1062,1059,1056,1056,994,990,1048,1059,1065,1046,1056,1049^1047,1045,1063,1053,1058,1059,994,990,985,1048,991,994,990,1048,1059,1065,1046,1056,1049,994,990,985,1048,991,994,990,1064,1062,1053,1060,1060,1011,1056,1049^1048,1039,1059,1065,1041,1039,1065,1046,1041,1046,1056,1049,994,990,985,1048,991,994,990,1064,1062,1053,1060,1060,1011,1056,1049^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1045,1047,1047^1042,1046,1065,1069,1053,1058,1051,1047,1063,1051,1059,1055,1049,1069^1042,1063,1049,1056,1056,1053,1058,1051,1047,1063,1051,1059,1047,1045,1063,1049^1042,1067,1064,1039,1046,1063,1041,1051,1045,1057,1049,1047,1059,1048,1049^1042,1067,1064,1039,1046,1063,1041,1039,999,1002,1041,996,1048,1045,1069,1063,1011,1060,1062,1049,1060,1045,1053,1048,1051,1045,1057,1049,1064,1053,1057,1049^1042,1046,1065,1069,1053,1058,1051,1059,1063,1062,1063,1051,1059,1056,1048,1067,1053,1064,1052,1067,1059,1067,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1041,985,1048,991,1062,1063,1045,1047,1047,1059,1065,1058,1064^1042,1067,1064,1039,1063,1046,1064,1041,1067,1059,1067,1051,1059,1056,1048,1050,1059,1062,1047,1063,1051,1059,1063,1055,1053,1058^1042,1067,1064,1039,1046,1063,1041,985,1048,991,1048,1045,1069,994,990,1051,1045,1057,1049,1047,1045,1062,1048^1042,1067,1064,1039,1046,1063,1064,1041,1063,1059,1057,1049,1047,1063,1051,1059,1063,1055,1053,1058^1067,1064,1063,1067,1059,1067,1045,1047,1047,1059,1065,1058,1064,994,990,1049,1060,1053,1047^1051,1059,1056,1048,994,990,1064,1062,1053,1060,1060,1011,1056,1049,994,990,1047,1045,1063,1053,1058,1059^1042,1067,1064,1039,1046,1063,1064,1041,1045,1058,1069,1047,1063,1051,1059,1063,1055,1053,1058^1051,1045,1057,1046,1056,1049,994,990,1062,1059,1056,1056,994,990,1068,998,994,990,1062,1059,1056,1056,994,990,1068,1001^1042,1067,1064,1063,985,1048,991,1048,1045,1069,1063,1011,1051,1045,1057,1049,1047,1045,1062,1048^1042,1051,1059,1064,1063,1059,1057,1049,1062,1063,996,1003,995,1011,1062,1011,1063,1011,999,1011,1051,1059,1056,1048,1056,1045,1069,1053,1058,1051,1045,1062,1059,1065,1058,1048,994,990,1057,1049^985,1048,991,994,990,1048,1039,1059,1065,1041,1039,1065,1046,1041,1046,1056,1049,994,990,985,1048,991,994,990,1064,1062,1053,1060^1042,1067,1064,1039,1046,1063,1041,1051,1059,1063,1055,1053,1058,1063^1042,1067,1064,1063,985,1048,991,1048,1045,1069,1063,1011,1051,1045,1057,1049,1064,1053,1057,1049^1042,1063,1049,1056,1056,1053,1058,1051,1047,1063,1051,1059,1053,1064,1049,1057^1042,1067,1064,1046,1051,1059,1056,1048,994,990,1057,1059,1065,1058,1064^1042,1067,1064,1039,1046,1063,1041,1051,1045,1057,1049,1047,1045,1062,1048^1042,1067,1064,1063,985,1048,991,1055,1050,1059,1062,985,1048,991,1049,1065^1042,1046,1065,1069,1053,1058,1051,1047,1052,1049,1045,1060,1047,1063,1051,1059,1063,1055,1053,1058^1042,1046,1065,1069,1053,1058,1051,1062,1063,999,1063,1064,1065,1050,1050^1042,1067,1064,1039,1046,1063,1041,985,1048,991,1057,1059,1058,1064,1052,994,990,1051,1045,1057,1049,1064,1053,1057,1049^1067,1064,1039,1046,1063,1041,994,990,1062,1065,1058,1049,1063,1047,1045,1060,1049,1057,1059,1058,1049,1069,994,990,985,1048,991,1055^1067,1064,1039,1046,1063,1041,1062,1065,1058,1049,1063,1047,1045,1060,1049,1045,1047,1047,1059,1065,1058,1064^1042,1063,1049,1056,1056,1053,1058,1051,1047,1063,1051,1059,1063,1055,1053,1058^1042,1067,1064,1064,1067,1059,1067,1051,1059,1056,1048,1050,1059,1062,1059,1063,1062,1063^1042,1067,1064,1039,1046,1063,1041,1046,1045,1056,1045,1058,1047,1049,1060,1045,1069,1060,1045,1056,1046,1069,1051,1059,1056,1048^1042,1067,1064,1063,1047,1052,1049,1045,1060,1045,1058,1048,1050,1045,1063,1064,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1047,1048,1055,1049,1049,1011,1069^1042,1067,1064,1039,1046,1063,1041,1060,1062,1049,1060,1045,1053,1048,1047,1045,1062,1048^1042,1063,1049,1056,1056,1053,1058,1051,1051,1059,1056,1048,1063,1011,1050,1059,1062,1047,1063,1051,1059^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1063,1055,1053,1058,1063^1042,1051,1059,1064,1045,1058,1069,1062,1065,1058,1049,1063,1047,1045,1060,1049,1051,1059,1056,1048,995,1067,1057,1049^1047,1063,1051,1059,1063,1055,1053,1058,1063,994,990,1051,1059,1056,1048,994,990,1063,1052,1059,1060,994,990,1057,1059,1065,1058,1064,1063^1042,1067,1064,1063,1047,1052,1049,1045,1060,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,1051,1059,1055,1049,1069^1056,1065,1047,1055,994,990,1062,1059,1056,1056,994,990,985,1048,991,1055,994,990,1057,1053,1058,1065,1064,1049,1063,994,990,1060,1063,1064^1042,1067,1064,1039,1046,1063,1064,1041,1047,1063,985,994,1011,1051,1059,1063,1055,1053,1058^1042,1063,1049,1056,1056,1053,1058,1051,1063,1059,1057,1049,1047,1063,1051,1059,1047,1045,1063,1049^1042,1067,1064,1039,1046,1063,1064,1041,1062,1063,996,1003,1051,1059,1056,1048^1042,1067,1064,1039,1046,1063,1064,1041,1047,1052,1049,1045,1060,1047,1063,1051,1059,1063,1055,1053,1058^1042,1067,1064,1039,1046,1063,1064,1041,1056,1049,1051,1053,1059,1058,1047,1011,1048,1011,1055,1049,1069^1042,1067,1064,1039,1063,1064,1041,1045,1047,1047,1059,1065,1058,1064,1067,1053,1064,1052","1047,1050,1064,1066,1048,1053,1050,1059,995,991,1068,1060,1068,1067,1050,1059,1049,1060,1063,986,995,1048,1060,1058^1043,1058,1046,1063,1054,1059,1046,1061,1067,1061,1180,1127,1139,1182,1097,1093,1180,1103,1123,1181,1079,1113^1052,1060,1057,1049,1001,1060,1056,1040,986,995,993,1042,1048,1060,1058,995,991,1064,1060,1065,1048,1056^1067,1054,1064,1054,1065,995,991,1049,1067,1054,1059,1052,986,995,1059,1050,1065^1178,1139,1123,1177,1140,1110,995,991,1052,1060,1057,1049,1051,1060,1063,1064^1062,1062,995,991,998,1002,1000,1005,1004,1001,997,1003,1006^1063,1060,1157,1136,1157,1129,1046,1040,986,995,993,1042,1061,1158,1081,995,991,1067,1054,1064,1046^1064,1056,1070,1061,1050,995,991,1061,1067,1050,1064,1053,1060,1061^1043,1061,1046,1054,1049,1052,1066,1054,1057,1049,1063,1066,1059,1064,995,991,1052,1057,1060,1063,1070,1046,1048,1053,1054,1050,1067,1050,1058,1050,1059,1065,1064,995,991,1058,1060,1066,1059,1065,1064,995,991,1061,1060,1068,1050,1063,1057,1050,1067,1050,1057,1054,1059,1052,995,991,1054,1059,1051,1060^1064,1056,1070,1061,1050,995,991,1048,1053,1054,1050,1051,1047,1060,1060,1064,1065^1051,1046,1064,1065,1001,1052,1060,1057,1049,1040,986,995,993,1042,1048,1060,1058,995,991,1064,1060,1065,1048,1056^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1057,1054,1067,1063,1046,1054,1064,1060,1059^1062,1062,995,991,1000,1002,1005,999,999,997,997,1003,1003^1048,1053,1050,1048,1056,995,991,1068,1060,1068,1053,1066,1059,1065,986,995,1059,1050,1065^1043,1061,1052,1061,1178,1132,1114,1177,1138,1105,1178,1123,1113,1177,1138,1091,1177,1140,1106^1043,1053,1050,1057,1061,1068,1054,1065,1053,1058,1070,1065,1053,1054,1048,998,997,1056,1050,1070,995,991,1064,1050,1057,1051,1061,1057,1046,1070,996,1064,1053,1046,1063,1050,995,991,1048,1053,1050,1064,1065,1063,1066,1059,995,991,1061,1058,1051,1060,1063,1054,1059,1051,1060^1068,1065,1064,1067,1054,1048,1054,1060,1066,1064,995,991,1060,1065,1053,1050,1063,1061,1067,1061,1058,1060,1066,1059,1065,1064,995,991,1048,1060,1058,1061,1057,1050,1065,1054,1060,1059,995,991,1053,1066,1059,1049,1063,1050,1049,995,991,1051,1054,1064,1053,1070^1177,1140,1110,1000,1006,999,998,999,1000,997,1002,1000^1062,1004,999,1001,999,999,1000,1001,1001,1005^1068,1065,1064,1058,1070,1065,1053,1054,1048,995,991,1064,1065,1046,1063,1065,1054,1059,1052,1059,1060,1068,995,991,1064,1058,1060,1060,1065,1053,1063,1066,1059,1064,1049,1060,1059,1050,1047,1070,995,991,1050,1057,1054,1065,1050,1061,1057,1046,1070,1050,1063,1064,995,991,1047,1050,1064,1065,1061,1063,1054,1048,1050,1064,995,991,1068,1050,1046,1057,1064,1060,1064,1053,1046,1063,1050^1043,1046,1047,1065,1181,1088,1126,1182,1104,1081,1178,1089,1082,1178,1104,1111,995,991,1048,1060,1052,1178,1132,1114,1177,1138,1105,1178,1123,1113^1062,1062,1000,998,1005,999,1002,1005,1000,1002,997,1006,995,991,1064,1056,1070,1061,1050^1061,1063,1060,1049,1066,1048,1065,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1068,1050,1047,1064,1054,1065,1050,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070^1043,1068,1065,1064,1065,1048,1052,1058,1060,1066,1059,1065,995,991,1048,1053,1050,1046,1061,1052,995,991,1064,1065,1060,1048,1056,995,991,1064,1046,1067,1050^1068,1046,1057,1057,1052,1046,1058,1054,1059,1052,995,991,1057,1060,1060,1065,995,991,1056,1050,1070,1064,1065,1060,1059,1050^1069,1054,1059,1047,1046,1047,1050,1070,998,998,999,1000^1064,1056,1070,1061,1050,995,991,1046,1061,1061,1060,1057,1046,1069,1000,997,1005,1002^1062,1062,999,1002,998,998,1000,997,1001,1006,1000^1054,1059,1051,1060,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070,1040,986,995,993,1042,1048,1060,1058^1177,1140,1110,1058,1054,1046,998,998,998,999,1002^1050,1061,1054,1048,1048,1046,1063,1063,1070,986,995,1059,1050,1065,995,991,1067,1054,1064,1054,1065^1048,1060,1059,1065,1046,1048,1065,995,991,1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070^1177,1140,1110,1005,1006,1001,1002,1005,997,999,1000,998^1043,1047,1060,1060,1064,1065,1054,1059,1052,1058,1070,1065,1053,1054,1048,995,991,1049,1066,1059,1052,1050,1060,1059,1064,1046,1059,1049,1063,1046,1054,1049,1064,995,991,1063,1046,1063,1050,1058,1060,1066,1059,1065,1064,995,991,1061,1067,1061,1053,1050,1057,1061^1177,1140,1110,1049,1046,1054,1068,1060,1068,1005,1005,1005^1047,1060,1060,1064,1065,1054,1059,1052,1040,986,995,993,1042,1061,1063,1060,995,991,1057,1060,1060,1065^1067,1054,1064,1054,1065,995,991,1064,1054,1058,1061,1057,1050,1048,1046,1063,1063,1070,986,995,1048,1060,1058^1049,1054,1064,1048,1060,1063,1049,1049,1060,1063,1065,1068,1054,1069,999,999,1002,1001^1049,1050,1046,1057,1064,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070,986,995,1059,1050,1065^1049,1054,1064,1048,1060,1063,1049,1056,1060,1056,1060,1071,1060,1063,1055,1056,1050,1004,1002,997,1004^1062,1062,998,1006,1004,998,1004,997,1005,998,1000,1004,995,991,1064,1056,1070,1061,1050^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1060,1047,1065,1050,1059,1050,1071^1178,1139,1123,1177,1140,1110,995,991,998,1005,997,1002,1006,1000,1006,1004,1002,1003,997^1061,1067,1061,995,991,1068,1046,1057,1057,1052,1046,1058,1054,1059,1052,1040,986,995,993,1042,1048,1060,1058^1064,1056,1070,1061,1050,995,991,1055,1046,1064,1058,1054,1059,1050,1047,1046,1047,1070,997,1001,997,1005^1068,1063,1054,1065,1050,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1049,1054,1064,1048,1060,1063,1049,1065,1047,1004,997,997,997^1053,1050,1063,1050,1058,1058,1040,997,1060,1042,1057,1067,1057,1040,986,995,993,1042,1012,1048,1040,997,1060,1042,1058^1063,1058,1047,995,991,1179,1085,1101,1180,1138,1094,1061,1063,1050,1065,1065,1070,1050,1057,1050,1059,1046^1067,1054,1064,1054,1065,995,991,1050,1061,986,995,1012,1054,1048,1048,1046,1063,1063,1070,986,995,1048,1060,1058^1064,1050,1063,1067,1054,1048,1050,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1061,1060,1068,1050,1063,1057,1050,1012,1067,1050,1012,1057,1054,1059,1052,995,991,1063,1046,1063,1050,1058,1060,1066,1059,1065,1064,995,991,1048,1046,1063,1063,1070^1067,1054,1064,1054,1065,995,991,1049,1067,1054,1059,1052,1049,1060,1065,1059,1050,1065^1157,1140,1061,1060,1157,1129,1046,1157,1129,1157,1133,1058,1063,1061,1060,1157,1126,1157,1138,1157,1133,1158,1083,1070,995,991,1157,1140,1060,1157,1129,1046,1061,1060,1056,995,991,1157,1127,1157,1140,1058^1177,1140,1110,1052,1060,1057,1049,1068,1060,1068^1178,1139,1123,1177,1140,1110,995,991,1002,1006,1000,1005,1000,1004,997,1000,998^1064,1056,1070,1061,1050,995,991,1055,1066,1064,1065,1054,1059,986,995,1061,1057,1046,1048,1060,1064^1177,1133,1136,1181,1081,1094,1178,1106,1093,1182,1119,1094,995,991,1182,1080,1138,1177,1140,1106,1178,1135,1098,995,991,1180,1122,1086,1180,1135,1116,995,991,1181,1112,1082,1180,1122,1086,995,991,1177,1133,1099,1177,1136,1136,995,991,1061,1067,1061^1062,1062,995,991,1002,1006,1000,1005,1000,1004,997,1000,998^1068,1050,1047,1064,1054,1065,1050,995,991,1050,1047,1046,1070,1052,1060,1057,1049,1064,986,995,1048,1060,1058^1061,1067,1061,995,991,1054,1060,1068,995,991,1060,1056,1001,1052,1060,1057,1049^1178,1139,1123,1177,1140,1110,998,1002,1002,1004,1001,1005,1001,1000,1003,997,1005^1178,1139,1123,1177,1140,1110,995,991,1064,1050,1064,1050,1052,1060,1057,1049^1068,1065,1064,995,991,1065,1048,1052,1058,1060,1066,1059,1065,1064,995,991,1052,1040,1060,997,1042,1057,1049,995,991,1064,1046,1057,1050^1068,1065,1064,995,991,1046,1059,1049,1060,1065,1053,1050,1063,1067,1054,1048,1054,1060,1066,1064,1058,1060,1066,1059,1065,1064,995,991,1067,1054,1046,986,1049,1067,986,1049,995,991,1058,1066,1057,1065,1054,1061,1057,1050,1065,1050,1046,1058,1064,995,991,1064,1050,1057,1051,1061,1057,1046,1070^1067,1054,1064,1054,1065,1068,1060,1068,1067,1050,1059,1049,1060,1063,986,995,1040,1059,1048,1060,1042,1040,1050,1060,1063,1042,1040,1065,1058,1052,1042^1177,1133,1119,1177,1135,1135,1178,1096,1078,1179,1133,1112,1178,1122,1093,995,991,1061,1063,1060,1051,1060,1066,1059,1049,1064,1050,1046^1064,1053,1054,1059,1050,1047,1060,1060,1064,1065,1005,1000,1000,997^1043,1058,1046,1063,1054,1059,1046,1179,1100,1116,1177,1133,1099,1180,1098,1089^1064,1053,1046,1049,1060,1068,1047,1060,1060,1064,1065,986,995,1048,1060,1058,995,991,1052,1066,1054,1057,1049^1062,1062,999,1004,1006,998,999,1001,1003,1000,998^1049,1054,1064,1048,1060,1063,1049,995,991,1063,1050,1070,1067,1054,1059,1056,998,1002,1005,1003^1178,1139,1123,1177,1140,1110,995,991,998,1002,1005,1002,1004,1003,999,1002,997,997,1003^1043,1064,1065,1070,1057,1050,1178,1082,1121,1177,1137,1103,1179,1088,1104,1178,1093,1081,1181,1078,1089,1177,1133,1103,1180,1091,1118,1178,1123,1131,1051,1046,1063,1058,1178,1092,1115,1178,1113,1099,1178,1082,1121,1177,1137,1103,1051,1046,1063,1058,1053,1180,1091,1088,1178,1135,1116,1178,1089,1082,1178,1104,1111,1179,1105,1086,1179,1128,1098,1178,1133,1085,1049,1056,1182,1119,1094,1180,1086,1116,1179,1105,1124,1178,1106,1094,1058,1180,1091,1088,1178,1135,1116,998,1006,1179,1105,1090,1178,1087,1110,1178,1102,1117,1004,1180,1079,1134,1178,1137,1077,1179,1086,1096,985^1178,1139,1123,1177,1140,1110,995,991,1000,1002,1002,1000,1000,1005,1006,1004,998^1177,1140,1110,999,1001,1002,1002,1002,1003,999,998,1002^1064,1050,1057,1057,1054,1059,1052,995,991,1050,1057,1054,1065,1054,1064,1065,1052,1046,1058,1054,1059,1052,1040,986,995,993,1042,1048,1060,1058^1064,1050,1057,1057,1054,1059,1052,995,991,1065,1054,1058,1050,1063,995,991,1064,1050,1057,1051,1061,1057,1046,1070,995,991,1051,1046,1064,1065,995,991,1065,1060,1061,1052,1050,1046,1063,995,991,1054,1059,1051,1060^1178,1139,1123,1177,1140,1110,995,991,999,999,1001,1004,1003,1005,999,1002,998,999^1068,1065,1064,1048,1053,1050,1046,1061,1050,1064,1065,995,991,1058,1070,1065,1053,1054,1048,1049,1066,1059,1052,1050,1060,1059,1047,1060,1060,1064,1065,995,991,1052,1050,1065,1070,1060,1066,1063,986,1049,986,1049,986,1049,1054,1065,1050,1058,1064,1046,1065,1065,1053,1050,1050,1059,1049,995,991,1046,1051,1056,995,991,1070,1060,1066,1068,1054,1057,1057,1052,1050,1065,1046,1057,1057,1065,1053,1050,1065,1063,1046,1049,1050,1012,1046,1047,1057,1050,1057,1060,1060,1065,995,991,1054,1059,1051,1060^1062,993,1012,1062,998,997,1000,1005,1002,1006^1050,1061,1048,1046,1063,1063,1054,1050,1064,995,991,1064,1056,1070,1061,1050^1060,1066,1063,1065,1050,1046,1058,995,991,1053,1050,1057,1061,1070,1060,1066,995,991,1052,1050,1065,1070,1060,1066,1063,995,991,1065,1060,1049,1046,1070,995,991,1052,1050,1065,1064,1065,1046,1063,1065,1050,1049^1068,1060,1068,1058,1046,1063,1065,1040,986,995,993,1042,1063,1066,995,991,1157,1132,1060,1157,1136,1060,1065,1060^1048,1060,1059,1065,1046,1048,1065,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070,1040,986,995,993,1042,1059,1050,1065^1064,1056,1070,1061,1050,995,991,1048,1046,1057,1067,1054,1059,986,995,1051,1063,1050,1050,1071,1050^1064,1056,1070,1061,1050,995,991,1047,1065,1046,1052,995,991,1061,1063,1050,1065,1065,1070,1050,1057,1050,1059,1046^1062,1062,995,991,999,999,1004,1005,997,1001,1005,998,1004,1006^1068,1065,1064,1067,1054,1048,1054,1060,1066,1064,995,991,1060,1065,1053,1050,1063,1061,1067,1061,1058,1060,1066,1059,1065,1064,995,991,1048,1046,1063,1063,1054,1050,1049,995,991,1064,1056,1054,1057,1057,995,991,1064,1050,1057,1051,1061,1057,1046,1070^1052,1060,1057,1049,995,991,1052,1040,1060,997,1042,1057,1049,1048,1050,1040,1060,997,1042,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1178,1089,1082,1178,1104,1111,995,991,1002,999,1004,1000,1000,1005,1006,1000,1001^1067,1069,1055,1054,1059,1052,1069,1066,1046,1059,1000,1000,1001,1001,1002,999,998^1060,1051,1051,1050,1063,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070,1040,993,986,995,1042,1048,1060,1058^1177,1140,1110,998,1005,998,1004,1002,998,1000,1003,1003,997,999^1049,1054,1064,1048,1060,1063,1049,1047,1046,1063,1064,1046,1063,1049,998,1004,1002,1005^1177,1140,1110,1047,1046,1047,1050,1070,998,998,999,1000^1048,1060,1059,1065,1046,1048,1065,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070,1040,986,995,993,1042,1048,1060,1058^1177,1140,1110,1002,1001,1006,1006,1003,1002,1005,1000,1005^1067,1054,1064,1054,1065,995,991,1068,1060,1068,1047,1060,1061,986,995,1048,1060,1058^1181,1087,1124,1055,1054,1059,1052,1069,1066,1046,1059,1000,1000,1001,1001,1002,999,998^1054,1059,1051,1060,995,991,1068,1050,1047,1064,1054,1065,1050,995,991,1055,1066,1064,1065,1047,1060,1060,1064,1065^1178,1139,1123,1177,1140,1110,995,991,998,1000,1006,1004,1002,1004,1000,998,999,1003,1004^1067,1054,1064,1054,1065,995,991,1061,1050,1063,1051,1050,1048,1065,1068,1046,1070,986,995,1060,1059,1050^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1058,1054,1059,1066,1065,1040,1050,1060,1042^998,997,998,1002,1178,1126,1079,1178,1113,1116,1180,1126,1128,1002,1178,1105,1135,1181,1140,1107,1178,1085,1132,1001,1180,1097,1127,1178,1133,1123,1179,1094,1133,1180,1102,1138,1181,1092,1105,1177,1136,1132,1179,1106,1114,1178,1090,1098,1178,1125,1126,1179,1086,1096,1177,1136,1084,1179,1098,1089,1177,1134,1088,1181,1110,1077,998,1000,1180,1086,1134,1177,1136,1132,1058,1178,1106,1093,1182,1119,1094,1179,1125,1129,1178,1082,1080,1180,1129,1109,1179,1105,1086,1177,1138,1090,1180,1138,1123,1182,1084,1094,1178,1133,1078,1003,997,997,1180,1091,1125,1181,1129,1116^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1050,1069,1065,1063,1046^1177,1140,1110,1178,1092,1132,998,1002,1000,997,1005,1001,1000,1002,1003,998,998^1051,1047,1058,1065,1050,1046,1058,986,995,1048,1060,1058,995,991,1052,1046,1058,1050^1178,1082,1117,1180,1139,1091,1182,1115,1099,1179,1106,1077,1178,1082,1121,1177,1137,1103,995,991,1057,1054,1058,1054,1065,995,991,1178,1084,1135,1178,1097,1123,1178,1092,1127,1181,1124,1100,995,991,1178,1092,1113,1178,1125,1097,1177,1133,1134,1178,1106,1093,1182,1119,1094^1067,1054,1064,1054,1065,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,997,1060,1042,1058^1068,1065,1064,995,991,1058,1070,1065,1053,1054,1048,1056,1050,1070,995,991,1048,1046,1063,1063,1070,1063,1066,1059,995,991,1048,1060,1058,1050,1052,1050,1065,1070,1060,1066,1063,1046,1057,1057,995,991,1048,1053,1050,1046,1061,1061,1063,1054,1048,1050^1068,1065,1064,995,991,1064,1056,1070,1061,1050,995,991,1047,1060,1060,1064,1065,1054,1059,1052,1053,1050,1057,1061^1064,1056,1070,1061,1050,995,991,1055,1046,1059,1050,1047,1060,1060,1064,1065^1059,1060,1066,1064,1064,1060,1058,1058,1050,1064,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1068,1050,1047,1061,1046,1052,1050,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070^1178,1139,1123,1177,1140,1110,995,991,998,1005,1003,1006,999,999,997,1005,1004,1001,1002^1052,1066,1054,1057,1049,995,991,1064,1053,1046,1049,1060,1068,1047,1060,1060,1064,1065,986,995,1048,1060,1058^1060,1057,1060,1057,1060,1061,1050,1068,1002,1001,1001,1005^1157,1138,1157,1133,1157,1132,1056,1157,1133,1050,1158,1083,1050,1157,1138,1158,1088,995,991,1052,1050,1065,1057,1060,1060,1065,1040,986,995,993,1042,1063,1066^1178,1097,1123,1178,1139,1123,995,991,1005,1006,1001,1002,1005,997,999,1000,998^1064,1056,1070,1061,1050,995,991,1052,1050,1059,1070,986,995,1056,999^1056,1057,1071,995,991,1179,1086,1112,998,1001,1005,1001,1001,1004,998,999,999,1001^1068,1060,1068,1053,1066,1059,1065,1047,1060,1060,1064,1065,1054,1059,1052,1064,1050,1063,1067,1054,1048,1050^1048,1063,1066,1064,1046,1049,1050,1063,995,991,1179,1124,1098,1177,1133,1103,995,991,1056,1057,1071,995,991,1178,1117,1078,1179,1105,1104,995,991,1179,1118,1102^1068,1065,1064,1067,1054,1048,1054,1060,1066,1064,995,991,1057,1050,1052,1046,1048,1070,1061,1067,1061,1058,1060,1066,1059,1065,1064,995,991,1046,1048,1053,1054,1050,1067,995,991,1060,1061,1065,1054,1060,1059,1046,1057^1177,1140,1110,1064,1050,1064,1050,1052,1060,1057,1049^1157,1140,1060,1058,1060,1157,1131,1050,1058,995,991,1059,1054,1052,1053,1065,1058,1060,1059,1050,1070,1040,986,995,993,1042,1063,1066^1043,1058,1046,1063,1054,1059,1046,1180,1120,1107,1179,1087,1077,1178,1105,1135^1049,1054,1064,1048,1060,1063,1049,995,991,1061,1046,1001,1006,1001,1005^1177,1140,1110,1058,1064,1064,1055,1051,1068^1178,1139,1123,1177,1140,1110,1071,1071,1068,1065,1000,1000,1000^1049,1050,1065,1046,1054,1057,1064,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,997,1060,1042,1058^1043,1181,1077,1078,1180,1086,1089,1180,1139,1091,1179,1105,1090,1048,1060,1052^1178,1139,1123,1177,1140,1110,1052,1053,1050,1064,1065,1057,1066,1060,1047,1060^1049,1067,1054,1059,1052,995,991,1061,1060,1068,1050,1063,1057,1050,1012,1067,1050,1012,1057,995,991,1049,1067,1054,1059,1052^1177,1140,1110,995,991,998,1004,1004,1005,1005,1006,1002,1002,1000,1001,998^1178,1139,1123,1177,1140,1110,995,991,998,1002,997,1002,1000,1005,998,1006,997,1004^1049,1067,1054,1059,1052,1040,986,995,993,1042,1063,1066,995,991,1070,1048,1157,1136,1070,1063,1157,1133^1062,1062,995,991,1000,998,1006,1001,1002,999,998,1005,1001,1005^1178,1139,1123,1179,1085,1094,998,1002,1002,1004,1001,1005,1001,1000,1003,997,1005^1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058,995,991,1048,1060,1059,1065,1046,1048,1065^1061,1050,1068,1061,1050,1068,1064,1053,1060,1061,986,995,1061,1063,1060,995,991,1058,1070,1065,1053,1054,1048^1065,1050,1057,1050,1052,1063,1046,1058,995,991,1046,1058,1054,1063,1046,1059,1052,1046,1058,1054,1059,1052^1058,1070,1065,1053,1054,1048,1052,1066,1054,1057,1049,1054,1064,1064,1050,1057,1054,1054,1059,1052,995,991,1063,1066,1059,1064,1046,1059,1049,1058,1070,1065,1053,1054,1048,1049,1066,1059,1052,1050,1060,1059,1056,1050,1070,1064,995,991,1046,1053,1050,1046,1049,1060,1051,1065,1053,1050,1048,1066,1063,1067,1050,1065,1060,1049,1046,1070,995,991,1059,1060,1063,1050,1062,1066,1054,1063,1050,1058,1050,1059,1065,1064^1058,1046,1052,1050,1065,1060,1068,1050,1063,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1049,1054,1064,1048,1060,1063,1049,1058,1050,1057,1060,1063,1054,1069,1069,1001,998,1002,998^1067,1054,1064,1054,1065,1061,1050,1068,1061,1050,1068,1064,1053,1060,1061^1046,1065,1065,1050,1059,1065,1054,1060,1059,995,991,1050,1061,1054,1012,1048,1048,1046,1063,1063,1070,986,995,1048,1060,1058^1177,1140,1110,1060,1056,1001,1052,1060,1057,1049^1064,1054,1065,1050,1053,1050,1057,1061,1068,1060,1068,986,995,1058,1050^1067,1054,1064,1054,1065,1068,1060,1068,1065,1050,1046,1058,986,995,1059,1050,1065^1051,1066,1057,1057,1063,1066,1059,995,991,1052,1066,1046,1063,1046,1059,1065,1050,1050,1055,1066,1064,1065,1051,1060,1063,986,1049,986,1049,992,1050,1066,1063,995,991,1065,1060,1059,1054,1052,1053,1065^1062,1002,1001,1006,1006,1003,1002,1005,1000,1005^1178,1133,1078,995,991,1178,1139,1123,1177,1140,1110,1064,1065,1070,1070,1057,1050,1050^1067,1054,1064,1054,1065,995,991,1048,1060,1059,1062,1066,1050,1064,1065,1048,1046,1061,1061,1050,1049,1040,986,995,993,1042,1048,1060,1058^1180,1136,1080,1180,1135,1116,995,991,1047,1050,1046,1063,1068,1060,1068,1040,993,995,1042,1048,1060,1058^1058,1070,1065,1053,1054,1048,995,991,1047,1060,1060,1064,1065,995,991,1051,1063,1050,1050,995,991,1052,1050,1046,1063,995,991,1047,1050,1064,1065,1061,1063,1054,1048,1050,995,991,1054,1059,1051,1060^1068,1065,1064,1067,1054,1048,1054,1060,1066,1064,995,991,1048,1046,1063,1063,1070,1070,1060,1066,1063,1050,1052,1046,1063,1049,995,991,1064,1050,1057,1051,1061,1057,1046,1070,995,991,1063,1050,1057,1046,1065,1050,1049,1064,1065,1066,1051,1051^1060,1051,1051,1050,1063,1064,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1048,1053,1050,1048,1056,995,991,1068,1060,1068,1053,1066,1059,1065,986,995,1048,1060,1058^1177,1140,1110,1057,1060,1067,1050,1047,1046,1047,1070,999,1000,1001^1049,1054,1064,1048,1060,1063,1049,1058,1070,1065,1053,1054,1048,1002,1001,1001,1005^1062,1062,995,991,998,1002,998,1000,1006,1001,998,1005,998,1001^1043,1058,1046,1063,1054,1059,1046,1182,1101,1140,1179,1104,1137,1181,1088,1092,1180,1103,1081,1182,1111,1081,1181,1116,1078^1178,1139,1123,1177,1140,1110,995,991,999,1005,1001,1002,1006,1003,1000,997,1000^1054,1059,1051,1060,995,991,1047,1040,1060,997,1042,1040,1060,997,1042,1058,1047,1040,1060,997,1042,1040,1060,997,1042,1064,1065,993,1048,1040,1060,997,1042,1058^1178,1104,1111,995,991,998,999,1006,999,1004,997,1003,998,1000,1001^1067,1054,1064,1054,1065,1052,1061,1057,1046,1070,986,995,1061,1063,1060^1062,1062,995,991,1005,1001,1004,1001,1003,1002,999,1005,1003^1052,1060,1060,1052,1057,1050,995,991,1050,1061,1054,1048,1048,1046,1063,1063,1070^1064,1056,1070,1061,1050,995,991,1047,1050,1057,1056,1060,1063,1056,1013,1052,1058,1046,1054,1057,986,995,1048,1060,1058^1068,1060,1068,1048,1057,1046,1064,1064,1054,1048,1040,986,995,993,1042,1052,1061,1057,1046,1070,1040,986,995,993,1042,1061,1063,1060^1043,1058,1046,1063,1054,1059,1046,1178,1093,1081,1180,1116,1090,1180,1103,1123,1181,1079,1113^1177,1140,1110,1000,1006,1006,998,999,1005,1002,1001,1005^1068,1065,1064,995,991,1050,986,995,991,1061,986,995,991,1054,986,995,991,1048,986,995,991,1048,986,995,991,1046,986,995,991,1063,986,995,991,1063,986,995,991,1070,986,995,991,1048,986,995,991,1060,986,995,991,1058^1054,1059,1051,1060,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1012,1048,1040,997,1060,1042,1058^1067,1054,1064,1054,1065,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1049,1040,1060,997,1042,1065,1048,1040,1060,997,1042,1058^1046,1066,1065,1060,995,991,1064,1053,1046,1049,1060,1068,1047,1060,1060,1064,1065,986,995,1048,1060,1058^1064,1056,1070,1061,1050,995,991,1059,1054,1052,1053,1065,1051,1054,1063,1050,1068,1060,1068,995,991,1052,1060,1060,1049^1049,1054,1064,1048,1060,1063,1049,1061,1050,1068,1061,1050,1068,1002,1001,1001,1005^1182,1084,1094,995,991,998,1002,1005,997,999,1002,1002,1004,998,999,1003^1068,1065,1064,995,991,1057,1060,1060,1065,1063,1046,1054,1049,995,991,1052,1057,1060,1063,1070,995,991,1058,1060,1066,1059,1065,1064,995,991,1058,1060,1063,1050,1054,1059,1051,1060^1049,1054,1064,1048,1060,1063,1049,1066,1061,1000,1006,997,1000^1064,1056,1070,1061,1050,995,991,1052,1050,1063,1046,1057,1049,1047,1046,1062^1068,1065,1064,1058,1070,1065,1053,1054,1048,998,986,1049,1064,1065,1046,1063,1065,1054,1059,1052,1059,1060,1068,995,991,1064,1058,1060,1060,1065,1053,1063,1066,1059,1064,995,991,1050,1069,1061,1050,1063,1054,1050,1059,1048,1050,995,991,1050,1057,1054,1065,1050,1061,1057,1046,1070,1050,1063,1064,995,991,1047,1050,1064,1065,1061,1063,1054,1048,1050,1064,995,991,1046,1057,1064,1060,1064,1050,1057,1057,1054,1059,1052,995,991,1052,1060,1057,1049,1060,1059,1057,1070^1062,1062,995,991,1001,1003,1006,1005,1003,1002,1001,1005,1002^1062,1062,995,991,998,1001,1000,1000,1002,1000,1002,1003,999,1005^1067,1069,1049,1046,1054,1068,1060,1068,1005,1005,1005^1067,1054,1064,1054,1065,995,991,1068,1060,1068,1053,1066,1059,1065,986,995,1059,1050,1065^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1052,1060,1057,1049^1056,1053,1046,1063,1054,1049,1046,1063,1050,995,991,1065,1046,1057,1046,995,991,1053,1046,1064,1065,1046,1058,1047,1050,995,991,1047,1046,1057,1046,1065,1046,1063,1054,1059,995,991,1001,1064,1046,1057,1065,1046,1055,1063,1060,1047,1050,995,991,1068,1058,1050^1062,1180,1139,1113,995,991,998,999,999,1005,1004,998,1003,1004,998^1043,1048,1060,1052,1178,1082,1121,1177,1137,1103,1181,1093,1117,1178,1111,1096^1178,1089,1135,1054,1060,1071,1060,1177,1138,1091,1177,1140,1106,1180,1102,1138,1181,1092,1105,1177,1136,1132,1178,1090,1078,1182,1077,1078,1177,1133,1077,1001,1180,1097,1127,1178,1133,1123,1179,1094,1133,1054,1060,1178,1126,1079,1177,1138,1091,1177,1140,1106,1179,1105,1077^1177,1140,1110,995,991,1004,1004,1005,1002,1005,1004,1000,998,1003^1049,1054,1064,1048,1060,1063,1049,995,991,1064,1066,1059,1059,1070,1001,998,1002,998^1067,1177,1140,1110,995,991,998,1002,997,1002,1000,1005,998,1006,997,1004^1158,1083,1050,1157,1138,1040,1046,1050,1042,995,991,1057,1060,1060,1065,1056,1050,1050,1061,1050,1063,1040,986,995,993,1042,1048,1060,1058^1049,1054,1064,1048,1060,1063,1049,995,991,1049,1067,1054,1059,1052,1064,1066,1061,1061,1060,1063,1065^1068,1065,1064,1058,1070,1065,1053,1054,1048,1048,1053,1050,1064,1065,1051,1046,1063,1058,995,991,1060,1066,1063,1046,1064,1064,1054,1064,1065,1046,1059,1048,1050,995,991,1046,1059,1070,1046,1058,1060,1066,1059,1065,995,991,1063,1050,1046,1049,1070,1065,1060,1052,1060^1068,1065,1064,1058,1049,1066,1059,1052,1050,1060,1059,1048,1053,1050,1064,1065,1063,1066,1059,1064,995,991,1053,1050,1057,1061,1070,1060,1066,1065,1060,1051,1046,1063,1058,1046,1059,1070,1046,1058,1060,1066,1059,1065,1060,1051,1058,1070,1065,1053,1054,1048,995,991,1049,1063,1060,1061,1046,1052,1050,1046,1063,1061,1054,1050,1048,1050,995,991,1064,1050,1065,1046,1059,1049,1063,1050,1046,1049,1070,1065,1060,1052,1060^1178,1139,1123,1177,1140,1110,995,991,999,1003,1003,999,1004,1006,1006,998,1000,1001^1062,1062,995,991,998,997,997,1005,1001,1002,1006,1006,1002^1068,1050,1048,1053,1046,1065,995,991,1068,1065,1068,1065,1054,1046,1059,1000,999,998^1047,1046,1057,1060,1047,1054,1059,1049,1013,1060,1066,1065,1057,1060,1060,1056,986,995,1048,1060,1058^1049,1054,1064,1048,1060,1063,1049,1065,1047,998,1040,998,997,1042,997,997^986,1049,986,1049,986,1049,1056,1052,1060,1057,1049,995,991,1064,1065,1046,1063,1065,1059,1060,1068,995,991,1048,1066,1063,1067,1050,995,991,1057,1060,1060,1065,1046,1063,1050,1064,1053,1046,1063,1050,1049,995,991,1051,1066,1057,1057,1052,1066,1054,1057,1049,995,991,1049,1054,1064,1048,1060,1063,1049^1049,1067,1054,1059,1052,995,991,1070,1048,1157,1136,1070,1063,1157,1133,995,991,1049,1067,1054,1059,1052^1062,1062,995,991,1000,1001,1002,997,1000,1001,1002^1056,1060,1047,1060,1057,1049,995,991,1064,1061,1063,1071,1050,1049,1046,1055,1056,1060,1059,1065,1060,1040,986,995,993,1042,1061,1057^1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058,995,991,1054,1059,1051,1060^1065,1054,1065,1046,1059,1054,1066,1058,1047,1046,1070,995,991,1052,1063,1046,1065,1054,1064^1062,1062,995,991,999,1005,1002,998,1004,1000,998,1005,1005,1004^1064,1050,1050,1058,1060,1063,1050,995,991,1068,1060,1068,1053,1066,1059,1065,986,995,1012,1048,1060,1058^1064,1056,1070,1061,1050,995,991,1053,1050,1057,1058,1054,1063,1004,1002,1004,1005^1177,1133,1136,1181,1081,1094,1178,1106,1093,1182,1119,1094,995,991,1178,1090,1078,1178,1126,1079,1177,1138,1091,1177,1140,1106,995,991,999,998,997,997,1061,1067,1061,1180,1122,1086,1180,1135,1116^1049,1054,1064,1048,1060,1063,1049,995,991,1058,1046,1057,1061,1060,1060,1064,999,999,1005,1001^1064,1050,1057,1057,1054,1059,1052,995,991,1051,1066,1057,1057,1058,1046,1064,1065,1050,1063,1057,1060,1060,1065,995,991,996,998,997,995,991,1061,1050,1060,1061,1057,1050,995,991,1058,1046,1069,1052,1050,1046,1063,995,991,1048,1053,1050,1046,1061,1050,1064,1065,1061,1063,1054,1048,1050^1063,1046,1065,1054,1059,1052,1064,995,991,1048,1060,1046,1048,1053,1054,1059,1052,995,991,1057,1050,1052,1050,1059,1049,1046,1063,1070,995,991,1061,1063,1054,1071,1050,1064,995,991,1052,1060,1057,1049,995,991,1054,1059,1051,1060^1048,1060,1059,1065,1046,1048,1065,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,1040,986,995,993,1042,1048,1040,1060,997,1042,1058^1043,1048,1060,1052,1180,1139,1091,1179,1105,1090,1178,1132,1114,1177,1138,1105,1178,1123,1113^1064,1056,1070,1061,1050,995,991,1058,1046,1071,1050,1068,1060,1068^1068,1065,1064,1048,1063,1046,1071,1070,1048,1053,1050,1046,1061,1051,1046,1064,1065,1058,1070,1065,1053,1054,1048,998,997,998,1002,1068,1050,1050,1056,1057,1070,995,991,1070,1060,1066,1048,1046,1059,1048,1053,1060,1060,1064,1050,1046,1059,1070,1049,1066,1059,1052,1050,1060,1059,995,991,1054,1059,1051,1060^1043,1068,1065,1064,1058,1070,1065,1053,1054,1048,995,991,1068,1050,1050,1056,1057,1070,1057,1060,1060,1065,995,991,1053,1050,1057,1061,1070,1060,1066,1065,1060,1048,1057,1050,1046,1063,995,991,1057,1050,1065,1066,1064,1053,1046,1059,1049,1057,1050,1065,1053,1050,1047,1060,1063,1054,1059,1052,1061,1046,1063,1065,1064^1061,1063,1054,1048,1050,995,991,1047,1040,997,1060,1042,1040,997,1060,1042,1058,1047,1040,997,1060,1042,1040,997,1060,1042,1064,1065,1040,986,995,993,1042,1048,1040,997,1060,1042,1058^1048,1046,1157,1134,1065,995,991,1056,1054,1059,1052,1052,1060,1057,1049,1040,986,995,993,1042,1063,1066^1043,1058,1046,1063,1054,1059,1046,1181,1124,1103,1179,1091,1114,1179,1100,1114^1043,1058,1046,1063,1054,1059,1046,1178,1105,1112,1178,1082,1086,1178,1083,1104^1048,1057,1046,1064,1064,995,991,1051,1047,1058,1065,1050,1046,1058,986,995,1048,1060,1058^1067,1054,1064,1054,1065,995,991,1068,1060,1068,1053,1066,1059,1065,986,995,1048,1060,1058^1051,1046,1048,1050,1047,1060,1060,1056,986,995,1048,1060,1058,996,1064,1061,1063,1071,1050,1049,1046,1055,1056,1060,1059,1065,1060,1061,1057^1068,1065,1064,995,991,1046,1059,1049,1060,1065,1053,1050,1063,1061,1067,1061,1058,1060,1066,1059,1065,1064,1046,1059,1049,1046,1048,1053,1054,1050,1067,995,991,1059,1060,1065,1060,1059,1057,1070,1068,1054,1057,1057,1070,1060,1066,1052,1050,1065,995,991,1046,1057,1060,1065,1060,1051,986,1049,1064,1068,1054,1059,1064,995,991,1064,1050,1057,1051,1061,1057,1046,1070^1047,1060,1060,1064,1065,1054,1059,1052,1040,986,995,993,1042,1061,1063,1060,995,991,1058,1060,1066,1059,1065^1064,1054,1065,1050,995,991,1058,1058,1040,1060,997,1042,1057,1067,1057,986,995,1048,1040,1060,997,1042,1058^1054,1052,1051,1046,1059,1064,995,991,1064,1065,1060,1048,1056,995,991,1049,1050,1057,1054,1067,1050,1063^1178,1139,1123,1177,1140,1110,1057,1054,1066,1055,1054,1046,1059,1069,1054,1060,1059,1052,1005,1005,999,1005^1054,1060,1068,995,991,1063,1058,1047,995,991,1060,1056,1001,1052,1060,1057,1049^1063,1058,1047,995,991,1178,1114,1114,1181,1140,1119,1178,1125,1097,1181,1112,1082,1178,1113,1084,1178,1090,1098,1178,1090,1099,995,991,1061,1067,1061,995,991,1054,1060,1068^1178,1139,1123,1177,1140,1110,1050,1070,1050,1064,1057,1060,1065^1043,1058,1046,1063,1054,1059,1046,1177,1133,1096,1177,1133,1103,1180,1103,1081,1179,1087,1113,1180,1093,1083,1177,1133,1096,1178,1123,1131^1157,1140,1061,1060,1157,1129,1046,1157,1131,1046,995,991,1048,1060,1054,1059,1064,1064,1065,1060,1063,1050,1040,986,995,993,1042,1063,1066^1047,1060,1060,1064,1065,1065,1060,1049,1046,1070,995,991,1064,1053,1046,1049,1060,1068,1047,1060,1060,1064,1065,986,995,1048,1060,1058","1068,1055,1065,1055,1066,996,992,1069,1051,1048,1065,1055,1066,1051^1062,1055,1058,1041,1061,998,1043,1066,1051,1050^1183,1113,1108,1182,1111,1090,1180,1086,1094,1179,1126,1127^1182,1079,1090,1178,1134,1104,1179,1105,1112,1183,1102,1109^1065,1067,1062,1062,1061,1064,1066^1066,1064,1067,1065,1066,1062,1055,1058,1061,1066^1062,1047,1049,1057,1047,1053,1051^1182,1117,1113,1183,1098,1079,1183,1113,1108,1182,1111,1090^1048,1041,1061,998,1043,1041,1061,998,1043,1065,1066^1183,1113,1108,1182,1111,1090,1182,1117,1113,1183,1098,1079^1052,1047,1065,1066^1053,1067,1047,1064,1047,1060,1066,1051,1051^1065,1066,1061,1064,1051^1178,1137,1133^1058,1055,1051,1052,1051,1064,1067,1060,1053^1179,1107,1094,1183,1120,1095^1179,1086,1133,1180,1119,1103^1181,1137,1081,1181,1136,1117^1049,1061,1050,1051^1058,1051,1068,1051,1058,1055,1060,1053^1051,1070,1062,1051,1064,1055,1051,1060,1049,1051^1065,1051,1049,1067,1064,1051^1182,1130,1138,1180,1129,1099,1179,1140,1133^1183,1102,1141,1179,1093,1114,1180,1100,1125,1180,1086,1094,1179,1126,1127^1062,1047,1071,1062,1047,1058^1058,1055,1068,1051,1049,1054,1047,1066^1067,1060,1058,1061,1049,1057^1047,1064,1051,1060,1047^1049,1061,1059,1062,1051,1066,1055,1066,1055,1061,1060^1182,1087,1136,1180,1087,1089,1178,1137,1113,1180,1087,1097^1059,1041,1061,998,1043,1067,1060,1066^1058,1051,1053,1047,1058^1180,1100,1126,1181,1117,1091,1180,1101,1093,1179,1135,1137,1179,1090,1100,1182,1117,1113,1183,1098,1079^1064,1048,1053^1049,1054,1051,1047,1062^1053,1058,1047,1050,1055,1047,1066,1061,1064^1065,1047,1058,1051^1065,1051,1047,1065,1061,1060^1050,1051,1058,1055,1068,1051,1064,1071^1182,1079,1090,1178,1134,1104,1179,1107,1094,1183,1120,1095^1065,1047,1052,1051^1050,1055,1065,1049,1061,1067,1060,1066^1069,1051,1048,1049,1054,1047,1066^1047,1049,1049,1061,1067,1060,1066^1065,1057,1071,1062,1051^1062,1064,1055,1049,1051^1065,1051,1064,1068,1055,1049,1051^1063,1067,1047,1060,1066,1055,1066,1071^1062,1064,1061,1052,1052,1013,1051,1065,1065,1013,1055,1061,1060,1047,1058^1049,1067,1065,1066,1061,1059,1051,1064^1065,1051,1058,1052,1062,1058,1047,1071^1049,1061,1067,1062,1061,1060^1063,1067,1047,1058,1055,1066,1071^1049,1061,1047,1049,1054,1055,1060,1053^1064,1047,1066,1055,1060,1053^1180,1100,1126,1181,1117,1091,1180,1101,1093,1182,1117,1113,1183,1098,1079^1047,1049,1049,1065,1054,1047,1064,1041,1051,1055,1043^1183,1120,1095,1178,1134,1104,1179,1088,1111","1184,1120,1123,1179,1135,1089,1181,1088,1098,1181,1130,1100^1181,1107,1092,1180,1089,1112,1180,1104,1119,988,1051,988,1051,1014,1182,1081,1136,1180,1139,1079,1181,1088,1098^1183,1131,1117,1180,1094,1134,1182,1138,1131,1181,1089,1115","1053,1062,1068,1066,1049,1062,1051,1053^1051,1056,1053,1049,1064,1053,1066,1068,1056,1049,1062,1049,1056^1063,1062,1060,1073,1049,1051,1051,1053,1064,1068,1057,1015,1062,1015,1055,1015,1055,1063,1060,1052^989,1052,995,1059,1043,999,1044,1045,1015,1053,1049,1051,1056^1055,1069,1057,1060,1052,1056,1063,1067,1068,1057,1062,1055,998,1063,1066,1055^1055,1069,1057,1060,1052,1064,1063,1066,1068,1049,1060,989,998,1051,1063,1061^1055,1069,1057,1060,1052,1063,1061,1049,1068,1057,1051,989,998,1051,1063,1061^989,1052,995,1059,1064,1053,1066,1052,1069,1062,1055,1053,1063,1062^1049,1064,1064,1060,1043,1057,1073,1045^1051,1063,1066,1064,1060,1049,1069,1062,1051,1056,989,998,1051,1063,1061^1067,1063,1051,1057,1049,1060^1064,1066,1057,1051,1053,989,1052,995,1059^1055,1049,1061,1057,1062,1055^989,1052,995,1059,1043,999,1044,1045,1015,1052,1069,1062,1055,1053,1063,1062^1069,1067,1068,1066,1053,1049,1061,989,998,1068,1070^1061,1053,1061,1050,1053,1066,1067^1068,1071,1057,1068,1051,1056,989,998,1068,1070^1071,1063,1071,1056,1063,1066,1052,1053,1067,989,998,1051,1063,1061^1055,1069,1057,1060,1052,1071,1063,1066,1059,998,1051,1063,1061^1067,1053,1066,1070,1053,1066,1068,1057,1061,1053^1055,1063,1060,1052,1063,1062,1060,1073^1055,1069,1057,1060,1052^989,998,1050,1049,1068,1068,1060,1053,989,998,1062,1053,1068,999^1071,1063,1071,1060,1049,1069,1062,1051,1056,989,998,1051,1063,1061^1055,1063,1060,1052,1064,1066,1057,1051,1053,1067^1055,1049,1061,1053,1068,1057,1061,1053^1055,1069,1057,1060,1052,1060,1049,1069,1062,1051,1056,989,998,1051,1063,1061^989,1052,995,1059,1064,1053,1066,1066,1069,1062^989,998,1071,1057,1072,989,998,1051,1063,1061^1055,1049,1061,1053,1066,1060,1049,1069,1062,1051,1056,989,998,1051,1063,1061^1052,1053,1064,1053,1062,1052^1063,1071,1062,1003,1052,989,998,1068,1070^1053,1062,1058,1057,1062,989,998,1051,1063,1061^1067,1056,1057,1070,1068,1066,989,998,1051,1063,1061^1055,1066,1053,1053,1062,1067^1054,1063,1066,1055,1063,1060,1052^1071,1053,1053,1050,1060,1073,989,998,1051,1063,1061^1066,1053,1051,1066,1069,1057,1015,1068^1071,1063,1071,1067,1068,1053,1049,1052,989,998,1051,1063,1061","1061,1064,1064,1069,1052,1061,1064,1070,1053,1053,1064,1069,1052,1064,1062^1057,1064,1068,1069,1056,1064,1061,1053,1068,990,999,1052,1064,1062^1055,1051,1062,1069,1054,1050,1062,990,999,1065,1067,1064^1064,1060,1005,1056,1064,1061,1053,1044,990,999,997,1046,1052,1064,1062^1065,1071,1054,1056,1050,1062,1054,1067,1068,990,999,1052,1064,1062^1072,1072,1072,990,999,1056,1050,1062,1054,1067,1054,1050,1068,1074,990,999,1052,1064,1062^1056,1064,1061,1053,1053,1054,1050,1061,1044,990,999,997,1046,1067,1070^1061,1054,1056,1058,1064,1063,1055,1050,1067,1062,990,999,1052,1064,1062^1051,1064,1064,1068,1069,1051,1050,1074,990,999,1052,1064,1062^1053,1071,1058,1063,1056,1044,990,999,997,1046,1063,1054,1069^1056,1064,1061,1053,1005,1065,1071,1054,990,999,1052,1064,1062^1065,1054,1067,1055,1054,1052,1069,1072,1050,1074,1044,990,999,997,1046,1064,1063,1054^1054,1061,1058,1069,1058,1068,1069,1056,1050,1062,1058,1063,1056,1044,990,999,997,1046,1052,1064,1062^1051,1064,1064,1068,1069,1003,1063,1058,1056,1057,1069,990,999,1052,1064,1062^1054,1065,1058,1052,1052,1050,1067,1067,1074,1044,990,999,997,1046,1052,1064,1062^1050,1057,1056,1064,1061,1053,1068,990,999,1052,1064,1062^1061,1054,1065,1067,1054,1068,1069,1064,1067,1054,990,999,1063,1054,1069^1051,1050,1063,1060,1005,1053,1057,1044,990,999,997,1046,1016,1052,1064,1062^1061,1054,1065,1067,1054,1068,1069,1064,1067,1054,990,999,1052,1064,1062^1065,1054,1072,1065,1054,1072,1068,1057,1064,1065,1044,990,999,997,1046,1065,1067,1064^1054,1065,1058,1052,1052,1050,1067,1067,1074,1044,990,999,997,1046,1064,1067,1056^1055,1051,1062,1069,1054,1050,1062,1044,990,999,997,1046,1052,1064,1062^1052,1064,1063,1066,1070,1054,1068,1069,1052,1050,1065,1065,1054,1053,1044,990,999,997,1046,1052,1064,1062^1062,1074,1069,1057,1058,1052,1068,1069,1064,1067,1054,1044,990,999,997,1046,1052,1064,1062^1065,1071,1054,1068,1057,1064,1065,990,999,1065,1067,1064^1062,1062,1064,1061,1071,1061,1044,990,999,997,1046,1052,1044,1001,1064,1046,1062^1068,1057,1050,1053,1064,1072,1051,1064,1064,1068,1069,990,999,1062,1061^1051,1064,1064,1068,1069,1057,1058,1071,1054,1044,990,999,997,1046,1054,1070^1054,1065,1058,1052,1052,1050,1067,1067,1074,1044,990,999,997,1046,1063,1054,1069^1057,1070,1068,1060,1074,1051,1044,1064,1001,1046,1044,1064,1001,1046,1068,1069,990,999,1052,1044,1064,1001,1046,1062^1055,1064,1073,1068,1069,1064,1067,1054,990,999,1065,1067,1064^1072,1064,1072,1057,1070,1063,1069,990,999,1052,1064,1062^1062,1074,1069,1057,1058,1052,1068,1069,1064,1067,1054,1044,990,999,997,1046,1063,1054,1069^1068,1057,1050,1053,1064,1072,1051,1064,1064,1068,1069,990,999,1052,1064,1062^1072,1064,1072,1071,1054,1063,1053,1064,1067,990,999,1064,1067,1056^1065,1071,1054,1056,1050,1062,1054,1067,1068,990,999,1063,1054,1069^1072,1064,1072,1051,1064,1065,990,999,1052,1064,1062^1059,1070,1068,1069,1051,1064,1064,1068,1069,990,999,1064,1067,1056^1055,1051,1062,1069,1054,1050,1062,990,999,1063,1054,1069^1066,1070,1058,1052,1060,1050,1063,1053,1068,1062,1064,1064,1069,1057,990,999,1052,1064,1062^1072,1064,1072,1057,1070,1063,1069,990,999,1063,1054,1069^1056,1050,1062,1054,1050,1070,1052,990,999,1052,1064,1062^1072,1064,1072,1071,1054,1063,1053,1064,1067,990,999,1063,1054,1069^1069,1058,1069,1050,1063,1058,1070,1062,1051,1050,1074,990,999,1052,1064,1062^1058,1067,1050,1063,1051,1061,1058,1075,1075,1050,1067,1053,990,999,1052,1064,1062^1051,1064,1064,1068,1069,1064,1067,1054,1044,990,999,997,1046,1063,1054,1069^1061,1054,1065,1067,1054,1068,1069,1064,1067,1054,990,999,1064,1067,1056^1054,1051,1050,1074,1056,1064,1061,1053,1068,990,999,1052,1064,1062^1072,1064,1072,1071,1054,1063,1053,1064,1067,990,999,1052,1064,1062","1073,1065,1073,1072,1055,1064,1054,1065,1068,991,1000,1053,1065,1063^1073,1065,1073,1072,1055,1064,1054,1065,1068,991,1000,1065,1068,1057^1073,1065,1073,1072,1055,1064,1054,1065,1068,991,1000,1064,1055,1070")
local repTbl = {
--Symbol & space removal
["[%*%-<>%(%)\"!%?=`'_%+#%%%^&;:~{}%[%] ]"]="",
["¨"]="", ["”"]="", ["“"]="", ["▄"]="", ["▀"]="", ["█"]="", ["▓"]="", ["▲"]="", ["◄"]="", ["►"]="", ["▼"]="", ["♣"]="",
["░"]="", ["♥"]="", ["♫"]="", ["●"]="", ["■"]="", ["☼"]="", ["¤"]="", ["☺"]="", ["↑"]="", ["«"]="", ["»"]="", ["♦"]="",
["▌"]="", ["▒"]="", ["□"]="", ["¬"]="", ["√"]="", ["²"]="", ["´"]="", ["☻"]="", ["★"]="", ["☆"]="", ["◙"]="", ["◘"]="",
["¦"]="", ["|"]="", [";"]="", ["΅"]="", ["™"]="", ["。"]="", ["◆"]="", ["◇"]="", ["♠"]="", ["△"]="", ["¯"]="", [" "]="",
["《"]="", ["》"]="", ["("]="", [")"]="", ["~"]="", ["—"]="", ["!"]="", [":"]="", ["·"]="", ["˙"]="", ["…"]="", [" "]="",
["▎"]="", ["▍"]="", ["▂"]="", ["▅"]="", ["▆"]="", ["+"]="", ["‘"]="", ["’"]="", ["【"]="", ["】"]="", ["│"]="",
--This is the replacement table. It serves to deobfuscate words by replacing letters with their English "equivalents".
["а"]="a", ["à"]="a", ["á"]="a", ["ä"]="a", ["â"]="a", ["ã"]="a", ["å"]="a", -- First letter is Russian "\208\176". Convert > \97.
["Ą"]="a", ["ą"]="a", ["Ā"]="a", ["ā"]="a", ["Ă"]="a", ["ă"]="a", -- Convert > \97. Note: Ą, Ā, Ă fail with strlower, include both.
["с"]="c", ["ç"]="c", ["Ć"]="c", ["ć"]="c", ["Č"]="c", ["č"]="c", ["Ĉ"]="c", ["ĉ"]="c", ["Ċ"]="c", ["ċ"]="c", --First letter is Russian "\209\129". Convert > \99. Note: Ć, Č, Ĉ, Ċ fail with strlower, include both.
["Ď"]="d", ["ď"]="d", ["Đ"]="d", ["đ"]="d", --Convert > \100. Note: Ď, Đ fail with strlower, include both.
["е"]="e", ["è"]="e", ["é"]="e", ["ë"]="e", ["ё"]="e", ["ê"]="e", --First letter is Russian "\208\181". Convert > \101.
["Ę"]="e", ["ę"]="e", ["Ė"]="e", ["ė"]="e", ["Ě"]="e", ["ě"]="e", ["Ē"]="e", ["ē"]="e", ["Έ"]="e", ["έ"]="e", ["Ĕ"]="e", ["ĕ"]="e", ["Ε"]="e", ["ε"]="e", --Note: Ę, Ė, Ě, Ē, Έ, Ĕ, Ε fail with strlower, include both.
["Ğ"]="g", ["ğ"]="g", ["Ĝ"]="g", ["ĝ"]="g", ["Ģ"]="g", ["ģ"]="g", ["Ġ"]="g", ["ġ"]="g", -- Convert > \103. Note: Ğ, Ĝ, Ģ, Ġ fail with strlower, include both.
["Ĥ"]="h", ["ĥ"]="h", -- Convert > \104. Note: Ĥ fail with strlower, include both.
["ì"]="i", ["í"]="i", ["ï"]="i", ["î"]="i", ["İ"]="i", ["ı"]="i", -- Convert > \105.
["Ϊ"]="i", ["ϊ"]="i", ["Ι"]="i", ["ι"]="i", ["Ί"]="i", ["ί"]="i", ["Ĭ"]="i", ["ĭ"]="i", ["Ї"]="i", ["ї"]="i", --Convert > \105. -- Note: Ϊ, Ι, Ί, Ĭ, Ї fail with strlower, include both.
["Į"]="i", ["į"]="i", ["Ĩ"]="i", ["ĩ"]="i", ["Ī"]="i", ["ī"]="i", ["I"]="i", ["i"]="i", --Convert > \105. -- Note: Į, Ĩ, Ī, I fail with strlower, include both.
["Ĵ"]="j", ["ĵ"]="j", -- Convert > \106. -- Note: Ĵ fail with strlower, include both.
["к"]="k", ["Ķ"]="k", ["ķ"]="k", -- First letter is Russian "\208\186". Convert > \107. -- Note: Ķ fail with strlower, include both.
["Ł"]="l", ["ł"]="l", ["Ĺ"]="l", ["ĺ"]="l", ["Ľ"]="l", ["ľ"]="l", -- Convert > \107. -- Note: Ł, Ĺ, Ľ fail with strlower, include both.
["Μ"]="m", ["м"]="m", -- First letter is capital Greek μ "\206\156". Convert > \109
["η"]="n", ["ή"]="n", ["ñ"]="n", ["Ν"]="n", -- First letter is small Greek eta η "\206\183". Convert > \110.
["Ń"]="n", ["ń"]="n", ["Ņ"]="n", ["ņ"]="n", ["Ň"]="n", ["ň"]="n", ["Ŋ"]="n", ["ŋ"]="n", --Convert > \110. Note: Ń, Ņ, Ň, Ŋ fail with strlower, include both.
["о"]="o", ["ò"]="o", ["ó"]="o", ["ö"]="o", ["ô"]="o", ["õ"]="o", ["ø"]="o", ["σ"]="o", --First letter is Russian "\208\190". Convert > \111.
["Ō"]="o", ["ō"]="o", ["Ǿ"]="o", ["ǿ"]="o", ["Ő"]="o", ["ő"]="o", ["Θ"]="o", ["θ"]="o", ["Ŏ"]="o", ["ŏ"]="o", ["O"]="o", ["o"]="o", --Note: Ō, Ǿ, Ő, Θ, Ŏ, O fail with strlower, include both.
["р"]="p", ["þ"]="p", ["φ"]="p", ["Ρ"]="p", ["ρ"]="p", --First letter is Russian "\209\128". Convert > \112. --Note: Ρ fail with strlower, include both.
["Q"]="q", ["q"]="q", --Note: Q fail with strlower, include both.
["г"]="r", ["я"]="r", ["Ř"]="r", ["ř"]="r", ["Ŕ"]="r", ["ŕ"]="r", ["Ŗ"]="r", ["ŗ"]="r", --Convert > \114. -- Note: Ř, Ŕ, Ŗ fail with strlower, include both.
["Ş"]="s", ["ş"]="s", ["Š"]="s", ["š"]="s", ["Ś"]="s", ["ś"]="s", ["Ŝ"]="s", ["ŝ"]="s", ["Ѕ"]="s", ["ѕ"]="s", --Convert > \115. -- Note: Ş, Š, Ś, Ŝ, Ѕ fail with strlower, include both.
["т"]="t", ["Ŧ"]="t", ["ŧ"]="t", ["Τ"]="t", ["τ"]="t", ["Ţ"]="t", ["ţ"]="t", ["Ť"]="t", ["ť"]="t", --Convert > \116. -- Note: Ŧ, Τ, Ţ, Ť fail with strlower, include both.
["ù"]="u", ["ú"]="u", ["ü"]="u", ["û"]="u", --Convert > \117.
["Ų"]="u", ["ų"]="u", ["Ŭ"]="u", ["ŭ"]="u", ["Ů"]="u", ["ů"]="u", ["Ű"]="u", ["ű"]="u", ["Ū"]="u", ["ū"]="u", --Convert > \117. -- Note: Ų, Ŭ, Ů, Ű, Ū fail with strlower, include both.
["ω"]="w", ["ώ"]="w", ["Ẃ"]="w", ["ẃ"]="w", ["Ẁ"]="w", ["ẁ"]="w", ["Ŵ"]="w", ["ŵ"]="w", ["Ẅ"]="w", ["ẅ"]="w", ["W"]="w", ["w"]="w", -- First letter is small Greek omega Ώ "\207\142". Convert > \119. -- Note: Ẃ, Ẁ, Ŵ, Ẅ, W fail with strlower, include both.
["у"]="y", ["ý"]="y", ["Ÿ"]="y", ["ÿ"]="y", -- First letter is Russian "\209\131". Convert > \121. -- Note: Ÿ fail with strlower, include both.
["0"]="0", ["1"]="1", ["2"]="2", ["3"]="3", ["4"]="4", ["5"]="5", ["6"]="6", ["7"]="7", ["8"]="8", ["9"]="9",
["•"]=".", ["·"]=".", [","]=",", ["º"]="o", ["®"]="r", ["○"]="o", ["†"]="t",
}
--[[ Chat Scanning ]]--
local Ambiguate, BNGetGameAccountInfoByGUID, strfind, gsub, lower, next, type, tremove = Ambiguate, BNGetGameAccountInfoByGUID, string.find, string.gsub, string.lower, next, type, tremove
local IsFriend, IsGuildMember, UnitInRaid, UnitInParty, SetCVar, GetCVarBool = C_FriendList.IsFriend, IsGuildMember, UnitInRaid, UnitInParty, C_CVar.SetCVar, C_CVar.GetCVarBool
local CanReportPlayer, ReportPlayer, PlayerLocation = C_ChatInfo.CanReportPlayer, C_ChatInfo.ReportPlayer, PlayerLocation
local spamCollector, spamLogger, prevShow, enableBubble = {}, {}, 0, false
local blockedLineId, et, chatLines, chatPlayers = 0, 7, {}, {}
local btn, reportFrame
local function IsFriendly(name, flag, _, guid)
if not guid then return true end -- LocalDefense automated prints
if not guid:find("^Player") then -- Bad addons
local msg = "BadBoy: Unexpected GUID requested by an addon: ".. guid
print(msg)
geterrorhandler()(msg)
return true
end
local _, characterName = BNGetGameAccountInfoByGUID(guid)
if characterName or IsGuildMember(guid) or IsFriend(guid) or UnitInRaid(name) or UnitInParty(name) or flag == "GM" or flag == "DEV" then
return true
end
end
local function Cleanse(msg)
msg = gsub(msg, "|c[^%[]+%[([^%]]+)%]|h|r", "%1") -- Speed up processing messages with links by removing them
msg = lower(msg) --Lower all text, remove capitals
for k,v in next, repTbl do
msg = gsub(msg, k, v)
end
return msg
end
local eventFunc = function(_, event, msg, player, _, _, _, flag, channelId, _, _, _, lineId, guid)
-- Re-enable chat bubbles if they were disabled in the previous event.
if enableBubble then
enableBubble = false
SetCVar("chatBubbles", 1)
end
blockedLineId = 0
if event == "CHAT_MSG_CHANNEL" and (channelId == 0 or type(channelId) ~= "number") then return end --Only scan official custom channels (gen/trade)
local trimmedPlayer = Ambiguate(player, "none")
if IsFriendly(trimmedPlayer, flag, nil, guid) then return end
local debug = msg --Save original message format
msg = Cleanse(msg)
--20 line text buffer, this checks the current line, and blocks it if it's the same as one of the previous 20
if event == "CHAT_MSG_CHANNEL" then
local cleanestMsg = gsub(msg, "[@,./\\=]", "") -- Anything purposely not removed by Cleanse()
for i=1, #chatLines do
if chatLines[i] == cleanestMsg and chatPlayers[i] == guid then --If message same as one in previous 20 and from the same person...
blockedLineId = lineId
-- Reduce the chances of a spam report expiring (line id is too old) by refreshing it
if spamCollector[guid] and S.is(msg) then
local loc = PlayerLocation:CreateFromChatLineID(lineId)
spamCollector[guid] = loc
if BADBOY_OPTIONS.tipSpam then
spamLogger[guid] = debug
end
end
--
return
end
if i == 20 then tremove(chatLines, 1) tremove(chatPlayers, 1) end --Don't let the DB grow larger than 20
end
chatLines[#chatLines+1] = cleanestMsg
chatPlayers[#chatPlayers+1] = guid
end
--End text buffer
if S.is(msg) then
if event == "CHAT_MSG_SAY" or event == "CHAT_MSG_YELL" then
-- Awful way of disabling chat bubbles when spam is detected.
-- Chat bubbles are processed internally by the game client AFTER all the addon event handlers are fired.
if GetCVarBool("chatBubbles") then
enableBubble = true
SetCVar("chatBubbles", 0)
end
end
if not BADBOY_OPTIONS.freqButton then
for i = 1, #S[et] do
if strfind(msg, S[et][i]) then
blockedLineId = lineId
return
end
end
end
if BadBoyLog then
BadBoyLog("BadBoy", event, trimmedPlayer, debug)
end
if not BADBOY_BLACKLIST[guid] and not IsEncounterInProgress() then
local loc = PlayerLocation:CreateFromChatLineID(lineId)
spamCollector[guid] = loc
if BADBOY_OPTIONS.tipSpam then
spamLogger[guid] = debug
if btn:IsShown() and reportFrame:IsMouseOver() then
reportFrame:GetScript("OnLeave")(reportFrame) -- Add more spam to tooltip if shown
reportFrame:GetScript("OnEnter")(reportFrame)
end
end
local t = GetTime()
if t-prevShow > (BADBOY_OPTIONS.freqBtn and 30 or 90) then
prevShow = t
btn:Show()
end
end
blockedLineId = lineId
return
elseif next(spamCollector) then
local t = GetTime()
if t-prevShow > (BADBOY_OPTIONS.freqBtn and 30 or 90) then
prevShow = t
btn:Show()
end
end
end
local filterFunc = function(_, _, _, _, _, _, _, _, _, _, _, _, lineId)
if blockedLineId == lineId then
return true
end
end
do
--temp
local xpcall = xpcall
local dummy = function() end
--end temp
btn = CreateFrame("Frame", nil, ChatFrame1)
btn:SetWidth(50)
btn:SetHeight(50)
btn:SetPoint("BOTTOMRIGHT", 18, -20)
btn:SetFrameStrata("DIALOG")
local tx = btn:CreateTexture()
tx:SetAllPoints(btn)
tx:SetMask("Interface\\CharacterFrame\\TempPortraitAlphaMask")
tx:SetTexture(132360) -- Interface/Icons/Ability_Warrior_ShieldMastery
local animGroup = btn:CreateAnimationGroup()
animGroup:SetLooping("REPEAT")
local scale = animGroup:CreateAnimation("Scale")
scale:SetOrder(1)
scale:SetFromScale(0.25,0.25)
scale:SetToScale(1,1)
scale:SetDuration(0.4)
local scale2 = animGroup:CreateAnimation("Scale")
scale2:SetOrder(2)
scale2:SetFromScale(1,1)
scale2:SetToScale(0.25,0.25)
scale2:SetDuration(0.4)
scale2:SetEndDelay(8)
animGroup:Play()
btn:Hide()
reportFrame = CreateFrame("Button", nil, btn)
reportFrame:SetAllPoints(ChatFrame1)
reportFrame:SetFrameStrata("DIALOG")
local ticker = nil
local tickerFunc = function()
local canReport = false
for k, v in next, spamCollector do
local go, pass = xpcall(CanReportPlayer, dummy, v)
if go and pass then
canReport = true
else
spamCollector[k] = nil
spamLogger[k] = nil
end
end
if not canReport then
btn:Hide()
end
end
btn:SetScript("OnShow", function()
if ticker then ticker:Cancel() end
ticker = C_Timer.NewTicker(5, tickerFunc)
tickerFunc()
-- Don't animate if the feature is disabled
if animGroup:IsPlaying() and BADBOY_OPTIONS.noAnim then
btn:SetWidth(12)
btn:SetHeight(12)
animGroup:Stop()
btn:ClearAllPoints()
btn:SetPoint("BOTTOMRIGHT", 0, -5)
elseif not animGroup:IsPlaying() and not BADBOY_OPTIONS.noAnim then
btn:SetWidth(46)
btn:SetHeight(46)
animGroup:Play()
btn:ClearAllPoints()
btn:SetPoint("BOTTOMRIGHT", 18, -20)
end
end)
btn:SetScript("OnHide", function()
if ticker then
ticker:Cancel()
ticker = nil
end
end)
reportFrame:SetScript("OnClick", function(self)
if IsAltKeyDown() then -- Dismiss
prevShow = GetTime() -- Refresh throttle so we don't risk showing again straight after reporting
self:GetParent():Hide()
spamCollector, spamLogger = {}, {}
else -- Report
prevShow = GetTime() -- Refresh throttle so we don't risk showing again straight after reporting
self:GetParent():Hide()
local systemMsg = {GetFramesRegisteredForEvent("CHAT_MSG_SYSTEM")} -- Don't show the "Complaint Registered" message
local infoMsg = {GetFramesRegisteredForEvent("UI_INFO_MESSAGE")} -- Don't show the "Thanks for the report" message
for i = 1, #systemMsg do
systemMsg[i]:UnregisterEvent("CHAT_MSG_SYSTEM")
end
for i = 1, #infoMsg do
infoMsg[i]:UnregisterEvent("UI_INFO_MESSAGE")
end
for k, v in next, spamCollector do
local go, pass = xpcall(CanReportPlayer, dummy, v)
if go and pass then
BADBOY_BLACKLIST[k] = true
ReportPlayer("spam", v)
end
spamCollector[k] = nil
spamLogger[k] = nil
end
for i = 1, #systemMsg do
systemMsg[i]:RegisterEvent("CHAT_MSG_SYSTEM")
end
for i = 1, #infoMsg do
infoMsg[i]:RegisterEvent("UI_INFO_MESSAGE")
end
end
end)
local tt = CreateFrame("GameTooltip", "bbtt", UIParent, "GameTooltipTemplate")
reportFrame:SetScript("OnEnter", function(self)
tt:SetOwner(self, "ANCHOR_CURSOR")
tt:AddLine(S.spamBlocked, 1, 1, 1)
tt:AddLine(S.clickToReport, 1, 1, 1)
if next(spamLogger) then
tt:AddLine(" ", 0.5, 0.5, 1)
for _, v in next, spamLogger do
tt:AddLine(v, 0.2, 1, 0)
end
end
tt:Show()
end)
reportFrame:SetScript("OnLeave", function() tt:Hide() end)
end
--[[ Add Filters ]]--
do
local f = CreateFrame("Frame")
f:SetScript("OnEvent", eventFunc)
local tbl = {
"CHAT_MSG_CHANNEL",
"CHAT_MSG_YELL",
"CHAT_MSG_SAY",
"CHAT_MSG_WHISPER",
"CHAT_MSG_EMOTE",
"CHAT_MSG_DND",
"CHAT_MSG_AFK",
}
for i = 1, #tbl do
local event = tbl[i]
local frames = {GetFramesRegisteredForEvent(event)}
for j = 1, #frames do
local frame = frames[j]
frame:UnregisterEvent(event)
end
f:RegisterEvent(event)
ChatFrame_AddMessageEventFilter(event, filterFunc)
for j = 1, #frames do
local frame = frames[j]
frame:RegisterEvent(event)
end
end
end
--[[ Blacklist ]]--
do
local f = CreateFrame("Frame")
f:RegisterEvent("ADDON_LOADED")
f:RegisterEvent("PLAYER_LOGIN")
f:SetScript("OnEvent", function(frame, event, addon)
if addon == "BadBoy" then
if type(BADBOY_OPTIONS) ~= "table" then BADBOY_OPTIONS = {} end
if type(BADBOY_BLACKLIST) ~= "table" then BADBOY_BLACKLIST = {} end
frame:UnregisterEvent(event)
elseif event == "PLAYER_LOGIN" then
-- Blacklist DB setup, needed since Blizz nerfed ReportPlayer so hard the block sometimes only lasts a few minutes.
local dateTbl = date("*t")
local day = dateTbl.day
if BADBOY_BLACKLIST.dayFromCal ~= day then
BADBOY_BLACKLIST = {dayFromCal = day} -- Can't use ADDON_LOADED as date function isn't always ready on very first login.
end
SetCVar("spamFilter", 1)
frame:UnregisterEvent(event)
BADBOY_OPTIONS.tmp = nil
BADBOY_OPTIONS.tmpm = nil
BADBOY_OPTIONS.tmpl = nil
BADBOY_OPTIONS.freqButton = nil
-- Chat bubble restore
frame:SetScript("OnEvent", function()
if enableBubble then
enableBubble = false
SetCVar("chatBubbles", 1)
end
end)
-- Hopefully we never end up in a situation where we've permanently disabled chat bubbles for the user.
frame:RegisterEvent("PLAYER_LOGOUT")
frame:RegisterEvent("CHAT_MSG_MONSTER_SAY")
frame:RegisterEvent("CHAT_MSG_MONSTER_YELL")
end
end)
end
_G.BadBoyIsFriendly = IsFriendly
_G.BadBoyCleanse = Cleanse