WaniKani Item Difficulty

Add difficulty ratings collected from forum datasets to items in WaniKani lessons and reviews.

// ==UserScript==
// @name         WaniKani Item Difficulty
// @namespace    wk-item-diff
// @version      0.23
// @description  Add difficulty ratings collected from forum datasets to items in WaniKani lessons and reviews.
// @author       saraqael
// @match        https://www.wanikani.com/radicals*
// @match        https://www.wanikani.com/kanji*
// @match        https://www.wanikani.com/vocabulary*
// @match        https://www.wanikani.com/subjects*
// @match        https://www.wanikani.com/subject-lessons*
// @grant        none
// @license      MIT
// @require      https://greasyfork.org/scripts/430565-wanikani-item-info-injector/code/WaniKani%20Item%20Info%20Injector.user.js?version=1166918
// ==/UserScript==

//// SETTINGS ////

const USE_WKOF_SETTINGS = true; // if the settings from the wkof menu should be used when it is available
const OFFSET_SRS_POPUP = false; // if the srs level-up popup should be made smaller for the hover text of the indicator to still be usable

// changing these settings also changes their default values which the wkof settings menu uses
const defaultSettings = {
    INDICATOR_REVIEW_POS: 'info', // where the indicator is placed while doing reviews; options are 'none', 'info', and 'main'
    HIDE_UNTIL_ANSWER: true, // hide the difficulty rating until an answer is given for the item
    SHOW_ON_INFO_PAGE: true, // show the indicator on the info page of the respective item
    GLOWING_INDICATOR: true, // glow appears around the indicator to simulate a "traffic light" feel
    BOX_INDICATOR: true, // have the gray box be around the indicator to make it stand out
    SHOW_DECIMALS: false, // show tenths place for the number inside the indicator
    INDICATOR_SIZE: 1, // percentage for size of difficulty indicator; default (1) corresponds to 50 pixels
    VALUE_OPACITY: 0.83, // opacity of the value inside the difficulty indicator (1 is not visible, 0 is black)
    DIFF_COLORS: { // color codes for different difficulty levels
        null: '#7a7a7a', // used when no difficulty info is present (default: gray #7a7a7a)
        00:   '#3cc92e', // 0.0 -  0.9: easy (default: green #3cc92e)
        10:   '#e8c741', // 1.0 -  2.4: medium (default: yellow #e8c741)
        25:   '#ea7a34', // 2.5 -  4.9: hard (default: orange #ea7a34)
        50:   '#d43526', // 5.0 - 10.0: extreme (default: red #d43526)
    },
}

//// DIFFICULTY DATA ////

// object with difficulty levels from 0 to 100 containing a string/list with the kanji/vocab items with that difficulty
// collected from the WaniKani forums, for the full data see my WK thread: https://community.wanikani.com/t/new-combined-user-statistics/58741

