├── README.md
└── overFlood
└── overFlood
├── App.config
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── bin
├── Debug
│ ├── Leaf.xNet.dll
│ ├── Leaf.xNet.xml
│ ├── Newtonsoft.Json.dll
│ ├── Newtonsoft.Json.xml
│ ├── overFlood.exe
│ ├── overFlood.exe.config
│ └── overFlood.pdb
└── Release
│ ├── Leaf.xNet.dll
│ ├── Leaf.xNet.xml
│ ├── Newtonsoft.Json.dll
│ ├── Newtonsoft.Json.xml
│ ├── overFlood.exe
│ ├── overFlood.exe.config
│ └── overFlood.pdb
└── obj
└── Debug
├── DesignTimeResolveAssemblyReferences.cache
└── DesignTimeResolveAssemblyReferencesInput.cache
/README.md:
--------------------------------------------------------------------------------
1 | # overFlood
2 | The full source code for the final version I had released of overFlood. Further updates will not be provided for this project even if features stop working in the future.
3 |
4 | This is a powerful Twitch AIO tool which I had been selling since March 2020 and stopped selling in March 2021. There is a lot of leaked versions of this tool online and there are multiple versions of it still being sold. Without me making this tool, the Twitch AIO tool market would have been nowhere near as populated.
5 |
6 | Since I will no longer be working on this project, and have moved onto other projects, I have decided it would be appropiate to make this tool and source code free for everyone to use. Use this as you want, but I hope that this helps many people.
7 |
--------------------------------------------------------------------------------
/overFlood/overFlood/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/overFlood/overFlood/MainForm.cs:
--------------------------------------------------------------------------------
1 | using Leaf.xNet;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.IO;
5 | using System.Linq;
6 | using System.Net;
7 | using System.Net.Sockets;
8 | using System.Net.WebSockets;
9 | using System.Text;
10 | using System.Text.RegularExpressions;
11 | using System.Threading;
12 | using System.Threading.Tasks;
13 | using System.Windows.Forms;
14 |
15 | namespace overFlood
16 | {
17 | public partial class MainForm : Form
18 | {
19 | #region Variables
20 | private StreamWriter createdAccounts;
21 | private StreamWriter createdTokens;
22 | private StreamWriter workingTokens;
23 | private StreamWriter primeTokens;
24 | private StreamWriter primeAvailableTokens;
25 | private StreamWriter bitsTokens;
26 |
27 | private StreamWriter legacyAccounts;
28 |
29 | private StreamWriter workingAccounts;
30 | private StreamWriter primeAccounts;
31 | private StreamWriter primeAvailableAccounts;
32 | private StreamWriter bitsAccounts;
33 | private StreamWriter workingTokens1;
34 | private StreamWriter primeTokens1;
35 | private StreamWriter primeAvailableTokens1;
36 | private StreamWriter bitsTokens1;
37 |
38 | private CancellationTokenSource creatorTokenSource;
39 | private CancellationTokenSource legacyCheckerTokenSource;
40 | private CancellationTokenSource accountCheckerTokenSource;
41 | private CancellationTokenSource tokenCheckerTokenSource;
42 | private CancellationTokenSource viewTokenSource;
43 | private CancellationTokenSource channelTokenSource;
44 | private CancellationTokenSource vodTokenSource;
45 | private CancellationTokenSource followTokenSource;
46 | private CancellationTokenSource chatTokenSource;
47 | private CancellationTokenSource subTokenSource;
48 | private CancellationTokenSource bitTokenSource;
49 |
50 | private string scrapedProxies;
51 |
52 | private string[] accountCreatorProxies;
53 | private int accountsCreated;
54 | private int accountsRetries;
55 |
56 | string[] legacyCheckerAccounts;
57 | int legacyHits;
58 | int legacyChecks;
59 | int legacyTotal;
60 |
61 | string[] accountCheckerProxies;
62 | string[] accountCheckerAccounts;
63 | int accountCheckerChecks;
64 | int accountCheckerTotal;
65 | int accountCheckerGood;
66 | int accountCheckerBad;
67 | int accountCheckerPrimes;
68 | int accountCheckerPrimeAvailable;
69 | int accountCheckerOverallBits;
70 | int accountCheckerRetries;
71 |
72 | string[] tokenCheckerTokens;
73 | int tokenCheckerChecks;
74 | int tokenCheckerTotal;
75 | int tokenCheckerGood;
76 | int tokenCheckerBad;
77 | int primes;
78 | int primeAvailable;
79 | int overallBits;
80 |
81 | string[] viewProxies;
82 | private int viewRequests;
83 | private int viewRequestsFailed;
84 |
85 | private string[] channelViewProxies;
86 | private int channelRequests;
87 | private int failChannelRequests;
88 |
89 | private string[] vodViewProxies;
90 | private int vodRequests;
91 | private int failVodRequests;
92 |
93 | string[] followTokens;
94 | string[] followProxies;
95 | string followChannelId;
96 | private int followSent;
97 | private int followRemoved;
98 | private int followFailed;
99 |
100 | string[] chatTokens;
101 | string[] chatProxies;
102 | string[] messages;
103 | int t;
104 | int messagesSuccess;
105 | int messagesFail;
106 |
107 | string[] subTokens;
108 | string[] subProxies;
109 | string subChannelId;
110 | int success;
111 | int fail;
112 |
113 | string[] bitTokens;
114 | string[] bitProxies;
115 | string bitChannelId;
116 | int bitSuccess;
117 | int bitFail;
118 | #endregion
119 |
120 | public MainForm()
121 | {
122 | CheckForIllegalCrossThreadCalls = false;
123 | InitializeComponent();
124 | }
125 |
126 | #region Proxy Scraper Methods
127 | private void btnScraperFetch_Click(object sender, EventArgs e)
128 | {
129 | scrapedProxies = null;
130 |
131 | using (HttpRequest httpRequest = new HttpRequest())
132 | {
133 | try
134 | {
135 | scrapedProxies = httpRequest.Get($"https://api.proxyscrape.com?request=displayproxies&proxytype={comboScraperType.Text.ToLower()}&timeout={txtScraperTimeout.Text}&country={comboScraperCountry.Text}&anonymity={comboScraperAnonymity.Text.ToLower()}&ssl={comboScraperSSL.Text.ToLower()}").ToString();
136 |
137 | lblProxiesFetched.Text = $"Proxies fetched: {scrapedProxies.Count(c => c == '\n')}";
138 |
139 | string LastUpdated = httpRequest.Get($"https://api.proxyscrape.com/?request=lastupdated&proxytype={comboScraperType.Text.ToLower()}").ToString().Replace("Around ", "");
140 | lblScraperUpdated.Text = $"Last Updated: {LastUpdated}";
141 | }
142 | catch (Exception)
143 | {
144 | // ignored
145 | }
146 |
147 | MessageBox.Show($"Scraped {scrapedProxies.Count(c => c == '\n')} proxies", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
148 | }
149 | }
150 |
151 | private void btnScraperCopyToClipboard_Click(object sender, EventArgs e)
152 | {
153 | if (scrapedProxies == null || !scrapedProxies.Any()) return;
154 |
155 | Clipboard.SetText(scrapedProxies);
156 | MessageBox.Show($"Copied {scrapedProxies.Count(c => c == '\n')} proxies to clipboard.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
157 | }
158 |
159 | private void btnScraperSave_Click(object sender, EventArgs e)
160 | {
161 | if (!scrapedProxies.Any()) return;
162 |
163 | var saveFileDialog = new SaveFileDialog
164 | {
165 | Title = "Save Proxies",
166 | Filter = "Text files (*.txt)|*.txt"
167 | };
168 |
169 | if (saveFileDialog.ShowDialog() != DialogResult.OK) return;
170 |
171 | var streamWriter = new StreamWriter(saveFileDialog.FileName);
172 |
173 | streamWriter.Write(scrapedProxies);
174 |
175 | streamWriter.Close();
176 | MessageBox.Show($"{scrapedProxies.Count(c => c == '\n')} proxies exported!", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
177 | }
178 | #endregion
179 |
180 | #region Account Creator Methods
181 | private void btnCreatorLoadProxies_Click(object sender, EventArgs e)
182 | {
183 | try
184 | {
185 | string fileName = Utilities.OpenFileDialog("Load Proxies");
186 | if (string.IsNullOrEmpty(fileName)) return;
187 | accountCreatorProxies = Utilities.LoadFile(fileName);
188 | lblCreatorProxies.Text = $"Proxies: {accountCreatorProxies.Count()}";
189 | MessageBox.Show($"Loaded {accountCreatorProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
190 | }
191 | catch (Exception ex)
192 | {
193 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
194 | }
195 | }
196 |
197 | private async void btnCreatorStart_Click(object sender, EventArgs e)
198 | {
199 | if (accountCreatorProxies == null || !accountCreatorProxies.Any())
200 | {
201 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
202 | return;
203 | }
204 |
205 | btnCreatorLoadProxies.Enabled = false;
206 | accountsCreated = 0;
207 | accountsRetries = 0;
208 | lblAccountsCreated.Text = "Accounts Created: 0";
209 | lblCreatorRetries.Text = "Retries: 0";
210 | txtCreator2CaptchaKey.Enabled = false;
211 | txtCreatorAmount.Enabled = false;
212 | txtCreatorThreads.Enabled = false;
213 | txtCreatorTimeout.Enabled = false;
214 | comboCreatorProxyType.Enabled = false;
215 | btnCreatorStart.Enabled = false;
216 | btnCreatorStop.Enabled = true;
217 |
218 | CreateDirectory1();
219 |
220 | ThreadPool.SetMinThreads(Convert.ToInt32(txtCreatorThreads.Text), Convert.ToInt32(txtCreatorThreads.Text));
221 |
222 | creatorTokenSource = new CancellationTokenSource();
223 | CancellationToken token = creatorTokenSource.Token;
224 |
225 | ParallelOptions parallelOptions = new ParallelOptions
226 | {
227 | MaxDegreeOfParallelism = Convert.ToInt32(txtCreatorThreads.Text),
228 | CancellationToken = token
229 | };
230 |
231 | try
232 | {
233 | await Task.Run(() => Parallel.For(0, Convert.ToInt32(txtCreatorAmount.Text), parallelOptions, CreateAccount), token);
234 | }
235 | catch (OperationCanceledException)
236 | {
237 | // ignored
238 | }
239 |
240 | createdAccounts.Dispose();
241 | createdTokens.Dispose();
242 |
243 | btnCreatorLoadProxies.Enabled = true;
244 | txtCreator2CaptchaKey.Enabled = true;
245 | txtCreatorAmount.Enabled = true;
246 | txtCreatorThreads.Enabled = true;
247 | comboCreatorProxyType.Enabled = true;
248 | txtCreatorTimeout.Enabled = true;
249 | btnCreatorStart.Enabled = true;
250 | btnCreatorStop.Enabled = false;
251 | MessageBox.Show($"Created {accountsCreated} accounts.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
252 | }
253 |
254 | private void CreateDirectory1()
255 | {
256 | string text = string.Format("Results/AG-{0:MM-dd-yy-hh-mm-ss}", DateTime.Now);
257 | Directory.CreateDirectory(text);
258 |
259 | createdAccounts = new StreamWriter(string.Format("{0}/accounts.txt", text), true)
260 | {
261 | AutoFlush = true
262 | };
263 | createdTokens = new StreamWriter(string.Format("{0}/tokens.txt", text), true)
264 | {
265 | AutoFlush = true
266 | };
267 | }
268 |
269 | private void CreateAccount(int num)
270 | {
271 | SolveRecaptchaV2("6Lcjjl8UAAAAAMCzOHbJj-yb2MBElPKqZmlE5bbL", "https://passport.twitch.tv/register", out string text);
272 | string username = new SmartGenerator().GenerateName(false) + new Random().Next(10, 1000);
273 | string password = GenerateCoupon(new Random().Next(6, 10));
274 |
275 | using (HttpRequest httpRequest = new HttpRequest())
276 | {
277 | while (true)
278 | {
279 | string token;
280 |
281 | try
282 | {
283 | string proxy = accountCreatorProxies[new Random().Next(0, accountCreatorProxies.Count())];
284 |
285 | switch (comboCreatorProxyType.Text)
286 | {
287 | case "HTTP":
288 | httpRequest.Proxy = HttpProxyClient.Parse(proxy);
289 | break;
290 | case "SOCKS4":
291 | httpRequest.Proxy = Socks4ProxyClient.Parse(proxy);
292 | break;
293 | case "SOCKS4a":
294 | httpRequest.Proxy = Socks4AProxyClient.Parse(proxy);
295 | break;
296 | case "SOCKS5":
297 | httpRequest.Proxy = Socks5ProxyClient.Parse(proxy);
298 | break;
299 | }
300 |
301 | httpRequest.ReadWriteTimeout = Convert.ToInt32(txtCreatorTimeout.Text);
302 | httpRequest.ConnectTimeout = Convert.ToInt32(txtCreatorTimeout.Text);
303 | httpRequest.AddHeader("Connection", "keep-alive");
304 | httpRequest.AddHeader("Origin", "https://www.twitch.tv");
305 | httpRequest.AddHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");
306 | httpRequest.AddHeader("Content-Type", "text/plain;charset=UTF-8");
307 | httpRequest.AddHeader("Accept", "*");
308 | httpRequest.AddHeader("Referer", "https://www.twitch.tv/");
309 | httpRequest.AddHeader("Accept-Encoding", "gzip, deflate, br");
310 | httpRequest.AddHeader("Accept-Language", "en-US,en;q=0.9");
311 |
312 | var uri = new Uri("https://passport.twitch.tv/register");
313 | var encoding = Encoding.UTF8;
314 | object[] array = new object[15];
315 | array[0] = "{\"username\":\"";
316 | array[1] = username;
317 | array[2] = "\",\"password\":\"";
318 | array[3] = password;
319 | array[4] = "\",\"email\":\"";
320 | array[5] = username;
321 | array[6] = "@jokerkard.ru\",\"birthday\":{\"day\":";
322 | array[7] = new Random().Next(1, 27);
323 | array[8] = ",\"month\":";
324 | array[9] = new Random().Next(1, 12);
325 | array[10] = ",\"year\":";
326 | array[11] = new Random().Next(1992, 2001);
327 | array[12] = "},\"client_id\":\"jzkbprff40iqj646a697cyrvl0zt2m6\",\"include_verification_code\":true,\"captcha\":{\"value\":\"";
328 | array[13] = text;
329 | array = array.ToArray();
330 | object value = "\",\"key\":\"6Lcjjl8UAAAAAMCzOHbJj-yb2MBElPKqZmlE5bbL\"}}";
331 | array.SetValue(value, 14);
332 |
333 | token = Regex.Match(httpRequest.Post(uri, new BytesContent(encoding.GetBytes(string.Concat(array)))).ToString(), "access_token\":\"(.+?)\"").Groups[1].ToString();
334 | }
335 | catch (Exception)
336 | {
337 | Interlocked.Increment(ref accountsRetries);
338 | lblCreatorRetries.Text = $"Retries: {accountsRetries}";
339 | continue;
340 | }
341 |
342 | if (string.IsNullOrEmpty(token))
343 | {
344 | Interlocked.Increment(ref accountsRetries);
345 | lblCreatorRetries.Text = $"Retries: {accountsRetries}";
346 | continue;
347 | }
348 |
349 | WriteLine(createdTokens, token);
350 | WriteLine(createdAccounts, username + ":" + password + ":" + token);
351 | Interlocked.Increment(ref accountsCreated);
352 | lblAccountsCreated.Text = $"Accounts Created: {accountsCreated}";
353 | break;
354 | }
355 | }
356 | }
357 |
358 |
359 | private bool SolveRecaptchaV2(string googleKey, string pageUrl, out string result)
360 | {
361 | string requestUrl = "http://2captcha.com/in.php?key=" + txtCreator2CaptchaKey.Text + "&method=userrecaptcha&googlekey=" + googleKey + "&pageurl=" + pageUrl;
362 |
363 | try
364 | {
365 | WebRequest req = WebRequest.Create(requestUrl);
366 |
367 | using (WebResponse resp = req.GetResponse())
368 | using (StreamReader read = new StreamReader(resp.GetResponseStream()))
369 | {
370 | string response = read.ReadToEnd();
371 |
372 | if (response.Count() < 3)
373 | {
374 | result = response;
375 | return false;
376 | }
377 | else
378 | {
379 | if (response.Substring(0, 3) == "OK|")
380 | {
381 | string captchaID = response.Remove(0, 3);
382 |
383 | for (int i = 0; i < 24; i++)
384 | {
385 | WebRequest getAnswer = WebRequest.Create("http://2captcha.com/res.php?key=" + txtCreator2CaptchaKey.Text + "&action=get&id=" + captchaID);
386 |
387 | using (WebResponse answerResp = getAnswer.GetResponse())
388 | using (StreamReader answerStream = new StreamReader(answerResp.GetResponseStream()))
389 | {
390 | string answerResponse = answerStream.ReadToEnd();
391 |
392 | if (answerResponse.Count() < 3)
393 | {
394 | result = answerResponse;
395 | return false;
396 | }
397 | else
398 | {
399 | if (answerResponse.Substring(0, 3) == "OK|")
400 | {
401 | result = answerResponse.Remove(0, 3);
402 | return true;
403 | }
404 | else if (answerResponse != "CAPCHA_NOT_READY")
405 | {
406 | result = answerResponse;
407 | return false;
408 | }
409 | }
410 | }
411 |
412 | Thread.Sleep(5000);
413 | }
414 |
415 | result = "Timeout";
416 | return false;
417 | }
418 | else
419 | {
420 | result = response;
421 | return false;
422 | }
423 | }
424 | }
425 | }
426 | catch { }
427 |
428 | result = "Unknown error";
429 | return false;
430 | }
431 |
432 | private static string GenerateCoupon(int length)
433 | {
434 | var random = new Random();
435 | const string characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
436 | var result = new StringBuilder(length);
437 | for (var i = 0; i < length; i++)
438 | {
439 | result.Append(characters[random.Next(characters.Count())]);
440 | }
441 | return result.ToString();
442 | }
443 |
444 | private void btnCreatorStop_Click(object sender, EventArgs e)
445 | {
446 | creatorTokenSource.Cancel();
447 | }
448 | #endregion
449 |
450 | #region Legacy Checker Methods
451 | private void btnLegacyLoadAccounts_Click(object sender, EventArgs e)
452 | {
453 | try
454 | {
455 | string fileName = Utilities.OpenFileDialog("Load Accounts");
456 | if (string.IsNullOrEmpty(fileName)) return;
457 | legacyCheckerAccounts = Utilities.LoadAccounts(fileName);
458 | lblLegacyAccounts.Text = $"Valid accounts: {legacyCheckerAccounts.Count()}";
459 | MessageBox.Show($"Loaded {legacyCheckerAccounts.Count()} valid accounts.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
460 | }
461 | catch (Exception ex)
462 | {
463 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
464 | }
465 | }
466 |
467 | private async void btnLegacyStart_Click(object sender, EventArgs e)
468 | {
469 | if (legacyCheckerAccounts == null || !legacyCheckerAccounts.Any())
470 | {
471 | MessageBox.Show("Upload accounts list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
472 | return;
473 | }
474 |
475 | btnLegacyLoadAccounts.Enabled = false;
476 | txtLegacyThreads.Enabled = false;
477 | btnLegacyStart.Enabled = false;
478 | btnLegacyStop.Enabled = true;
479 | lblLegacyHits.Text = "Hits: 0";
480 | legacyHits = 0;
481 | legacyChecks = 0;
482 | legacyTotal = legacyCheckerAccounts.Count();
483 | lblLegacyChecked.Text = $"Checked: 0/{legacyTotal}";
484 |
485 | Directory.CreateDirectory("Results");
486 | legacyAccounts = new StreamWriter(string.Format("Results/LC-{0:MM-dd-yy-hh-mm-ss}.txt", DateTime.Now));
487 |
488 | ThreadPool.SetMinThreads(Convert.ToInt32(txtLegacyThreads.Text), Convert.ToInt32(txtLegacyThreads.Text));
489 |
490 | legacyCheckerTokenSource = new CancellationTokenSource();
491 | CancellationToken cancellationToken = legacyCheckerTokenSource.Token;
492 |
493 | ParallelOptions parallelOptions = new ParallelOptions
494 | {
495 | MaxDegreeOfParallelism = Convert.ToInt32(txtLegacyThreads.Text),
496 | CancellationToken = cancellationToken
497 | };
498 |
499 | try
500 | {
501 | await Task.Run(() => Parallel.ForEach(legacyCheckerAccounts, parallelOptions, LegacyCheckAccount), cancellationToken);
502 | }
503 | catch (OperationCanceledException)
504 | {
505 | // ignored
506 | }
507 |
508 | legacyAccounts.Dispose();
509 |
510 | btnLegacyLoadAccounts.Enabled = true;
511 | txtLegacyThreads.Enabled = true;
512 | btnLegacyStart.Enabled = true;
513 | btnLegacyStop.Enabled = false;
514 | MessageBox.Show($"Checked {legacyChecks} accounts. The results are stored in the 'Results' directory.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
515 | }
516 |
517 | private void LegacyCheckAccount(string combo)
518 | {
519 | try
520 | {
521 | if (combo.Contains(":"))
522 | {
523 | string[] array = combo.Split(':');
524 | string username = array[0];
525 | string password = array[1];
526 | string id = GetChannel(username);
527 |
528 | StreamWriter ca;
529 |
530 | if (!string.IsNullOrEmpty(id) && int.TryParse(id, out _) == true)
531 | {
532 | ca = legacyAccounts;
533 | lock (ca)
534 | {
535 | legacyAccounts.WriteLine(username + ":" + password);
536 | }
537 |
538 | Interlocked.Increment(ref legacyHits);
539 | lblLegacyHits.Text = $"Hits: {legacyHits}";
540 | }
541 |
542 | ca = legacyAccounts;
543 | lock (ca)
544 | {
545 | legacyAccounts.Flush();
546 | }
547 | }
548 | }
549 | catch (Exception)
550 | {
551 | // ignored
552 | }
553 |
554 | Interlocked.Increment(ref legacyChecks);
555 | lblLegacyChecked.Text = $"Checked: {legacyChecks}/{legacyTotal}";
556 | }
557 |
558 | private void btnLegacyStop_Click(object sender, EventArgs e)
559 | {
560 | legacyCheckerTokenSource.Cancel();
561 | }
562 | #endregion
563 |
564 | #region Account Checker Methods
565 | private void btnAccountCheckerLoadProxies_Click(object sender, EventArgs e)
566 | {
567 | try
568 | {
569 | string fileName = Utilities.OpenFileDialog("Load Proxies");
570 | if (string.IsNullOrEmpty(fileName)) return;
571 | accountCheckerProxies = Utilities.LoadFile(fileName);
572 | lblAccountCheckerProxies.Text = $"Proxies: {accountCheckerProxies.Count()}";
573 | MessageBox.Show($"Loaded {accountCheckerProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
574 | }
575 | catch (Exception ex)
576 | {
577 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
578 | }
579 | }
580 |
581 | private void btnAccountCheckerLoadAccounts_Click(object sender, EventArgs e)
582 | {
583 | try
584 | {
585 | string fileName = Utilities.OpenFileDialog("Load Accounts");
586 | if (string.IsNullOrEmpty(fileName)) return;
587 | accountCheckerAccounts = Utilities.LoadAccounts(fileName);
588 | lblCheckerAccounts.Text = $"Valid accounts: {accountCheckerAccounts.Count()}";
589 | MessageBox.Show($"Loaded {accountCheckerAccounts.Count()} valid accounts.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
590 | }
591 | catch (Exception ex)
592 | {
593 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
594 | }
595 | }
596 |
597 | private async void btnAccountCheckerStart_Click(object sender, EventArgs e)
598 | {
599 | if (accountCheckerAccounts == null || !accountCheckerAccounts.Any())
600 | {
601 | MessageBox.Show("Upload accounts list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
602 | return;
603 | }
604 |
605 | if (accountCheckerProxies == null || !accountCheckerProxies.Any())
606 | {
607 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
608 | return;
609 | }
610 |
611 | btnAccountCheckerLoadProxies.Enabled = false;
612 | btnAccountCheckerLoadAccounts.Enabled = false;
613 | txtAccountCheckerThreads.Enabled = false;
614 | comboCheckerProxyType.Enabled = false;
615 | txtCheckerTimeout.Enabled = false;
616 | btnAccountCheckerStart.Enabled = false;
617 | btnAccountCheckerStop.Enabled = true;
618 | lblAccountCheckerGood.Text = "Hits: 0";
619 | lblAccountCheckerInvalid.Text = "Invalid: 0";
620 | lblAccountCheckerPrimes.Text = "Prime: 0";
621 | lblAccountCheckerPrimeAvailable.Text = "Primes Available: 0";
622 | lblAccountCheckerBits.Text = "Bits: 0";
623 | lblAccountCheckerRetries.Text = "Retries: 0";
624 | accountCheckerChecks = 0;
625 | accountCheckerTotal = accountCheckerAccounts.Count();
626 | accountCheckerGood = 0;
627 | accountCheckerBad = 0;
628 | accountCheckerPrimeAvailable = 0;
629 | accountCheckerOverallBits = 0;
630 | accountCheckerPrimes = 0;
631 | accountCheckerRetries = 0;
632 | lblAccountCheckerChecked.Text = $"Checked: 0/{accountCheckerTotal}";
633 |
634 | CreateDirectory3();
635 |
636 | ThreadPool.SetMinThreads(Convert.ToInt32(txtAccountCheckerThreads.Text), Convert.ToInt32(txtAccountCheckerThreads.Text));
637 |
638 | accountCheckerTokenSource = new CancellationTokenSource();
639 | CancellationToken cancellationToken = accountCheckerTokenSource.Token;
640 |
641 | ParallelOptions parallelOptions = new ParallelOptions
642 | {
643 | MaxDegreeOfParallelism = Convert.ToInt32(txtAccountCheckerThreads.Text),
644 | CancellationToken = cancellationToken
645 | };
646 |
647 | try
648 | {
649 | await Task.Run(() => Parallel.ForEach(accountCheckerAccounts, parallelOptions, CheckAccount), cancellationToken);
650 | }
651 | catch (OperationCanceledException)
652 | {
653 | // ignored
654 | }
655 |
656 | workingAccounts.Dispose();
657 | primeAccounts.Dispose();
658 | primeAvailableAccounts.Dispose();
659 | bitsAccounts.Dispose();
660 | workingTokens1.Dispose();
661 | primeTokens1.Dispose();
662 | primeAvailableTokens1.Dispose();
663 | bitsTokens1.Dispose();
664 |
665 | btnAccountCheckerLoadProxies.Enabled = true;
666 | btnAccountCheckerLoadAccounts.Enabled = true;
667 | txtAccountCheckerThreads.Enabled = true;
668 | comboCheckerProxyType.Enabled = true;
669 | txtCheckerTimeout.Enabled = true;
670 | btnAccountCheckerStart.Enabled = true;
671 | btnAccountCheckerStop.Enabled = false;
672 | MessageBox.Show($"Checked {accountCheckerChecks} accounts. The results are stored in the 'Results' directory.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
673 | }
674 |
675 | private void btnAccountCheckerStop_Click(object sender, EventArgs e)
676 | {
677 | accountCheckerTokenSource.Cancel();
678 | }
679 |
680 | private void CreateDirectory3()
681 | {
682 | string text = string.Format("Results/AC-{0:MM-dd-yy-hh-mm-ss}", DateTime.Now);
683 | Directory.CreateDirectory(text);
684 | workingAccounts = new StreamWriter(string.Format("{0}/accounts.txt", text), true)
685 | {
686 | AutoFlush = true
687 | };
688 | primeAccounts = new StreamWriter(string.Format("{0}/prime-accounts.txt", text), true)
689 | {
690 | AutoFlush = true
691 | };
692 | primeAvailableAccounts = new StreamWriter(string.Format("{0}/prime-available-accounts.txt", text), true)
693 | {
694 | AutoFlush = true
695 | };
696 | bitsAccounts = new StreamWriter(string.Format("{0}/bits-accounts.txt", text), true)
697 | {
698 | AutoFlush = true
699 | };
700 | workingTokens1 = new StreamWriter(string.Format("{0}/tokens.txt", text), true)
701 | {
702 | AutoFlush = true
703 | };
704 | primeTokens1 = new StreamWriter(string.Format("{0}/prime-tokens.txt", text), true)
705 | {
706 | AutoFlush = true
707 | };
708 | primeAvailableTokens1 = new StreamWriter(string.Format("{0}/prime-available-tokens.txt", text), true)
709 | {
710 | AutoFlush = true
711 | };
712 | bitsTokens1 = new StreamWriter(string.Format("{0}/bits-tokens.txt", text), true)
713 | {
714 | AutoFlush = true
715 | };
716 | }
717 |
718 | private void CheckAccount(string account)
719 | {
720 | string username = null;
721 | string password = null;
722 | string text = null;
723 |
724 | try
725 | {
726 | string[] array = account.Split(new char[]
727 | {
728 | ':'
729 | });
730 |
731 | username = array[0];
732 | password = array[1];
733 |
734 | text = string.Concat(new string[]
735 | {
736 | "{\"username\":\"",
737 | username,
738 | "\",\"password\":\"",
739 | password,
740 | "\",\"client_id\":\"kimne78kx3ncx6brgo4mv6wki5h1ko\"}}"
741 | });
742 | }
743 | catch (Exception)
744 | {
745 | Interlocked.Increment(ref accountCheckerBad);
746 | lblAccountCheckerInvalid.Text = $"Invalid: {accountCheckerBad}";
747 | Interlocked.Increment(ref accountCheckerChecks);
748 | lblAccountCheckerChecked.Text = $"Checked: {accountCheckerChecks}/{accountCheckerTotal}";
749 | return;
750 | }
751 |
752 | while (true)
753 | {
754 | int num = new Random().Next(accountCheckerProxies.Count());
755 | int index = num;
756 |
757 | ProxyType proxyType;
758 |
759 | switch (comboCheckerProxyType.Text)
760 | {
761 | case "HTTP":
762 | proxyType = ProxyType.HTTP;
763 | break;
764 | case "SOCKS4":
765 | proxyType = ProxyType.Socks4;
766 | break;
767 | case "SOCKS4a":
768 | proxyType = ProxyType.Socks4A;
769 | break;
770 | case "SOCKS5":
771 | proxyType = ProxyType.Socks5;
772 | break;
773 | default:
774 | proxyType = ProxyType.HTTP;
775 | break;
776 | }
777 |
778 | ProxyClient proxyClient = ProxyClient.Parse(proxyType, accountCheckerProxies[index]);
779 | proxyClient.ConnectTimeout = Convert.ToInt32(txtCheckerTimeout.Text);
780 | proxyClient.ReadWriteTimeout = Convert.ToInt32(txtCheckerTimeout.Text);
781 |
782 | string response = LoginAccount(text, proxyClient);
783 |
784 | if (!response.Contains("access_token"))
785 | {
786 | if (!response.Contains("user does not exist") && !response.Contains("user has been deleted") && !response.Contains("suspended user") && !response.Contains("user credentials incorrect") && !response.Contains("invalid username") && !response.Contains("user needs password reset") && !response.Contains("invalid password"))
787 | {
788 | Interlocked.Increment(ref accountCheckerRetries);
789 | lblAccountCheckerRetries.Text = $"Retries: {accountCheckerRetries}";
790 | continue;
791 | }
792 |
793 | Interlocked.Increment(ref accountCheckerBad);
794 | lblAccountCheckerInvalid.Text = $"Invalid: {accountCheckerBad}";
795 | }
796 | else
797 | {
798 | string value = new Regex("access_token\":\"(.+)\"").Match(response).Groups[1].Value.Replace("\",\"redirect_path\":\"https://www.twitch.tv/", "");
799 | string text1;
800 | while ((text1 = CheckToken(value, username)) == null)
801 | {
802 | }
803 | CheckAccount(account, value, text1);
804 | }
805 |
806 | Interlocked.Increment(ref accountCheckerChecks);
807 | lblAccountCheckerChecked.Text = $"Checked: {accountCheckerChecks}/{accountCheckerTotal}";
808 | break;
809 | }
810 | }
811 |
812 | private string LoginAccount(string text, ProxyClient proxyClient)
813 | {
814 | string result;
815 | using (HttpRequest httpRequest = new HttpRequest())
816 | {
817 | httpRequest.UserAgent = Http.ChromeUserAgent();
818 | httpRequest.Referer = "https://www.twitch.tv/";
819 | httpRequest.IgnoreProtocolErrors = true;
820 | httpRequest.Reconnect = false;
821 | httpRequest.Proxy = proxyClient;
822 | httpRequest.AddHeader("Origin", "https://www.twitch.tv");
823 | try
824 | {
825 | result = httpRequest.Post("https://passport.twitch.tv/login", text, "text/plain;charset=UTF-8").ToString();
826 | }
827 | catch (Exception)
828 | {
829 | result = "request error";
830 | }
831 | }
832 | return result;
833 | }
834 |
835 | private string CheckToken(string token, string username)
836 | {
837 | string result;
838 | using (HttpRequest httpRequest = new HttpRequest())
839 | {
840 | httpRequest.UserAgent = Http.RandomUserAgent();
841 | httpRequest.Referer = "https://www.twitch.tv/";
842 | httpRequest.ConnectTimeout = Convert.ToInt32(txtCheckerTimeout.Text);
843 | httpRequest.ReadWriteTimeout = Convert.ToInt32(txtCheckerTimeout.Text);
844 | httpRequest.IgnoreProtocolErrors = true;
845 | httpRequest.Reconnect = false;
846 | httpRequest.Authorization = "OAuth " + token;
847 | httpRequest.AddHeader("Pragma", "no-cache");
848 | httpRequest.AddHeader("Origin", "https://twitch.tv");
849 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
850 | string str = "[{\"operationName\":\"PrimeSubscribe_UserPrimeData\",\"variables\":{\"login\":\"" + username + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"58c25a2b0ccbde33498f3a5cf6027ff32168febd8a63b749f184028e8ab9192a\"}}},{\"operationName\":\"Inventory\",\"variables\":{},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"22c44231a1332132801f93866bdf1c985995df85e87e2dec45a24fbb66e9a03c\"}}}]";
851 | try
852 | {
853 | result = httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString();
854 | }
855 | catch (Exception)
856 | {
857 | result = "request error";
858 | }
859 | }
860 | return result;
861 | }
862 |
863 | private void CheckAccount(string account, string token, string response)
864 | {
865 | Interlocked.Increment(ref accountCheckerGood);
866 | lblAccountCheckerGood.Text = $"Hits: {accountCheckerGood}";
867 |
868 | bool isPrime = response.Contains("hasPrime\":true") && response.Contains("willRenew\":true");
869 | bool isPrimeAvailable = response.Contains("canPrimeSubscribe\":true");
870 |
871 | if (isPrimeAvailable)
872 | {
873 | WriteLine(primeAvailableAccounts, account);
874 | WriteLine(primeAvailableTokens1, token);
875 | Interlocked.Increment(ref accountCheckerPrimeAvailable);
876 | lblAccountCheckerPrimeAvailable.Text = $"Primes Available: {accountCheckerPrimeAvailable}";
877 | }
878 | else if (isPrime)
879 | {
880 | string date = new Regex("renewalDate\":(.*?),\"").Match(response).Groups[1].Value.Substring(1).Split(new char[]
881 | {
882 | 'T'
883 | })[0];
884 | string time = new Regex("renewalDate\":(.*?),\"").Match(response).Groups[1].Value.Substring(1).Split(new char[]
885 | {
886 | 'T'
887 | })[1];
888 | WriteLine(primeAccounts, account + " - " + date + " " + time.Split(':')[0] + ":" + time.Split(':')[1] + ":" + time.Split(':')[2].Replace(time.Split('.')[1], "").Replace(".", ""));
889 | WriteLine(primeTokens1, token + " - " + date + " " + time.Split(':')[0] + ":" + time.Split(':')[1] + ":" + time.Split(':')[2].Replace(time.Split('.')[1], "").Replace(".", ""));
890 | Interlocked.Increment(ref accountCheckerPrimes);
891 | lblAccountCheckerPrimes.Text = $"Primes: {accountCheckerPrimes}";
892 | }
893 | else
894 | {
895 | WriteLine(workingAccounts, account);
896 | WriteLine(workingTokens1, token);
897 | }
898 |
899 | int.TryParse(new Regex("bitsBalance\":(.*?),\"").Match(response).Groups[1].Value, out int bits);
900 |
901 | if (bits > 0)
902 | {
903 | WriteLine(bitsAccounts, string.Format("{0}: {1}", account, bits));
904 | WriteLine(bitsTokens1, string.Format("{0}:{1}", token, bits));
905 | Interlocked.Add(ref accountCheckerOverallBits, bits);
906 | lblAccountCheckerBits.Text = $"Bits: {accountCheckerOverallBits}";
907 | }
908 | }
909 | #endregion
910 |
911 | #region Token Checker Methods
912 | private void btnTokenCheckerLoadTokens_Click(object sender, EventArgs e)
913 | {
914 | try
915 | {
916 | string fileName = Utilities.OpenFileDialog("Load Tokens");
917 | if (string.IsNullOrEmpty(fileName)) return;
918 | tokenCheckerTokens = Utilities.LoadFile(fileName);
919 | lblTokenCheckerTokens.Text = $"Tokens: {tokenCheckerTokens.Count()}";
920 | MessageBox.Show($"Loaded {tokenCheckerTokens.Count()} tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
921 | }
922 | catch (Exception ex)
923 | {
924 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
925 | }
926 | }
927 |
928 | private async void btnTokenCheckerStart_Click(object sender, EventArgs e)
929 | {
930 | if (tokenCheckerTokens == null || !tokenCheckerTokens.Any())
931 | {
932 | MessageBox.Show("Upload tokens list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
933 | return;
934 | }
935 |
936 | btnTokenCheckerLoadTokens.Enabled = false;
937 | txtTokenCheckerThreads.Enabled = false;
938 | btnTokenCheckerStart.Enabled = false;
939 | btnTokenCheckerStop.Enabled = true;
940 | lblTokenCheckerGood.Text = "Hits: 0";
941 | lblTokenCheckerBad.Text = "Invalid: 0";
942 | lblTokenCheckerPrimes.Text = "Prime: 0";
943 | lblTokenCheckerPrimeAvailable.Text = "Primes Available: 0";
944 | lblTokenCheckerBits.Text = "Bits: 0";
945 | tokenCheckerChecks = 0;
946 | tokenCheckerTotal = tokenCheckerTokens.Count();
947 | tokenCheckerGood = 0;
948 | tokenCheckerBad = 0;
949 | primeAvailable = 0;
950 | overallBits = 0;
951 | primes = 0;
952 | lblTokenCheckerChecked.Text = $"Checked: 0/{tokenCheckerTotal}";
953 |
954 | CreateDirectory();
955 |
956 | ThreadPool.SetMinThreads(Convert.ToInt32(txtTokenCheckerThreads.Text), Convert.ToInt32(txtTokenCheckerThreads.Text));
957 |
958 | tokenCheckerTokenSource = new CancellationTokenSource();
959 | CancellationToken cancellationToken = tokenCheckerTokenSource.Token;
960 |
961 | ParallelOptions parallelOptions = new ParallelOptions
962 | {
963 | MaxDegreeOfParallelism = Convert.ToInt32(txtTokenCheckerThreads.Text),
964 | CancellationToken = cancellationToken
965 | };
966 |
967 | try
968 | {
969 | await Task.Run(() => Parallel.ForEach(tokenCheckerTokens, parallelOptions, delegate (string token)
970 | {
971 | if (tokenCheckerTokenSource.IsCancellationRequested)
972 | {
973 | return;
974 | }
975 |
976 | try
977 | {
978 | if (token.Contains(":"))
979 | token = token.Contains("oauth:") ? token.Split(':')[1] : token.Split(':')[0];
980 | string text;
981 | while ((text = CheckToken(token)) == "request error")
982 | {
983 | }
984 | if (string.IsNullOrEmpty(text))
985 | {
986 | Interlocked.Increment(ref tokenCheckerBad);
987 | lblTokenCheckerBad.Text = $"Invalid: {tokenCheckerBad}";
988 | Interlocked.Increment(ref tokenCheckerChecks);
989 | lblTokenCheckerChecked.Text = $"Checked: {tokenCheckerChecks}/{tokenCheckerTotal}";
990 | return;
991 | }
992 | string text2;
993 | while ((text2 = GetPrimeInfo(token, text)) == "request error")
994 | {
995 | }
996 | CheckPrimeInfo(token, text2);
997 | Interlocked.Increment(ref tokenCheckerChecks);
998 | lblTokenCheckerChecked.Text = $"Checked: {tokenCheckerChecks}/{tokenCheckerTotal}";
999 | }
1000 | catch (Exception)
1001 | {
1002 | Interlocked.Increment(ref tokenCheckerBad);
1003 | lblTokenCheckerBad.Text = $"Invalid: {tokenCheckerBad}";
1004 | Interlocked.Increment(ref tokenCheckerChecks);
1005 | lblTokenCheckerChecked.Text = $"Checked: {tokenCheckerChecks}/{tokenCheckerTotal}";
1006 | }
1007 | }), cancellationToken);
1008 | }
1009 | catch (OperationCanceledException)
1010 | {
1011 | // ignored
1012 | }
1013 |
1014 | workingTokens.Dispose();
1015 | primeTokens.Dispose();
1016 | primeAvailableTokens.Dispose();
1017 | bitsTokens.Dispose();
1018 |
1019 | btnTokenCheckerLoadTokens.Enabled = true;
1020 | txtTokenCheckerThreads.Enabled = true;
1021 | btnTokenCheckerStart.Enabled = true;
1022 | btnTokenCheckerStop.Enabled = false;
1023 | MessageBox.Show($"Checked {tokenCheckerChecks} tokens. The results are stored in the 'Results' directory.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1024 | }
1025 |
1026 | private void CreateDirectory()
1027 | {
1028 | string text = string.Format("Results/TC-{0:MM-dd-yy-hh-mm-ss}", DateTime.Now);
1029 | Directory.CreateDirectory(text);
1030 | workingTokens = new StreamWriter(string.Format("{0}/tokens.txt", text), true)
1031 | {
1032 | AutoFlush = true
1033 | };
1034 | primeTokens = new StreamWriter(string.Format("{0}/prime-tokens.txt", text), true)
1035 | {
1036 | AutoFlush = true
1037 | };
1038 | primeAvailableTokens = new StreamWriter(string.Format("{0}/prime-available-tokens.txt", text), true)
1039 | {
1040 | AutoFlush = true
1041 | };
1042 | bitsTokens = new StreamWriter(string.Format("{0}/bits-tokens.txt", text), true)
1043 | {
1044 | AutoFlush = true
1045 | };
1046 | }
1047 |
1048 | private string CheckToken(string token)
1049 | {
1050 | string result;
1051 | using (HttpRequest httpRequest = new HttpRequest())
1052 | {
1053 | httpRequest.IgnoreProtocolErrors = true;
1054 | httpRequest.KeepAlive = true;
1055 | httpRequest.AddHeader("Authorization", "OAuth " + token);
1056 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
1057 | try
1058 | {
1059 | string input = httpRequest.Post("https://gql.twitch.tv/gql", "[{\"operationName\":\"BitsCard_Bits\",\"variables\":{},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"fe1052e19ce99f10b5bd9ab63c5de15405ce87a1644527498f0fc1aadeff89f2\"}}},{\"operationName\":\"BitsCard_MainCard\",\"variables\":{\"name\":\"214062798\",\"withCheerBombEventEnabled\":false},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"88cb043070400a165104f9ce491f02f26c0b571a23b1abc03ef54025f6437848\"}}}]", "text/plain;charset=UTF-8").ToString();
1060 | result = new Regex("login\":\"(.*?)\"").Match(input).Groups[1].Value;
1061 | }
1062 | catch (Exception)
1063 | {
1064 | result = "request error";
1065 | }
1066 | }
1067 | return result;
1068 | }
1069 |
1070 | private string GetPrimeInfo(string token, string username)
1071 | {
1072 | string result;
1073 | using (HttpRequest httpRequest = new HttpRequest())
1074 | {
1075 | httpRequest.UserAgent = Http.RandomUserAgent();
1076 | httpRequest.Referer = "https://www.twitch.tv/";
1077 | httpRequest.IgnoreProtocolErrors = true;
1078 | httpRequest.Reconnect = false;
1079 | httpRequest.Authorization = "OAuth " + token;
1080 | httpRequest.AddHeader("Pragma", "no-cache");
1081 | httpRequest.AddHeader("Origin", "https://twitch.tv");
1082 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
1083 | string str = "[{\"operationName\":\"PrimeSubscribe_UserPrimeData\",\"variables\":{\"login\":\"" + username + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"58c25a2b0ccbde33498f3a5cf6027ff32168febd8a63b749f184028e8ab9192a\"}}},{\"operationName\":\"Inventory\",\"variables\":{},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"22c44231a1332132801f93866bdf1c985995df85e87e2dec45a24fbb66e9a03c\"}}}]";
1084 | try
1085 | {
1086 | result = httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString();
1087 | }
1088 | catch (Exception)
1089 | {
1090 | result = "request error";
1091 | }
1092 | }
1093 | return result;
1094 | }
1095 |
1096 | private void CheckPrimeInfo(string token, string responseString)
1097 | {
1098 | Interlocked.Increment(ref tokenCheckerGood);
1099 | lblTokenCheckerGood.Text = $"Hits: {tokenCheckerGood}";
1100 |
1101 | bool isPrime = responseString.Contains("hasPrime\":true") && responseString.Contains("willRenew\":true");
1102 | bool isPrimeAvailable = responseString.Contains("canPrimeSubscribe\":true");
1103 |
1104 | if (isPrimeAvailable)
1105 | {
1106 | WriteLine(primeAvailableTokens, token);
1107 | Interlocked.Increment(ref primeAvailable);
1108 | lblTokenCheckerPrimeAvailable.Text = $"Prime Available: {primeAvailable}";
1109 | }
1110 | else if (isPrime)
1111 | {
1112 | string date = new Regex("renewalDate\":(.*?),\"").Match(responseString).Groups[1].Value.Substring(1).Split(new char[]
1113 | {
1114 | 'T'
1115 | })[0];
1116 | string time = new Regex("renewalDate\":(.*?),\"").Match(responseString).Groups[1].Value.Substring(1).Split(new char[]
1117 | {
1118 | 'T'
1119 | })[1];
1120 | WriteLine(primeTokens, token + ":" + date + " " + time.Split(':')[0] + ":" + time.Split(':')[1] + ":" + time.Split(':')[2].Replace(time.Split('.')[1], "").Replace(".", ""));
1121 | Interlocked.Increment(ref primes);
1122 | lblTokenCheckerPrimes.Text = $"Primes: {primes}";
1123 | }
1124 | else
1125 | {
1126 | WriteLine(workingTokens, token);
1127 | }
1128 |
1129 | int.TryParse(new Regex("bitsBalance\":(.*?),\"").Match(responseString).Groups[1].Value, out int bits);
1130 |
1131 | if (bits > 0)
1132 | {
1133 | WriteLine(bitsTokens, string.Format("{0}:{1}", token, bits));
1134 | Interlocked.Add(ref overallBits, bits);
1135 | lblTokenCheckerBits.Text = $"Bits: {overallBits}";
1136 | }
1137 | }
1138 |
1139 | private void btnTokenCheckerStop_Click(object sender, EventArgs e)
1140 | {
1141 | tokenCheckerTokenSource.Cancel();
1142 | }
1143 | #endregion
1144 |
1145 | #region Live View Bot Methods
1146 | private void btnViewLoadProxies_Click(object sender, EventArgs e)
1147 | {
1148 | try
1149 | {
1150 | string fileName = Utilities.OpenFileDialog("Load Proxies");
1151 | if (string.IsNullOrEmpty(fileName)) return;
1152 | viewProxies = Utilities.LoadFile(fileName);
1153 | lblViewBotProxies.Text = $"Proxies: {viewProxies.Count()}";
1154 | MessageBox.Show($"Loaded {viewProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1155 | }
1156 | catch (Exception ex)
1157 | {
1158 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1159 | }
1160 | }
1161 |
1162 | private async void btnViewStart_Click(object sender, EventArgs e)
1163 | {
1164 | if (viewProxies == null || !viewProxies.Any())
1165 | {
1166 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1167 | return;
1168 | }
1169 |
1170 | txtViewChannel.Text = txtViewChannel.Text.ToLower();
1171 | txtViewChannel.Enabled = false;
1172 | txtViewThreads.Enabled = false;
1173 | comboViewProxyType.Enabled = false;
1174 | btnViewLoadProxies.Enabled = false;
1175 | txtViewTimeout.Enabled = false;
1176 | viewRequests = 0;
1177 | viewRequestsFailed = 0;
1178 | lblViewRequests.Text = "Requests Sent: 0";
1179 | lblViewRequestsFailed.Text = "Requests Failed: 0";
1180 | btnViewStart.Enabled = false;
1181 | btnViewStop.Enabled = true;
1182 |
1183 | ThreadPool.SetMinThreads(Convert.ToInt32(txtViewThreads.Text), Convert.ToInt32(txtViewThreads.Text));
1184 |
1185 | viewTokenSource = new CancellationTokenSource();
1186 | CancellationToken token = viewTokenSource.Token;
1187 |
1188 | ParallelOptions parallelOptions = new ParallelOptions
1189 | {
1190 | MaxDegreeOfParallelism = Convert.ToInt32(txtViewThreads.Text),
1191 | CancellationToken = token
1192 | };
1193 |
1194 | try
1195 | {
1196 | await Task.Run(() => Parallel.For(0, Convert.ToInt32(txtViewThreads.Text), parallelOptions, ViewThread), token);
1197 | }
1198 | catch (OperationCanceledException)
1199 | {
1200 | // ignored
1201 | }
1202 |
1203 | txtViewChannel.Enabled = true;
1204 | txtViewThreads.Enabled = true;
1205 | comboViewProxyType.Enabled = true;
1206 | btnViewLoadProxies.Enabled = true;
1207 | txtViewTimeout.Enabled = true;
1208 | btnViewStart.Enabled = true;
1209 | btnViewStop.Enabled = false;
1210 | MessageBox.Show($"Sent {viewRequests} requests to {txtViewChannel.Text}.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1211 | }
1212 |
1213 | private void ViewThread(int i)
1214 | {
1215 | while (!viewTokenSource.IsCancellationRequested)
1216 | {
1217 | try
1218 | {
1219 | HttpRequest httpRequest = new HttpRequest();
1220 | httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36";
1221 | httpRequest.EnableEncodingContent = false;
1222 | httpRequest.AddHeader(HttpHeader.Accept, "application/vnd.twitchtv.v5+json; charset=UTF-8");
1223 | httpRequest.AddHeader(HttpHeader.AcceptLanguage, "en-us");
1224 | httpRequest.AddHeader(HttpHeader.ContentType, "application/json; charset=UTF-8");
1225 | httpRequest.AddHeader(HttpHeader.Referer, "https://www.twitch.tv/" + txtViewChannel.Text);
1226 | httpRequest.AddHeader("Sec-Fetch-Mode", "cors");
1227 | httpRequest.AddHeader("X-Requested-With", "XMLHttpRequest");
1228 | httpRequest.AddHeader("Client-ID", "jzkbprff40iqj646a697cyrvl0zt2m6");
1229 | string self = httpRequest.Get("https://api.twitch.tv/api/channels/" + txtViewChannel.Text + "/access_token?oauth_token=undefined&need_https=true&platform=web&player_type=site&player_backend=mediaplayer", null).ToString();
1230 | string text = self.Substring("token\":\"", "\",\"sig", 0, StringComparison.Ordinal, null).Replace("\\", "").Replace("u0026", "\\u0026").Replace("+", "%2B").Replace(":", "%3A").Replace(",", "%2C").Replace("[", "%5B").Replace("]", "%5D").Replace("'", "%27");
1231 | string text2 = self.Substring("sig\":\"", "\",\"mobile", 0, StringComparison.Ordinal, null);
1232 | while (!viewTokenSource.IsCancellationRequested)
1233 | {
1234 | httpRequest.AddHeader(HttpHeader.Accept, "application/x-mpegURL, application/vnd.apple.mpegurl, application/json, text/plain");
1235 | httpRequest.AddHeader("Sec-Fetch-Mode", "cors");
1236 | string address = "https://" + httpRequest.Get(string.Concat(new string[]
1237 | {
1238 | "https://usher.ttvnw.net/api/channel/hls/",
1239 | txtViewChannel.Text,
1240 | ".m3u8?sig=",
1241 | text2,
1242 | "&token=",
1243 | text
1244 | }), null).ToString().Substring("https://", ".m3u8", 0, StringComparison.Ordinal, null) + ".m3u8";
1245 |
1246 | ProxyType proxyType;
1247 |
1248 | switch (comboViewProxyType.Text)
1249 | {
1250 | case "HTTP":
1251 | proxyType = ProxyType.HTTP;
1252 | break;
1253 | case "SOCKS4":
1254 | proxyType = ProxyType.Socks4;
1255 | break;
1256 | case "SOCKS4a":
1257 | proxyType = ProxyType.Socks4A;
1258 | break;
1259 | case "SOCKS5":
1260 | proxyType = ProxyType.Socks5;
1261 | break;
1262 | default:
1263 | proxyType = ProxyType.HTTP;
1264 | break;
1265 | }
1266 |
1267 | httpRequest.Proxy = ProxyClient.Parse(proxyType, viewProxies[new Random().Next(viewProxies.Count())]);
1268 | httpRequest.ConnectTimeout = Convert.ToInt32(txtViewTimeout.Text);
1269 | httpRequest.ReadWriteTimeout = Convert.ToInt32(txtViewTimeout.Text);
1270 | httpRequest.AddHeader(HttpHeader.Accept,
1271 | "application/x-mpegURL, application/vnd.apple.mpegurl, application/json, text/plain");
1272 | httpRequest.AddHeader("Sec-Fetch-Mode", "cors");
1273 | httpRequest.EnableEncodingContent = false;
1274 | httpRequest.Raw(HttpMethod.HEAD, address, null);
1275 | Interlocked.Increment(ref viewRequests);
1276 | lblViewRequests.Text = $"Requests Sent: {viewRequests}";
1277 | Thread.Sleep(5);
1278 | }
1279 | }
1280 | catch (Exception)
1281 | {
1282 | Interlocked.Increment(ref viewRequestsFailed);
1283 | lblViewRequestsFailed.Text = $"Requests Failed: {viewRequestsFailed}";
1284 | }
1285 | }
1286 | }
1287 |
1288 | private void btnViewStop_Click(object sender, EventArgs e)
1289 | {
1290 | viewTokenSource.Cancel();
1291 | }
1292 | #endregion
1293 |
1294 | #region Channel View Bot Methods
1295 | private void btnChannelLoadProxies_Click(object sender, EventArgs e)
1296 | {
1297 | try
1298 | {
1299 | string fileName = Utilities.OpenFileDialog("Load Proxies");
1300 | if (string.IsNullOrEmpty(fileName)) return;
1301 | channelViewProxies = Utilities.LoadFile(fileName);
1302 | lblChannelProxies.Text = $"Proxies: {channelViewProxies.Count()}";
1303 | MessageBox.Show($"Loaded {channelViewProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1304 | }
1305 | catch (Exception ex)
1306 | {
1307 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1308 | }
1309 | }
1310 |
1311 | private string channelViewId;
1312 |
1313 | private async void btnChannelStart_Click(object sender, EventArgs e)
1314 | {
1315 | if (txtChannel.Text == "")
1316 | {
1317 | MessageBox.Show("Please enter a channel name.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1318 | return;
1319 | }
1320 |
1321 | if (channelViewProxies == null || !channelViewProxies.Any())
1322 | {
1323 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1324 | return;
1325 | }
1326 |
1327 | channelViewId = GetChannel(txtChannel.Text);
1328 |
1329 | if (string.IsNullOrEmpty(channelViewId))
1330 | {
1331 | MessageBox.Show("The streamer doesn't exist or an error occured.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1332 | return;
1333 | }
1334 |
1335 | txtChannel.Enabled = false;
1336 | btnChannelLoadProxies.Enabled = false;
1337 | txtChannelThreads.Enabled = false;
1338 | comboChannelType.Enabled = false;
1339 | txtChannelTimeout.Enabled = false;
1340 | btnChannelStart.Enabled = false;
1341 | btnChannelStop.Enabled = true;
1342 | lblChannelRequests.Text = "Requests Sent: 0";
1343 | lblChannelFailedRequests.Text = "Requests Failed: 0";
1344 | channelRequests = 0;
1345 | failChannelRequests = 0;
1346 |
1347 | ThreadPool.SetMinThreads(Convert.ToInt32(txtChannelThreads.Text), Convert.ToInt32(txtChannelThreads.Text));
1348 |
1349 | channelTokenSource = new CancellationTokenSource();
1350 | CancellationToken token = channelTokenSource.Token;
1351 |
1352 | ParallelOptions parallelOptions = new ParallelOptions
1353 | {
1354 | MaxDegreeOfParallelism = Convert.ToInt32(txtChannelThreads.Text),
1355 | CancellationToken = token
1356 | };
1357 |
1358 | try
1359 | {
1360 | await Task.Run(() => Parallel.For(0, Convert.ToInt32(txtChannelThreads.Text), parallelOptions, ChannelViewThread), token);
1361 | }
1362 | catch (OperationCanceledException)
1363 | {
1364 | // ignored
1365 | }
1366 |
1367 | txtChannel.Enabled = true;
1368 | btnChannelLoadProxies.Enabled = true;
1369 | txtChannelThreads.Enabled = true;
1370 | comboChannelType.Enabled = true;
1371 | txtChannelTimeout.Enabled = true;
1372 | btnChannelStart.Enabled = true;
1373 | btnChannelStop.Enabled = false;
1374 | MessageBox.Show($"Sent {channelRequests} requests to {txtChannel.Text}", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1375 | }
1376 |
1377 | private void ChannelViewThread(int i)
1378 | {
1379 | string url = "http://countess.twitch.tv/ping.gif?u=%7B%22type%22%3A%22channel%22%2C%22id%22%3A" + channelViewId + "%7D";
1380 | var proxy = channelViewProxies[new Random().Next(channelViewProxies.Count())];
1381 |
1382 | while (!channelTokenSource.IsCancellationRequested)
1383 | {
1384 | try
1385 | {
1386 | HttpRequest request = new HttpRequest();
1387 |
1388 | ProxyType proxyType;
1389 |
1390 | switch (comboChannelType.Text)
1391 | {
1392 | case "HTTP":
1393 | proxyType = ProxyType.HTTP;
1394 | break;
1395 | case "SOCKS4":
1396 | proxyType = ProxyType.Socks4;
1397 | break;
1398 | case "SOCKS4a":
1399 | proxyType = ProxyType.Socks4A;
1400 | break;
1401 | case "SOCKS5":
1402 | proxyType = ProxyType.Socks5;
1403 | break;
1404 | default:
1405 | proxyType = ProxyType.HTTP;
1406 | break;
1407 | }
1408 |
1409 | request.Proxy = ProxyClient.Parse(proxyType, proxy);
1410 | request.UserAgent = Http.RandomUserAgent();
1411 | request.ConnectTimeout = Convert.ToInt32(txtChannelTimeout.Text);
1412 | request.ReadWriteTimeout = Convert.ToInt32(txtChannelTimeout.Text);
1413 | string TotalViewResponse = request.Get(url).ToString();
1414 | Interlocked.Increment(ref channelRequests);
1415 | lblChannelRequests.Text = $"Requests Sent: {channelRequests}";
1416 | }
1417 | catch (Exception)
1418 | {
1419 | Interlocked.Increment(ref failChannelRequests);
1420 | lblChannelFailedRequests.Text = $"Requests Failed: {failChannelRequests}";
1421 | }
1422 | }
1423 | }
1424 |
1425 | private void btnChannelStop_Click(object sender, EventArgs e)
1426 | {
1427 | channelTokenSource.Cancel();
1428 | }
1429 | #endregion
1430 |
1431 | #region VOD Views Bot Methods
1432 | private void btnVODLoadProxies_Click(object sender, EventArgs e)
1433 | {
1434 | try
1435 | {
1436 | string fileName = Utilities.OpenFileDialog("Load Proxies");
1437 | if (string.IsNullOrEmpty(fileName)) return;
1438 | vodViewProxies = Utilities.LoadFile(fileName);
1439 | lblVODProxies.Text = $"Proxies: {vodViewProxies.Count()}";
1440 | MessageBox.Show($"Loaded {vodViewProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1441 | }
1442 | catch (Exception ex)
1443 | {
1444 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1445 | }
1446 | }
1447 |
1448 | int vodChannelId;
1449 |
1450 | private async void btnVODStart_Click(object sender, EventArgs e)
1451 | {
1452 | if (txtVODID.Text == "")
1453 | {
1454 | MessageBox.Show("Please enter a video ID.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1455 | return;
1456 | }
1457 |
1458 | if (vodViewProxies == null || !vodViewProxies.Any())
1459 | {
1460 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1461 | return;
1462 | }
1463 |
1464 | vodChannelId = Convert.ToInt32(txtVODID.Text);
1465 |
1466 | txtVODID.Enabled = false;
1467 | btnVODLoadProxies.Enabled = false;
1468 | txtVODThreads.Enabled = false;
1469 | comboVODType.Enabled = false;
1470 | txtVODTimeout.Enabled = false;
1471 | btnVODStart.Enabled = false;
1472 | btnVODStop.Enabled = true;
1473 | lblVODRequests.Text = "Requests Sent: 0";
1474 | lblVODRequestsFailed.Text = "Requests Failed: 0";
1475 | vodRequests = 0;
1476 | failVodRequests = 0;
1477 |
1478 | ThreadPool.SetMinThreads(Convert.ToInt32(txtVODThreads.Text), Convert.ToInt32(txtVODThreads.Text));
1479 |
1480 | vodTokenSource = new CancellationTokenSource();
1481 | CancellationToken token = vodTokenSource.Token;
1482 |
1483 | ParallelOptions parallelOptions = new ParallelOptions
1484 | {
1485 | MaxDegreeOfParallelism = Convert.ToInt32(txtVODThreads.Text),
1486 | CancellationToken = token
1487 | };
1488 |
1489 | try
1490 | {
1491 | await Task.Run(() => Parallel.For(0, Convert.ToInt32(txtVODThreads.Text), parallelOptions, VodViewThread), token);
1492 | }
1493 | catch (OperationCanceledException)
1494 | {
1495 | // ignored
1496 | }
1497 |
1498 | txtVODID.Enabled = true;
1499 | btnVODLoadProxies.Enabled = true;
1500 | txtVODThreads.Enabled = true;
1501 | comboVODType.Enabled = true;
1502 | txtVODTimeout.Enabled = true;
1503 | btnVODStart.Enabled = true;
1504 | btnVODStop.Enabled = false;
1505 | MessageBox.Show($"Sent {vodRequests} requests to {txtVODID.Text}", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1506 | }
1507 |
1508 | private void VodViewThread(int i)
1509 | {
1510 | string url = "https://countess.twitch.tv/ping.gif?u=%7B%22type%22%3A%22vod%22%2C%22id%22%3A%22" + vodChannelId + "%22%7D";
1511 | var proxy = vodViewProxies[new Random().Next(vodViewProxies.Count())];
1512 |
1513 | while (!vodTokenSource.IsCancellationRequested)
1514 | {
1515 | try
1516 | {
1517 | HttpRequest request = new HttpRequest();
1518 |
1519 | ProxyType proxyType;
1520 |
1521 | switch (comboVODType.Text)
1522 | {
1523 | case "HTTP":
1524 | proxyType = ProxyType.HTTP;
1525 | break;
1526 | case "SOCKS4":
1527 | proxyType = ProxyType.Socks4;
1528 | break;
1529 | case "SOCKS4a":
1530 | proxyType = ProxyType.Socks4A;
1531 | break;
1532 | case "SOCKS5":
1533 | proxyType = ProxyType.Socks5;
1534 | break;
1535 | default:
1536 | proxyType = ProxyType.HTTP;
1537 | break;
1538 | }
1539 |
1540 | request.Proxy = ProxyClient.Parse(proxyType, proxy);
1541 | request.UserAgent = Http.RandomUserAgent();
1542 | request.ConnectTimeout = Convert.ToInt32(txtVODTimeout.Text);
1543 | request.ReadWriteTimeout = Convert.ToInt32(txtVODTimeout.Text);
1544 | string TotalViewResponse = request.Get(url).ToString();
1545 | Interlocked.Increment(ref vodRequests);
1546 | lblVODRequests.Text = $"Requests Sent: {vodRequests}";
1547 | }
1548 | catch (Exception)
1549 | {
1550 | Interlocked.Increment(ref failVodRequests);
1551 | lblVODRequestsFailed.Text = $"Requests Failed: {failVodRequests}";
1552 | }
1553 | }
1554 | }
1555 |
1556 | private void btnVODStop_Click(object sender, EventArgs e)
1557 | {
1558 | vodTokenSource.Cancel();
1559 | }
1560 | #endregion
1561 |
1562 | #region Follow Bot Methods
1563 | private void chkFollowUseProxies_CheckedChanged(object sender, EventArgs e)
1564 | {
1565 | btnFollowLoadProxies.Enabled = chkFollowUseProxies.Checked;
1566 | txtFollowTimeout.Enabled = chkFollowUseProxies.Checked;
1567 | }
1568 |
1569 | private void btnFollowLoadProxies_Click(object sender, EventArgs e)
1570 | {
1571 | try
1572 | {
1573 | string fileName = Utilities.OpenFileDialog("Load Proxies");
1574 | if (string.IsNullOrEmpty(fileName)) return;
1575 | followProxies = Utilities.LoadFile(fileName);
1576 | lblFollowProxies.Text = $"Proxies: {followProxies.Count()}";
1577 | MessageBox.Show($"Loaded {followProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1578 | }
1579 | catch (Exception ex)
1580 | {
1581 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1582 | }
1583 | }
1584 |
1585 | private void btnFollowLoadTokens_Click(object sender, EventArgs e)
1586 | {
1587 | try
1588 | {
1589 | string fileName = Utilities.OpenFileDialog("Load Tokens");
1590 | if (string.IsNullOrEmpty(fileName)) return;
1591 | followTokens = Utilities.LoadFile(fileName);
1592 | lblFollowTokens.Text = $"Tokens: {followTokens.Count()}";
1593 | MessageBox.Show($"Loaded {followTokens.Count()} tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1594 | }
1595 | catch (Exception ex)
1596 | {
1597 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1598 | }
1599 | }
1600 |
1601 | private bool follow;
1602 |
1603 | private async void btnFollowStart_Click(object sender, EventArgs e)
1604 | {
1605 | if (txtFollowChannel.Text == "")
1606 | {
1607 | MessageBox.Show("Please enter a channel name.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1608 | return;
1609 | }
1610 |
1611 | if (chkFollowUseProxies.Checked && (followProxies == null || !followProxies.Any()))
1612 | {
1613 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1614 | return;
1615 | }
1616 |
1617 | if (followTokens == null || !followTokens.Any())
1618 | {
1619 | MessageBox.Show("Upload tokens list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1620 | return;
1621 | }
1622 |
1623 | if (Convert.ToInt32(txtFollowAmount.Text) > followTokens.Count())
1624 | {
1625 | MessageBox.Show("The follow amount cannot be greater than the amount of tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1626 | return;
1627 | }
1628 |
1629 | followChannelId = GetChannel(txtFollowChannel.Text);
1630 |
1631 | if (string.IsNullOrEmpty(followChannelId))
1632 | {
1633 | MessageBox.Show("The streamer doesn't exist or an error occured.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1634 | return;
1635 | }
1636 |
1637 | follow = radioFollow.Checked;
1638 |
1639 | radioFollow.Enabled = false;
1640 | radioUnfollow.Enabled = false;
1641 | btnFollowLoadTokens.Enabled = false;
1642 | txtFollowChannel.Enabled = false;
1643 | txtFollowAmount.Enabled = false;
1644 | txtFollowThreads.Enabled = false;
1645 | btnFollowLoadProxies.Enabled = false;
1646 | comboFollowProxyType.Enabled = false;
1647 | txtFollowTimeout.Enabled = false;
1648 | btnFollowStart.Enabled = false;
1649 | btnFollowStop.Enabled = true;
1650 | lblFollowSent.Text = "Follows Sent: 0";
1651 | lblFollowRemoved.Text = "Follows Removed: 0";
1652 | lblFollowFail.Text = "Failed: 0";
1653 | followSent = 0;
1654 | followRemoved = 0;
1655 | followFailed = 0;
1656 |
1657 | ThreadPool.SetMinThreads(Convert.ToInt32(txtFollowThreads.Text), Convert.ToInt32(txtFollowThreads.Text));
1658 |
1659 | followTokenSource = new CancellationTokenSource();
1660 | CancellationToken token = followTokenSource.Token;
1661 |
1662 | ParallelOptions parallelOptions = new ParallelOptions
1663 | {
1664 | MaxDegreeOfParallelism = Convert.ToInt32(txtFollowThreads.Text),
1665 | CancellationToken = token
1666 | };
1667 |
1668 | try
1669 | {
1670 | await Task.Run(() => Parallel.ForEach(followTokens.Take(Convert.ToInt32(txtFollowAmount.Text)), parallelOptions, FollowThread), token);
1671 | }
1672 | catch (OperationCanceledException)
1673 | {
1674 | // ignored
1675 | }
1676 |
1677 | radioFollow.Enabled = true;
1678 | radioUnfollow.Enabled = true;
1679 | btnFollowLoadTokens.Enabled = true;
1680 | txtFollowChannel.Enabled = true;
1681 | txtFollowAmount.Enabled = true;
1682 | txtFollowThreads.Enabled = true;
1683 | btnFollowLoadProxies.Enabled = true;
1684 | comboFollowProxyType.Enabled = true;
1685 | txtFollowTimeout.Enabled = true;
1686 | btnFollowStart.Enabled = true;
1687 | btnFollowStop.Enabled = false;
1688 |
1689 | if (follow)
1690 | MessageBox.Show($"Sent {followSent} follows to {txtFollowChannel.Text}", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1691 | else
1692 | MessageBox.Show($"Removed {followRemoved} follows from {txtFollowChannel.Text}", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1693 | }
1694 |
1695 | private void FollowThread(string token)
1696 | {
1697 | if (followTokenSource.IsCancellationRequested)
1698 | {
1699 | return;
1700 | }
1701 |
1702 | try
1703 | {
1704 | if (token.Contains(":"))
1705 | token = token.Contains("oauth:") ? token.Split(':')[1] : token.Split(':')[0];
1706 | string userId = CheckToken1(token);
1707 | string text;
1708 | while ((text = FollowChannel(token)) == "request error")
1709 | {
1710 | }
1711 | if (follow)
1712 | {
1713 | if (!text.Contains("id\":\"" + followChannelId + "\",\"displayName\":"))
1714 | {
1715 | Interlocked.Increment(ref followFailed);
1716 | lblFollowFail.Text = $"Failed: {followFailed}";
1717 | }
1718 | else
1719 | {
1720 | Interlocked.Increment(ref followSent);
1721 | lblFollowSent.Text = $"Follows Sent: {followSent}";
1722 | }
1723 | }
1724 | else
1725 | {
1726 | if (!text.Contains("[{\"data\":{\"unfollowUser\":{\"follow\""))
1727 | {
1728 | Interlocked.Increment(ref followFailed);
1729 | lblFollowFail.Text = $"Failed: {followFailed}";
1730 | }
1731 | else
1732 | {
1733 | Interlocked.Increment(ref followRemoved);
1734 | lblFollowRemoved.Text = $"Follows Removed: {followRemoved}";
1735 | }
1736 | }
1737 | }
1738 | catch (Exception)
1739 | {
1740 | Interlocked.Increment(ref followFailed);
1741 | lblFollowFail.Text = $"Failed: {followFailed}";
1742 | }
1743 |
1744 | Thread.Sleep(Convert.ToInt32(txtFollowDelay.Text));
1745 | }
1746 |
1747 | private string FollowChannel(string token)
1748 | {
1749 | string result;
1750 | using (HttpRequest httpRequest = new HttpRequest())
1751 | {
1752 | try
1753 | {
1754 | if (chkFollowUseProxies.Checked)
1755 | {
1756 | ProxyType proxyType;
1757 |
1758 | switch (comboFollowProxyType.Text)
1759 | {
1760 | case "HTTP":
1761 | proxyType = ProxyType.HTTP;
1762 | break;
1763 | case "SOCKS4":
1764 | proxyType = ProxyType.Socks4;
1765 | break;
1766 | case "SOCKS4a":
1767 | proxyType = ProxyType.Socks4A;
1768 | break;
1769 | case "SOCKS5":
1770 | proxyType = ProxyType.Socks5;
1771 | break;
1772 | default:
1773 | proxyType = ProxyType.HTTP;
1774 | break;
1775 | }
1776 |
1777 | int index = new Random().Next(followProxies.Count());
1778 | ProxyClient proxyClient = ProxyClient.Parse(proxyType, followProxies[index]);
1779 | proxyClient.ReadWriteTimeout = Convert.ToInt32(txtFollowTimeout.Text);
1780 | proxyClient.ConnectTimeout = Convert.ToInt32(txtFollowTimeout.Text);
1781 | httpRequest.Proxy = proxyClient;
1782 | }
1783 |
1784 | httpRequest.UserAgent = Http.RandomUserAgent();
1785 | httpRequest.Referer = "https://www.twitch.tv/";
1786 | httpRequest.IgnoreProtocolErrors = true;
1787 | httpRequest.Reconnect = false;
1788 | httpRequest.Authorization = "OAuth " + token;
1789 | httpRequest.AddHeader("Pragma", "no-cache");
1790 | httpRequest.AddHeader("Origin", "https://twitch.tv");
1791 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
1792 | string str;
1793 | if (follow)
1794 | str = "[{\"operationName\":\"FollowButton_FollowUser\",\"variables\":{\"input\":{\"disableNotifications\":false,\"targetID\":\"" + followChannelId + "\"}},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"51956f0c469f54e60211ea4e6a34b597d45c1c37b9664d4b62096a1ac03be9e6\"}}}]";
1795 | else
1796 | str = "[{\"operationName\":\"FollowButton_UnfollowUser\",\"variables\":{\"input\":{\"targetID\":\"" + followChannelId + "\"}},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"d7fbdb4e9780dcdc0cc1618ec783309471cd05a59584fc3c56ea1c52bb632d41\"}}}]";
1797 | result = httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString();
1798 | }
1799 | catch (Exception)
1800 | {
1801 | result = "request error";
1802 | }
1803 | }
1804 | return result;
1805 | }
1806 |
1807 | private void btnFollowStop_Click(object sender, EventArgs e)
1808 | {
1809 | followTokenSource.Cancel();
1810 | }
1811 | #endregion
1812 |
1813 | #region Chat Bot Methods
1814 | private void chkChatUseProxies_CheckedChanged(object sender, EventArgs e)
1815 | {
1816 | btnChatLoadProxies.Enabled = chkChatUseProxies.Checked;
1817 | txtChatTimeout.Enabled = chkChatUseProxies.Checked;
1818 | }
1819 |
1820 | private void btnChatLoadProxies_Click(object sender, EventArgs e)
1821 | {
1822 | try
1823 | {
1824 | string fileName = Utilities.OpenFileDialog("Load Proxies");
1825 | if (string.IsNullOrEmpty(fileName)) return;
1826 | chatProxies = Utilities.LoadFile(fileName);
1827 | lblChatProxies.Text = $"Proxies: {chatProxies.Count()}";
1828 | MessageBox.Show($"Loaded {chatProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1829 | }
1830 | catch (Exception ex)
1831 | {
1832 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1833 | }
1834 | }
1835 |
1836 | private void btnChatLoadTokens_Click(object sender, EventArgs e)
1837 | {
1838 | try
1839 | {
1840 | string fileName = Utilities.OpenFileDialog("Load Tokens");
1841 | if (string.IsNullOrEmpty(fileName)) return;
1842 | chatTokens = Utilities.LoadFile(fileName);
1843 | lblChatTokens.Text = $"Tokens: {chatTokens.Count()}";
1844 | MessageBox.Show($"Loaded {chatTokens.Count()} tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1845 | }
1846 | catch (Exception ex)
1847 | {
1848 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
1849 | }
1850 | }
1851 |
1852 | private void btnLoadMessages_Click(object sender, EventArgs e)
1853 | {
1854 | string fileName = Utilities.OpenFileDialog("Load Messages");
1855 | if (string.IsNullOrEmpty(fileName)) return;
1856 | messages = Utilities.LoadFile(fileName);
1857 | lblMessages.Text = $"Messages: {messages.Count()}";
1858 | MessageBox.Show($"Loaded {messages.Count()} messages.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1859 | }
1860 |
1861 | private async void btnChatStart_Click(object sender, EventArgs e)
1862 | {
1863 | if (chkChatUseProxies.Checked && (chatProxies == null || !chatProxies.Any()))
1864 | {
1865 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1866 | return;
1867 | }
1868 |
1869 | if (chatTokens == null || !chatTokens.Any())
1870 | {
1871 | MessageBox.Show("Upload tokens list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1872 | return;
1873 | }
1874 |
1875 | if (messages == null || !messages.Any())
1876 | {
1877 | MessageBox.Show("Upload messages list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
1878 | return;
1879 | }
1880 |
1881 | comboChatProxyType.Enabled = false;
1882 | txtChatTimeout.Enabled = false;
1883 | txtChatChannel.Enabled = false;
1884 | txtChatBots.Enabled = false;
1885 | txtChatDelay.Enabled = false;
1886 | btnChatLoadProxies.Enabled = false;
1887 | btnChatLoadTokens.Enabled = false;
1888 | btnLoadMessages.Enabled = false;
1889 | chkChatUseProxies.Enabled = false;
1890 | btnChatStart.Enabled = false;
1891 | btnChatStop.Enabled = true;
1892 | messagesSuccess = 0;
1893 | messagesFail = 0;
1894 | lblSuccess.Text = "Success: 0";
1895 | lblMessagesFail.Text = "Fail: 0";
1896 |
1897 | t = (int)Math.Ceiling(chatTokens.Count() / Convert.ToDouble(txtChatBots.Text));
1898 |
1899 | ThreadPool.SetMinThreads(Convert.ToInt32(txtChatBots.Text), Convert.ToInt32(txtChatBots.Text));
1900 |
1901 | chatTokenSource = new CancellationTokenSource();
1902 | CancellationToken cancellationToken = chatTokenSource.Token;
1903 |
1904 | ParallelOptions parallelOptions = new ParallelOptions
1905 | {
1906 | MaxDegreeOfParallelism = Convert.ToInt32(txtChatBots.Text),
1907 | CancellationToken = cancellationToken
1908 | };
1909 |
1910 | try
1911 | {
1912 | await Task.Run(() => Parallel.For(0, Convert.ToInt32(txtChatBots.Text), parallelOptions, ChatBot), cancellationToken);
1913 | }
1914 | catch (OperationCanceledException)
1915 | {
1916 | // ignored
1917 | }
1918 |
1919 | comboChatProxyType.Enabled = true;
1920 | txtChatTimeout.Enabled = true;
1921 | btnLoadMessages.Enabled = true;
1922 | btnChatLoadProxies.Enabled = true;
1923 | btnChatLoadTokens.Enabled = true;
1924 | txtChatDelay.Enabled = true;
1925 | txtChatChannel.Enabled = true;
1926 | txtChatBots.Enabled = true;
1927 | chkChatUseProxies.Enabled = true;
1928 | btnChatStart.Enabled = true;
1929 | btnChatStop.Enabled = false;
1930 | MessageBox.Show($"Sent {messagesSuccess} messages.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
1931 | }
1932 |
1933 | private async void ChatBot(int bots)
1934 | {
1935 | if (chatTokenSource.IsCancellationRequested)
1936 | {
1937 | return;
1938 | }
1939 |
1940 | int num = t * bots;
1941 | int num2 = Math.Min(chatTokens.Count() - num, t);
1942 |
1943 | if (num2 >= 1)
1944 | {
1945 | List range = chatTokens.ToList().GetRange(num, num2);
1946 |
1947 | while (true)
1948 | {
1949 | Random random = new Random();
1950 | string str = range[random.Next(range.Count)];
1951 | if (str.Contains(":"))
1952 | str = str.Contains("oauth:") ? str.Split(':')[1] : str.Split(':')[0];
1953 | string str2 = messages[random.Next(messages.Count())];
1954 |
1955 | if (chkChatUseProxies.Checked)
1956 | {
1957 | try
1958 | {
1959 | ProxyType proxyType;
1960 |
1961 | switch (comboChatProxyType.Text)
1962 | {
1963 | case "HTTP":
1964 | proxyType = ProxyType.HTTP;
1965 | break;
1966 | case "SOCKS4":
1967 | proxyType = ProxyType.Socks4;
1968 | break;
1969 | case "SOCKS4a":
1970 | proxyType = ProxyType.Socks4A;
1971 | break;
1972 | case "SOCKS5":
1973 | proxyType = ProxyType.Socks5;
1974 | break;
1975 | default:
1976 | proxyType = ProxyType.HTTP;
1977 | break;
1978 | }
1979 |
1980 | int index = new Random().Next(chatProxies.Count());
1981 | ProxyClient proxyClient = ProxyClient.Parse(proxyType, chatProxies[index]);
1982 | proxyClient.ReadWriteTimeout = Convert.ToInt32(txtChatTimeout.Text);
1983 | proxyClient.ConnectTimeout = Convert.ToInt32(txtChatTimeout.Text);
1984 |
1985 | using (TcpClient tcpClient = proxyClient.CreateConnection("irc.chat.twitch.tv", 6667))
1986 | {
1987 | using (StreamWriter streamWriter = new StreamWriter(tcpClient.GetStream()))
1988 | {
1989 | streamWriter.AutoFlush = true;
1990 |
1991 | if (tcpClient.Connected)
1992 | {
1993 | await streamWriter.WriteLineAsync($"PASS oauth:{str}");
1994 | await streamWriter.WriteLineAsync("NICK importaeh");
1995 | await streamWriter.WriteLineAsync($"JOIN #{txtChatChannel.Text}");
1996 | await streamWriter.WriteLineAsync($"PRIVMSG #{txtChatChannel.Text} :{str2}");
1997 |
1998 | Interlocked.Increment(ref messagesSuccess);
1999 | lblSuccess.Text = $"Success: {messagesSuccess}";
2000 |
2001 | if (chatTokenSource.IsCancellationRequested)
2002 | {
2003 | break;
2004 | }
2005 | }
2006 | }
2007 | }
2008 | }
2009 | catch (Exception)
2010 | {
2011 | Interlocked.Increment(ref messagesFail);
2012 | lblMessagesFail.Text = $"Fail: {messagesFail}";
2013 | }
2014 |
2015 | Thread.Sleep(Convert.ToInt32(txtChatDelay.Text));
2016 | }
2017 | else
2018 | {
2019 | using (ClientWebSocket clientWebSocket = new ClientWebSocket())
2020 | {
2021 | try
2022 | {
2023 | clientWebSocket.ConnectAsync(new Uri("wss://irc-ws.chat.twitch.tv"), CancellationToken.None).Wait();
2024 |
2025 | clientWebSocket.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("CAP REQ :twitch.tv/tags twitch.tv/commands")), WebSocketMessageType.Text, true, CancellationToken.None).Wait();
2026 | clientWebSocket.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("PASS oauth:" + str)), WebSocketMessageType.Text, true, CancellationToken.None).Wait();
2027 | clientWebSocket.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("NICK importaeh")), WebSocketMessageType.Text, true, CancellationToken.None).Wait();
2028 | clientWebSocket.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("JOIN " + txtChatChannel.Text)), WebSocketMessageType.Text, true, CancellationToken.None).Wait();
2029 | clientWebSocket.SendAsync(new ArraySegment(Encoding.UTF8.GetBytes("PRIVMSG #" + txtChatChannel.Text + " :" + str2)), WebSocketMessageType.Text, true, CancellationToken.None).Wait();
2030 |
2031 | Interlocked.Increment(ref messagesSuccess);
2032 | lblSuccess.Text = $"Success: {messagesSuccess}";
2033 |
2034 | if (chatTokenSource.IsCancellationRequested)
2035 | {
2036 | break;
2037 | }
2038 | }
2039 | catch (Exception)
2040 | {
2041 | Interlocked.Increment(ref messagesFail);
2042 | lblMessagesFail.Text = $"Fail: {messagesFail}";
2043 | }
2044 | }
2045 |
2046 | Thread.Sleep(Convert.ToInt32(txtChatDelay.Text));
2047 | }
2048 | }
2049 | }
2050 | }
2051 |
2052 | private void btnChatStop_Click(object sender, EventArgs e)
2053 | {
2054 | chatTokenSource.Cancel();
2055 | }
2056 | #endregion
2057 |
2058 | #region Sub Bot Methods
2059 | private void chkSubUseProxies_CheckedChanged(object sender, EventArgs e)
2060 | {
2061 | txtSubTimeout.Enabled = chkSubUseProxies.Checked;
2062 | btnSubLoadProxies.Enabled = chkSubUseProxies.Checked;
2063 | }
2064 |
2065 | private void btnSubLoadProxies_Click(object sender, EventArgs e)
2066 | {
2067 | try
2068 | {
2069 | string fileName = Utilities.OpenFileDialog("Load Proxies");
2070 | if (string.IsNullOrEmpty(fileName)) return;
2071 | subProxies = Utilities.LoadFile(fileName);
2072 | lblSubProxies.Text = $"Proxies: {subProxies.Count()}";
2073 | MessageBox.Show($"Loaded {subProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2074 | }
2075 | catch (Exception ex)
2076 | {
2077 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
2078 | }
2079 | }
2080 |
2081 | private void btnSubLoadTokens_Click(object sender, EventArgs e)
2082 | {
2083 | try
2084 | {
2085 | string fileName = Utilities.OpenFileDialog("Load Tokens");
2086 | if (string.IsNullOrEmpty(fileName)) return;
2087 | subTokens = Utilities.LoadFile(fileName);
2088 | lblSubTokens.Text = $"Tokens: {subTokens.Count()}";
2089 | MessageBox.Show($"Loaded {subTokens.Count()} tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2090 | }
2091 | catch (Exception ex)
2092 | {
2093 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
2094 | }
2095 | }
2096 |
2097 | private async void btnSubStart_Click(object sender, EventArgs e)
2098 | {
2099 | if (chkSubUseProxies.Checked && (subProxies == null || !subProxies.Any()))
2100 | {
2101 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2102 | return;
2103 | }
2104 |
2105 | if (subTokens == null || !subTokens.Any())
2106 | {
2107 | MessageBox.Show("Upload tokens list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2108 | return;
2109 | }
2110 |
2111 | subChannelId = GetChannel(txtSubChannel.Text);
2112 |
2113 | if (string.IsNullOrEmpty(subChannelId))
2114 | {
2115 | MessageBox.Show("The streamer doesn't exist or an error occured.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2116 | return;
2117 | }
2118 |
2119 | txtSubChannel.Enabled = false;
2120 | txtSubBots.Enabled = false;
2121 | txtSubDelay.Enabled = false;
2122 | btnSubLoadTokens.Enabled = false;
2123 | comboSubProxyType.Enabled = false;
2124 | btnSubLoadProxies.Enabled = false;
2125 | txtSubTimeout.Enabled = false;
2126 | btnSubStart.Enabled = false;
2127 | btnSubStop.Enabled = true;
2128 | lblSubSuccess.Text = "Success: 0";
2129 | lblSubFail.Text = "Fail: 0";
2130 | success = 0;
2131 | fail = 0;
2132 |
2133 | ThreadPool.SetMinThreads(Convert.ToInt32(txtSubBots.Text), Convert.ToInt32(txtSubBots.Text));
2134 |
2135 | subTokenSource = new CancellationTokenSource();
2136 | CancellationToken cancellationToken = subTokenSource.Token;
2137 |
2138 | ParallelOptions parallelOptions = new ParallelOptions
2139 | {
2140 | MaxDegreeOfParallelism = Convert.ToInt32(txtSubBots.Text),
2141 | CancellationToken = cancellationToken
2142 | };
2143 |
2144 | try
2145 | {
2146 | await Task.Run(() => Parallel.ForEach(subTokens, parallelOptions, SubBot), cancellationToken);
2147 | }
2148 | catch (OperationCanceledException)
2149 | {
2150 | // ignored
2151 | }
2152 |
2153 | btnSubLoadTokens.Enabled = true;
2154 | comboSubProxyType.Enabled = true;
2155 | btnSubLoadProxies.Enabled = true;
2156 | txtSubTimeout.Enabled = true;
2157 | txtSubChannel.Enabled = true;
2158 | txtSubBots.Enabled = true;
2159 | txtSubDelay.Enabled = true;
2160 | btnSubStart.Enabled = true;
2161 | btnSubStop.Enabled = false;
2162 | MessageBox.Show($"Sent {success} subscribers to {txtSubChannel.Text}.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2163 | }
2164 |
2165 | private string CheckToken1(string token)
2166 | {
2167 | string result;
2168 | using (HttpRequest httpRequest = new HttpRequest())
2169 | {
2170 | httpRequest.IgnoreProtocolErrors = true;
2171 | httpRequest.KeepAlive = true;
2172 | httpRequest.AddHeader("Authorization", "OAuth " + token);
2173 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
2174 | try
2175 | {
2176 | string input = httpRequest.Post("https://gql.twitch.tv/gql", "[{\"operationName\":\"BitsCard_Bits\",\"variables\":{},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"fe1052e19ce99f10b5bd9ab63c5de15405ce87a1644527498f0fc1aadeff89f2\"}}},{\"operationName\":\"BitsCard_MainCard\",\"variables\":{\"name\":\"214062798\",\"withCheerBombEventEnabled\":false},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"88cb043070400a165104f9ce491f02f26c0b571a23b1abc03ef54025f6437848\"}}}]", "text/plain;charset=UTF-8").ToString();
2177 | result = new Regex("id\":\"(.*?)\"").Match(input).Groups[1].Value;
2178 | }
2179 | catch (Exception)
2180 | {
2181 | result = "request error";
2182 | }
2183 | }
2184 | return result;
2185 | }
2186 |
2187 | private void SubBot(string token)
2188 | {
2189 | if (subTokenSource.IsCancellationRequested)
2190 | {
2191 | return;
2192 | }
2193 |
2194 | try
2195 | {
2196 | if (token.Contains(":"))
2197 | token = token.Contains("oauth:") ? token.Split(':')[1] : token.Split(':')[0];
2198 | string userId = CheckToken1(token);
2199 | if (string.IsNullOrEmpty(userId))
2200 | {
2201 | Interlocked.Increment(ref fail);
2202 | lblSubFail.Text = $"Fail: {fail}";
2203 | return;
2204 | };
2205 | string response;
2206 | while ((response = SubChannel(token, subChannelId, userId)) == "request error")
2207 | {
2208 | }
2209 | if (!response.Contains("error\":null,"))
2210 | {
2211 | Interlocked.Increment(ref fail);
2212 | lblSubFail.Text = $"Fail: {fail}";
2213 | }
2214 | else
2215 | {
2216 | Interlocked.Increment(ref success);
2217 | lblSubSuccess.Text = $"Success: {success}";
2218 | }
2219 | }
2220 | catch (Exception)
2221 | {
2222 | Interlocked.Increment(ref fail);
2223 | lblSubFail.Text = $"Fail: {fail}";
2224 | }
2225 |
2226 | Thread.Sleep(Convert.ToInt32(txtSubDelay.Text));
2227 | }
2228 |
2229 | private string SubChannel(string token, string channelId, string userId)
2230 | {
2231 | string result;
2232 | using (HttpRequest httpRequest = new HttpRequest())
2233 | {
2234 | try
2235 | {
2236 | if (chkSubUseProxies.Checked)
2237 | {
2238 | ProxyType proxyType;
2239 |
2240 | switch (comboSubProxyType.Text)
2241 | {
2242 | case "HTTP":
2243 | proxyType = ProxyType.HTTP;
2244 | break;
2245 | case "SOCKS4":
2246 | proxyType = ProxyType.Socks4;
2247 | break;
2248 | case "SOCKS4a":
2249 | proxyType = ProxyType.Socks4A;
2250 | break;
2251 | case "SOCKS5":
2252 | proxyType = ProxyType.Socks5;
2253 | break;
2254 | default:
2255 | proxyType = ProxyType.HTTP;
2256 | break;
2257 | }
2258 |
2259 | int index = new Random().Next(subProxies.Count());
2260 | ProxyClient proxyClient = ProxyClient.Parse(proxyType, subProxies[index]);
2261 | proxyClient.ReadWriteTimeout = Convert.ToInt32(txtSubTimeout.Text);
2262 | proxyClient.ConnectTimeout = Convert.ToInt32(txtSubTimeout.Text);
2263 | httpRequest.Proxy = proxyClient;
2264 | }
2265 |
2266 | httpRequest.UserAgent = Http.RandomUserAgent();
2267 | httpRequest.Referer = "https://www.twitch.tv/" + txtSubChannel.Text.ToLower();
2268 | httpRequest.IgnoreProtocolErrors = true;
2269 | httpRequest.Reconnect = false;
2270 | httpRequest.Authorization = "OAuth " + token;
2271 | httpRequest.AddHeader("Pragma", "no-cache");
2272 | httpRequest.AddHeader("Origin", "https://twitch.tv");
2273 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
2274 | string str = string.Concat("{\"operationName\":\"PrimeSubscribe_SpendPrimeSubscriptionCredit\",\"variables\":{\"input\":{\"broadcasterID\":\"", channelId, "\",\"userID\":\"", userId, "\"}},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"639d5286f985631f9ff66c5bd622d839f73113bae9ed44ec371aa9110563254c\"}}}");
2275 |
2276 | result = httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString();
2277 | }
2278 | catch (Exception)
2279 | {
2280 | result = "request error";
2281 | }
2282 | }
2283 | return result;
2284 | }
2285 |
2286 | private void btnSubStop_Click(object sender, EventArgs e)
2287 | {
2288 | subTokenSource.Cancel();
2289 | }
2290 | #endregion
2291 |
2292 | #region Bit Sender Methods
2293 | private void chkBitUseProxies_CheckedChanged(object sender, EventArgs e)
2294 | {
2295 | txtBitTimeout.Enabled = chkBitUseProxies.Checked;
2296 | btnBitLoadProxies.Enabled = chkBitUseProxies.Checked;
2297 | }
2298 |
2299 | private void btnBitLoadProxies_Click(object sender, EventArgs e)
2300 | {
2301 | try
2302 | {
2303 | string fileName = Utilities.OpenFileDialog("Load Proxies");
2304 | if (string.IsNullOrEmpty(fileName)) return;
2305 | bitProxies = Utilities.LoadFile(fileName);
2306 | lblBitProxies.Text = $"Proxies: {bitProxies.Count()}";
2307 | MessageBox.Show($"Loaded {bitProxies.Count()} proxies.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2308 | }
2309 | catch (Exception ex)
2310 | {
2311 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
2312 | }
2313 | }
2314 |
2315 | private void btnBitLoadTokens_Click(object sender, EventArgs e)
2316 | {
2317 | try
2318 | {
2319 | string fileName = Utilities.OpenFileDialog("Load Tokens");
2320 | if (string.IsNullOrEmpty(fileName)) return;
2321 | bitTokens = Utilities.LoadFile(fileName);
2322 | lblBitTokens.Text = $"Tokens: {bitTokens.Count()}";
2323 | MessageBox.Show($"Loaded {bitTokens.Count()} tokens.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2324 | }
2325 | catch (Exception ex)
2326 | {
2327 | MessageBox.Show(ex.Message, "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Error);
2328 | }
2329 | }
2330 |
2331 | private async void btnBitStart_Click(object sender, EventArgs e)
2332 | {
2333 | if (chkBitUseProxies.Checked && (bitProxies == null || !bitProxies.Any()))
2334 | {
2335 | MessageBox.Show("Upload proxies list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2336 | return;
2337 | }
2338 |
2339 | if (bitTokens == null || !bitTokens.Any())
2340 | {
2341 | MessageBox.Show("Upload tokens list.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2342 | return;
2343 | }
2344 |
2345 | bitChannelId = GetChannel(txtBitChannel.Text);
2346 |
2347 | if (string.IsNullOrEmpty(bitChannelId))
2348 | {
2349 | MessageBox.Show("The streamer doesn't exist or an error occured.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
2350 | return;
2351 | }
2352 |
2353 | txtBitChannel.Enabled = false;
2354 | txtBitBots.Enabled = false;
2355 | txtBitDelay.Enabled = false;
2356 | btnBitLoadTokens.Enabled = false;
2357 | comboBitProxyType.Enabled = false;
2358 | btnBitLoadProxies.Enabled = false;
2359 | txtBitTimeout.Enabled = false;
2360 | btnBitStart.Enabled = false;
2361 | btnBitStop.Enabled = true;
2362 | bitSuccess = 0;
2363 | bitFail = 0;
2364 | lblBitSuccess.Text = "Success: 0";
2365 | lblBitFail.Text = "Fail: 0";
2366 |
2367 | ThreadPool.SetMinThreads(Convert.ToInt32(txtBitBots.Text), Convert.ToInt32(txtBitBots.Text));
2368 |
2369 | bitTokenSource = new CancellationTokenSource();
2370 | CancellationToken cancellationToken = bitTokenSource.Token;
2371 |
2372 | ParallelOptions parallelOptions = new ParallelOptions
2373 | {
2374 | MaxDegreeOfParallelism = Convert.ToInt32(txtBitBots.Text),
2375 | CancellationToken = cancellationToken
2376 | };
2377 |
2378 | try
2379 | {
2380 | await Task.Run(() => Parallel.ForEach(bitTokens, parallelOptions, DoBitWork), cancellationToken);
2381 | }
2382 | catch (OperationCanceledException)
2383 | {
2384 | // ignored
2385 | }
2386 |
2387 | txtBitChannel.Enabled = true;
2388 | txtBitBots.Enabled = true;
2389 | txtBitDelay.Enabled = true;
2390 | btnBitLoadTokens.Enabled = true;
2391 | comboBitProxyType.Enabled = true;
2392 | btnBitLoadProxies.Enabled = true;
2393 | txtBitTimeout.Enabled = true;
2394 | btnBitStart.Enabled = true;
2395 | btnBitStop.Enabled = false;
2396 | MessageBox.Show($"Sent bits on {bitSuccess} accounts.", "overFlood", MessageBoxButtons.OK, MessageBoxIcon.Information);
2397 | }
2398 |
2399 | private void btnBitStop_Click(object sender, EventArgs e)
2400 | {
2401 | bitTokenSource.Cancel();
2402 | }
2403 |
2404 | private void DoBitWork(string token)
2405 | {
2406 | if (bitTokenSource.IsCancellationRequested)
2407 | {
2408 | bitTokenSource.Cancel();
2409 | }
2410 |
2411 | try
2412 | {
2413 | if (token.Contains(":"))
2414 | token = token.Contains("oauth:") ? token.Split(':')[1] : token.Split(':')[0];
2415 |
2416 | int bitBalance = GetBitBalance(token, bitChannelId);
2417 |
2418 | if (bitBalance > 0 && !SendBits(token, bitChannelId, bitBalance).Contains("server error"))
2419 | {
2420 | Interlocked.Increment(ref bitSuccess);
2421 | lblBitSuccess.Text = $"Success: {bitSuccess}";
2422 | }
2423 | else
2424 | {
2425 | Interlocked.Increment(ref bitFail);
2426 | lblBitFail.Text = $"Fail: {bitFail}";
2427 | }
2428 | }
2429 | catch (Exception)
2430 | {
2431 | Interlocked.Increment(ref bitFail);
2432 | lblBitFail.Text = $"Fail: {bitFail}";
2433 | }
2434 |
2435 | Thread.Sleep(Convert.ToInt32(txtBitDelay.Text));
2436 | }
2437 |
2438 | private string SendBits(string token, string channelId, int bitBalance)
2439 | {
2440 | string result;
2441 | using (HttpRequest httpRequest = new HttpRequest())
2442 | {
2443 | try
2444 | {
2445 | if (chkBitUseProxies.Checked)
2446 | {
2447 | ProxyType proxyType;
2448 |
2449 | switch (comboBitProxyType.Text)
2450 | {
2451 | case "HTTP":
2452 | proxyType = ProxyType.HTTP;
2453 | break;
2454 | case "SOCKS4":
2455 | proxyType = ProxyType.Socks4;
2456 | break;
2457 | case "SOCKS4a":
2458 | proxyType = ProxyType.Socks4A;
2459 | break;
2460 | case "SOCKS5":
2461 | proxyType = ProxyType.Socks5;
2462 | break;
2463 | default:
2464 | proxyType = ProxyType.HTTP;
2465 | break;
2466 | }
2467 |
2468 | int index = new Random().Next(bitProxies.Count());
2469 | ProxyClient proxyClient = ProxyClient.Parse(proxyType, bitProxies[index]);
2470 | proxyClient.ReadWriteTimeout = Convert.ToInt32(txtBitTimeout.Text);
2471 | proxyClient.ConnectTimeout = Convert.ToInt32(txtBitTimeout.Text);
2472 | httpRequest.Proxy = proxyClient;
2473 | }
2474 |
2475 | httpRequest.UserAgent = Http.RandomUserAgent();
2476 | httpRequest.Referer = "https://www.twitch.tv/";
2477 | httpRequest.IgnoreProtocolErrors = true;
2478 | httpRequest.Reconnect = false;
2479 | httpRequest.Authorization = string.Format("OAuth {0}", token);
2480 | httpRequest.AddHeader("Pragma", "no-cache");
2481 | httpRequest.AddHeader("Origin", "https://twitch.tv");
2482 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
2483 | object[] array = new object[10];
2484 | array[0] = "[{\"operationName\":\"ChatInput_SendCheer\",\"variables\":{\"input\":{\"id\":\"";
2485 | object[] array2 = array;
2486 | array[1] = Math.Floor((DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds);
2487 | object[] array3 = array2;
2488 | array2[2] = GenerateString();
2489 | array3[3] = "\",\"targetID\":\"";
2490 | array3[4] = channelId;
2491 | array3[5] = "\",\"bits\":";
2492 | array3[6] = bitBalance;
2493 | array3[7] = ",\"content\":\"Anon";
2494 | array3[8] = bitBalance;
2495 | array3[9] = "\",\"isAutoModEnabled\":true,\"shouldCheerAnyway\":false,\"isAnonymous\":true}},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"57b0d6bd979e516ae3767f6586e7f23666d612d3a65af1d5436dba130c9426fd\"}}}]";
2496 | string str = string.Concat(array3);
2497 |
2498 | result = httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString();
2499 | }
2500 | catch (Exception)
2501 | {
2502 | result = "";
2503 | }
2504 | }
2505 | return result;
2506 | }
2507 |
2508 | private int GetBitBalance(string token, string channelId)
2509 | {
2510 | int result;
2511 | using (HttpRequest httpRequest = new HttpRequest())
2512 | {
2513 | httpRequest.UserAgent = Http.RandomUserAgent();
2514 | httpRequest.Referer = "https://www.twitch.tv/";
2515 | httpRequest.IgnoreProtocolErrors = true;
2516 | httpRequest.Reconnect = false;
2517 | httpRequest.Authorization = string.Format("OAuth {0}", token);
2518 | httpRequest.AddHeader("Pragma", "no-cache");
2519 | httpRequest.AddHeader("Origin", "https://twitch.tv");
2520 | httpRequest.AddHeader("Client-Id", "kimne78kx3ncx6brgo4mv6wki5h1ko");
2521 | string str = "{\"operationName\":\"BitsBalanceInChannelQuery\",\"variables\":{\"channelId\":\"" + channelId + "\"},\"extensions\":{\"persistedQuery\":{\"version\":1,\"sha256Hash\":\"7560b93b8ed75a96c7ff1cbe100cf9dba847a4b84c3462e983262c884c137e3d\"}},\"query\":\"query BitsBalanceInChannelQuery($channelId: ID!) { currentUser { __typename bitsBalance } user(id: $channelId) { __typename self { __typename bitsBadge { __typename current { __typename imageURL(size: QUADRUPLE) } next { __typename imageURL(size: QUADRUPLE) } nextBits progress totalBits } } }}\"}";
2522 | try
2523 | {
2524 | int.TryParse(Regex.Match(httpRequest.Post("https://gql.twitch.tv/gql", str, "text/plain;charset=UTF-8").ToString(), "bitsBalance\":(.*?)},").Groups[1].Value, out int num);
2525 | result = num;
2526 | }
2527 | catch (Exception)
2528 | {
2529 | result = 0;
2530 | }
2531 | }
2532 | return result;
2533 | }
2534 |
2535 | private string GenerateString()
2536 | {
2537 | string text = "";
2538 | string text2 = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890-";
2539 | int num = new Random().Next(15, 40);
2540 | int num2 = 0;
2541 | while (num2 < num)
2542 | {
2543 | text += text2[new Random().Next(text2.Length)].ToString();
2544 | num2 += 1;
2545 | }
2546 | return text;
2547 | }
2548 | #endregion
2549 |
2550 | private string GetChannel(string channel)
2551 | {
2552 | string result;
2553 | using (HttpRequest httpRequest = new HttpRequest())
2554 | {
2555 | httpRequest.UserAgent = Http.RandomUserAgent();
2556 | httpRequest.IgnoreProtocolErrors = true;
2557 | httpRequest.Reconnect = false;
2558 | for (; ; )
2559 | {
2560 | try
2561 | {
2562 | result = Regex.Match(httpRequest.Get(string.Concat(new string[]
2563 | {
2564 | "https://api.twitch.tv/api/channels/",
2565 | channel,
2566 | "/access_token?need_https=true&oauth_token=xkv96u0yoyz7vrzh55lxmboon3mgvt",
2567 | "&platform=web&player_backend=mediaplayer&player_type=site"
2568 | }), null).ToString(), "channel_id\\\\\":(.*?),\\\\\"chansub").Groups[1].Value;
2569 | break;
2570 | }
2571 | catch (Exception)
2572 | {
2573 | result = "";
2574 | }
2575 | }
2576 | }
2577 |
2578 | return result;
2579 | }
2580 |
2581 | public static void WriteLine(StreamWriter streamWriter, string line)
2582 | {
2583 | lock (streamWriter)
2584 | {
2585 | streamWriter.WriteLine(line);
2586 | }
2587 | }
2588 |
2589 | private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
2590 | {
2591 | Environment.Exit(0);
2592 | }
2593 | }
2594 | }
2595 |
--------------------------------------------------------------------------------
/overFlood/overFlood/MainForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
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 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 |
123 | AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA
124 | IACoJQAA7h4AAAAAAAABACAADxAAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA
125 | AAAAAAAApUFkRqVBZLGlQWS/pUFkvqVBZL6lQWS+pUFkvqVBZL6lQWS+pUFkvqVBZL6lQWS+pUFkvqVB
126 | ZL+lQWSxpUFkRaVBZLGlQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
127 | ZP+lQWT/pUFk/6VBZLGlQWS+pUFk/6VBZP+lQWT/pUFk/6ZDZv+oR2n/pUFk/6VBZP+lQWT/pUFk/6VB
128 | ZP+lQWT/pUFk/6VBZP+lQWS+pUFkvqVBZP+lQWT/pEBj/6M8YP+3Z4P/5svU/8F8lP+jPmH/pD5i/6RA
129 | Y/+lQWT/pUFk/6VBZP+lQWT/pUFkvqVBZL6lQWT/pEBj/7twi//UpLX/4cDM//bs8P/s1t7/16u6/9Oi
130 | s/+zYH3/pD9i/6VBZP+lQWT/pUFk/6VBZL6lQWS+pUFk/6Q+Yv/Rna//+vX3/+nQ2f/SoLH/xIOa/+bL
131 | 1P/p0dn/5srU/7Rhfv+kP2L/pUFk/6VBZP+lQWS+pUFkvqVBZP+kPmL/0p+x/+rT2/+rTW7/pkNm/6Q+
132 | Yv+mRGf/p0Rn/8mOo//lyNL/s198/6RAY/+lQWT/pUFkvqVBZL6lQWT/pD5i/9Kfsf/q0tr/qEdp/6hH
133 | af+7cIv/rlNz/7tviv+oR2n/2a69/9Cbrv+kPmL/pUFk/6VBZL6lQWS+pUFk/6Q+Yv/Sn7H/6tLa/6hH
134 | af+vVXT/5srU/753kP/mytT/q09v/9Gdr//Rn7H/pD5i/6VBZP+lQWS+pUFkvqVBZP+kPmL/0p+x/+rS
135 | 2v+oR2n/rlV0/+XI0v++do//5MfR/6tOb//RnrD/0Z+x/6Q+Yv+lQWT/pUFkvqVBZL6lQWT/pD5i/9Kf
136 | sf/p0dr/p0Vn/6ZEZv+2ZYH/q01u/7Zlgf+lQGP/0Z2v/9Gfsf+kPmL/pUFk/6VBZL6lQWS+pUFk/6Q+
137 | Yv/Gh53/7djf/71zjf+6bYj/uWuG/7ptiP+5a4f/uWuG/9y2xP/RnrD/pD5i/6VBZP+lQWS+pUFkvqVB
138 | ZP+kQGP/rlV0/+C9yf/lx9L/5MbQ/+TG0P/kxtD/5MbQ/+TG0P/nzNb/xoac/6Q/Yv+lQWT/pUFkvqVB
139 | ZL6lQWT/pUFk/6VBZP+oRmj/qUlq/6lJav+pSWr/qUlq/6lJav+pSWr/qEhq/6dEZ/+lQWT/pUFk/6VB
140 | ZL6lQWSxpUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
141 | ZP+lQWSxpUFkRqVBZLGlQWS/pUFkvqVBZL6lQWS+pUFkvqVBZL6lQWS+pUFkvqVBZL6lQWS+pUFkvqVB
142 | ZL+lQWSxpUFkRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
143 | AAAAAAAAAAAAAAAAAAAoAAAAGAAAADAAAAABACAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAApUFkBqVB
144 | ZFalQWSUpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVB
145 | ZJalQWSWpUFklqVBZJalQWSWpUFklKVBZFWlQWQGpUFkVqVBZO2lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
146 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
147 | ZOylQWRVpUFkk6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
148 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWSSpUFklqVBZP+lQWT/pUFk/6VB
149 | ZP+lQWT/pUFk/6VBZP+lQGP/pD5i/6Q/Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
150 | ZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VAY/+tU3P/vHGL/7Rh
151 | fv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVB
152 | ZP+lQWT/pUFk/6VBZP+kP2L/oz5h/6I7X//FhJv//Pn6//Lk6f+4aIT/ozxg/6M+Yf+kPmL/pUBj/6VB
153 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6VCZf+4aoX/wX2V/8B6
154 | kv/Yrr3//fv8//v29//p0dn/wn+X/8F8lP+/d5D/qkxt/6RAY/+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
155 | ZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZEZv/iws3////////+/v//////9+/y/8yUqP/y5en/////////
156 | ///+/v7/3LXD/6pMbf+kQGP/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZE
157 | Zv/jxM///////+bJ0//dt8T/2K28/61Tc/+7cIv/3LXD/923xf/gvcn/9+7x/9y2w/+qTG3/pEBj/6VB
158 | ZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZEZv/jxM///fv8/7twi/+kPmL/pUFk/6VB
159 | ZP+kQGP/pUFk/6VBZP+lQmX/xIKZ//fu8f/ctsP/q01u/6VAY/+lQWT/pUFk/6VBZP+lQWSWpUFklqVB
160 | ZP+lQWT/pUFk/6ZEZv/jxM///fv8/7twiv+kPmL/pUFk/6RAY/+kP2L/pUFk/6Q/Y/+kPmL/pEBj/8SD
161 | mf/48PL/1aa2/6VBZP+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZEZv/jxM///fv8/7tw
162 | iv+kPmL/pEBj/7lrhv/Lkqb/qkts/710jv/JjKH/qEZo/6ZEZv/mytT/5MfR/6ZEZv+lQWT/pUFk/6VB
163 | ZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZEZv/jxM///fv8/7twiv+kPmL/pD5i/86Yq//16u7/r1Z1/9er
164 | uv/v3eP/q01u/6ZDZv/kx9H/5MfR/6ZEZv+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZE
165 | Zv/jxM///fv8/7twiv+kPmL/pD5i/86Xq//16u7/r1Z1/9eruv/v3eP/q01u/6ZDZv/kx9H/5MfR/6ZE
166 | Zv+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZEZv/jxM///fv8/7twiv+kPmL/pD5i/86X
167 | q//16e3/r1Z1/9eruv/v3eP/q01u/6ZDZv/kx9H/5MfR/6ZEZv+lQWT/pUFk/6VBZP+lQWSWpUFklqVB
168 | ZP+lQWT/pUFk/6ZEZv/jxM///fv8/7twiv+kPmL/pEBj/7Rif//DgZj/qUlr/7hphf/BfJT/p0Vo/6ZE
169 | Zv/kx9H/5MfR/6ZEZv+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6ZDZv/hwMz//fv8/7pu
170 | if+iO1//pD5i/6M9YP+iO1//oz5h/6M8YP+iO1//oz5h/6VBZP/kxtD/5MfR/6ZEZv+lQWT/pUFk/6VB
171 | ZP+lQWSWpUFklqVBZP+lQWT/pUFk/6Q/Yv/Nlaj//fr7/86Yq/+9dI7/vnaP/752j/++do//vnaP/752
172 | j/++do//vnaP/794kf/s2N//5MbQ/6ZEZv+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6Q/
173 | Y/+yXXv/8uTp//r19//58/X/+fP1//nz9f/58/X/+fP1//nz9f/58/X/+fP1//nz9f/8+fr/4b/L/6ZE
174 | Zv+lQWT/pUFk/6VBZP+lQWSWpUFklqVBZP+lQWT/pUFk/6VBZP+mQ2b/tmaC/7xxi/+8cYv/vHGL/7xx
175 | i/+8cYv/vHGL/7xxi/+8cYv/vHGL/7xxi/+8cYv/tGJ//6VCZf+lQWT/pUFk/6VBZP+lQWSWpUFklqVB
176 | ZP+lQWT/pUFk/6VBZP+lQWT/pD9i/6Q+Yv+kPmL/pD5i/6Q+Yv+kPmL/pD5i/6Q+Yv+kPmL/pD5i/6Q+
177 | Yv+kPmL/pD9i/6VBZP+lQWT/pUFk/6VBZP+lQWSWpUFkkqVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
178 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
179 | ZP+lQWSSpUFkVaVBZO2lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
180 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZO2lQWRVpUFkBqVBZFalQWSUpUFklqVB
181 | ZJalQWSWpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVBZJalQWSWpUFklqVB
182 | ZJalQWSWpUFklKVBZFalQWQGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
183 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAA
184 | AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAKVBZAClQWQPpUFkUKVBZG2lQWRtpUFkbaVB
185 | ZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVB
186 | ZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkUKVBZA+lQWQApUFkDqVBZJelQWT1pUFk/aVB
187 | ZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVB
188 | ZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT1pUFkl6VBZA6lQWRQpUFk86VB
189 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
190 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWTzpUFkUKVB
191 | ZG2lQWT9pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
192 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
193 | ZP2lQWRtpUFkbqVBZP2lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
194 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
195 | ZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
196 | ZP+lQGP/pUBj/6RAY/+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
197 | ZP+lQWT/pUFk/6VBZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
198 | ZP+kP2P/vneQ/9qywP/Zr77/uWuG/6Q/Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
199 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VBZP+lQWT/pUFk/6RA
200 | Y/+kP2P/pD9j/6M9YP/QnK7////////////r1d3/r1d2/6Q+Yf+kP2P/pD9j/6Q/Y/+lQWT/pUFk/6VB
201 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6VB
202 | ZP+mRGb/sFh3/7Jde/+yXHr/sVp4/9eruv///////fv8///////dt8X/s158/7Jcev+yXXv/sFl3/6ZD
203 | Zv+lQGT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VB
204 | ZP+lQWT/pEBj/61Scv/q09v/9+3x//bs7//26+//+vX3///////fusf/7dng//79/f/37fD/9uzv//bs
205 | 8P/05+z/ypCl/6ZCZf+lQGT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVB
206 | ZP2lQWT/pUFk/6VBZP+kQGP/rlR0//Lk6f///////////////////////////8yTp/+2ZYH/7tzi////
207 | ///////////////////69Pb/y5Cl/6ZCZf+lQGT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/aVB
208 | ZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6RAY/+uVHT/8uPo///////t2eD/06O0/9SjtP/UpLX/um2I/6M9
209 | Yf+2ZYH/06Gy/9SktP/To7T/16q6//Xp7f/69ff/y5Cl/6ZCZf+lQGT/pUFk/6VBZP+lQWT/pUFk/6VB
210 | ZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VBZP+lQWT/pEBj/65UdP/y4+j//////9mvvv+kPmH/pD9i/6Q/
211 | Yv+lQGP/pUFk/6Q/Y/+kP2L/pD9i/6Q/Yv+kP2L/v3mR//Xq7f/69ff/y5Cl/6ZCZf+lQWT/pUFk/6VB
212 | ZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VBZP+kQGP/rlR0//Lj6P//////2rC//6VA
213 | Y/+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kP2P/v3iR//Xq7f/69ff/ypCk/6ZD
214 | Zf+lQWT/pUFk/6VBZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6RAY/+uVHT/8uPo////
215 | ///asL//pUBj/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kP2L/wX2V//r1
216 | 9//w4Ob/rVJy/6RAY/+lQWT/pUFk/6VBZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VBZP+lQWT/pEBj/65U
217 | dP/y4+j//////9qwv/+lQGP/pUFk/6VAY/+qS2z/1KS1/9equv+rTm//rlRz/9mvvv/Rna//qEdp/6Q/
218 | Y/+uU3P/8+Xq//Pl6v+uVHT/pEBj/6VBZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VB
219 | ZP+kQGP/rlR0//Lj6P//////2rC//6VAY/+lQWT/pUBj/61Rcf/x4eb/9eru/69Wdf+zX33/+fL0/+zW
220 | 3f+qS2z/pD9i/65UdP/z5er/8+Xq/65UdP+kQGP/pUFk/6VBZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVB
221 | ZP+lQWT/pUFk/6RAY/+uVHT/8uPo///////asL//pUBj/6VBZP+lQGP/rVFx//Hh5v/16u7/r1Z1/7Nf
222 | ff/58vT/69bd/6pLbP+kP2P/rlR0//Pl6v/z5er/rlR0/6RAY/+lQWT/pUFk/6VBZP+lQWT9pUFkbaVB
223 | ZG2lQWT9pUFk/6VBZP+lQWT/pEBj/65UdP/y4+j//////9qwv/+lQGP/pUFk/6VAY/+tUXH/8eHm//Xq
224 | 7v+vVnX/s199//ny9P/r1t3/qkts/6Q/Y/+uVHT/8+Xq//Pl6v+uVHT/pEBj/6VBZP+lQWT/pUFk/6VB
225 | ZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VBZP+kQGP/rlR0//Lj6P//////2rC//6VAY/+lQWT/pUBj/61R
226 | cf/x4eb/9eru/69Wdf+zX33/+fL0/+zW3f+qS2z/pD9i/65UdP/z5er/8+Xq/65UdP+kQGP/pUFk/6VB
227 | ZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6RAY/+uVHT/8uPo///////asL//pUBj/6VB
228 | ZP+lQWT/qUlq/8mOo//Mkqb/qkts/6xQcP/Nlqn/x4me/6dGaP+kP2P/rlR0//Pl6v/z5er/rlR0/6RA
229 | Y/+lQWT/pUFk/6VBZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VBZP+lQWT/pEBj/65UdP/y5On//////9qw
230 | v/+lQGP/pUFk/6VBZP+lQWT/pD9i/6Q/Yv+lQWT/pUFk/6Q+Yv+kP2L/pUFk/6RAY/+uVHT/8+Xq//Pl
231 | 6v+uVHT/pEBj/6VBZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VBZP+lQGP/q01u/+zW
232 | 3v//////2a++/6M9Yf+jPmH/oz5h/6M+Yf+jPmH/oz5h/6M+Yf+jPmH/oz5h/6M+Yf+jPmH/oz1g/61R
233 | cf/z5er/8+Xq/65UdP+kQGP/pUFk/6VBZP+lQWT/pUFk/aVBZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6VB
234 | ZP+kQGP/0qGy///////ny9X/xIGZ/8SCmf/Egpn/xIKZ/8SCmf/Egpn/xIKZ/8SCmf/Egpn/xIKZ/8SC
235 | mf/DgZj/yo+j//fv8v/y5On/rlR0/6RAY/+lQWT/pUFk/6VBZP+lQWT9pUFkbaVBZG2lQWT9pUFk/6VB
236 | ZP+lQWT/pUFk/6Q/Yv+3Z4P/+O/y////////////////////////////////////////////////////
237 | //////////////////////////////Lj6f+uVHT/pEBj/6VBZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVB
238 | ZP2lQWT/pUFk/6VBZP+lQWT/pUFk/6dGaP/Nlqn/27LA/9qxv//asb//2rG//9qxv//asb//2rG//9qx
239 | v//asb//2rG//9qxv//asb//2rG//9qxv//assD/0qCy/6pMbf+lQGP/pUFk/6VBZP+lQWT/pUFk/aVB
240 | ZG2lQWRtpUFk/aVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VAY/+lQGP/pUBj/6VAY/+lQGP/pUBj/6VA
241 | Y/+lQGP/pUBj/6VAY/+lQGP/pUBj/6VAY/+lQGP/pUBj/6VAY/+lQGP/pUFk/6VBZP+lQWT/pUFk/6VB
242 | ZP+lQWT9pUFkbaVBZG6lQWT9pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
243 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
244 | ZP+lQWT/pUFk/6VBZP2lQWRtpUFkbaVBZP2lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
245 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
246 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/aVBZG2lQWRQpUFk86VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
247 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
248 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWTzpUFkUKVBZA6lQWSXpUFk9aVBZP2lQWT9pUFk/aVB
249 | ZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVB
250 | ZP2lQWT9pUFk/aVBZP2lQWT9pUFk/aVBZP2lQWT9pUFk9aVBZJelQWQOpUFkAKVBZA+lQWRQpUFkbaVB
251 | ZG6lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVB
252 | ZG2lQWRtpUFkbaVBZG2lQWRtpUFkbaVBZG2lQWRtpUFkbqVBZG2lQWRQpUFkD6VBZACAAAABAAAAAAAA
253 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
254 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAASgA
255 | AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAApEBkAKxDYwClQWQOpUFkJaRB
256 | ZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRB
257 | ZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRB
258 | ZCqkQWQqpEFkKqRBZCqkQWQqpEFkKqRBZCqkQWQqpUFkJaVBZA6sSGMAo0BkAAAAAAClQWQApUFkA6VB
259 | ZE6lQWS5pUFk36VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VB
260 | ZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VB
261 | ZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk36VBZLmlQWROpUBkA6VB
262 | ZAClQWQApUFkTqVBZOulQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
263 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
264 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
265 | ZP+lQWTqpUFkTqVBZAClQWQNpUFkuaVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
266 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
267 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
268 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFkuKVBZA2lQWQmpUFk36VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
269 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
270 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
271 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk3qVBZCWlQWQrpUFk46VBZP+lQWT/pUFk/6VB
272 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
273 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
274 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
275 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
276 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
277 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
278 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
279 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
280 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
281 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
282 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6Q/Yv+kPmH/pD5h/6Q+Yf+kQGP/pUFk/6VBZP+lQWT/pUFk/6VB
283 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
284 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
285 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pkJl/753kP/LkKX/yo+k/8mOo/+yXXv/pD9j/6VB
286 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
287 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
288 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/p0Rn/+PDzv//////////////
289 | ///lyNL/rE9w/6RAY/+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
290 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
291 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/p0Rn/+PD
292 | zv/////////////////+/v7/1aa2/6ZDZv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
293 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
294 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUBj/6Q/Y/+kP2P/pD9j/6Q/
295 | Y/+kP2P/pkNm/+PDzv//////////////////////+vX3/8SDmv+kP2L/pD9j/6Q/Y/+kP2P/pD9j/6Q/
296 | Y/+lQGP/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
297 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kP2P/u3CK/9eq
298 | uv/Xqrr/16q6/9equv/Xqrn/16u7//Lk6f///////Pn6//Hg5v/+/f3///////Pn6//Yrbz/1qm5/9eq
299 | uv/Xqrr/16q6/9Kgsf+vV3b/pD9i/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
300 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
301 | ZP+kPmL/zZap////////////////////////////////////////////+vT2/8J+lv/hwMz/////////
302 | ///////////////////////////////////kx9H/r1d2/6Q/Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
303 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
304 | ZP+lQWT/pUFk/6VBZP+kPmL/zZap////////////////////////////////////////////+vX3/7hp
305 | hP+tUnL/4sPO////////////////////////////////////////////5MfR/69Xdv+kP2L/pUFk/6VB
306 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
307 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap//////////////////79/f/9+/z//fz8//38
308 | /P/+/P3/+fH0/7hqhf+jPWD/rlR0/+LCzv/9/Pz//fz8//38/P/9/Pz//fv8//78/f///////////+TH
309 | 0f+vV3b/pD9i/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
310 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////9uy
311 | wP/AepP/wXyV/8F8lf/BfZX/wHmS/6tOb/+lQGP/pD9j/61Scv/AepP/wX2V/8F8lf/BfJX/wXyU/8aH
312 | nf/u2+L////////////kx9H/r1d2/6Q/Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
313 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap////
314 | /////////////8mNov+iO1//pD5h/6Q+Yf+kPmH/pD5i/6VAY/+lQWT/pUFk/6VAY/+kPmL/pD5h/6Q+
315 | Yf+kPmH/pD5h/6M9Yf+3aIT/7tzi////////////5MfR/69Xdv+kP2L/pUFk/6VBZP+lQWT/pUFk/6VB
316 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
317 | ZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
318 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kP2L/t2iE/+7c4v///////////+TH0f+vV3b/pD9i/6VB
319 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
320 | ZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUFk/6VB
321 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pD9i/7dohP/u3OL/////////
322 | ///kx9H/r1Z1/6RAY/+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
323 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VB
324 | ZP+lQWT/pUFk/6VBZP+lQGP/pEBj/6RAY/+lQWT/pUFk/6VBZP+kQGP/pEBj/6VAY/+lQWT/pUFk/6Q/
325 | Yv+3aIT/793j////////////ypCk/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
326 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qP
327 | pP+kPmH/pUFk/6VBZP+lQWT/pUFk/6ZCZf+sUXH/rlV0/61Scv+mQ2b/pUFk/6dFZ/+uU3P/rlV0/6xP
328 | b/+lQmT/pUFk/6VBZP+jPWH/z5qt////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
329 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap////
330 | /////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBj/6pMbf/jxM//8+br/+jP2P+uVXT/oz5h/7Rh
331 | fv/s2N//8+br/9y1w/+nRWj/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VB
332 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
333 | ZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBj/6tOb//u2uH///////To
334 | 7P+wWHf/oz1h/7Zmgv/58vT//////+bJ0/+oRmj/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+
335 | Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
336 | ZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBj/6tO
337 | b//u2uH///////Tn7P+wWHf/oz1h/7Zmgv/58vT//////+bJ0/+oRmj/pUFk/6VBZP+kPmL/zZap////
338 | ////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
339 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VB
340 | ZP+lQWT/pUBj/6tOb//u2uH///////Tn7P+wWHf/oz1h/7Zmgv/58vT//////+bJ0/+oRmj/pUFk/6VB
341 | ZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
342 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qP
343 | pP+kPmH/pUFk/6VBZP+lQWT/pUBj/6tOb//u2uH///////Tn7P+wWHf/oz1h/7Zmgv/58vT//////+bJ
344 | 0/+oRmj/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
345 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap////
346 | /////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBj/6tOb//u2uH///////Tn7P+wWHf/oz1h/7Zm
347 | gv/58vT//////+bJ0/+oRmj/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VB
348 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
349 | ZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBj/6tOb//u2+H///////To
350 | 7P+wWHf/oz1h/7dmgv/58vT//////+bJ0/+oRmj/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+
351 | Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
352 | ZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUBk/6lK
353 | a//Xqrr/5MbQ/9uzwf+sUXH/pD5i/7Faef/eusf/5MbQ/9GesP+nRWf/pUFk/6VBZP+kPmL/zZap////
354 | ////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
355 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qPpP+kPmH/pUFk/6VB
356 | ZP+lQWT/pUFk/6VBZP+mRGb/p0Rn/6ZEZv+lQWT/pUFk/6VCZf+nRGf/p0Rn/6ZDZv+lQWT/pUFk/6VB
357 | ZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
358 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap/////////////////8qP
359 | pP+kPmH/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
360 | ZP+lQWT/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
361 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/yIyh///+
362 | /v///////////8qPpP+kPmH/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
363 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+kPmL/zZap////////////zZap/6Q+Yv+lQWT/pUFk/6VB
364 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
365 | ZP+kP2P/tGB+//Xq7v///////////8mNov+iO1//pD5i/6Q+Yv+kPmL/pD5i/6Q+Yv+kPmL/pD5i/6Q+
366 | Yv+kPmL/pD5i/6Q+Yv+kPmL/pD5i/6Q+Yv+kPmL/pD5i/6Q+Yv+iO1//zZSo////////////zZap/6Q+
367 | Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
368 | ZP+lQWT/pUFk/6VBZP+lQWT/pkRm/965xv///////////+PFz//Pmq3/0Jyu/9Ccrv/QnK7/0Jyu/9Cc
369 | rv/QnK7/0Jyu/9Ccrv/QnK7/0Jyu/9Ccrv/QnK7/0Jyu/9Ccrv/QnK7/0Jyu/9Ccrv/Pmq3/5cjS////
370 | ////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
371 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pD5i/8F8lP/8+fr/////////////////////////
372 | ////////////////////////////////////////////////////////////////////////////////
373 | ////////////////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
374 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUBj/6xPcP/s197/////////
375 | ////////////////////////////////////////////////////////////////////////////////
376 | ////////////////////////////////////////zZap/6Q+Yv+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
377 | ZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
378 | ZP+8cYv/y5Cl/8qPpP/Kj6T/yo+k/8qPpP/Kj6T/yo+k/8qPpP/Kj6T/yo+k/8qPpP/Kj6T/yo+k/8qP
379 | pP/Kj6T/yo+k/8qPpP/Kj6T/yo+k/8qPpP/Kj6T/yo+k/8qPpP/KkKT/tmSB/6RAY/+lQWT/pUFk/6VB
380 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
381 | ZP+lQWT/pUFk/6VBZP+kP2L/pD5h/6Q+Yf+kPmH/pD5h/6Q+Yf+kPmH/pD5h/6Q+Yf+kPmH/pD5h/6Q+
382 | Yf+kPmH/pD5h/6Q+Yf+kPmH/pD5h/6Q+Yf+kPmH/pD5h/6Q+Yf+kPmH/pD5h/6Q+Yf+kPmH/pEBj/6VB
383 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VB
384 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
385 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
386 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RBZCqlQWQqpUFk46VB
387 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
388 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
389 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk46RB
390 | ZCqlQWQqpUFk46VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
391 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
392 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
393 | ZP+lQWT/pUFk46RBZCqlQWQlpUFk3qVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
394 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
395 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
396 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk3qVBZCWlQWQNpUFkuKVBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
397 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
398 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
399 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFkuKVBZA2lQWQApUFkTqVBZOulQWT/pUFk/6VB
400 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
401 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VB
402 | ZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWT/pUFk/6VBZP+lQWTrpUFkTqVBZAClQWQApUFkA6VB
403 | ZE6lQWS5pUFk36VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VB
404 | ZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VB
405 | ZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk46VBZOOlQWTjpUFk36VBZLqlQWROpUFkA6VB
406 | ZAAAAAAApD9jAKpIZwClQWQOpUFkJaVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVB
407 | ZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVB
408 | ZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQqpUFkKqVBZCqlQWQrpUFkJqVB
409 | ZA6sSmIApEBkAAAAAADgAAAAAAcAAIAAAAAAAQAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
410 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
411 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
412 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
413 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
414 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
415 | AAAAAAAAAAAAAAAAAACAAAAAAAEAAIAAAAAAAQAA4AAAAAAHAACJUE5HDQoaCgAAAA1JSERSAAABAAAA
416 | AQAIBgAAAFxyqGYAAA/WSURBVHja7d17kJX1fcfx9/c55+yFheWiK7KLYriEqig08YJSqlDHZjpT01uS
417 | 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
484 | AElFTkSuQmCC
485 |
486 |
487 |
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Debug/Leaf.xNet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Debug/Leaf.xNet.dll
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Debug/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Debug/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Debug/overFlood.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Debug/overFlood.exe
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Debug/overFlood.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Debug/overFlood.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Debug/overFlood.pdb
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Release/Leaf.xNet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Release/Leaf.xNet.dll
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Release/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Release/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Release/overFlood.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Release/overFlood.exe
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Release/overFlood.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/overFlood/overFlood/bin/Release/overFlood.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/bin/Release/overFlood.pdb
--------------------------------------------------------------------------------
/overFlood/overFlood/obj/Debug/DesignTimeResolveAssemblyReferences.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/obj/Debug/DesignTimeResolveAssemblyReferences.cache
--------------------------------------------------------------------------------
/overFlood/overFlood/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MonsterPrograms/overFlood/351f5bc901597dc565ee3509bf84c60a08f4684f/overFlood/overFlood/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
--------------------------------------------------------------------------------