본문 바로가기

카테고리 없음

베타 7.0 소스 (2019-04-21 오후 21시09분)

//"abcdefghijklmnopqrstuvwxyz ',.-*/=!?’×…°\\"

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//
using System.Diagnostics;
using System.Net;

namespace 암기왕_b7._0
{
    public partial class _Form_Main : Form
    {
        public _Form_Main()
        {
            InitializeComponent();
        }

        Dictionary<string, string> dicIrrV = new Dictionary<string, string>();
        Dictionary<string, string> dicIrrN = new Dictionary<string, string>();

        const string _DATAPATH = @"data\";
        const string _LOGPATH = @"data\log\";
        const string _DICPATH = @"data\dic\";
        const string _HISTORYPATH = @"data\history\";

        Random myRnd = new Random();

        string _CRLF = Environment.NewLine;

        string _sLogTAB = "";

        DateTime _dtLogTIME = DateTime.Now;

        private void _myLog(string sLog, int nLogLevel = 0, int nTabDepth = 0)
        {
            StackTrace stackTrace = new StackTrace();
            string sParent = stackTrace.GetFrame(1).GetMethod().Name;
            if (sParent.IndexOf("__") > -1)
            {
                sParent = sParent.Split(new[] { "__" }, StringSplitOptions.None)[1];
            }
            if (sParent.IndexOf("|") > -1)
            {
                sParent = sParent.Split(new[] { "|" }, StringSplitOptions.None)[0];
            }
            sParent += "()";
            if (nTabDepth == -1)
            {
                _sLogTAB = _sLogTAB.Substring(1);
            }
            string sElsped =
                (DateTime.Now - _dtLogTIME).TotalSeconds.ToString("N3");
            //(DateTime.Now - _dtLogTIME).TotalSeconds.ToString("N3").PadLeft(7);
            if (System.Convert.ToDouble(sElsped) > 60.0)
            {
                sElsped = "> 1min.";
            }
            string sLine =
                DateTime.Now.ToString(
                "yyyy-MM-dd HH:mm:ss.fff") + "\t" +
                sElsped + "\t" +
                nLogLevel + "\t" +
                _sLogTAB +
                sParent + "\t" +
                sLog +
                _CRLF;
            string sLine4Strip =
                //DateTime.Now.ToString("HH:mm:ss") + " " +
                "[" + sElsped + "초 " +
                (_toolStripProgressBar_Main.Value) + "/" + _toolStripProgressBar_Main.Maximum + "] " +
                //((sParent.Length > 20) ? 
                //sParent.Substring(0,19) + "…" : sParent.PadRight(10)) +" " +
                sLog;
            _dtLogTIME = DateTime.Now;
            if (sLine4Strip.IndexOf("완료") > -1)
            {
                _toolStripStatusLabel_Log.Text = sLine4Strip;
            }

            if (!System.IO.File.Exists(
                _LOGPATH + DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt"))
            {
                try
                {
                    System.IO.File.AppendAllText(
                        _LOGPATH +
                        DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt",
                        "날짜\t소요시간\t레벨\t내용" + _CRLF + sLine,
                        Encoding.UTF8);
                }
                catch (Exception)
                {
                    //최초 실행시, 에러 날 수 있음.
                }
            }
            else
            {
                System.IO.File.AppendAllText(
                    _LOGPATH +
                    DateTime.Now.ToString("yyyy-MM-dd") + "_log.txt",
                    sLine,
                    Encoding.UTF8);
            }
            if (nTabDepth == +1) { _sLogTAB += "\t"; }
        }

        private void _toolStripStatusLabel_Log_Click(object sender, EventArgs e)
        {
            Process.Start(@"log");
        }

        private void _myBulkIntroReset()
        {
            _textBox_Bulk.ForeColor = SystemColors.GrayText;
            _textBox_Bulk.Clear();
            _textBox_Bulk.AppendText(
                "" + _CRLF +
                "이곳에, 사전 정보를 얻어올 단어 및 숙어를 써주세요." + _CRLF +
                "" + _CRLF +
                "한줄에 한 단어 및 숙어를 써주세요." + _CRLF +
                "" + _CRLF +
                "클립 보드에서 붙혀 넣기도 가능 합니다. (ctrl + C / ctrl + V)" + _CRLF +
                "" + _CRLF +
                "영어 알파벳, 공백, 마침표만 검색 가능 합니다." + _CRLF +
                "");
        }

        private void _textBox_Bulk_Enter(object sender, EventArgs e)
        {
            if (_textBox_Bulk.Text.IndexOf("이곳에,") > -1)
            {
                _textBox_Bulk.Clear();
                _textBox_Bulk.ForeColor = SystemColors.WindowText;
            }
        }

        private void _textBox_Bulk_Leave(object sender, EventArgs e)
        {
            if (_textBox_Bulk.Text.Trim().Length == 0)
            {
                _myBulkIntroReset();
            }
        }

        private void _Form_Main_Load(object sender, EventArgs e)
        {
            void _myInit()
            {
                //https://www.englishpage.com/irregularverbs/irregularverbs.html
                //http://www.esldesk.com/vocabulary/irregular-nouns
                //https://en.wikipedia.org/wiki/Contraction_(grammar)#English

                //dicIrrV["be"] = "was|were|been";
                //dicIrrV["am"] = "were|been";
                //dicIrrV["is"] = "was|been";
                //dicIrrV["are"] = "were|been";
                //dicIrrV["will"] = "would";
                //dicIrrV["may"] = "might";
                //dicIrrV["must"] = "had to";
                //dicIrrV["have"] = "had|had";
                //dicIrrV["can"] = "could";
                //dicIrrV["shall"] = "should";

                //dicIrrV["arise"] = "arose|arisen";
                //dicIrrV["awake"] = "awakened|awoke|awakened|awoken";
                //dicIrrV["backslide"] = "backslid|backslidden|backslid";
                //dicIrrV["bear"] = "bore|born|borne";
                //dicIrrV["beat"] = "beat|beaten|beat";
                //dicIrrV["become"] = "became|become";
                //dicIrrV["begin"] = "began|begun";
                //dicIrrV["bend"] = "bent|bent";
                //dicIrrV["bet"] = "bet|betted|bet|betted";
                //dicIrrV["bid"] = "bid|bade|bidden|bid|bid";
                //dicIrrV["bind"] = "bound|bound";
                //dicIrrV["bite"] = "bit|bitten";
                //dicIrrV["bleed"] = "bled|bled";
                //dicIrrV["blow"] = "blew|blown";
                //dicIrrV["break"] = "broke|broken";
                //dicIrrV["breed"] = "bred|bred";
                //dicIrrV["bring"] = "brought|brought";
                //dicIrrV["broadcast"] = "broadcast|broadcasted|broadcast|broadcasted";
                //dicIrrV["browbeat"] = "browbeat|browbeaten|browbeat";
                //dicIrrV["build"] = "built|built";
                //dicIrrV["burn"] = "burned|burnt|burned|burnt";
                //dicIrrV["burst"] = "burst|burst";
                //dicIrrV["bust"] = "busted|bust|busted|bust";
                //dicIrrV["buy"] = "bought|bought";
                //dicIrrV["cast"] = "cast|cast";
                //dicIrrV["catch"] = "caught|caught";
                //dicIrrV["choose"] = "chose|chosen";
                //dicIrrV["cling"] = "clung|clung";
                //dicIrrV["clothe"] = "clothed|clad|clothed|clad";
                //dicIrrV["come"] = "came|come";
                //dicIrrV["cost"] = "cost|cost";
                //dicIrrV["creep"] = "crept|crept";
                //dicIrrV["crossbreed"] = "crossbred|crossbred";
                //dicIrrV["cut"] = "cut|cut";
                //dicIrrV["daydream"] = "daydreamed|daydreamt|daydreamed|daydreamt";
                //dicIrrV["deal"] = "dealt|dealt";
                //dicIrrV["dig"] = "dug|dug";
                //dicIrrV["disprove"] = "disproved|disproved|disproven";
                //dicIrrV["dive"] = "dove|dived|dived|dived|dove|dived";
                //dicIrrV["do"] = "did|done";
                //dicIrrV["draw"] = "drew|drawn";
                //dicIrrV["dream"] = "dreamed|dreamt|dreamed|dreamt";
                //dicIrrV["drink"] = "drank|drunk";
                //dicIrrV["drive"] = "drove|driven";
                //dicIrrV["dwell"] = "dwelt|dwelled|dwelt|dwelled";
                //dicIrrV["eat"] = "ate|eaten";
                //dicIrrV["fall"] = "fell|fallen";
                //dicIrrV["feed"] = "fed|fed";
                //dicIrrV["feel"] = "felt|felt";
                //dicIrrV["fight"] = "fought|fought";
                //dicIrrV["find"] = "found|found";
                //dicIrrV["fit"] = "fitted|fit|fitted|fit|fit|fitted|fit|fitted";
                //dicIrrV["flee"] = "fled|fled";
                //dicIrrV["fling"] = "flung|flung";
                //dicIrrV["fly"] = "flew|flown";
                //dicIrrV["forbid"] = "forbade|forbidden";
                //dicIrrV["forecast"] = "forecast|forecast";
                //dicIrrV["forego"] = "forewent|foregone";
                //dicIrrV["forgo"] = "forewent|foregone";
                //dicIrrV["foresee"] = "foresaw|foreseen";
                //dicIrrV["foretell"] = "foretold|foretold";
                //dicIrrV["forget"] = "forgot|forgotten|forgot";
                //dicIrrV["forgive"] = "forgave|forgiven";
                //dicIrrV["forsake"] = "forsook|forsaken";
                //dicIrrV["freeze"] = "froze|frozen";
                //dicIrrV["frostbite"] = "frostbit|frostbitten";
                //dicIrrV["get"] = "got|gotten|got";
                //dicIrrV["give"] = "gave|given";
                //dicIrrV["go"] = "went|gone";
                //dicIrrV["grind"] = "ground|ground";
                //dicIrrV["grow"] = "grew|grown";
                //dicIrrV["hand-feed"] = "hand-fed|hand-fed";
                //dicIrrV["handwrite"] = "handwrote|handwritten";
                //dicIrrV["hang"] = "hung|hung";
                //dicIrrV["hear"] = "heard|heard";
                //dicIrrV["hew"] = "hewed|hewn|hewed";
                //dicIrrV["hide"] = "hid|hidden";
                //dicIrrV["hit"] = "hit|hit";
                //dicIrrV["hold"] = "held|held";
                //dicIrrV["hurt"] = "hurt|hurt";
                //dicIrrV["inbreed"] = "inbred|inbred";
                //dicIrrV["inlay"] = "inlaid|inlaid";
                //dicIrrV["input"] = "input|inputted|input|inputted";
                //dicIrrV["interbreed"] = "interbred|interbred";
                //dicIrrV["interweave"] = "interwove|interweaved|interwoven|interweaved";
                //dicIrrV["interwind"] = "interwound|interwound";
                //dicIrrV["jerry-build"] = "jerry-built|jerry-built";
                //dicIrrV["keep"] = "kept|kept";
                //dicIrrV["kneel"] = "knelt|kneeled|knelt|kneeled";
                //dicIrrV["knit"] = "knitted|knit|knitted|knit";
                //dicIrrV["know"] = "knew|known";
                //dicIrrV["lay"] = "laid|laid";
                //dicIrrV["lead"] = "led|led";
                //dicIrrV["lean"] = "leaned|leant|leaned|leant";
                //dicIrrV["leap"] = "leaped|leapt|leaped|leapt";
                //dicIrrV["learn"] = "learned|learnt|learned|learnt";
                //dicIrrV["leave"] = "left|left";
                //dicIrrV["lend"] = "lent|lent";
                //dicIrrV["let"] = "let|let";
                //dicIrrV["lie"] = "lay|lain|lied|lied";
                //dicIrrV["light"] = "lit|lighted|lit|lighted";
                //dicIrrV["lip-read"] = "lip-read|lip-read";
                //dicIrrV["lose"] = "lost|lost";
                //dicIrrV["make"] = "made|made";
                //dicIrrV["mean"] = "meant|meant";
                //dicIrrV["meet"] = "met|met";
                //dicIrrV["miscast"] = "miscast|miscast";
                //dicIrrV["misdeal"] = "misdealt|misdealt";
                //dicIrrV["misdo"] = "misdid|misdone";
                //dicIrrV["mishear"] = "misheard|misheard";
                //dicIrrV["mislay"] = "mislaid|mislaid";
                //dicIrrV["mislead"] = "misled|misled";
                //dicIrrV["mislearn"] = "mislearned|mislearnt|mislearned|mislearnt";
                //dicIrrV["misread"] = "misread|misread";
                //dicIrrV["misset"] = "misset|misset";
                //dicIrrV["misspeak"] = "misspoke|misspoken";
                //dicIrrV["misspell"] = "misspelled|misspelt|misspelled|misspelt";
                //dicIrrV["misspend"] = "misspent|misspent";
                //dicIrrV["mistake"] = "mistook|mistaken";
                //dicIrrV["misteach"] = "mistaught|mistaught";
                //dicIrrV["misunderstand"] = "misunderstood|misunderstood";
                //dicIrrV["miswrite"] = "miswrote|miswritten";
                //dicIrrV["mow"] = "mowed|mowed|mown";
                //dicIrrV["offset"] = "offset|offset";
                //dicIrrV["outbid"] = "outbid|outbid";
                //dicIrrV["outbreed"] = "outbred|outbred";
                //dicIrrV["outdo"] = "outdid|outdone";
                //dicIrrV["outdraw"] = "outdrew|outdrawn";
                //dicIrrV["outdrink"] = "outdrank|outdrunk";
                //dicIrrV["outdrive"] = "outdrove|outdriven";
                //dicIrrV["outfight"] = "outfought|outfought";
                //dicIrrV["outfly"] = "outflew|outflown";
                //dicIrrV["outgrow"] = "outgrew|outgrown";
                //dicIrrV["outleap"] = "outleaped|outleapt|outleaped|outleapt";
                //dicIrrV["outlie"] = "outlied|outlied";
                //dicIrrV["outride"] = "outrode|outridden";
                //dicIrrV["outrun"] = "outran|outrun";
                //dicIrrV["outsell"] = "outsold|outsold";
                //dicIrrV["outshine"] = "outshined|outshone|outshined|outshone";
                //dicIrrV["outshoot"] = "outshot|outshot";
                //dicIrrV["outsing"] = "outsang|outsung";
                //dicIrrV["outsit"] = "outsat|outsat";
                //dicIrrV["outsleep"] = "outslept|outslept";
                //dicIrrV["outsmell"] = "outsmelled|outsmelt|outsmelled|outsmelt";
                //dicIrrV["outspeak"] = "outspoke|outspoken";
                //dicIrrV["outspeed"] = "outsped|outsped";
                //dicIrrV["outspend"] = "outspent|outspent";
                //dicIrrV["outswear"] = "outswore|outsworn";
                //dicIrrV["outswim"] = "outswam|outswum";
                //dicIrrV["outthink"] = "outthought|outthought";
                //dicIrrV["outthrow"] = "outthrew|outthrown";
                //dicIrrV["outwrite"] = "outwrote|outwritten";
                //dicIrrV["overbid"] = "overbid|overbid";
                //dicIrrV["overbreed"] = "overbred|overbred";
                //dicIrrV["overbuild"] = "overbuilt|overbuilt";
                //dicIrrV["overbuy"] = "overbought|overbought";
                //dicIrrV["overcome"] = "overcame|overcome";
                //dicIrrV["overdo"] = "overdid|overdone";
                //dicIrrV["overdraw"] = "overdrew|overdrawn";
                //dicIrrV["overdrink"] = "overdrank|overdrunk";
                //dicIrrV["overeat"] = "overate|overeaten";
                //dicIrrV["overfeed"] = "overfed|overfed";
                //dicIrrV["overhang"] = "overhung|overhung";
                //dicIrrV["overhear"] = "overheard|overheard";
                //dicIrrV["overlay"] = "overlaid|overlaid";
                //dicIrrV["overpay"] = "overpaid|overpaid";
                //dicIrrV["override"] = "overrode|overridden";
                //dicIrrV["overrun"] = "overran|overrun";
                //dicIrrV["oversee"] = "oversaw|overseen";
                //dicIrrV["oversell"] = "oversold|oversold";
                //dicIrrV["oversew"] = "oversewed|oversewn|oversewed";
                //dicIrrV["overshoot"] = "overshot|overshot";
                //dicIrrV["oversleep"] = "overslept|overslept";
                //dicIrrV["overspeak"] = "overspoke|overspoken";
                //dicIrrV["overspend"] = "overspent|overspent";
                //dicIrrV["overspill"] = "overspilled|overspilt|overspilled|overspilt";
                //dicIrrV["overtake"] = "overtook|overtaken";
                //dicIrrV["overthink"] = "overthought|overthought";
                //dicIrrV["overthrow"] = "overthrew|overthrown";
                //dicIrrV["overwind"] = "overwound|overwound";
                //dicIrrV["overwrite"] = "overwrote|overwritten";
                //dicIrrV["partake"] = "partook|partaken";
                //dicIrrV["pay"] = "paid|paid";
                //dicIrrV["plead"] = "pleaded|pled|pleaded|pled";
                //dicIrrV["prebuild"] = "prebuilt|prebuilt";
                //dicIrrV["predo"] = "predid|predone";
                //dicIrrV["premake"] = "premade|premade";
                //dicIrrV["prepay"] = "prepaid|prepaid";
                //dicIrrV["presell"] = "presold|presold";
                //dicIrrV["preset"] = "preset|preset";
                //dicIrrV["preshrink"] = "preshrank|preshrunk";
                //dicIrrV["proofread"] = "proofread|proofread";
                //dicIrrV["prove"] = "proved|proven|proved";
                //dicIrrV["put"] = "put|put";
                //dicIrrV["quick-freeze"] = "quick-froze|quick-frozen";
                //dicIrrV["quit"] = "quit|quitted|quit|quitted";
                //dicIrrV["read"] = "read|read";
                //dicIrrV["reawake"] = "reawoke|reawaken";
                //dicIrrV["rebid"] = "rebid|rebid";
                //dicIrrV["rebind"] = "rebound|rebound";
                //dicIrrV["rebroadcast"] = "rebroadcast|rebroadcasted|rebroadcast|rebroadcasted";
                //dicIrrV["rebuild"] = "rebuilt|rebuilt";
                //dicIrrV["recast"] = "recast|recast";
                //dicIrrV["recut"] = "recut|recut";
                //dicIrrV["redeal"] = "redealt|redealt";
                //dicIrrV["redo"] = "redid|redone";
                //dicIrrV["redraw"] = "redrew|redrawn";
                //dicIrrV["refit"] = "refit|refitted|refit|refitted|refitted|refit|refitted|refit";
                //dicIrrV["regrind"] = "reground|reground";
                //dicIrrV["regrow"] = "regrew|regrown";
                //dicIrrV["rehang"] = "rehung|rehung";
                //dicIrrV["rehear"] = "reheard|reheard";
                //dicIrrV["reknit"] = "reknitted|reknit|reknitted|reknit";
                //dicIrrV["relay"] = "relaid|relaid|relayed|relayed";
                //dicIrrV["relearn"] = "relearned|relearnt|relearned|relearnt";
                //dicIrrV["relight"] = "relit|relighted|relit|relighted";
                //dicIrrV["remake"] = "remade|remade";
                //dicIrrV["repay"] = "repaid|repaid";
                //dicIrrV["reread"] = "reread|reread";
                //dicIrrV["rerun"] = "reran|rerun";
                //dicIrrV["resell"] = "resold|resold";
                //dicIrrV["resend"] = "resent|resent";
                //dicIrrV["reset"] = "reset|reset";
                //dicIrrV["resew"] = "resewed|resewn|resewed";
                //dicIrrV["retake"] = "retook|retaken";
                //dicIrrV["reteach"] = "retaught|retaught";
                //dicIrrV["retear"] = "retore|retorn";
                //dicIrrV["retell"] = "retold|retold";
                //dicIrrV["rethink"] = "rethought|rethought";
                //dicIrrV["retread"] = "retread|retread";
                //dicIrrV["retrofit"] = "retrofitted|retrofit|retrofitted|retrofit";
                //dicIrrV["rewake"] = "rewoke|rewaked|rewaken|rewaked";
                //dicIrrV["rewear"] = "rewore|reworn";
                //dicIrrV["reweave"] = "rewove|reweaved|rewoven|reweaved";
                //dicIrrV["rewed"] = "rewed|rewedded|rewed|rewedded";
                //dicIrrV["rewet"] = "rewet|rewetted|rewet|rewetted";
                //dicIrrV["rewin"] = "rewon|rewon";
                //dicIrrV["rewind"] = "rewound|rewound";
                //dicIrrV["rewrite"] = "rewrote|rewritten";
                //dicIrrV["rid"] = "rid|rid";
                //dicIrrV["ride"] = "rode|ridden";
                //dicIrrV["ring"] = "rang|rung";
                //dicIrrV["rise"] = "rose|risen";
                //dicIrrV["roughcast"] = "roughcast|roughcast";
                //dicIrrV["run"] = "ran|run";
                //dicIrrV["sand-cast"] = "sand-cast|sand-cast";
                //dicIrrV["saw"] = "sawed|sawed|sawn";
                //dicIrrV["say"] = "said|said";
                //dicIrrV["see"] = "saw|seen";
                //dicIrrV["seek"] = "sought|sought";
                //dicIrrV["sell"] = "sold|sold";
                //dicIrrV["send"] = "sent|sent";
                //dicIrrV["set"] = "set|set";
                //dicIrrV["sew"] = "sewed|sewn|sewed";
                //dicIrrV["shake"] = "shook|shaken";
                //dicIrrV["shave"] = "shaved|shaved|shaven";
                //dicIrrV["shear"] = "sheared|sheared|shorn";
                //dicIrrV["shed"] = "shed|shed";
                //dicIrrV["shine"] = "shined|shone|shined|shone";
                //dicIrrV["shit"] = "shit|shat|shitted|shit/ shat|shitted";
                //dicIrrV["shoot"] = "shot|shot";
                //dicIrrV["show"] = "showed|shown|showed";
                //dicIrrV["shrink"] = "shrank|shrunk|shrunk";
                //dicIrrV["shut"] = "shut|shut";
                //dicIrrV["sight-read"] = "sight-read|sight-read";
                //dicIrrV["sing"] = "sang|sung";
                //dicIrrV["sink"] = "sank|sunk|sunk";
                //dicIrrV["sit"] = "sat|sat";
                //dicIrrV["slay"] = "slew|slayed|slain|slayed|slayed|slayed";
                //dicIrrV["sleep"] = "slept|slept";
                //dicIrrV["slide"] = "slid|slid";
                //dicIrrV["sling"] = "slung|slung";
                //dicIrrV["slink"] = "slinked|slunk|slinked|slunk";
                //dicIrrV["slit"] = "slit|slit";
                //dicIrrV["smell"] = "smelled|smelt|smelled|smelt";
                //dicIrrV["sneak"] = "sneaked|snuck|sneaked|snuck";
                //dicIrrV["sow"] = "sowed|sown|sowed";
                //dicIrrV["speak"] = "spoke|spoken";
                //dicIrrV["speed"] = "sped|speeded|sped|speeded";
                //dicIrrV["spell"] = "spelled|spelt|spelled|spelt";
                //dicIrrV["spend"] = "spent|spent";
                //dicIrrV["spill"] = "spilled|spilt|spilled|spilt";
                //dicIrrV["spin"] = "spun|spun";
                //dicIrrV["spit"] = "spit|spat|spit|spat";
                //dicIrrV["split"] = "split|split";
                //dicIrrV["spoil"] = "spoiled|spoilt|spoiled|spoilt";
                //dicIrrV["spoon-feed"] = "spoon-fed|spoon-fed";
                //dicIrrV["spread"] = "spread|spread";
                //dicIrrV["spring"] = "sprang|sprung|sprung";
                //dicIrrV["stand"] = "stood|stood";
                //dicIrrV["steal"] = "stole|stolen";
                //dicIrrV["stick"] = "stuck|stuck";
                //dicIrrV["sting"] = "stung|stung";
                //dicIrrV["stink"] = "stunk|stank|stunk";
                //dicIrrV["strew"] = "strewed|strewn|strewed";
                //dicIrrV["stride"] = "strode|stridden";
                //dicIrrV["strike"] = "struck|stricken|struck|struck|stricken";
                //dicIrrV["string"] = "strung|strung";
                //dicIrrV["strive"] = "strove|strived|striven|strived";
                //dicIrrV["sublet"] = "sublet|sublet";
                //dicIrrV["sunburn"] = "sunburned|sunburnt|sunburned|sunburnt";
                //dicIrrV["swear"] = "swore|sworn";
                //dicIrrV["sweat"] = "sweat|sweated|sweat|sweated";
                //dicIrrV["sweep"] = "swept|swept";
                //dicIrrV["swell"] = "swelled|swollen|swelled";
                //dicIrrV["swim"] = "swam|swum";
                //dicIrrV["swing"] = "swung|swung";
                //dicIrrV["take"] = "took|taken";
                //dicIrrV["teach"] = "taught|taught";
                //dicIrrV["tear"] = "tore|torn";
                //dicIrrV["telecast"] = "telecast|telecast";
                //dicIrrV["tell"] = "told|told";
                //dicIrrV["test-drive"] = "test-drove|test-driven";
                //dicIrrV["test-fly"] = "test-flew|test-flown";
                //dicIrrV["think"] = "thought|thought";
                //dicIrrV["throw"] = "threw|thrown";
                //dicIrrV["thrust"] = "thrust|thrust";
                //dicIrrV["tread"] = "trod|trodden|trod";
                //dicIrrV["typecast"] = "typecast|typecast";
                //dicIrrV["typeset"] = "typeset|typeset";
                //dicIrrV["typewrite"] = "typewrote|typewritten";
                //dicIrrV["unbend"] = "unbent|unbent";
                //dicIrrV["unbind"] = "unbound|unbound";
                //dicIrrV["unclothe"] = "unclothed|unclad|unclothed|unclad";
                //dicIrrV["underbid"] = "underbid|underbid";
                //dicIrrV["undercut"] = "undercut|undercut";
                //dicIrrV["underfeed"] = "underfed|underfed";
                //dicIrrV["undergo"] = "underwent|undergone";
                //dicIrrV["underlie"] = "underlay|underlain";
                //dicIrrV["undersell"] = "undersold|undersold";
                //dicIrrV["underspend"] = "underspent|underspent";
                //dicIrrV["understand"] = "understood|understood";
                //dicIrrV["undertake"] = "undertook|undertaken";
                //dicIrrV["underwrite"] = "underwrote|underwritten";
                //dicIrrV["undo"] = "undid|undone";
                //dicIrrV["unfreeze"] = "unfroze|unfrozen";
                //dicIrrV["unhang"] = "unhung|unhung";
                //dicIrrV["unhide"] = "unhid|unhidden";
                //dicIrrV["unknit"] = "unknitted|unknit|unknitted|unknit";
                //dicIrrV["unlearn"] = "unlearned|unlearnt|unlearned|unlearnt";
                //dicIrrV["unsew"] = "unsewed|unsewn|unsewed";
                //dicIrrV["unsling"] = "unslung|unslung";
                //dicIrrV["unspin"] = "unspun|unspun";
                //dicIrrV["unstick"] = "unstuck|unstuck";
                //dicIrrV["unstring"] = "unstrung|unstrung";
                //dicIrrV["unweave"] = "unwove|unweaved|unwoven|unweaved";
                //dicIrrV["unwind"] = "unwound|unwound";
                //dicIrrV["uphold"] = "upheld|upheld";
                //dicIrrV["upset"] = "upset|upset";
                //dicIrrV["wake"] = "woke|waked|woken|waked";
                //dicIrrV["waylay"] = "waylaid|waylaid";
                //dicIrrV["wear"] = "wore|worn";
                //dicIrrV["weave"] = "wove|weaved|woven|weaved";
                //dicIrrV["wed"] = "wed|wedded|wed|wedded";
                //dicIrrV["weep"] = "wept|wept";
                //dicIrrV["wet"] = "wet|wetted|wet|wetted";
                //dicIrrV["whet"] = "whetted|whetted";
                //dicIrrV["win"] = "won|won";
                //dicIrrV["wind"] = "wound|wound";
                //dicIrrV["withdraw"] = "withdrew|withdrawn";
                //dicIrrV["withhold"] = "withheld|withheld";
                //dicIrrV["withstand"] = "withstood|withstood";
                //dicIrrV["wring"] = "wrung|wrung";
                //dicIrrV["write"] = "wrote|written";

                //dicIrrN["addendum"] = "addenda";
                //dicIrrN["alga"] = "algae";
                //dicIrrN["alumna"] = "alumnae";
                //dicIrrN["alumnus"] = "alumni";
                //dicIrrN["analysis"] = "analyses";
                //dicIrrN["antenna"] = "antennas|antennae";
                //dicIrrN["apparatus"] = "apparatuses";
                //dicIrrN["appendix"] = "appendices|appendixes";
                //dicIrrN["axis"] = "axes";
                //dicIrrN["bacillus"] = "bacilli";
                //dicIrrN["bacterium"] = "bacteria";
                //dicIrrN["basis"] = "bases";
                //dicIrrN["beau"] = "beaux";
                //dicIrrN["bison"] = "bison";
                //dicIrrN["buffalo"] = "buffalos|buffaloes";
                //dicIrrN["bureau"] = "bureaus";
                //dicIrrN["bus"] = "busses|buses";
                //dicIrrN["cactus"] = "cactuses|cacti";
                //dicIrrN["calf"] = "calves";
                //dicIrrN["child"] = "children";
                //dicIrrN["corps"] = "corps";
                //dicIrrN["corpus"] = "corpora|corpuses";
                //dicIrrN["crisis"] = "crises";
                //dicIrrN["criterion"] = "criteria";
                //dicIrrN["curriculum"] = "curricula";
                //dicIrrN["datum"] = "data";
                //dicIrrN["deer"] = "deer";
                //dicIrrN["diagnosis"] = "diagnoses";
                //dicIrrN["die"] = "dice";
                //dicIrrN["dwarf"] = "dwarfs|dwarves";
                //dicIrrN["echo"] = "echoes";
                //dicIrrN["elf"] = "elves";
                //dicIrrN["ellipsis"] = "ellipses";
                //dicIrrN["embargo"] = "embargoes";
                //dicIrrN["emphasis"] = "emphases";
                //dicIrrN["erratum"] = "errata";
                //dicIrrN["fireman"] = "firemen";
                //dicIrrN["fish"] = "fish|fishes";
                //dicIrrN["focus"] = "focuses";
                //dicIrrN["foot"] = "feet";
                //dicIrrN["formula"] = "formulas";
                //dicIrrN["fungus"] = "fungi|funguses";
                //dicIrrN["genus"] = "genera";
                //dicIrrN["goose"] = "geese";
                //dicIrrN["half"] = "halves";
                //dicIrrN["hero"] = "heroes";
                //dicIrrN["hippopotamus"] = "hippopotami|hippopotamuses";
                //dicIrrN["hoof"] = "hoofs|hooves";
                //dicIrrN["hypothesis"] = "hypotheses";
                //dicIrrN["index"] = "indices|indexes";
                //dicIrrN["knife"] = "knives";
                //dicIrrN["leaf"] = "leaves";
                //dicIrrN["life"] = "lives";
                //dicIrrN["loaf"] = "loaves";
                //dicIrrN["louse"] = "lice";
                //dicIrrN["man"] = "men";
                //dicIrrN["matrix"] = "matrices";
                //dicIrrN["means"] = "means";
                //dicIrrN["medium"] = "media";
                //dicIrrN["memorandum"] = "memoranda";
                //dicIrrN["millennium"] = "millenniums|milennia";
                //dicIrrN["moose"] = "moose";
                //dicIrrN["mosquito"] = "mosquitoes";
                //dicIrrN["mouse"] = "mice";
                //dicIrrN["nebula"] = "nebulae|nebulas";
                //dicIrrN["neurosis"] = "neuroses";
                //dicIrrN["nucleus"] = "nuclei";
                //dicIrrN["oasis"] = "oases";
                //dicIrrN["octopus"] = "octopi|octopuses";
                //dicIrrN["ovum"] = "ova";
                //dicIrrN["ox"] = "oxen";
                //dicIrrN["paralysis"] = "paralyses";
                //dicIrrN["parenthesis"] = "parentheses";
                //dicIrrN["person"] = "people";
                //dicIrrN["phenomenon"] = "phenomena";
                //dicIrrN["potato"] = "potatoes";
                //dicIrrN["radius"] = "radii|radiuses";
                //dicIrrN["scarf"] = "scarfs|scarves";
                //dicIrrN["scissors"] = "scissors";
                //dicIrrN["self"] = "selves";
                //dicIrrN["series"] = "series";
                //dicIrrN["sheep"] = "sheep";
                //dicIrrN["shelf"] = "shelves";
                //dicIrrN["species"] = "species";
                //dicIrrN["stimulus"] = "stimuli";
                //dicIrrN["stratum"] = "strata";
                //dicIrrN["syllabus"] = "syllabi|syllabuses";
                //dicIrrN["symposium"] = "symposia|symposiums";
                //dicIrrN["synopsis"] = "synopses";
                //dicIrrN["synthesis"] = "syntheses";
                //dicIrrN["tableau"] = "tableaux";
                //dicIrrN["that"] = "those";
                //dicIrrN["thesis"] = "theses";
                //dicIrrN["thief"] = "thieves";
                //dicIrrN["this"] = "these";
                //dicIrrN["tomato"] = "tomatoes";
                //dicIrrN["tooth"] = "teeth";
                //dicIrrN["torpedo"] = "torpedoes";
                //dicIrrN["vertebra"] = "vertebrae";
                //dicIrrN["veto"] = "vetoes";
                //dicIrrN["vita"] = "vitae";
                //dicIrrN["watch"] = "watches";
                //dicIrrN["wife"] = "wives";
                //dicIrrN["wolf"] = "wolves";
                //dicIrrN["woman"] = "women";
                //dicIrrN["zero"] = "zeros|zeroes";

                System.IO.Directory.CreateDirectory(_DATAPATH);
                System.IO.Directory.CreateDirectory(_LOGPATH);
                string[] asFiles =
                    System.IO.Directory.GetFiles(_LOGPATH, "*_log.txt");
                List<string> lstFiles = asFiles.ToList();
                lstFiles.Reverse();
                while (lstFiles.Count >= 10)
                {
                    System.IO.File.Delete(lstFiles[lstFiles.Count - 1]);
                    lstFiles.RemoveAt(lstFiles.Count - 1);
                }
                System.IO.Directory.CreateDirectory(_DICPATH);
                //System.IO.Directory.CreateDirectory(_HISTORYPATH + "입력일자");
                //System.IO.Directory.CreateDirectory(_HISTORYPATH + "최종시험일자");
                System.IO.Directory.CreateDirectory(_HISTORYPATH + "최근시험결과");
                System.IO.Directory.CreateDirectory(_HISTORYPATH + "난이도");
                System.IO.Directory.CreateDirectory(_HISTORYPATH + "중요도");
                System.IO.Directory.CreateDirectory(_HISTORYPATH + "태그");
                //System.IO.Directory.CreateDirectory(_HISTORYPATH + "시험횟수");
                //System.IO.Directory.CreateDirectory(_HISTORYPATH + "맞은횟수");
                //System.IO.Directory.CreateDirectory(_HISTORYPATH + "틀린횟수");
                _myBulkIntroReset();
            }

            {
                _myInit();
            }
        }

        private void _Form_Main_FormClosing(object sender, FormClosingEventArgs e)
        {
        }

        private void _myStartBulkGetDic()
        {
            bool _myCheckFileName(string sWord)
            {
                bool lValid =
                    !string.IsNullOrWhiteSpace(sWord) &&
                    sWord.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) < 0 &&
                    !System.IO.Path.GetFullPath(sWord).StartsWith(@"\\.\");
                foreach (char cTmp in sWord)
                {
                    if ("abcdefghijklmnopqrstuvwxyz .".IndexOf(cTmp) == -1)
                    {
                        lValid = false;
                        break;
                    }
                }
                return lValid;
            }

            bool _myCheckWordExists(string sWord)
            {
                string sRootFileName =
                    _DICPATH +
                    sWord[0] + @"\" +
                    sWord + @"\" +
                    sWord + "__";
                return System.IO.File.Exists(sRootFileName + "반의어.txt");
                //bool lExists = false;
                //System.IO.File.Exists(sRootFileName + "반의어정보.txt");

                //string[] asLines = System.IO.File.ReadAllLines(_DICPATH + "대표정보.txt",Encoding.UTF8);
                //foreach (string sLine in asLines)
                //{
                //    if (sLine.Split('\t')[0].Equals(sWord))
                //    {
                //        lExists = true;
                //        break;
                //    }
                //}
                //return lExists;
            }

            void _myGetDic(string sWord)
            {
                string sFrontPageHtml = "";

                string sThesaurusHtml = "";

                string s검색어 = sWord;
                string s용법 = "";
                // . / ( ) ⇄

                string s대표품사 = "";
                string s대표뜻 = "";
                string s대표유의어 = "";
                string s대표반의어 = "";
                string s대표참조어 = "";
                string s대표상호참조어 = "";

                string s발음기호 = "";
                string s중요도 = "";
                string s난이도 = "";
                string s복수형 = "";
                string s비교급 = "";
                string s최상급 = "";
                string s과거형 = "";
                string s과거분사형 = "";
                string s현재분사형 = "";
                string s3인칭단수현재형 = "";
                string s파생어 = "";
                string s정답후보 = "";
                string s유의어목록 = "";
                string s반의어목록 = "";
                string s뜻과예문목록 = "";

                string _mySplitJoin(string sResult, string s2Add)
                {
                    sResult = sResult + "|" + s2Add.Replace(" ", "").Replace(",", "");
                    sResult = string.Join("|", sResult.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries).Distinct());
                    if (sResult[0] == '|') { sResult = sResult.Substring(1, sResult.Length - 2); }
                    if (sResult[sResult.Length - 1] == '|') { sResult = sResult.Substring(0, sResult.Length - 2); }
                    return sResult.Trim().ToLower();
                }

                string _myGetHtml(string sUrl)
                {
                    using (WebClient wcClient = new WebClient())
                    {
                        return
                            Encoding.UTF8.GetString(wcClient.DownloadData(new Uri(sUrl)));
                    }
                }

                string _myGetRealHtml()
                {
                    string _myGetEntryUrl()
                    {
                        string sUrl =
                            "https://endic.naver.com/search.nhn?sLn=kr&searchOption=thesaurus&query=" +
                            sWord;
                        sThesaurusHtml = _myGetHtml(sUrl);
                        sUrl =
                            "https://endic.naver.com/search.nhn?sLn=kr&isOnlyViewEE=N&query=" +
                            sWord;
                        sFrontPageHtml = _myGetHtml(sUrl);
                        if (sFrontPageHtml.Length == 0)
                        {
                            return "";
                        }
                        string sSplit = "";
                        int nWordPos = sFrontPageHtml.IndexOf("/enkrEntry.nhn?entryId=");
                        if (nWordPos == -1) { nWordPos = int.MaxValue; }
                        int nIdiomPos = sFrontPageHtml.IndexOf("/enkrIdiom.nhn?idiomId=");
                        if (nIdiomPos == -1) { nIdiomPos = int.MaxValue; }

                        if (nIdiomPos < nWordPos)
                        {
                            sSplit = "/enkrIdiom.nhn?idiomId=";
                        }
                        else if (nIdiomPos > nWordPos)
                        {
                            sSplit = "/enkrEntry.nhn?entryId=";
                        }
                        else
                        {
                            return "";
                        }
                        return
                            "https://endic.naver.com" +
                            sSplit +
                            sFrontPageHtml.Split(new[] { sSplit }, StringSplitOptions.None)[1].
                            Split(new[] { "\" class=\"" }, StringSplitOptions.None)[0];
                    }

                    // 본체
                    {
                        string sUrl = _myGetEntryUrl();
                        if (sUrl.Length == 0)
                        {
                            return "";
                        }
                        string sHtml = _myGetHtml(sUrl);
                        if (sHtml.Length == 0)
                        {
                            return "";
                        }
                        return sHtml;
                    }
                }

                List<string> _myGetClassTree(string sHtml)
                {
                    WebBrowser wbTmp = new WebBrowser();
                    wbTmp.ScriptErrorsSuppressed = true;
                    wbTmp.DocumentText = "0";
                    while (wbTmp.Document == null || wbTmp.Document.Body == null)
                    {
                        Application.DoEvents();
                    }
                    wbTmp.Document.OpenNew(false).Write(sHtml);
                    while (wbTmp.Document == null || wbTmp.Document.Body == null)
                    {
                        Application.DoEvents();
                    }
                    HtmlElementCollection htmlElementCollection =
                        wbTmp.Document.Body.GetElementsByTagName("*");

                    StringBuilder sbClassTree = new StringBuilder();
                    HtmlElement htmlElement_Tmp; ;
                    foreach (HtmlElement htmlElement in htmlElementCollection)
                    {//
                        if (
                            (htmlElement.InnerText == null) ||
                            (htmlElement.InnerText.Trim().Length == 0) ||
                            (htmlElement.InnerText.IndexOf(_CRLF) > -1) ||
                            (htmlElement.InnerText.IndexOf("/r") > -1) ||
                            (htmlElement.InnerText.IndexOf("/n") > -1) ||
                            false)
                        {
                            continue;
                        }
                        htmlElement_Tmp = htmlElement;
                        if (htmlElement.InnerHtml.IndexOf("alt=HELP") > -1)
                        {
                            //_textBox_BulkErr.AppendText(htmlElement_Tmp.InnerHtml + Environment.NewLine);
                            continue;
                        }
                        sbClassTree.Append(htmlElement_Tmp.InnerText + "\t" + "/" + htmlElement_Tmp.GetAttribute("classname"));
                        while (htmlElement_Tmp.Parent != null)
                        {
                            htmlElement_Tmp = htmlElement_Tmp.Parent;
                            sbClassTree.Append("/" + htmlElement_Tmp.GetAttribute("classname"));
                        }
                        sbClassTree.Append(_CRLF);
                    }
                    wbTmp.Dispose();
                    List<string> lstClassTree =
                        sbClassTree.ToString().Trim().
                        Split(new[] { _CRLF }, StringSplitOptions.None).ToList();

                    List<string> lstUsefulTree = new List<string>();
                    lstUsefulTree.Add("//align_right//list_e2/word_num ");
                    lstUsefulTree.Add("//tit/word_view");
                    lstUsefulTree.Add("/fnt_e16/");
                    lstUsefulTree.Add("/fy/pron/word_view/////");
                    lstUsefulTree.Add("////sync/word_view/////");
                    lstUsefulTree.Add("/fnt_syn/dic_tit6/box_wrap1");
                    lstUsefulTree.Add("/fnt_k06/align_line");
                    lstUsefulTree.Add("/align_line");
                    lstUsefulTree.Add("list_a8");
                    lstUsefulTree.Add("/fnt_e07 _ttsText/bg/");
                    lstUsefulTree.Add("/fnt_k10//");
                    lstUsefulTree.Add("/list_a3");
                    lstUsefulTree.Add("/fnt_e01/");
                    lstUsefulTree.Add("/list_a4/");
                    lstUsefulTree.Add("/fnt_k05///list_e4/box_wrap21/zoom_con_lv1/////");
                    lstUsefulTree.Add("/mean bg/desc/list_a4/box_wrap1 dicType_O/zoom_con_lv1/");
                    lstUsefulTree.Add("/dic_tit4 dic_tit12/word_num_nobor/////");
                    lstUsefulTree.Add("/dic_tit3 dic_tit11/word_num_nobor/////");
                    lstUsefulTree.Add("/first/list_e3 list_e3x/word_num_nobor/////");
                    lstUsefulTree.Add("//list_e3 list_e3x/word_num_nobor/////");
                    lstUsefulTree.Add("//pad/list_e3 list_e3x/word_num_nobor/////");
                    lstUsefulTree.Add("///list_e3 list_e3x/word_num_nobor/////");

                    List<string> lstResultTree = new List<string>();
                    lstResultTree.Add("\t"); // 비어있는 경우 있음.

                    foreach (string sClassTree in lstClassTree)
                    {
                        foreach (string sUsefulTree in lstUsefulTree)
                        {
                            if (sClassTree.IndexOf(sUsefulTree) > -1)
                            {
                                lstResultTree.Add(sClassTree);
                                break;
                            }
                        }
                    }
                    //Clipboard.SetText(string.Join(_CRLF,lstResultTree.ToArray()));
                    //MessageBox.Show("Test");
                    return lstResultTree;
                }

                void _myGet대표정보(List<string> lstClassTree)
                {
                    foreach (string sLine in lstClassTree)
                    {
                        //                       "/fnt_k05//align_right//list_e2/word_num  /////"
                        if (sLine.Split('\t')[1].IndexOf("//align_right//list_e2/word_num  ") > -1)
                        {
                            // fellow 참조
                            // deep 반의어
                            // adult 유의어
                            // pool 상호참조
                            // MessageBox.Show(sLine.Split('\t')[0]);
                            string sMean = sLine.Split('\t')[0];
                            if (sMean.IndexOf("사]") > -1)
                            {
                                s대표품사 = sMean.Split(new[] { "사]" }, StringSplitOptions.None)[0] + "사]";
                            }
                            else
                            {
                                if (s대표품사.Length == 0)
                                {
                                    s대표품사 = "[숙어]";
                                }
                            }

                            if (sMean.IndexOf(" 참조 ") > -1)
                            {
                                s대표참조어 = sMean.Split(new[] { " 참조 " }, StringSplitOptions.None)[1];
                            }
                            else if (sMean.IndexOf(" 상호참조 ") > -1)
                            {
                                s대표상호참조어 = sMean.Split(new[] { " 상호참조 " }, StringSplitOptions.None)[1];
                            }
                            else if (sMean.IndexOf(" 유의어 ") > -1)
                            {
                                s대표유의어 = sMean.Split(new[] { " 유의어 " }, StringSplitOptions.None)[1];
                            }
                            else if (sMean.IndexOf(" 반의어 ") > -1)
                            {
                                s대표반의어 = sMean.Split(new[] { " 반의어 " }, StringSplitOptions.None)[1];
                            }
                            s대표뜻 =
                                sMean.
                                Replace(s대표품사, "").
                                Replace(" 참조 " + s대표참조어, "").
                                Replace(" 상호참조 " + s대표참조어, "").
                                Replace(" 유의어 " + s대표유의어, "").
                                Replace(" 반의어 " + s대표반의어, "").
                                Trim();
                            s대표유의어 = s대표유의어.Trim();
                            s대표반의어 = s대표반의어.Trim();
                            s대표참조어 = s대표참조어.Trim();
                            s대표상호참조어 = s대표상호참조어.Trim();
                            //MessageBox.Show(
                            //    s대표뜻 + Environment.NewLine +
                            //    s대표품사 + Environment.NewLine +
                            //    s대표유의어 + Environment.NewLine +
                            //    s대표반의어 + Environment.NewLine +
                            //    s대표참조어);
                            if (s대표뜻.Length == 0)
                            {//tour 때문임.
                                continue;
                            }
                            break;
                        }
                    }
                }

                void _myGet기본정보(List<string> lstClassTree, string sHtml)
                {
                    void _myGet용법()
                    {
                        for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
                        {
                            if (lstClassTree[nIndex].Split('\t')[1].IndexOf("//tit/word_view") == 0)
                            {//・ ⇄
                                s용법 =
                                    lstClassTree[nIndex].Split('\t')[0].
                                    Replace("|", "").
                                    Replace("·", "").
                                    Replace("・", "").
                                    Trim();
                                StringBuilder sbTmp = new StringBuilder();
                                foreach (char cTmp in s용법)
                                {
                                    //if ((0xAC00 <= cTmp && cTmp <= 0xD7A3) || (0x3131 <= cTmp && cTmp <= 0x318E))
                                    if ("abcdefghijklmnopqrstuvwxyz .".IndexOf((cTmp + "").ToLower()) == -1)
                                    {
                                        sbTmp.Append(" ");
                                    }
                                    else
                                    {
                                        sbTmp.Append(cTmp);
                                    }
                                }
                                s정답후보 = _mySplitJoin(s정답후보, string.Join("|", sbTmp.ToString().Split(new[] { " ", ",", "/" }, StringSplitOptions.RemoveEmptyEntries)));
                                //MessageBox.Show(s정답후보);
                                break;
                            }
                        }
                    }

                    void _myGet발음기호()
                    {
                        for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
                        {
                            if (
                                (lstClassTree[nIndex].Split('\t')[1].IndexOf("/fnt_e16/") == 0) &&
                                (lstClassTree[nIndex].Split('\t')[1].IndexOf("/fy/pron/word_view/////") > -1)
                                )
                            {
                                s발음기호 = lstClassTree[nIndex].Split('\t')[0].Trim();
                                break;
                            }
                        }
                    }

                    void _myGet중요도()
                    {
                        if (sHtml.IndexOf("Oxford 3000™ 중요 어휘 목록에 속하는 단어입니다.") > -1)
                        {
                            s중요도 = "[별3]";
                        }
                        else if (sHtml.IndexOf("star_num2.gif") > -1)
                        {
                            s중요도 = "[별2]";
                        }
                        else if (sHtml.IndexOf("star_num1.gif") > -1)
                        {
                            s중요도 = "[별1]";
                        }
                    }

                    void _myGet난이도()
                    {
                        //"\" target=\"_blank\">중1</a>"
                        //"\" target=\"_blank\">중2</a>"
                        //"\" target=\"_blank\">중3</a>"
                        //Clipboard.SetText(sHtml);
                        if (sHtml.IndexOf("\" target=\"_blank\">중1</a>") > -1)
                        {
                            s난이도 = s난이도 + "[중1]";
                        }
                        if (sHtml.IndexOf("\" target=\"_blank\">중2</a>") > -1)
                        {
                            s난이도 = s난이도 + "[중2]";
                        }
                        if (sHtml.IndexOf("\" target=\"_blank\">중3</a>") > -1)
                        {
                            s난이도 = s난이도 + "[중3]";
                        }
                        if (sHtml.IndexOf("\" target=\"_blank\">고교 공통</a>") > -1)
                        {
                            s난이도 = s난이도 + "[고0]";
                        }
                        if (sHtml.IndexOf("\" target=\"_blank\">고교 영어1</a>") > -1)
                        {
                            s난이도 = s난이도 + "[고1]";
                        }
                        if (sHtml.IndexOf("\" target=\"_blank\">고교 영어2/a>") > -1)
                        {
                            s난이도 = s난이도 + "[고2]";
                        }
                    }

                    void _myGet변형()
                    {
                        for (int nIndex = 0; nIndex < lstClassTree.Count(); nIndex++)
                        {
                            string sNewLine = lstClassTree[nIndex].Split('\t')[0].Trim();
                            if (lstClassTree[nIndex].Split('\t')[1].Equals("////sync/word_view/////"))
                            {
                                if (sNewLine.IndexOf(" < ") > -1)
                                {
                                    s비교급 = sNewLine.Split('<')[1].Trim();
                                    s최상급 = sNewLine.Split('<')[2].Trim();
                                }
                                else if (sNewLine.IndexOf("복수형 ") > -1)
                                {
                                    s복수형 = _mySplitJoin(s복수형, sNewLine.Replace("복수형 ", ""));
                                }
                                else if (sNewLine.IndexOf("과거 ") > -1)
                                {
                                    s과거형 = _mySplitJoin(s과거형, sNewLine.Replace("과거 ", ""));
                                }
                                else if (sNewLine.IndexOf("과거분사 ") > -1)
                                {
                                    s과거분사형 = _mySplitJoin(s과거분사형, sNewLine.Replace("과거분사 ", ""));
                                }
                                else if (sNewLine.IndexOf("현재분사 ") > -1)
                                {
                                    s현재분사형 = _mySplitJoin(s현재분사형, sNewLine.Replace("현재분사 ", ""));
                                }
                                else if (sNewLine.IndexOf("3인칭 단수 현재 ") > -1)
                                {
                                    s3인칭단수현재형 = _mySplitJoin(s3인칭단수현재형, sNewLine.Replace("3인칭 단수 현재 ", ""));
                                }
                                else if (sNewLine.IndexOf("사형 ") > -1)
                                {
                                    s파생어 = _mySplitJoin(s파생어, sNewLine.Split(new[] { "사형 " }, StringSplitOptions.RemoveEmptyEntries)[1]);
                                }
                            }
                        }
                        string s변형 =
                            s비교급 + "|" +
                            s최상급 + "|" +
                            s복수형 + "|" +
                            s과거형 + "|" +
                            s과거분사형 + "|" +
                            s현재분사형 + "|" +
                            s3인칭단수현재형;
                        s정답후보 = _mySplitJoin(s정답후보, s변형);
                        //MessageBox.Show(s정답후보);
                    }

                    //본체
                    {
                        _myGet용법();
                        _myGet발음기호();
                        _myGet중요도();
                        _myGet난이도();
                        _myGet변형();
                    }
                }

                void _myGet품사_뜻_예문_뜻(List<string> lstClassTree)
                {
                    void _myGet정답후보()
                    {
                        if (sWord.IndexOf(" ") > -1)
                        {
                            foreach (string sTmp in sWord.Split(' '))
                            {
                                string sRootFileName =
                                    _DICPATH +
                                    sTmp[0] + @"\" +
                                    sTmp + @"\" +
                                    sTmp + "_";
                                string[] asLines = System.IO.File.ReadAllLines(sRootFileName + "정답후보.txt", Encoding.UTF8);
                                s정답후보 = _mySplitJoin(s정답후보, asLines.Last().Split('\t')[2]);
                            }
                        }
                        if (dicIrrV.ContainsKey(sWord))
                        {
                            s정답후보 = _mySplitJoin(s정답후보, dicIrrV[sWord]);
                        }

                        if (dicIrrN.ContainsKey(sWord))
                        {
                            s정답후보 = _mySplitJoin(s정답후보, dicIrrN[sWord]);
                        }

                        if (
                            (sWord.Length > 1) &&
                            (sWord[sWord.Length - 1] == 'f')
                            )
                        {//leaf → leaves
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ves");
                        }
                        else if
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 'f') &&
                            (sWord[sWord.Length - 1] == 'e')
                            )
                        {//knife - knives
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "ves");
                        }
                        else if
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 'o') &&
                            (sWord[sWord.Length - 1] == 'n')
                            )
                        {//phenomenon → phenomena
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "a");
                        }
                        else if
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 'u') &&
                            (sWord[sWord.Length - 1] == 's')
                            )
                        {//fungus → fungi // bus 주의
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "i");
                        }
                        else if
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 'i') &&
                            (sWord[sWord.Length - 1] == 's')
                            )
                        {//axis → axes
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 2) + "es");
                        }
                        else if
                            (
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 'c') &&
                            (sWord[sWord.Length - 1] == 'h')
                            )
                            ||
                            (
                            (sWord.Length > 2) &&
                            (sWord[sWord.Length - 2] == 's') &&
                            (sWord[sWord.Length - 1] == 'h')
                            )
                            )
                        {//watch → watches
                            s정답후보 = _mySplitJoin(s정답후보, sWord + "es");
                        }
                        else if (
                            (sWord.Length > 1) &&
                            (sWord[sWord.Length - 1] == 'y')
                            )
                        {//candy → candies
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ies");
                            s정답후보 = _mySplitJoin(s정답후보, sWord.Substring(0, sWord.Length - 1) + "ied");
                        }
                        else if (
                            (sWord.Length > 1) &&
                            (sWord[sWord.Length - 1] == 'e')
                            )
                        {//engine-> d
                            s정답후보 = _mySplitJoin(s정답후보, sWord + "d");
                        }
                        else if (
                            (sWord[sWord.Length - 1] == 'o') ||
                            (sWord[sWord.Length - 1] == 's') ||
                            (sWord[sWord.Length - 1] == 'x') ||
                            (sWord[sWord.Length - 1] == 'z')
                            )
                        {//bus → buses
                            s정답후보 = _mySplitJoin(s정답후보, sWord + "es");
                        }
                        s정답후보 = _mySplitJoin(s정답후보, sWord + "ing");
                        s정답후보 = _mySplitJoin(s정답후보, sWord + "s");
                        s정답후보 = _mySplitJoin(s정답후보, sWord + "ed");
                        //MessageBox.Show(s정답후보);
                    }

                    string _myGet괄호문제(string s예문)
                    {
                        string[] as예문 = s예문.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
                        string[] as정답후보 = s정답후보.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries);
                        List<int> lstAPos = new List<int>();
                        for (int nLoop0 = 0; nLoop0 < as정답후보.Count(); nLoop0++)
                        {
                            for (int nLoop1 = 0; nLoop1 < as예문.Count(); nLoop1++)
                            {
                                if (as예문[nLoop1].ToLower().Equals(as정답후보[nLoop0]))
                                {
                                    lstAPos.Add(nLoop1);
                                }
                                else if (as예문[nLoop1].ToLower().IndexOf(as정답후보[nLoop0]) > -1)
                                {
                                    string sTmp = as예문[nLoop1].ToLower().Replace(as정답후보[nLoop0], "");
                                    if (sTmp.Trim().Length == 0) { continue; }
                                    if (
                                        sTmp[0] < 'a' ||
                                        sTmp[0] > 'z' ||
                                        sTmp[sTmp.Length - 1] < 'a' ||
                                        sTmp[sTmp.Length - 1] > 'z')
                                    {
                                        lstAPos.Add(nLoop1);
                                    }
                                }
                            }
                        }
                        if (lstAPos.Count == 0)
                        {
                            //실패
                            return "";
                        }
                        double nAVG = lstAPos.Average();
                        List<string> lstDistance = new List<string>();
                        foreach (int nAPos in lstAPos)
                        {
                            lstDistance.Add(Math.Abs(nAVG - nAPos).ToString("N2").PadLeft(5) + "\t" + nAPos);
                        }
                        lstDistance = lstDistance.Distinct().ToList();
                        lstDistance.Sort();// 가까운 순서대로 소팅됨
                                           // lst 4개
                                           // b ==> 1
                                           // 4 - 1 = 3
                                           // 1,3
                        if (sWord.Split(' ').Count() > lstDistance.Count)
                        {
                            //실패
                            return "";
                        }

                        lstDistance.RemoveRange(
                            sWord.Split(' ').Count(),
                            lstDistance.Count - sWord.Split(' ').Count());
                        lstAPos.Clear();
                        foreach (string item in lstDistance)
                        {
                            lstAPos.Add(System.Convert.ToInt32(item.Split('\t')[1]));
                        }

                        if (sWord.Split(' ').Count() > lstAPos.Count)
                        {
                            // 실패
                            return "";
                        }

                        // 1. 단어일때는 단순히, 정답 후보군과 일치 하거나, 이를 포함 하면 그게 정답! 그리고 그게 끝!
                        // 2. 숙어일때는,.,
                        //      In this lake, abound in fish and something.
                        //      숙어 : abound in
                        //      1번과 같은 알고리즘으로 문제를 해결 하면
                        //      (In) this lake, (abound) (in) fish and (something).
                        //       1     2    3        4     5    6    7    8
                        //정답    1                 4     5               8
                        // 이중에 진짜 정답은? 4, 5번
                        // 위 숫자들의 평균 값? 1 +4 +5 +8 = 18 / 4 = 4.5
                        // 즉, 각각의 위치들의 평균값 : 거기에 단어가 모여 있는거!!!!!!!!!!!!
                        // 즉, 숙어의 특성상 끽해야 한단어 건너뜀. ask somebody out


                        string sQ = "";
                        string sA = "";
                        for (int nLoop1 = 0; nLoop1 < as예문.Count(); nLoop1++)
                        {
                            bool lFound = false;
                            for (int nLoop0 = 0; nLoop0 < lstAPos.Count(); nLoop0++)
                            {
                                if (lstAPos[nLoop0] == nLoop1)
                                {
                                    lFound = true;
                                    break;
                                }
                            }
                            if (lFound)
                            {
                                sQ = sQ + " " + "(    )";
                                sA = sA + " " + as예문[nLoop1];
                            }
                            else
                            {
                                sQ = sQ + " " + as예문[nLoop1];
                            }
                        }
                        //MessageBox.Show(sA + Environment.NewLine + sQ);
                        return sQ.Trim() + "\t" + sA.Trim();
                    }

                    string _myGet발음파일명(string sTmp)
                    {
                        // 전각
                        //!”#$%&’()*+,-./
                        //0123456789:;<=>?@
                        //ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`
                        //abcdefghijklmnopqrstuvwxyz{|}~
                        string sForbidden = "\\/:*?\"<>|";
                        string sReplaced = "\/:*?”<>|";
                        //MessageBox.Show(sForbidden + Environment.NewLine + sReplaced);
                        StringBuilder sbTmp = new StringBuilder();

                        string sRoot =
                            _DICPATH +
                            sWord[0] + @"\" +
                            sWord + @"\";

                        foreach (char cTmp in sTmp)
                        {
                            if (sForbidden.IndexOf(cTmp) > -1)
                            {
                                sbTmp.Append(sReplaced[sForbidden.IndexOf(cTmp)]);
                            }
                            else
                            {
                                sbTmp.Append(cTmp);
                            }
                            if ((sRoot.Length + sbTmp.Length + 4) > (240 / 2 - 2))
                            {
                                //MessageBox.Show(sbTmp.ToString());
                                sbTmp.Append("…");
                                break;
                            }
                        }
                        return sbTmp.ToString();
                    }

                    string _myGet발음_예문뜻(string s뜻)
                    {
                        bool l꺽괄호 = false;
                        string s뜻New = "";
                        foreach (char cTmp in s뜻)
                        {
                            if (
                                (cTmp == '[') ||
                                (cTmp == '(') ||
                                (cTmp == '<') ||
                                (cTmp == '《') ||
                                (cTmp == '【')
                                )
                            {
                                l꺽괄호 = true;
                            }
                            if (
                                (cTmp == ']') ||
                                (cTmp == ')') ||
                                (cTmp == '>') ||
                                (cTmp == '》') ||
                                (cTmp == '】')
                                )
                            {
                                l꺽괄호 = false;
                                s뜻New = s뜻New + " ";
                                continue;
                            }
                            if (l꺽괄호)
                            {
                                s뜻New = s뜻New + " ";
                            }
                            else
                            {
                                s뜻New = s뜻New + cTmp;
                            }
                        }
                        s뜻New =
                            s뜻New.
                            Replace("\\", ", ").
                            Replace("/", ", ").
                            Replace(";", ", ").
                            Replace("·", ", ").
                            //                Replace("~", "뭐뭐").
                            Replace("…", "뭐뭐").
                            Replace("=", "");
                        s뜻New = string.Join(" ", s뜻New.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries));
                        return s뜻New;
                    }

                    string _myGet발음_예문(string s예문)
                    {
                        bool l꺽괄호 = false;
                        string s예문New = "";
                        foreach (char cTmp in s예문)
                        {
                            if (cTmp == '[')
                            {
                                l꺽괄호 = true;
                            }
                            if (cTmp == ']')
                            {
                                l꺽괄호 = false;
                                s예문New = s예문New + " ";
                                continue;
                            }
                            if (l꺽괄호)
                            {
                                s예문New = s예문New + " ";
                            }
                            else
                            {
                                s예문New = s예문New + cTmp;
                            }
                        }
                        List<string> lstWord = new List<string>();
                        List<int> lstDelIndex = new List<int>();
                        lstWord = s예문New.Split(' ').ToList();
                        for (int nIndexWord = 0; nIndexWord < lstWord.Count; nIndexWord++)
                        {
                            if (lstWord[nIndexWord].IndexOf("(") == -1)
                            {
                                continue;
                            }
                            foreach (char cTmp in lstWord[nIndexWord])
                            {

                                if ((cTmp == '(') || (cTmp == ')'))
                                {
                                    continue;
                                }
                                if ("abcdefghijklmnopqrstuvwxyz ',.-*/=!?’×…°\\".
                                    IndexOf((cTmp + "").ToLower()[0]) == -1)
                                {
                                    // 지워야 할 워드
                                    // lstDelIndex.Add(nIndexWord);
                                    lstWord[nIndexWord] = " ";
                                    break;
                                }
                            }
                        }
                        s예문New = string.Join(" ", lstWord);
                        s예문New = string.Join(" ", s예문New.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries));
                        return s예문New;
                    }

                    //본체
                    {
                        _myGet정답후보();

                        StringBuilder sbLines = new StringBuilder();
                        string s품사 = "";
                        string s뜻 = "";
                        string sOld뜻 = "";
                        string s예문 = "";
                        string s예문의뜻 = "";
                        string sOld예문의뜻 = "";

                        string sRoot =
                            _DICPATH +
                            sWord[0] + @"\" +
                            sWord + @"\";
                        System.IO.Directory.CreateDirectory(sRoot);
                        sRoot = sRoot + sWord + "_";
                        int nCount1 = 0;
                        int nCount2 = 1;
                        foreach (string sLine in lstClassTree)
                        {
                            string sClassTree = sLine.Split('\t')[1].Trim();
                            string sNewLine = sLine.Split('\t')[0].Trim();
                            if (sClassTree.IndexOf("/fnt_syn/dic_tit6/box_wrap1") == 0)
                            {
                                s품사 = sNewLine;
                            }
                            else if (
                                (
                                sClassTree.IndexOf("/fnt_k09//align_line") == 0 ||
                                sClassTree.IndexOf("/fnt_k06/align_line") == 0 ||
                                sClassTree.IndexOf("/align_line") == 0) &&
                                (sClassTree.IndexOf("list_a8") == -1 /* 영영사전 care for */)
                                // HELP
                                //        "//align_line/first  mean_on meanClass/list_a3/box_wrap1 dicType_O box_wrap1_mar1 /zoom_con_lv1/////"
                                //"/fnt_k09//align_line/first  mean_on meanClass/list_a3/box_wrap1 dicType_O box_wrap1_mar1 /zoom_con_lv1/////"
                                )
                            {
                                if (sOld뜻.IndexOf(sNewLine.Replace("예문닫기", "").Trim()) == -1)
                                {
                                    //Clipboard.SetText(string.Join(_CRLF, lstClassTree.ToArray()));
                                    //MessageBox.Show("Test");

                                    nCount1++;
                                    nCount2 = 0;
                                    if (s품사.Equals("")) { s품사 = "숙어"; }
                                    s뜻 = sNewLine.Replace("예문닫기", "").Trim();
                                    //if (s뜻.Length > 100) { s뜻 = "[HELP] " + s뜻; }
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "뜻_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_000E_" +
                                        _myGet발음파일명(s용법) +
                                        ".2bw",
                                        _myGet발음_예문(s용법),
                                        Encoding.UTF8);
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "뜻_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_000K_" +
                                        _myGet발음파일명(s뜻) +
                                        ".2bw",
                                        _myGet발음_예문뜻(s뜻),
                                        Encoding.UTF8);
                                    sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + "" + "\t" + "" + "\t" + "");
                                    sOld뜻 = s뜻;
                                }
                            }
                            else if (sClassTree.IndexOf("/fnt_e07 _ttsText/bg/") == 0)
                            {
                                s예문 = sNewLine;
                            }
                            else if (
                                (sClassTree.IndexOf("/fnt_k10//") == 0) &&
                                (sClassTree.IndexOf("/list_a3") > -1)
                                )
                            {
                                if (!sOld예문의뜻.Equals(sNewLine))
                                {
                                    nCount2++;
                                    s예문의뜻 = sNewLine;
                                    sOld예문의뜻 = s예문의뜻;
                                    string s괄호문제및정답 = _myGet괄호문제(s예문);
                                    //MessageBox.Show(_myGet발음파일명(s예문));
                                    //MessageBox.Show(_myGet발음파일명(s예문의뜻));
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "뜻_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_예문_" +
                                        nCount2.ToString().PadLeft(3, '0') +
                                        "E_" +
                                        _myGet발음파일명(s예문) + ".2bw",
                                        _myGet발음_예문(s예문),
                                        Encoding.UTF8);
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "뜻_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_예문_" +
                                        nCount2.ToString().PadLeft(3, '0') +
                                        "K_" +
                                        _myGet발음파일명(s예문의뜻) + ".2bw",
                                        _myGet발음_예문뜻(s예문의뜻),
                                        Encoding.UTF8);
                                    sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + s예문 + "\t" + s예문의뜻 + "\t" + s괄호문제및정답);
                                }
                            }
                            else if (
                                (sClassTree.IndexOf("/fnt_e01/") == 0) &&
                                (
                                (sClassTree.IndexOf("/list_e4/") > -1) ||
                                (sClassTree.IndexOf("/list_a4/") > -1))
                                )
                            {
                                //Clipboard.SetText(string.Join(_CRLF, lstClassTree.ToArray()));
                                //MessageBox.Show("Test");
                                nCount1++;
                                nCount2 = 0;
                                s품사 = "숙어";
                                s뜻 = "";
                                s예문 =
                                    sNewLine.
                                    Replace("|", "").
                                    Replace("·", "");
                            }
                            else if (
                                (sClassTree.IndexOf("/fnt_k05///list_e4/box_wrap21/zoom_con_lv1/////") == 0) ||
                                (sClassTree.IndexOf("/mean bg/desc/list_a4/box_wrap1 dicType_O/zoom_con_lv1/") == 0)
                                )
                            {
                                if (!sOld예문의뜻.Equals(sNewLine))
                                {
                                    nCount2++;
                                    s예문의뜻 = sNewLine;
                                    sOld예문의뜻 = s예문의뜻;
                                    if (
                                        (s예문의뜻.IndexOf(". ") == 1)
                                        )
                                    {
                                        s예문의뜻 = s예문의뜻.Substring(3);
                                    }
                                    if (//come ㄷㄷㄷ
                                        (s예문의뜻.IndexOf(". ") == 2)
                                        )
                                    {
                                        s예문의뜻 = s예문의뜻.Substring(4);
                                    }
                                    string s괄호문제및정답 = _myGet괄호문제(s예문);
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "숙어_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_예문_" +
                                        nCount2.ToString().PadLeft(3, '0') +
                                        "_E_" +
                                        _myGet발음파일명(s예문) + ".2bw",
                                        _myGet발음_예문(s예문),
                                        Encoding.UTF8);
                                    System.IO.File.WriteAllText(
                                        sRoot +
                                        "숙어_" +
                                        nCount1.ToString().PadLeft(3, '0') +
                                        "_예문_" +
                                        nCount2.ToString().PadLeft(3, '0') +
                                        "_K_" +
                                        _myGet발음파일명(s예문의뜻) + ".2bw",
                                        _myGet발음_예문뜻(s예문의뜻),
                                        Encoding.UTF8);
                                    sbLines.AppendLine(sWord + "\t" + s용법 + "\t" + s품사 + "\t" + s뜻 + "\t" + s예문 + "\t" + s예문의뜻 + "\t" + s괄호문제및정답);
                                }
                            }
                        }
                        s뜻과예문목록 = sbLines.ToString().Trim();
                        //Clipboard.SetText(s뜻과예문목록);
                        //MessageBox.Show(s뜻과예문목록);
                    }
                }

                void _myGet유의반의정보(List<string> lstClassTree)
                {
                    StringBuilder sbLines유의어 = new StringBuilder();
                    StringBuilder sbLines반의어 = new StringBuilder();
                    string s품사 = "";
                    string s대의 = "";

                    foreach (string sLine in lstClassTree)
                    {
                        if (
                            sLine.Split('\t')[1].Equals("/dic_tit4 dic_tit12/word_num_nobor/////") ||
                            sLine.Split('\t')[1].Equals("/dic_tit3 dic_tit11/word_num_nobor/////")
                            )
                        {
                            s품사 = sLine.Split('\t')[0].Trim();
                        }

                        if (
                            (
                            sLine.Split('\t')[1].Equals("/first/list_e3 list_e3x/word_num_nobor/////") ||
                            sLine.Split('\t')[1].Equals("//list_e3 list_e3x/word_num_nobor/////")
                            ) &&
                            sLine.Split('\t')[0].IndexOf("유의어") == -1 &&
                            sLine.Split('\t')[0].IndexOf("반의어") == -1
                            )
                        {
                            s대의 = sLine.Split('\t')[0].Trim();
                        }

                        if (
                            (
                            sLine.Split('\t')[1].Equals("//pad/list_e3 list_e3x/word_num_nobor/////") ||
                            sLine.Split('\t')[1].Equals("///list_e3 list_e3x/word_num_nobor/////")
                            ) &&
                            (
                            sLine.Split('\t')[0].IndexOf("유의어") > -1 ||
                            sLine.Split('\t')[0].IndexOf("반의어") > -1)
                            )
                        {
                            string sTmp = sLine.Split('\t')[0];
                            string sKind = "";
                            if (sTmp.IndexOf("[유의어]") > -1)
                            {
                                sKind = "[유의어]";
                            }
                            else
                            {
                                sKind = "[반의어]";
                            }
                            sTmp = sTmp.Replace(sKind, "");
                            StringBuilder sbTmp = new StringBuilder();
                            foreach (char cTmp in sTmp)
                            {
                                if (cTmp < '가')
                                {
                                    sbTmp.Append(cTmp);
                                }
                                else
                                {
                                    break;
                                }
                            }
                            sTmp = sTmp.Replace(sbTmp.ToString(), sbTmp.ToString() + "\t");
                            if (sKind.Equals("[유의어]"))
                            {
                                sbLines유의어.AppendLine(
                                    sWord + "\t" +
                                    s용법 + "\t" +
                                    s품사 + "\t" +
                                    s대의 + "\t" +
                                    sKind + "\t" +
                                    sTmp.Split('\t')[0] + "\t" +
                                    sTmp.Split('\t')[1]
                                    );
                            }
                            else
                            {
                                sbLines반의어.AppendLine(
                                    sWord + "\t" +
                                    s용법 + "\t" +
                                    s품사 + "\t" +
                                    s대의 + "\t" +
                                    sKind + "\t" +
                                    sTmp.Split('\t')[0] + "\t" +
                                    sTmp.Split('\t')[1]
                                    );
                            }
                        }
                    }
                    s유의어목록 = sbLines유의어.ToString().Trim();
                    s반의어목록 = sbLines반의어.ToString().Trim();
                }

                void _myMakeFile()
                {
                    //System.IO.Directory.CreateDirectory(_DICPATH +sWord[0] + @"\" +sWord);
                    string sRootFileName =
                        _DICPATH +
                        sWord[0] + @"\" +
                        sWord + @"\" +
                        sWord + "__";

                    string s대표정보Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "대표품사" + "\t" +
                        "대표뜻" + "\t" +
                        "대표유의어" + "\t" +
                        "대표반의어" + "\t" +
                        "대표참조어" + "\t" +
                        "대표상호참조어" +
                        _CRLF;

                    string s대표정보 =
                        s검색어 + "\t" +
                        s용법 + "\t" +
                        s대표품사 + "\t" +
                        s대표뜻 + "\t" +
                        s대표유의어 + "\t" +
                        s대표반의어 + "\t" +
                        s대표참조어 + "\t" +
                        s대표상호참조어;

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "대표정보.txt",
                        s대표정보Header +
                        s대표정보,
                        Encoding.UTF8);

                    string s기본정보Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "발음기호" + "\t" +
                        "중요도" + "\t" +
                        "난이도" + "\t" +
                        "복수형" + "\t" +
                        "비교급" + "\t" +
                        "최상급" + "\t" +
                        "과거형" + "\t" +
                        "과거분사형" + "\t" +
                        "현재분사형" + "\t" +
                        "3인칭단수현재형" + "\t" +
                        "파생어" +
                        _CRLF;

                    string s기본정보 =
                        s검색어 + "\t" +
                        s용법 + "\t" +
                        s발음기호 + "\t" +
                        s중요도 + "\t" +
                        s난이도 + "\t" +
                        s복수형 + "\t" +
                        s비교급 + "\t" +
                        s최상급 + "\t" +
                        s과거형 + "\t" +
                        s과거분사형 + "\t" +
                        s현재분사형 + "\t" +
                        s3인칭단수현재형 + "\t" +
                        s파생어;

                    //System.IO.File.WriteAllText(
                    //    _HISTORYPATH + @"입력일자\" + 
                    //    DateTime.Now.ToString("yyyy년MM월dd일 HH시mm분ss초") +
                    //    "__" +
                    //    sWord +
                    //    ".입력일자",
                    //    "");

                    //System.IO.File.WriteAllText(
                    //    _HISTORYPATH + @"최종시험일자\" + 
                    //    "2019년01월10일 00시00분01초" +
                    //    "__" +
                    //    sWord +
                    //    ".최종시험일자",
                    //    "");

                    //System.IO.File.WriteAllText(
                    //    _HISTORYPATH + @"시험횟수\" +
                    //    "0" +
                    //    "__" +
                    //    sWord +
                    //    ".시험횟수",
                    //    "");

                    //System.IO.File.WriteAllText(
                    //    _HISTORYPATH + @"맞은횟수\" +
                    //    "0" +
                    //    "__" +
                    //    sWord +
                    //    ".맞은횟수",
                    //    "");

                    //System.IO.File.WriteAllText(
                    //    _HISTORYPATH + @"틀린횟수\" +
                    //    "0" +
                    //    "__" +
                    //    sWord +
                    //    ".틀린횟수",
                    //    "");

                    System.IO.File.WriteAllText(
                        _HISTORYPATH + @"최근시험결과\" +
                        "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNN" +
                        "__" +
                        sWord +
                        ".최근시험결과",
                        "");

                    System.IO.File.WriteAllText(
                        _HISTORYPATH + @"난이도\" +
                        s난이도 +
                        "__" +
                        sWord +
                        ".난이도",
                        "");

                    System.IO.File.WriteAllText(
                        _HISTORYPATH + @"중요도\" +
                        s중요도 +
                        "__" +
                        sWord +
                        ".중요도",
                        "");

                    System.IO.File.WriteAllText(
                        _HISTORYPATH + @"태그\" +
                        "옥스포드3000" +
                        "__" +
                        sWord +
                        ".태그",
                        "");

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "기본정보.txt",
                        s기본정보Header +
                        s기본정보,
                        Encoding.UTF8);

                    string s정답후보Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "정답후보" +
                        _CRLF;

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "정답후보.txt",
                        s정답후보Header +
                        s검색어 + "\t" +
                        s용법 + "\t" +
                        s정답후보,
                        Encoding.UTF8);

                    string s뜻과예문Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "품사" + "\t" +
                        "뜻" + "\t" +
                        "예문" + "\t" +
                        "예문의뜻" + "\t" +
                        "괄호문제" + "\t" +
                        "정답" + "\t" +
                        _CRLF;

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "뜻과예문.txt",
                        s뜻과예문Header +
                        s뜻과예문목록,
                        Encoding.UTF8);

                    string s유의어Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "품사" + "\t" +
                        "대의" + "\t" +
                        "종류" + "\t" +
                        "단어" +
                        "뜻" +
                        _CRLF;

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "유의어.txt",
                        s유의어Header +
                        s유의어목록,
                        Encoding.UTF8);

                    string s반의어Header =
                        "검색어" + "\t" +
                        "용법" + "\t" +
                        "품사" + "\t" +
                        "대의" + "\t" +
                        "종류" + "\t" +
                        "단어" +
                        "뜻" +
                        _CRLF;

                    System.IO.File.WriteAllText(
                        sRootFileName +
                        "반의어.txt",
                        s반의어Header +
                        s반의어목록,
                        Encoding.UTF8);
                }

                // 본체
                {
                    string sHtml = _myGetRealHtml();
                    List<string> lstClassTree = _myGetClassTree(sHtml);
                    _myGet기본정보(lstClassTree, sHtml);
                    _myGet품사_뜻_예문_뜻(lstClassTree);
                    _myGet대표정보(_myGetClassTree(sFrontPageHtml));
                    _myGet유의반의정보(_myGetClassTree(sThesaurusHtml));
                    _myMakeFile();
                }
            }

            // 본체
            {
                _toolStripProgressBar_Main.Maximum = _textBox_Bulk.Lines.Count();
                _toolStripProgressBar_Main.Value = 0;
                foreach (string sLine in _textBox_Bulk.Lines)
                {
                    _toolStripProgressBar_Main.Value++;
                    if (sLine.Trim().Length == 0) { continue; }
                    // 주의! 폴더명 맨 끝에 . 못들어감.
                    string[] asWord =
                        sLine.
                        Trim().
                        ToLower().
                        Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);

                    List<string> lstWord = asWord.ToList();
                    if (lstWord.Count > 1)
                    {
                        lstWord.Add(sLine);
                    }
                    string sWordNew = "";
                    foreach (string sWord in lstWord)
                    {
                        sWordNew = sWord;
                        if (sWordNew.Last() == '.')
                        {
                            sWordNew = sWordNew.Substring(0, sWordNew.Length - 1);
                        }
                        //MessageBox.Show(sWordNew);
                        _myLog(sWordNew + " 시작");
                        if (!_myCheckFileName(sWordNew))
                        {
                            //_textBox_BulkErr.AppendText(
                            //    sWord + " " + "실패! (단어에 금지된 글자 감지)" + _CRLF);
                            //continue;
                        }
                        else if (_myCheckWordExists(sWordNew))
                        {
                            //_textBox_BulkErr.AppendText(
                            //    sWord + " " + "실패! (이미 사전에 있는 단어 감지)" + _CRLF);
                            //continue;
                        }
                        else
                        {
                            _myGetDic(sWordNew);
                        }
                        _myLog(sWord + " 완료");
                    }
                }
            }
        }

        private void _button_GetDic_Click(object sender, EventArgs e)
        {
            _myStartBulkGetDic();
        }

        private void button8_Click(object sender, EventArgs e)
        {
            textBox2.Clear();
            DateTime dtOld = DateTime.Now;
            _myMakeQuiz();
            textBox2.AppendText("문제 후보 단어군 선택 소요 시간 : " + (DateTime.Now - dtOld).TotalMilliseconds + "밀리초 소요" + Environment.NewLine);
        }

        private void _myMakeQuiz()
        {
            string sList = "";
            foreach (string item in _listBox_Prior.Items)
            {
                sList = sList + "\t" + item;
            }
            string s안풀어본것 = sList.Split(new[] { "안 풀어본 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
            string s최종틀린것 = sList.Split(new[] { "최종 틀린 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
            string s많이틀린것 = sList.Split(new[] { "많이 틀린 것 (" }, StringSplitOptions.None)[1].Split('%')[0];
            string s오래전푼것 = sList.Split(new[] { "오래전 푼 것 (" }, StringSplitOptions.None)[1].Split('%')[0];

            List<string> lst중요도 = _myMakeQuiz중요도();
            textBox2.AppendText("중요도 조건에 맞는 단어 수 : " + lst중요도.Count + "개" + Environment.NewLine);

            List<string> lst난이도 = _myMakeQuiz난이도();
            textBox2.AppendText("난이도 조건에 맞는 단어 수 : " + lst난이도.Count + "개" + Environment.NewLine);

            List<string> lst태그 = _myMakeQuiz태그();
            textBox2.AppendText("태그 조건에 맞는 단어 수 : " + lst태그.Count + "개" + Environment.NewLine);

            List<string> lst단어후보 = lst중요도.Intersect(lst난이도.Intersect(lst태그)).ToList();
            textBox2.AppendText("중요도, 난이도, 태그 조건의 교집합 단어 갯수 : " + lst단어후보.Count + "개" + Environment.NewLine);

            List<string> lst시험안본것 = _myMakeQuiz시험안본것();
            List<string> lst단어후보_시험안본것 = lst단어후보.Intersect(lst시험안본것).ToList();
            int nReadyWords = lst단어후보_시험안본것.Count;
            int nNeedWords = (int) (100 * 0.01 * System.Convert.ToInt16(s안풀어본것));
            textBox2.AppendText("단어 후보와 시험 안본 단어 교집합 갯수 : " + nReadyWords + "개" + Environment.NewLine);
            textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " +  nNeedWords+ "개" + Environment.NewLine);
            if (nNeedWords <= nReadyWords)
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("안풀어 본것 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }
            else
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("안풀어 본것 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }

            List<string> lst최종틀린것 = _myMakeQuiz최종틀린것();
            List<string> lst단어후보_최종틀린것 = lst단어후보.Intersect(lst최종틀린것).ToList();
            nReadyWords = lst단어후보_최종틀린것.Count;
            nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s최종틀린것));
            textBox2.AppendText("단어 후보와 최종 틀린 단어 교집합 갯수 : " + nReadyWords + "개" + Environment.NewLine);
            textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + nNeedWords + "개" + Environment.NewLine);
            if (nNeedWords <= nReadyWords)
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("최종 틀린 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }
            else
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("최종 틀린 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }

            List<string> lst많이틀린것 = _myMakeQuiz많이틀린것();
            List<string> lst단어후보_많이틀린것 = lst단어후보.Intersect(lst많이틀린것).ToList();
            nReadyWords = lst단어후보_많이틀린것.Count;
            nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s많이틀린것));
            textBox2.AppendText("단어 후보와 많이 틀린 단어 교집합 갯수 : " + lst단어후보_많이틀린것.Count + "개" + Environment.NewLine);
            textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + (100 * 0.01 * System.Convert.ToInt16(s많이틀린것)) + "개" + Environment.NewLine);
            if (nNeedWords <= nReadyWords)
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("많이 틀린 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }
            else
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("많이 틀린 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }

            List<string> lst오래된것 = _myMakeQuiz오래된것();
            List<string> lst단어후보_오래된것 = lst단어후보.Intersect(lst오래된것).ToList();
            nReadyWords = lst단어후보_오래된것.Count;
            nNeedWords = (int)(100 * 0.01 * System.Convert.ToInt16(s오래전푼것));
            textBox2.AppendText("단어 후보와 오래된 단어 교집합 갯수 : " + lst단어후보_오래된것.Count + "개" + Environment.NewLine);
            textBox2.AppendText("우선 순위 적용 결과 뽑아 낼 단어 갯수 : " + (100 * 0.01 * System.Convert.ToInt16(s오래전푼것)) + "개" + Environment.NewLine);
            if (nNeedWords <= nReadyWords)
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("오래전 푼 단어 준비 완료 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }
            else
            {
                textBox2.AppendText(Environment.NewLine);
                textBox2.AppendText("오래전 푼 단어 모자람 : " + nNeedWords + "개" + Environment.NewLine);
                textBox2.AppendText(Environment.NewLine);
            }
        }

        private List<string> _myMakeQuiz태그()
        {
            List<string> lstQuziWord = new List<string>();
            List<string> lstResult = new List<string>();
            string sTags = "";
            for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
            {
                if (_checkedListBox_Tag.GetItemChecked(nIndex))
                {
                    sTags = sTags + "\t" + _checkedListBox_Tag.Items[nIndex].ToString();
                }
            }
            lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"태그\", "*.태그"));
            string sTag = "";
            foreach (string sFileName in lstQuziWord)
            {
                sTag = sFileName.Split('\\').Last().Split(new[] { "__" }, StringSplitOptions.None)[0];
                if ((_radioButton_TagAll.Checked) || (sTags.IndexOf(sTag) > -1))
                {
                    lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".태그", ""));
                }
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz오래된것()
        {
            System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(_HISTORYPATH + @"최근시험결과\");
            System.IO.FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray();
            List<string> lstResult = new List<string>();
            foreach (System.IO.FileInfo fileInfo in files)
            {
                lstResult.Add(fileInfo.FullName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz시험안본것()
        {
            List<string> lstQuziWord = new List<string>();
            lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "N*.최근시험결과"));
            List<string> lstResult = new List<string>();
            foreach (string sFileName in lstQuziWord)
            {
                lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz많이틀린것()
        {
            List<string> lstQuziWord = new List<string>();
            lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "*.최근시험결과").Reverse());
            List<string> lstResult = new List<string>();
            foreach (string sFileName in lstQuziWord)
            {
                if (sFileName.IndexOf("\\N") > -1) { continue; }
                lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz최종틀린것()
        {
            List<string> lstQuziWord = new List<string>();
            lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"최근시험결과\", "X*.최근시험결과"));
            List<string> lstResult = new List<string>();
            foreach (string sFileName in lstQuziWord)
            {
                lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".최근시험결과", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz난이도()
        {
            List<string> lstQuziWord = new List<string>();
            if (_radioButton_난이도_전체.Checked)
            {
                lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*.*"));
            }
            else
            {
                if (_checkBox_난이도_중1.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중1]*.*"));
                }
                if (_checkBox_난이도_중2.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중2]*.*"));
                }
                if (_checkBox_난이도_중3.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[중3]*.*"));
                }
                if (_checkBox_난이도_고0.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고0]*.*"));
                }
                if (_checkBox_난이도_고1.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고1]*.*"));
                }
                if (_checkBox_난이도_고2.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "*[고2]*.*"));
                }
                if (_checkBox_난이도_무등급.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"난이도\", "__*.*"));
                }
            }
            List<string> lstResult = new List<string>();
            foreach (string sFileName in lstQuziWord)
            {
                lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".난이도", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private List<string> _myMakeQuiz중요도()
        {
            List<string> lstQuziWord = new List<string>();
            if (_radioButton_중요도_전체.Checked)
            {
                lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "*.*"));
            }
            else
            {
                if (_checkBox_중요도_별3.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별3]__*.*"));
                }
                if (_checkBox_중요도_별2.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별2]__*.*"));
                }
                if (_checkBox_중요도_별1.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "[별1]__*.*"));
                }
                if (_checkBox_중요도_무등급.Checked)
                {
                    lstQuziWord.AddRange(System.IO.Directory.GetFiles(_HISTORYPATH + @"중요도\", "__*.*"));
                }
            }
            //_groupBox_중요도.Text = "중요도 필터 설정 (필터링된 단어/숙어 : " + lstQuziWord.Distinct().ToList().Count().ToString("N0") + " 개)";
            //MessageBox.Show(lstQuziWord.Distinct().ToList().Count()+"");
            List<string> lstResult = new List<string>();
            foreach (string sFileName in lstQuziWord)
            {
                lstResult.Add(sFileName.Split(new[] { "__" }, StringSplitOptions.None)[1].Replace(".중요도", ""));
            }
            return lstResult.Distinct().ToList();
        }

        private void radioButton6_CheckedChanged(object sender, EventArgs e)
        {
            if (!radioButton6.Checked)
            {
                _checkedListBox_Tag.Items.Clear();
                return;
            }
            Dictionary<string, string> dicTags = new Dictionary<string, string>();
            string[] asFiles = System.IO.Directory.GetFiles(_HISTORYPATH + "태그");
            foreach (string sFileName in asFiles)
            {
                dicTags[sFileName.Split('\\').Last().Split(new[] { "__" }, StringSplitOptions.None)[0].Replace(".태그", "")] = "";
            }

            foreach (var item in dicTags)
            {
                _checkedListBox_Tag.Items.Add(item.Key);
            }
        }

        private void _button_TagSearch_Click(object sender, EventArgs e)
        {
            if (_textBox_TagSearch.Text.Trim().Length == 0) { return; }
            for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
            {
                if (_checkedListBox_Tag.Items[nIndex].ToString().IndexOf(_textBox_TagSearch.Text.Trim()) > -1)
                {
                    _checkedListBox_Tag.SetItemChecked(nIndex, true);
                }
            }
        }

        private void _button_TagReset_Click(object sender, EventArgs e)
        {
            for (int nIndex = 0; nIndex < _checkedListBox_Tag.Items.Count; nIndex++)
            {
                _checkedListBox_Tag.SetItemChecked(nIndex, false);
            }
        }

        private void _myPriorAddTail()
        {
            for (int nIndex = 0; nIndex < _listBox_Prior.Items.Count; nIndex++)
            {
                _listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString() + " (" + (40 - nIndex * 10) + "%)";
            }
        }

        private void _myPriorRemoveTail()
        {
            for (int nIndex = 0; nIndex < _listBox_Prior.Items.Count; nIndex++)
            {
                _listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString().Split('(')[0].Trim();
            }
        }

        private void _button_PriorReSet_Click(object sender, EventArgs e)
        {
            _listBox_Prior.Items.Clear();
            _listBox_Prior.Items.Add("안 풀어본 것");
            _listBox_Prior.Items.Add("최종 틀린 것");
            _listBox_Prior.Items.Add("많이 틀린 것");
            _listBox_Prior.Items.Add("오래전 푼 것");
            _myPriorAddTail();
        }

        private void _button_PriorUp_Click(object sender, EventArgs e)
        {
            if ((_listBox_Prior.SelectedIndex == -1) ||
                (_listBox_Prior.SelectedIndex == 0)
                )
            {
                return;
            }
            _listBox_Prior.Items.Insert(_listBox_Prior.SelectedIndex + 1, _listBox_Prior.Items[_listBox_Prior.SelectedIndex - 1]);
            _listBox_Prior.Items.RemoveAt(_listBox_Prior.SelectedIndex - 1);
            _myPriorRemoveTail();
            _myPriorAddTail();
        }

        private void _button_PriorDn_Click(object sender, EventArgs e)
        {
            if ((_listBox_Prior.SelectedIndex == -1) ||
                (_listBox_Prior.SelectedIndex == _listBox_Prior.Items.Count - 1)
                )
            {
                return;
            }
            _listBox_Prior.Items.Insert(_listBox_Prior.SelectedIndex, _listBox_Prior.Items[_listBox_Prior.SelectedIndex + 1]);
            _listBox_Prior.Items.RemoveAt(_listBox_Prior.SelectedIndex + 1);
            _myPriorRemoveTail();
            _myPriorAddTail();
        }

        private void _button_Prior100_Click(object sender, EventArgs e)
        {
            _myPriorRemoveTail();
            _listBox_Prior.Items[0] = _listBox_Prior.Items[0].ToString() + " (100%)";
            for (int nIndex = 1; nIndex < _listBox_Prior.Items.Count; nIndex++)
            {
                _listBox_Prior.Items[nIndex] = _listBox_Prior.Items[nIndex].ToString() + " (0%)";
            }
        }
    }
}