const kanjiDiff = {0: '五火天母花号単汽師鮮豚巨乾韓救桜机否吐芋揮源爪腐介亀剣熊湖醤奈甘舞鹿戻狙棋片仙免埼甲項戒儀虎蜂衣到双肝竜桃辛侍俺匹釣髪缶姫砲雷塔肌舟頃呪塾菌溝魔寮盆帝粧霧伊佐尺塀如滴畳瞭箸蚊蛇闇飢餓騎溶踊培脇盾巾鶴壇煮覆珠奨巧鰐蟹堰漂亭晶召枯濯瓶脂郊喚媛渦蓮塚貫茨祥牲芳倫輔丹壌舗緯繊鯉曙諒鯨冠紋謡鎌哺栃癒粗循旦抹栓之瑛拍呉弊弦紳蝶匠柴腸槽乙盲胎楓瑠硫窃肖鶏絹漣璃篤紡屯閑卑禍亜汰沙痢畔醜桟蛮倹狐嘘麺', 1: '三二手水田犬千円四目月心父気皿虫車金何肉雨雪時島猫英塩禅易偉慈浦玄聡肪軟邸釈隅', 2: '山白王日赤黄森飲歯士基園門愛果座弓舌乳宅象汗菓押旗系貧卵眼興仁炭艦蜜鉱燥貞隻升妄拷款殉藻', 3: '一八本六市竹耳世見自黒夏朝馬語球駅春無鼻脳機飛義効傘婦粉菜油舎遅姓将沖兆弾湾漁眉妊娠齢床括焦餅耕軒', 4: '七人内今元男寒幻忙個夢穴岡批敵張鬼票振河針娘江婚符購魅欲永祖訳込飼異窓糖誌閉奴枝沿紅豆壁祉阜沸膚', 5: '川木中友冬半茶高電服美鉄僕寺帰秋荷忘枚胸史尻難影健靴券撃攻浜精麗秘酸銭及幅摘牙鮭吹堀孝柱犠駐包墟遜威撲斉旨炉珍琴距露挟郡搾智縫舶 坑泌', 6: '毛百西校鳥船漢葉野悪洗飴財妻尾震企際価寝藤俳呼肩腕巻掛肥輩響筆版盗廊脈奥房択緒膝託賄喪挑泊滑範荒娯嵐朱涙謎亮苗襟頂帆暁錠', 7: '丸戸不糸字年家医県歌顔庭問銀季変軍面煙布判派沢与絞密汚複忠肺著裏互彼炎為鍋抱旬拳潜畑蛍刈妃尼征桑浸紫陛陶肯偏呂孤殊糧遇鎖愉憾昌遼髄龍姻岬忌曹浪礁胆詠酪', 8: '大口子々引広古貝病泉緑固岩毒泣席梅冊暴比副吸供庁狭管腰怒胃凍奇清 隊杯欧丼磁療盟縄踏噛奏盤称群且卸呈茜荘践酬阿劾匿唄寡湧', 9: '才台用図理風界験客鳴神戦暑員階橋乱詞革枕照似倉偵幾普克哲弧潟芝井卓曇滝稼脚庄泡猿瞳碁租綿阻零鳩伯后唐壮把搬洞漫銘瓜緋胞 胡艇莉葵', 10: '左外矢切方交林君好殺然輪骨危兵干薬検省委各候隠再占獣貯鉛移己恥汁測紹講酢塁抗昭香兼唱鋭駆徹瀬誠郷酎摩朗誰婿藍', 11: '町足羽店強魚部院暗束仏区禁徒厚災犯率税幹症痛腹遊預傷志捨衛雑垂灰皇砂筋刊緩繰賂凡宰洪窮', 12: '太生回学姉首死血辺館飯品曜団臭論状層燃製販違訴航均富巣棒党恩液迎臓誤鈴鋼雇樹析紛刃斗棚笠翼唇婆帽扇掌煎粘芯帳畜貼輝隙霜戯朽椎譜酌陪冥逝', 13: '玉北海弱紙談味岸商消祭像夫計渉嫌替冷彫杉銅串爆淡礎噴擁覇尿脊賓那鎮', 14: '名村国長間研乗屋位賞松焼加宇産断坊姿株触限刺我突郵眠端序懸描殖殿侵偽凄凸凹喝坪弔膜醸漆雌', 15: '公色支物開仲指鏡協囲性原類若素崎看満宴怖撮浮漏飾帯泥編堅柄沈渓', 16: '女土止万弟多社青新始意追深港詩句喉閥械届武居補迫厳暖廃超頼御慎銃寂碑遥', 17: '小文早毎皮勝流苺雰的僧種妨増景況懐適騒射貴隷厄酔聴葬闘撤愚栞痴茎酷', 18: '石会草明記雲要泳親利波期根側恋訓宙審任観過独較憲揺袋丘叱忍芽凶塊嬢狩疲眺矛翔裸鐘陰墨孔寧斬架歳鍵堤墳廷涯駄准据随廉', 19: '礼打氷発重器課頑信険因等圧停城抜渡織郎板乏渇背染簡装依旧津併贈嬉巡隣濁', 20: '工立牛他央週買線植完勇司昼冗悲祈節害権属造破充奪斐渋擦沼潮牧裂劣勘誓怠慢没猟陥弥虜某煩矯', 21: '十九行以池送横族映皆練坂細履逮妙綺孫径徳勤幕承粋縦降棄揚凛尉吟遷鋳', 22: '兄谷近南京通老倍熱例卒参希虚笛営収型載招段伸核伴避謹', 23: '音星私和頭令温着妥望説条児逆閣匂快績刑執患陣', 24: '下分光米安点東持読競動狼丈官静倒脱導演護捜訟印昇締尋散貨鑑枠邦排誉顧嘩掘斎糾梨', 25: '声必道反予起芸政告被捕傾慮泰筒貢崖恨憎胴虹咲塗尽彩班穫鉢麻叙拐杏栽疾菅罷', 26: '丁走売宿周折制総解割含慣庫翌掃融離宣蔵伺網嘉庸飽', 27: '少全夜具農路合旅章様標弁書底非責資担量極街喋払獄換継募臨暦硬磨霊俵黙拘蹴軌乃遭隼寛惨搭伏憂', 28: '夕斤付究勉短術晩容防罰職潔衆濡致逃勧圏埋稲謙', 29: '妹組建阪昆在務挙華聖薦措粒俸哉峡敢漬烏紺蒼衡遍酵鼓叔崇擬', 30: '使想残堂報余案律延操敬漠盛献契崩抵懲滋', 31: '刀平形楽相最酒笑劇達混経接障並猛扱慨憤扶藩', 32: '室絵注特秒都約式箱証借宮悩暇貸陸採般躍軸摂猶轄', 33: '羊食争登謝件備環修股痩縮滞跡宜需携雅俗惰賠尚欄勿', 34: '角教算配功洋級育童材叩構模', 35: '局度設屈僚宗添請雄賛垣懇寸縁', 36: '待疑福遠益録璧拒賭吾幽棟瞬菊奮彰淀疫諮剰啓披稿諭峠梓', 37: '空里末者低第億質額捉償恵掲悦穀窒', 38: '喫査勢誕濃烈診更越驚維茂衝透拠扉柳爽憶殴脅賢殻迭', 39: '右写州共料存可確現創怪激還', 40: '仕後由決話苦整紀是減豊囚宛岐至刷柔籍趣綾傍凝漸', 41: '宝運冒取準述故迷嘆墓豪拡握', 42: '麦科別養留改困策領督庶悠縛', 43: '正化事優輸睡妖褒旋羅賊侮', 44: '同札対守議羨程絶既隆枢享奔', 45: '休身転昨警展往滅嫁狂椅穏鈍翻邪蒙虐駿騰', 46: '活業察済示賀規贅訪幼監臣拝', 47: '作選晴辞善討除戚削吉剛唯拓潤駒恒佳恭靖', 48: '先欠試認尊蒸', 49: '向番歴就遺', 50: '提袖施促壊寄積跳綱哀墜悔灯迅凌剖赦拙睦', 51: '集初敗順従', 52: '連屁俊剤', 53: '負幸柵却抽衰隔累', 54: '当答聞略', 55: '前感復封湿魂涼癖偶鬱帥徐浄錦', 56: '出代治裕秀諸', 57: '法境差繁薄', 58: '地仮値刻純粛逸', 59: '申典関詳退微挨', 60: '民便喜置寿陳', 61: '曲進係', 62: '歩陽格得域援給誘炊媒', 63: '習落能錯', 64: '入住所軽府栄覚応博誇鍛訂', 65: '亡失労痒励索', 66: '常', 67: '命築処納賃歓膨勲赴', 68: '言伝働浅', 69: '知許授', 70: '考助成熟諾襲', 71: '真伐堕遮閲蔑', 72: '', 73: '速急概謀郭', 74: '力体次終放努昔暮', 75: '損即挿詐蓄辱', 76: '表識費貿控', 77: '', 78: '保途', 79: '良甚', 80: '情題悟唆該', 81: '投受債頻淑', 82: '両錬峰簿', 83: '有数則呆疎', 84: '役', 85: '思求結', 86: '直慶', 87: '幣砕須', 88: '息催緊詰斜傑', 89: '氏', 90: '浴敷獲', 91: '返絡澄', 92: '定調惑傲', 93: '去颯悼堪', 94: '諦叫嘱', 95: '拉', 96: '統推', 97: '', 98: '視', 99: '念', 100: '上了午主来画未場実頁拾湯願技列専署苛続罪評態裁祝莫徴康 稚恐覧探久噂咳噌伎遣抑譲敏喧暫慰拶也岳穂憩欺耐遂慌仰又秩戴顕奉惜朴陵萌瑞憧慕'};
const vocabDiff = {0: ['川','五','六','四','四千','今月','少ない','字','気','五百','竹','花','赤ちゃん','車内','申し申し','皿','光年','毎回','毎年','羽','肉','牛肉','雨','入社','本社','谷','地図','東方','南東','茶色','食べる','高校','一時','何時','雪','鳥','作者','朝ごはん','雲','電車','平和','和食','始まる','泳ぐ','お客さん','肉屋','茶屋','魚屋','名古屋','世界','〜県','起きる','早速','お酒','病院','飲む','漢字','農民','地下鉄','日本語','フランス語','鳴く','線','〜病','仲','最低','昔','集中する','洋風','洋食','秒','追う','仲良く','全員','社員','会社員','広島','悪女','最悪','家族','球','一階','二階','寒い','学期','歯','登る','着物','東京','曲げる','小学校','弱虫','目医者','返る','負け犬','時々','買い物','酒飲み','一億','一億円','五感','母親','話し方','終わり','心配する','歌う','神風','左利き','右利き','注文する','感じ','感じる','映画館','暗殺','〜様','皆様','橋','熱','皆さん','福島','緑','緑色','課長','賞金','車輪','銀','銀色','お願いします','旅館','本館','駅','駅前','駅員','駅長','里心','消しゴム','山登り','悪例','四季','人性','女性','男性','木材','松','才能','美術','信じる','事変','帰る','式','春','晩','毎晩','毒','泣く','浅い','猫','子猫','秋','紀元後','英語','英会話','英和','海軍','ご飯','危険','商品','園','弁当','東京弁','〜弁','明治','写真','遠い','入門','阪神','面','勉強する','旅行する','起こす','旅行者','悪口','殺人者','整理する','暗記する','練習する','自動','卒業式','美術館','折り紙','技術','要求する','消化不良','朝ご飯','イギリス人','晩ご飯','回転する','右側','西側','兵士','塩','塩水','塩味','官金','外交官','察する','席','干天','愛','自愛','性愛','愛知県','無休','鼻','鼻くそ','鼻先','大阪弁','関西弁','土曜日','日曜日','木曜日','留学生','お笑い','笑い','可分','正座','銀座','駅弁','弓道','忘年会','書き入れる','何枚','洗う','焼く','黒煙','等号','胸','脳死','洗脳','訓読み','静か','乱交','〜冊','一冊','善悪','財布','生徒','昆布','容易','暴力','学歴','舌','若い','若々しい','動詞','歌詞','数詞','自動詞','借財','非常口','席順','年代順','個室','三個','厚い','血圧','悪夢','妻','水害','無害','お尻','忘れ物','飛行機','煙い','犯人','共犯者','穴','臭い','論理','防水','地震','飛ぶ','手洗い','胸焼け','汽笛','火曜日','金曜日','参加','文句する','焼ける','参加する','参加者','宇宙人','宇宙船','固有名詞','他動詞','委員','自制','事務所','資本','女権','岡山県','素晴らしい','増加','無税','国際','高血圧','存在する','防犯','被害者','寝る','昼寝','寝坊','過ぎる','罰','罰金','罰ゲーム','罰する','誕生','脱ぐ','坊さん','赤ん坊','各自','案外','社費','営業','公営','官営','策','副詞','価値','観る','観客','応じる','提出','変態','賀状','各駅停車','経済的','委員会','判断する','責任感','バス停','停止','吸収','領収書','皮革','有職','鬼','弁護士','教師','医師','法律','割る','一割','崎','長崎','法則','新幹線','優しい','宅','牛乳','城','俳句','違い','違う','可燃ゴミ','営業する','誕生日','寝坊する','過去形','対策','多額','残額','製作','木製','自家製','不燃ゴミ','狭い','肩','腕','腰','〜層','時差','管理','大量','定量','武器','武士','質問','良質','限界','限度','無限','子供','自動販売機','株','準備する','響く','投票する','前景','鮮魚','金属','満員','満点','肥料','一巻','下巻','二巻','先輩','掛ける','替える','非難する','飛ばす','確かめる','挙げる','営業中','副大統領','支援する','女優','革命家','革ジャン','長崎県','呼ばれる','再来年','再来週','再開','再度','刺す','名刺','創造','励ます','届ける','差別する','差し上げる','振動','事故','株式会社','汗','汗臭い','河','燃える','燃え付く','独り','獣','獣類','鉛筆','管理人','お誕生日おめでとう','豚','豚肉','自販機','限定販売','貯金','輸出する','造園','気違い','人違い','読み違い','鉛管','鉛毒','健忘症','春巻き','頑張れ','怒鳴る','悩み','昇る','暇','取り替える','結構です','小規模','階段','段々','第一段','痛い','胃痛','お腹','腹切り','貸す','野郎','靴','靴下','並行','傘','傘立て','冷凍庫','凍る','〜券','旅券','前売り券','刺身','創造力','創造的','博物館','星占い','妙','妙薬','幼年時代','回復する','微生物','振り仮名','面接する','専攻','横浜','不潔','公益','国益','日程','絶対','菓子屋','貯金箱','比較する','逆','逆効果','郵便局','郵便番号','郵便箱','〜隊','入隊','全壊','娘','宗教','宗派','不健康','怖い','恐怖症','恐ろしい','一杯','極めて','欧米','中欧','江戸','入り江','強烈','猛烈','猛〜','略す','略語','痛み','眠る','航空','英雄','韓国','日韓','魅力','結婚','求婚','新婚旅行','未婚','奇数','奇妙','懐かしい','押す','撮る','診断する','白旗','国旗','背景','更新','枕','浮く','漏水','盗品','幼稚園','精神的','精神病','〜系','太陽系','体系的','翌日','翌月','翌朝','翌年','不詳','貧乏','遊ぶ','遊園地','登録する','服飾','騒音','輸入する','我々','直接的','怒気','腹が減った','招き猫','航空券','攻撃する','思い詰める','見詰める','緊張する','離婚','既存','編む','外務大臣','総理大臣','中華','地下街','画廊','泥水','棒','倉庫','倉','巣','ハチの巣','帯','半径','救急車','救う','散歩','麦粉','花粉症','粉状','人脈','山脈','血脈','野菜','菜食','貨物','通貨','似る','均等','徳川','徳島県','探究','美味しい','綺麗','結婚式','押しボタン','出版する','出版社','結婚する','撮影禁止','照り焼き','背中','迎える','大騒ぎ','序文','桜','桜肉','桜色','永久','液体','眼','眼球','先祖','祖父','興味','自衛','衛星','銭','銭湯','傷','傷める','傷心','傷者','共産党','政党','党員','社会党','卵','生卵','ゆで卵','捨てる','込む','秘密','汚水','汚点','欲しい','肉欲','暖かい','温暖','机','秘める','簡易','訳す','訳者','訳語','通訳','和訳','越す','編集する','散歩する','物真似','閉める','雑誌','窓','否','筋','筋肉','拡がる','体操','敬語','灰','灰色','灰皿','熟語','異性','異義','天皇','皇太子','皇族','砂糖','果糖','納める','肺','肺がん','肺病','蒸気','蔵','裏口','裏切る','裏切り','裏通り','貨物船','主催する','掃除する','複数形','心臓','内臓','追い越す','祖父母','飼い主','使い捨て','投げ捨てる','書き込む','人込み','言い訳','歓迎','興味がない','誤解','誤字','誤用','誤算','兄貴','貴様','牛丼','うなぎ丼','丼','吐く','奴','奴隷','芋','焼き芋','じゃが芋','縮まる','単純','不純','縦','縦書','縦横','聖書','聖日','磁気','磁石','磁場','紅茶','注射','幕','字幕','拝見する','推薦','薦める','沿岸','源氏','電源','震源地','劇','喜劇','劇的','勤める','通勤','全損','豆','腐敗','爪','爪切り','時刻表','閉じる','垂れる','宣言する','盛り上げる','諸々','否定形','否定する','尊敬する','暮らし','同音異義語','著作権','蒸し暑い','蒸し返す','測る','破船','破産','庁舎','講演','講師','講義','遅滞','紹介','自己','亀','互い','相互','剣道','長寿','彼','彼ら','杉','味噌','炎症','為に','熊本県','獄内','入獄','出獄','脱獄','酔う','泥酔','酢','鍋','湖','山中湖','青銅','銅山','銅像','払う','原油','給油','醤油','簡単','親子丼','吐き出す','奴ら','口紅','薦め','勤め','放射能','指揮者','源氏物語','損害する','枝豆','豆腐','姓名','甘い','甘く見る','甘党','将来','将軍','同盟','遺体','国債','奈良','幅','変える','摘む','摘発する','核','核兵器','沖合','縄','津波','献血','継ぐ','舞う','歌舞伎','一般','超〜','超音速','超音波','馬鹿','鹿児島県','鹿','承諾','受諾','牙','降参する','彼女','試験地獄','〜鍋','払い','自己紹介','紹介する','紹介状','汁物','味噌汁','二日酔い','跳ぶ','昭和','漁師','漁船','漁業','刑務所','刑罰','募金','募集','塁','塁審','急患','戻す','戻る','下旬','中旬','湾','台湾','爆発','爆弾','自爆','弾','弾丸','聴者','聴く','盗聴','奇跡','証跡','遺跡','闘う','戦闘','闘志','陣','陣営','香水','前兆','臨海','知恵','抱く','狙い','狙撃','火葬','遺伝子','奈良県','廃止する','乗り換える','指摘する','沖縄','明治維新','お見舞い','舞踏会','全般的','需要','必需品','高齢者','宜しい','繰る','避難','妊娠する','致命的','朝刊','月刊','夕刊','演奏','同伴する','奥さん','配慮','冷房','暖房','選択','描く','盤','円盤','対称','一緒','内緒','緩い','緩む','緩やか','委託','賄賂','逃げる','及び','換える','将棋','縄跳び','本塁打','払い戻す','弾く','言葉遣い','掲示板','募集中','戻り道','取り戻す','狙う','呼び鈴','岐阜','雇用','壁','棋士','片〜','片手','片言','片仮名','片道','群れ','群馬県','水仙','仙台','免状','免許','免税','御免','圏外','英語圏','埋める','埼玉県','奪う','御飯','拒否','枠','枠組み','甲','福祉','稲','移譲','謙譲語','銃','銃弾','短銃','事項','要項','鋼材','製鋼','宜しく','宜しくお願いします','避難する','奥様','扱い','取り扱う','選択する','緩める','贈り物','葬儀','沖縄県','回顧録','駐日','駐在','柱','電柱','唱歌','独唱','歌唱','合唱団','孝行','不孝','俊才','兼業','洗剤','薬剤','薬剤師','防腐剤','〜剤','吹く','堀','外堀','堀川','巡回','巡礼','排気','排出','携帯','過敏','鋭利','敷金','座敷','頻度','頻発','薄い','栄誉','褒める','褒賞','透明','隣','隣家','近隣','隣国','隣人','優雅','群れる','御手洗','岐阜県','雇用者','御免なさい','社会福祉','謙遜','拳銃','原爆','渋谷','充電する','手の甲','徹する','徹夜','瀬戸','瀬','撤回','撤兵','果樹','樹皮','植樹','虎','蛍','蜂','蜂蜜','蜜','艦船','艦隊','潜水艦','原潜','潜水','潜在意識','石炭','〜畑','麦畑','包囲','更衣室','脱衣','仁義','鉱山','鉱石','鉄鉱','鉱業','忠誠','故郷','侵攻','偽装','駆け出す','駆け回る','携帯電話','最新鋭','犠飛','不透明','双子','双','双眼鏡','哲学','堅い','温床','一括','挑戦','掘る','発掘','揚げる','動揺','書斎','解析','柄','人柄','一泊','宿泊','泊まる','潟','範','交通網','通信網','肝炎','芝','芝生','東芝','荒い','袋','ゴミ袋','福袋','軍艦島','包み','浴衣','誠に','誰','誰か','珍','珍味','襲撃','奇襲','空襲','逆襲','趣味','距離','牧師','印刷','刷る','明朗','朗報','風潮','満潮','即〜','即座','即死','即日','垣','球威','封','懇話','擦れる','旨い','論旨','柔道','沈める','沈む','沈滞','沼','安泰','滅ぼす','滅亡','絶滅','壊滅','幻滅','滋養','炉心','琴','携帯ストラップ','克服する','挑戦者','揚げ','揺さぶる','揺する','泊まり','泊める','焦る','紛らわしい','手袋','竜','恐竜','縁談','左翼','右翼','不吉','忍者','刃','桃','桃色','辛い','謎々','侍','俺','俺ら','俺たち','叱る','娯楽','斗','朱','朱印','丘','梨','〜匹','四匹','一匹','釣り','釣る','髪','金髪','髪型','嵐','笠','大砲','涙','感涙','缶ビール','缶','空き缶','缶コーヒー','姫','姫様','棚','粒子','雷雨','雷','魚雷','芽','塔','バベルの塔','エッフェル塔','引き裂く','襲撃する','遠距離','近距離','短距離','滅びる','硬い','矛','肌','鳥肌','肌色','小舟','舟','元凶','狩り','頃','先頃','いつ頃','この頃','脚','可也','井戸','呪い','呪う','旧暦','西暦','曇る','全裸','半裸','賭ける','賭け','疲れる','塾','義塾','塾生','電卓','食卓','卓','磨く','磨き','ばい菌','無菌','殺菌','陰','陰気','悪霊','霊感','亡霊','霊園','加湿器','湿地','嫁','溝','排水溝','滝','狂気','翔る','親孝行','口笛を吹く','伺い','手堅い','荒々しい','悪趣味','包み紙','黒潮','お握り','揚げ出し','新芽','墨','墨絵','入れ墨','穏やか','鈍感','鈍器','魔術','魔女','寮','寮生','お盆','病棟','吾輩','斬新','斬る','椅子','歳月','〜歳','二十歳','万歳','清涼','涼風','猿真似','猿','鍵','零','零時','零点','碁','囲碁','碁盤','租界','租税','泡','気泡','水泡','癖','幽閉','幽霊','鍛錬','錬金術','鍛える','稲穂','皇帝','帝国','瞬く','瞬時','誇る','庄園','阻止','黙る','沈黙','土俵','綿','書架','眺め','疲れ','砕石','粉砕','粘着','霧','黒い霧','朝霧','花柳','伊勢','補佐','尺','哀れ','可哀想','唇','下唇','上唇','塀','突如','老婆','お婆さん','貨幣','憎む','愛憎','休憩','扇ぐ','扇風機','扇子','扉','挿絵','挿話','挿入','車掌','滴る','水滴','点滴','自炊','炊飯器','〜畳','畳','箸','胴','胴体','芯','虹','虹色','お嬢さん','稼ぎ','〜狩り','歯を磨く','澄ます','塊魂','お陰で','帝国主義','魔法使い','貯蓄','蚊','蚊帳','記帳','手帳','メモ帳','電話帳','蛇','辱める','屈辱','鉢','火鉢','鉢巻','闇','暗闇','隙','隙間','飢餓','飢える','餓死','迅速','騎士','騎手','騎兵','尽きる','尽力','迷彩','水彩画','記憶','溶かす','溶岩','忍耐','耐熱','耐火','耐久性','踊る','踊り','踊り場','盆踊り','賢人','大麻','街灯','電灯','咲く','培養','脇','脇見','班','塗布','塗装','塗料','斜め','斜面','殴打','盾','後ろ盾','収穫','貨幣価値','不明瞭','粘り','お婆ちゃん','憎らしい','憎しみ','憎い','挿入する','紫','紫外線','紫色','誓約','基礎','鶴','刈る','草刈り','刈り取る','唯','唯一','唯物論','壇','花壇','仏壇','尼僧','尼','概念','浸水','侵食','淡い','煮る','煮物','陰謀','陶器','陶芸','隔月','隔てる','遠征','征服','俗語','民俗','俗','桑','桑原','桑畑','利潤','奨学金','劣等感','勘','王妃','皇太子妃','妃','溶ける','蟹','鰐','鬱陶しい','巧い','風邪','邪魔','下駄','駄目','唐突','法廷','帳簿','表彰','漫画','訂正','諮問','感銘','銘柄','銘々','堰','堤防','漂う','漂流','翻意','翻訳','軌跡','軌道','〜亭','仰々しい','伯','伯母','淀川','墳墓','壮年','液晶','水晶','空洞','洞穴','検疫','疫病','脅す','飢え','尽くす','彩り','悔やむ','殴り合い','殴り込み','詐欺師','花柳界','休憩所','粘々','お疲れ様','鬱気','〜階','天使','お手洗い','進撃','黒板','汚い','眼鏡','新年','教科書','食べ物','律動的','共有する','僕','編集者','迷惑メール','在留する','演ずる','赤い','部分','兵','剣','魔','今日は','毎朝','中指','動物園','不機嫌','全額','居間','幾度','背が高い','奥深い','衣服','九日','売れる','入院','平仮名','相図','島','左腕','快楽','飾り','舞','落雷','大いに','愛する','会議室','家庭教師','お祝い','快適','迎え','誤り','手頃','無邪気','生まれ','宙','心得る','反響','貴重品','馬鹿馬鹿しい','一翼','両翼','揺らぐ','偉人','喚起','召喚','塚','愛媛県','慈悲','挟む','沸点','浦','渦','渦中','洗濯機','洗濯粉','洗濯屋','玄関','玄米','瓶','花瓶','空き瓶','火炎瓶','瓶詰','耕地','農耕','聡明','皮膚','苗','苗字','蓮花','貞節','貞操','不貞','軒','〜軒','柔軟','軟禁','私邸','官邸','公邸','邸宅','郊外','近郊','郡','釈明','解釈','隅','隅々','〜隻','頂く','襟','偏食','噴火','噴煙','噴水','噴出','孤児','孤独','孤立','恒星','自慢','擁護','擁する','特殊','没後','戦没','日没','没頭','没落','犠牲','猟師','密猟','猟犬','食糧','膨張','芳香','茨','覇権','覇者','〜貫','一貫','貫通','賠償','遭遇','冷遇','境遇','遭う','遭難','鎖国','連鎖','陥る','隼','必須','颯と','お風呂','皮膚科','皮膚病','襟元','襟巻き','丹誠','啓蒙','土壌','寛大','徐々','惨事','挟まる','据える','曙','枯れ木','浄化','浄土','不浄','清浄','洗浄','西瓜','原稿','草稿','稿料','緯度','南緯','北緯','化繊','細胞','同胞','舗','店舗','舗装','競艇','苗木','苗床','葵','蓮根','虐殺','教諭','錦','錦鯉','随時','随筆','急騰','鯉','緋鯉','倫理学','倫理的','偏り','王冠','勲章','卸','卸値','卸売','叙事詩','叙述','自叙伝','呆ける','進呈','贈呈','哺育','孤児院','尚','高尚','時期尚早','庶民','杏','栞','栽培','盆栽','欄','欄外','犠牲者','哺乳瓶','疎外','疎通','音痴','痴漢','無秩序','自粛','紋','指紋','紋章','膨らむ','茎','茨城県','山荘','別荘','歌謡','童謡','民謡','賠償金','逸話','最優遇','酷','過酷','酷使','酷い','冷酷','鎌','陳列室','露顕','捕鯨','之','起伏','潜伏','伏線','傍','凝固','凝視','奉納','尿','弥生','循環','惜しむ','惜敗','愉快','憂鬱','憂国','披露宴','抹殺','抹茶','抹消','据え付ける','栃木県','栓','栓抜き','洗浄剤','瓜実顔','治癒','癒着','粗野','粗い','累計','累進','累積','老舗','山葵','捕虜','来賓','鎮圧','鎮痛剤','骨髄','真髄','神髄','凛々しい','非凡','平凡','凡庸','匠','巨匠','呉服','嘉日','寂しい','静寂','大尉','少尉','弦','弦楽','怠け者','恭しい','満悦','〜拍','拍手','脈拍','搾る','搾乳','摂氏','智','柴','柴犬','洪水','方向音痴','墓碑','碑文','記念碑','穀類','米穀','窒息','窒素','窮地','窮乏','紳士','縫う','裁縫','船舶','舶来','蝶','歌謡曲','管轄','所轄','直轄','遥か','無報酬','錯誤','丘陵','靖国神社','飽きる','熊之実','乙','伐採','年俸','凹凸','坪','弔辞','悪循環','循環器','不愉快','敢闘','勇敢','旋回','旋律','楓','楓糖','水槽','借款','漬ける','盲人','盲点','盲目','色盲','紺','羅針盤','胎児','堕胎','受胎','胎盤','腸','胃腸','膜','角膜','網膜','均衡','烏賊','海賊','山賊','盗賊','迎賓館','普遍','酵母','発酵','検閲','鼓','鼓動','鼓膜','太鼓','媒酌','帆','弦楽器','回忌','禁忌','一周忌','遊戯','戯曲','扶助','暁','不朽','老朽','淑女','濁流','硫酸','窃盗','紳士協定','絹','肖像','藩','藩主','蝶々','恩赦','更迭','晩酌','酌む','錠','手錠','錠剤','飽くまでも','鶏','鶏肉','鶏卵','養鶏','早乙女','東亜','侮蔑','叔父','叔母','堪える','婚姻','駐屯','岬','峠','弁慶','慶弔','憧れる','模擬','擬装','法曹','浪人','漆器','漆黒','漬物','〜漬け','親睦','暗礁','環礁','岩礁','禍根','戦禍','胆','胆石','大腸菌','軽蔑','不均衡','詠む','普遍的','遮断機','左遷','変遷','酪農','鋳造','雌','雌花','隠匿','匿名','升','唄','唄う','坑道','婿','寡婦','帆船','拷問','某〜','殉職','泌尿器','湧く','湧水','煩い','湖畔','下痢','硫黄','藍','海藻','南蛮','醜い','狐','大学院生','楽天主義','燃料','華道','白熊','慰謝料','木綿','家事','神様','高等学校','有り難う','両腕','右腕','胃','何故なら','遊び','華美','異常','支払い','手首','絵文字','運動会','割り算','間違える','洗濯する','嘘','串','串焼き','飴','膝','膝小僧','挨拶','凄い','凄絶','妖精','妖怪','喋る','鮭','宛名','蹴る','麺','拉麺','電気柵','噛む','狼男','麺つゆ','拉致','煎餅','煎茶','親戚','餅','屁','完璧','我が国','弊社','抱っこ','豚カツ','勿論','瑛斗','遼太','綾乃','莉子','茜色','那智の滝','蒼白','拓哉','酌み交わす','詠う','詠歌','梓川','某所','七', '八', '一', '三', '丸い', '子犬', '手', '千', '犬', '目', '日本', '天', '王', 'アメリカ人', '五台', '二台', '十台', '一台', '〜台', 'お母さん', 'フランス人', '冬', '二万', '父', '外人', '広い', '母', '二百', '百', '耳', '花火', '虫', '見る', 'お茶', '全日本', '南', '四十二', '外国人', '姉妹', '本州', '死', '私', '足りない', '首', '九州', '今夜', '冬休み', '国王', '有名', '死亡', '海外', '点', '三番目', '二倍', '京都', '四十二階', '大根', '暑い', '歯医者', '気温', '深夜', '温泉', '落ち葉', '運', '都市', '音読み', '顔文字', '飲み物', 'いい加減にしろ', '判子', '制服', '増える', '増税', '容疑者', '急増', '挙がる', '敵', '暴力団', '暴走族', '減らす', '無敵', '税金', '説得する', '資金'], 1: ['十', '七つ', '二', 'ふじ山', '二月', '円い', '玉', '〜円', '十六', '人々', '火山', '田', '丸', '五十', '千円', '水', '引く', '一万', '分', '友人', '半', '心', '市', 'シアトル市', '矢', '太い', 'ベッドの下', 'お礼', '元気', '四十', '四百', '村', '白い', '百万', '竹の子', '糸', '貝', '赤', '先生', '子牛', '氷', '車', '2011年', '二世', '四つ', '気分', '〜回', '何', '牛 肉', '色', '色々', '草', '角', '麦', '何回', '来年', '林', '男の人', '男の子', '社内', 'お姉さん', '両手', '中東', '今年', '午後', '次回', '死ぬ', '科学', '草地', '首になる', '〜室', '三百', '午前', '小文字', '早く', '死体', '一歩', '外国', '州', '足首', '金星', '四国', '年上', '東北', '水星', '血', '長い', 'ナポレオン三世', '不人気', '先週', '夏休み', '言い方', '金魚', '黄色', '〜時', 'お兄さん', '一斤', '三角形', '中学生', '二時半', '大学生', '心理学', '手紙', '来週', '辺', 'お前', '一番', '北海道', '南米', '名前', '朝', '森', '絵', '話す', '買う', '電池', '電話', '地中海', '学者', '工学者', '役', '朝日', '電力', '馬', '〜度', '中学校', '全部', '工事', '服', '泳ぎ', '白黒', '和室', '和服', '曲がる', '本屋', '楽勝', '気を付けて', '火事', '高校生', 'スペイン語', '千葉', '最高', '横', '歌手', '病人', '病気', '自転車', '葉', '読む', '顔', '顔付き', '公開', '外来語', '山道', '曲線', '最後', '楽しむ', '立ち飲み', '親切', '読み方', '鉄人', '開ける', '頁', '頭', '〜位', '不便', '初回', '別々', '勝ち', '好き', '戦車', '新た', '気持ち', '洋室', '洋服', '生物学', '神', '中級', '乗り物', '仲直り', '作戦', '便利', '保持する', '別の', '気持ちいい', '決定する', '良い', '勉強', '動物', '地球', '家庭', '最深', '植物', '消す', '温度', '父親', '短刀', '空港', '第二章', '船員', '運動', '野球', '開く', '合う', '庭', '東京都', '民族', '水深', '温かい', '祭', '第一', '落とす', '虫歯', '集まり', '鳴き声', '例文', '動き', '基本', '完全', '希望', '性', '性病', '日本的', '松葉', '気持ち悪い', '消化する', '狼', '芸者', '苺', '両側', '兵器', '内側', '原作', '原子', '幻想', '底', '恋愛', '悪因悪果', '悲劇', '愛人', '愛国心', '愛情', '日常', '昼ご飯', '東側', '果物', '梅', '水兵', '無名', '無茶', '空席', '署名', '鼻歌', '三冊', '信徒', '八冊', '名詞', '多忙', '大きい順', '季節', '宇宙', '対比', '小さい順', '履歴書', '忙しい', '悲しみ', '混ぜる', '猫舌', '若布', '警官', '連日', '任務', '公設', '制度', '大敵', '履き物', '建設', '形容動詞', '手続き', '検査', '続ける', '設定する', '警察官', '責める', '人権', '企画', '書評', '済む', '産む', '選挙', '飲酒運転', '〜務省', '総体的', '乳首', '保守主義', '保護する', '停電', '収入', '呼ぶ', '川崎', '批判する', '指導', '求職', '沢山', '男優', '痒い', '看護師', '確認する', '経済学', '総理府', '職場', '選挙する', '革'], 2: ['山', ' 九日', '天才', '刀', '本', '一月', '目玉', '火', '白人', '十月', '子', '玉ねぎ', 'お父さん', '万', '切る', '方', '戸', '十万', '市立', '半分', '今', '大切', '山びこ', '一年生', '少年', '月見', '三世', '右手', '天気', '見せる', '左手', '花見', '先々月', '先月', '号', '一回', '兄弟', '図', '金', '青い', '下町', '声', '工学', '本当', '毛虫', '皮肉', '行く', '仕方がない', '国', '年下', '明るい', '不安', '両日', '地中', '有る', '歩く', '羊毛', '世の中', '代わり', '思う', '東', '亡くなる', '地下', '天国', '姉', '文化', '二斤', '今週', '夏', '月末', '未来', '海王星', '海魚', '紙', '二番', '医大', '医者', '局', '思い出す', '楽', '番号', '答え', '長さ', '電子', '電気', '乗る', '何度', '千円札', '実', '新しい', '試験', '今朝', '回転', '算定する', '親友', '農業', '速い', '丁度いい', '入学試験', '別', '別人', '売り手', '太平洋', '戦場', '指', '海岸', '神道', '苦しむ', '金持ち', '労働者', '心持ち', '意味', '意外', '戦争', '教育', '最初', '老人', '西洋', '店員', '旅行', '本流', '湯', '着る', '短い', '聞こえる', '言葉', '運転手', '太陽', '悪い', '活動', '血族', '起こる', '会員', '商人', '心配事', '息', '根', '植える', '深い', '短期', '終電', '茶の湯', '入館料', '全然', '初めに', '問題', '当然', '新宿', '暗記', '殺す', '温める', '王様', '詩', '詩人', '銀行', '鏡', '飲み会', '〜的', '一例', '下着', '卒業', '回転ずし', '完了', '流れる', '深さ', '着ける', '約束', '芸能界', '落ち着く', '言葉つき', '骨', '不信', '区', '単に', '単語', '変化', '夫', '寺', '岩', '方法', '昨年', '昼', '晴れる', '毒ガス', '軍', '食べ放題', '不完全', '不治', '公園', '卒業する', '外面', '大阪', '字典', '希望する', '幸せ', '待合室', '笑う', '辞める', '辞典', '門', '関西', '不味い', '側', '左側', '敗者', '梅酒', '治す', '泣き声', '泣き虫', '無料', '米兵', '薬学', '薬方', '薬用', '食堂', '鼻血', '〜枚', '五枚', '僧院', '友達', '取り出す', '可愛い', '座禅', '日焼け', '書き方', '書き直す', '月曜日', '水曜日', '汽船', '焼き肉', '焼き鳥', '禁止', '脳', '脳みそ', '人類学', '余震', '個人', '借り手', '公害', '可能性', '圧力', '夢', '天気予報', '嫌い', '尾', '指圧', '機', '穴子', '論文', '議員', '議長', '防火', '電子機器', '震度', '音訓', '鼻の穴', '乱す', '判断', '批判', '正義', '無くす', '目覚める', '素材', '主義', '任意', '分解', '定義', '権利', '総理', '不文律', '住宅', '優勝', '吸血鬼', '導く', '幹', '張る', '検査する', '演芸', '無職', '現実', '理解する', '秀でる', '羨ましい', '職員', '自宅', '解く', '贅沢', '上巻', '効く', '効率', '吸収する', '天候', '居る', '巻く', '抜く', '掛け算', '新鮮', '気候', '満月', '票', '絞殺', '肥満', '限定', '頑張る', 'お菓子', '人差し指', '人造', '怪獣', '怪談', '我', '振る', '株式市場', '検討する', '河童', '特徴', '独学', '獣医', '突く', '第一印象', '筆', '製造', '触れる', '載せる', '造る', '野獣', '〜症', '健康', '切腹', '効果的', '南極', '大規模', '巻きずし', '悩む', '悪影響', '手掛かり', '手渡す', '抜き出す', '掛かる', '昇進', '減給', '濃い', '症状', '眠い', '睡眠', '給与', '給料', '迷路', '隠居する', '靴屋', '頭痛', '咳', '小豆', '幕府', '承知', '拝む', '損害', '枝', '沿海', '沿線', '源', '痩せる', '痩身', '神聖', '紅', '納豆', '純毛', '肺臓', '自薦', '貴い', '賛成する', '降車', '飛び込み自殺', '黒幕', '三つ編み', '兵舎', '寿司', '尊敬語', '彼氏', '恥', '恥ずかしい', '暮れる', '果汁', '油田', '熊', '真剣', '裏切り者', '遅れる', '遅延', '閉まる', '上旬', '刑期', '反抗する', '対向する', '弾力', '恥ずかしがる', '患者', '抗体', '抵抗する', '死刑', '油絵', '派遣', '爆撃', '爆笑', '甘酢', '眉', '破れる', '給油所', '臨時', '葬式', '跡', '遅い', '香り', '香川県', '香港', '〜殿', '一生懸命', '中華麺', '内堀', '名誉', '唱える', '嬉しい', '排水', '排除', '敷く', '新鋭', '殖える', '殿堂', '殿様', '犠打', '獲得', '繁殖', '繁茂', '繰り返す', '薄弱', '贈賄', '逃亡者', '鋭敏', '雅致', '駆ける', '駐車場', '麺棒'], 3: ['正しい', '七日', '女の子', '用', '太る', 'ビー玉', '分かる', '大人しい', 'イギリス 人', '中央', '丸ごと', '早い', '本気', '申す', '足', '三角', '兄', '里', 'お金', '作文', '公社', '学生', '空車', '立てる', '中国', '代える', '曲', '見分ける', '車両', '全て', '不明', '店', '直す', '社長', '米国', '名曲', '国宝', '引き分け', '知る', '私生活', '台風', '学校', '家', '弱点', '本当に', '火星', '理由', '考え方', '風', '高い', '黒人', '社会', '週末', '黒い', '全米', '数学', '時間', '研究', '音楽', '支店', '私立大学', '答える', '和風', '家具', '毎度', '物', '生物', '試食', '重い', '乗せる', '学院', '投げ付ける', '日本酒', '歌', '私大', '私鉄', '聞く', '進化', '運がいい', '運転する', '青葉', '〜向け', '出会う', '助かる', '大学院', '引き算', '当て字', '病む', '終わる', '落ちる', '言語', '集金', '一位', '別に', '特に', '見送る', '〜付き', '味', '安売り', '成る', '拾う', '本物', '特別', '高級', '息子', '第一位', '屋根', '泉', '田代島', '鳴る', '億', '同感', '戦う', '暗い', '自殺', '親指', '話題', '周囲', '固い', '待たせる', '技能', '文化祭', '料理', '期待する', '材木', '目的', '知り合い', '芸術', '雰囲気', 'お願い', '今晩は', '仏教', '勇気', '坂', '変', '大変', '春休み', '昨日', '昼休み', '時計', '有毒', '英文', '食中毒', '飲み放題', '一昨日', '原因', '外側', '干す', '建物', '是非', '歌劇', '無力', '無知', '薬物', '五十音順', '仏教徒', '内容', '容疑', '布団', '悲しい', '易しい', '歴史', '毛布', '無意識', '口笛', '実際', '布地', '検問する', '正解', '派手', '混乱する', '強制', '羨望', '事件', '投資', '解決', '設ける', '不可能', '価格', '値', '各〜', '吸う', '大嫌い', '宮', '市営', '藤', '費用', '面倒臭い', '上演', '了解', '俳優', '基準', '律動', '断つ', '混じる', '準備', '演技', '現在', '表現', '辞職', '革命', '主婦', '修辞学', '児童', '兵隊', '冷たい', '冷静', '凍死', '反攻', '回数券', '大間違い', '夫婦', '家政婦', '巨人', '巨大', '幼稚', '従兄弟', '撃つ', '攻撃', '比較的', '浜', '浜辺', '無我夢中', '独り言', '痛む', '移す', '移住', '移動', '移民', '精神', '絶望', '記録', '車庫', '逆説', '録音', '不快', '不適', '切符', '匂う', '官僚的', '延ばす', '延期する', '延長', '快い', '快感', '我が〜', '押し', '旗', '日系', '更生', '柵', '漏出', '照明', '痛める', '盗作', '移住者', '精一杯', '背', '豚骨ラーメン', '預金', 'クモの巣', '印鑑', '墓', '墓地', '壊れる', '壊れ物', '富', '富む', '富士山', '尋ねる', '幾つ', '廊下', '恐れ', '掃く', '普通', '泥', '照らす', '直径', '編者', '陸軍', '噂', '地蔵', '垂らす', '墓場', '宣伝', '宣言', '成熟', '掃除機', '散らかす', '散らし', '暮らす', '服装', '漠然', '無糖', '砂漠', '窓口', '裏', '諸君', '野暮', '閉店', '離す', '一人称', '仮称', '伴う', '併合', '依頼人', '基盤', '奥', '年齢', '抑制', '描写', '日刊', '湯豆腐', '維持する', '老齢', '考慮', '致す', '贈収賄', '超す', '踏み込む', '避妊', '降ろす', '頼み', '馬鹿らしい', '仙人', '充電', '免除', '削除する', '勧める', '勧告', '南極圏', '原子爆弾', '壁紙', '小遣い', '崩れる', '御覧になる', '応募する', '掲載する', '棋院', '渋い', '眉毛', '稲作', '稲田', '解雇する', '邦人', '隆盛', '隆起', '雇う', '項目', '飛躍'], 4: ['九', '木', '〜才', '夕べ', '出口', '女王', '一日', '中', '女の人', 'テーブルの上', '止める', '宝石', '平日', '平気', '名', '二十日', '口にする', '〜斤', '四角', '今回', ' 光年', '来る', '水色', '空気', '言う', '金玉', '全力', '妹', '耳打ち', '両方', '全国', '夜', '羊', '地', '宝くじ', '平安', 'この辺', '作り方', '心理', '白鳥', '船', '船体', '年末', '日記', '直る', '魚', '南口', '反対', '名所', '自決', '道', '勝つ', '客室', '海', '美人', '食事', '高さ', '〜部', '今度', '仮名', '星', '見付ける', '角度', '道具', '始める', '研究室', '習う', '親', '進む', '低い', '売り切れ', '波', '神社', '運命', '不良', '仕返し', '使い方', '命令', '売り上げ', '発売中', '待つ', '旅', '港', '登山', '集まる', '悪人', '一流', '消化', '童話', '行動', '協力', '周年', '性格', '残業', '流行語', '能力', '頑固', '不幸', '冗談', '危ない', '古典的', '基本的', '妥協する', '急死', '折り目', '日光浴', '曜日', '笑顔', '箱', '約束する', '自動的', '荷物', '証人', '証言', '関係', '小説', '建築家', '栄光', '欠席', '無理', '紀元前', '薬', '警察', '兵員', '出席', '細い', '説明', '不等', '借りる', '切り取る', '叩く', '喫茶店', '固まる', '夕焼け', '大丈夫', '座席', '忘れる', '洗車', '留守番', '祈念', '禁じる', '辞書形', '達する', '達人', '劇団', '原子力', '喜び', '形容詞', '梅干', '混血', '集団', '順番', '一個', '会議', '夫妻', '弓矢', '火災', '犯す', '産まれる', '留守番電話', '確かに', '経験', '防止', '静々', '理解', '義務', '苛々する', '審査', '立派', '解説', '認める', '資料', '条約', '沢', '主観的', '交差点', '伝統的', '半袖', '原型', '品質', '官庁', '届く', '展示会', '差別', '年額', '感触', '提案する', '日本製', '朝寝坊', '武道', '発展する', '腕時計', '規準', '観光客', '象', '販売', '質', '輸出', '輸血', '述べる', '量', '長袖', '効果', '属する', '年輩', '影', '慣れる', '所属', '状況', '結構', '訴訟', '逮捕', '隠居', '万年筆', '何故', '再び', '刺激', '復習', '怪しい', '替わる', '氷河', '激しい', '激励', '無我', '独特', '秒針', '輸入', '運河', '過ごす', '酒造', '間違い', '障害', 'お構いなく', '不眠症', '休暇', '先端', '圧迫', '居酒屋', '怒る', '抜ける', '昇給', '極楽', '段階', '腰抜け', '貸し切り', '迷子', '逮捕する', '伝染病', '匂い', '密会', '密輸', '延長する', '恐い', '意欲', '採る', '採用', '桜んぼ', '永遠', '浮かれる', '火傷', '祖母', '背広', '自民党', '英訳', '衛生', '貧乏人', '酸っぱい', '酸素', '雑音', '食欲', '飼う', '予測', '交互', '地獄', '己', '有意', '汁', '海亀', '炎', '田舎', '石油', '破壊', '酢の物', '塁打', '大抵', '契機', '弁償', '応募', '掲載', '旬', '終身刑', '聴力', '船酔い', '酔っ払い', '二泊', '克明', '克服', '円弧', '分析', '到着', '吹き出す', '吹き込む', '喪', '喪失', '国柄', '小柄', '床', '握力', '握手', '暫定', '滑る', '病床', '素麺', '綱引き', '肝臓', '芝草', '駆け込む', '北斗七星', '叫ぶ', '哲学者', '寸', '寸法', '忍ぶ', '握り', '本棚', '滑り台', '焦がす', '管制塔', '網戸', '翼', '荒波', '謎', '辛勝', '辛抱', '香辛料', '髪の毛', '丹念', '剰余金', '召し上がる', '合繊', '啓発', '寛容', '平壌', '徐行', '搭乗', '暴騰', '本舗', '沸かす', '沸騰', '浄水', '渦巻き', '真鯉', '緯線', '胡瓜', '脂身', '自浄', '艦艇', '蒙古', '虐待', '諒一郎', '過剰', '随分', '頂', '中尉', '凡人', '尚且つ', '師匠', '庶民的', '弊害', '意匠', '摂理', '猶予', '疲弊', '石碑', '縛る', '縫製', '飽食'], 5: ['二つ', '九つ', '口', '一人', '五月', '文', '白', '下手', '五つ', '六月', '北', '生まれる', '男', '一打', '打つ', 'かき氷', '仕方', '生きる', '不足', '月光', '西', '北西', '空', '方言', '早口', '生活', '安全', '〜丁目', '小声', '強い', '教室', '青空', '会話', '君', '地上', '当てる', '楽しい', '水道', '交番', '作 者', '心身', '思い出', '生保', '終点', '軽い', '新聞', '電鉄', '上級', '初級', '労働', '友好', '指定する', '戦い', '放す', '〜倍', '文章', '親分', '時期', '体育', '大好き', '女神', '宿題', '追いかける', '選ぶ', '上司', '大仏', '建てる', '映す', '英国', '見返す', '輪ゴム', '飯', '仮説', '内因', '劇場', '喜ぶ', '幻覚', '無言', '知識', '虚栄心', '非常', '二枚舌', '比べる', '私財', '笛', '覚える', '説明書', '警察署', '財閥', '連中', '企てる', '務める', '羨む', '資格', '素敵', '義理', '条件', '増やす', '現場', '規則', '規律', '並ぶ', '利益', '憲法', '攻める', '程', '程度', '軍隊', '金庫', '一人娘', '三杯', '乾杯', '二杯', '倒壊', '同僚', '商店街', '好奇心', '宴会', '居眠り', '怒らせる', '恐怖', '日欧', '略図', '直航', '睡眠薬', '締まる', '診断', '請求', '請願', '貸し', '面積', '傷つける', '反射', '引っ越す', '損', '放射', '染まる', '染み', '歓楽街', '沿う', '深刻', '発射する', '粋', '純粋', '聖地', '股', '腐る', '腐食', '血液型', '詰め込む', '貴族', '主唱', '兼用', '内緒話', '嬉々', '捕獲', '排他', '生殖', '繁栄', '薄情', '透ける', '鋭い', '雅楽', '頻りに', '一斉に', '入籍', '凶器', '凶悪', '卓球', '塊', '天井', '山岳', '年頃', '擦る', '曇り', '海溝', '潮時', '狂う', '狩人', '眺める', '細菌', '脚本', '若い頃', '警鐘', '近頃', '鐘', '俵', '叫び', '叫び声', '寧ろ', '平穏', '悪魔', '担架', '斬殺', '架設', '涼しい', '白菊', '眼孔', '瞬き', '瞬間', '瞳', '碁会所', '穂', '紛れもない', '素粒子', '綿布', '誇大', '誇張', '辛子', '鈍い', '零下', '魔法', '鳩', '黙殺', '一蹴する', '割り勘', '勘違い', '哀れむ', '憩い', '抽出', '推奨', '概要', '浸透', '淡水', '無謀', '真珠', '覚悟', '誓い', '転覆', '間隔', '陛下', '隔週', '隔離', '駒', '不倫', '不祥事', '倫理', '偏見', '優遇', '処遇', '制覇', '噴射', '大輔', '待遇', '抱擁', '擁立', '沈没', '猟', '発祥', '秩序', '膨れる', '芳しい', '覇気', '鎖', '閉鎖', '鰐蟹', '佳作', '南瓜', '国賓', '憂慮', '旦那', '粗悪', '素朴', '脊髄', '赴任', '遺憾', '鎮魂', '降伏'], 6: ['左', '水中', '中々', '今日', '見方', '出かける', '太字', '一気', '休む', '何人', '多い', '〜形', '会社', '何年', ' 入社', '学年', '年次', '大文字', '方向', '小学生', '時', '未だ', '〜分', '〜号室', '以下', '同時', '考え', '両者', '身体', '事実', '勝者', '売る', '必要', '発音', '美しい', '要る', '不自由', '名物', '要点', '記事', '一番目', '工業', '最も', '研究所', '調べる', '道路', '便所', '味方', '始めに', '共通点', '試す', '期間', '流行', '終える', '都会', '商売', '根気', '落ち', '小指', '想像する', '感動する', '感情', '映像', '映画', '様々', '熱い', '疑問', '合わせる', '本能', '水着', '理性', '骨折', '不法', '人殺し', '情けない', '指輪', '自信', '軍人', '仏典', '仮面', '保険', '全治', '固める', '守る', '急行', '新品', '書く', '真っ黒', '真実', '自動車', '面白い', '図説', '失恋', '虚弱', '借家', '喉', '子守歌', '枚数', '汽車', '禁煙', '禅寺', '種類', '等しい', '親類', '警告', '一夫多妻', '不可分', '人達', '夢中', '嫌', '混ざる', '穴場', '被害', '難しい', '経済', '際', '責任', 'お土産', '位置', '副業', '副題', '各々', '地価', '尻尾', '年賀状', '支援', '案内', '物価', '産業', '県営', '経験者', '脱字', '脱走する', '評価', '震える', '優秀', '不規則', '与える', '候補者', '全景', '割れる', '増す', '後輩', '模型', '渡る', '訴える', '分離', '嘆息', '地帯', '大陸', '孫', '尋問', '巣立ち', '幾ら', '幾何学', '探す', '既決', '融合', '道徳', '厄介', '油', '遅刻', '渋滞', '群集', '足跡', '跳ねる', '連邦', '邦訳', '銃殺', '即効', '原子炉', '垣根', '埋まる', '威厳', '封建主義', '封書', '慰安', '懇親', '摩擦', '暖炉', '潮', '潮流', '牧場', '珍しい', '群がる', '襲う', '要旨', '貢献', '露', '露店', '高炉', '割り箸', '化粧', '崖', '帽子', '掌握', '撃墜', '欠如', '炊事', '爽やか', '粘土', '紙幣', '裸足', '詐欺', '詐称', '躍如', '門扉'], 7: ['三つ', '一つ', '二人', '二日', '〜人', '今 月', '戸口', '大気', '町', '他人', '年', '休み', '毎日', '考古学', '自分', '入学', '大学', '毎月', '走る', '安い', '前', '安心', '広がる', '次', '私立', '作家', '光る', '地理', '弱い', '強力', '町民', 'お知らせ', '医学', '東口', '見直す', '走り回る', '間もなく', '〜君', '他所', '対外', '点数', '〜屋', '二重', '住民', '実力', '弱々しい', '必勝', '負ける', '話', '足し算', '農場', '開業', '楽しみ', '決まる', '働く', '昔話', '初歩', '電波', '着々', '祭日', '流す', '周期', '望み', '望む', '骨格', '勝敗', '干渉', '悲しむ', '上品', '告げる', '告白', '喫煙', '報じる', '対等', '座る', '弓', '治る', '禅僧', '高等', 'いい加減', '乱暴', '入団', '助詞', '品詞', '履く', '減る', '続く', '優先', '反則', '済ます', '保障', '再建', '再来月', '従順', '授業', '気象庁', '河豚', '独創', '独立', '独身', '針医', '早退', '着替え', '締める', '織る', '腹', '訪問', '迫害', '迷信', '迷惑', '途中', 'ご覧', '初版', '怖がる', '浮世絵', '盗撮', '研修生', '背後', '貧しい', '購入', '電飾', '乾かす', '似合う', '冷蔵庫', '変装', '尊い', '小麦粉', '忠告', '忠実', '拡大', '拡張', '操る', '未熟', '武装', '泥棒', '異なる', '異状', '皇室', '盛る', '股間', '著者', '諸〜', '開閉', '刑事', '削減', '削除', '執筆', '契約', '崩壊', '恥知らず', '抗戦', '盛り上がる', '葬る', '一致する', '伸ばす', '併殺', '信託', '傾向', '却って', '妊婦', '房', '扱う', '抑圧', '描画', '生還', '貿易会社', '避ける', '妖しい', '屋敷', '懸かる', '敏感', '獲物', '薄まる', '衝撃', '褒美', '顧みる', '顧問', '駐留軍', '余剰', '元帥', '啓示', '批准', '投稿', '搭載', '枯らす', '残虐', '経緯', '総帥', '繊維', '胡座', '諭す', '凌ぐ', '地殻', '媒体', '容赦', '帆走', '感慨', '棋譜', '殻', '汚濁', '浄瑠璃', '瑞々しい', '瑠璃色', '絹糸', '縛り首', '縫目', '菅原', '起訴猶予', '酌', '金縛り', '飽き', '一遍に', '吟味', '崇拝', '崇高', '忌', '慶事', '慶祝', '沙羅', '浪費', '浮浪者', '漆', '漬かる', '遷都'], 8: ['一千', '右', '広げる', '世', '石', '外来', '大会', '日光', '生 まれ', '交ぜる', '外交', '多分', '毛糸', '時代', '交通', '活用形', '助言', '当たり前', '馬力', '丁度', '予定', '空手', '化かす', '乗り場', '放送する', '仕事', '屋上', '注ぐ', '苦しめる', '指先', '料金', '殺人', '水銀', '練習', '例外', '周り', '流行歌', '地区', '放つ', 'ゴミ箱', '専門', '急', '急ぐ', '料理人', '浴びる', '証明', '大失敗', '布', '予防', '妻子', '有罪', '比率', '災い', '災害', '皿洗い', '評論', '中国製', '値札', '国境', '応援団', '指差す', '月額', '本質', '株式', '無視する', '燃やす', '祝う', '血管', '触る', '近視', '遠視', '額', '高値', '不況', '効力', '捉える', '時限', '景観', '莫大', '見渡す', '規則正しい', '豊満', '隠す', '博打', '大衆', '幼児', '庫', '清い', '登録', '矢印', '精度', '絶つ', '身振り', '針金', '冷える', '功績', '厳禁', '密か', '恩賞', '汚染', '火照る', '老眼', '血液', '複写', '複数', '複雑', '購読する', '雑費', '順序', '常勤', '申し込む', '降る', '一筋', '介入', '喜寿', '仁', '侵入', '侵害', '偽', '偽造', '儀式', '包丁', '嘘吐き', '埋め合わせる', '埋もれる', '夏至', '帰郷する', '廃墟', '必至', '控える', '措辞', '撤去', '早瀬', '根拠', '渋々', '炭', '炭素', '焼酎', '礼儀', '航空母艦', '誠実', '誠意', '躍り', '軍艦', '辞儀する', '郷里', '高瀬', '不孝者', '吹き飛ばす', '括弧', '暫く', '焦げる', '紛糾', '綱', '肝', '荒れる', '薄める', '親不孝', '起床', '軸', '透き通る', '一斗缶', '刃先', '刃物', '喪服', '土砂', '寝床', '寸前', '戸棚', '揺れる', '無縁', '砂丘', '竜巻', '見逃す', '世界恐慌', '乾燥', '亮平', '偉い', '四隅', '山頂', '慈愛', '枯れる', '樹脂', '沸く', '注釈', '片隅', '耕作', '聡い', '脂肪', '邸内', '困窮', '怠い', '束縛', '窮屈', '錯乱', '一遍', '大腸', '平衡', '弔意', '憂い', '敢えて', '旋風', '浴槽', '海峡', '減俸', '濃紺', '烏', '烏龍茶', '甲乙', '癒す', '盲腸', '粗塩', '萌芽', '遍歴', '遮断', '酵素', '醸成', '鼓舞'], 9: ['下', '女', '上', '中古', '古い', '四日', '年内', '村人', '小皿', '気に入る', '人気', '休学', '体内', '古来', '土星', '足す', '〜札', '風船', '歩道', '工場', '支局', '数年', '空間', '教え', '発売', '使う', '持つ', '試みる', '重要', '最近', '集中', '心配', '算数', '進行', '競争', '伝わる', '動く', '根本', '予約', '例えば', '待ちぼうけ', '折る', '温まる', '近代的', '不合格', '事典', '前面', '取る', '図書館', '生存', '芸術家', '食料品', '伝説', '失敗', '栄える', '〜達', 'お守り', 'お 笑い', '予告', '予報', '借金', '叩頭', '可能', '平静', '手荷物', '得体', '総合', '施行', '不振', '印', '往復', '怪事件', '怪物', '渡す', '狭める', '討論', '郵便', '鉛', '障子', '面接', 'お任せ', '値段', '刺さる', '招待する', '見抜く', '迷う', '退院する', '長靴', '隠れる', '破る', '行為', '充実', '勧誘', '控え', '死刑囚', '補充', '跳躍', '鈴', '一瞬', '不穏', '口癖', '帝政', '発泡', '阻む', '阻害', '冠', '厳粛', '叙情', '噴き出す', '報酬', '実践', '庶務', '必須条件', '悠々', '愚', '新陳代謝', '殊に', '残酷', '波紋', '疎遠', '疾病', '疾風', '空欄', '誘拐', '逸品', '過疎', '酷評', '銀杏', '阿呆', '風呂屋', '鯨', '鯨肉', '元旦', '奉公', '貴賓', '輪郭'], 10: ['大人', '出る', '月', '少女', '写す', '平ら', '会う', '作る', '弟', '来月', '止まる', '見える', '会', '出来る', '向く', '失礼', '全身', '決める', '体重', '線路', '伝える', '指す', '公共', '開放する', '感謝', '楽器', '育てる', '選手', '動かす', '協会', '残る', '世紀', '仏', '新築', '返信', '主因', '川底', '建つ', '自覚', '詳しい', '願い事', '得', '暴走', '非常に', '順位', '喉飴', '立入禁止', '震災', '心得', '断る', '一応', '受領書', '消費', '状態', '私営', '脱線', '袖', '観念', '含む', '捜査', '景色', '豊か', '乗車券', '乾季', '大略', '寄る', '寄与', '眠り薬', '禅宗', '積もる', '緊張', '航法', '要請', '見極める', '誘惑する', '道に迷う', '閣議', '一覧', '並べる', '主', '変更', '撮影', '渇く', '絶える', '逆さま', '適当', '平均', '掃除', '探偵', '既に', '編集', '融資', '鼻詰まり', '垂直', '屁理屈', '熟れる', '納入', '装置', '久しぶり', '指揮', '推定', '汚す', '縮小', '込める', '里芋', '降参', '信頼', '医療', '同窓会', '吐き気', '大将', '復旧', '旧姓', '核実験', '治療', '献金', '盟約', '神奈川県', '縄文', '諾否', '象牙', '超自然的', '遺産', '電磁場', '奏楽', '懸命', '託す', '傾ける', '巡る', '衝突', '頻繁', '暦', '核分裂', '滝川', '疲労', '硬直', '裸', '魂', '一概に', '剛健', '劣る', '劣悪', '勘弁', '団扇', '大概', '恐慌', '恨み', '拘置', '概算', '炊ける', '礎', '老衰', '衰退', '覆面', '雑煮', '偏る', '偏狭', '埋没', '恒久', '恒常', '我慢', '欠陥', '没', '没収', '連覇', '陥没', '陳腐'], 11: ['三日', '少し', '去年', '宝', '米', '切れる', '付ける', '近く', '住む', '出来上がる', '回す', '池', '私自身', '対立', '役目', '投げる', '次々', 'ハート形', '勝負', '相談', '体験', '通り', '速度', '開始', '仲間', '注意', '用意', '受付', '〜放題', '力士', '整理', '材料', '残り', '消える', '特技', '好む', '晴れ', '作品', '冒険', '政府', '常識', '心底', '詳細', '伝達', '借用', '分類', '祈願', '訓練', '静止', '混乱', '若者', '連れる', '関連', '備える', '役割', '施設', '職業', '大違い', '担う', '故意', '直接', '貯える', '供給', '就く', '濃度', '理屈', '間抜け', '修士', '凍結', '処理', '婦人', '有益', '研修', '絶景', '福寿', '一人暮らし', '兆候', '崩す', '掲示', '眉間', '瓜', '胞子', '追随', '随所', '駿馬', '高騰'], 12: ['人', '牛', '代わる', '今すぐ', '今まで', '体力', '入れる', '体', '自立', '近い', '青年', '出血', '内ポケット', '国民', '入所', '対する', '支える', '数字', '未決', '決', '用事', '主語', '番号札', '成功', '苦手', '利息', '試合', '光栄', '幻', '恋', '結果', '得る', '恋人', '存在', '犯罪', '読者', '審判', '上述', '供える', '価値観', '典型的', '境界', '安値', '定額', '展開', '差す', '担当', '製品', '捜す', '時候', '賞与金', '厳しい', '志望', '恩人', '染める', '背丈', '賛成', '以降', '大損', '貴重', '拒む', '躍る', '鋼', '兼ねる', '巡査', '茂る', '訓戒', '干潟', '挑発', '掛軸', '揺る', '斎場', '模範', '焦点', '糾弾', '一斉', '偽物', '凄く', '国籍', '威張る', '懇意', '懇談', '揚がる', '牧野', '相撲', '石垣', '筒', '開封', '露出', '吉', '紛れる', '絶叫', '荒らす', '中佐', '土塀', '少佐', '彫る', '憩う', '掌', '明瞭', '柳', '湿らせる', '粘る', '雑巾', '交錯', '倒錯', '摂取', '穀物', '錯覚', '飽和'], 13: ['正す', '切手', '休止', '音', '当たり', '当たる', '点ける', '大きく', '教える', '組', '所', '明日', '科目', '究明', '調子', '共有', '意見', '競う', '進める', '学問', '詩歌', '輪', '失望', '残念', '芸人', '信号', '同期中', '変事', '建築', '急に', '政治', '辞書', '関する', '変わる', '無し', '不可欠', '仏僧', '洗練', '祈る', '証明書', '伝統', '勢力', '外観', '指示', '提案', '現に', '人狼', '絞める', '占める', '故', '独占', '独裁', '突然', '間接', '構え', '催促する', '均整', '感嘆符', '散る', '普段', '真似', '絶やす', '迷わす', '鑑定', '雄犬', '寿命', '油断', '股下', '装う', '傑作', '勿体ない', '呆れ返る', '年譜', '憤り', '憤慨', '拍子', '淑やか', '管弦楽', '系譜', '脊椎', '解剖', '赦免', '陪審'], 14: ['人工', '日', '外', '毛', '早々', '分ける', '目次', '以外', '数', '出発', '受ける', '返事', '送る', '事', '対談', '思わず', '終了', '欠く', '陽気', '宿', '熱心', '特選', '追い付く', '食器', '中毒', '変人', '果てる', '続々', '省く', '微か', '清潔', '衆議院', '壊す', '痛み止め', '省略', '詰める', '冷やす', '博覧会', '快速', '浮気', '盗む', '詰まる', '鉄柵', '否定', '尊敬', '著作', '除いて', '一般的', '刊行する', '奥底', '欠伸', '縄張り', '返還', '逃亡', '還元', '頼る', '丁寧', '歳入', '焦り', '瞳孔', '辛口', '孤島', '封鎖', '狩猟', '突貫', '陳列', '陳述', '惨め', '惨状', '玄人', '繊細', '軒並', '頂戴', '一抹', '一旦', '伏せる', '伏兵', '信奉', '奉仕', '憂える', '繁昌', '虜', '凸凹', '危篤', '取り敢えず', '憂き目', '憧れ', '流浪', '甚だ', '紡績', '萌え', '落胆'], 15: ['下さい', '王女', '左右', '休日', '何日', '同じ', '後で', '以前', '大空', '役人', '間', '要求', '見物', '転がす', '幸運', '留学', '証', '関心', '交渉', '感覚', '報道', '教訓', '書類', '煙', '苛める', '遠く', '配達する', '乱戦', '得意', '飲酒', '余計', '妨げる', '機械', '経路', '確認', '台詞', '型', '援助する', '管', '置き場', '過ぎ', '告訴', '影響', '期限', '満足', '習慣', '占い', '回復', '従来', '従業', '承認', '推理', '発揮する', '弾む', '活躍', '躍進', '遠慮する', 'やり甲斐', '包む', '投棄', '拠る', '拳骨', '放棄', '生き甲斐', '田畑', '破片', '誠', '鉱物', '〜魂', '小包', '湿気', '眺望', '硬貨', '稼ぐ', '肌触り', '抽選', '気概', '砕ける', '謀る', '開拓', '偉大', '召す', '喚く', '慌ただしい', '潤い', '焦燥', '煎る', '耕す', '肯定', '凸版', '恐喝', '惜しい', '網羅', '羅列', '醸す', '間伐', '閲覧'], 16: ['小さい', '四月', '人生', '中止', '光', '同日', '学ぶ', '皮', '行き', '工作', '生える', '活用', '〜氏', '人形', '必死', '人間', '口調', '苦労', '酒好き', '養子', '人参', '区分', '整える', '別冊', '解ける', '大統領', '寝不足', '応援', '政策', '機会', '混む', '置く', '脱税', '観光', '締結する', '訪ねる', '処分', '内偵', '富裕', '恐らく', '恐れる', '用心棒', '積む', '粉', '括る', '挑む', '横綱', '殺虫剤', '範囲', '統括', '網'], 17: ['八つ', '入る', '前回', '物語', '謝る', '乗客', '変死', '計算', '仏像', '荷札', '記念日', '完結', '相変わらず', '喉頭', '危機', '在外', '在留', '割引', '更に', '版権', '移る', '程よく', '越える', '騒ぐ', '意志', '押入れ', '採算', '家賃', '操', '華々しい', '驚かす', '彫刻', '推測', '却下', '〜房', '戒告', '称える', '取り逃がす', '裂ける', '〜把', '仰ぐ', '伯父', '免疫', '古墳', '堤', '壮行', '峰', '巧妙', '悪賢い', '改訂版', '洞', '漂着', '漫才', '無駄', '煮える', '皇后', '諮る', '連峰', '遂げる', '配偶者', '麻布', '呉越同舟', '窮状', '倹約', '冥土', '冥王星', '冥界', '分泌', '升目', '感慨深い', '某国', '某氏', '渓流', '濁る', '管弦楽団', '花婿', '藻', '謹賀新年', '赤痢', '長唄'], 18: ['大きい', '不正', '文学', '写る', '辺り', '通る', '助ける', '助力', '大役', '求人', '転送', '集める', '完成', '良好', '察知', '建前', '意識', '裁く', '両替', '組織', '刻む', '囚人', '跡継ぎ', '封筒', '懲りる', '懲罰', '撲滅', '柔らかい', '権威', '沼地', '沼沢', '寸暇', '伊達', '大佐', '川柳', '痛恨', '矛先', '統帥', '虐げる', '傲慢', '卸す', '応酬', '悠久', '悠長', '欄干', '疎開', '酷暑', '静粛', '風呂場', '傍受', '該当', '追悼', '鎮める'], 19: ['名人', '生む', '一体', '〜道', '〜間', '仮に', '苦しい', '相手', '伝記', '共同', '争う', '注文', '湯気', '手伝う', '目標', '丈', '乗馬', '列', '情報', '昆虫', '果たして', '細かい', '困る', '妨害', '災難', '主観', '価', '反応', '各地', '圧倒する', '地域', '失態', 'アメリカ製', '半額', '応援する', '所載', '祝日', '現す', '微妙', '憲政', '故に', '乾く', '任す', '体積', '捜索', '板', '添える', '看板', '緊急', '子孫', '豊富', '豪華', '除外', '慢性', '示唆', '綾取り', '膨大'], 20: ['三人', '一文字', '後ろ', '見当たる', '以上', '返す', '配る', '近道', '命', '文字通り', '努力', '首位', '間に合う', '一等', '取り分け', '割合', '従う', '中途半端', '惑う', '変換', '大幅', '継父', '舞台', '舞踏', '踏む', '遺伝', '遺失', '降りる', '患う', '円滑', '総括', '澄む', '彩る', '後悔', '悔しい', '未遂', '油彩', '灯り', '炊く', '無闇に', '理不尽', '癖に', '脅し', '蓄える', '貼る', '賢い', '車椅子', '輝度', '遅咲き', '霜', '首班', '騎馬', '麻', '麻酔', '数珠', '扶養', '楽譜'], 21: ['上げる', '外れ', '活気', '手作り', '役に立つ', '使用', '表す', '最終', '初めて', '器', '意地悪', '文法', '幸福', '改善', '節句', '倒産', '困難', '残余', '限る', '出版', '欠乏', '購買', '久しい', '密告', '欲求', '納まる', '観測', '膝頭', '粒', '縁', '披露', '暴虐', '主宰', '愚か', '搾取', '凹む', '卑屈', '忌まわしい', '惜しまない', '放浪'], 22: ['王子', '立つ', '回る', '大作', '近年', '台所', '苦い', '路地', '情熱', '想定', '見返る', '妥協', '信用', '勇む', '常に', '下書き', '取り決め', '禁句', '機敏'], 23: ['大きさ', '元', '文字', '〜年来', 'その他', '何千', '欠点', '木星', '氏名', '住所', '点く', '決定', '役場', '人格', '品', '特急', '画面', '虚しい', '加える', '不思議', '余る', '倒す', '最後尾', '理論', '経つ', '姿', '過去', '領域', '一層', '警察庁', '輸送', '光景', '華やか', '除く', '伺う', '侵す', '喧嘩', '徹底', '至る', '穏当', '又', '蓮', '覆う', '傍観', '賓客', '何遍', '校閲', '鎮まる'], 24: ['他', '足りる', '本来', '走行', '末', '大事', '発表', '強調', '予め', '器用', '放れる', '表情', '束', '願望', '丈夫', '頑丈', '落書き', '許す', '故障', '極端', '究極', '修理', '過程', '主催', '宴', '怒り', '添付', '織物', '診る', '迷い', '漏れる', '賃貸', '執着', '懸ける', '贈る', '由緒正しい', '躍動', '分裂', '慰問', '朗らか', '沼田', '泥沼', '濡れ衣', '趣', '墜落', '岳', '悲哀', '砂利', '詐取', '怠惰', '殊勝', '貫徹'], 25: ['人口', '入り口', '五日', '内', '近々', 'この前', '決心', '求める', '欠かす', '帰す', '余裕', '議会', '構成', '感染', '成績', '採決', '汚れる', '傷つく', '嫁ぐ', '劣化', '抽象', '珠算', '呆れる'], 26: ['六日', '万人', '土地', '向こう', '付く', '作業', '一周', '折れる', '文句', '暴れる', '減法', '絡む', '公示', '姿勢', '領袖', '教授', '解散', '驚嘆', '掲げる', '慎む'], 27: ['向ける', '保持', '具合', '囲む', '昨今', '議論', '面倒', '通販', '都庁', '景況', '模様', '就業', '極める', '端', '逆らう', '帝', '和尚', '怠ける', '愚痴', '疾患', '疾走', '貫き通す', '逸脱', '顕著', '朽ちる', '濁す', '譜面'], 28: ['外す', '上がる', '語る', '見事', '勝手', '合図', '悪気', '残品', '幸い', '許可', '改造', '成程', '越権', '股関節', '蒸れる', '承る', '削る', '臨む', '傾く', '及ぼす', '抑止', '握る', '紛らす', '逃れる'], 29: ['公用', '一代', '番組', '仮定', '仲良し', '回想', '画像', '格好', '不器用', '比例', '防ぐ', '加わる', '切迫', '屈む', '招く', '誘う', '催告', '官僚', '構える', '熱烈', '街道', '閣僚', '驚く', '今更', '志', '漏らす', '濡れる', '甲斐', '謙虚', '慰謝', '戸籍', '裂く', '巻尺', '布巾', '出没', '惰性', '宰相', '魂胆'], 30: ['大声', '自由', '通す', '運ぶ', '自然', '念願', '任せる', '主将', '依存', '債券', '換気', '砂', '維持', '連盟', '湿る', '慌てる'], 31: ['近づく', '開発', '品物', '正確', '裕福', '現れる', '担ぐ', '特質', '現象', '視覚', '負担', '飾る', '冬至', '廃棄', '炭鉱', '至上', '証拠', '弔う', '敢然', '果敢', '醸造'], 32: ['代用', '形', '君主国', '部屋', '約', '信心', '場面', '説得', '倒れる', '態度', '援助', '示す', '幼い', '離れる', '寛ぐ', '重鎮'], 33: ['六つ', '先ず', '受かる', '合計', '罪', '鮮やか', '誘惑', '退屈', '検索', '監督', '索引', '診察', '便秘', '訳', '偶に', '偶然', '把握', '搬出', '搬送', '灯る', '輝き', '貫く', '陳情', '戯れる', '触媒', '吸い殻', '容赦なく', '寡黙', '帆柱', '戯れ', '漸く', '煩忙', '矯正', '約款', '蛮行', '解剖学', '醜悪', '野蛮'], 34: ['部室', '残す', '結局', '先程', '強盗'], 35: ['力いっぱい', '入場', '勢い', '嫌悪感', '気象', '環境', '記載', '並列', '処置', '即興', '御札', '暴露', '決裂', '露骨', '零す', '勘案', '扇', '衰える'], 36: ['上手', '全く', '交じる', '出身', '育つ', '参る', '係わる', '連続', '悲惨', '兵糧', '殊勲', '痴呆', '秀逸', '酷似', '凝る', '閑静'], 37: ['力', '主人', '一本気', '先日', '仕草', '出社', '必ず', '通う', '天王星', '感心', '連絡する', '比較', '違反', '恵む', '警戒'], 38: ['用いる', '大体', '場所', '数える', '整然', '実在', '確率', '提供', '触角', '濡らす', '照れる', '購読', '否決', '遠慮', '思い遣り', '拠点', '拳', '会釈', '慈善', '堕落', '敢行', '遮る'], 39: ['報告', '諦める', '象徴', '戒める', '肯く'], 40: ['親しい', '心願', '留守', '捕える', '迫る', '伸びる', '債権', '及第', '廃止', '怪我', '指摘', '継承', '頼む', '枢軸', '備蓄', '光輝', '土俵際', '培う', '塗る', '家畜', '憶測', '斜体', '水溶性', '涼む', '班長', '畜産', '紛れ', '耐える', '脅迫', '脇役', '賢明', '輝く', '返り咲き', '零れる', '悟る', '嘱託', '執行猶予', '媒介'], 41: ['欠ける', '転ぶ', '人類', '飴細工', '裁判', '並', '預ける'], 42: ['先', '以後', '助手', '期待', '場合', '保守的', '非難', '反省', '領土', '含意', '尚更'], 43: ['折角', '広告', '葉書', '締切', '訪れる', '恒例', 'ご無沙汰', '甚大', '稚拙'], 44: ['十日', '近日', '自在', '就職'], 45: ['下げる', '地面', '遠足', '大勢', '対応', '納得', '鑑みる', '仕える', '空疎', '逸らす', '顕在'], 46: ['付近', '保つ', '利く', '養う', '無事', '境', '飾り気', '祝儀', '衣', '浸す', '逸れる'], 47: ['女子', '合格する', '改正', '引退', '慰める', '柔和', '酌量'], 48: ['出す', '受験', '被る', '区域', '優れる', '腹立つ', '操作', '執る'], 49: ['考える', '回答', '別れる', '下品', '取れる', '退く'], 50: ['親展', '載る', '量る', '及ぶ', '廃絶', '普及', '償う', '慎重', '公告', '名簿', '宮廷', '邪', '卑劣', '紡ぐ', '娘婿', '定款', '廉価', '弾劾', '感慨無量', '渓谷', '醜聞'], 51: ['先回り', '情け', '待合'], 52: ['下がる', '諦観', '乏しい', '観覧', '著しい'], 53: ['保存', '存じる', '恨む', '呆け', '豪傑'], 54: ['喧しい', '措置', '峡谷'], 55: ['上る', '待機', '叙勲', '露呈', '顕彰'], 56: ['名字', '正直', '化ける', '生地'], 57: ['近所', '転がる', '陥落', '侮辱', '大胆'], 58: ['意図的', '世辞', '保証', '統合', '対象', '記述'], 59: ['実験', '気付く', '創立', '由緒', '免れる', '逃す', '旨'], 60: ['実感', '補う', '中枢', '中軸', '殴る', '砕く', '色彩', '奔走'], 61: ['主に'], 62: ['法規', '装い', '枯渇', '怠る'], 63: ['着く', '捕まる', '絞る'], 64: ['表'], 65: ['発見', '人情', '嫌味', '延びる', '遣う', '牧草', '苛む'], 66: [], 67: ['構造', '寄付', '信仰', '壮大', '生涯', '妄想', '慕う', '某', '桟橋'], 68: ['外れる', '直行', '映る'], 69: ['住人', '嫌疑', '改まる'], 70: ['一生', '伝', '顔面', '依然', '廃れる', '貿易', '覆る'], 71: ['請ける', '紡織', '閑散'], 72: ['何月', '交わる'], 73: ['経由', '疎ら', '享受'], 74: ['八日', '人数'], 75: ['嫌悪'], 76: ['監視', '収納'], 77: ['営む', '偽る'], 78: [], 79: ['受託', '侮る'], 80: ['許諾', '恥辱', '矛盾', '遂行', '浸る'], 81: ['出所', '取材', '促す'], 82: [], 83: ['部首', '仰天', '奮起', '思慕', '悪戯'], 84: ['予想'], 85: ['札', '乱れる', '傍ら'], 86: ['思想', '計画', '大臣', '怠慢', '詠嘆'], 87: ['入力', '感想', '坊主', '収める'], 88: [], 89: [], 90: ['損なう', '維新'], 91: [], 92: ['失う', '潜む'], 93: ['退ける'], 94: [], 95: [], 96: ['身'], 97: [], 98: [], 99: [], 100: ['大した', '土', '生', '年中', '作用', '行う', '人里', '投手', '交代', ' 早速', '支度', '都合', '事情', '技', '由来', '治安', '敗れる', '人種', '改める', '機嫌', '評判', '態と', '収まる', '警視庁', '構う', '規模', '障る', '従える', '潔い', '催促', '寄せる', '嘆く', '預かる', '居候', '傷む', '滞る', '依頼', '募る', '賄う', '譲る', '携わる', '甲斐性', '逃がす', '潜る', '縁起', '献立', '歳暮', '欺く', '畜生', '潤う', '翻る', '興奮', '運搬', '勘定', '緩慢', '惨敗', '荘厳', '哀悼', '疎か', '奉行', '呆気', '奔放', '蔑む', '煩雑', '罷免', '逝去', '醜態']};

