private void Generating(object sender, DoWorkEventArgs e)
        {
            _sw.Reset();
            _sw.Start();
            _totalRows = 0;
            base.Dispatcher.BeginInvoke((Action) delegate
            {
                GenerateProjectsButton.IsEnabled = false;
            });
            List <string> ext = new List <string>
            {
                ".txt"
            };
            IEnumerable <string> enumerable = from s in Directory.GetFiles(_linksPath, "*.*", SearchOption.TopDirectoryOnly)
                                              where ext.Contains(Path.GetExtension(s))
                                              select s;

            string[][] validMails = GetValidMails(_emailsFilePath);
            int        num        = 0;

            _linksFilePaths = ((enumerable as List <string>) ?? enumerable.ToList());
            if (_linksFilePaths.Count > validMails.Length)
            {
                System.Windows.MessageBox.Show($"Email list contains `{validMails.Length}` unused emails, you trying to generate `{_linksFilePaths.Count}`", "Warning!", MessageBoxButton.OK);
            }
            else
            {
                int linesTotal = _linksFilePaths.SelectMany(File.ReadAllLines).Count();
                ProcessedLinesProgressBar.Dispatcher.BeginInvoke((Action) delegate
                {
                    ProcessedLinesProgressBar.Maximum = (double)linesTotal;
                });
                int num2 = 0;
                foreach (string linksFilePath in _linksFilePaths)
                {
                    ProjectName = Path.GetFileNameWithoutExtension(linksFilePath).Replace('.', '_') + "_Generated";
                    string   text     = GenerateNickName();
                    string   text2    = RandomStringAlpha(11);
                    string   text3    = validMails[num % validMails.Length][0];
                    string   text4    = validMails[num % validMails.Length][1];
                    string[] array    = GenerateCountryCity();
                    string   path     = Path.Combine(_outputPath, ProjectName + ".xml");
                    string   text5    = "C:\\Temp\\" + ProjectName + "_URLs.txt";
                    string[] array2   = File.ReadAllLines(linksFilePath);
                    string   contents = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + Environment.NewLine +
                                        "<XRumerProject>" + Environment.NewLine +
                                        "  <PrimarySection>" + Environment.NewLine +
                                        "    <ProjectName>" + ProjectName + "</ProjectName>" + Environment.NewLine +
                                        "    <ProjectFormat>ANSI</ProjectFormat>" + Environment.NewLine +
                                        "    <NickName>" + text + "</NickName>" + Environment.NewLine +
                                        "    <RealName>" + text + RandomString(2) + "</RealName>" + Environment.NewLine +
                                        "    <Password>" + text2 + "</Password>" + Environment.NewLine +
                                        "    <EmailAddress>" + text3 + "</EmailAddress>" + Environment.NewLine +
                                        "    <EmailPassword>" + text4 + "</EmailPassword>" + Environment.NewLine +
                                        "    <EmailLogin>" + text3 + "</EmailLogin>" + Environment.NewLine +
                                        "    <EmailPOP>" + SetEmailPop(text3) + "</EmailPOP>" + Environment.NewLine +
                                        "    <Homepage>#file_links_A[\"C:\\Temp\\" + ProjectName + "_URLs.txt\",1,N]</Homepage>" + Environment.NewLine +
                                        $"    <ICQ>{_rnd.Next(111111111, 999999999)}</ICQ>" + Environment.NewLine +
                                        "    <City>" + array[1] + "</City>" + Environment.NewLine +
                                        "    <Country>" + array[0] + "</Country>" + Environment.NewLine +
                                        "    <Occupation>" + GenerateOccupation() + "</Occupation>" + Environment.NewLine +
                                        "    <Interests>" + GenerateInterests() + "</Interests>" + Environment.NewLine +
                                        "    <Signature>#file_links_A[\"" + text5 + "\",1,N]</Signature>" + Environment.NewLine +
                                        "    <Gender>0</Gender>" + Environment.NewLine +
                                        "    <UnknownFields></UnknownFields>" + Environment.NewLine +
                                        "    <PollTitle></PollTitle>" + Environment.NewLine +
                                        "    <PollOption1></PollOption1>" + Environment.NewLine +
                                        "    <PollOption2></PollOption2>" + Environment.NewLine +
                                        "    <PollOption3></PollOption3>" + Environment.NewLine +
                                        "    <PollOption4></PollOption4>" + Environment.NewLine +
                                        "    <PollOption5></PollOption5>" + Environment.NewLine +
                                        "  </PrimarySection>\r\n" +
                                        "  <SecondarySection>\r\n" +
                                        "    <Subject1>#file_links_A[\"C:\\Temp\\" + ProjectName + "_Titles.txt\",1,N]</Subject1>\r\n" +
                                        "    <Subject2>#file_links_A[\"C:\\Temp\\" + ProjectName + "_Titles.txt\",1,N]</Subject2>\r\n" +
                                        "    <PostText>#file_links_A[\"C:\\Temp\\" + ProjectName + "_Texts.txt\",1,N]</PostText>\r\n" +
                                        "    <Prior>бизнес\r\n" +
                                        "досуг\r\n" +
                                        "объяв\r\n" +
                                        "курилка\r\n" +
                                        "флейм\r\n" +
                                        "флэйм\r\n" +
                                        "основн\r\n" +
                                        "развлеч\r\n" +
                                        "оффтопик\r\n" +
                                        "офтопик\r\n" +
                                        "офф-топик\r\n" +
                                        "прочее\r\n" +
                                        "разное\r\n" +
                                        "обо всём\r\n" +
                                        "flood\r\n" +
                                        "flame\r\n" +
                                        "stuff\r\n" +
                                        "blah\r\n" +
                                        "off-topic\r\n" +
                                        "off topic\r\n" +
                                        "offtopic\r\n" +
                                        "oftopic\r\n" +
                                        "general\r\n" +
                                        "common\r\n" +
                                        "business\r\n" +
                                        "обща\r\n" +
                                        "общий\r\n" +
                                        "общее\r\n" +
                                        "общие\r\n" +
                                        "реклам\r\n" +
                                        "adver</Prior>\r\n" +
                                        "    <OnlyPriors>false</OnlyPriors>\r\n" +
                                        "  </SecondarySection>\r\n" +
                                        "</XRumerProject>";
                    if (Regex.IsMatch(array2.First(), "http://.+"))
                    {
                        Task <List <string[]> > task = WebParser.AccessTheWebAsync(array2.ToList(), num2, _threads, backgroundWorker);
                        task.Wait();
                        List <string[]> result = task.Result;
                        num2 = (_totalRows = num2 + array2.Length);
                        backgroundWorker.ReportProgress(num2);
                        if (result != null && result.Count > 0)
                        {
                            string contents2 = string.Join(Environment.NewLine, from l in result
                                                           select l[0]);
                            string contents3 = string.Join(Environment.NewLine, from l in result
                                                           select l[1]);
                            string contents4 = string.Join(Environment.NewLine, result?.Select(PerformText));
                            File.WriteAllText("C:\\Temp\\" + ProjectName + "_URLs.txt", contents2);
                            File.WriteAllText("C:\\Temp\\" + ProjectName + "_Texts.txt", contents4);
                            File.WriteAllText("C:\\Temp\\" + ProjectName + "_Titles.txt", contents3);
                            File.AppendAllText(GetUsedEmailsFilePath(_emailsFilePath), text3 + Environment.NewLine);
                            File.WriteAllText(path, contents);
                        }
                    }
                    else
                    {
                        try
                        {
                            JArray jArray;
                            if ((jArray = (JsonConvert.DeserializeObject(array2.First()) as JArray)) != null)
                            {
                                List <string> values = (from x in jArray.Children()
                                                        select((string)x["link"]).Replace("\n", "").Replace("\r", "")).ToList();
                                List <string> values2 = (from x in jArray.Children()
                                                         select((string)x["title"]).Replace("\n", "").Replace("\r", "")).ToList();
                                List <string> values3 = (from x in jArray.Children()
                                                         select PerformText(new string[2]
                                {
                                    ((string)x["link"]).Replace("\n", "").Replace("\r", ""),
                                    ((string)x["description"]).Replace("\n", "").Replace("\r", "")
                                })).ToList();
                                File.WriteAllText("C:\\Temp\\" + ProjectName + "_URLs.txt", string.Join(Environment.NewLine, values));
                                using (StreamWriter streamWriter = new StreamWriter(File.Open("C:\\Temp\\" + ProjectName + "_Texts.txt", FileMode.Create), Encoding.GetEncoding("Windows-1251")))
                                {
                                    streamWriter.Write(string.Join(Environment.NewLine, values3));
                                }
                                using (StreamWriter streamWriter2 = new StreamWriter(File.Open("C:\\Temp\\" + ProjectName + "_Titles.txt", FileMode.Create), Encoding.GetEncoding("Windows-1251")))
                                {
                                    streamWriter2.Write(string.Join(Environment.NewLine, values2));
                                }
                                File.AppendAllText(GetUsedEmailsFilePath(_emailsFilePath), text3 + Environment.NewLine);
                                File.WriteAllText(path, contents);
                                num2++;
                                _totalRows += jArray.Count;
                                backgroundWorker.ReportProgress(num2);
                            }
                        }
                        catch (Exception ex)
                        {
                            System.Windows.MessageBox.Show("Fail to deserialize content in file `" + linksFilePath + "` as json " + Environment.NewLine + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Hand);
                        }
                    }
                    num++;
                }
            }
        }