//// CODE ////

var settings = {...defaultSettings};

// predefined values
const mainDivId = 'wk-item-difficulty-main'; // id for main div
const wkofScriptId = 'wk_item_diff_script'; // script id for wkof settings
const wkofScriptTitle = 'Item Difficulty Indicator'; // script name for wkof settings
const itemInfoTitle = 'Difficulty'; // title in info page / review item info

const wkItemInfo = window.wkItemInfo; // WaniKani Item Info Injector
const wkof = window.wkof; // WaniKani Open Framework

// find out if page is lesson, review, or word info
const pageType = window.location.pathname.includes('review') ? 'review' : (window.location.pathname.includes('extra_study') ? 'extra_study' : (window.location.pathname.includes('subject') ? 'lesson' : 'info'));
// if word info which type of item
const infoType = pageType != 'info' ? undefined : (window.location.pathname.includes('radical') ? 'rad' : (window.location.pathname.includes('kanji') ? 'kan' : 'voc'));
// is Firefox browser
const isFirefox = typeof InstallTrigger !== 'undefined';

// basic functions
const getItemDiff = (char, dict) => Object.values(dict).findIndex(s => s.includes(char)); // get item difficulty from dict
const diffToColor = diff => settings.DIFF_COLORS[Object.keys(settings.DIFF_COLORS).sort((a, b) => parseInt(b) - parseInt(a)).find(n => diff >= parseInt(n)) || null];
const diffToStr = (diff, decimals = 1, includeTotal = true) => Math.max(diff/10, 0).toFixed(decimals) + (includeTotal ? '/10' : '');
const innerDiffDiv = (color, value) => `<div style="width: 24px; height: 24px; border-radius: 12px; margin: 13px; position: absolute; box-shadow: 0 0 6px 6px ${color}; opacity: 0.7${settings.GLOWING_INDICATOR && color != settings.DIFF_COLORS.null ? '' : '; display: none'}"></div><div style="width: 26px; height: 26px; background: ${color} !important; border-radius: 13px; margin: 12px; position: absolute"></div><div style="width: 30px; height: 18px; margin-left: 10px; margin-right: 10px; margin-top: 15px; position: absolute; text-align: center; vertical-align: middle; font-weight: bold; text-shadow: none; line-height: 1.3; font-size: 16px; color: ${color} !important; filter: brightness(${(settings.VALUE_OPACITY * 100).toFixed(0)}%) !important">${value}</div><div style="width: 50px; height: 50px; background: #5f5f5f !important; border-radius: 10px; box-shadow: 4px 4px 3px 1px rgba(0,0,0,0.3)${settings.BOX_INDICATOR ? '' : '; display: none'}"></div>`;
const diffDiv = async (color, hovertext, absolute, value, fromtop=false) => `<div id="${mainDivId}" title="${hovertext}" style="width: 50px; height: 50px; zoom: ${settings.INDICATOR_SIZE}; ${fromtop ? 'top: ' + (await awaitElement('character-header', true).then(e => e.offsetHeight) - settings.INDICATOR_SIZE * 50 - 10) + 'px;' : ''} position: ${absolute ? 'absolute; bottom: 10px; right: 10px' : 'relative'}">${innerDiffDiv(color, value)}</div>`;
const diffIndicatorValue = diff => diff != -1 ? diffToStr(diff, (settings.SHOW_DECIMALS && diff != 100 ? 1 : 0), false) : '';
const charToColorDiff = (type, char) => { // get color based on difficulty of char
    const diff = type == 'kanji' ? getItemDiff(char, kanjiDiff) : (type == 'vocabulary' ? getItemDiff(char, vocabDiff) : -1);
    const color = diffToColor(diff);
    return [diff, color];
}
const innerDivByChar = (type, char) => { // get inner indicator div through char
    const [diff, color] = charToColorDiff(type, char);
    return [innerDiffDiv(color, diffIndicatorValue(diff)), (diff != -1 ? diffToStr(diff) : 'n/a')];
}
const divByChar = async (type, char, absolute) => { // get indicator div through char
    const [diff, color] = charToColorDiff(type, char);
    return await diffDiv(color, diff != -1 ? diffToStr(diff) : 'n/a', absolute, diffIndicatorValue(diff));
}
const strToElement = str => { // turn HTML string into element
    var temp = document.createElement('div');
    temp.innerHTML = str;
    return temp.firstChild;
}
const awaitElement = (id, isClass = false) => new Promise(resolve => { // "await existence of element"-function
    const getFunc = isClass ? t => document.getElementsByClassName(t)[0] : t => document.getElementById(t);
    if (getFunc(id)) return resolve(getFunc(id));
    const observer = new MutationObserver(() => { // observer for existence
        if (getFunc(id)) {
            resolve(getFunc(id));
            observer.disconnect();
        }
    });
    observer.observe(document.body, { childList: true, subtree: true });
});

// main function
(async () => {

    // handle settings if wkof is installed and should be used
    if (wkof && USE_WKOF_SETTINGS) {
        var updateDiffInfo = () => {};
        const loadSettings = async () => {
            await wkof.Settings.save(wkofScriptId);
            const newSettings = await wkof.Settings.load(wkofScriptId);
            if (newSettings) for (const key in defaultSettings) if (!newSettings.hasOwnProperty(key)) newSettings[key] = defaultSettings[key];
            settings = newSettings || settings;
            updateDiffInfo();
            return newSettings;
        }

        const settingsHandler = async () => {
            if (!(await loadSettings())) { // if no settings exist, save new ones from file
                wkof.settings[wkofScriptId] = {...settings};
                loadSettings();
            }
            if (pageType == 'info') return;

            var dialog, prevSettings;
            const resetBtnClick = (btnName, btnConfig, onChange) => { // restore default with reset btn
                var settingNames;
                switch(btnName) { // get settings by button name
                    case 'reset_color_button': settingNames = ['DIFF_COLORS']; break;
                    case 'reset_size_button': settingNames = ['INDICATOR_SIZE', 'VALUE_OPACITY']; break;
                    case 'reset_appearance_button': settingNames = ['GLOWING_INDICATOR', 'BOX_INDICATOR', 'SHOW_DECIMALS']; break;
                    case 'reset_visibility_button': settingNames = ['SHOW_ON_INFO_PAGE', 'INDICATOR_REVIEW_POS', 'HIDE_UNTIL_ANSWER']; break;
                }
                if (settingNames) for (const settingName of settingNames) wkof.settings[wkofScriptId][settingName] = defaultSettings[settingName];
                dialog.refresh(); // make changes visible
                onChange(); // report to wkof
            }
            const disableCheckbox = (elementName, switchBool) => {
                const checkboxElement = document.querySelectorAll(`input[name="${elementName}"]`)[0];
                if (switchBool) {
                    wkof.settings[wkofScriptId][elementName] = false;
                    checkboxElement.disabled = true;
                } else checkboxElement.disabled = false;
                loadSettings();
                dialog.refresh();
            }
            dialog = new wkof.Settings({ // define dialog
                script_id: wkofScriptId,
                title: wkofScriptTitle,
                on_save: loadSettings, // save settings and update values
                on_change: loadSettings, // show changes immediately
                on_cancel: () => {
                    wkof.settings[wkofScriptId] = prevSettings;
                    loadSettings();
                },
                pre_open: () => {
                    disableCheckbox('HIDE_UNTIL_ANSWER', settings.INDICATOR_REVIEW_POS != 'main'); // disable if necessary
                },
                content: {
                    visibility_settings: { // visibility settings
                        type: 'group',
                        label: 'Visibility Settings',
                        content: {
                            INDICATOR_REVIEW_POS: {
                                type: 'dropdown',
                                label: 'Indicator Position for Reviews',
                                default: defaultSettings.INDICATOR_REVIEW_POS,
                                hover_tip: 'where the indicator is placed while doing reviews',
                                content: {
                                    main: 'Beside the Character',
                                    info: 'In Item Info',
                                    none: 'Nowhere',
                                },
                                on_change: () => {
                                    disableCheckbox('HIDE_UNTIL_ANSWER', settings.INDICATOR_REVIEW_POS != 'main');
                                },
                            },
                            HIDE_UNTIL_ANSWER: {
                                type: 'checkbox',
                                label: 'Hide Difficulty until Answered',
                                default: defaultSettings.HIDE_UNTIL_ANSWER,
                                hover_tip: 'hide the difficulty rating until an answer is given for the item (only changeable if indicator position is beside character)',
                                validate: (value, config) => wkof.settings[wkofScriptId].INDICATOR_REVIEW_POS == 'main' ? true : 'Can only be changed when indicator is beside the character (you should not be able to see this).',
                            },
                            SHOW_ON_INFO_PAGE: {
                                type: 'checkbox',
                                label: 'Show Indicator on Info Page',
                                default: defaultSettings.SHOW_ON_INFO_PAGE,
                                hover_tip: 'show the indicator on the info page of the respective item',
                            },
                            reset_visibility_button: {
                                type: 'button',
                                label: '',
                                text: 'Reset to Default Visibility',
                                full_width: true,
                                on_click: resetBtnClick,
                            },
                        },
                    },
                    appearance_settings: { // appearance settings
                        type: 'group',
                        label: 'Appearance Settings',
                        content: {
                            GLOWING_INDICATOR: {
                                type: 'checkbox',
                                label: 'Glowing Indicator Signal',
                                default: defaultSettings.GLOWING_INDICATOR,
                                hover_tip: 'glow appears around the indicator to simulate a "traffic light" feel',
                            },
                            BOX_INDICATOR: {
                                type: 'checkbox',
                                label: 'Box around Indicator',
                                default: defaultSettings.BOX_INDICATOR,
                                hover_tip: 'have the gray box be around the indicator to make it stand out',
                            },
                            SHOW_DECIMALS: {
                                type: 'checkbox',
                                label: 'Show Decimals for Indicator',
                                default: defaultSettings.SHOW_DECIMALS,
                                hover_tip: 'show tenths place for the number inside the indicator',
                            },
                            reset_appearance_button: {
                                type: 'button',
                                label: '',
                                text: 'Reset to Default Appearance',
                                full_width: true,
                                on_click: resetBtnClick,
                            },
                        },
                    },
                    size_settings: { // size settings
                        type: 'group',
                        label: 'Size Settings',
                        content: {
                            INDICATOR_SIZE: {
                                type: 'number',
                                label: 'Indicator Size Multiplier',
                                default: defaultSettings.INDICATOR_SIZE,
                                hover_tip: 'percentage for size of difficulty indicator; default (1) corresponds to 50 pixels',
                                min: 0,
                                max: 3,
                            },
                            VALUE_OPACITY: {
                                type: 'number',
                                label: 'Value Opacity Percentage',
                                default: defaultSettings.VALUE_OPACITY,
                                hover_tip: 'opacity of the value inside the difficulty indicator (1 is not visible, 0 is black)',
                                min: 0,
                                max: 1,
                            },
                            reset_size_button:{
                                type: 'button',
                                label: '',
                                text: 'Reset to Default Sizes',
                                full_width: true,
                                on_click: resetBtnClick,
                            },
                        },
                    },
                    DIFF_COLORS: { // color settings
                        type: 'group',
                        label: 'Color Settings',
                        content: {...Object.fromEntries(Object.keys(defaultSettings.DIFF_COLORS).map(key => [key, {
                                type: 'color',
                                label: key == 'null' ? 'No Data' : `Difficulty over ${(key/10).toFixed(1)}`,
                                default: defaultSettings.DIFF_COLORS[key],
                                path: `@DIFF_COLORS['${key}']`,
                            }])),
                            reset_color_button: {
                                type: 'button',
                                label: '',
                                text: 'Reset to Default Colors',
                                full_width: true,
                                on_click: resetBtnClick,
                            },
                        },
                    }
                }
            });
            wkof.Menu.insert_script_link({ // add setting
                name: wkofScriptId,
                submenu: 'Settings',
                title: wkofScriptTitle,
                on_click: () => { // open dialog box on click
                    prevSettings = {...settings};
                    dialog.open();
                },
            });
        };

        wkof.include('Menu,Settings');
        await wkof.ready('Menu,Settings').then(settingsHandler);
    }

    const charToElement = async ({type, characters}) => strToElement(await divByChar(type, characters, false));
    const appendToInfo = async () => wkItemInfo.under('composition').append(itemInfoTitle, await charToElement);
    const appendToInfoPage = async () => wkItemInfo.appendAtTop(itemInfoTitle, await charToElement);

    // initialize difficulty indicator
    if (pageType == 'info') { // kanji/vocab/radical info page
        if (settings.SHOW_ON_INFO_PAGE) appendToInfoPage();
    } else { // extra study, lesson, or review page

        var itemInfoSection;
        if (settings.INDICATOR_REVIEW_POS == 'info' && pageType != 'lesson') itemInfoSection = await appendToInfo();

        // change level up div width so that hover text is visible
        if (OFFSET_SRS_POPUP && settings.INDICATOR_REVIEW_POS == 'main' && pageType == 'review') {
            const cssScript = document.createElement('style');
            cssScript.innerHTML = '.srs {width: 50%; margin-left: 25%;}';
            document.head.appendChild(cssScript);
        }

        // initialize elements
        let characterElement = await awaitElement('character-header', true);
        const answerElement = pageType != 'lesson' ? await awaitElement('quiz-input__input-container', true) : '';
        let mainDiv;
        const initializeIndicator = pageType != 'lesson' ? async () => {
            if (mainDiv) mainDiv.remove();
            characterElement.appendChild(strToElement(await diffDiv('gray', 'Inactive', true, '', false)));
            mainDiv = document.getElementById(mainDivId);
        } : async () => {
            if (mainDiv) mainDiv.remove();
            characterElement = await awaitElement('character-header', true);
            document.body.appendChild(strToElement(await diffDiv('gray', 'Inactive', true, '', true)));
            mainDiv = document.getElementById(mainDivId);
        }
        if (isFirefox && pageType != 'lesson') initializeIndicator();

        let prevPos = settings.INDICATOR_REVIEW_POS;

        // update diff sign
        updateDiffInfo = async function () {
            if (pageType != 'lesson') {
                if (settings.INDICATOR_REVIEW_POS == 'none') {
                    prevPos = settings.INDICATOR_REVIEW_POS;
                    if (itemInfoSection) itemInfoSection.remove();
                    itemInfoSection = undefined;
                    mainDiv = document.getElementById(mainDivId);
                    if (mainDiv) mainDiv.remove();
                    mainDiv = undefined;
                    return;
                }
                if (prevPos != settings.INDICATOR_REVIEW_POS) {
                    prevPos = settings.INDICATOR_REVIEW_POS;
                    if (settings.INDICATOR_REVIEW_POS == 'info') {
                        if (mainDiv) mainDiv.remove();
                        mainDiv = undefined;
                        itemInfoSection = appendToInfo();
                    } else if (settings.INDICATOR_REVIEW_POS == 'main') {
                        if (itemInfoSection) itemInfoSection.remove();
                        itemInfoSection = undefined;
                        initializeIndicator();
                    }
                }
                if (settings.INDICATOR_REVIEW_POS == 'info') mainDiv = await awaitElement(mainDivId);
                else if (!document.getElementById(mainDivId)) initializeIndicator();
            } else await initializeIndicator();

            // get item info and new indicator
            const itemType = characterElement.className.split('--')[1].toLowerCase();
            const itemName = characterElement.getElementsByClassName('character-header__characters')[0].innerHTML;
            const [innerDivHTML, hovertext] = pageType != 'lesson' && settings.HIDE_UNTIL_ANSWER && !answerElement.hasAttribute('correct') && settings.INDICATOR_REVIEW_POS == 'main' ? innerDivByChar('', '') : innerDivByChar(itemType, itemName);

            // renew attributes
            if (mainDiv) {
                mainDiv.innerHTML = innerDivHTML;
                mainDiv.title = hovertext;
                mainDiv.style.zoom = settings.INDICATOR_SIZE;
            }
        };

        // set diff box contents for first item
        updateDiffInfo();

        // setup observer to change info box contents for subsequent items
        const observer = new MutationObserver(() => updateDiffInfo());
        const config = { ...(pageType != 'lesson' ? { childList: true, characterData: true, subtree: true, attributeFilter: ['class', 'correct'] } : { attributes: true }) };
        observer.observe(pageType != 'lesson' ? answerElement : document.children[0], config);
    }

})();