From edb80b90186b7ebfcce8b3dae55fedb62a77b912 Mon Sep 17 00:00:00 2001 From: Shivansh-007 Date: Tue, 7 Sep 2021 16:41:27 +0530 Subject: Wikiguess Game (#618) * (trivia-quiz): Add Wikipedia Guess Game This commit also moves all the 'dynamic' question generator to a separate class. Closes: #446 * (trivia quiz): Use tuples for command aliases * (trivia quiz): Edit congratulations message * (trivia quiz): Use default dict for storing player scores * (trivia quiz): 'done_question' to 'done_questions' * Add space after 'Congratulations' word * Use classmethods for dynamically generating questions * Don't add wiki category if max error fetches hit If the task hit max error fetches, which is 3 currently, it would remove wikipedia from listed categories and not add it to loaded questions. If it doesn't hit max fetches, then it adds them. * Don't hardcode the number of questions in RULES * Add information field only if it exists * Add "cs" and "python" categories to the `.quiz` command * add 30 questions each under the categories "cs" and "python" add the two categories into the code and modify the starting phase Co-authored-by: Xithrius <15021300+Xithrius@users.noreply.github.com> Co-authored-by: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> * refactor: Use yesterday's most read to make trivia questions Since random wikipedia article guess questions weren't really "knowledgeable", no one could really guess it or gain any "good" knowledge from them, so after asking wookie (this commits mentions his review comments above also), I decided to use these. * refactor: Logic to remove pronounciations from question Co-authored-by: wookie184 * fix: Set to correct question limit If the number of questions are less then the default limit which can happen in the case of wikipedia guess game as it is dependent on the most read articiles on wikipedia, it would create a infinite loop sending us into infinite amount of errors, so let's prevent that, thanks wookie * chore: Add comment for d5f8205 change * refactor: Remove double mention of dataclass in quizentry * chore: Use r"" over noqa We can use r"", a raw string, here to make it clear that \* and \s aren't supposed to be handled as escape sequences and just use the "raw string". * fix: Correct off by one bug Originally, before this commit, we checked the number of questions left by comparing `len(done_questions) > self.question_limit`, so question limit had to be 1 since if it wasn't we would compare 7 > 7, which would be false and then it would send another question. To correct this bug, we now use == comparision on the two, so if the number of done questions is same as the question limit it means that the round is over. I have changed the relevant parts of the code to reflect this change i.e. where-ever we did +-1 due to the off by one bug. * refactor: Noramlize the title to remove all punctuations Since the title can sometimes contain punctuations making it very difficult to get the matching answer to the question, we originally removed all such questions. This took the question count down :( and wasn't an effective way. Therefore now we keep them but as normalized, yay! I have also updated the code documentation to make the process much clearer to anyone reading the "normalizing" code section of the wiki questions generator. * refactor: Keep answers as a list & not ",".join() Wasn't fitting in character limit so shorterned it ^^ lol. Okay, getting to the point, this mentions fix error's comment of making quiz entry except the answers as a list and not as a string which could a comma joined list. The same structure was in the json resource, where multiple answers where joined with commas. This didn't allow you to use commas in answers. So I went ahead and did a bit more than requested to change the json structure and make `answers` a list. Also now all questions are in the form of the quiz entry to keep it same through out the code and var tolerance has become a valid param in QuizEntry, this is done because it was differing between questions, if not needed this would make the process to add `var_tol` as a argument to the json easier. And that's it! Co-authored-by: Objectivitix <79152594+Objectivitix@users.noreply.github.com> Co-authored-by: Xithrius <15021300+Xithrius@users.noreply.github.com> Co-authored-by: ToxicKidz <78174417+ToxicKidz@users.noreply.github.com> Co-authored-by: wookie184 --- bot/exts/fun/trivia_quiz.py | 422 ++++++++++++++++++++++++++------------------ 1 file changed, 252 insertions(+), 170 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/trivia_quiz.py b/bot/exts/fun/trivia_quiz.py index cf9e6cd3..236586b0 100644 --- a/bot/exts/fun/trivia_quiz.py +++ b/bot/exts/fun/trivia_quiz.py @@ -3,12 +3,16 @@ import json import logging import operator import random +import re +import string +from collections import defaultdict from dataclasses import dataclass +from datetime import datetime, timedelta from pathlib import Path from typing import Callable, Optional import discord -from discord.ext import commands +from discord.ext import commands, tasks from rapidfuzz import fuzz from bot.bot import Bot @@ -16,177 +20,194 @@ from bot.constants import Colours, NEGATIVE_REPLIES, Roles logger = logging.getLogger(__name__) -DEFAULT_QUESTION_LIMIT = 6 +DEFAULT_QUESTION_LIMIT = 7 STANDARD_VARIATION_TOLERANCE = 88 DYNAMICALLY_GEN_VARIATION_TOLERANCE = 97 +MAX_ERROR_FETCH_TRIES = 3 + WRONG_ANS_RESPONSE = [ "No one answered correctly!", "Better luck next time...", ] -N_PREFIX_STARTS_AT = 5 -N_PREFIXES = [ - "penta", "hexa", "hepta", "octa", "nona", - "deca", "hendeca", "dodeca", "trideca", "tetradeca", -] +RULES = ( + "No cheating and have fun!", + "Points for each question reduces by 25 after 10s or after a hint. Total time is 30s per question" +) -PLANETS = [ - ("1st", "Mercury"), - ("2nd", "Venus"), - ("3rd", "Earth"), - ("4th", "Mars"), - ("5th", "Jupiter"), - ("6th", "Saturn"), - ("7th", "Uranus"), - ("8th", "Neptune"), -] - -TAXONOMIC_HIERARCHY = [ - "species", "genus", "family", "order", - "class", "phylum", "kingdom", "domain", -] - -UNITS_TO_BASE_UNITS = { - "hertz": ("(unit of frequency)", "s^-1"), - "newton": ("(unit of force)", "m*kg*s^-2"), - "pascal": ("(unit of pressure & stress)", "m^-1*kg*s^-2"), - "joule": ("(unit of energy & quantity of heat)", "m^2*kg*s^-2"), - "watt": ("(unit of power)", "m^2*kg*s^-3"), - "coulomb": ("(unit of electric charge & quantity of electricity)", "s*A"), - "volt": ("(unit of voltage & electromotive force)", "m^2*kg*s^-3*A^-1"), - "farad": ("(unit of capacitance)", "m^-2*kg^-1*s^4*A^2"), - "ohm": ("(unit of electric resistance)", "m^2*kg*s^-3*A^-2"), - "weber": ("(unit of magnetic flux)", "m^2*kg*s^-2*A^-1"), - "tesla": ("(unit of magnetic flux density)", "kg*s^-2*A^-1"), -} +WIKI_FEED_API_URL = "https://en.wikipedia.org/api/rest_v1/feed/featured/{date}" +TRIVIA_QUIZ_ICON = ( + "https://raw.githubusercontent.com/python-discord/branding/main/icons/trivia_quiz/trivia-quiz-dist.png" +) @dataclass(frozen=True) class QuizEntry: - """Dataclass for a quiz entry (a question and a string containing answers separated by commas).""" + """Stores quiz entry (a question and a list of answers).""" question: str - answer: str - - -def linear_system(q_format: str, a_format: str) -> QuizEntry: - """Generate a system of linear equations with two unknowns.""" - x, y = random.randint(2, 5), random.randint(2, 5) - answer = a_format.format(x, y) - - coeffs = random.sample(range(1, 6), 4) - - question = q_format.format( - coeffs[0], - coeffs[1], - coeffs[0] * x + coeffs[1] * y, - coeffs[2], - coeffs[3], - coeffs[2] * x + coeffs[3] * y, - ) - - return QuizEntry(question, answer) - - -def mod_arith(q_format: str, a_format: str) -> QuizEntry: - """Generate a basic modular arithmetic question.""" - quotient, m, b = random.randint(30, 40), random.randint(10, 20), random.randint(200, 350) - ans = random.randint(0, 9) # max remainder is 9, since the minimum modulus is 10 - a = quotient * m + ans - b - - question = q_format.format(a, b, m) - answer = a_format.format(ans) + answers: list[str] + var_tol: int + + +class DynamicQuestionGen: + """Class that contains functions to generate math/science questions for TriviaQuiz Cog.""" + + N_PREFIX_STARTS_AT = 5 + N_PREFIXES = [ + "penta", "hexa", "hepta", "octa", "nona", + "deca", "hendeca", "dodeca", "trideca", "tetradeca", + ] + + PLANETS = [ + ("1st", "Mercury"), + ("2nd", "Venus"), + ("3rd", "Earth"), + ("4th", "Mars"), + ("5th", "Jupiter"), + ("6th", "Saturn"), + ("7th", "Uranus"), + ("8th", "Neptune"), + ] + + TAXONOMIC_HIERARCHY = [ + "species", "genus", "family", "order", + "class", "phylum", "kingdom", "domain", + ] + + UNITS_TO_BASE_UNITS = { + "hertz": ("(unit of frequency)", "s^-1"), + "newton": ("(unit of force)", "m*kg*s^-2"), + "pascal": ("(unit of pressure & stress)", "m^-1*kg*s^-2"), + "joule": ("(unit of energy & quantity of heat)", "m^2*kg*s^-2"), + "watt": ("(unit of power)", "m^2*kg*s^-3"), + "coulomb": ("(unit of electric charge & quantity of electricity)", "s*A"), + "volt": ("(unit of voltage & electromotive force)", "m^2*kg*s^-3*A^-1"), + "farad": ("(unit of capacitance)", "m^-2*kg^-1*s^4*A^2"), + "ohm": ("(unit of electric resistance)", "m^2*kg*s^-3*A^-2"), + "weber": ("(unit of magnetic flux)", "m^2*kg*s^-2*A^-1"), + "tesla": ("(unit of magnetic flux density)", "kg*s^-2*A^-1"), + } + + @classmethod + def linear_system(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a system of linear equations with two unknowns.""" + x, y = random.randint(2, 5), random.randint(2, 5) + answer = a_format.format(x, y) + + coeffs = random.sample(range(1, 6), 4) + + question = q_format.format( + coeffs[0], + coeffs[1], + coeffs[0] * x + coeffs[1] * y, + coeffs[2], + coeffs[3], + coeffs[2] * x + coeffs[3] * y, + ) - return QuizEntry(question, answer) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) + @classmethod + def mod_arith(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a basic modular arithmetic question.""" + quotient, m, b = random.randint(30, 40), random.randint(10, 20), random.randint(200, 350) + ans = random.randint(0, 9) # max remainder is 9, since the minimum modulus is 10 + a = quotient * m + ans - b -def ngonal_prism(q_format: str, a_format: str) -> QuizEntry: - """Generate a question regarding vertices on n-gonal prisms.""" - n = random.randint(0, len(N_PREFIXES) - 1) + question = q_format.format(a, b, m) + answer = a_format.format(ans) - question = q_format.format(N_PREFIXES[n]) - answer = a_format.format((n + N_PREFIX_STARTS_AT) * 2) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) - return QuizEntry(question, answer) + @classmethod + def ngonal_prism(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a question regarding vertices on n-gonal prisms.""" + n = random.randint(0, len(cls.N_PREFIXES) - 1) + question = q_format.format(cls.N_PREFIXES[n]) + answer = a_format.format((n + cls.N_PREFIX_STARTS_AT) * 2) -def imag_sqrt(q_format: str, a_format: str) -> QuizEntry: - """Generate a negative square root question.""" - ans_coeff = random.randint(3, 10) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) - question = q_format.format(ans_coeff ** 2) - answer = a_format.format(ans_coeff) + @classmethod + def imag_sqrt(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a negative square root question.""" + ans_coeff = random.randint(3, 10) - return QuizEntry(question, answer) + question = q_format.format(ans_coeff ** 2) + answer = a_format.format(ans_coeff) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) -def binary_calc(q_format: str, a_format: str) -> QuizEntry: - """Generate a binary calculation question.""" - a = random.randint(15, 20) - b = random.randint(10, a) - oper = random.choice( - ( - ("+", operator.add), - ("-", operator.sub), - ("*", operator.mul), + @classmethod + def binary_calc(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a binary calculation question.""" + a = random.randint(15, 20) + b = random.randint(10, a) + oper = random.choice( + ( + ("+", operator.add), + ("-", operator.sub), + ("*", operator.mul), + ) ) - ) - # if the operator is multiplication, lower the values of the two operands to make it easier - if oper[0] == "*": - a -= 5 - b -= 5 + # if the operator is multiplication, lower the values of the two operands to make it easier + if oper[0] == "*": + a -= 5 + b -= 5 - question = q_format.format(a, oper[0], b) - answer = a_format.format(oper[1](a, b)) + question = q_format.format(a, oper[0], b) + answer = a_format.format(oper[1](a, b)) - return QuizEntry(question, answer) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) + @classmethod + def solar_system(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a question on the planets of the Solar System.""" + planet = random.choice(cls.PLANETS) -def solar_system(q_format: str, a_format: str) -> QuizEntry: - """Generate a question on the planets of the Solar System.""" - planet = random.choice(PLANETS) + question = q_format.format(planet[0]) + answer = a_format.format(planet[1]) - question = q_format.format(planet[0]) - answer = a_format.format(planet[1]) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) - return QuizEntry(question, answer) + @classmethod + def taxonomic_rank(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a question on taxonomic classification.""" + level = random.randint(0, len(cls.TAXONOMIC_HIERARCHY) - 2) + question = q_format.format(cls.TAXONOMIC_HIERARCHY[level]) + answer = a_format.format(cls.TAXONOMIC_HIERARCHY[level + 1]) -def taxonomic_rank(q_format: str, a_format: str) -> QuizEntry: - """Generate a question on taxonomic classification.""" - level = random.randint(0, len(TAXONOMIC_HIERARCHY) - 2) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) - question = q_format.format(TAXONOMIC_HIERARCHY[level]) - answer = a_format.format(TAXONOMIC_HIERARCHY[level + 1]) + @classmethod + def base_units_convert(cls, q_format: str, a_format: str) -> QuizEntry: + """Generate a SI base units conversion question.""" + unit = random.choice(list(cls.UNITS_TO_BASE_UNITS)) - return QuizEntry(question, answer) - - -def base_units_convert(q_format: str, a_format: str) -> QuizEntry: - """Generate a SI base units conversion question.""" - unit = random.choice(list(UNITS_TO_BASE_UNITS)) - - question = q_format.format( - unit + " " + UNITS_TO_BASE_UNITS[unit][0] - ) - answer = a_format.format( - UNITS_TO_BASE_UNITS[unit][1] - ) + question = q_format.format( + unit + " " + cls.UNITS_TO_BASE_UNITS[unit][0] + ) + answer = a_format.format( + cls.UNITS_TO_BASE_UNITS[unit][1] + ) - return QuizEntry(question, answer) + return QuizEntry(question, [answer], DYNAMICALLY_GEN_VARIATION_TOLERANCE) DYNAMIC_QUESTIONS_FORMAT_FUNCS = { - 201: linear_system, - 202: mod_arith, - 203: ngonal_prism, - 204: imag_sqrt, - 205: binary_calc, - 301: solar_system, - 302: taxonomic_rank, - 303: base_units_convert, + 201: DynamicQuestionGen.linear_system, + 202: DynamicQuestionGen.mod_arith, + 203: DynamicQuestionGen.ngonal_prism, + 204: DynamicQuestionGen.imag_sqrt, + 205: DynamicQuestionGen.binary_calc, + 301: DynamicQuestionGen.solar_system, + 302: DynamicQuestionGen.taxonomic_rank, + 303: DynamicQuestionGen.base_units_convert, } @@ -202,7 +223,7 @@ class TriviaQuiz(commands.Cog): self.questions = self.load_questions() self.question_limit = 0 - self.player_scores = {} # A variable to store all player's scores for a bot session. + self.player_scores = defaultdict(int) # A variable to store all player's scores for a bot session. self.game_player_scores = {} # A variable to store temporary game player's scores. self.categories = { @@ -212,8 +233,72 @@ class TriviaQuiz(commands.Cog): "science": "Put your understanding of science to the test!", "cs": "A large variety of computer science questions.", "python": "Trivia on our amazing language, Python!", + "wikipedia": "Guess the title of random wikipedia passages.", } + self.get_wiki_questions.start() + + def cog_unload(self) -> None: + """Cancel `get_wiki_questions` task when Cog will unload.""" + self.get_wiki_questions.cancel() + + @tasks.loop(hours=24.0) + async def get_wiki_questions(self) -> None: + """Get yesterday's most read articles from wikipedia and format them like trivia questions.""" + error_fetches = 0 + wiki_questions = [] + # trivia_quiz.json follows a pattern, every new category starts with the next century. + start_id = 501 + yesterday = datetime.strftime(datetime.now() - timedelta(1), '%Y/%m/%d') + + while error_fetches < MAX_ERROR_FETCH_TRIES: + async with self.bot.http_session.get(url=WIKI_FEED_API_URL.format(date=yesterday)) as r: + if r.status != 200: + error_fetches += 1 + continue + raw_json = await r.json() + articles_raw = raw_json["mostread"]["articles"] + + for article in articles_raw: + question = article.get("extract") + if not question: + continue + + # Normalize the wikipedia article title to remove all punctuations from it + for word in re.split(r"[\s-]", title := article["normalizedtitle"]): + cleaned_title = re.sub( + rf'\b{word.strip(string.punctuation)}\b', word, title, flags=re.IGNORECASE + ) + + # Since the extract contains the article name sometimes this would replace all the matching words + # in that article with *** of that length. + # NOTE: This removes the "answer" for 99% of the cases, but sometimes the wikipedia article is + # very different from the words in the extract, for example the title would be the nickname of a + # person (Bob Ross) whereas in the extract it would the full name (Robert Norman Ross) so it comes + # out as (Robert Norman ****) and (Robert Norman Ross) won't be a right answer :( + for word in re.split(r"[\s-]", cleaned_title): + word = word.strip(string.punctuation) + secret_word = r"\*" * len(word) + question = re.sub(rf'\b{word}\b', f"**{secret_word}**", question, flags=re.IGNORECASE) + + formatted_article_question = { + "id": start_id, + "question": f"Guess the title of the Wikipedia article.\n\n{question}", + "answer": cleaned_title, + "info": article["extract"] + } + start_id += 1 + wiki_questions.append(formatted_article_question) + + # If everything has gone smoothly until now, we can break out of the while loop + break + + if error_fetches < MAX_ERROR_FETCH_TRIES: + self.questions["wikipedia"] = wiki_questions.copy() + else: + del self.categories["wikipedia"] + logger.warning(f"Not loading wikipedia guess questions, hit max error fetches: {MAX_ERROR_FETCH_TRIES}.") + @staticmethod def load_questions() -> dict: """Load the questions from the JSON file.""" @@ -221,7 +306,7 @@ class TriviaQuiz(commands.Cog): return json.loads(p.read_text(encoding="utf-8")) - @commands.group(name="quiz", aliases=["trivia"], invoke_without_command=True) + @commands.group(name="quiz", aliases=("trivia", "triviaquiz"), invoke_without_command=True) async def quiz_game(self, ctx: commands.Context, category: Optional[str], questions: Optional[int]) -> None: """ Start a quiz! @@ -233,6 +318,7 @@ class TriviaQuiz(commands.Cog): - science: Put your understanding of science to the test! - cs: A large variety of computer science questions. - python: Trivia on our amazing language, Python! + - wikipedia: Guess the title of random wikipedia passages. (More to come!) """ @@ -264,7 +350,7 @@ class TriviaQuiz(commands.Cog): topic_length = len(topic) if questions is None: - self.question_limit = DEFAULT_QUESTION_LIMIT + self.question_limit = min(DEFAULT_QUESTION_LIMIT, topic_length) else: if questions > topic_length: await ctx.send( @@ -279,13 +365,13 @@ class TriviaQuiz(commands.Cog): await ctx.send( embed=self.make_error_embed( "You must choose to complete at least one question. " - f"(or enter nothing for the default value of {DEFAULT_QUESTION_LIMIT + 1} questions)" + f"(or enter nothing for the default value of {DEFAULT_QUESTION_LIMIT} questions)" ) ) return else: - self.question_limit = questions - 1 + self.question_limit = questions # Start game if not running. if not self.game_status[ctx.channel.id]: @@ -296,13 +382,13 @@ class TriviaQuiz(commands.Cog): await ctx.send(embed=start_embed) # send an embed with the rules await asyncio.sleep(5) - done_question = [] + done_questions = [] hint_no = 0 - answers = None + quiz_entry = None while self.game_status[ctx.channel.id]: # Exit quiz if number of questions for a round are already sent. - if len(done_question) > self.question_limit and hint_no == 0: + if len(done_questions) == self.question_limit and hint_no == 0: await ctx.send("The round has ended.") await self.declare_winner(ctx.channel, self.game_player_scores[ctx.channel.id]) @@ -317,32 +403,27 @@ class TriviaQuiz(commands.Cog): # Select a random question which has not been used yet. while True: question_dict = random.choice(topic) - if question_dict["id"] not in done_question: - done_question.append(question_dict["id"]) + if question_dict["id"] not in done_questions: + done_questions.append(question_dict["id"]) break if "dynamic_id" not in question_dict: - question = question_dict["question"] - answers = question_dict["answer"].split(", ") - - var_tol = STANDARD_VARIATION_TOLERANCE + quiz_entry = QuizEntry( + question_dict["question"], + quiz_answers if isinstance(quiz_answers := question_dict["answer"], list) else [quiz_answers], + STANDARD_VARIATION_TOLERANCE + ) else: format_func = DYNAMIC_QUESTIONS_FORMAT_FUNCS[question_dict["dynamic_id"]] - quiz_entry = format_func( question_dict["question"], question_dict["answer"], ) - question, answers = quiz_entry.question, quiz_entry.answer - answers = [answers] - - var_tol = DYNAMICALLY_GEN_VARIATION_TOLERANCE - embed = discord.Embed( colour=Colours.gold, - title=f"Question #{len(done_question)}", - description=question, + title=f"Question #{len(done_questions)}", + description=quiz_entry.question, ) if img_url := question_dict.get("img_url"): @@ -354,13 +435,13 @@ class TriviaQuiz(commands.Cog): def contains_correct_answer(m: discord.Message) -> bool: return m.channel == ctx.channel and any( fuzz.ratio(answer.lower(), m.content.lower()) > variation_tolerance - for answer in answers + for answer in quiz_entry.answers ) return contains_correct_answer try: - msg = await self.bot.wait_for("message", check=check_func(var_tol), timeout=10) + msg = await self.bot.wait_for("message", check=check_func(quiz_entry.var_tol), timeout=10) except asyncio.TimeoutError: # In case of TimeoutError and the game has been stopped, then do nothing. if not self.game_status[ctx.channel.id]: @@ -388,10 +469,10 @@ class TriviaQuiz(commands.Cog): await self.send_answer( ctx.channel, - answers, + quiz_entry.answers, False, question_dict, - self.question_limit - len(done_question) + 1, + self.question_limit - len(done_questions), ) await asyncio.sleep(1) @@ -421,10 +502,10 @@ class TriviaQuiz(commands.Cog): await self.send_answer( ctx.channel, - answers, + quiz_entry.answers, True, question_dict, - self.question_limit - len(done_question) + 1, + self.question_limit - len(done_questions), ) await self.send_score(ctx.channel, self.game_player_scores[ctx.channel.id]) @@ -432,19 +513,18 @@ class TriviaQuiz(commands.Cog): def make_start_embed(self, category: str) -> discord.Embed: """Generate a starting/introduction embed for the quiz.""" + rules = "\n".join([f"{index}: {rule}" for index, rule in enumerate(RULES, start=1)]) + start_embed = discord.Embed( - colour=Colours.blue, - title="A quiz game is starting!", + title="Quiz game Starting!!", description=( - f"This game consists of {self.question_limit + 1} questions.\n\n" - "**Rules: **\n" - "1. Only enclose your answer in backticks when the question tells you to.\n" - "2. If the question specifies an answer format, follow it or else it won't be accepted.\n" - "3. You have 30s per question. Points for each question reduces by 25 after 10s or after a hint.\n" - "4. No cheating and have fun!\n\n" - f"**Category**: {category}" + f"Each game consists of {self.question_limit} questions.\n" + f"**Rules :**\n{rules}" + f"\n **Category** : {category}" ), + colour=Colours.blue ) + start_embed.set_thumbnail(url=TRIVIA_QUIZ_ICON) return start_embed @@ -503,6 +583,7 @@ class TriviaQuiz(commands.Cog): title="Score Board", description="", ) + embed.set_thumbnail(url=TRIVIA_QUIZ_ICON) sorted_dict = sorted(player_data.items(), key=operator.itemgetter(1), reverse=True) for item in sorted_dict: @@ -534,8 +615,8 @@ class TriviaQuiz(commands.Cog): winners_mention = winner.mention await channel.send( - f"Congratulations {winners_mention} :tada: " - f"You have won this quiz game with a grand total of {highest_points} points!" + f"{winners_mention} Congratulations " + f"on winning this quiz game with a grand total of {highest_points} points :tada:" ) def category_embed(self) -> discord.Embed: @@ -578,7 +659,8 @@ class TriviaQuiz(commands.Cog): description="", ) - if info is not None: + # Don't check for info is not None, as we want to filter out empty strings. + if info: embed.description += f"**Information**\n{info}\n\n" embed.description += ( -- cgit v1.2.3 From 874326c4bb05ad36224e388d134691c55cd2141a Mon Sep 17 00:00:00 2001 From: Shom770 <82843611+Shom770@users.noreply.github.com> Date: Sun, 19 Sep 2021 00:45:36 -0400 Subject: Hangman (#843) * beginning commit creating the base of the hangman, code needs to be linted in the future * updated words list * adding images to show the hangman person * added images, though it is a bit laggy * replacing images with discord attachment urls * adding error if filters aren't found * fixing typo in ``filter_not_found_embed`` * final lints + removing `mode` parameter as it renders useless * linting flake8 errors * adding newline at the end of `top_1000_used_words.txt` * minor change to filter message * improving hangman docstring * removing `bot/resources/evergreen/hangman` directory as file attachments are used * replacing single quotes with double quotes, to adhere to the style guide. * fixing style inconsistencies and other problems with how the code looks - as per requested by Objectivix * fixing `IMAGES` style inconsistency * adding trailing commas and switching to `Colours` for consistency * adding trailing commas and switching to `Colours` for consistency * fixing the remnants of non-trailing commas and allowing specification for single player vs mulitplayer * removing all 2 letter words from the hangman word choosing and removing words that @Objectivix found that shouldn't be in the list of words * removing some inappropriate words from the txt file * Adding space for grammatical errors Co-authored-by: ChrisJL * changing two periods to a full stop & wrapping try and except block to only the part that can raise it * using negative replies instead along with fixing grammatical errors in the sentence * removing words that could be considered inappropirate * removing `TOP_WORDS_FILE_PATH` and making `ALL_WORDS` a global variable. * more specific docstring * more specific docstring * Removing more words The words removed shouldn't really belong here * replacing mapping_of_images with IMAGES and other fixes * Dedenting Co-authored-by: Bluenix * Improving tries logic Co-authored-by: Bluenix * Updating `positions` list to set Co-authored-by: Bluenix * fixing too many blank lines * Hardcode dictionary Co-authored-by: Bluenix * remove 3 letter words * add the word python * remove all 3 letter words - forgot to remove some * case insensitivity * changes to improve gameplay * setting check outside of every iteration * checking if a letter has already been guessed * changing to transparent images without the shadows * consistency with timeout * capitalization / edits to the hangman_words.txt * changing `singleplayer` to a boolean * sending then deleting, along with encouraging to try again * Grammar Co-authored-by: Bluenix * Grammatical error Co-authored-by: Bluenix * Simplification Co-authored-by: ChrisJL * changing from pathlib to open * python-related words * two more python-related words * making error embeds more clear * Update hangman_words.txt deleted a possibly inappropriate word and added 3 new python related words * Update hangman.py Added some more comments and made some line spacing changes before and after the docstring * adding a new word * Adding newline * updating comments * when the game has won, it will display the word * add helper function to abstract some code, and edit the message at the end when won with the original word * editing message for win screen for consistency * prettifying the user guess * sending win and losing embed separately * Clarify 'tries remaining' Co-authored-by: ChrisJL * changing to `delete_after` * not editing `message.content` variable * fixing error; changing to len(normalized_content) * Update hangman.py Reworded the comment about the timeout a little * last nitpicks for grammatical errors in comments * adding suggestions from ToxicKidz * Improving comments/removing unnecessary ones Co-authored-by: Bluenix * Renaming parameter from `singleplayer` to `mode` Co-authored-by: Bluenix Co-authored-by: ChrisJL Co-authored-by: Bluenix Co-authored-by: DMFriends --- bot/exts/fun/hangman.py | 194 ++++++++ bot/resources/fun/hangman_words.txt | 877 ++++++++++++++++++++++++++++++++++++ 2 files changed, 1071 insertions(+) create mode 100644 bot/exts/fun/hangman.py create mode 100644 bot/resources/fun/hangman_words.txt (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/hangman.py b/bot/exts/fun/hangman.py new file mode 100644 index 00000000..08883103 --- /dev/null +++ b/bot/exts/fun/hangman.py @@ -0,0 +1,194 @@ +from asyncio import TimeoutError +from pathlib import Path +from random import choice +from typing import Literal + +from discord import Embed, Message +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours, NEGATIVE_REPLIES + +# Defining all words in the list of words as a global variable +ALL_WORDS = Path("bot/resources/fun/hangman_words.txt").read_text().splitlines() + +# Defining a dictionary of images that will be used for the game to represent the hangman person +IMAGES = { + 6: "https://cdn.discordapp.com/attachments/859123972884922418/888133201497837598/hangman0.png", + 5: "https://cdn.discordapp.com/attachments/859123972884922418/888133595259084800/hangman1.png", + 4: "https://cdn.discordapp.com/attachments/859123972884922418/888134194474139688/hangman2.png", + 3: "https://cdn.discordapp.com/attachments/859123972884922418/888133758069395466/hangman3.png", + 2: "https://cdn.discordapp.com/attachments/859123972884922418/888133786724859924/hangman4.png", + 1: "https://cdn.discordapp.com/attachments/859123972884922418/888133828831477791/hangman5.png", + 0: "https://cdn.discordapp.com/attachments/859123972884922418/888133845449338910/hangman6.png", +} + + +class Hangman(commands.Cog): + """ + Cog for the Hangman game. + + Hangman is a classic game where the user tries to guess a word, with a limited amount of tries. + """ + + def __init__(self, bot: Bot): + self.bot = bot + + @staticmethod + def create_embed(tries: int, user_guess: str) -> Embed: + """ + Helper method that creates the embed where the game information is shown. + + This includes how many letters the user has guessed so far, and the hangman photo itself. + """ + hangman_embed = Embed( + title="Hangman", + color=Colours.python_blue, + ) + hangman_embed.set_image(url=IMAGES[tries]) + hangman_embed.add_field( + name=f"You've guessed `{user_guess}` so far.", + value="Guess the word by sending a message with a letter!" + ) + hangman_embed.set_footer(text=f"Tries remaining: {tries}") + return hangman_embed + + @commands.command() + async def hangman( + self, + ctx: commands.Context, + min_length: int = 0, + max_length: int = 25, + min_unique_letters: int = 0, + max_unique_letters: int = 25, + mode: Literal["s", "m", "S", "M"] = "s", + ) -> None: + """ + Play hangman against the bot, where you have to guess the word it has provided! + + The arguments for this command mean: + - min_length: the minimum length you want the word to be (i.e. 2) + - max_length: the maximum length you want the word to be (i.e. 5) + - min_unique_letters: the minimum unique letters you want the word to have (i.e. 4) + - max_unique_letters: the maximum unique letters you want the word to have (i.e. 7) + - mode: writing 's' means you want to play by yourself, and only you can suggest letters, + - writing 'm' means you want multiple players to join in and guess the word. + """ + # Changing singleplayer to a boolean + singleplayer = mode.lower() == 's' + + # Filtering the list of all words depending on the configuration + filtered_words = [ + word for word in ALL_WORDS + if min_length < len(word) < max_length + and min_unique_letters < len(set(word)) < max_unique_letters + ] + + if not filtered_words: + filter_not_found_embed = Embed( + title=choice(NEGATIVE_REPLIES), + description="No words could be found that fit all filters specified.", + color=Colours.soft_red, + ) + await ctx.send(embed=filter_not_found_embed) + return + + word = choice(filtered_words) + # `pretty_word` is used for comparing the indices where the guess of the user is similar to the word + # The `user_guess` variable is prettified by adding spaces between every dash, and so is the `pretty_word` + pretty_word = ''.join([f"{letter} " for letter in word])[:-1] + user_guess = ("_ " * len(word))[:-1] + tries = 6 + guessed_letters = set() + + # Checking if the game is singleplayer + def check(msg: Message) -> bool: + if singleplayer: + return msg.author == ctx.author + else: + # Multiplayer mode + return not msg.author.bot + + original_message = await ctx.send(embed=Embed( + title="Hangman", + description="Loading game...", + color=Colours.soft_green + )) + + # Game loop + while user_guess.replace(' ', '') != word: + # Edit the message to the current state of the game + await original_message.edit(embed=self.create_embed(tries, user_guess)) + + try: + message = await self.bot.wait_for( + event="message", + timeout=60.0, + check=check + ) + except TimeoutError: + timeout_embed = Embed( + title=choice(NEGATIVE_REPLIES), + description="Looks like the bot timed out! You must send a letter within 60 seconds.", + color=Colours.soft_red, + ) + await original_message.edit(embed=timeout_embed) + return + + # If the user enters a capital letter as their guess, it is automatically converted to a lowercase letter + normalized_content = message.content.lower() + # The user should only guess one letter per message + if len(normalized_content) > 1: + letter_embed = Embed( + title=choice(NEGATIVE_REPLIES), + description="You can only send one letter at a time, try again!", + color=Colours.dark_green, + ) + await ctx.send(embed=letter_embed, delete_after=4) + continue + + # Checks for repeated guesses + elif normalized_content in guessed_letters: + already_guessed_embed = Embed( + title=choice(NEGATIVE_REPLIES), + description=f"You have already guessed `{normalized_content}`, try again!", + color=Colours.dark_green, + ) + await ctx.send(embed=already_guessed_embed, delete_after=4) + continue + + # Checks for correct guesses from the user + elif normalized_content in word: + positions = {idx for idx, letter in enumerate(pretty_word) if letter == normalized_content} + user_guess = "".join( + [normalized_content if index in positions else dash for index, dash in enumerate(user_guess)] + ) + + else: + tries -= 1 + + if tries <= 0: + losing_embed = Embed( + title="You lost.", + description=f"The word was `{word}`.", + color=Colours.soft_red, + ) + await original_message.edit(embed=self.create_embed(tries, user_guess)) + await ctx.send(embed=losing_embed) + return + + guessed_letters.add(normalized_content) + + # The loop exited meaning that the user has guessed the word + await original_message.edit(embed=self.create_embed(tries, user_guess)) + win_embed = Embed( + title="You won!", + description=f"The word was `{word}`.", + color=Colours.grass_green + ) + await ctx.send(embed=win_embed) + + +def setup(bot: Bot) -> None: + """Load the Hangman cog.""" + bot.add_cog(Hangman(bot)) diff --git a/bot/resources/fun/hangman_words.txt b/bot/resources/fun/hangman_words.txt new file mode 100644 index 00000000..5e20bfde --- /dev/null +++ b/bot/resources/fun/hangman_words.txt @@ -0,0 +1,877 @@ +abandon +ability +able +about +above +accept +according +account +across +action +activity +actually +address +administration +admit +adult +affect +after +again +against +agency +agent +agree +agreement +ahead +allow +almost +alone +along +already +also +although +always +among +amount +analysis +animal +another +answer +anyone +anything +appear +apply +approach +area +argue +around +arrive +article +artist +assume +attack +attention +attorney +audience +author +authority +available +avoid +away +baby +back +ball +bank +base +beat +beautiful +because +become +before +begin +behavior +behind +believe +benefit +best +better +between +beyond +bill +billion +black +blood +blue +board +body +book +born +both +break +bring +brother +budget +build +building +business +bytecode +call +camera +campaign +cancer +candidate +capital +card +care +career +carry +case +catch +cause +cell +center +central +century +certain +certainly +chair +challenge +chance +change +character +charge +check +child +choice +choose +church +citizen +city +civil +claim +class +clear +clearly +close +coach +cold +collection +college +color +come +commercial +common +community +company +compare +computer +concern +condition +conference +consider +consumer +contain +continue +control +cost +could +country +couple +course +court +cover +create +crime +cultural +culture +current +customer +dark +data +daughter +dead +deal +death +debate +decade +decide +decision +deep +defense +degree +describe +design +despite +detail +determine +develop +development +dictionary +difference +different +difficult +dinner +direction +director +discover +discuss +discussion +disease +doctor +door +down +draw +dream +drive +drop +during +each +early +east +easy +economic +economy +edge +education +effect +effort +eight +either +election +else +employee +energy +enjoy +enough +enter +entire +environment +environmental +especially +establish +even +evening +event +ever +every +everybody +everyone +everything +evidence +exactly +example +executive +exist +expect +experience +expert +explain +face +fact +factor +fall +false +family +fast +father +fear +federal +feel +feeling +field +fight +figure +fill +film +final +finally +financial +find +fine +finger +finish +fire +firm +first +fish +five +floor +focus +follow +food +foot +force +foreign +forget +form +former +forward +four +free +friend +from +front +full +function +fund +future +game +garden +general +generation +girl +give +glass +goal +good +government +great +green +ground +group +grow +growth +guess +guido +hair +half +hand +hang +happen +happy +hard +have +head +health +hear +heart +heat +heavy +help +here +herself +high +himself +history +hold +home +hope +hospital +hotel +hour +house +however +huge +human +hundred +husband +idea +identify +image +imagine +impact +import +important +improve +include +including +increase +indeed +indicate +individual +industry +information +inside +instead +institution +interest +interesting +international +interpreter +interview +into +investment +involve +issue +item +itself +join +just +keep +kill +kind +kitchen +know +knowledge +land +lambda +language +large +last +late +later +laugh +lawyer +lead +leader +learn +least +leave +left +legal +less +letter +level +life +light +like +likely +line +list +listen +little +live +local +long +look +loop +lose +loss +love +machine +magazine +main +maintain +major +majority +make +manage +management +manager +many +market +marriage +material +matter +maybe +mean +measure +media +medical +meet +meeting +member +memory +mention +message +method +middle +might +military +million +mind +minute +miss +mission +model +modern +moment +money +month +more +morning +most +mother +mouth +move +movement +movie +much +music +must +myself +name +nation +national +natural +nature +near +nearly +necessary +need +network +never +news +newspaper +next +nice +nightnone +north +note +nothing +notice +number +object +occur +offer +office +officer +official +often +once +only +onto +open +operation +opportunity +option +order +organization +other +others +outside +over +owner +page +pain +painting +paper +parameters +parent +part +participant +particular +particularly +partner +party +pass +past +patient +pattern +peace +people +perform +performance +perhaps +period +person +personal +phone +physical +pick +picture +piece +place +plan +plant +play +player +point +police +policy +political +politics +poor +popular +population +position +positive +possible +power +practice +prepare +present +president +pressure +pretty +prevent +price +print +private +probably +problem +process +produce +product +production +professional +professor +program +project +property +protect +prove +provide +public +pull +purpose +push +pydis +pygame +python +quality +question +quickly +quite +race +radio +raise +range +rate +rather +reach +read +ready +real +reality +realize +really +reason +receive +recent +recently +recognize +record +reduce +reflect +region +relate +relationship +remain +remember +remove +report +represent +require +research +resource +respond +response +responsibility +rest +result +return +reveal +rich +right +rise +risk +road +rock +role +room +rule +safe +same +save +scene +school +science +scientist +score +season +seat +second +section +security +seek +seem +sell +send +senior +sense +series +serious +serve +service +seven +several +shake +share +shoot +short +shot +should +shoulder +show +side +sign +significant +similar +simple +simply +since +sing +single +sister +site +situation +size +skill +skin +small +smile +social +society +soldier +some +somebody +someone +something +sometimes +song +soon +sort +sound +source +south +southern +space +speak +special +specific +speech +spend +sport +spring +staff +stage +stand +standard +star +start +state +statement +station +stay +step +still +stock +stop +store +story +strategy +street +strong +structure +student +study +stuff +style +subject +success +successful +such +suddenly +suffer +suggest +summer +support +sure +surface +system +table +take +talk +task +teach +teacher +team +technology +television +tell +tend +term +test +than +thank +that +their +them +themselves +then +theory +there +these +they +thing +think +third +this +those +though +thought +thousand +threat +three +through +throughout +throw +thus +time +today +together +tonight +total +tough +toward +town +trade +traditional +training +travel +treat +treatment +tree +trial +trip +trouble +true +truth +turn +type +under +understand +unit +until +upon +usually +value +variable +various +very +victim +view +visit +voice +vote +wait +walk +wall +want +watch +water +wear +week +weight +well +west +western +what +whatever +when +where +whether +which +while +white +whole +whom +whose +wide +wife +will +wind +window +wish +with +within +without +woman +wonder +word +work +worker +world +worry +would +write +writer +wrong +yard +yield +yeah +year +young +your +yourself -- cgit v1.2.3 From 1f5970134d710358f716c35d8d7e33b6f76f48d3 Mon Sep 17 00:00:00 2001 From: Bluenix Date: Sun, 19 Sep 2021 15:27:48 +0200 Subject: Remove multiplayer mode and correctly check current channel Closes #871 With multiplayer and a missing check for the right channel the bot would respond to each message as one directed to the game. Multiplayer mode is planned to be reintroduced later on using threads. --- bot/exts/fun/hangman.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/hangman.py b/bot/exts/fun/hangman.py index 08883103..db95ba5c 100644 --- a/bot/exts/fun/hangman.py +++ b/bot/exts/fun/hangman.py @@ -1,7 +1,6 @@ from asyncio import TimeoutError from pathlib import Path from random import choice -from typing import Literal from discord import Embed, Message from discord.ext import commands @@ -61,7 +60,6 @@ class Hangman(commands.Cog): max_length: int = 25, min_unique_letters: int = 0, max_unique_letters: int = 25, - mode: Literal["s", "m", "S", "M"] = "s", ) -> None: """ Play hangman against the bot, where you have to guess the word it has provided! @@ -71,12 +69,7 @@ class Hangman(commands.Cog): - max_length: the maximum length you want the word to be (i.e. 5) - min_unique_letters: the minimum unique letters you want the word to have (i.e. 4) - max_unique_letters: the maximum unique letters you want the word to have (i.e. 7) - - mode: writing 's' means you want to play by yourself, and only you can suggest letters, - - writing 'm' means you want multiple players to join in and guess the word. """ - # Changing singleplayer to a boolean - singleplayer = mode.lower() == 's' - # Filtering the list of all words depending on the configuration filtered_words = [ word for word in ALL_WORDS @@ -103,11 +96,7 @@ class Hangman(commands.Cog): # Checking if the game is singleplayer def check(msg: Message) -> bool: - if singleplayer: - return msg.author == ctx.author - else: - # Multiplayer mode - return not msg.author.bot + return msg.author == ctx.author and msg.channel == ctx.channel original_message = await ctx.send(embed=Embed( title="Hangman", -- cgit v1.2.3 From 1a981e127a5ad87382c846851c0930226405fcda Mon Sep 17 00:00:00 2001 From: Bluenix Date: Sun, 19 Sep 2021 18:46:51 +0200 Subject: Remove false comment --- bot/exts/fun/hangman.py | 1 - 1 file changed, 1 deletion(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/hangman.py b/bot/exts/fun/hangman.py index db95ba5c..a2c8c735 100644 --- a/bot/exts/fun/hangman.py +++ b/bot/exts/fun/hangman.py @@ -94,7 +94,6 @@ class Hangman(commands.Cog): tries = 6 guessed_letters = set() - # Checking if the game is singleplayer def check(msg: Message) -> bool: return msg.author == ctx.author and msg.channel == ctx.channel -- cgit v1.2.3 From 420968c38922f7ebbd763e20fbe916deb3bf5cb6 Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Sun, 5 Sep 2021 00:53:05 -0400 Subject: Split initial embed in two Board and claimed answers discord.py doesn't let you cleanly edit an embed with an image in it --- bot/exts/fun/duck_game.py | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index 1ef7513f..eb509e55 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -130,6 +130,9 @@ class DuckGame: while len(self.solutions) < minimum_solutions: self.board = random.sample(DECK, size) + self.board_msg = None + self.found_msg = None + @property def board(self) -> list[tuple[int]]: """Accesses board property.""" @@ -191,8 +194,8 @@ class DuckGamesDirector(commands.Cog): game.running = True self.current_games[ctx.channel.id] = game - game.msg_content = "" - game.embed_msg = await self.send_board_embed(ctx, game) + game.board_msg = await self.send_board_embed(ctx, game) + game.found_msg = await self.send_found_embed(ctx) await asyncio.sleep(GAME_DURATION) # Checking for the channel ID in the currently running games is not sufficient. @@ -251,7 +254,7 @@ class DuckGamesDirector(commands.Cog): game.scores[msg.author] += INCORRECT_SOLN async def send_board_embed(self, ctx: commands.Context, game: DuckGame) -> discord.Message: - """Create and send the initial game embed. This will be edited as the game goes on.""" + """Create and send an embed to display the board.""" image = assemble_board_image(game.board, game.rows, game.columns) with BytesIO() as image_stream: image.save(image_stream, format="png") @@ -264,14 +267,21 @@ class DuckGamesDirector(commands.Cog): embed.set_image(url="attachment://board.png") return await ctx.send(embed=embed, file=file) + async def send_found_embed(self, ctx: commands.Context) -> discord.Message: + """Create and send an embed to display claimed answers. This will be edited as the game goes on.""" + # Can't be part of the board embed because of discord.py limitations with editing an embed with an image. + embed = discord.Embed( + title="Flights Found", + color=discord.Color.dark_purple(), + ) + return await ctx.send(embed=embed) + async def display_claimed_answer(self, game: DuckGame, author: discord.Member, answer: tuple[int]) -> None: """Add a claimed answer to the game embed.""" async with game.editing_embed: - # We specifically edit the message contents instead of the embed - # Because we load in the image from the file, editing any portion of the embed - # Does weird things to the image and this works around that weirdness - game.msg_content = f"{game.msg_content}\n{str(answer):12s} - {author.display_name}" - await game.embed_msg.edit(content=game.msg_content) + found_embed, = game.found_msg.embeds + found_embed.description = f"{found_embed.description}\n{str(answer):12s} - {author.display_name}" + await game.found_msg.edit(embed=found_embed) async def end_game(self, channel: discord.TextChannel, game: DuckGame, end_message: str) -> None: """Edit the game embed to reflect the end of the game and mark the game as not running.""" -- cgit v1.2.3 From e7bbd14f95f59593581a8c18da8bc4ef9a0f6208 Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Sun, 5 Sep 2021 00:56:58 -0400 Subject: Add function for appending to claimed answers embed --- bot/exts/fun/duck_game.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index eb509e55..1fdc05be 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -248,7 +248,7 @@ class DuckGamesDirector(commands.Cog): if answer in game.solutions: game.claimed_answers[answer] = msg.author game.scores[msg.author] += CORRECT_SOLN - await self.display_claimed_answer(game, msg.author, answer) + await self.append_to_found_embed(game, f"{str(answer):12s} - {msg.author.display_name}") else: await msg.add_reaction(EMOJI_WRONG) game.scores[msg.author] += INCORRECT_SOLN @@ -276,6 +276,16 @@ class DuckGamesDirector(commands.Cog): ) return await ctx.send(embed=embed) + async def append_to_found_embed(self, game: DuckGame, text: str) -> None: + """Append text to the claimed answers embed.""" + async with game.editing_embed: + found_embed, = game.found_msg.embeds + old_desc = found_embed.description + if old_desc == discord.Embed.Empty: + old_desc = "" + found_embed.description = f"{old_desc.rstrip()}\n{text}" + await game.found_msg.edit(embed=found_embed) + async def display_claimed_answer(self, game: DuckGame, author: discord.Member, answer: tuple[int]) -> None: """Add a claimed answer to the game embed.""" async with game.editing_embed: -- cgit v1.2.3 From 65aec408bc3d50934d543b9124de67720d617bb8 Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Sun, 5 Sep 2021 01:12:10 -0400 Subject: Bring end_game up to date --- bot/exts/fun/duck_game.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index 1fdc05be..46ea36fe 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -311,13 +311,19 @@ class DuckGamesDirector(commands.Cog): scoreboard_embed.description = scoreboard await channel.send(embed=scoreboard_embed) + board_embed, = game.board_msg.embeds + embed_as_dict = board_embed.to_dict() # Cannot set embed color after initialization + embed_as_dict["color"] = discord.Color.red().value + board_embed = discord.Embed.from_dict(embed_as_dict) + await self.edit_embed_with_image(game.board_msg, board_embed) + + found_embed, = game.found_msg.embeds missed = [ans for ans in game.solutions if ans not in game.claimed_answers] if missed: missed_text = "Flights everyone missed:\n" + "\n".join(f"{ans}" for ans in missed) else: missed_text = "All the flights were found!" - - await game.embed_msg.edit(content=f"{missed_text}") + await self.append_to_found_embed(game, f"\n{missed_text}") @start_game.command(name="help") async def show_rules(self, ctx: commands.Context) -> None: -- cgit v1.2.3 From f96ecffb3927acd254158210655524e24db37d3b Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Sun, 5 Sep 2021 01:13:49 -0400 Subject: Change board embed color Can't update color when the game is over anymore --- bot/exts/fun/duck_game.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index 46ea36fe..a456c86b 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -11,7 +11,7 @@ from PIL import Image, ImageDraw, ImageFont from discord.ext import commands from bot.bot import Bot -from bot.constants import Colours, MODERATION_ROLES +from bot.constants import MODERATION_ROLES from bot.utils.decorators import with_role DECK = list(product(*[(0, 1, 2)]*4)) @@ -262,7 +262,7 @@ class DuckGamesDirector(commands.Cog): file = discord.File(fp=image_stream, filename="board.png") embed = discord.Embed( title="Duck Duck Duck Goose!", - color=Colours.bright_green, + color=discord.Color.dark_purple(), ) embed.set_image(url="attachment://board.png") return await ctx.send(embed=embed, file=file) -- cgit v1.2.3 From 00c323222be2aeef010b15607f801b3066b5b1ed Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Fri, 24 Sep 2021 22:59:24 -0400 Subject: Remove display_claimed_answer Replaced with append_to_found_embed which is more general --- bot/exts/fun/duck_game.py | 7 ------- 1 file changed, 7 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index a456c86b..8b5338f4 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -286,13 +286,6 @@ class DuckGamesDirector(commands.Cog): found_embed.description = f"{old_desc.rstrip()}\n{text}" await game.found_msg.edit(embed=found_embed) - async def display_claimed_answer(self, game: DuckGame, author: discord.Member, answer: tuple[int]) -> None: - """Add a claimed answer to the game embed.""" - async with game.editing_embed: - found_embed, = game.found_msg.embeds - found_embed.description = f"{found_embed.description}\n{str(answer):12s} - {author.display_name}" - await game.found_msg.edit(embed=found_embed) - async def end_game(self, channel: discord.TextChannel, game: DuckGame, end_message: str) -> None: """Edit the game embed to reflect the end of the game and mark the game as not running.""" game.running = False -- cgit v1.2.3 From baa4d252b72de1e25bceb15721b475ee9724d47b Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Fri, 24 Sep 2021 23:00:40 -0400 Subject: Don't change board embed color Can't edit that embed --- bot/exts/fun/duck_game.py | 7 ------- 1 file changed, 7 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index 8b5338f4..f97c712d 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -304,13 +304,6 @@ class DuckGamesDirector(commands.Cog): scoreboard_embed.description = scoreboard await channel.send(embed=scoreboard_embed) - board_embed, = game.board_msg.embeds - embed_as_dict = board_embed.to_dict() # Cannot set embed color after initialization - embed_as_dict["color"] = discord.Color.red().value - board_embed = discord.Embed.from_dict(embed_as_dict) - await self.edit_embed_with_image(game.board_msg, board_embed) - - found_embed, = game.found_msg.embeds missed = [ans for ans in game.solutions if ans not in game.claimed_answers] if missed: missed_text = "Flights everyone missed:\n" + "\n".join(f"{ans}" for ans in missed) -- cgit v1.2.3 From debe4a185f1429f5dd139929c7506c04abd9fa34 Mon Sep 17 00:00:00 2001 From: Cam Caswell Date: Fri, 24 Sep 2021 23:00:58 -0400 Subject: Change docstring to be more help with the help command --- bot/exts/fun/duck_game.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index f97c712d..95e12ced 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -184,7 +184,7 @@ class DuckGamesDirector(commands.Cog): ) @commands.cooldown(rate=1, per=2, type=commands.BucketType.channel) async def start_game(self, ctx: commands.Context) -> None: - """Generate a board, send the game embed, and end the game after a time limit.""" + """Start a new Duck Duck Duck Goose game.""" if ctx.channel.id in self.current_games: await ctx.send("There's already a game running!") return -- cgit v1.2.3 From beb42c28911d8bbc4de5b0926a77619b4454f402 Mon Sep 17 00:00:00 2001 From: Kronifer <44979306+Kronifer@users.noreply.github.com> Date: Fri, 1 Oct 2021 04:32:58 -0500 Subject: `.quack` (#849) * feat: Added quack command * added log.error call for request fails * spacing change Co-authored-by: Bluenix * another spacing change Co-authored-by: Bluenix * Moved description to footer Co-authored-by: Bluenix * whitespace fix * chore: Removed the link from the footer and set it as the url param * chore: moved footer to description Co-authored-by: Bluenix Co-authored-by: Xithrius <15021300+Xithrius@users.noreply.github.com> --- bot/exts/fun/quack.py | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 bot/exts/fun/quack.py (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/quack.py b/bot/exts/fun/quack.py new file mode 100644 index 00000000..0c228aed --- /dev/null +++ b/bot/exts/fun/quack.py @@ -0,0 +1,75 @@ +import logging +import random +from typing import Literal, Optional + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours, NEGATIVE_REPLIES + +API_URL = 'https://quackstack.pythondiscord.com' + +log = logging.getLogger(__name__) + + +class Quackstack(commands.Cog): + """Cog used for wrapping Quackstack.""" + + def __init__(self, bot: Bot): + self.bot = bot + + @commands.command() + async def quack( + self, + ctx: commands.Context, + ducktype: Literal["duck", "manduck"] = "duck", + *, + seed: Optional[str] = None + ) -> None: + """ + Use the Quackstack API to generate a random duck. + + If a seed is provided, a duck is generated based on the given seed. + Either "duck" or "manduck" can be provided to change the duck type generated. + """ + ducktype = ducktype.lower() + quackstack_url = f"{API_URL}/{ducktype}" + params = {} + if seed is not None: + try: + seed = int(seed) + except ValueError: + # We just need to turn the string into an integer any way possible + seed = int.from_bytes(seed.encode(), "big") + params["seed"] = seed + + async with self.bot.http_session.get(quackstack_url, params=params) as response: + error_embed = discord.Embed( + title=random.choice(NEGATIVE_REPLIES), + description="The request failed. Please try again later.", + color=Colours.soft_red, + ) + if response.status != 200: + log.error(f"Response to Quackstack returned code {response.status}") + await ctx.send(embed=error_embed) + return + + data = await response.json() + file = data["file"] + + embed = discord.Embed( + title=f"Quack! Here's a {ducktype} for you.", + description=f"A {ducktype} from Quackstack.", + color=Colours.grass_green, + url=f"{API_URL}/docs" + ) + + embed.set_image(url=API_URL + file) + + await ctx.send(embed=embed) + + +def setup(bot: Bot) -> None: + """Loads the Quack cog.""" + bot.add_cog(Quackstack(bot)) -- cgit v1.2.3 From 97ccd35d27946abb39b86befdeb36364fea8b5ce Mon Sep 17 00:00:00 2001 From: camcaswell <38672443+camcaswell@users.noreply.github.com> Date: Sat, 2 Oct 2021 00:15:44 -0400 Subject: Make setting the old embed description cleaner --- bot/exts/fun/duck_game.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/duck_game.py b/bot/exts/fun/duck_game.py index 95e12ced..10b03a49 100644 --- a/bot/exts/fun/duck_game.py +++ b/bot/exts/fun/duck_game.py @@ -280,9 +280,7 @@ class DuckGamesDirector(commands.Cog): """Append text to the claimed answers embed.""" async with game.editing_embed: found_embed, = game.found_msg.embeds - old_desc = found_embed.description - if old_desc == discord.Embed.Empty: - old_desc = "" + old_desc = found_embed.description or "" found_embed.description = f"{old_desc.rstrip()}\n{text}" await game.found_msg.edit(embed=found_embed) -- cgit v1.2.3 From dccd30e27a594dad808a20bacef213c461ea2c48 Mon Sep 17 00:00:00 2001 From: Mayur Odedara Date: Fri, 8 Oct 2021 00:57:57 +0530 Subject: Added Anagrams command (#874) * Added Anagrams command Added 2 files anagram.py - Has the code for anagram command anagram.json - Contains all the words for anagram command * Update bot/exts/fun/anagram.py Using "with" for resource file instead of getting data directly Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> * Update bot/exts/fun/anagram.py Updated title text for answer embed Co-authored-by: Bluenix * Update bot/exts/fun/anagram.py Comma separated text for winners list Co-authored-by: Bluenix * Updated anagram.py as per review comments -Removed redundant variables -Updated embed text to avoid 'all' -Updated stale comments * Some minor formatting fixes -Added trailing commas to embed -Updated all embeds to have consistent format * Polish anagram command for multiple channels * Updated docstrings * Allowed command to be used in multiple channels * Create a class for anagram game instances * Lay groundwork for threads Co-Authored-By: Bluenix * Updated resource file for anagram command * Anagrams are now cross referenced with list of common words which should be easy for users to guess * It should not have any slur words * Update bot/exts/fun/anagram.py Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> * Update bot/exts/fun/anagram.py Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> * Update bot/exts/fun/anagram.py Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> * Update bot/exts/fun/anagram.py Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> * Linting error fix Linting error fix * Error fix Removed the "seconds" causing issue for anagram command * Revert "Error fix" This reverts commit 8c00d70f9faf62c536eac1fa61877dfab328a83f. * Error fix for seconds Fixed the error by removing "seconds" Co-authored-by: brad90four <42116429+brad90four@users.noreply.github.com> Co-authored-by: Bluenix Co-authored-by: Xithrius <15021300+Xithrius@users.noreply.github.com> --- bot/exts/fun/anagram.py | 110 + bot/resources/fun/anagram.json | 17668 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 17778 insertions(+) create mode 100644 bot/exts/fun/anagram.py create mode 100644 bot/resources/fun/anagram.json (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/anagram.py b/bot/exts/fun/anagram.py new file mode 100644 index 00000000..9aee5f18 --- /dev/null +++ b/bot/exts/fun/anagram.py @@ -0,0 +1,110 @@ +import asyncio +import json +import logging +import random +from pathlib import Path + +import discord +from discord.ext import commands + +from bot.bot import Bot +from bot.constants import Colours + +log = logging.getLogger(__name__) + +TIME_LIMIT = 60 + +# anagram.json file contains all the anagrams +with open(Path("bot/resources/fun/anagram.json"), "r") as f: + ANAGRAMS_ALL = json.load(f) + + +class AnagramGame: + """ + Used for creating instances of anagram games. + + Once multiple games can be run at the same time, this class' instances + can be used for keeping track of each anagram game. + """ + + def __init__(self, scrambled: str, correct: list[str]) -> None: + self.scrambled = scrambled + self.correct = set(correct) + + self.winners = set() + + async def message_creation(self, message: discord.Message) -> None: + """Check if the message is a correct answer and remove it from the list of answers.""" + if message.content.lower() in self.correct: + self.winners.add(message.author.mention) + self.correct.remove(message.content.lower()) + + +class Anagram(commands.Cog): + """Cog for the Anagram game command.""" + + def __init__(self, bot: Bot): + self.bot = bot + + self.games: dict[int, AnagramGame] = {} + + @commands.command(name="anagram", aliases=("anag", "gram", "ag")) + @commands.guild_only() + async def anagram_command(self, ctx: commands.Context) -> None: + """ + Given shuffled letters, rearrange them into anagrams. + + Show an embed with scrambled letters which if rearranged can form words. + After a specific amount of time, list the correct answers and whether someone provided a + correct answer. + """ + if self.games.get(ctx.channel.id): + await ctx.send("An anagram is already being solved in this channel!") + return + + scrambled_letters, correct = random.choice(list(ANAGRAMS_ALL.items())) + + game = AnagramGame(scrambled_letters, correct) + self.games[ctx.channel.id] = game + + anagram_embed = discord.Embed( + title=f"Find anagrams from these letters: '{scrambled_letters.upper()}'", + description=f"You have {TIME_LIMIT} seconds to find correct words.", + colour=Colours.purple, + ) + + await ctx.send(embed=anagram_embed) + await asyncio.sleep(TIME_LIMIT) + + if game.winners: + win_list = ", ".join(game.winners) + content = f"Well done {win_list} for getting it right!" + else: + content = "Nobody got it right." + + answer_embed = discord.Embed( + title=f"The words were: `{'`, `'.join(ANAGRAMS_ALL[game.scrambled])}`!", + colour=Colours.pink, + ) + + await ctx.send(content, embed=answer_embed) + + # Game is finished, let's remove it from the dict + self.games.pop(ctx.channel.id) + + @commands.Cog.listener() + async def on_message(self, message: discord.Message) -> None: + """Check a message for an anagram attempt and pass to an ongoing game.""" + if message.author.bot or not message.guild: + return + + game = self.games.get(message.channel.id) + if not game: + return + + await game.message_creation(message) + + +def setup(bot: Bot) -> None: + """Load the Anagram cog.""" + bot.add_cog(Anagram(bot)) diff --git a/bot/resources/fun/anagram.json b/bot/resources/fun/anagram.json new file mode 100644 index 00000000..ea5a5794 --- /dev/null +++ b/bot/resources/fun/anagram.json @@ -0,0 +1,17668 @@ +{ + "eht": [ + "eth", + "het", + "the" + ], + "adn": [ + "and", + "dan", + "nad" + ], + "for": [ + "for", + "fro", + "orf" + ], + "ahtt": [ + "hatt", + "tath", + "that" + ], + "hist": [ + "hist", + "hits", + "isth", + "shit", + "sith", + "this", + "tshi" + ], + "hitw": [ + "whit", + "with" + ], + "not": [ + "not", + "ont", + "ton" + ], + "aer": [ + "aer", + "are", + "ear", + "era", + "rea" + ], + "fmor": [ + "form", + "from" + ], + "enw": [ + "new", + "wen" + ], + "emor": [ + "mero", + "more", + "omer", + "rome" + ], + "asw": [ + "saw", + "swa", + "was" + ], + "acn": [ + "anc", + "can" + ], + "aegp": [ + "gape", + "page", + "peag", + "pega" + ], + "ahs": [ + "ahs", + "ash", + "has", + "sah", + "sha" + ], + "acehrs": [ + "arches", + "ascher", + "casher", + "chares", + "chaser", + "eschar", + "raches", + "recash", + "search" + ], + "eefr": [ + "feer", + "fere", + "free", + "reef" + ], + "btu": [ + "btu", + "but", + "tub" + ], + "oru": [ + "our", + "uro" + ], + "eno": [ + "eon", + "neo", + "one" + ], + "ehort": [ + "other", + "theor", + "thore", + "throe", + "toher" + ], + "eimt": [ + "emit", + "item", + "mite", + "time" + ], + "ehty": [ + "hyte", + "yeth", + "they" + ], + "eist": [ + "seit", + "site", + "ties" + ], + "amy": [ + "amy", + "yam", + "may", + "mya" + ], + "ahtw": [ + "thaw", + "wath", + "what" + ], + "ehirt": [ + "ither", + "rithe", + "their" + ], + "ensw": [ + "news", + "sewn", + "snew", + "wens" + ], + "otu": [ + "out", + "tou" + ], + "esu": [ + "esu", + "sue", + "use" + ], + "any": [ + "any", + "yan", + "nay" + ], + "eehrt": [ + "ether", + "rethe", + "theer", + "there", + "three" + ], + "ees": [ + "ese", + "see" + ], + "lnoy": [ + "lyon", + "loyn", + "only" + ], + "his": [ + "his", + "hsi", + "ihs", + "ish", + "shi" + ], + "ehnw": [ + "hewn", + "when" + ], + "eehr": [ + "heer", + "here" + ], + "how": [ + "how", + "who" + ], + "alos": [ + "also", + "laos", + "sola" + ], + "now": [ + "now", + "own", + "won" + ], + "egt": [ + "get", + "gte", + "teg" + ], + "eivw": [ + "view", + "wive" + ], + "eilnno": [ + "lionne", + "online" + ], + "first": [ + "first", + "frist", + "frits", + "rifts" + ], + "been": [ + "been", + "bene", + "eben" + ], + "eerw": [ + "ewer", + "weer", + "were" + ], + "ceeirssv": [ + "scrieves", + "services" + ], + "emos": [ + "meso", + "mose", + "some" + ], + "eehst": [ + "sheet", + "these" + ], + "ist": [ + "ist", + "its", + "sit", + "tis", + "tsi" + ], + "eikl": [ + "kiel", + "like" + ], + "ceeirsv": [ + "cerevis", + "cresive", + "scrieve", + "service" + ], + "ahnt": [ + "hant", + "tanh", + "than" + ], + "ceipr": [ + "price", + "recip", + "repic" + ], + "adet": [ + "adet", + "ated", + "date", + "tade", + "tead", + "teda" + ], + "opt": [ + "opt", + "pot", + "top" + ], + "adh": [ + "dah", + "dha", + "had" + ], + "ilst": [ + "list", + "lits", + "silt", + "slit", + "tils" + ], + "aemn": [ + "amen", + "enam", + "mane", + "mean", + "name", + "nema" + ], + "jstu": [ + "just", + "juts" + ], + "eorv": [ + "over", + "rove" + ], + "aestt": [ + "state", + "taste", + "tates", + "teats", + "testa" + ], + "aery": [ + "aery", + "ayre", + "eyra", + "yare", + "year" + ], + "ady": [ + "ady", + "day", + "yad" + ], + "inot": [ + "into", + "nito", + "oint", + "tino" + ], + "aeilm": [ + "email", + "maile", + "malie", + "melia" + ], + "otw": [ + "owt", + "tow", + "two", + "wot" + ], + "desu": [ + "deus", + "dues", + "sude", + "sued", + "used" + ], + "alst": [ + "alts", + "last", + "lats", + "salt", + "slat" + ], + "most": [ + "most", + "mots", + "toms" + ], + "cimsu": [ + "musci", + "music" + ], + "aadt": [ + "adat", + "data" + ], + "aekm": [ + "kame", + "make", + "meak" + ], + "ehmt": [ + "meth", + "them" + ], + "emssty": [ + "mystes", + "system" + ], + "opst": [ + "opts", + "post", + "pots", + "spot", + "stop", + "tops" + ], + "ehr": [ + "her", + "reh", + "rhe" + ], + "add": [ + "add", + "dad" + ], + "chsu": [ + "cush", + "such" + ], + "aeelps": [ + "asleep", + "elapse", + "please", + "sapele" + ], + "aeegmss": [ + "megasse", + "message" + ], + "aefrt": [ + "afret", + "after", + "frate", + "trefa" + ], + "best": [ + "best", + "bets" + ], + "aeforstw": [ + "forwaste", + "software" + ], + "ehnt": [ + "hent", + "neth", + "then" + ], + "ellw": [ + "llew", + "well" + ], + "eehrw": [ + "hewer", + "wheer", + "where" + ], + "fino": [ + "fino", + "foin", + "info" + ], + "ghirst": [ + "girths", + "griths", + "rights" + ], + "bkoos": [ + "bokos", + "books" + ], + "chloos": [ + "cholos", + "school" + ], + "aceh": [ + "ache", + "each", + "haec" + ], + "iklns": [ + "kilns", + "links", + "slink" + ], + "ehs": [ + "hes", + "she" + ], + "eeirvw": [ + "review", + "viewer" + ], + "aersy": [ + "eyras", + "years", + "reasy", + "resay", + "sayer", + "seary" + ], + "bkoo": [ + "boko", + "book" + ], + "eimst": [ + "emits", + "items", + "metis", + "mites", + "smite", + "stime", + "times" + ], + "acmnopy": [ + "company", + "copyman" + ], + "ader": [ + "ared", + "daer", + "dare", + "dear", + "read" + ], + "deen": [ + "dene", + "eden", + "ende", + "ened", + "need" + ], + "amny": [ + "many", + "myna" + ], + "ersu": [ + "rues", + "ruse", + "suer", + "sure", + "user" + ], + "adis": [ + "aids", + "dais", + "dasi", + "dias", + "disa", + "sadi", + "said", + "sida" + ], + "deos": [ + "does", + "dose", + "odes" + ], + "est": [ + "est", + "set" + ], + "denru": [ + "nuder", + "rendu", + "runed", + "under", + "unred" + ], + "aeeglnr": [ + "enlarge", + "general", + "gleaner" + ], + "aceehrrs": [ + "reachers", + "rechaser", + "research", + "searcher" + ], + "ailm": [ + "amil", + "amli", + "lima", + "mail", + "mali", + "mila" + ], + "amp": [ + "amp", + "map", + "pam" + ], + "eeirsvw": [ + "reviews", + "viewers" + ], + "efil": [ + "feil", + "fiel", + "file", + "leif", + "lief", + "life" + ], + "know": [ + "know", + "wonk" + ], + "aegms": [ + "games", + "mages" + ], + "awy": [ + "yaw", + "way" + ], + "adsy": [ + "days", + "dyas" + ], + "aprt": [ + "part", + "prat", + "rapt", + "tarp", + "trap" + ], + "cdlou": [ + "cloud", + "could" + ], + "aegrt": [ + "gater", + "grate", + "great", + "greta", + "retag", + "targe", + "terga" + ], + "deintu": [ + "dunite", + "united", + "untied" + ], + "ehlot": [ + "helot", + "hotel", + "theol", + "thole" + ], + "aelr": [ + "arle", + "earl", + "eral", + "lare", + "lear", + "rale", + "real" + ], + "ceenrt": [ + "center", + "centre", + "entrec", + "recent", + "tenrec" + ], + "abey": [ + "abey", + "abye" + ], + "mstu": [ + "must", + "muts", + "smut", + "stum" + ], + "eorst": [ + "roset", + "rotes", + "rotse", + "soter", + "stero", + "store", + "tores", + "torse" + ], + "aelrtv": [ + "travel", + "varlet" + ], + "adem": [ + "dame", + "edam", + "emda", + "made", + "maed", + "mead" + ], + "eoprrt": [ + "porret", + "porter", + "pretor", + "report", + "troper" + ], + "adeilst": [ + "details", + "dilates", + "distale", + "salited" + ], + "eiln": [ + "lien", + "line", + "neil", + "nile" + ], + "emrst": [ + "mster", + "terms" + ], + "ehlost": [ + "helots", + "hostel", + "hostle", + "hotels", + "tholes" + ], + "dens": [ + "dens", + "ends", + "send", + "sned" + ], + "ghirt": [ + "girth", + "grith", + "right" + ], + "abceesu": [ + "because", + "besauce" + ], + "acllo": [ + "callo", + "colla", + "local" + ], + "ehost": [ + "ethos", + "shote", + "theos", + "those" + ], + "ginsu": [ + "suing", + "using" + ], + "elrsstu": [ + "lusters", + "lustres", + "results", + "rustles", + "sutlers", + "tussler", + "ulsters" + ], + "ceffio": [ + "coiffe", + "office" + ], + "acdeinotu": [ + "auctioned", + "cautioned", + "coadunite", + "education", + "noctuidae" + ], + "aailnnot": [ + "latonian", + "nataloin", + "national" + ], + "acr": [ + "arc", + "car" + ], + "degins": [ + "deigns", + "design", + "sdeign", + "signed", + "singed" + ], + "aekt": [ + "kate", + "keat", + "keta", + "take", + "teak" + ], + "deopst": [ + "depots", + "despot", + "posted", + "stoped" + ], + "eeinnrtt": [ + "internet", + "renitent", + "trentine" + ], + "hiintw": [ + "inwith", + "whitin", + "within" + ], + "aesstt": [ + "estats", + "states", + "tasset", + "tastes" + ], + "antw": [ + "nawt", + "tawn", + "want" + ], + "ehnop": [ + "pheon", + "phone" + ], + "deeerrsv": [ + "deserver", + "reserved", + "reversed" + ], + "abdes": [ + "based", + "beads", + "sabed" + ], + "cdeo": [ + "code", + "coed", + "deco", + "ecod" + ], + "hosw": [ + "hows", + "show" + ], + "eenv": [ + "even", + "neve", + "veen" + ], + "aceilps": [ + "plaices", + "special" + ], + "ceiprs": [ + "crepis", + "cripes", + "persic", + "precis", + "prices", + "spicer" + ], + "deinx": [ + "index", + "nixed" + ], + "begin": [ + "begin", + "being", + "binge" + ], + "emnow": [ + "menow", + "women" + ], + "chmu": [ + "chum", + "much" + ], + "gins": [ + "gins", + "sign", + "sing", + "snig" + ], + "ikln": [ + "kiln", + "link" + ], + "enop": [ + "nope", + "open", + "peon", + "pone" + ], + "adoty": [ + "doaty", + "toady", + "today" + ], + "hostu": [ + "shout", + "south", + "thous" + ], + "aces": [ + "aces", + "aesc", + "case", + "esca" + ], + "aems": [ + "asem", + "maes", + "meas", + "mesa", + "same", + "seam" + ], + "aegps": [ + "gapes", + "pages", + "peags" + ], + "einorsv": [ + "renvois", + "version" + ], + "ceinost": [ + "contise", + "noetics", + "notices", + "section" + ], + "dfnou": [ + "fondu", + "found" + ], + "oprsst": [ + "sports", + "strops" + ], + "adeelrt": [ + "alerted", + "altered", + "delater", + "latrede", + "redealt", + "related", + "treadle" + ], + "bhot": [ + "both", + "thob" + ], + "aaceimnr": [ + "amacrine", + "american", + "camarine", + "camerina", + "cinerama" + ], + "aegm": [ + "egma", + "game", + "mage" + ], + "acer": [ + "acer", + "acre", + "care", + "cera", + "crea", + "race" + ], + "alott": [ + "lotta", + "total" + ], + "acelp": [ + "capel", + "clape", + "place" + ], + "den": [ + "den", + "end", + "ned" + ], + "addlnoow": [ + "download", + "woodland" + ], + "hiottuw": [ + "outwith", + "without" + ], + "epr": [ + "per", + "pre", + "rep" + ], + "hnort": [ + "north", + "thorn" + ], + "ceeorrssu": [ + "recourses", + "resources" + ], + "opsst": [ + "posts", + "spots", + "stops" + ], + "bgi": [ + "big", + "gib" + ], + "adeim": [ + "aimed", + "amide", + "damie", + "media" + ], + "alw": [ + "alw", + "awl", + "law" + ], + "aertw": [ + "tawer", + "water", + "wreat" + ], + "hiorsty": [ + "history", + "toryish" + ], + "ceiprstu": [ + "crepitus", + "cuprites", + "pictures", + "piecrust" + ], + "art": [ + "art", + "rat", + "tar", + "tra" + ], + "ceins": [ + "cines", + "senci", + "since" + ], + "degiu": [ + "digue", + "guide" + ], + "hops": [ + "hops", + "hosp", + "phos", + "posh", + "shop", + "soph" + ], + "abdor": [ + "abord", + "bardo", + "board", + "broad", + "dobra", + "dorab" + ], + "acilnoot": [ + "colation", + "coontail", + "location" + ], + "ehitw": [ + "white", + "withe" + ], + "allms": [ + "malls", + "small" + ], + "aginrt": [ + "gratin", + "rating", + "taring", + "tringa" + ], + "aert": [ + "aret", + "arte", + "erat", + "rate", + "tare", + "tear", + "tera" + ], + "dginru": [ + "during", + "ungird", + "ungrid" + ], + "asu": [ + "aus", + "sau", + "usa" + ], + "enrrtu": [ + "return", + "turner" + ], + "eisst": [ + "sesti", + "siest", + "sites", + "sties" + ], + "eioprsuv": [ + "pervious", + "previous", + "viperous" + ], + "eenstv": [ + "events", + "steven" + ], + "elov": [ + "levo", + "love", + "velo", + "vole" + ], + "dlo": [ + "dol", + "lod", + "old" + ], + "aimn": [ + "amin", + "anim", + "iman", + "main", + "mani", + "mian", + "mina", + "naim" + ], + "cdeiinoprst": [ + "description", + "discerption", + "predictions" + ], + "aceinnrsu": [ + "insurance", + "nuisancer" + ], + "aehnort": [ + "another", + "athenor", + "rheotan" + ], + "hwy": [ + "hwy", + "why" + ], + "ahlls": [ + "halls", + "shall" + ], + "illst": [ + "lilts", + "still", + "tills" + ], + "emnoy": [ + "emony", + "moyen", + "money" + ], + "eervy": [ + "every", + "veery", + "verey" + ], + "giilnst": [ + "listing", + "silting", + "sliting", + "tilings" + ], + "eilltt": [ + "little", + "tillet" + ], + "iistv": [ + "visit", + "vitis" + ], + "aesv": [ + "aves", + "save", + "vase" + ], + "loost": [ + "loots", + "lotos", + "sloot", + "sotol", + "stool", + "tools" + ], + "low": [ + "low", + "lwo", + "owl" + ], + "elpry": [ + "lepry", + "plyer", + "reply" + ], + "cemorstu": [ + "costumer", + "customer" + ], + "acemopr": [ + "compare", + "compear" + ], + "cdeilnu": [ + "include", + "nuclide" + ], + "aeluv": [ + "uveal", + "value" + ], + "aceilrt": [ + "article", + "recital" + ], + "kory": [ + "york", + "kory", + "roky" + ], + "amn": [ + "man", + "mna", + "nam" + ], + "deioprv": [ + "dropvie", + "prevoid", + "provide" + ], + "ceorsu": [ + "cerous", + "course", + "crouse", + "source" + ], + "aelnr": [ + "learn", + "neral", + "renal" + ], + "aels": [ + "ales", + "elsa", + "lase", + "leas", + "sale", + "seal", + "slae" + ], + "adnoru": [ + "around", + "arundo" + ], + "bjo": [ + "job", + "obj" + ], + "ceoprss": [ + "corpses", + "process" + ], + "eent": [ + "eten", + "neet", + "nete", + "teen" + ], + "moor": [ + "moor", + "moro", + "room" + ], + "oot": [ + "oot", + "oto", + "too" + ], + "cdeirt": [ + "credit", + "direct", + "triced" + ], + "inopt": [ + "pinot", + "pinto", + "piton", + "point" + ], + "ijno": [ + "join", + "joni" + ], + "aceegiorst": [ + "categories", + "categorise" + ], + "estw": [ + "stew", + "tews", + "west", + "wets" + ], + "aelss": [ + "lases", + "sales", + "salse", + "seals" + ], + "kloo": [ + "kolo", + "look" + ], + "eghilns": [ + "english", + "shingle" + ], + "eflt": [ + "felt", + "flet", + "left" + ], + "aemt": [ + "mate", + "meat", + "meta", + "tame", + "team", + "tema" + ], + "aeestt": [ + "estate", + "testae" + ], + "ceelst": [ + "elects", + "select" + ], + "hoopst": [ + "photos", + "pothos" + ], + "agy": [ + "agy", + "gay" + ], + "adehrt": [ + "dearth", + "hatred", + "rathed", + "thread" + ], + "acegorty": [ + "category", + "greycoat" + ], + "enot": [ + "eton", + "note", + "tone" + ], + "eilv": [ + "evil", + "levi", + "live", + "veil", + "vile", + "vlei" + ], + "aeglr": [ + "argel", + "argle", + "ergal", + "garle", + "glare", + "lager", + "large", + "regal" + ], + "aegllry": [ + "allergy", + "gallery", + "largely", + "regally" + ], + "abelt": [ + "ablet", + "batel", + "belat", + "blate", + "bleat", + "tabel", + "table" + ], + "eehorvw": [ + "everwho", + "however", + "whoever" + ], + "aellry": [ + "rallye", + "really" + ], + "acinot": [ + "action", + "atonic", + "cation" + ], + "arstt": [ + "start", + "tarts" + ], + "eeirss": [ + "seiser", + "series", + "sirees" + ], + "air": [ + "air", + "ira", + "ria" + ], + "ahmnu": [ + "human", + "nahum" + ], + "esy": [ + "yes", + "sey", + "sye" + ], + "cdenos": [ + "codens", + "second" + ], + "hot": [ + "hot", + "tho" + ], + "cost": [ + "cost", + "cots", + "scot" + ], + "achmr": [ + "charm", + "march" + ], + "asy": [ + "ays", + "yas", + "say" + ], + "acdeilm": [ + "camelid", + "claimed", + "decimal", + "declaim", + "medical" + ], + "estt": [ + "sett", + "stet", + "test" + ], + "definr": [ + "finder", + "friend", + "redfin", + "refind" + ], + "eerrsv": [ + "revers", + "server", + "verser" + ], + "dstuy": [ + "dusty", + "study" + ], + "acrt": [ + "cart", + "trac" + ], + "aceilrst": [ + "altrices", + "articles", + "recitals", + "selictar", + "sterical" + ], + "ans": [ + "ans", + "san" + ], + "aagin": [ + "again", + "angia" + ], + "alpy": [ + "paly", + "pyal", + "pyla", + "play" + ], + "eisssu": [ + "issues", + "suisse" + ], + "ailpr": [ + "april", + "parli", + "pilar", + "ripal" + ], + "eenrv": [ + "nerve", + "never" + ], + "erssu": [ + "ruses", + "russe", + "suers", + "sures", + "users" + ], + "eerstt": [ + "retest", + "setter", + "street", + "tester" + ], + "ciopt": [ + "optic", + "picot", + "topic" + ], + "ghinst": [ + "nights", + "snight", + "things" + ], + "giknorw": [ + "kingrow", + "working" + ], + "aaginst": [ + "against", + "antisag" + ], + "atx": [ + "tax", + "xat" + ], + "enoprs": [ + "person", + "speron" + ], + "below": [ + "below", + "bowel", + "bowle", + "elbow" + ], + "beilmo": [ + "bemoil", + "emboil", + "emboli", + "mobile" + ], + "elss": [ + "less", + "sels" + ], + "got": [ + "got", + "tog" + ], + "aprty": [ + "party", + "trypa" + ], + "gilno": [ + "lingo", + "login" + ], + "densttu": [ + "student", + "stunted" + ], + "elt": [ + "elt", + "let", + "tel" + ], + "effors": [ + "offers", + "reffos" + ], + "aegll": [ + "egall", + "legal" + ], + "eorsst": [ + "retoss", + "rosets", + "sorest", + "sortes", + "stores", + "torses", + "tosser" + ], + "deis": [ + "deis", + "desi", + "dies", + "ides", + "ised", + "seid", + "side" + ], + "act": [ + "act", + "cat" + ], + "der": [ + "der", + "erd", + "red" + ], + "acilos": [ + "colias", + "scolia", + "social" + ], + "eoqtu": [ + "quote", + "toque" + ], + "aaegglnu": [ + "ganguela", + "langauge", + "language" + ], + "orsty": [ + "ryots", + "sorty", + "story", + "stroy", + "tyros", + "troys" + ], + "ells": [ + "ells", + "sell" + ], + "inoopst": [ + "options", + "potions" + ], + "aerst": [ + "arest", + "aster", + "astre", + "rates", + "reast", + "resat", + "serta", + "stare", + "strae", + "tares", + "tarse", + "tears", + "teras", + "treas" + ], + "aceert": [ + "cerate", + "cetera", + "create", + "ecarte" + ], + "eky": [ + "key", + "kye" + ], + "bdoy": [ + "body", + "boyd", + "doby" + ], + "defil": [ + "felid", + "fidel", + "field", + "filed", + "flied" + ], + "efw": [ + "few", + "wef" + ], + "aest": [ + "ates", + "east", + "eats", + "etas", + "sate", + "seat", + "seta", + "teas" + ], + "aeppr": [ + "paper", + "rappe" + ], + "egilns": [ + "glinse", + "ingles", + "lignes", + "seling", + "single", + "slinge" + ], + "aeg": [ + "age", + "gae" + ], + "aeelmpx": [ + "example", + "exempla" + ], + "aelstt": [ + "latest", + "sattle", + "taslet" + ], + "ador": [ + "ador", + "dora", + "orad", + "road" + ], + "ghint": [ + "night", + "thing" + ], + "aestx": [ + "taxes", + "texas" + ], + "cot": [ + "cot", + "cto", + "oct", + "otc" + ], + "apy": [ + "yap", + "pay", + "pya" + ], + "ekopr": [ + "poker", + "proke" + ], + "assttu": [ + "status", + "suttas" + ], + "beorsw": [ + "bowers", + "bowser", + "browse" + ], + "eissu": [ + "issue", + "susie" + ], + "aegnr": [ + "anger", + "areng", + "grane", + "range", + "regna", + "renga" + ], + "eellrs": [ + "resell", + "seller" + ], + "cortu": [ + "court", + "crout", + "turco" + ], + "elrstu": [ + "luster", + "lustre", + "result", + "rustle", + "sutler", + "ulster" + ], + "eirtw": [ + "twier", + "twire", + "write" + ], + "arw": [ + "raw", + "war" + ], + "nov": [ + "nov", + "von" + ], + "effor": [ + "offer", + "reffo" + ], + "belu": [ + "bleu", + "blue", + "lube" + ], + "aesy": [ + "ayes", + "easy", + "eyas", + "yeas" + ], + "efils": [ + "felis", + "files", + "flies" + ], + "eeqrstu": [ + "quester", + "request" + ], + "achin": [ + "chain", + "chian", + "china" + ], + "ceiprtu": [ + "cuprite", + "picture" + ], + "deens": [ + "denes", + "dense", + "needs" + ], + "ety": [ + "ety", + "yet", + "tye" + ], + "ajmor": [ + "jarmo", + "joram", + "major" + ], + "arst": [ + "arts", + "astr", + "rats", + "sart", + "star", + "stra", + "tars", + "tsar" + ], + "aaers": [ + "arase", + "areas" + ], + "aceps": [ + "capes", + "paces", + "scape", + "space" + ], + "adhn": [ + "dhan", + "hand" + ], + "nsu": [ + "nus", + "sun", + "uns" + ], + "aghinnostw": [ + "nowanights", + "washington" + ], + "eegimnt": [ + "meeting", + "teeming", + "tegmine" + ], + "eeinrstt": [ + "insetter", + "interest", + "interset", + "sternite", + "trientes" + ], + "eekp": [ + "keep", + "peek", + "peke" + ], + "eenrt": [ + "enter", + "entre", + "neter", + "renet", + "rente", + "terne", + "treen" + ], + "aehrs": [ + "asher", + "earsh", + "hares", + "hears", + "rheas", + "share", + "shear" + ], + "adegnr": [ + "danger", + "gander", + "garden", + "grande", + "ranged" + ], + "aceimnops": [ + "campesino", + "companies" + ], + "deilst": [ + "delist", + "desilt", + "idlest", + "listed", + "silted", + "tildes" + ], + "abby": [ + "abby", + "baby" + ], + "eegnry": [ + "energy", + "gyrene", + "greeny", + "ygerne" + ], + "nru": [ + "run", + "urn" + ], + "ent": [ + "net", + "ten" + ], + "eiorsst": [ + "isoster", + "rosiest", + "rossite", + "sorites", + "sorties", + "stories", + "trioses" + ], + "ptu": [ + "put", + "tup" + ], + "eoprrst": [ + "porters", + "pretors", + "reports", + "sporter", + "strepor" + ], + "rty": [ + "tyr", + "try" + ], + "aegims": [ + "ageism", + "images" + ], + "deeinprst": [ + "president", + "serpentid" + ], + "ceinot": [ + "conite", + "eciton", + "noetic", + "notice", + "octine" + ], + "adeh": [ + "hade", + "haed", + "head" + ], + "adior": [ + "aroid", + "doria", + "radio" + ], + "ilntu": [ + "unlit", + "until" + ], + "cloor": [ + "color", + "corol", + "crool" + ], + "efls": [ + "fels", + "self" + ], + "cdeilnsu": [ + "includes", + "nuclides", + "unsliced" + ], + "ceno": [ + "cone", + "econ", + "once" + ], + "ehorst": [ + "horste", + "hoster", + "others", + "reshot", + "throes", + "tosher" + ], + "aelst": [ + "astel", + "least", + "salet", + "setal", + "slate", + "stale", + "steal", + "stela", + "taels", + "tales", + "teals", + "tesla" + ], + "glo": [ + "gol", + "log" + ], + "definrs": [ + "finders", + "friends", + "redfins", + "refinds" + ], + "afq": [ + "faq", + "qaf" + ], + "adert": [ + "adret", + "dater", + "derat", + "detar", + "drate", + "rated", + "tarde", + "tared", + "trade", + "tread" + ], + "deiinot": [ + "edition", + "odinite", + "otidine", + "tineoid" + ], + "acrs": [ + "arcs", + "cars", + "scar", + "srac" + ], + "aeegmsss": [ + "megasses", + "messages" + ], + "abel": [ + "abel", + "able", + "albe", + "bael", + "bale", + "beal", + "bela", + "blae", + "blea" + ], + "deioprsv": [ + "disprove", + "provides" + ], + "aadelry": [ + "aleyard", + "already" + ], + "eegnr": [ + "genre", + "green", + "grene", + "neger", + "reneg" + ], + "deisstu": [ + "studies", + "tissued" + ], + "celos": [ + "cloes", + "close", + "coles", + "socle" + ], + "deirv": [ + "deriv", + "diver", + "drive", + "rived", + "verdi" + ], + "aeelrsv": [ + "laveers", + "leavers", + "reveals", + "several", + "vealers" + ], + "dglo": [ + "glod", + "gold" + ], + "eps": [ + "esp", + "pes", + "sep" + ], + "horst": [ + "horst", + "short" + ], + "lot": [ + "lot", + "tlo", + "tol" + ], + "aks": [ + "ask", + "kas", + "sak" + ], + "deiilmt": [ + "delimit", + "limited" + ], + "aemns": [ + "amens", + "manes", + "manse", + "means", + "mensa", + "names", + "nemas", + "samen", + "senam" + ], + "cdeiorrt": [ + "creditor", + "director" + ], + "adily": [ + "daily", + "lydia" + ], + "abceh": [ + "bache", + "beach" + ], + "apst": [ + "apts", + "past", + "pats", + "spat", + "stap", + "taps" + ], + "nopu": [ + "noup", + "puno", + "upon" + ], + "deiopr": [ + "dopier", + "period" + ], + "aeehrtw": [ + "weather", + "whereat", + "wreathe" + ], + "amr": [ + "arm", + "mar", + "ram" + ], + "deno": [ + "done", + "node" + ], + "accehilnt": [ + "catchline", + "technical" + ], + "opr": [ + "por", + "pro" + ], + "eginor": [ + "eringo", + "ignore", + "region" + ], + "cdeorr": [ + "corder", + "record" + ], + "cdeorrs": [ + "corders", + "records" + ], + "aacdelnr": [ + "calander", + "calandre", + "calendar", + "landrace" + ], + "cosst": [ + "costs", + "scots" + ], + "aeemnsttt": [ + "statement", + "testament" + ], + "aprst": [ + "parts", + "prats", + "spart", + "sprat", + "strap", + "tarps", + "traps" + ], + "agu": [ + "aug", + "gau" + ], + "eerv": [ + "ever", + "reve", + "veer" + ], + "addlnoosw": [ + "downloads", + "woodlands" + ], + "aelry": [ + "early", + "layer", + "leary", + "relay" + ], + "eilms": [ + "limes", + "melis", + "miles", + "slime", + "smile" + ], + "dnosu": [ + "nodus", + "ounds", + "sound" + ], + "ceeorrsu": [ + "recourse", + "resource" + ], + "eenprst": [ + "penster", + "present", + "repents", + "serpent", + "strepen" + ], + "ago": [ + "ago", + "goa" + ], + "dorw": [ + "drow", + "word" + ], + "apr": [ + "apr", + "par", + "rap" + ], + "einrttw": [ + "twinter", + "written" + ], + "ghinost": [ + "hosting", + "onsight" + ], + "elrsu": [ + "lures", + "luser", + "rules", + "sluer" + ], + "afiln": [ + "alfin", + "final", + "flain" + ], + "adltu": [ + "adult", + "dault", + "dulat" + ], + "ceikstt": [ + "sticket", + "tickets" + ], + "aiv": [ + "iva", + "vai", + "via" + ], + "acehp": [ + "chape", + "cheap", + "peach" + ], + "diks": [ + "disk", + "kids", + "skid" + ], + "eimnstu": [ + "minuets", + "minutes", + "mistune", + "mutines" + ], + "eels": [ + "eels", + "else", + "lees", + "lese", + "seel", + "sele", + "slee" + ], + "ckor": [ + "cork", + "rock" + ], + "adeginr": [ + "degrain", + "deraign", + "deringa", + "gradine", + "grained", + "reading" + ], + "ciopst": [ + "copist", + "coptis", + "optics", + "picots", + "postic", + "topics" + ], + "abd": [ + "abd", + "bad", + "dab" + ], + "ipst": [ + "pist", + "pits", + "spit", + "tips" + ], + "lpsu": [ + "plus", + "puls", + "slup" + ], + "ceorv": [ + "corve", + "cover" + ], + "deit": [ + "deti", + "diet", + "dite", + "edit", + "tide", + "tied" + ], + "ceenprt": [ + "percent", + "precent" + ], + "afst": [ + "fast", + "fats", + "saft" + ], + "ceht": [ + "chet", + "echt", + "etch", + "tche", + "tech" + ], + "eemt": [ + "meet", + "mete", + "teem" + ], + "afr": [ + "arf", + "far", + "fra" + ], + "aelpry": [ + "parley", + "pearly", + "player", + "rapely", + "replay" + ], + "aegmnry": [ + "germany", + "mangery" + ], + "amnotu": [ + "amount", + "moutan", + "outman" + ], + "eefl": [ + "feel", + "fele", + "flee", + "leef" + ], + "abkn": [ + "bank", + "knab", + "nabk" + ], + "ikrs": [ + "irks", + "kris", + "risk" + ], + "adels": [ + "dales", + "deals", + "lades", + "lased", + "leads", + "slade" + ], + "aiorsuv": [ + "saviour", + "various" + ], + "dorsw": [ + "sword", + "words" + ], + "notw": [ + "nowt", + "town", + "wont" + ], + "aehrt": [ + "earth", + "hater", + "heart", + "herat", + "rathe" + ], + "cdeeeirv": [ + "deceiver", + "received" + ], + "inopst": [ + "instop", + "pintos", + "piston", + "pitons", + "points", + "postin" + ], + "aacemr": [ + "acream", + "camera", + "mareca" + ], + "osty": [ + "toys", + "tosy" + ], + "deeegirrst": [ + "deregister", + "registered" + ], + "acelr": [ + "carle", + "ceral", + "clare", + "clear", + "lacer" + ], + "fglo": [ + "flog", + "golf" + ], + "adimno": [ + "amidon", + "daimon", + "domain", + "domina" + ], + "acehprt": [ + "chapter", + "patcher", + "repatch" + ], + "aekms": [ + "kames", + "makes", + "samek" + ], + "deiw": [ + "wide", + "wied" + ], + "aaegmnr": [ + "gearman", + "manager" + ], + "iinoopst": [ + "position", + "sopition" + ], + "orst": [ + "orts", + "rots", + "sort", + "stor", + "tors" + ], + "delmos": [ + "models", + "seldom", + "somdel" + ], + "acehilm": [ + "michael", + "micheal" + ], + "acess": [ + "cases", + "casse", + "scase" + ], + "epst": [ + "pest", + "pets", + "sept", + "spet", + "step" + ], + "eilmps": [ + "impels", + "mespil", + "simple" + ], + "enno": [ + "neon", + "none" + ], + "eeilrssw": [ + "weirless", + "wireless" + ], + "ceeilns": [ + "license", + "selenic", + "silence" + ], + "alpu": [ + "paul", + "upla" + ], + "aekl": [ + "kale", + "lake", + "leak" + ], + "ehlow": [ + "howel", + "whole" + ], + "aelrt": [ + "alert", + "alter", + "artel", + "later", + "ratel", + "retal", + "taler", + "telar" + ], + "abcis": [ + "bacis", + "basic" + ], + "hossw": [ + "shows", + "swosh" + ], + "dehmot": [ + "method", + "mothed" + ], + "cemorsstu": [ + "costumers", + "customers" + ], + "eenoprss": [ + "pessoner", + "response" + ], + "acceiprt": [ + "accipter", + "practice" + ], + "efir": [ + "fire", + "reif", + "rife" + ], + "adhiloy": [ + "hyaloid", + "hyoidal", + "holiday" + ], + "acht": [ + "cath", + "chat", + "tach" + ], + "aglno": [ + "along", + "anglo", + "gonal", + "lango", + "logan", + "longa", + "nogal" + ], + "agmno": [ + "among", + "mango", + "ngoma" + ], + "adeht": [ + "death", + "hated" + ], + "deeps": [ + "deeps", + "pedes", + "speed" + ], + "ceinorstu": [ + "countries", + "cretinous", + "neurotics" + ], + "loss": [ + "loss", + "sols" + ], + "acef": [ + "cafe", + "face" + ], + "cdinostu": [ + "conduits", + "discount", + "noctuids" + ], + "acdeert": [ + "catered", + "cedrate", + "cerated", + "created", + "reacted" + ], + "bit": [ + "bit", + "tib" + ], + "aceeinrs": [ + "cerasein", + "increase", + "resiance" + ], + "adeeirstv": [ + "advertise", + "derivates" + ], + "abes": [ + "base", + "besa", + "sabe", + "seba" + ], + "aenr": [ + "anre", + "aren", + "arne", + "earn", + "nare", + "near", + "rane" + ], + "ffstu": [ + "stuff", + "tuffs" + ], + "aegorst": [ + "garotes", + "orgeats", + "storage", + "tagsore" + ], + "dgino": [ + "dingo", + "doing", + "gondi", + "gonid" + ], + "alnos": [ + "loans", + "salon", + "sloan", + "solan" + ], + "ehoss": [ + "hoses", + "shoes" + ], + "aenrtu": [ + "aunter", + "auntre", + "nature" + ], + "deorrs": [ + "dorser", + "orders" + ], + "nrtu": [ + "runt", + "trun", + "turn" + ], + "enost": [ + "notes", + "onset", + "seton", + "steno", + "stone", + "tenso", + "tones" + ], + "gikn": [ + "gink", + "king" + ], + "admnoy": [ + "amydon", + "dynamo", + "monday" + ], + "cips": [ + "pics", + "spic" + ], + "aellorv": [ + "allover", + "overall" + ], + "aby": [ + "aby", + "bay" + ], + "eens": [ + "ense", + "esne", + "nese", + "seen", + "snee" + ], + "aelprsy": [ + "asperly", + "parleys", + "parsley", + "pyrales", + "players", + "replays", + "sparely", + "splayer" + ], + "eeginn": [ + "engine", + "ingene" + ], + "oprt": [ + "port", + "trop" + ], + "aegilnor": [ + "geraniol", + "regional" + ], + "aderstt": [ + "started", + "tetrads" + ], + "abr": [ + "abr", + "arb", + "bar", + "bra", + "rab" + ], + "eisvw": [ + "swive", + "views", + "wives" + ], + "bdelou": [ + "dobule", + "double" + ], + "dgo": [ + "dog", + "god" + ], + "ceenrs": [ + "censer", + "scerne", + "screen", + "secern" + ], + "noos": [ + "oons", + "soon" + ], + "eilns": [ + "elsin", + "lenis", + "liens", + "lines", + "niels", + "silen", + "sline" + ], + "ceinnotu": [ + "contineu", + "continue" + ], + "acorss": [ + "across", + "oscars" + ], + "einprrt": [ + "printer", + "reprint" + ], + "eru": [ + "rue", + "ure" + ], + "dimn": [ + "midn", + "mind" + ], + "ceeilnost": [ + "elections", + "selection" + ], + "acinos": [ + "casino", + "sonica" + ], + "lost": [ + "lost", + "lots", + "slot" + ], + "ortu": [ + "outr", + "rout", + "toru", + "tour" + ], + "emnu": [ + "menu", + "neum" + ], + "ehop": [ + "hope", + "peho" + ], + "eilrsv": [ + "ervils", + "livers", + "livres", + "silver", + "sliver" + ], + "deiins": [ + "deisin", + "indies", + "inside" + ], + "aemrtu": [ + "mature", + "tamure" + ], + "elor": [ + "lore", + "orle", + "role" + ], + "acem": [ + "acme", + "came", + "mace" + ], + "aceinrt": [ + "centiar", + "ceratin", + "certain", + "citrean", + "creatin", + "crinate", + "nacrite", + "nectria" + ], + "rsu": [ + "rus", + "sur", + "urs" + ], + "elorw": [ + "lower", + "owler", + "rowel" + ], + "mno": [ + "mon", + "nom" + ], + "cmo": [ + "com", + "moc" + ], + "efin": [ + "enif", + "fine", + "neif", + "nife" + ], + "ags": [ + "asg", + "gas", + "sag" + ], + "isx": [ + "six", + "xis" + ], + "bhsu": [ + "bush", + "hubs" + ], + "acdeiv": [ + "advice", + "vedaic" + ], + "aceerr": [ + "career", + "carree" + ], + "aiilmrty": [ + "limitary", + "military" + ], + "aelnrt": [ + "altern", + "antler", + "learnt", + "rental", + "ternal" + ], + "eenst": [ + "steen", + "teens", + "tense" + ], + "ast": [ + "ast", + "sat", + "sta", + "tas" + ], + "bdi": [ + "bid", + "dib" + ], + "dikn": [ + "dink", + "kind" + ], + "eellrss": [ + "resells", + "sellers" + ], + "abcel": [ + "cable", + "caleb" + ], + "aelsuv": [ + "alveus", + "avulse", + "values" + ], + "cgimno": [ + "coming", + "gnomic" + ], + "abeilns": [ + "albines", + "bensail", + "lesbian" + ], + "acehimn": [ + "chimane", + "machine" + ], + "gloo": [ + "golo", + "gool", + "logo" + ], + "cein": [ + "cine", + "nice" + ], + "ceors": [ + "ceros", + "cores", + "corse", + "crose", + "score" + ], + "ceilnt": [ + "client", + "lentic" + ], + "enrrstu": [ + "returns", + "turners" + ], + "aacilpt": [ + "capital", + "palatic" + ], + "aelmps": [ + "maples", + "sample" + ], + "enst": [ + "nest", + "nets", + "sent", + "sten", + "tens" + ], + "adel": [ + "dale", + "deal", + "lade", + "lead", + "leda" + ], + "ccehio": [ + "choice", + "echoic" + ], + "entw": [ + "newt", + "went" + ], + "ceorssu": [ + "courses", + "rescous", + "secours", + "sources", + "sucrose" + ], + "cemnorsu": [ + "consumer", + "cornmuse", + "mucrones" + ], + "aioprrt": [ + "airport", + "paritor" + ], + "airstt": [ + "artist", + "strait", + "strati", + "traist", + "traits" + ], + "deiostu": [ + "outside", + "tedious" + ], + "demo": [ + "demo", + "dome", + "mode", + "moed" + ], + "adeis": [ + "aides", + "aside", + "ideas", + "sadie" + ], + "emmrsu": [ + "rummes", + "summer" + ], + "dew": [ + "dew", + "wed" + ], + "eprsu": [ + "purse", + "resup", + "sprue", + "super" + ], + "aelm": [ + "alem", + "alme", + "amel", + "lame", + "leam", + "male", + "meal", + "mela" + ], + "aemrtt": [ + "matter", + "mettar" + ], + "cmostu": [ + "custom", + "muscot" + ], + "almost": [ + "almost", + "smalto", + "stomal" + ], + "koot": [ + "koto", + "toko", + "took" + ], + "aains": [ + "asian", + "naias", + "sanai" + ], + "deiort": [ + "dotier", + "editor", + "rioted", + "triode" + ], + "acesu": [ + "cause", + "sauce" + ], + "aeilnoptt": [ + "peltation", + "potential" + ], + "gnos": [ + "nogs", + "snog", + "song" + ], + "aelt": [ + "atle", + "laet", + "late", + "leat", + "tael", + "tale", + "teal", + "tela" + ], + "adei": [ + "aide", + "deia", + "eadi", + "idea" + ], + "moors": [ + "moors", + "rooms" + ], + "accenr": [ + "cancer", + "crance" + ], + "aenors": [ + "arseno", + "reason", + "senora" + ], + "loot": [ + "loot", + "loto", + "tool" + ], + "aenrsw": [ + "answer", + "resawn" + ], + "eopprsu": [ + "peropus", + "purpose" + ], + "bde": [ + "bde", + "bed", + "deb" + ], + "aeginoprt": [ + "operating", + "pignorate" + ], + "amps": [ + "amps", + "maps", + "pams", + "samp" + ], + "aginrst": [ + "gastrin", + "gratins", + "ratings", + "staring" + ], + "aglss": [ + "glass", + "slags" + ], + "etu": [ + "tue", + "ute" + ], + "himst": [ + "isthm", + "smith" + ], + "ahknt": [ + "hankt", + "thank" + ], + "eeehlnopt": [ + "phenetole", + "telephone" + ], + "oprst": [ + "ports", + "prost", + "sport", + "sprot", + "strop" + ], + "adery": [ + "deary", + "deray", + "yeard", + "rayed", + "ready" + ], + "aailmn": [ + "almain", + "animal", + "lamina", + "manila" + ], + "ceersu": [ + "cereus", + "ceruse", + "cesure", + "recuse", + "rescue", + "secure" + ], + "aeinooprst": [ + "anisotrope", + "operations" + ], + "ilmpsy": [ + "limpsy", + "simply" + ], + "achiinrst": [ + "christian", + "christina", + "trichinas" + ], + "addennrstu": [ + "understand", + "unstranded" + ], + "inoopt": [ + "option", + "potion" + ], + "aemrst": [ + "armets", + "martes", + "master", + "maters", + "matres", + "ramets", + "remast", + "stream", + "tamers" + ], + "aelnrst": [ + "antlers", + "rentals", + "saltern", + "slanter", + "starnel", + "sternal" + ], + "aes": [ + "aes", + "ase", + "sae", + "sea" + ], + "bdloo": [ + "blood", + "boldo" + ], + "behilprsu": [ + "publisher", + "republish" + ], + "aint": [ + "aint", + "anti", + "inta", + "tain", + "tina" + ], + "aenprst": [ + "arpents", + "enrapts", + "entraps", + "parents", + "pastern", + "trepans" + ], + "aikno": [ + "ikona", + "konia" + ], + "acimpt": [ + "campit", + "impact" + ], + "cehiknt": [ + "kitchen", + "thicken" + ], + "aacilnor": [ + "carolina", + "colnaria", + "conarial" + ], + "eeiopprrst": [ + "peripteros", + "properties" + ], + "hips": [ + "hips", + "phis", + "pish", + "ship" + ], + "enorsw": [ + "owners", + "resown", + "rowens", + "worsen" + ], + "adeeiss": [ + "disease", + "seaside" + ], + "ailty": [ + "ality", + "italy", + "laity", + "taily" + ], + "ceefprt": [ + "perfect", + "prefect" + ], + "ahir": [ + "ahir", + "hair" + ], + "abiss": [ + "absis", + "basis", + "bassi", + "isbas" + ], + "ceiist": [ + "cities", + "iciest" + ], + "acdeinst": [ + "disenact", + "distance" + ], + "eert": [ + "reet", + "rete", + "teer", + "tree" + ], + "eeprt": [ + "erept", + "peert", + "peter", + "petre" + ], + "eenrsu": [ + "ensuer", + "ensure", + "enures", + "unsere" + ], + "hstu": [ + "hust", + "huts", + "shut", + "thus", + "tush" + ], + "aertx": [ + "extra", + "retax", + "taxer" + ], + "degisu": [ + "guides", + "guised" + ], + "eiqtu": [ + "quiet", + "quite" + ], + "cdeeelst": [ + "deselect", + "selected" + ], + "boy": [ + "boy", + "yob" + ], + "ehors": [ + "heros", + "hoers", + "horse", + "shoer", + "shore" + ], + "eotv": [ + "veto", + "voet", + "vote" + ], + "adforrw": [ + "forward", + "froward" + ], + "eflorsw": [ + "flowers", + "fowlers", + "reflows", + "wolfers" + ], + "arsst": [ + "stars", + "trass", + "tsars" + ], + "ilsst": [ + "lists", + "silts", + "slits" + ], + "enorw": [ + "owner", + "reown", + "rewon", + "rowen" + ], + "aeilrt": [ + "aliter", + "lirate", + "retail", + "retial", + "tailer" + ], + "aailmns": [ + "animals", + "laminas", + "manilas" + ], + "cdeilrty": [ + "directly", + "tridecyl" + ], + "aswy": [ + "yaws", + "sway", + "ways" + ], + "nos": [ + "nos", + "ons", + "son" + ], + "elru": [ + "lure", + "rule" + ], + "acm": [ + "cam", + "mac" + ], + "ghinosu": [ + "housing", + "hugonis" + ], + "aekst": [ + "keats", + "skate", + "skeat", + "stake", + "steak", + "takes", + "teaks" + ], + "gmt": [ + "mgt", + "mtg" + ], + "ginrty": [ + "tyring", + "trigyn", + "trying" + ], + "ehmort": [ + "mother", + "thermo" + ], + "cddeeinors": [ + "considered", + "deconsider" + ], + "dlot": [ + "dolt", + "told" + ], + "inptu": [ + "input", + "punti" + ], + "eeft": [ + "feet", + "fete" + ], + "aegnt": [ + "agent", + "etang" + ], + "bin": [ + "bin", + "nib" + ], + "demnor": [ + "modern", + "morned", + "normed", + "rodmen" + ], + "einors": [ + "irones", + "noires", + "nosier", + "rosine", + "senior", + "soneri" + ], + "adeilnr": [ + "ireland", + "lindera" + ], + "aceghint": [ + "cheating", + "teaching" + ], + "door": [ + "door", + "odor", + "oord", + "ordo", + "rood" + ], + "adgnr": [ + "drang", + "grand" + ], + "eginstt": [ + "setting", + "testing" + ], + "ailrt": [ + "litra", + "trail", + "trial" + ], + "aceghr": [ + "charge", + "creagh" + ], + "instu": [ + "inust", + "sintu", + "suint", + "tunis", + "unist", + "units" + ], + "adeinst": [ + "destain", + "detains", + "instead", + "sainted", + "satined", + "stained" + ], + "cloo": [ + "cool", + "loco" + ], + "eortw": [ + "rowet", + "rowte", + "tower", + "wrote" + ], + "eeinrt": [ + "entier", + "entire", + "nerite", + "triene" + ], + "adegiln": [ + "adeling", + "aligned", + "dealing", + "leading" + ], + "aelmt": [ + "amlet", + "metal" + ], + "efinsst": [ + "fitness", + "infests" + ], + "aais": [ + "aias", + "asia" + ], + "essu": [ + "sues", + "uses" + ], + "opttuu": [ + "output", + "putout" + ], + "aeegrrt": [ + "greater", + "regrate", + "terrage" + ], + "airsstt": [ + "artists", + "straits", + "tsarist" + ], + "eilnoorstu": [ + "resolution", + "solutioner" + ], + "eemss": [ + "messe", + "seems", + "semes" + ], + "apss": [ + "asps", + "pass", + "saps", + "spas" + ], + "aeilnorst": [ + "lairstone", + "orientals", + "orleanist", + "relations", + "serotinal", + "tensorial" + ], + "rsttu": [ + "strut", + "sturt", + "trust" + ], + "anv": [ + "avn", + "nav", + "van" + ], + "acinnost": [ + "actinons", + "canonist", + "contains", + "sanction", + "santonic", + "sonantic" + ], + "einosss": [ + "essoins", + "osseins", + "session", + "sissone" + ], + "ilmtu": [ + "multi", + "tumli" + ], + "aacinotv": [ + "octavian", + "octavina", + "vacation" + ], + "ikns": [ + "inks", + "kins", + "sink", + "skin" + ], + "eprv": [ + "perv", + "prev" + ], + "ads": [ + "ads", + "das", + "sad" + ], + "amry": [ + "army", + "yarm", + "mary", + "myra" + ], + "cdeeeptx": [ + "excepted", + "expected" + ], + "ginr": [ + "girn", + "grin", + "ring" + ], + "adegr": [ + "edgar", + "gader", + "garde", + "grade", + "raged" + ], + "opp": [ + "opp", + "pop" + ], + "efilrt": [ + "fertil", + "filter", + "filtre", + "lifter", + "relift", + "trifle" + ], + "eglnor": [ + "longer", + "relong" + ], + "int": [ + "int", + "nit", + "tin" + ], + "aelnp": [ + "alpen", + "nepal", + "panel", + "penal", + "plane", + "plena" + ], + "aegmnr": [ + "engram", + "german", + "manger", + "ragmen" + ], + "adefltu": [ + "default", + "faulted" + ], + "eeiqrru": [ + "querier", + "require" + ], + "bosy": [ + "boys", + "yobs", + "sybo" + ], + "deep": [ + "deep", + "depe", + "peed" + ], + "allosw": [ + "allows", + "sallow", + "swallo" + ], + "erst": [ + "erst", + "rest", + "rets", + "sert", + "ster", + "stre", + "tres" + ], + "einoprt": [ + "pointer", + "protein", + "pterion", + "repoint", + "tropein", + "tropine" + ], + "deeoprrt": [ + "deporter", + "reported" + ], + "loop": [ + "loop", + "polo", + "pool" + ], + "ciilopst": [ + "colpitis", + "politics", + "psilotic" + ], + "abdors": [ + "adsorb", + "boards", + "broads", + "dobras" + ], + "aeiprst": [ + "parties", + "pastier", + "piaster", + "piastre", + "pirates", + "raspite", + "spirate", + "tapiser", + "traipse" + ], + "eey": [ + "eye", + "yee" + ], + "adeeelrs": [ + "released", + "resealed" + ], + "aegst": [ + "gates", + "geast", + "getas", + "stage" + ], + "aegrtt": [ + "gatter", + "target" + ], + "ceeptx": [ + "except", + "expect" + ], + "bsu": [ + "bus", + "sub" + ], + "abemy": [ + "beamy", + "embay", + "maybe" + ], + "acelps": [ + "places", + "scapel" + ], + "ainps": [ + "nipas", + "pains", + "pians", + "pinas", + "pisan", + "sapin", + "spain", + "spina" + ], + "cet": [ + "cte", + "etc", + "tec" + ], + "einrtw": [ + "twiner", + "winter" + ], + "eeprrssu": [ + "perusers", + "pressure" + ], + "ceor": [ + "cero", + "core" + ], + "abekr": [ + "baker", + "brake", + "break", + "kebar" + ], + "eopprssu": [ + "purposes", + "supposer" + ], + "ghhoorttuu": [ + "outthrough", + "throughout" + ], + "esst": [ + "sets", + "tess" + ], + "acden": [ + "acned", + "caned", + "dance", + "decan" + ], + "efilst": [ + "filets", + "fistle", + "fliest", + "flites", + "itself", + "stifle" + ], + "aepprs": [ + "papers", + "sapper" + ], + "agilnpy": [ + "playing", + "plygain" + ], + "adeerr": [ + "dearer", + "reader", + "reared", + "redare", + "redear", + "reread" + ], + "ailrtuv": [ + "virtual", + "vitular" + ], + "aenrssw": [ + "answers", + "rawness" + ], + "enrt": [ + "entr", + "rent", + "tern" + ], + "als": [ + "als", + "las", + "sal", + "sla" + ], + "eemort": [ + "emoter", + "meteor", + "remote" + ], + "aelpp": [ + "appel", + "apple", + "pepla" + ], + "adegginrr": [ + "regarding", + "regrading" + ], + "imn": [ + "min", + "nim" + ], + "eemorv": [ + "evermo", + "remove" + ], + "adi": [ + "aid", + "dia", + "ida" + ], + "host": [ + "host", + "hots", + "shot", + "soth", + "thos", + "tosh" + ], + "aceehrst": [ + "cheaters", + "hectares", + "recheats", + "teachers" + ], + "bins": [ + "bins", + "nibs", + "snib" + ], + "aalmnu": [ + "alumna", + "manual" + ], + "aegnst": [ + "agents", + "estang", + "stagne" + ], + "acdeeinrs": [ + "ardencies", + "ecardines", + "increased" + ], + "aeiprr": [ + "pairer", + "rapier", + "repair" + ], + "afir": [ + "fair", + "fiar", + "raif" + ], + "eelst": [ + "leets", + "leste", + "sleet", + "slete", + "steel", + "stele", + "teles" + ], + "defix": [ + "defix", + "fixed" + ], + "gnorw": [ + "grown", + "wrong" + ], + "aiprs": [ + "pairs", + "paris", + "parsi", + "sarip", + "spair", + "spira" + ], + "egst": [ + "gest", + "gets", + "steg", + "stge", + "tegs" + ], + "ceorst": [ + "corset", + "cortes", + "coster", + "croset", + "escort", + "recost", + "rectos", + "scoter", + "sector" + ], + "eeiqrrsu": [ + "queriers", + "requires" + ], + "aft": [ + "aft", + "fat" + ], + "aefhrt": [ + "father", + "freath", + "hafter", + "trefah" + ], + "cceeilrt": [ + "electric", + "lectrice" + ], + "eoqstu": [ + "quotes", + "toques" + ], + "adde": [ + "dade", + "dead", + "deda", + "edda" + ], + "ceeprst": [ + "recepts", + "respect", + "scepter", + "sceptre", + "specter", + "spectre" + ], + "eikm": [ + "miek", + "mike" + ], + "pst": [ + "pst", + "pts", + "spt", + "tps", + "tsp" + ], + "hortw": [ + "rowth", + "throw", + "whort", + "worth", + "wroth" + ], + "cdeeoprrsu": [ + "procedures", + "reproduces" + ], + "oopr": [ + "poor", + "proo", + "roop" + ], + "aceehrt": [ + "cheater", + "hectare", + "rechate", + "recheat", + "reteach", + "teacher" + ], + "eesy": [ + "eyes", + "yees", + "yese" + ], + "ekorrsw": [ + "reworks", + "workers" + ], + "afmr": [ + "farm", + "fram" + ], + "mot": [ + "mot", + "tom" + ], + "aceeirtv": [ + "creative", + "reactive" + ], + "acost": [ + "acost", + "actos", + "ascot", + "catso", + "coast", + "coats", + "costa", + "tacos", + "tacso", + "tasco", + "tosca" + ], + "aeegr": [ + "aeger", + "agree", + "eager", + "eagre", + "ragee" + ], + "aehr": [ + "hare", + "hear", + "hera", + "rhea" + ], + "aceerrs": [ + "careers", + "creaser", + "searcer" + ], + "egos": [ + "egos", + "goes", + "sego" + ], + "del": [ + "del", + "eld", + "led" + ], + "afn": [ + "fan", + "naf" + ], + "efmorr": [ + "former", + "reform" + ], + "aeegillrs": [ + "allergies", + "galleries" + ], + "dei": [ + "dei", + "die", + "ide" + ], + "deeenprst": [ + "presented", + "pretensed", + "repetends" + ], + "aflt": [ + "flat", + "laft" + ], + "flow": [ + "flow", + "fowl", + "wolf" + ], + "aceegins": [ + "agencies", + "agenesic", + "genesiac" + ], + "aenprt": [ + "arpent", + "enrapt", + "entrap", + "panter", + "parent", + "parten", + "pretan", + "pterna", + "trepan" + ], + "acghiimn": [ + "michigan", + "minhagic" + ], + "acels": [ + "alces", + "alecs", + "casel", + "claes", + "laces", + "scale" + ], + "adnst": [ + "dasnt", + "stand" + ], + "cemnooy": [ + "economy", + "monoecy" + ], + "eghhist": [ + "eighths", + "heights", + "highest" + ], + "aefmr": [ + "frame", + "fream" + ], + "aeeglns": [ + "angeles", + "senegal" + ], + "ahpt": [ + "path", + "phat" + ], + "aaailnrstu": [ + "australian", + "saturnalia" + ], + "cefhi": [ + "chief", + "fiche" + ], + "adeilt": [ + "detail", + "dietal", + "dilate", + "edital", + "tailed" + ], + "alsw": [ + "awls", + "laws", + "slaw" + ], + "acdeghn": [ + "changed", + "ganched" + ], + "ept": [ + "pet", + "pte" + ], + "adehr": [ + "derah", + "hared", + "heard", + "rheda" + ], + "aceln": [ + "ancle", + "canel", + "clean", + "lance", + "lenca" + ], + "aacfinr": [ + "african", + "francia" + ], + "guy": [ + "guy", + "yug" + ], + "eilstt": [ + "stilet", + "titles" + ], + "aeelnrtv": [ + "levanter", + "relevant", + "revelant" + ], + "ccennot": [ + "concent", + "connect" + ], + "bbeil": [ + "bible", + "blibe" + ], + "cpu": [ + "cpu", + "cup" + ], + "abekst": [ + "basket", + "betask" + ], + "addemn": [ + "damned", + "ddname", + "demand", + "madden" + ], + "eistu": [ + "etuis", + "suite" + ], + "aeinnottt": [ + "attention", + "tentation" + ], + "ikps": [ + "kips", + "pisk", + "skip", + "spik" + ], + "acinotu": [ + "auction", + "caution" + ], + "aegr": [ + "ager", + "agre", + "areg", + "gare", + "gear", + "rage" + ], + "eel": [ + "eel", + "lee" + ], + "acehlrs": [ + "charles", + "clasher", + "larches" + ], + "ainnot": [ + "anoint", + "nation" + ], + "fimr": [ + "firm", + "frim" + ], + "eensv": [ + "evens", + "neves", + "seven" + ], + "delor": [ + "lored", + "older" + ], + "iiillnos": [ + "illinois", + "illision" + ], + "eeelmnst": [ + "elements", + "steelmen" + ], + "eorrst": [ + "resort", + "retros", + "roster", + "sorter", + "storer" + ], + "admnor": [ + "random", + "rodman" + ], + "eiimnrst": [ + "interims", + "minister", + "misinter" + ], + "kloos": [ + "kolos", + "looks" + ], + "cdeiinorst": [ + "directions", + "discretion", + "soricident" + ], + "adginrt": [ + "darting", + "trading" + ], + "eforst": [ + "fetors", + "forest", + "forset", + "fortes", + "foster", + "fstore", + "softer" + ], + "aclls": [ + "calls", + "scall" + ], + "ehosw": [ + "howes", + "whose" + ], + "celopu": [ + "couple", + "culpeo" + ], + "deginn": [ + "ending", + "ginned" + ], + "ceilnst": [ + "clients", + "lentisc", + "scintle", + "stencil" + ], + "acinost": [ + "actions", + "atonics", + "cations" + ], + "eilnst": [ + "enlist", + "inlets", + "listen", + "silent", + "slinte", + "tinsel" + ], + "adekn": [ + "danke", + "kande", + "knead", + "naked" + ], + "aglo": [ + "gaol", + "goal", + "gola", + "olga" + ], + "dlos": [ + "dols", + "olds", + "slod", + "sold" + ], + "aekmrst": [ + "estmark", + "markets" + ], + "elostw": [ + "lowest", + "owlets", + "towels" + ], + "eilsv": [ + "elvis", + "evils", + "levis", + "lives", + "slive", + "veils" + ], + "aeehlrt": [ + "haltere", + "leather", + "tarheel" + ], + "deeeimnrt": [ + "determine", + "intermede" + ], + "almp": [ + "lamp", + "palm" + ], + "bbo": [ + "bob", + "obb" + ], + "aehpprs": [ + "perhaps", + "prehaps" + ], + "aeeillstt": [ + "satellite", + "telestial" + ], + "esstt": [ + "stets", + "tests" + ], + "emt": [ + "met", + "tem" + ], + "ainp": [ + "nipa", + "pain", + "pani", + "pian", + "pina" + ], + "eginsstt": [ + "settings", + "testings" + ], + "beruy": [ + "buyer", + "rebuy" + ], + "aeilsy": [ + "easily", + "elysia", + "sailye" + ], + "alor": [ + "lora", + "oral" + ], + "dfor": [ + "drof", + "ford" + ], + "eoprst": [ + "poster", + "presto", + "repost", + "respot", + "stoper", + "topers", + "tropes" + ], + "deeg": [ + "edge", + "geed" + ], + "oort": [ + "root", + "roto", + "toro" + ], + "adhilosy": [ + "hyaloids", + "holidays" + ], + "cei": [ + "cie", + "ice" + ], + "eeilprs": [ + "replies", + "spieler" + ], + "abell": [ + "bella", + "label" + ], + "ces": [ + "esc", + "sec" + ], + "cdeemmnor": [ + "commender", + "recommend" + ], + "acnno": [ + "ancon", + "canon" + ], + "aestw": [ + "awest", + "etwas", + "sweat", + "tawse", + "twaes", + "waste" + ], + "eimntu": [ + "minuet", + "minute", + "munite", + "mutine", + "untime" + ], + "deioprrv": [ + "overdrip", + "provider" + ], + "ailnoopt": [ + "antipolo", + "antipool", + "optional" + ], + "acdiinorty": [ + "dictionary", + "indicatory" + ], + "cdlo": [ + "clod", + "cold" + ], + "achir": [ + "chair", + "chria" + ], + "aehps": [ + "ephas", + "heaps", + "pesah", + "phase", + "shape" + ], + "defils": [ + "felids", + "fields" + ], + "abg": [ + "bag", + "gab" + ], + "eelrstt": [ + "letters", + "settler", + "sterlet", + "trestle" + ], + "hirst": [ + "hirst", + "shirt" + ], + "cdeinnotu": [ + "continued", + "unnoticed" + ], + "ceimr": [ + "crime", + "merci" + ], + "aberst": [ + "barest", + "baster", + "bestar", + "breast", + "restab", + "tabers", + "trabes" + ], + "bim": [ + "bim", + "ibm", + "mib" + ], + "egiilnor": [ + "ligroine", + "religion", + "reoiling" + ], + "acilm": [ + "claim", + "clima", + "malic" + ], + "eiimnoprss": [ + "impression", + "permission" + ], + "achpt": [ + "chapt", + "pacht", + "patch" + ], + "aeht": [ + "ahet", + "eath", + "haet", + "hate", + "heat", + "thae", + "thea" + ], + "aeemrssu": [ + "measures", + "reassume" + ], + "aeeginnort": [ + "generation", + "renegation" + ], + "imss": [ + "isms", + "miss", + "sims" + ], + "accehilm": [ + "alchemic", + "chemical" + ], + "akst": [ + "kats", + "skat", + "task" + ], + "efhilms": [ + "flemish", + "himself" + ], + "nor": [ + "nor", + "ron" + ], + "abeeln": [ + "baleen", + "enable" + ], + "aanst": [ + "antas", + "nasat", + "santa", + "satan" + ], + "dim": [ + "dim", + "mid" + ], + "adeelr": [ + "dealer", + "leader", + "redeal", + "relade", + "relead" + ], + "aeilrs": [ + "ariels", + "israel", + "laiser", + "relais", + "resail", + "sailer", + "serail", + "serial" + ], + "fost": [ + "soft", + "stof" + ], + "eerrssv": [ + "servers", + "versers" + ], + "aelno": [ + "alone", + "anole", + "olena" + ], + "eegimnst": [ + "gisement", + "meetings" + ], + "aainorz": [ + "arizona", + "azorian", + "zonaria" + ], + "eeinrsstt": [ + "insetters", + "interests", + "resistent", + "sternites", + "triteness" + ], + "eflu": [ + "flue", + "fuel" + ], + "aklw": [ + "lawk", + "walk" + ], + "aaiilnt": [ + "antilia", + "italian" + ], + "ainst": [ + "antis", + "saint", + "sanit", + "satin", + "stain", + "tains" + ], + "eors": [ + "eros", + "ores", + "roes", + "rose", + "seor", + "sero", + "sore" + ], + "aegmnrtu": [ + "argentum", + "argument" + ], + "aceginrt": [ + "antergic", + "argentic", + "catering", + "citrange", + "creating", + "reacting" + ], + "deioprrsv": [ + "disprover", + "providers" + ], + "adegpru": [ + "guepard", + "upgrade" + ], + "acfort": [ + "factor", + "forcat" + ], + "aeenrst": [ + "earnest", + "eastern", + "nearest" + ], + "acinostu": [ + "acontius", + "anticous", + "auctions", + "cautions" + ], + "eeinrst": [ + "entires", + "entries", + "trienes" + ], + "adest": [ + "dates", + "sated", + "sedat", + "stade", + "stead", + "tsade" + ], + "adeeegnrt": [ + "generated", + "greatened", + "renegated" + ], + "eimpr": [ + "imper", + "prime" + ], + "iilmt": [ + "limit", + "milit" + ], + "abegn": [ + "bagne", + "bange", + "began" + ], + "epsst": [ + "pests", + "septs", + "steps" + ], + "hopss": [ + "phoss", + "shops", + "sophs", + "sposh" + ], + "defimnor": [ + "foremind", + "informed" + ], + "abnru": [ + "buran", + "unbar", + "urban" + ], + "deorst": [ + "doters", + "sorted", + "stored", + "strode" + ], + "orstu": [ + "roust", + "routs", + "rusot", + "stour", + "sutor", + "torus", + "tours" + ], + "adlo": [ + "alod", + "dola", + "load", + "odal" + ], + "ablor": [ + "balor", + "bolar", + "boral", + "labor", + "lobar" + ], + "adimn": [ + "admin", + "dimna", + "mandi", + "manid" + ], + "agst": [ + "agst", + "gast", + "gats", + "stag", + "tags" + ], + "dopr": [ + "dorp", + "drop", + "prod" + ], + "dilos": [ + "dilos", + "diols", + "idols", + "lidos", + "sloid", + "soldi", + "solid" + ], + "aeeinnoprstt": [ + "penetrations", + "presentation" + ], + "aaegglnsu": [ + "languages", + "slanguage" + ], + "abceem": [ + "became", + "embace" + ], + "aegnor": [ + "onager", + "orange" + ], + "eehmt": [ + "meeth", + "theme" + ], + "aacgimnp": [ + "campaign", + "pangamic" + ], + "aeimnr": [ + "airmen", + "armine", + "ermani", + "marine", + "remain" + ], + "iiprst": [ + "pitris", + "spirit" + ], + "acilms": [ + "claims", + "miscal" + ], + "eems": [ + "emes", + "mese", + "seem", + "seme", + "smee" + ], + "aaffirs": [ + "affairs", + "raffias" + ], + "chotu": [ + "chout", + "couth", + "thuoc", + "touch" + ], + "ddeeinnt": [ + "indented", + "intended" + ], + "aglos": [ + "gaols", + "goals" + ], + "ehir": [ + "heir", + "hire" + ], + "ceeilnot": [ + "coteline", + "election" + ], + "eersv": [ + "serve", + "sever", + "veers", + "verse" + ], + "aenorss": [ + "reasons", + "senoras" + ], + "acgim": [ + "gamic", + "magic" + ], + "mnotu": [ + "montu", + "mount", + "notum" + ], + "amrst": [ + "marts", + "smart", + "stram", + "trams" + ], + "aegv": [ + "gave", + "vage", + "vega" + ], + "enos": [ + "enos", + "eons", + "noes", + "nose", + "ones", + "sone" + ], + "ailnt": [ + "altin", + "latin" + ], + "cdeefiirt": [ + "certified", + "rectified" + ], + "aaegmn": [ + "agname", + "manage" + ], + "aknr": [ + "karn", + "knar", + "kran", + "krna", + "nark", + "rank" + ], + "egnoor": [ + "oregon", + "orgone", + "orogen" + ], + "eeelmnt": [ + "element", + "leetmen", + "telemen" + ], + "bhirt": [ + "birth", + "brith" + ], + "abesu": [ + "abuse", + "beaus" + ], + "eeqrsstu": [ + "questers", + "requests" + ], + "aaeeprst": [ + "asperate", + "separate" + ], + "cdeeoprru": [ + "procedure", + "reproduce" + ], + "adeehilprs": [ + "dealership", + "leadership" + ], + "abelst": [ + "ablest", + "belast", + "bleats", + "stable", + "tables" + ], + "deefin": [ + "define", + "infeed" + ], + "acginr": [ + "arcing", + "caring", + "racing" + ], + "gkno": [ + "gonk", + "kong" + ], + "deeeloprv": [ + "developer", + "redevelop" + ], + "cdeimost": [ + "comedist", + "demotics", + "docetism", + "domestic" + ], + "aeimpst": [ + "impaste", + "pastime" + ], + "hnoostu": [ + "hontous", + "houston", + "nothous" + ], + "acehr": [ + "acher", + "arche", + "chare", + "chera", + "echar", + "rache", + "reach" + ], + "aelmnt": [ + "lament", + "manlet", + "mantel", + "mantle", + "mental" + ], + "emmnot": [ + "moment", + "montem" + ], + "chin": [ + "chin", + "inch" + ], + "ceenrst": [ + "centers", + "centres", + "scenter", + "tenrecs" + ], + "aadegm": [ + "dagame", + "damage" + ], + "abl": [ + "abl", + "alb", + "bal", + "lab" + ], + "eeerrsv": [ + "reserve", + "resever", + "reveres", + "reverse", + "severer" + ], + "ceeiprs": [ + "piecers", + "pierces", + "precise", + "recipes", + "respice", + "scripee" + ], + "aagmm": [ + "gamma", + "magma" + ], + "nosw": [ + "nows", + "owns", + "snow", + "sown", + "wons" + ], + "hrttu": [ + "thurt", + "truth" + ], + "cenortu": [ + "conteur", + "cornute", + "counter", + "recount", + "trounce" + ], + "ainoort": [ + "ontario", + "oration" + ], + "des": [ + "des", + "eds", + "esd", + "sed" + ], + "aeimnnost": [ + "antimeson", + "mannitose", + "minnesota", + "nominates" + ], + "bdegir": [ + "begird", + "bridge" + ], + "aeintv": [ + "native", + "navite" + ], + "denow": [ + "endow", + "nowed", + "owned", + "woden" + ], + "achrt": [ + "archt", + "chart", + "ratch" + ], + "adeerrs": [ + "readers", + "redears", + "redsear", + "rereads" + ], + "aelqu": [ + "equal", + "quale", + "queal" + ], + "adeenrtuv": [ + "adventure", + "unaverted" + ], + "fioprt": [ + "forpit", + "profit" + ], + "adeelrs": [ + "dealers", + "leaders" + ], + "eoprsst": [ + "posters", + "prestos", + "stopers" + ], + "aainssstt": [ + "assistant", + "satanists" + ], + "aev": [ + "ave", + "eva" + ], + "acdemopr": [ + "compadre", + "compared" + ], + "hkooprsw": [ + "shopwork", + "workshop" + ], + "egno": [ + "geon", + "goen", + "gone" + ], + "cdeos": [ + "codes", + "coeds", + "cosed" + ], + "dikns": [ + "dinks", + "kinds" + ], + "aeelstt": [ + "atelets", + "seattle", + "tsatlee" + ], + "aeemnssttt": [ + "statements", + "testaments" + ], + "deglno": [ + "engold", + "golden", + "longed" + ], + "aemst": [ + "mates", + "meats", + "metas", + "satem", + "steam", + "stema", + "tames", + "teams" + ], + "fort": [ + "fort", + "frot" + ], + "aeenst": [ + "enates", + "ensate", + "enseat", + "santee", + "sateen", + "senate" + ], + "cefors": [ + "forces", + "fresco" + ], + "denrtu": [ + "deturn", + "dunter", + "retund", + "runted", + "tunder", + "turned" + ], + "deirt": [ + "diter", + "tired", + "tried" + ], + "deenrrtu": [ + "returned", + "unterred" + ], + "aenprtt": [ + "pattern", + "reptant" + ], + "abot": [ + "boat", + "bota", + "toba" + ], + "ademn": [ + "admen", + "amend", + "mande", + "maned", + "menad", + "named" + ], + "aeehrtt": [ + "teather", + "theater", + "theatre", + "thereat" + ], + "aelrs": [ + "arles", + "arsle", + "earls", + "lares", + "laser", + "lears", + "rales", + "reals", + "seral", + "slare" + ], + "aeeilrr": [ + "earlier", + "learier" + ], + "cino": [ + "cion", + "coin", + "coni", + "icon" + ], + "aadiinn": [ + "anidian", + "indiana" + ], + "cdeiinort": [ + "cretinoid", + "direction" + ], + "deeelt": [ + "delete", + "teedle" + ], + "acelnru": [ + "crenula", + "lucarne", + "nuclear", + "unclear" + ], + "emosu": [ + "moues", + "mouse" + ], + "agilns": [ + "algins", + "aligns", + "glanis", + "lasing", + "liangs", + "ligans", + "lingas", + "sangil", + "signal" + ], + "deissu": [ + "dissue", + "disuse", + "issued" + ], + "abinr": [ + "abrin", + "bairn", + "brain", + "brian", + "rabin" + ], + "eflopruw": [ + "powerful", + "upflower" + ], + "ademr": [ + "armed", + "derma", + "drame", + "dream", + "madre", + "ramed" + ], + "aefls": [ + "alefs", + "false", + "fleas", + "leafs" + ], + "acst": [ + "acts", + "cast", + "cats", + "scat" + ], + "eflorw": [ + "flower", + "fowler", + "reflow", + "wolfer" + ], + "adepss": [ + "depass", + "passed", + "spades" + ], + "cip": [ + "cpi", + "pci", + "pic" + ], + "emooprt": [ + "promote", + "protome" + ], + "adestt": [ + "stated", + "tasted" + ], + "aaepprs": [ + "appears", + "sappare" + ], + "ceorsv": [ + "corves", + "covers" + ], + "aaiimnnt": [ + "amanitin", + "maintain" + ], + "imorstu": [ + "sumitro", + "tourism" + ], + "amot": [ + "atmo", + "atom", + "moat", + "mota", + "toma" + ], + "adeeimstt": [ + "estimated", + "meditates" + ], + "befir": [ + "bifer", + "brief", + "fiber", + "fibre" + ], + "inor": [ + "inro", + "iron", + "noir", + "nori", + "roin" + ], + "deersv": [ + "served", + "versed" + ], + "anstw": [ + "stawn", + "wants", + "wasnt" + ], + "adeepprr": [ + "dapperer", + "prepared" + ], + "diov": [ + "ovid", + "void" + ], + "dgiinn": [ + "dining", + "indign", + "niding" + ], + "aegiinnortt": [ + "integration", + "orientating" + ], + "agt": [ + "agt", + "gat", + "tag" + ], + "adeillnst": [ + "installed", + "landsleit" + ], + "cdeirst": [ + "credits", + "directs" + ], + "adehln": [ + "handel", + "handle" + ], + "eestw": [ + "ewest", + "sweet", + "weest", + "weets", + "weste" + ], + "deks": [ + "desk", + "sked" + ], + "aceiirrt": [ + "criteria", + "triceria" + ], + "adev": [ + "dave", + "deva", + "vade", + "veda" + ], + "degio": [ + "diego", + "dogie", + "geoid" + ], + "ceiv": [ + "cive", + "vice" + ], + "ary": [ + "ary", + "yar", + "ray", + "rya" + ], + "eeenruv": [ + "revenue", + "unreeve" + ], + "aeemrsu": [ + "measure", + "reamuse" + ], + "acgghinn": [ + "changing", + "ganching" + ], + "eostv": [ + "ovest", + "stove", + "votes" + ], + "aber": [ + "bare", + "bear", + "brae" + ], + "agin": [ + "agin", + "gain", + "inga", + "naig", + "ngai" + ], + "aceno": [ + "acone", + "canoe", + "ocean" + ], + "ginss": [ + "signs", + "sings", + "snigs", + "ssing" + ], + "ackl": [ + "calk", + "kcal", + "lack" + ], + "degglo": [ + "doggle", + "dogleg", + "logged" + ], + "aloppt": [ + "applot", + "laptop" + ], + "aegintv": [ + "vagient", + "vintage" + ], + "ainrt": [ + "intra", + "riant", + "tairn", + "tarin", + "train", + "trina" + ], + "aps": [ + "asp", + "pas", + "sap", + "spa" + ], + "aelnry": [ + "anerly", + "layner", + "nearly" + ], + "aeilrty": [ + "irately", + "reality", + "tearily" + ], + "giinor": [ + "nigori", + "origin" + ], + "aggimn": [ + "gaming", + "gigman" + ], + "aefrst": [ + "afters", + "farset", + "faster", + "strafe" + ], + "cno": [ + "con", + "nco" + ], + "psu": [ + "pus", + "sup", + "ups" + ], + "ainnost": [ + "anoints", + "nations", + "onanist" + ], + "eortu": [ + "outer", + "outre", + "route", + "troue", + "utero" + ], + "mooz": [ + "mozo", + "zoom" + ], + "blow": [ + "blow", + "bowl" + ], + "abeltt": [ + "batlet", + "battel", + "battle", + "tablet" + ], + "aeimn": [ + "amine", + "anime", + "enami", + "maine", + "manei", + "manie", + "minae" + ], + "aekps": [ + "peaks", + "sapek", + "spake", + "speak" + ], + "deiinrsstu": [ + "disuniters", + "industries" + ], + "adeiilort": [ + "editorial", + "radiolite" + ], + "ceehps": [ + "cheeps", + "speech" + ], + "eirw": [ + "weir", + "weri", + "wire" + ], + "alrru": [ + "rural", + "urlar" + ], + "adehrs": [ + "dasher", + "rhedas", + "shader", + "shared", + "sheard" + ], + "aept": [ + "pate", + "peat", + "tape", + "teap", + "tepa" + ], + "cceimnoos": [ + "economics", + "neocosmic" + ], + "acdi": [ + "acid", + "cadi", + "caid" + ], + "besty": [ + "betsy", + "bytes" + ], + "eghhit": [ + "eighth", + "height" + ], + "aeekprs": [ + "respeak", + "speaker" + ], + "abinot": [ + "batino", + "bonita", + "oatbin", + "obtain" + ], + "ceffios": [ + "coiffes", + "offices" + ], + "deeginrs": [ + "designer", + "energids", + "redesign", + "reedings", + "resigned" + ], + "aadegmn": [ + "agnamed", + "managed" + ], + "adefil": [ + "afield", + "defail", + "defial", + "failed" + ], + "ceerst": [ + "certes", + "erects", + "resect", + "screet", + "secret", + "terces" + ], + "abht": [ + "baht", + "bath", + "bhat" + ], + "aeegintv": [ + "agentive", + "negative" + ], + "adenrw": [ + "andrew", + "redawn", + "wander", + "warden", + "warned" + ], + "efmoprr": [ + "perform", + "preform" + ], + "aeeimsstt": [ + "estimates", + "semistate", + "steamiest" + ], + "aessst": [ + "assets", + "stases", + "tasses" + ], + "iimnrsty": [ + "ministry", + "myristin" + ], + "aelrwy": [ + "yawler", + "lawyer", + "warely" + ], + "adeimrr": [ + "admirer", + "madrier", + "married" + ], + "aghinrs": [ + "garnish", + "rashing", + "sharing" + ], + "aloprt": [ + "patrol", + "portal", + "tropal" + ], + "abet": [ + "abet", + "bate", + "beat", + "beta" + ], + "afil": [ + "alif", + "fail", + "fila" + ], + "agirst": [ + "gratis", + "striga" + ], + "aissst": [ + "assist", + "stasis" + ], + "eginrsv": [ + "serving", + "versing" + ], + "abgs": [ + "bags", + "gabs" + ], + "ccimos": [ + "comics", + "cosmic" + ], + "aemrstt": [ + "matster", + "matters", + "smatter" + ], + "ehossu": [ + "houses", + "shouse" + ], + "cdo": [ + "cod", + "doc" + ], + "aerw": [ + "arew", + "waer", + "ware", + "wear" + ], + "abegiknr": [ + "beraking", + "breaking", + "rebaking" + ], + "aeilmttu": [ + "mutilate", + "ultimate" + ], + "aelsw": [ + "swale", + "sweal", + "wales", + "wasel", + "weals" + ], + "imnor": [ + "minor", + "morin" + ], + "deeinrsst": [ + "dissenter", + "residents", + "tiredness", + "triedness" + ], + "denot": [ + "donet", + "noted", + "tendo", + "toned" + ], + "cddeeru": [ + "deducer", + "reduced" + ], + "aerr": [ + "rare", + "rear" + ], + "deefmoprr": [ + "performed", + "preformed" + ], + "adisv": [ + "davis", + "divas", + "vadis" + ], + "adeiln": [ + "aldine", + "alined", + "daniel", + "delian", + "denial", + "enalid", + "leadin", + "nailed" + ], + "abrs": [ + "arbs", + "bars", + "bras" + ], + "orw": [ + "row", + "wro" + ], + "aceforst": [ + "cofaster", + "forecast" + ], + "ehlps": [ + "helps", + "shlep" + ], + "egilnss": [ + "essling", + "singles" + ], + "amnostu": [ + "amounts", + "outmans", + "saumont" + ], + "acinnot": [ + "actinon", + "cantino", + "cantion", + "contain" + ], + "adlu": [ + "auld", + "dual", + "laud", + "udal" + ], + "eirs": [ + "eris", + "ires", + "reis", + "ries", + "rise", + "seri", + "sier", + "sire" + ], + "dsu": [ + "sud", + "uds" + ], + "eelps": [ + "peels", + "peles", + "sleep", + "speel" + ], + "bdir": [ + "bird", + "brid", + "drib" + ], + "aceinort": [ + "actioner", + "anerotic", + "anoretic", + "canotier", + "ceration", + "cortinae", + "creation", + "reaction" + ], + "acistt": [ + "attics", + "static", + "sticta" + ], + "ceens": [ + "cense", + "scene", + "sence" + ], + "adly": [ + "yald", + "lady" + ], + "aet": [ + "aet", + "ate", + "eat", + "eta", + "tae", + "tea" + ], + "acegilnn": [ + "cleaning", + "enlacing" + ], + "eilnt": [ + "inlet", + "intel", + "linet" + ], + "aegilnortu": [ + "regulation", + "urogenital" + ], + "cdeinortu": [ + "introduce", + "reduction" + ], + "aim": [ + "aim", + "ami", + "ima", + "mia" + ], + "bdis": [ + "bids", + "dibs" + ], + "deeefrrr": [ + "deferrer", + "referred" + ], + "eginors": [ + "eringos", + "ignores", + "regions", + "signore" + ], + "els": [ + "els", + "les", + "sel" + ], + "acep": [ + "cape", + "cepa", + "pace" + ], + "ann": [ + "ann", + "nan" + ], + "ginrs": [ + "girns", + "grins", + "rings" + ], + "ipt": [ + "pit", + "tip", + "tpi" + ], + "deflnoruw": [ + "underflow", + "wonderful" + ], + "eimn": [ + "mein", + "mien", + "mine" + ], + "adeils": [ + "aisled", + "deasil", + "ideals", + "ladies", + "sailed" + ], + "adeegr": [ + "agreed", + "dragee", + "geared" + ], + "eeinnoprtv": [ + "prevention", + "provenient" + ], + "iks": [ + "ksi", + "ski" + ], + "cceors": [ + "scorce", + "soccer" + ], + "imoprt": [ + "import", + "promit" + ], + "ginopst": [ + "posting", + "stoping" + ], + "aadeiimnnt": [ + "diamantine", + "inanimated", + "maintained" + ], + "ccdeennot": [ + "condecent", + "connected" + ], + "chirst": [ + "christ", + "strich" + ], + "dgos": [ + "dogs", + "gods" + ], + "cdeiorrst": [ + "creditors", + "directors", + "recordist" + ], + "aadeh": [ + "aahed", + "ahead" + ], + "mnoo": [ + "mono", + "moon" + ], + "ceehms": [ + "scheme", + "smeech" + ], + "deelv": [ + "delve", + "devel" + ], + "eeeinprrsst": [ + "enterprises", + "intersperse" + ], + "adelt": [ + "adlet", + "dealt", + "delta", + "lated", + "taled" + ], + "aefr": [ + "afer", + "fare", + "fear", + "frae", + "rafe" + ], + "eegikns": [ + "seeking", + "skeeing" + ], + "cehins": [ + "chines", + "chinse", + "inches", + "niches" + ], + "aehrss": [ + "rashes", + "shares", + "shears" + ], + "arsw": [ + "raws", + "wars" + ], + "ekpt": [ + "kept", + "tpke" + ], + "aaelpp": [ + "appale", + "appeal" + ], + "ceirsu": [ + "cruise", + "crusie", + "curies" + ], + "bnosu": [ + "bonus", + "bosun" + ], + "accefiiinortt": [ + "certification", + "cretification", + "rectification" + ], + "eiloprsuvy": [ + "perviously", + "previously", + "viperously" + ], + "ehy": [ + "hey", + "hye", + "yeh" + ], + "aceilpss": [ + "slipcase", + "specials" + ], + "deinsy": [ + "disney", + "sidney" + ], + "abdeo": [ + "abode", + "adobe" + ], + "deirsv": [ + "divers", + "drives" + ], + "amrs": [ + "arms", + "mars", + "rams" + ], + "eerst": [ + "ester", + "estre", + "reest", + "reset", + "steer", + "stere", + "stree", + "teres", + "terse", + "trees", + "tsere" + ], + "agv": [ + "avg", + "vag" + ], + "ahtu": [ + "auth", + "haut", + "utah" + ], + "abenry": [ + "barney", + "nearby" + ], + "mor": [ + "mor", + "rom" + ], + "acdeirr": [ + "acrider", + "carried" + ], + "dehi": [ + "hide", + "hied" + ], + "aeginrstu": [ + "gauntries", + "signature" + ], + "eefrr": [ + "freer", + "frere", + "refer", + "rfree" + ], + "eillmr": [ + "miller", + "remill" + ], + "acdesu": [ + "caused", + "sauced" + ], + "abbes": [ + "abbes", + "babes" + ], + "ddeein": [ + "denied", + "indeed" + ], + "oty": [ + "yot", + "toy" + ], + "deinprt": [ + "deprint", + "printed" + ], + "losw": [ + "lows", + "owls", + "slow", + "sowl" + ], + "aelmorv": [ + "removal", + "valorem" + ], + "aeeirs": [ + "aeries", + "easier" + ], + "crs": [ + "crs", + "scr" + ], + "abiiillty": [ + "alibility", + "liability" + ], + "hip": [ + "hip", + "ihp", + "iph", + "phi" + ], + "einprrst": [ + "printers", + "reprints", + "sprinter" + ], + "einn": [ + "inne", + "nein", + "nine" + ], + "addgin": [ + "adding", + "dading" + ], + "ceir": [ + "cire", + "eric", + "rice" + ], + "inprst": [ + "prints", + "sprint" + ], + "denps": [ + "pends", + "psend", + "spend" + ], + "deeirsv": [ + "derives", + "deviser", + "diverse", + "revised" + ], + "acilopt": [ + "capitol", + "coalpit", + "optical", + "topical" + ], + "aeeilrtv": [ + "levirate", + "relative" + ], + "dot": [ + "dot", + "tod" + ], + "eisstu": [ + "suites", + "tissue" + ], + "eefgiln": [ + "feeling", + "fleeing" + ], + "eefilr": [ + "ferlie", + "liefer", + "refile", + "relief" + ], + "eiinorsv": [ + "revision", + "visioner" + ], + "aiort": [ + "ariot", + "ratio" + ], + "adp": [ + "adp", + "dap", + "pad" + ], + "ainr": [ + "airn", + "arni", + "iran", + "nair", + "rain", + "rani" + ], + "noot": [ + "onto", + "oont", + "toon" + ], + "aelnpt": [ + "pantle", + "planet", + "platen" + ], + "ceeipr": [ + "piecer", + "pierce", + "recipe" + ], + "eimprt": [ + "permit", + "premit" + ], + "eegins": [ + "genies", + "seeing", + "signee" + ], + "einnst": [ + "innest", + "intens", + "sennit", + "sinnet", + "tennis" + ], + "abss": [ + "bass", + "sabs" + ], + "bdemoor": [ + "bedroom", + "boerdom", + "boredom", + "broomed" + ], + "aceinnst": [ + "ancients", + "canniest", + "insectan", + "instance" + ], + "deir": [ + "dier", + "dire", + "drie", + "ired", + "reid", + "ride" + ], + "cdeeilns": [ + "declines", + "licensed", + "silenced" + ], + "adlnoor": [ + "lardoon", + "orlando", + "rolando" + ], + "imt": [ + "mit", + "tim" + ], + "eeenprrst": [ + "presenter", + "repenters", + "represent" + ], + "aceinnoorstv": [ + "conservation", + "conversation" + ], + "aipr": [ + "pair", + "pari", + "pria", + "ripa" + ], + "adeil": [ + "adiel", + "ailed", + "delia", + "ideal" + ], + "dno": [ + "don", + "nod" + ], + "ceeips": [ + "pieces", + "specie" + ], + "defhiins": [ + "definish", + "fiendish", + "finished" + ], + "akprs": [ + "parks", + "spark" + ], + "deinnr": [ + "dinner", + "endrin" + ], + "acemr": [ + "cream", + "macer" + ], + "nrsu": [ + "runs", + "snur", + "urns" + ], + "aehy": [ + "ahey", + "eyah", + "haye", + "yeah" + ], + "cdeiorsv": [ + "discover", + "divorces" + ], + "aenprstt": [ + "patterns", + "prestant", + "transept", + "trapnest" + ], + "hills": [ + "hills", + "shill" + ], + "ilnosw": [ + "lowsin", + "wilson" + ], + "hiirs": [ + "irish", + "rishi", + "sirih" + ], + "aeimnrs": [ + "marines", + "remains", + "seminar" + ], + "aeegrstt": [ + "greatest", + "stratege" + ], + "eoru": [ + "euro", + "roue" + ], + "ceeginr": [ + "energic", + "generic" + ], + "aegsu": [ + "agues", + "usage" + ], + "acp": [ + "cap", + "pac" + ], + "ikn": [ + "ink", + "kin" + ], + "achrst": [ + "charts", + "scarth", + "scrath", + "starch" + ], + "cgiinnnotu": [ + "continuing", + "unnoticing" + ], + "aekp": [ + "keap", + "peak" + ], + "eistx": [ + "exist", + "exits", + "sixte" + ], + "eehlw": [ + "hewel", + "wheel" + ], + "ainrstt": [ + "straint", + "transit", + "tristan" + ], + "accmopt": [ + "accompt", + "compact" + ], + "ghilst": [ + "lights", + "slight" + ], + "aegln": [ + "agnel", + "angel", + "angle", + "galen", + "genal", + "glean", + "lagen", + "nagel" + ], + "eegiknp": [ + "keeping", + "peeking" + ], + "aaeinopprrt": [ + "paraprotein", + "preparation" + ], + "einos": [ + "eosin", + "noise" + ], + "eeginns": [ + "engines", + "senegin" + ], + "aaccertu": [ + "accurate", + "carucate" + ], + "inp": [ + "nip", + "pin" + ], + "eirsst": [ + "resist", + "restis", + "sister", + "tresis" + ], + "gnu": [ + "gnu", + "gun", + "ung" + ], + "ahprs": [ + "harps", + "sharp", + "shrap" + ], + "abeilnss": [ + "albiness", + "lesbians" + ], + "ben": [ + "ben", + "neb" + ], + "aeln": [ + "alen", + "elan", + "laen", + "lane", + "lean", + "lena", + "nael", + "nale", + "neal" + ], + "alo": [ + "alo", + "lao", + "loa", + "ola" + ], + "eoprtx": [ + "export", + "torpex" + ], + "eelmopry": [ + "employer", + "polymere", + "reemploy" + ], + "knosw": [ + "knows", + "snowk", + "swonk" + ], + "bcdeeirs": [ + "describe", + "escribed" + ], + "ceiinstz": [ + "citizens", + "zincites" + ], + "aelnoprss": [ + "apronless", + "personals", + "responsal" + ], + "belortu": [ + "boulter", + "trouble" + ], + "adeprs": [ + "drapes", + "padres", + "parsed", + "rasped", + "spader", + "spared", + "spread" + ], + "accho": [ + "chaco", + "choca", + "coach" + ], + "eiknv": [ + "kevin", + "knive" + ], + "adjnor": [ + "jardon", + "jordan" + ], + "aegs": [ + "ages", + "gaes", + "sage" + ], + "glpu": [ + "gulp", + "plug" + ], + "aceiilpsst": [ + "plasticise", + "specialist" + ], + "giinrv": [ + "irving", + "riving", + "virgin" + ], + "aegiiinnosttv": [ + "investigation", + "tenovaginitis" + ], + "adeirs": [ + "aiders", + "arised", + "deairs", + "irades", + "raised", + "redias", + "resaid" + ], + "aht": [ + "aht", + "hat", + "tha" + ], + "cddeeirt": [ + "credited", + "directed" + ], + "elpr": [ + "lerp", + "repl" + ], + "beik": [ + "bike", + "kibe" + ], + "aelpt": [ + "leapt", + "lepta", + "palet", + "patel", + "pelta", + "petal", + "plate", + "pleat", + "tepal" + ], + "acdeiint": [ + "actinide", + "ctenidia", + "diacetin", + "diactine", + "indicate" + ], + "bdelno": [ + "blonde", + "bolden", + "nobled" + ], + "elos": [ + "leos", + "lose", + "oles", + "sloe", + "sole" + ], + "eeks": [ + "ekes", + "kees", + "seek", + "skee" + ], + "ablmsu": [ + "albums", + "sambul", + "sumbal" + ], + "acehst": [ + "chaste", + "cheats", + "sachet", + "scathe", + "scheat", + "taches" + ], + "egsstu": [ + "guests", + "gusset" + ], + "adeeisss": [ + "diseases", + "seasides" + ], + "deeeloprsv": [ + "developers", + "redevelops" + ], + "noty": [ + "yont", + "tony" + ], + "aadenv": [ + "advena", + "nevada", + "vedana", + "venada" + ], + "ikst": [ + "kist", + "kits", + "skit" + ], + "aadegn": [ + "agenda", + "gadean" + ], + "ceinnostu": [ + "continues", + "neustonic" + ], + "ackrst": [ + "strack", + "tracks" + ], + "aeelmptt": [ + "palmette", + "template" + ], + "ceinpr": [ + "pincer", + "prince" + ], + "cceilr": [ + "circle", + "cleric" + ], + "ilos": [ + "lois", + "oils", + "silo", + "siol", + "soil", + "soli" + ], + "agnrst": [ + "grants", + "strang" + ], + "aacilntt": [ + "atlantic", + "tantalic" + ], + "etw": [ + "tew", + "wet" + ], + "adderw": [ + "edward", + "wadder", + "warded" + ], + "aegilnv": [ + "leaving", + "vangeli", + "vealing" + ], + "denoprs": [ + "ponders", + "respond" + ], + "eissz": [ + "sizes", + "zeiss" + ], + "ailnp": [ + "lapin", + "lipan", + "pinal", + "plain" + ], + "eksy": [ + "keys", + "syke", + "skey", + "skye" + ], + "achlnu": [ + "chulan", + "launch", + "nuchal" + ], + "ehms": [ + "hems", + "mesh", + "shem" + ], + "blmosy": [ + "blosmy", + "symbol" + ], + "aden": [ + "aden", + "ande", + "dane", + "dean", + "edna" + ], + "epstu": [ + "setup", + "spute", + "stupe", + "upset" + ], + "acfils": [ + "califs", + "fiscal" + ], + "elssty": [ + "slyest", + "styles" + ], + "deenrv": [ + "denver", + "nerved", + "revend", + "vender" + ], + "finoty": [ + "notify", + "tonify" + ], + "belsu": [ + "blues", + "bulse", + "lubes" + ], + "ceops": [ + "copes", + "copse", + "pecos", + "scope" + ], + "eilpprsu": [ + "periplus", + "supplier" + ], + "adelnt": [ + "dental", + "tandle" + ], + "bdeorr": [ + "border", + "roberd" + ], + "acessu": [ + "causes", + "causse", + "sauces" + ], + "adeelnr": [ + "laender", + "leander", + "learned", + "reladen" + ], + "chiiorst": [ + "historic", + "orchitis" + ], + "deenop": [ + "depone", + "opened" + ], + "ceorss": [ + "cessor", + "corses", + "crosse", + "scores", + "scorse" + ], + "aeilnr": [ + "aliner", + "arline", + "enrail", + "lainer", + "lanier", + "larine", + "linear", + "nailer", + "renail" + ], + "abers": [ + "bares", + "barse", + "baser", + "bears", + "besra", + "braes", + "saber", + "sabre", + "serab" + ], + "aejn": [ + "jane", + "jean" + ], + "hop": [ + "hop", + "pho", + "poh" + ], + "ddeeit": [ + "dieted", + "edited" + ], + "aisv": [ + "avis", + "siva", + "vias", + "visa" + ], + "eemrt": [ + "meter", + "metre", + "remet", + "retem" + ], + "deikln": [ + "kilned", + "kindle", + "linked" + ], + "ccenopst": [ + "concepts", + "conspect" + ], + "epru": [ + "peru", + "prue", + "pure" + ], + "deeilrv": [ + "deliver", + "deviler", + "livered", + "relived", + "reviled", + "riveled" + ], + "denorw": [ + "downer", + "nowder", + "wonder", + "worden" + ], + "elnosss": [ + "lessons", + "sonless" + ], + "begins": [ + "begins", + "beings", + "besing", + "binges" + ], + "aelrst": [ + "alerts", + "alters", + "artels", + "estral", + "laster", + "lastre", + "rastle", + "ratels", + "relast", + "resalt", + "salter", + "slater", + "staler", + "stelar", + "talers" + ], + "adrw": [ + "draw", + "ward" + ], + "aegilnrt": [ + "alerting", + "altering", + "integral", + "relating", + "tanglier", + "teraglin", + "triangle" + ], + "aemssu": [ + "amuses", + "assume", + "seamus" + ], + "aaceilln": [ + "alliance", + "ancillae", + "canaille" + ], + "eehinrt": [ + "enherit", + "etherin", + "neither", + "therein" + ], + "eilsw": [ + "lewis", + "swile", + "wiles" + ], + "aeelsv": [ + "leaves", + "sleave" + ], + "aceelpr": [ + "percale", + "replace" + ], + "ceenorrtv": [ + "converter", + "reconvert" + ], + "abbe": [ + "abbe", + "babe" + ], + "agrsu": [ + "argus", + "gaurs", + "guars", + "sugar" + ], + "egls": [ + "gels", + "legs" + ], + "ams": [ + "mas", + "sam", + "sma" + ], + "cikst": [ + "stick", + "ticks" + ], + "aelln": [ + "allen", + "ellan" + ], + "dpt": [ + "dpt", + "tpd" + ], + "aeilnort": [ + "oriental", + "relation", + "tirolean" + ], + "abdeeln": [ + "enabled", + "endable" + ], + "deils": [ + "deils", + "delis", + "idles", + "isled", + "sidle", + "slide" + ], + "deestt": [ + "detest", + "tested" + ], + "aadeprt": [ + "adapter", + "predata", + "readapt" + ], + "cklo": [ + "colk", + "lock" + ], + "cehkoy": [ + "chokey", + "hockey" + ], + "morst": [ + "morts", + "storm", + "strom" + ], + "cimor": [ + "micro", + "moric", + "romic" + ], + "eilm": [ + "emil", + "lime", + "mile" + ], + "deiorst": [ + "editors", + "oestrid", + "sortied", + "steroid", + "storied", + "triodes" + ], + "adehrst": [ + "dearths", + "hardest", + "hardset", + "hatreds", + "threads", + "trashed" + ], + "eemprsu": [ + "presume", + "supreme" + ], + "eenprsst": [ + "pensters", + "pertness", + "presents", + "serpents" + ], + "efr": [ + "erf", + "fer", + "ref" + ], + "aknt": [ + "kant", + "tank" + ], + "aeeimstt": [ + "estimate", + "etatisme", + "meatiest", + "teatimes" + ], + "ceiinnopst": [ + "cispontine", + "inceptions", + "inspection" + ], + "iilmst": [ + "limits", + "mislit" + ], + "aceehmnrst": [ + "manchester", + "searchment" + ], + "ainpt": [ + "inapt", + "paint", + "patin", + "pinta" + ], + "adely": [ + "delay", + "layed", + "leady" + ], + "ilopt": [ + "pilot", + "polit" + ], + "elottu": [ + "outlet", + "tutelo" + ], + "egilnrstu": [ + "lustering", + "resulting", + "ulstering" + ], + "anp": [ + "nap", + "pan" + ], + "alrtu": [ + "lutra", + "ultra" + ], + "aaeiimnnotx": [ + "examination", + "exanimation" + ], + "eoprtt": [ + "porett", + "potter" + ], + "alpsy": [ + "palsy", + "plays", + "splay" + ], + "beillntu": [ + "bulletin", + "unbillet" + ], + "acdeiinst": [ + "actinides", + "andesitic", + "dianetics", + "indicates" + ], + "dfimoy": [ + "domify", + "modify" + ], + "aadm": [ + "adam", + "dama", + "maad" + ], + "lrtuy": [ + "rutyl", + "truly" + ], + "agiinnpt": [ + "painting", + "patining" + ], + "aenptt": [ + "patent", + "patten", + "tapnet" + ], + "pps": [ + "pps", + "spp" + ], + "aegint": [ + "eating", + "ingate", + "tangie", + "teaing", + "tinage" + ], + "ceeeipprstv": [ + "perspective", + "prespective" + ], + "deglo": [ + "lodge", + "ogled" + ], + "egilnrst": [ + "lingster", + "ringlets", + "sterling", + "tinglers" + ], + "bersuy": [ + "buyers", + "rebusy" + ], + "agry": [ + "gary", + "gray" + ], + "aaceglotu": [ + "catalogue", + "coagulate" + ], + "aaintw": [ + "atwain", + "taiwan" + ], + "cehnos": [ + "cheson", + "chosen", + "cohens", + "schone" + ], + "aahrs": [ + "asarh", + "haars", + "haras", + "raash", + "sarah" + ], + "aeilmnrt": [ + "terminal", + "tramline" + ], + "aelnors": [ + "loaners", + "orleans", + "reloans" + ], + "eeimpr": [ + "empire", + "epimer", + "premie" + ], + "aeirs": [ + "aesir", + "aries", + "arise", + "raise", + "serai" + ], + "aeepprr": [ + "paperer", + "perpera", + "prepare", + "repaper" + ], + "aabr": [ + "arab", + "arba", + "baar", + "bara" + ], + "eeimprr": [ + "premier", + "reprime" + ], + "mooorrtw": [ + "moorwort", + "rootworm", + "tomorrow", + "wormroot" + ], + "cddeei": [ + "decide", + "deiced" + ], + "aadmr": [ + "damar", + "drama" + ], + "efgimnoprr": [ + "performing", + "preforming" + ], + "abeilstu": [ + "sabulite", + "suitable" + ], + "abcehmr": [ + "becharm", + "brecham", + "chamber", + "chambre" + ], + "aeginu": [ + "enigua", + "guinea", + "naigue" + ], + "celmsu": [ + "clumse", + "muscle" + ], + "aefginrtu": [ + "featuring", + "figurante" + ], + "ios": [ + "ios", + "iso", + "osi" + ], + "orsuy": [ + "yours", + "soury" + ], + "msu": [ + "mus", + "sum" + ], + "adentt": [ + "attend", + "detant" + ], + "ehorsw": [ + "reshow", + "shower", + "whores" + ], + "aaln": [ + "alan", + "anal", + "lana" + ], + "deginns": [ + "endings", + "sending" + ], + "ajnos": [ + "janos", + "jason", + "jonas", + "sonja" + ], + "ghinott": [ + "hotting", + "tonight" + ], + "ehlls": [ + "hells", + "shell" + ], + "ako": [ + "ako", + "koa", + "oak", + "oka" + ], + "atv": [ + "tav", + "vat" + ], + "beer": [ + "beer", + "bere", + "bree" + ], + "deeems": [ + "seemed", + "semeed" + ], + "alors": [ + "orals", + "rosal", + "solar", + "soral" + ], + "ejos": [ + "joes", + "jose" + ], + "irs": [ + "irs", + "sir", + "sri" + ], + "abelnu": [ + "nebula", + "unable", + "unbale" + ], + "aksst": [ + "skats", + "tasks" + ], + "aceeinrsst": [ + "ancestries", + "resistance", + "senatrices" + ], + "doors": [ + "doors", + "odors", + "ordos", + "roods", + "soord", + "sordo" + ], + "eorrsst": [ + "resorts", + "ressort", + "rosters", + "sorters" + ], + "iiorstv": [ + "ivorist", + "visitor" + ], + "intw": [ + "twin", + "wint" + ], + "fhort": [ + "forth", + "froth" + ], + "einrst": [ + "estrin", + "inerts", + "insert", + "inters", + "niters", + "nitres", + "sinter", + "sterin", + "triens", + "trines" + ], + "abeilmort": [ + "artmobile", + "baltimore" + ], + "aaegtwy": [ + "gateway", + "getaway", + "waygate" + ], + "ailmnu": [ + "alumin", + "alumni", + "lumina", + "unmail" + ], + "adginrw": [ + "drawing", + "ginward", + "warding" + ], + "acemnor": [ + "cremona", + "romance" + ], + "eimnnrsttu": [ + "instrument", + "nutriments" + ], + "bceru": [ + "bruce", + "cebur", + "cuber" + ], + "ilpst": [ + "slipt", + "spilt", + "split" + ], + "eehmst": [ + "smeeth", + "smethe", + "themes" + ], + "bist": [ + "bist", + "bits", + "stib" + ], + "cdefosu": [ + "defocus", + "focused" + ], + "agikns": [ + "asking", + "gaskin", + "kiangs", + "kisang" + ], + "abdeeist": [ + "beadiest", + "diabetes" + ], + "istu": [ + "situ", + "suit", + "tuis" + ], + "chip": [ + "chip", + "pich" + ], + "ers": [ + "ers", + "res", + "ser" + ], + "bdeios": [ + "bodies", + "dobies", + "obside" + ], + "imnos": [ + "minos", + "osmin", + "simon" + ], + "eirrstw": [ + "wrister", + "writers" + ], + "delov": [ + "loved", + "voled" + ], + "bdirs": [ + "birds", + "dribs" + ], + "eeenprrsst": [ + "presenters", + "represents" + ], + "achr": [ + "arch", + "char", + "rach" + ], + "adesv": [ + "devas", + "saved" + ], + "acnoort": [ + "cartoon", + "coranto" + ], + "hosst": [ + "hosts", + "shots", + "soths", + "stosh" + ], + "emoor": [ + "moore", + "romeo" + ], + "adegnrt": [ + "dragnet", + "granted" + ], + "ccehios": [ + "choices", + "secchio" + ], + "abcnor": [ + "bracon", + "carbon", + "corban" + ], + "egiilnnst": [ + "enlisting", + "listening", + "tinseling" + ], + "kloootu": [ + "lookout", + "outlook" + ], + "aeimssv": [ + "massive", + "mavises" + ], + "aertt": [ + "atter", + "tarte", + "tater", + "teart", + "tetra", + "treat" + ], + "adeehr": [ + "adhere", + "header", + "hedera", + "rehead", + "rhedae" + ], + "defmor": [ + "deform", + "formed" + ], + "dgir": [ + "gird", + "grid" + ], + "eehsst": [ + "sheets", + "theses" + ], + "acikprt": [ + "patrick", + "tripack" + ], + "eoprtu": [ + "pouter", + "puerto", + "roupet", + "troupe", + "uptore" + ], + "aalmps": [ + "lampas", + "plasma" + ], + "aeginnrs": [ + "aginners", + "earnings", + "engrains", + "grannies" + ], + "ikrss": [ + "kriss", + "risks" + ], + "acehrrt": [ + "charter", + "ratcher", + "rechart" + ], + "fgi": [ + "fig", + "gif" + ], + "aaabbrr": [ + "barabra", + "barbara" + ], + "ademrs": [ + "dermas", + "dreams", + "madres" + ], + "begglor": [ + "boggler", + "broggle" + ], + "cegiilnns": [ + "licensing", + "silencing" + ], + "aceht": [ + "cheat", + "tache", + "teach", + "theca" + ], + "adipr": [ + "adrip", + "padri", + "pardi", + "rapid" + ], + "deiopst": [ + "deposit", + "dopiest", + "podites", + "posited", + "sopited", + "topside" + ], + "aailnt": [ + "antlia", + "latian", + "nalita" + ], + "aans": [ + "anas", + "ansa", + "nasa", + "saan" + ], + "eehlsw": [ + "shewel", + "wheels" + ], + "aeelmpstt": [ + "palmettes", + "templates" + ], + "afmorst": [ + "farmost", + "formats" + ], + "abt": [ + "abt", + "bat", + "tab" + ], + "ddeenps": [ + "depends", + "despend" + ], + "boost": [ + "boost", + "boots" + ], + "eorrtu": [ + "retour", + "roture", + "router", + "tourer" + ], + "degiint": [ + "dieting", + "editing", + "ignited" + ], + "deflor": [ + "folder", + "refold" + ], + "elpsu": [ + "lepus", + "pules", + "pulse" + ], + "corstu": [ + "courts", + "scrout", + "scruto" + ], + "deiortt": [ + "detroit", + "dottier" + ], + "emort": [ + "metro", + "moter" + ], + "iprst": [ + "spirt", + "sprit", + "stirp", + "strip", + "trips" + ], + "aelpr": [ + "lepra", + "paler", + "parel", + "parle", + "pearl", + "perla", + "prela", + "relap" + ], + "deeinrst": [ + "disenter", + "indesert", + "inserted", + "resident", + "sentried", + "sintered" + ], + "lopt": [ + "plot", + "polt" + ], + "adegrr": [ + "darger", + "garred", + "gerard", + "grader", + "redrag", + "regard" + ], + "eisstx": [ + "exists", + "sexist", + "sixtes" + ], + "eikrst": [ + "kiters", + "skiter", + "strike" + ], + "aehrtt": [ + "hatter", + "threat" + ], + "ehinoprsw": [ + "ownership", + "shipowner" + ], + "aeilrrt": [ + "retiral", + "retrial", + "trailer" + ], + "aenn": [ + "anne", + "nane" + ], + "acelst": [ + "castle", + "cleats", + "eclats", + "scalet", + "sclate" + ], + "adegnrs": [ + "dangers", + "ganders", + "gardens" + ], + "deimss": [ + "deisms", + "demiss", + "dismes", + "missed" + ], + "aeinqtu": [ + "antique", + "quinate" + ], + "bio": [ + "bio", + "ibo", + "obi" + ], + "acgint": [ + "acting", + "cating" + ], + "adehs": [ + "ashed", + "deash", + "hades", + "heads", + "sadhe", + "shade" + ], + "aemx": [ + "amex", + "exam", + "xema" + ], + "gloos": [ + "gools", + "logos" + ], + "aeinqstu": [ + "antiques", + "quanties" + ], + "deinsty": [ + "density", + "destiny" + ], + "anry": [ + "yarn", + "nary" + ], + "aegnrst": [ + "angster", + "argents", + "garnets", + "nagster", + "strange" + ], + "bdes": [ + "beds", + "debs" + ], + "cps": [ + "cps", + "csp" + ], + "eelmoprsy": [ + "employers", + "reemploys" + ], + "egry": [ + "gery", + "gyre", + "grey" + ], + "addeemn": [ + "amended", + "deadmen" + ], + "bdlo": [ + "bold", + "dobl" + ], + "elnoss": [ + "lesson", + "nossel", + "onless" + ], + "aceimn": [ + "anemic", + "cinema", + "iceman" + ], + "aesst": [ + "asset", + "easts", + "sates", + "seats", + "tasse" + ], + "acns": [ + "cans", + "scan" + ], + "eeersv": [ + "everse", + "reeves", + "severe" + ], + "aeeegnrt": [ + "generate", + "renegate", + "teenager" + ], + "aeilnssst": [ + "saintless", + "saltiness", + "slatiness", + "stainless" + ], + "ahilopsst": [ + "hospitals", + "thalposis" + ], + "hmoru": [ + "humor", + "mohur" + ], + "adeg": [ + "aged", + "egad", + "gade", + "gaed" + ], + "ceeinoptx": [ + "exception", + "expection" + ], + "deilv": [ + "devil", + "divel", + "lived" + ], + "adinortu": [ + "duration", + "unadroit" + ], + "cis": [ + "cis", + "csi", + "sci", + "sic" + ], + "det": [ + "det", + "ted" + ], + "adimnos": [ + "daimons", + "domains", + "madison" + ], + "fgilny": [ + "flying", + "flingy" + ], + "ins": [ + "ins", + "isn", + "nis", + "sin" + ], + "adeginorz": [ + "dragonize", + "organized" + ], + "aapr": [ + "apar", + "paar", + "para" + ], + "eeimnss": [ + "nemesis", + "siemens" + ], + "aemnt": [ + "ament", + "manet", + "meant", + "menat", + "menta", + "teman" + ], + "aceprtu": [ + "capture", + "cuprate", + "uptrace" + ], + "dnopsu": [ + "pondus", + "pounds" + ], + "dees": [ + "dees", + "seed" + ], + "deeirs": [ + "desire", + "eiders", + "reside" + ], + "eemst": [ + "meets", + "metes", + "steem", + "teems", + "temse" + ], + "eepr": [ + "peer", + "pere", + "pree" + ], + "adekmr": [ + "demark", + "marked" + ], + "deinrv": [ + "driven", + "nervid", + "verdin" + ], + "adeemrsu": [ + "madurese", + "measured" + ], + "adhnostu": [ + "handouts", + "thousand" + ], + "acegr": [ + "cager", + "garce", + "grace" + ], + "anssu": [ + "nasus", + "susan" + ], + "gin": [ + "gin", + "ign", + "ing", + "nig" + ], + "aadms": [ + "adams", + "damas" + ], + "hnopty": [ + "phyton", + "python", + "typhon" + ], + "emnorst": [ + "mentors", + "monster" + ], + "aelx": [ + "alex", + "axel", + "axle", + "exla" + ], + "beno": [ + "beno", + "bone", + "ebon" + ], + "bgsu": [ + "bugs", + "subg" + ], + "einnr": [ + "inner", + "renin" + ], + "ailorttu": [ + "outtrail", + "tutorial" + ], + "dem": [ + "dem", + "med" + ], + "eeeginnrs": [ + "engineers", + "geneserin" + ], + "eintty": [ + "entity", + "tinety" + ], + "ceirssu": [ + "ciruses", + "cruises" + ], + "aegt": [ + "aget", + "gaet", + "gate", + "geat", + "geta", + "tega" + ], + "amnor": [ + "manor", + "moran", + "norma", + "ramon", + "roman" + ], + "deistu": [ + "duties", + "eudist", + "setuid", + "suited" + ], + "cehist": [ + "ethics", + "itches", + "sethic" + ], + "adgnor": [ + "dragon", + "gardon", + "grando" + ], + "bsuy": [ + "buys", + "busy" + ], + "aacinpt": [ + "capitan", + "captain", + "panctia" + ], + "aeghint": [ + "gahnite", + "heating" + ], + "egl": [ + "gel", + "leg" + ], + "abc": [ + "abc", + "bac", + "cab" + ], + "ailr": [ + "aril", + "lair", + "lari", + "liar", + "lira", + "rail", + "rial" + ], + "abeillr": [ + "braille", + "liberal" + ], + "betu": [ + "bute", + "tebu", + "tube" + ], + "nrstu": [ + "runts", + "snurt", + "turns" + ], + "acceh": [ + "cache", + "chace" + ], + "belt": [ + "belt", + "blet" + ], + "aaiimnnot": [ + "amination", + "animation" + ], + "acelor": [ + "carole", + "coaler", + "coelar", + "colera", + "oracle", + "recoal" + ], + "aeels": [ + "easel", + "lease" + ], + "adeirsst": [ + "diasters", + "disaster", + "disrates" + ], + "celnoos": [ + "colones", + "console" + ], + "agint": [ + "ating", + "giant", + "tangi", + "tiang" + ], + "aalmr": [ + "alarm", + "malar", + "maral", + "marla", + "ramal" + ], + "alsuu": [ + "luaus", + "usual" + ], + "adgilno": [ + "angloid", + "digonal", + "loading" + ], + "bor": [ + "bor", + "bro", + "orb", + "rob" + ], + "deeginrss": [ + "designers", + "redesigns" + ], + "orstw": [ + "strow", + "trows", + "worst", + "worts" + ], + "aaeginnrt": [ + "argentina", + "tanagrine" + ], + "ceiimmnoorss": [ + "commissioner", + "recommission" + ], + "agmnor": [ + "gorman", + "morgan" + ], + "aeelprsu": [ + "pleasure", + "serpulae" + ], + "deeinort": [ + "enteroid", + "orendite", + "oriented" + ], + "aeegl": [ + "aegle", + "aglee", + "eagle", + "galee" + ], + "enrsu": [ + "nurse", + "resun", + "runes" + ], + "aeprry": [ + "prayer", + "repray" + ], + "acehinrru": [ + "hurricane", + "raunchier" + ], + "aegopst": [ + "gestapo", + "postage", + "potages" + ], + "cdeoprru": [ + "procured", + "producer" + ], + "adil": [ + "dail", + "dali", + "dial", + "laid", + "lida" + ], + "aekmr": [ + "maker", + "marek", + "merak" + ], + "cikps": [ + "picks", + "spick" + ], + "efhist": [ + "fetish", + "fishet" + ], + "acinoss": [ + "caisson", + "casinos", + "cassino", + "cassoni" + ], + "ekmos": [ + "mokes", + "smoke" + ], + "aacehp": [ + "achape", + "apache" + ], + "efilrst": [ + "filters", + "frislet", + "lifters", + "slifter", + "stifler", + "trifles" + ], + "acdeinooprrt": [ + "adrenotropic", + "incorporated" + ], + "acfrt": [ + "craft", + "fract" + ], + "aaprt": [ + "apart", + "trapa" + ], + "eglnou": [ + "longue", + "lounge" + ], + "adm": [ + "adm", + "dam", + "mad" + ], + "aghilmort": [ + "algorithm", + "logarithm" + ], + "eims": [ + "mise", + "semi", + "sime" + ], + "cinos": [ + "cions", + "coins", + "cosin", + "icons", + "oscin", + "scion", + "sonic" + ], + "glnorsty": [ + "strongyl", + "strongly" + ], + "aeeilnntv": [ + "levantine", + "valentine" + ], + "ekn": [ + "ken", + "nek" + ], + "einoprst": [ + "pointers", + "proteins", + "ripstone", + "tropines" + ], + "aabcelp": [ + "capable", + "pacable" + ], + "illt": [ + "itll", + "lilt", + "till" + ], + "enp": [ + "nep", + "pen" + ], + "enops": [ + "opens", + "peons", + "pones" + ], + "ehos": [ + "hoes", + "hose", + "shoe" + ], + "adns": [ + "ands", + "sand" + ], + "deiinost": [ + "desition", + "editions", + "sedition" + ], + "ailmny": [ + "amylin", + "mainly" + ], + "anr": [ + "arn", + "nar", + "ran" + ], + "aaeilmnprt": [ + "palermitan", + "parliament" + ], + "acort": [ + "actor", + "carot", + "coart", + "corta", + "croat", + "rocta", + "taroc", + "troca" + ], + "aacdellot": [ + "acetaldol", + "allocated" + ], + "ceiintz": [ + "citizen", + "zincite" + ], + "ccorsu": [ + "crocus", + "occurs", + "succor" + ], + "aeimnty": [ + "amenity", + "anytime" + ], + "eils": [ + "isle", + "leis", + "lies", + "lise", + "sile" + ], + "alotuy": [ + "layout", + "lutayo", + "outlay" + ], + "bls": [ + "bls", + "lbs" + ], + "aly": [ + "aly", + "lay" + ], + "ehorss": [ + "horses", + "shoers", + "shores" + ], + "aenwy": [ + "wayne", + "waney" + ], + "adenot": [ + "atoned", + "donate" + ], + "ekorrw": [ + "rework", + "worker" + ], + "aeilv": [ + "alive", + "avile" + ], + "eelmpt": [ + "pelmet", + "temple" + ], + "ginsw": [ + "swing", + "wings" + ], + "abekrs": [ + "bakers", + "basker", + "brakes", + "breaks", + "kebars" + ], + "aerstw": [ + "rawest", + "tawers", + "waster", + "waters" + ], + "eimoprs": [ + "imposer", + "promise", + "semipro" + ], + "hint": [ + "hint", + "thin" + ], + "degir": [ + "dirge", + "egrid", + "gride", + "redig", + "ridge" + ], + "ahirrs": [ + "arrish", + "harris", + "rarish", + "shirra", + "sirrah" + ], + "aciloprt": [ + "plicator", + "tropical" + ], + "eersstt": [ + "retests", + "setters", + "streets", + "tersest", + "testers" + ], + "ceortv": [ + "corvet", + "covert", + "vector" + ], + "beffru": [ + "buffer", + "rebuff" + ], + "elppru": [ + "pulper", + "purple" + ], + "def": [ + "def", + "fed" + ], + "adeiinnosstt": [ + "destinations", + "dissentation" + ], + "elst": [ + "lest", + "lets", + "selt" + ], + "almtuu": [ + "mutual", + "umlaut" + ], + "inoprs": [ + "orpins", + "prinos", + "prison", + "spinor" + ], + "iklls": [ + "kills", + "skill" + ], + "achirs": [ + "chairs", + "ischar", + "rachis" + ], + "denrt": [ + "drent", + "trend" + ], + "aeirrs": [ + "airers", + "ariser", + "raiser", + "serrai", + "sierra" + ], + "deerst": [ + "desert", + "deters", + "rested" + ], + "delost": [ + "oldest", + "sloted", + "stoled" + ], + "abn": [ + "abn", + "ban", + "nab" + ], + "abdhknoo": [ + "bandhook", + "handbook" + ], + "aaegintv": [ + "navigate", + "vaginate" + ], + "eorsw": [ + "owser", + "resow", + "serow", + "sower", + "swore", + "worse" + ], + "immstu": [ + "mutism", + "summit" + ], + "aep": [ + "ape", + "epa", + "pea" + ], + "acepss": [ + "scapes", + "spaces" + ], + "aceeps": [ + "escape", + "espace", + "peaces" + ], + "cnoopsu": [ + "coupons", + "soupcon" + ], + "aciils": [ + "sialic", + "silica" + ], + "abost": [ + "basto", + "boast", + "boats", + "botas", + "sabot" + ], + "acegln": [ + "cangle", + "glance" + ], + "ellst": [ + "stell", + "tells" + ], + "bdemoors": [ + "bedrooms", + "boredoms" + ], + "aklst": [ + "stalk", + "talks" + ], + "ailrst": [ + "latris", + "strail", + "strial", + "trails", + "trials" + ], + "aemrsst": [ + "masters", + "streams" + ], + "aabelrt": [ + "alberta", + "latebra", + "ratable" + ], + "gor": [ + "gor", + "gro", + "org", + "rog" + ], + "cmmnoos": [ + "commons", + "consomm" + ], + "adfru": [ + "faurd", + "fraud" + ], + "cemprstu": [ + "crumpets", + "spectrum" + ], + "akoy": [ + "kayo", + "oaky", + "okay" + ], + "aehimpss": [ + "emphasis", + "misshape" + ], + "egorr": [ + "gorer", + "roger" + ], + "acepst": [ + "aspect", + "epacts" + ], + "aeemosw": [ + "awesome", + "waesome" + ], + "cnostu": [ + "counts", + "tucson", + "uncost" + ], + "cdeipr": [ + "percid", + "priced" + ], + "achrs": [ + "chars", + "crash" + ], + "filt": [ + "filt", + "flit", + "lift" + ], + "ddeeirs": [ + "derides", + "desired", + "resided" + ], + "einrt": [ + "inert", + "inter", + "niter", + "nitre", + "retin", + "trine" + ], + "celors": [ + "ceorls", + "closer", + "cresol", + "escrol" + ], + "ails": [ + "ails", + "lasi", + "lias", + "lisa", + "sail", + "sial" + ], + "ceinprss": [ + "crispens", + "princess" + ], + "aprsy": [ + "prays", + "raspy", + "spary", + "spray" + ], + "deentx": [ + "dentex", + "extend" + ], + "adors": [ + "dorsa", + "roads", + "sarod", + "sorda" + ], + "apt": [ + "apt", + "pat", + "pta", + "tap" + ], + "adry": [ + "adry", + "dray", + "yard" + ], + "eeimmors": [ + "memories", + "memorise" + ], + "aceerst": [ + "cerates", + "creates", + "ecartes", + "secreta" + ], + "acefs": [ + "cafes", + "faces" + ], + "amory": [ + "mayor", + "moray" + ], + "aens": [ + "anes", + "sane", + "sean", + "sena" + ], + "aenorst": [ + "atoners", + "noreast", + "orantes", + "rosetan", + "seatron", + "senator", + "treason" + ], + "adegrs": [ + "degras", + "egards", + "grades" + ], + "acnoorst": [ + "cartoons", + "corantos", + "ostracon", + "socotran" + ], + "opru": [ + "pour", + "roup" + ], + "egr": [ + "erg", + "ger", + "gre", + "reg" + ], + "dggilno": [ + "godling", + "golding", + "lodging" + ], + "dstu": [ + "dust", + "stud" + ], + "eeilnrty": [ + "entirely", + "lientery" + ], + "acdeelpr": [ + "parceled", + "replaced" + ], + "elosss": [ + "losses", + "sossle" + ], + "abcmot": [ + "combat", + "tombac" + ], + "aekls": [ + "alkes", + "kales", + "lakes", + "leaks", + "sakel", + "slake" + ], + "adinnoost": [ + "anisodont", + "donations", + "sondation" + ], + "adiry": [ + "dairy", + "diary", + "yaird" + ], + "gikns": [ + "ginks", + "kings" + ], + "ghinoost": [ + "shooting", + "soothing" + ], + "eknt": [ + "kent", + "knet" + ], + "adds": [ + "adds", + "dads" + ], + "aceeinorstvv": [ + "conservative", + "conversative" + ], + "chkos": [ + "hocks", + "shock" + ], + "aabdor": [ + "aboard", + "aborad", + "abroad" + ], + "benoy": [ + "boney", + "ebony" + ], + "ain": [ + "ain", + "ani", + "ian" + ], + "aeehmoprst": [ + "atmosphere", + "shapometer" + ], + "ikss": [ + "kiss", + "skis" + ], + "abest": [ + "abets", + "baste", + "bates", + "beast", + "beats", + "betas", + "estab", + "sebat", + "tabes" + ], + "aegrstt": [ + "tagster", + "targets" + ], + "celnosu": [ + "counsel", + "unclose" + ], + "adrsy": [ + "drays", + "dryas", + "yards" + ], + "dgnoor": [ + "drongo", + "gordon" + ], + "dmo": [ + "dom", + "mod" + ], + "aefmrrs": [ + "farmers", + "framers" + ], + "eeiqrsu": [ + "esquire", + "queries", + "risquee" + ], + "hrsu": [ + "rhus", + "rush" + ], + "celrstu": [ + "cluster", + "custrel", + "cutlers", + "relucts" + ], + "eerssv": [ + "serves", + "severs", + "sevres", + "verses" + ], + "eiprrssu": [ + "spurries", + "surprise", + "uprisers" + ], + "aailprt": [ + "partial", + "patrial" + ], + "celopsu": [ + "closeup", + "couples", + "culpose", + "opuscle", + "ploceus", + "upclose" + ], + "agiknnr": [ + "narking", + "ranking" + ], + "cst": [ + "cst", + "cts", + "sct" + ], + "ceo": [ + "coe", + "eco" + ], + "aacelp": [ + "aplace", + "palace" + ], + "beglo": [ + "bogle", + "globe" + ], + "ackr": [ + "cark", + "rack" + ], + "acdeiimnot": [ + "decimation", + "medication" + ], + "aeehorsuw": [ + "housewear", + "warehouse" + ], + "ceeiprt": [ + "ereptic", + "precite", + "receipt" + ], + "ghost": [ + "ghost", + "goths" + ], + "boss": [ + "boss", + "sobs" + ], + "deipr": [ + "pride", + "pried", + "redip", + "riped" + ], + "ehikt": [ + "keith", + "kithe" + ], + "adiln": [ + "danli", + "ladin", + "linda", + "nidal" + ], + "cehil": [ + "chiel", + "chile" + ], + "aann": [ + "anan", + "anna", + "nana" + ], + "elnpty": [ + "pentyl", + "plenty" + ], + "loos": [ + "loos", + "oslo", + "sloo", + "solo", + "sool" + ], + "ahortt": [ + "athort", + "throat" + ], + "eirstw": [ + "twiers", + "wister", + "wriest", + "writes" + ], + "adps": [ + "daps", + "pads", + "spad" + ], + "eqstu": [ + "quest", + "squet" + ], + "ceeginnrs": [ + "screening", + "secerning" + ], + "anrst": [ + "rants", + "starn", + "tarns", + "trans" + ], + "eeinopr": [ + "pereion", + "peronei", + "pioneer" + ], + "aabcort": [ + "abactor", + "acrobat" + ], + "aelpst": [ + "palest", + "palets", + "pastel", + "petals", + "plates", + "pleats", + "septal", + "staple", + "tepals" + ], + "acers": [ + "acres", + "arces", + "cares", + "carse", + "caser", + "ceras", + "cesar", + "escar", + "races", + "sacre", + "scare", + "scrae", + "serac" + ], + "acehiltt": [ + "athletic", + "thetical" + ], + "egillnt": [ + "gillnet", + "telling" + ], + "aaclost": [ + "catalos", + "coastal", + "salacot" + ], + "demos": [ + "demos", + "domes", + "modes" + ], + "aekw": [ + "wake", + "weak", + "weka" + ], + "aghnruy": [ + "ahungry", + "hungary" + ], + "aeelrrtv": [ + "retravel", + "revertal", + "traveler" + ], + "aln": [ + "aln", + "lan" + ], + "eemny": [ + "enemy", + "yemen" + ], + "giinrs": [ + "rising", + "siring" + ], + "ellsw": [ + "swell", + "wells" + ], + "ghiinst": [ + "histing", + "insight" + ], + "cdeeirrstt": [ + "derestrict", + "restricted" + ], + "ceersst": [ + "cresset", + "resects", + "secrets" + ], + "aelrtt": [ + "artlet", + "latter", + "rattel", + "rattle", + "talter", + "tartle", + "tatler" + ], + "acehmnrst": [ + "merchants", + "starchmen" + ], + "aeilrrst": [ + "retrials", + "trailers" + ], + "aeeprt": [ + "petrea", + "repeat", + "retape" + ], + "aelnpty": [ + "aplenty", + "penalty" + ], + "aeglsss": [ + "gasless", + "glasses", + "sagless" + ], + "abeelns": [ + "baleens", + "enables" + ], + "cen": [ + "cen", + "enc" + ], + "bdeilru": [ + "builder", + "rebuild" + ], + "errty": [ + "retry", + "terry" + ], + "aegmnrstu": [ + "argentums", + "arguments", + "mustanger" + ], + "aaenr": [ + "anear", + "arean", + "arena" + ], + "ilppsu": [ + "pupils", + "slipup", + "upslip" + ], + "aersttw": [ + "stewart", + "swatter" + ], + "abst": [ + "bast", + "bats", + "stab", + "tabs" + ], + "aaclsu": [ + "ascula", + "calusa", + "casual", + "casula", + "causal" + ], + "hilops": [ + "philos", + "polish" + ], + "ellovy": [ + "lovely", + "volley" + ], + "aerstx": [ + "extras", + "sextar", + "taxers" + ], + "acelsu": [ + "caelus", + "casule", + "caules", + "clause" + ], + "einp": [ + "pein", + "pien", + "pine" + ], + "cgilnoo": [ + "cooling", + "locoing" + ], + "dent": [ + "dent", + "detn", + "tend" + ], + "ckrstu": [ + "struck", + "trucks" + ], + "cdeiorv": [ + "cervoid", + "divorce" + ], + "aalru": [ + "aural", + "laura" + ], + "ehopprs": [ + "hoppers", + "shopper" + ], + "kooty": [ + "kyoto", + "tokyo" + ], + "alprty": [ + "paltry", + "partly", + "raptly" + ], + "acdny": [ + "candy", + "dancy" + ], + "illps": [ + "pills", + "spill" + ], + "egirt": [ + "greit", + "tiger", + "tigre" + ], + "enorss": [ + "senors", + "sensor", + "snores" + ], + "aeglns": [ + "angels", + "angles", + "gansel", + "gleans" + ], + "acdiinorst": [ + "ancistroid", + "indicators" + ], + "adeels": [ + "leased", + "sealed" + ], + "ahit": [ + "aith", + "hait", + "hati", + "thai" + ], + "defr": [ + "derf", + "ferd", + "fred" + ], + "acilmnopt": [ + "complaint", + "compliant" + ], + "ceenss": [ + "censes", + "scenes" + ], + "almor": [ + "molar", + "moral", + "romal" + ], + "adu": [ + "aud", + "dau" + ], + "efginr": [ + "finger", + "fringe" + ], + "eekps": [ + "keeps", + "peeks", + "pekes" + ], + "acelot": [ + "acetol", + "colate", + "locate" + ], + "adeinrt": [ + "andrite", + "antired", + "detrain", + "diantre", + "radient", + "randite", + "trained" + ], + "eorss": [ + "roses", + "sores" + ], + "abls": [ + "albs", + "bals", + "blas", + "labs", + "slab" + ], + "abder": [ + "ardeb", + "barde", + "bared", + "beard", + "bread", + "debar" + ], + "denoow": [ + "enwood", + "wooden" + ], + "ghotu": [ + "ought", + "tough" + ], + "eil": [ + "eli", + "ile", + "lei", + "lie" + ], + "cehst": [ + "chest", + "stech" + ], + "einnops": [ + "pension", + "pinones" + ], + "eeenrsuv": [ + "revenues", + "unreeves", + "unsevere" + ], + "acgir": [ + "agric", + "cigar", + "craig" + ], + "eefhlrs": [ + "flesher", + "herself" + ], + "ceiinoprs": [ + "coinspire", + "precision" + ], + "eeerrssv": [ + "reserves", + "reverses", + "severers" + ], + "elosv": [ + "loves", + "solve", + "voles" + ], + "horsst": [ + "horsts", + "shorts" + ], + "cdeinooprrtu": [ + "proreduction", + "reproduction" + ], + "deegiinnrst": [ + "ingredients", + "tenderising" + ], + "cdeeorrr": [ + "recorder", + "rerecord" + ], + "acnny": [ + "canny", + "nancy" + ], + "acly": [ + "acyl", + "clay", + "lacy" + ], + "acehpst": [ + "hepcats", + "patches" + ], + "defnru": [ + "funder", + "refund" + ], + "nostw": [ + "nowts", + "towns", + "wonts" + ], + "ceeinoprt": [ + "prenotice", + "reception" + ], + "aeilms": [ + "amiles", + "asmile", + "mailes", + "mesail", + "mesial", + "samiel" + ], + "cprsuy": [ + "cyprus", + "sprucy" + ], + "ddos": [ + "dods", + "odds" + ], + "deiinrs": [ + "insider", + "siderin" + ], + "aeimnrss": [ + "arsenism", + "seminars" + ], + "aekmrs": [ + "makers", + "masker", + "remask" + ], + "aehrst": [ + "earths", + "haster", + "haters", + "hearst", + "hearts" + ], + "eev": [ + "eve", + "vee" + ], + "acerrt": [ + "arrect", + "carter", + "crater", + "recart", + "tracer" + ], + "acmr": [ + "cram", + "marc" + ], + "adeelps": [ + "delapse", + "elapsed", + "pleased", + "sepaled" + ], + "deilwy": [ + "dewily", + "widely", + "wieldy" + ], + "aehprs": [ + "phaser", + "phrase", + "raphes", + "seraph", + "shaper", + "sherpa", + "shrape" + ], + "eeginnu": [ + "genuine", + "ingenue" + ], + "agiinrs": [ + "airings", + "arising", + "raising" + ], + "aadeiprs": [ + "paradise", + "sparidae" + ], + "aders": [ + "dares", + "dears", + "rased", + "reads" + ], + "elors": [ + "lores", + "loser", + "orles", + "orsel", + "roles", + "rosel", + "soler", + "sorel" + ], + "aefl": [ + "alef", + "feal", + "flea", + "leaf" + ], + "deeils": [ + "delies", + "diesel", + "ediles", + "elides", + "sedile", + "seidel" + ], + "erssuv": [ + "servus", + "versus" + ], + "dor": [ + "dor", + "ord", + "rod" + ], + "adisu": [ + "saudi", + "udasi" + ], + "hrs": [ + "hrs", + "shr" + ], + "ikls": [ + "ilks", + "lisk", + "silk", + "skil", + "slik" + ], + "aeknr": [ + "anker", + "karen", + "kearn", + "naker", + "nerka" + ], + "cdeilmop": [ + "compiled", + "complied" + ], + "acimnort": [ + "macrotin", + "romantic" + ], + "adeeelrv": [ + "laveered", + "revealed" + ], + "abelrt": [ + "albert", + "balter", + "batler", + "labret", + "tabler", + "tarble" + ], + "bilorst": [ + "bristol", + "strobil" + ], + "acl": [ + "alc", + "cal", + "lac", + "lca" + ], + "inooprst": [ + "notropis", + "portions", + "positron", + "sorption" + ], + "ceorsst": [ + "corsets", + "costers", + "escorts", + "scoters", + "sectors" + ], + "aelmsu": [ + "amelus", + "samuel", + "ulemas" + ], + "fist": [ + "fist", + "fits", + "sift" + ], + "adegrrs": [ + "graders", + "regards" + ], + "hrtu": [ + "hurt", + "ruth", + "thru" + ], + "acehimnry": [ + "hemicrany", + "machinery" + ], + "gim": [ + "gim", + "mig" + ], + "aenrrw": [ + "rewarn", + "warner", + "warren" + ], + "ilps": [ + "lips", + "lisp", + "slip" + ], + "ddeistu": [ + "studdie", + "studied" + ], + "aeimr": [ + "aimer", + "amire", + "maire", + "marie", + "ramie" + ], + "cstu": [ + "cust", + "cuts", + "scut" + ], + "aeflnru": [ + "earnful", + "flaneur", + "frenula", + "funeral", + "furlane" + ], + "aeginrrs": [ + "earrings", + "grainers" + ], + "acehprst": [ + "chapters", + "patchers" + ], + "deinns": [ + "dennis", + "sinned" + ], + "aagmn": [ + "amang", + "ganam", + "magna", + "manga" + ], + "cdeinot": [ + "condite", + "ctenoid", + "deontic", + "noticed" + ], + "aeilrrty": [ + "literary", + "trailery" + ], + "agilnss": [ + "glassin", + "signals" + ], + "acps": [ + "caps", + "pacs", + "scap" + ], + "alt": [ + "alt", + "lat", + "tal" + ], + "aaglno": [ + "agonal", + "analog", + "angola" + ], + "aacfil": [ + "cafila", + "facial" + ], + "aelntt": [ + "latent", + "latten", + "nattle", + "talent", + "tantle" + ], + "eeekrs": [ + "kreese", + "reseek", + "seeker", + "sekere" + ], + "hoost": [ + "hoots", + "shoot", + "sooth", + "sotho", + "toosh" + ], + "effost": [ + "offset", + "setoff" + ], + "eeilt": [ + "elite", + "telei" + ], + "inps": [ + "insp", + "nips", + "pins", + "snip", + "spin" + ], + "dehissw": [ + "swedish", + "swished" + ], + "emops": [ + "epsom", + "mopes", + "poems", + "pomes" + ], + "boort": [ + "boort", + "robot" + ], + "einsstw": [ + "wisents", + "witness" + ], + "aegsst": [ + "sagest", + "stages" + ], + "deoprw": [ + "powder", + "prowed" + ], + "aessss": [ + "assess", + "sasses" + ], + "ahsw": [ + "haws", + "shaw", + "shwa", + "wash" + ], + "enosst": [ + "onsets", + "seston", + "setons", + "stenos", + "stones" + ], + "aceennrt": [ + "centenar", + "entrance" + ], + "egmno": [ + "emong", + "genom", + "gnome" + ], + "oorst": [ + "roost", + "roots", + "rotos", + "toros", + "torso" + ], + "aacdeilnort": [ + "declaration", + "redactional" + ], + "gilnos": [ + "logins", + "losing", + "soling" + ], + "adeggst": [ + "gadgets", + "stagged" + ], + "belno": [ + "nobel", + "noble" + ], + "erv": [ + "rev", + "ver" + ], + "eglops": [ + "gospel", + "spogel" + ], + "eloos": [ + "loose", + "oleos" + ], + "aims": [ + "aims", + "amis", + "mias", + "saim", + "siam", + "sima" + ], + "ceeiinprt": [ + "princeite", + "recipient" + ], + "giiklnn": [ + "inkling", + "kilning", + "linking" + ], + "adeenr": [ + "deaner", + "earned", + "endear", + "neared" + ], + "aciilms": [ + "islamic", + "laicism", + "silicam" + ], + "acehilstt": [ + "athletics", + "statelich" + ], + "aekprr": [ + "parker", + "repark" + ], + "copr": [ + "copr", + "corp", + "crop", + "porc", + "proc" + ], + "aops": [ + "asop", + "paso", + "sapo", + "soap" + ], + "eilprt": [ + "pretil", + "tripel", + "triple" + ], + "cdeersu": [ + "descure", + "recused", + "reduces", + "rescued", + "secured", + "seducer" + ], + "einortu": [ + "routine", + "tueiron" + ], + "aabcillsy": [ + "asyllabic", + "basically" + ], + "ckors": [ + "corks", + "rocks" + ], + "ainstt": [ + "astint", + "taints", + "tanist", + "titans" + ], + "ghostu": [ + "oughts", + "sought", + "toughs" + ], + "demnotu": [ + "demount", + "mounted" + ], + "aabhitt": [ + "habitat", + "tabitha" + ], + "adeimn": [ + "aidmen", + "daimen", + "damine", + "demain", + "dimane", + "maiden", + "median", + "medina" + ], + "gnsu": [ + "gnus", + "guns", + "snug", + "sung" + ], + "acennrs": [ + "canners", + "scanner" + ], + "eehinr": [ + "herein", + "inhere" + ], + "aadeimnt": [ + "aminated", + "animated", + "diamante", + "mandaite", + "mantidae" + ], + "ior": [ + "rio", + "roi" + ], + "ehor": [ + "hero", + "hoer", + "hore", + "rheo" + ], + "eeginrt": [ + "giterne", + "integer", + "retinge", + "treeing" + ], + "abcehlor": [ + "bachelor", + "crabhole", + "lochaber" + ], + "afgilln": [ + "falling", + "fingall" + ], + "aceprt": [ + "carpet", + "peract", + "preact" + ], + "eelnss": [ + "lenses", + "lessen" + ], + "abinry": [ + "binary", + "brainy" + ], + "addeentt": [ + "attended", + "dentated" + ], + "aciilnoot": [ + "coalition", + "coitional", + "lociation" + ], + "aelrtw": [ + "lawter", + "walter" + ], + "aegw": [ + "waeg", + "wage", + "wega" + ], + "aalst": [ + "atlas", + "salat", + "salta", + "talas" + ], + "adnw": [ + "dawn", + "wand" + ], + "eefls": [ + "feels", + "flees" + ], + "eorrttu": [ + "torture", + "trouter", + "tutorer" + ], + "aclr": [ + "carl", + "clar" + ], + "acot": [ + "coat", + "taco" + ], + "mrs": [ + "mrs", + "rms" + ], + "aceinnort": [ + "connarite", + "container", + "cotarnine", + "crenation", + "narcotine" + ], + "app": [ + "app", + "pap", + "ppa" + ], + "eioprrssuv": [ + "proviruses", + "supervisor" + ], + "coprs": [ + "corps", + "crops" + ], + "acorst": [ + "actors", + "arctos", + "castor", + "castro", + "costar", + "ostrca", + "scrota", + "tarocs" + ], + "eilrv": [ + "ervil", + "levir", + "liver", + "livre", + "rivel", + "viler" + ], + "abeill": [ + "alible", + "belial", + "labile", + "liable" + ], + "acellr": [ + "caller", + "cellar", + "recall" + ], + "ademssu": [ + "assumed", + "medusas" + ], + "adeeprrtu": [ + "apertured", + "departure" + ], + "beefil": [ + "befile", + "belief" + ], + "dehlorsu": [ + "shoulder", + "shoulerd" + ], + "cdeor": [ + "coder", + "cored", + "credo", + "decor" + ], + "kloopu": [ + "lookup", + "uplook" + ], + "ory": [ + "yor", + "ory", + "roy" + ], + "ino": [ + "ino", + "ion", + "oni" + ], + "adeeimrt": [ + "diameter", + "diatreme" + ], + "eefinr": [ + "enfire", + "ferine", + "fineer", + "infree", + "refine" + ], + "bddeir": [ + "bedrid", + "bidder", + "birded" + ], + "eginrs": [ + "reigns", + "renigs", + "resign", + "resing", + "sering", + "signer", + "singer" + ], + "aensv": [ + "avens", + "evans", + "naves", + "vanes" + ], + "adehlr": [ + "hareld", + "harled", + "herald" + ], + "afils": [ + "alifs", + "fails" + ], + "eikn": [ + "enki", + "kine", + "nike" + ], + "eeiinnnorttv": [ + "intervention", + "introvenient" + ], + "gilnpu": [ + "gulpin", + "puling" + ], + "aacinorttt": [ + "attraction", + "tractation" + ], + "acdfiiimnoot": [ + "domification", + "modification" + ], + "aceil": [ + "alice", + "celia", + "elaic", + "ileac" + ], + "aailnst": [ + "lanista", + "saliant", + "santali" + ], + "deer": [ + "deer", + "dere", + "dree", + "rede", + "reed" + ], + "ceim": [ + "emic", + "mice" + ], + "adilpry": [ + "pyralid", + "rapidly" + ], + "empt": [ + "empt", + "temp" + ], + "inort": [ + "intro", + "iortn", + "nitro", + "norit" + ], + "aacenrssu": [ + "anacruses", + "assurance" + ], + "astv": [ + "tavs", + "vast", + "vats" + ], + "eilnotu": [ + "elution", + "outline" + ], + "aejns": [ + "janes", + "jeans" + ], + "acefiiinortv": [ + "revification", + "verification" + ], + "ddo": [ + "dod", + "odd" + ], + "aprw": [ + "warp", + "wrap" + ], + "eefrrs": [ + "freers", + "freres", + "refers" + ], + "dmoo": [ + "doom", + "modo", + "mood" + ], + "agims": [ + "agism", + "sigma" + ], + "addemns": [ + "demands", + "maddens" + ], + "eegilnps": [ + "peelings", + "sleeping", + "speeling" + ], + "etx": [ + "ext", + "tex" + ], + "abem": [ + "ambe", + "beam", + "bema" + ], + "adegginnr": [ + "dangering", + "deranging", + "gandering", + "gardening" + ], + "aeirrv": [ + "arrive", + "varier" + ], + "acehorrst": [ + "carthorse", + "horsecart", + "orchestra" + ], + "ensstu": [ + "sunset", + "unsets" + ], + "eemoorrv": [ + "moreover", + "overmore" + ], + "adefmr": [ + "farmed", + "framed" + ], + "aacillnoot": [ + "allocation", + "locational" + ], + "aessy": [ + "eyass", + "essay" + ], + "acmps": [ + "camps", + "scamp" + ], + "acert": [ + "caret", + "carte", + "cater", + "cerat", + "crate", + "creat", + "creta", + "ecart", + "react", + "recta", + "trace" + ], + "ackps": [ + "packs", + "spack" + ], + "aaimnor": [ + "amanori", + "moarian" + ], + "hotu": [ + "hout", + "thou" + ], + "aeglrty": [ + "greatly", + "regalty" + ], + "akms": [ + "kasm", + "mask" + ], + "aeghhoopprrt": [ + "photographer", + "rephotograph" + ], + "fimnor": [ + "formin", + "inform" + ], + "aclo": [ + "alco", + "coal", + "cola", + "loca" + ], + "aeggimnss": [ + "gigmaness", + "messaging" + ], + "einntt": [ + "intent", + "nitent", + "tinnet" + ], + "aaelnpst": [ + "platanes", + "pleasant" + ], + "ekops": [ + "pokes", + "spoke" + ], + "agilmnps": [ + "psalming", + "sampling" + ], + "deirw": [ + "weird", + "wider", + "wierd", + "wired", + "wride", + "wried" + ], + "ilno": [ + "lino", + "lion", + "loin", + "noil" + ], + "ehlos": [ + "holes", + "hosel", + "sheol", + "shole" + ], + "abdel": [ + "baled", + "blade" + ], + "aelms": [ + "almes", + "amsel", + "lames", + "males", + "meals", + "melas", + "mesal", + "salem", + "samel" + ], + "acnnoy": [ + "ancony", + "canyon" + ], + "goot": [ + "goto", + "togo" + ], + "eemrst": [ + "merest", + "mester", + "meters", + "metres", + "restem", + "retems", + "temser", + "termes" + ], + "eelmry": [ + "yelmer", + "merely" + ], + "eimprst": [ + "imprest", + "permits" + ], + "ilmmsu": [ + "mulism", + "muslim" + ], + "eeelsv": [ + "levees", + "sleeve" + ], + "aceelnr": [ + "cleaner", + "enclear", + "reclean", + "relance" + ], + "beef": [ + "beef", + "feeb" + ], + "deefgin": [ + "feeding", + "feigned" + ], + "ekorst": [ + "stoker", + "stroke", + "trokes" + ], + "aegimnrsu": [ + "geraniums", + "measuring" + ], + "acd": [ + "adc", + "cad", + "dca" + ], + "ahst": [ + "hast", + "hats", + "shat", + "tash" + ], + "binor": [ + "biron", + "inorb", + "robin" + ], + "ahnors": [ + "rhason", + "sharon", + "shoran" + ], + "cpt": [ + "cpt", + "pct" + ], + "frsu": [ + "furs", + "surf" + ], + "adeeimnr": [ + "adermine", + "remained" + ], + "dir": [ + "dir", + "rid" + ], + "aeiilrs": [ + "alisier", + "israeli", + "resilia" + ], + "cdor": [ + "cord", + "dcor" + ], + "alv": [ + "lav", + "val" + ], + "efhls": [ + "flesh", + "shelf" + ], + "giimnt": [ + "miting", + "timing" + ], + "aeginnprt": [ + "enrapting", + "parenting" + ], + "foost": [ + "foots", + "sfoot", + "stoof" + ], + "adehst": [ + "deaths", + "hasted", + "sdeath" + ], + "aaiknrt": [ + "katrina", + "tarkani" + ], + "ailms": [ + "islam", + "ismal", + "limas", + "mails", + "salmi", + "simal" + ], + "denos": [ + "doesn", + "nodes", + "nosed", + "sonde" + ], + "deess": [ + "deess", + "essed", + "seeds" + ], + "cdeit": [ + "cetid", + "cited", + "edict" + ], + "eilt": [ + "itel", + "lite", + "teil", + "teli", + "tile" + ], + "defnoru": [ + "founder", + "refound", + "underfo" + ], + "adeersv": [ + "adverse", + "evaders" + ], + "egn": [ + "eng", + "gen", + "neg" + ], + "acdeghirs": [ + "discharge", + "scraighed" + ], + "nost": [ + "nots", + "snot", + "tons" + ], + "aclor": [ + "alcor", + "calor", + "carlo", + "carol", + "claro", + "coral" + ], + "ehnost": [ + "ethnos", + "honest" + ], + "ackst": [ + "stack", + "tacks" + ], + "aeehorssuw": [ + "housewares", + "warehouses" + ], + "aeinrsstt": [ + "resistant", + "straitens" + ], + "aghn": [ + "ghan", + "hang" + ], + "aceorrt": [ + "acroter", + "creator", + "reactor" + ], + "abemr": [ + "amber", + "bearm", + "bemar", + "brame", + "bream", + "embar" + ], + "acekrrt": [ + "retrack", + "tracker" + ], + "eeiprr": [ + "perrie", + "pierre" + ], + "adeehst": [ + "headset", + "sethead" + ], + "acelm": [ + "camel", + "clame", + "cleam", + "macle" + ], + "almps": [ + "lamps", + "palms", + "plasm", + "psalm", + "slamp" + ], + "degilnnruy": [ + "enduringly", + "underlying" + ], + "chi": [ + "chi", + "hic", + "ich" + ], + "acehs": [ + "aches", + "chase" + ], + "ceorstuy": [ + "cosurety", + "courtesy" + ], + "aehnst": [ + "athens", + "hasten", + "snathe", + "sneath", + "thanes" + ], + "eos": [ + "eos", + "oes", + "ose", + "soe" + ], + "deeirrt": [ + "retired", + "retried", + "tireder" + ], + "ips": [ + "ips", + "pis", + "psi", + "sip" + ], + "aekmrrs": [ + "markers", + "remarks" + ], + "aceesstt": [ + "casettes", + "cassette" + ], + "acginsu": [ + "causing", + "saucing" + ], + "aeilmnr": [ + "lairmen", + "manlier", + "marline", + "mineral", + "railmen", + "ramline" + ], + "bruy": [ + "bury", + "ruby" + ], + "eeginrst": [ + "energist", + "gentries", + "ingester", + "integers", + "reesting", + "steering" + ], + "ahiprs": [ + "parish", + "raphis", + "rhapis" + ], + "ceenrss": [ + "censers", + "screens", + "secerns" + ], + "flosw": [ + "flows", + "fowls", + "wolfs" + ], + "adimstu": [ + "dumaist", + "stadium" + ], + "imns": [ + "mins", + "nims" + ], + "cnoopu": [ + "coupon", + "uncoop" + ], + "emst": [ + "mest", + "mets", + "stem" + ], + "addersw": [ + "edwards", + "swadder", + "swarded", + "wadders" + ], + "aaelnrstt": [ + "alterants", + "tarletans", + "translate" + ], + "adeggt": [ + "gadget", + "tagged" + ], + "deotv": [ + "devot", + "voted" + ], + "eikllr": [ + "killer", + "rekill" + ], + "beiks": [ + "bikes", + "kibes" + ], + "entu": [ + "neut", + "tune" + ], + "adehps": [ + "hasped", + "pashed", + "phased", + "shaped" + ], + "aefmrr": [ + "farmer", + "framer" + ], + "cenorstu": [ + "construe", + "counters", + "recounts", + "trounces" + ], + "pstu": [ + "puts", + "sput", + "supt", + "tups" + ], + "ceeflprty": [ + "perfectly", + "prefectly" + ], + "aelsv": [ + "laves", + "salve", + "selva", + "slave", + "vales", + "valse", + "veals" + ], + "emo": [ + "eom", + "meo", + "moe" + ], + "eehors": [ + "heroes", + "reshoe" + ], + "adeinpt": [ + "depaint", + "inadept", + "painted", + "patined" + ], + "ahilnoortz": [ + "horizontal", + "notorhizal" + ], + "deelrstu": [ + "deluster", + "lustered", + "resulted", + "ulstered" + ], + "acehilt": [ + "alethic", + "ethical", + "thecial" + ], + "aceirrrs": [ + "carriers", + "scarrier" + ], + "bdeilrsu": [ + "builders", + "rebuilds" + ], + "egglrstu": [ + "gurglets", + "struggle" + ], + "aelnrtu": [ + "laurent", + "naturel", + "neutral", + "unalert" + ], + "efhirs": [ + "fisher", + "sherif" + ], + "aeprss": [ + "aspers", + "parses", + "passer", + "prases", + "repass", + "spares", + "sparse", + "spears" + ], + "abeginr": [ + "bearing", + "begrain", + "brainge", + "gribane", + "rigbane" + ], + "abdr": [ + "bard", + "brad", + "darb", + "drab" + ], + "bcmoo": [ + "combo", + "coomb" + ], + "einorss": [ + "seniors", + "sonsier" + ], + "aaciinottv": [ + "activation", + "cavitation" + ], + "dos": [ + "dos", + "ods", + "sod" + ], + "ailt": [ + "alit", + "atli", + "ital", + "lait", + "lati", + "tail", + "tali" + ], + "eilnotv": [ + "violent", + "volenti" + ], + "abins": [ + "basin", + "nabis", + "sabin" + ], + "opsu": [ + "opus", + "soup" + ], + "cginorss": [ + "crossing", + "scorings" + ], + "ceimrs": [ + "crimes", + "scrime" + ], + "enort": [ + "noter", + "notre", + "tenor", + "toner", + "trone" + ], + "aeltx": [ + "exalt", + "latex" + ], + "abcehnrs": [ + "branches", + "brechans" + ], + "aemnory": [ + "anymore", + "romneya" + ], + "dehil": [ + "delhi", + "heild", + "hidel", + "hield" + ], + "aeiln": [ + "alien", + "aline", + "anile", + "elain", + "elian", + "laine", + "liane", + "linea" + ], + "acloort": [ + "carotol", + "crotalo", + "locator" + ], + "ajnu": [ + "jaun", + "juan" + ], + "aeilmss": [ + "aimless", + "melissa", + "samiels", + "seismal" + ], + "ehisst": [ + "heists", + "shiest", + "sithes", + "thesis" + ], + "lnnoy": [ + "nylon", + "nonyl", + "nonly" + ], + "ckory": [ + "corky", + "rocky" + ], + "aabginrs": [ + "abrasing", + "bargains" + ], + "aegiinr": [ + "igraine", + "nigeria" + ], + "enps": [ + "pens", + "sepn" + ], + "deilnttu": [ + "dilutent", + "untilted", + "untitled" + ], + "ggiinns": [ + "signing", + "singing" + ], + "ailmopt": [ + "optimal", + "palmito" + ], + "cloooprst": [ + "procotols", + "protocols" + ], + "glnu": [ + "gunl", + "lung" + ], + "censt": [ + "cents", + "csnet", + "scent" + ], + "eerrstu": [ + "retruse", + "ureters" + ], + "aadeeltuv": [ + "devaluate", + "evaluated" + ], + "adesty": [ + "stayed", + "steady" + ], + "eess": [ + "eses", + "esse", + "sees" + ], + "aersv": [ + "avers", + "raves", + "saver", + "versa" + ], + "deeemr": [ + "deemer", + "meered", + "redeem", + "remede" + ], + "egorrs": [ + "groser", + "rogers" + ], + "aginr": [ + "agrin", + "argin", + "garni", + "grain" + ], + "eegimr": [ + "emigre", + "regime" + ], + "ehissw": [ + "wishes", + "wisshe" + ], + "ddeenp": [ + "depend", + "pended" + ], + "deffir": [ + "differ", + "riffed" + ], + "achimnost": [ + "macintosh", + "monachist" + ], + "acimno": [ + "anomic", + "camino", + "camion", + "conima", + "manioc", + "monica" + ], + "aeiprrs": [ + "aspirer", + "parries", + "praiser", + "rapiers", + "raspier", + "repairs", + "serpari" + ], + "abehrt": [ + "bather", + "bertha", + "breath" + ], + "celo": [ + "cole", + "ecol" + ], + "amrt": [ + "mart", + "tram" + ], + "acdeln": [ + "calden", + "candle", + "lanced" + ], + "cdeloor": [ + "colored", + "croodle", + "decolor" + ], + "eekss": [ + "kesse", + "seeks", + "skees" + ], + "gilnov": [ + "loving", + "voling" + ], + "ginortu": [ + "outgrin", + "outring", + "routing", + "touring" + ], + "cdos": [ + "cods", + "docs" + ], + "aeeilrrt": [ + "irrelate", + "retailer" + ], + "aiimnstv": [ + "nativism", + "vitamins" + ], + "aeeglnt": [ + "angelet", + "elegant" + ], + "agins": [ + "gains", + "signa" + ], + "eirssst": [ + "resists", + "sisters" + ], + "aghilmorst": [ + "algorithms", + "logarithms" + ], + "addimr": [ + "madrid", + "riddam" + ], + "agimnr": [ + "arming", + "ingram", + "margin" + ], + "aefk": [ + "fake", + "feak" + ], + "adf": [ + "afd", + "fad" + ], + "eorstv": [ + "stover", + "strove", + "troves", + "voters" + ], + "ceru": [ + "cure", + "ecru", + "eruc" + ], + "acdemmnor": [ + "commander", + "recommand" + ], + "deilors": [ + "soldier", + "solider" + ], + "ains": [ + "ains", + "anis", + "ansi", + "nais", + "nasi", + "nias", + "sain", + "sina" + ], + "ijnstu": [ + "injust", + "justin" + ], + "ghilopstt": [ + "spotlight", + "stoplight" + ], + "cikrst": [ + "strick", + "tricks" + ], + "bhrsu": [ + "brush", + "buhrs", + "shrub" + ], + "aelnps": [ + "naples", + "panels", + "planes" + ], + "aeprs": [ + "apers", + "apres", + "asper", + "pares", + "parse", + "pears", + "prase", + "presa", + "rapes", + "reaps", + "repas", + "spaer", + "spare", + "spear" + ], + "cgiilosst": [ + "glossitic", + "logistics" + ], + "bgilnow": [ + "blowing", + "bowling" + ], + "irt": [ + "rit", + "rti", + "tri" + ], + "adhins": [ + "danish", + "sandhi" + ], + "alp": [ + "alp", + "apl", + "lap", + "pal" + ], + "ikrst": [ + "skirt", + "stirk" + ], + "adginrsw": [ + "drawings", + "swarding" + ], + "elorsv": [ + "lovers", + "solver" + ], + "acimot": [ + "atomic", + "matico" + ], + "aabcir": [ + "arabic", + "cairba" + ], + "amt": [ + "amt", + "atm", + "mat", + "tam" + ], + "acehlr": [ + "rachel", + "rechal" + ], + "enov": [ + "nevo", + "oven" + ], + "achins": [ + "chains", + "chinas" + ], + "cghiinstw": [ + "switching", + "witchings" + ], + "aadeprst": [ + "adapters", + "readapts" + ], + "imoprst": [ + "imports", + "primost", + "tropism" + ], + "benorz": [ + "bonzer", + "bronze" + ], + "adnsy": [ + "dansy", + "sandy" + ], + "aaeinoprst": [ + "anisoptera", + "asperation", + "separation" + ], + "cepsstu": [ + "suscept", + "suspect" + ], + "acmor": [ + "carom", + "coram", + "macro", + "marco" + ], + "deenrs": [ + "denser", + "enders", + "resend", + "sender" + ], + "aadmnorty": [ + "damnatory", + "mandatory" + ], + "gmy": [ + "gym", + "myg" + ], + "iinottu": [ + "intuito", + "tuition" + ], + "eopssu": [ + "esopus", + "opuses", + "pousse", + "spouse" + ], + "ceiotx": [ + "coxite", + "exotic" + ], + "ginpsu": [ + "pignus", + "spuing" + ], + "aehrstt": [ + "hatters", + "rathest", + "shatter", + "threats" + ], + "acms": [ + "cams", + "macs", + "masc", + "scam" + ], + "ejlo": [ + "joel", + "jole" + ], + "deorsty": [ + "destroy", + "stroyed" + ], + "aostu": [ + "aotus", + "autos", + "outas" + ], + "eeimprss": [ + "emprises", + "impreses", + "mesprise", + "premises", + "spiremes" + ], + "eprry": [ + "perry", + "pryer", + "repry" + ], + "denoz": [ + "dozen", + "zendo", + "zoned" + ], + "eehtt": [ + "teeth", + "theet", + "thete" + ], + "ampst": [ + "stamp", + "tamps" + ], + "lostu": [ + "lotus", + "louts", + "tolus" + ], + "aadeeprst": [ + "asperated", + "estrapade", + "paederast", + "separated" + ], + "ant": [ + "ant", + "nat", + "tan" + ], + "cdeeiirtv": [ + "creditive", + "directive" + ], + "aerrstt": [ + "ratters", + "restart", + "starter" + ], + "bdenru": [ + "bunder", + "burden", + "burned", + "unbred" + ], + "aepst": [ + "paste", + "pates", + "peats", + "septa", + "spate", + "tapes", + "tepas" + ], + "ilms": [ + "mils", + "slim" + ], + "aelmp": [ + "ample", + "elamp", + "maple" + ], + "eklu": [ + "leuk", + "luke" + ], + "aeeilrrst": [ + "retailers", + "serratile" + ], + "deopt": [ + "depot", + "opted", + "toped" + ], + "eip": [ + "epi", + "pie" + ], + "eiimnoss": [ + "emission", + "misiones", + "simonies" + ], + "eept": [ + "pete", + "tepe" + ], + "ceps": [ + "ceps", + "psec", + "spec" + ], + "efinst": [ + "feints", + "festin", + "finest", + "infest" + ], + "aelrty": [ + "elytra", + "lyrate", + "raylet", + "realty", + "telary" + ], + "bow": [ + "bow", + "wob" + ], + "aaenpprt": [ + "apparent", + "trappean" + ], + "aciilnnorsttu": [ + "instructional", + "nonaltruistic" + ], + "beopr": [ + "probe", + "rebop" + ], + "diim": [ + "imid", + "midi" + ], + "eiimnoprsss": [ + "impressions", + "permissions" + ], + "eilott": [ + "lottie", + "toilet", + "tolite" + ], + "adeknr": [ + "danker", + "darken", + "endark", + "kanred", + "narked", + "ranked" + ], + "eorstu": [ + "ouster", + "outers", + "routes", + "souter", + "stoure", + "touser", + "trouse" + ], + "ceeorrv": [ + "coverer", + "recover" + ], + "aceehinrt": [ + "catherine", + "heritance" + ], + "bdegu": [ + "budge", + "debug" + ], + "cddeeoprru": [ + "procedured", + "reproduced" + ], + "hno": [ + "hon", + "noh" + ], + "aillsv": [ + "vallis", + "villas" + ], + "eeginp": [ + "epigne", + "genepi", + "peeing" + ], + "bgino": [ + "bingo", + "boing" + ], + "notu": [ + "tuno", + "unto" + ], + "acceimr": [ + "ceramic", + "racemic" + ], + "apsy": [ + "aspy", + "yaps", + "pays", + "pyas", + "spay" + ], + "efginrs": [ + "fingers", + "fringes" + ], + "deeilrsv": [ + "delivers", + "desilver", + "silvered", + "slivered" + ], + "deels": [ + "deles", + "leeds", + "lesed" + ], + "acder": [ + "acred", + "arced", + "cader", + "cadre", + "cared", + "cedar", + "cread", + "creda", + "raced" + ], + "aeehrstt": [ + "earthset", + "streahte", + "theaters", + "theatres" + ], + "dflo": [ + "dolf", + "fold" + ], + "abilr": [ + "blair", + "brail", + "libra" + ], + "ehops": [ + "hopes", + "phose", + "shope" + ], + "amnos": [ + "manos", + "manso", + "mason", + "moans", + "monas", + "mosan", + "nomas" + ], + "civ": [ + "civ", + "vic" + ], + "aimor": [ + "maori", + "mario", + "moira" + ], + "ops": [ + "ops", + "pos", + "sop" + ], + "aachtt": [ + "attach", + "chatta" + ], + "ceeilnss": [ + "licenses", + "silences" + ], + "ilstu": [ + "litus", + "sluit", + "tulsi" + ], + "deiprs": [ + "prides", + "prised", + "redips", + "spider", + "spired", + "spried" + ], + "hpsy": [ + "hyps", + "phys", + "syph" + ], + "aegnrs": [ + "angers", + "ganser", + "granes", + "ranges", + "sanger", + "serang" + ], + "dhnosu": [ + "hounds", + "hudson", + "unshod" + ], + "adeilost": [ + "diastole", + "isolated", + "sodalite", + "solidate" + ], + "eiimnrt": [ + "interim", + "mintier", + "termini" + ], + "adeissst": [ + "assisted", + "disseats" + ], + "aegimnrst": [ + "emigrants", + "germanist", + "mastering", + "streaming" + ], + "cehos": [ + "choes", + "chose", + "echos" + ], + "acdeinsty": [ + "asyndetic", + "cystidean", + "syndicate" + ], + "abinoort": [ + "abortion", + "orbation", + "robotian" + ], + "adgilo": [ + "algoid", + "dialog", + "goliad" + ], + "ablst": [ + "blast", + "blats" + ], + "elop": [ + "lope", + "olpe", + "pole" + ], + "cddeinostu": [ + "deductions", + "discounted" + ], + "aehrstv": [ + "harvest", + "thraves" + ], + "ehmorst": [ + "mothers", + "smother", + "thermos" + ], + "acdeiln": [ + "candiel", + "cladine", + "decalin", + "iceland", + "inlaced" + ], + "acdelns": [ + "calends", + "candles" + ], + "aadginortu": [ + "argonautid", + "graduation" + ], + "agiilns": [ + "aisling", + "liasing", + "nilgais", + "sailing" + ], + "acders": [ + "cadres", + "cedars", + "sacred", + "scared" + ], + "cehmor": [ + "chomer", + "chrome" + ], + "eilorv": [ + "lovier", + "oliver", + "violer", + "virole" + ], + "cgnoo": [ + "cogon", + "congo" + ], + "egln": [ + "engl", + "genl", + "glen", + "leng" + ], + "adelsy": [ + "delays", + "slayed" + ], + "eilov": [ + "olive", + "ovile", + "voile" + ], + "bcery": [ + "becry", + "bryce" + ], + "cdeors": [ + "coders", + "credos", + "decors", + "escrod", + "scored" + ], + "celno": [ + "clone", + "colen" + ], + "aioss": [ + "oasis", + "ossia", + "sosia" + ], + "abeeilns": [ + "balinese", + "baseline" + ], + "agnry": [ + "angry", + "rangy" + ], + "acdeiilnt": [ + "ctenidial", + "identical" + ], + "abeelst": [ + "beatles", + "besteal", + "estable" + ], + "eeinnortt": [ + "intertone", + "retention" + ], + "aalmt": [ + "malta", + "talma", + "tamal" + ], + "efrry": [ + "ferry", + "freyr", + "fryer", + "refry" + ], + "aeginst": [ + "easting", + "eatings", + "gainset", + "genista", + "ingates", + "ingesta", + "seating", + "signate", + "teasing" + ], + "aahmo": [ + "haoma", + "omaha" + ], + "eirt": [ + "iter", + "reit", + "rite", + "teri", + "tier", + "tire" + ], + "elmot": [ + "metol", + "molet", + "motel" + ], + "innosu": [ + "nonius", + "unions", + "unison" + ], + "ainrst": [ + "instar", + "santir", + "strain", + "trains" + ], + "adgr": [ + "darg", + "drag", + "gard", + "grad" + ], + "ehmoosw": [ + "somehow", + "whosome" + ], + "adeerrst": [ + "arrested", + "retreads", + "serrated", + "treaders" + ], + "eipr": [ + "irpe", + "peri", + "pier", + "prie", + "ripe" + ], + "elry": [ + "lyre", + "rely" + ], + "acdeiimnost": [ + "daemonistic", + "medications" + ], + "ceehorrst": [ + "orchester", + "orchestre", + "rochester", + "torcheres" + ], + "dginy": [ + "dying", + "dingy" + ], + "ckstu": [ + "stuck", + "tucks" + ], + "acgilnp": [ + "capling", + "placing" + ], + "cefossu": [ + "focuses", + "fucoses" + ], + "eiostv": [ + "soviet", + "sovite" + ], + "aertty": [ + "attery", + "yatter", + "treaty" + ], + "aeinrrt": [ + "arterin", + "retrain", + "terrain", + "trainer" + ], + "agnor": [ + "agron", + "angor", + "argon", + "garon", + "goran", + "grano", + "groan", + "nagor", + "orang", + "organ", + "rogan", + "ronga" + ], + "aacdensv": [ + "advances", + "canvased" + ], + "elmno": [ + "lemon", + "melon", + "monel" + ], + "pty": [ + "pty", + "typ" + ], + "nstu": [ + "nuts", + "stun", + "sunt", + "tsun", + "tuns" + ], + "ailn": [ + "alin", + "anil", + "lain", + "lina", + "nail" + ], + "aeinnv": [ + "avenin", + "vienna" + ], + "anps": [ + "naps", + "pans", + "snap", + "span" + ], + "adfnorst": [ + "forstand", + "stanford" + ], + "aestttu": [ + "statute", + "tautest" + ], + "acehlp": [ + "chapel", + "lepcha", + "pleach" + ], + "aelrsy": [ + "layers", + "relays", + "reslay", + "slayer" + ], + "abceeelrt": [ + "celebrate", + "erectable" + ], + "cdeemoprss": [ + "compressed", + "decompress" + ], + "deirr": [ + "derri", + "direr", + "drier", + "irred", + "rider" + ], + "adirsu": [ + "darius", + "radius" + ], + "achiinrsst": [ + "christians", + "sinarchist" + ], + "eeiimprssv": [ + "impressive", + "permissive" + ], + "ceelrstu": [ + "cruelest", + "lectures" + ], + "einsw": [ + "sewin", + "sinew", + "swine", + "wines", + "wisen" + ], + "cpsu": [ + "cpus", + "cups", + "cusp", + "scup" + ], + "accdeinst": [ + "accidents", + "desiccant" + ], + "aceilnoort": [ + "corelation", + "iconolater", + "relocation" + ], + "arsttu": [ + "astrut", + "rattus", + "stuart" + ], + "ail": [ + "ail", + "ila", + "lai" + ], + "emnoor": [ + "monroe", + "mooner", + "morone" + ], + "deenrt": [ + "denter", + "rented", + "tender", + "tendre", + "terned" + ], + "eeeprrsv": [ + "perverse", + "preserve" + ], + "emop": [ + "mope", + "poem", + "pome" + ], + "deginnsu": [ + "undesign", + "unsigned", + "unsinged" + ], + "aginsty": [ + "staying", + "stygian" + ], + "aeerst": [ + "aretes", + "asteer", + "easter", + "eastre", + "eaters", + "reseat", + "saeter", + "seater", + "staree", + "teaser", + "teresa" + ], + "eehiorst": [ + "isothere", + "theories", + "theorise" + ], + "aeiprs": [ + "aspire", + "paries", + "persia", + "praise", + "sirpea", + "spirae", + "spirea" + ], + "ceeinv": [ + "cevine", + "evince", + "venice" + ], + "aeinost": [ + "aeonist", + "asiento", + "atonies", + "estonia", + "satieno" + ], + "aeenrtv": [ + "aventre", + "nervate", + "veteran" + ], + "adgilnn": [ + "danglin", + "landing" + ], + "aeikt": [ + "katie", + "keita" + ], + "aceiilrst": [ + "clarities", + "eristical", + "realistic" + ], + "aelrx": [ + "laxer", + "relax" + ], + "aeegginnrt": [ + "generating", + "greatening", + "renegating" + ], + "aben": [ + "bane", + "bean", + "bena" + ], + "abenst": [ + "absent", + "basnet", + "basten", + "besant" + ], + "acdeoru": [ + "acuerdo", + "cordeau", + "ecuador" + ], + "iiprsst": [ + "pristis", + "spirits", + "tripsis" + ], + "aflot": [ + "aloft", + "float", + "flota" + ], + "cilno": [ + "colin", + "conli", + "nicol" + ], + "abis": [ + "absi", + "bais", + "bias", + "isba" + ], + "ahpst": [ + "paths", + "spath", + "staph" + ], + "beinrtu": [ + "tribune", + "tuberin", + "turbine" + ], + "eelssv": [ + "selves", + "vessel" + ], + "acdis": [ + "acids", + "asdic", + "cadis", + "caids", + "sadic" + ], + "eirssuv": [ + "servius", + "survise", + "viruses" + ], + "aceehpr": [ + "cheaper", + "peacher" + ], + "adimt": [ + "admit", + "atmid" + ], + "emm": [ + "emm", + "mem" + ], + "aamos": [ + "omasa", + "samoa" + ], + "aceinorst": [ + "atroscine", + "certosina", + "creations", + "narcotise", + "ostracine", + "reactions", + "secration", + "tinoceras", + "tricosane" + ], + "aegilns": [ + "inglesa", + "leasing", + "linages", + "sealing" + ], + "aelnru": [ + "alrune", + "lunare", + "neural", + "ulnare", + "unreal" + ], + "adqsu": [ + "quads", + "squad" + ], + "aeelrt": [ + "earlet", + "elater", + "relate" + ], + "aegsw": [ + "swage", + "wages" + ], + "effrsu": [ + "ruffes", + "suffer" + ], + "eforsst": [ + "forests", + "fosters" + ], + "anno": [ + "anno", + "anon", + "nona", + "onan" + ], + "aailmrt": [ + "marital", + "martial" + ], + "aeinrt": [ + "anteri", + "entria", + "nerita", + "ratine", + "retain", + "retina", + "tanier" + ], + "elnntu": [ + "nunlet", + "tunnel", + "unlent" + ], + "eegnrs": [ + "genres", + "greens" + ], + "aenpstt": [ + "patents", + "pattens" + ], + "achos": [ + "chaos", + "oshac" + ], + "aehtw": [ + "awhet", + "wheat" + ], + "adeginrs": [ + "deraigns", + "disrange", + "gradines", + "readings" + ], + "ceilmopr": [ + "compiler", + "complier" + ], + "abess": [ + "bases", + "sabes" + ], + "accdesu": [ + "accused", + "succade" + ], + "dlou": [ + "loud", + "ludo" + ], + "bdeir": [ + "bider", + "birde", + "bredi", + "bride", + "rebid" + ], + "aceinnsst": [ + "anticness", + "cantiness", + "incessant", + "instances" + ], + "achnor": [ + "anchor", + "archon", + "charon", + "rancho" + ], + "astt": [ + "stat", + "tats" + ], + "eessx": [ + "essex", + "sexes" + ], + "abceehs": [ + "beaches", + "bechase" + ], + "deflors": [ + "folders", + "refolds" + ], + "eorrstu": [ + "rouster", + "routers", + "tourers", + "trouser" + ], + "bios": [ + "bios", + "bois", + "obis" + ], + "cmp": [ + "cpm", + "pcm" + ], + "eeht": [ + "hete", + "thee" + ], + "eopp": [ + "epop", + "pepo", + "pope" + ], + "adlnor": [ + "androl", + "arnold", + "ladron", + "lardon", + "lordan", + "roland", + "ronald" + ], + "cchiks": [ + "chicks", + "schick" + ], + "aceltt": [ + "cattle", + "tectal" + ], + "abm": [ + "amb", + "bam", + "mab" + ], + "aacdilr": [ + "cardial", + "radical" + ], + "aeerrstu": [ + "austerer", + "treasure" + ], + "adelor": [ + "loader", + "ordeal", + "reload" + ], + "aeflm": [ + "flame", + "fleam" + ], + "aknst": [ + "stank", + "tanks" + ], + "aemnorty": [ + "myronate", + "monetary", + "naometry" + ], + "aceilprst": [ + "palestric", + "particles" + ], + "acdeinoort": [ + "aerodontic", + "carotenoid", + "coordinate", + "coronadite", + "decoration" + ], + "aiktuw": [ + "kuwait", + "waukit" + ], + "eilmy": [ + "elymi", + "emily", + "limey" + ], + "aiiilmnott": [ + "limitation", + "militation" + ], + "ceilmop": [ + "compile", + "polemic" + ], + "beerstw": [ + "bestrew", + "webster" + ], + "abdilr": [ + "bildar", + "bridal", + "labrid", + "libard", + "ribald" + ], + "agm": [ + "gam", + "mag" + ], + "efghirt": [ + "fighter", + "freight", + "refight" + ], + "abeert": [ + "beater", + "berate", + "betear", + "rebate", + "rebeat" + ], + "adnsu": [ + "sudan", + "unsad" + ], + "cer": [ + "cre", + "rec" + ], + "aceforsst": [ + "factoress", + "forecasts" + ], + "eekn": [ + "keen", + "knee" + ], + "eppr": [ + "perp", + "prep", + "repp" + ], + "cehm": [ + "chem", + "mech" + ], + "aefsstt": [ + "fastest", + "setfast" + ], + "belrtu": [ + "bulter", + "burlet", + "butler", + "turble" + ], + "acdeginort": [ + "centigrado", + "decorating" + ], + "allopry": [ + "payroll", + "polarly" + ], + "hinst": [ + "hints", + "thins", + "thisn" + ], + "acellops": [ + "collapse", + "escallop" + ], + "aaceimrs": [ + "americas", + "cramasie", + "mesaraic" + ], + "oprs": [ + "pros", + "spor" + ], + "aailtv": [ + "avital", + "latvia" + ], + "aelrry": [ + "rarely", + "rearly" + ], + "aahmrt": [ + "amarth", + "martha", + "matrah" + ], + "eeginss": [ + "genesis", + "seeings" + ], + "aegru": [ + "argue", + "auger", + "gaure", + "rugae" + ], + "aelmst": [ + "lamest", + "metals", + "samlet" + ], + "egilntt": [ + "ettling", + "letting" + ], + "cir": [ + "cir", + "ric" + ], + "aeijm": [ + "jaime", + "jamie" + ], + "aceilprt": [ + "particle", + "plicater", + "prelatic" + ], + "ceeinopprt": [ + "perception", + "preception" + ], + "aeilmnrs": [ + "marlines", + "minerals", + "mislearn" + ], + "adeisv": [ + "advise", + "davies", + "visaed" + ], + "belostt": [ + "bottles", + "setbolt" + ], + "aaceeinnrss": [ + "necessarian", + "renaissance" + ], + "aars": [ + "rasa", + "sara" + ], + "acdeinnor": [ + "cerdonian", + "encardion", + "ordinance" + ], + "eghhsu": [ + "heughs", + "hughes", + "sheugh" + ], + "eeffjry": [ + "jeffery", + "jeffrey" + ], + "aeeoprst": [ + "asterope", + "operates", + "protease" + ], + "acors": [ + "arcos", + "crosa", + "orcas", + "oscar", + "sacro" + ], + "emnsu": [ + "menus", + "neums", + "sumen" + ], + "aeelrv": [ + "laveer", + "leaver", + "reveal", + "vealer" + ], + "aimno": [ + "amino", + "animo", + "inoma", + "naomi", + "omani", + "omina" + ], + "cciilns": [ + "cinclis", + "clinics" + ], + "lms": [ + "msl", + "sml" + ], + "cow": [ + "cow", + "cwo" + ], + "gilny": [ + "lying", + "lingy" + ], + "deiv": [ + "devi", + "dive", + "vide", + "vied" + ], + "abnry": [ + "barny", + "bryan" + ], + "eoprstt": [ + "potters", + "protest", + "spotter" + ], + "eirst": [ + "iters", + "reist", + "resit", + "rites", + "steri", + "stire", + "tiers", + "tires", + "tries" + ], + "aghinsw": [ + "hawsing", + "shawing", + "washing" + ], + "celorsu": [ + "closure", + "colures" + ], + "adir": [ + "arid", + "dari", + "raid" + ], + "beimrt": [ + "betrim", + "timber", + "timbre" + ], + "eeinnst": [ + "ensient", + "intense", + "sennite", + "sentine" + ], + "ehorssw": [ + "reshows", + "showers" + ], + "gilnru": [ + "luring", + "ruling", + "urling" + ], + "dirt": [ + "dirt", + "trid" + ], + "doprs": [ + "dorps", + "drops", + "prods", + "sprod" + ], + "gilnpsu": [ + "pulings", + "pulsing" + ], + "deellnor": [ + "enrolled", + "rondelle" + ], + "cersw": [ + "crews", + "screw" + ], + "eiimnrsst": [ + "ministers", + "misinters" + ], + "abelm": [ + "amble", + "belam", + "blame", + "mabel", + "melba" + ], + "aeegnv": [ + "avenge", + "geneva", + "vangee" + ], + "dist": [ + "dist", + "dits", + "stid" + ], + "addehn": [ + "hadden", + "handed" + ], + "aeiknt": [ + "intake", + "kentia", + "tankie" + ], + "afilmnor": [ + "formalin", + "formnail", + "informal", + "laniform" + ], + "accehimns": [ + "mechanics", + "mischance" + ], + "ffity": [ + "fifty", + "tiffy" + ], + "adeehrs": [ + "adheres", + "headers", + "hearsed", + "sheared" + ], + "aceilmnru": [ + "ceruminal", + "melanuric", + "numerical" + ], + "aerssu": [ + "assure", + "urases" + ], + "dimosu": [ + "modius", + "odiums", + "sodium" + ], + "ehmnoor": [ + "hormone", + "moorhen" + ], + "gipr": [ + "grip", + "prig" + ], + "aalnv": [ + "alvan", + "naval" + ], + "aceilnopr": [ + "oliprance", + "porcelain" + ], + "bdegirs": [ + "begirds", + "bridges" + ], + "attw": [ + "twat", + "watt" + ], + "cdeent": [ + "cedent", + "decent", + "decnet" + ], + "acginst": [ + "actings", + "casting" + ], + "adnoty": [ + "adyton", + "dayton" + ], + "aclors": [ + "carlos", + "carols", + "claros", + "corals" + ], + "enor": [ + "nore", + "oner", + "reno", + "rone" + ], + "adnno": [ + "donna", + "nonda" + ], + "abcin": [ + "bacin", + "cabin" + ], + "acginnns": [ + "cannings", + "scanning" + ], + "ailmuv": [ + "maulvi", + "valium" + ], + "cdelorss": [ + "cordless", + "scolders" + ], + "defir": [ + "fired", + "fried" + ], + "airsy": [ + "sairy", + "syria" + ], + "eikln": [ + "inkle", + "liken" + ], + "glos": [ + "glos", + "logs", + "slog" + ], + "eorrt": [ + "retro", + "roter" + ], + "elo": [ + "leo", + "loe", + "ole" + ], + "accilrru": [ + "circular", + "curricla" + ], + "isstu": [ + "situs", + "suist", + "suits", + "tissu" + ], + "agr": [ + "agr", + "arg", + "gar", + "gra", + "rag" + ], + "abeirrz": [ + "bizarre", + "brazier" + ], + "ego": [ + "ego", + "geo" + ], + "bbinor": [ + "ribbon", + "robbin" + ], + "deo": [ + "doe", + "edo", + "ode" + ], + "aprsttu": [ + "startup", + "upstart" + ], + "ait": [ + "ait", + "ati", + "ita", + "tai" + ], + "giiknss": [ + "kissing", + "skiings" + ], + "adhny": [ + "anhyd", + "haydn", + "handy" + ], + "apsw": [ + "paws", + "swap", + "waps", + "wasp" + ], + "eegmorty": [ + "geoemtry", + "geometry" + ], + "abs": [ + "abs", + "asb", + "bas", + "sab" + ], + "ims": [ + "ism", + "mis", + "sim" + ], + "dehiss": [ + "dishes", + "hissed" + ], + "aceilpr": [ + "caliper", + "earclip", + "picarel", + "replica" + ], + "beirt": [ + "biter", + "brite", + "tiber", + "tribe" + ], + "aderst": [ + "daters", + "derats", + "stader", + "stared", + "sterad", + "strade", + "trades", + "treads" + ], + "eknu": [ + "neuk", + "nuke" + ], + "aclm": [ + "calm", + "clam" + ], + "cdeiop": [ + "copied", + "epodic" + ], + "aciost": [ + "coatis", + "isotac", + "scotia" + ], + "afgimnr": [ + "farming", + "fingram", + "framing" + ], + "bginos": [ + "bingos", + "gibson", + "obsign" + ], + "orty": [ + "ryot", + "royt", + "tyro", + "tory", + "troy" + ], + "ellorr": [ + "reroll", + "roller" + ], + "aeginorz": [ + "agonizer", + "orangize", + "organize" + ], + "aacdeeipprt": [ + "appreciated", + "appredicate" + ], + "ceilno": [ + "cineol", + "clione", + "cloine", + "coelin", + "encoil", + "enolic" + ], + "ailnot": [ + "italon", + "latino", + "lation", + "talion" + ], + "aaghn": [ + "aghan", + "ghana" + ], + "deegs": [ + "edges", + "sedge" + ], + "adehlns": [ + "handles", + "handsel" + ], + "deiklls": [ + "deskill", + "dillesk", + "skilled" + ], + "aahmst": [ + "amsath", + "asthma" + ], + "ipr": [ + "ipr", + "pir", + "rip" + ], + "aderrw": [ + "drawer", + "redraw", + "reward", + "warder", + "warred" + ], + "arty": [ + "arty", + "atry", + "tray" + ], + "inpstu": [ + "inputs", + "ptinus", + "unspit" + ], + "aaeinrrstw": [ + "warranties", + "warrantise" + ], + "adelm": [ + "demal", + "lamed", + "medal" + ], + "aklsw": [ + "lawks", + "walks" + ], + "bhoot": [ + "bhoot", + "booth" + ], + "cdeeeflrt": [ + "redeflect", + "reflected" + ], + "benos": [ + "bones", + "ebons" + ], + "bdeer": [ + "brede", + "breed", + "rebed" + ], + "cdeeortt": [ + "cottered", + "detector" + ], + "deginor": [ + "eroding", + "gironde", + "groined", + "ignored", + "negroid", + "redoing" + ], + "alopr": [ + "parol", + "polar", + "poral", + "proal" + ], + "aaegilntuv": [ + "evaluating", + "vaginulate" + ], + "ilp": [ + "ipl", + "lip", + "pil", + "pli" + ], + "aeghrt": [ + "gareth", + "gather" + ], + "adeflr": [ + "alfred", + "fardel", + "flared" + ], + "acery": [ + "carey", + "craye" + ], + "elmost": [ + "molest", + "motels" + ], + "cdeeoprs": [ + "procedes", + "proceeds" + ], + "cdeiinrt": [ + "indicter", + "indirect", + "reindict" + ], + "aerrst": [ + "arrest", + "astrer", + "rarest", + "raster", + "raters", + "starer", + "tarres", + "terras", + "treasr" + ], + "deelpy": [ + "deeply", + "yelped" + ], + "cit": [ + "cit", + "tic" + ], + "aaimnr": [ + "airman", + "amarin", + "marian", + "marina", + "mirana" + ], + "abinos": [ + "basion", + "bonsai", + "sabino" + ], + "aiopt": [ + "patio", + "taipo", + "topia" + ], + "aceelnort": [ + "antrocele", + "coeternal", + "tolerance" + ], + "aceiirttvy": [ + "creativity", + "reactivity" + ], + "dlloy": [ + "dolly", + "lloyd" + ], + "deey": [ + "eyed", + "yede" + ], + "abgr": [ + "brag", + "garb", + "grab" + ], + "ceinoprst": [ + "inceptors", + "inspector" + ], + "abens": [ + "banes", + "beans", + "besan" + ], + "eills": [ + "liles", + "lisle", + "selli" + ], + "aekns": [ + "kanes", + "skean", + "snake", + "sneak" + ], + "adelnor": [ + "endoral", + "ladrone", + "leonard" + ], + "ailnps": [ + "lapins", + "plains", + "spinal" + ], + "admnory": [ + "doryman", + "raymond" + ], + "adeiiintt": [ + "dietitian", + "initiated" + ], + "floo": [ + "fool", + "loof", + "olof" + ], + "aacelnrst": [ + "ancestral", + "lancaster" + ], + "beeorsv": [ + "observe", + "obverse", + "verbose" + ], + "aceinnorst": [ + "containers", + "resanction", + "sanctioner" + ], + "aklr": [ + "karl", + "kral", + "lark" + ], + "aacilr": [ + "alaric", + "racial" + ], + "aeeginrtt": [ + "argentite", + "grenatite", + "integrate" + ], + "abdemru": [ + "bermuda", + "rumbaed" + ], + "aaadmn": [ + "amadan", + "amanda", + "manada" + ], + "beilmos": [ + "mobiles", + "obelism" + ], + "aceerrt": [ + "caterer", + "recrate", + "retrace", + "terrace" + ], + "deeilpr": [ + "periled", + "replied" + ], + "elnosv": [ + "novels", + "sloven", + "volens" + ], + "aijl": [ + "jail", + "lija" + ], + "aeflsy": [ + "fayles", + "safely" + ], + "deikny": [ + "dinkey", + "kidney" + ], + "denss": [ + "sends", + "sneds" + ], + "abdelru": [ + "delubra", + "durable" + ], + "horstw": [ + "rowths", + "throws", + "whorts", + "worths" + ], + "eimorstu": [ + "moisture", + "semitour" + ], + "eimrt": [ + "ermit", + "merit", + "miter", + "mitre", + "mtier", + "remit", + "timer" + ], + "abelstt": [ + "battels", + "battles", + "tablets" + ], + "acdeorstu": [ + "aeroducts", + "ceratodus", + "croustade", + "educators" + ], + "aegilmnnt": [ + "alignment", + "lamenting" + ], + "aey": [ + "aye", + "yea" + ], + "eorstw": [ + "restow", + "stower", + "towers", + "towser", + "worset" + ], + "ackrs": [ + "carks", + "racks" + ], + "acel": [ + "acle", + "alce", + "alec", + "lace" + ], + "ansty": [ + "antsy", + "nasty", + "santy", + "styan", + "tansy" + ], + "adeilttu": [ + "altitude", + "latitude" + ], + "gluy": [ + "guly", + "ugly" + ], + "deiopsst": [ + "deposits", + "topsides" + ], + "asttw": [ + "twats", + "watts" + ], + "ahrt": [ + "hart", + "rath", + "tahr", + "thar", + "trah" + ], + "abdenrr": [ + "bernard", + "brander", + "rebrand" + ], + "bestu": [ + "stube", + "subet", + "tubes" + ], + "clo": [ + "clo", + "col", + "loc" + ], + "eiprst": [ + "esprit", + "priest", + "pteris", + "ripest", + "sitrep", + "sprite", + "stripe", + "tripes" + ], + "dfloy": [ + "floyd", + "foldy" + ], + "acenrt": [ + "canter", + "carnet", + "centra", + "cranet", + "creant", + "cretan", + "nectar", + "recant", + "tanrec", + "trance" + ], + "achilnos": [ + "lichanos", + "nicholas" + ], + "bilo": [ + "bilo", + "biol", + "boil", + "lobi", + "obli" + ], + "bdelnu": [ + "bundle", + "unbled" + ], + "iknss": [ + "sinks", + "skins" + ], + "adeilm": [ + "aldime", + "mailed", + "medial" + ], + "aderrsw": [ + "drawers", + "redraws", + "resward", + "rewards", + "warders" + ], + "ddeefn": [ + "defend", + "fended" + ], + "acddeiim": [ + "mediacid", + "medicaid" + ], + "eort": [ + "rote", + "tore" + ], + "ehlsw": [ + "welsh", + "whsle" + ], + "elnost": [ + "lentos", + "solent", + "stolen", + "telson" + ], + "aci": [ + "cai", + "cia" + ], + "deeeimnrst": [ + "densimeter", + "determines", + "misentered" + ], + "lopy": [ + "ploy", + "poly" + ], + "aers": [ + "ares", + "arse", + "ears", + "eras", + "rase", + "sare", + "sear", + "sera" + ], + "aalnrstu": [ + "naturals", + "saturnal" + ], + "deelnrs": [ + "lenders", + "relends", + "slender" + ], + "eemr": [ + "emer", + "erme", + "meer", + "mere", + "reem" + ], + "aeegrs": [ + "agrees", + "eagers", + "eagres", + "grease", + "ragees", + "sageer" + ], + "ceehrs": [ + "cheers", + "creesh" + ], + "dgi": [ + "dig", + "gid" + ], + "ehimnnpstu": [ + "punishment", + "unshipment" + ], + "aceinooprrt": [ + "incorporate", + "procreation" + ], + "aeerrrstu": [ + "serrature", + "treasurer" + ], + "ceeenss": [ + "essence", + "necesse", + "senesce" + ], + "ehlmos": [ + "holmes", + "mohels" + ], + "gis": [ + "gis", + "sig" + ], + "ceehrst": [ + "chester", + "etchers", + "retches", + "tresche" + ], + "isttw": [ + "twist", + "twits" + ], + "einstu": [ + "intuse", + "tenuis", + "unites", + "unties" + ], + "bdeiru": [ + "burdie", + "buried", + "rubied" + ], + "adinrw": [ + "darwin", + "inward" + ], + "aknrs": [ + "karns", + "knars", + "krans", + "narks", + "ranks", + "snark" + ], + "bdetu": [ + "debut", + "tubed" + ], + "abdelry": [ + "bradley", + "dryable" + ], + "deny": [ + "deny", + "dyne" + ], + "abil": [ + "albi", + "bail", + "bali" + ], + "iort": [ + "riot", + "roit", + "roti", + "tiro", + "tori", + "trio" + ], + "aekmrr": [ + "marker", + "remark" + ], + "grsu": [ + "grus", + "rugs", + "surg" + ], + "aadnrs": [ + "nasard", + "sandra" + ], + "acmnoo": [ + "mocoan", + "monaco" + ], + "aeeimrst": [ + "emirates", + "steamier" + ], + "aeft": [ + "atef", + "fate", + "feat", + "feta" + ], + "borstu": [ + "robust", + "turbos" + ], + "agrs": [ + "gars", + "gras", + "rags" + ], + "ddeenoprs": [ + "desponder", + "responded" + ], + "imr": [ + "mir", + "rim" + ], + "aeilnp": [ + "alpine", + "nepali", + "penial", + "pineal" + ], + "dis": [ + "dis", + "ids", + "sid" + ], + "eimrx": [ + "mirex", + "mixer", + "remix" + ], + "eenrw": [ + "newer", + "renew", + "weren" + ], + "aky": [ + "yak", + "kay" + ], + "ceips": [ + "epics", + "sepic", + "spice" + ], + "amos": [ + "amos", + "moas", + "soam", + "soma" + ], + "celoor": [ + "cooler", + "recool" + ], + "aciis": [ + "ascii", + "isiac" + ], + "bdeeginr": [ + "beringed", + "breeding" + ], + "aciinostt": [ + "actionist", + "citations" + ], + "dnoor": [ + "donor", + "rondo" + ], + "einnost": [ + "intones", + "stenion", + "tension" + ], + "ahrst": [ + "harst", + "harts", + "tahrs", + "trash" + ], + "aehpss": [ + "pashes", + "phases", + "shapes" + ], + "eeelnopv": [ + "envelope", + "ovenpeel" + ], + "adein": [ + "diane", + "endia", + "idean" + ], + "bdeers": [ + "bredes", + "breeds" + ], + "adiprs": [ + "dispar", + "rapids", + "sparid" + ], + "cdios": [ + "disco", + "sodic" + ], + "defin": [ + "fiend", + "fined", + "indef" + ], + "eimnoost": [ + "emotions", + "mooniest" + ], + "aceelnrs": [ + "cleaners", + "cleanser", + "recleans" + ], + "aabgilnru": [ + "biangular", + "bulgarian" + ], + "aeelnrt": [ + "alterne", + "enteral", + "eternal", + "teleran", + "teneral" + ], + "acehirss": [ + "cashiers", + "rachises" + ], + "agmu": [ + "gaum", + "guam", + "muga" + ], + "ceit": [ + "ceti", + "cite", + "tice" + ], + "gip": [ + "gip", + "pig" + ], + "imnsu": [ + "minus", + "numis", + "unism" + ], + "aeeilnpst": [ + "palestine", + "penalties", + "tapelines" + ], + "aaeimnr": [ + "amarine", + "armenia" + ], + "celosst": [ + "closest", + "closets" + ], + "aacdeittv": [ + "activated", + "cavitated" + ], + "acersst": [ + "actress", + "casters", + "recasts" + ], + "ilt": [ + "lit", + "til" + ], + "deilss": [ + "dessil", + "sidles", + "slides" + ], + "ailmn": [ + "lamin", + "liman", + "milan" + ], + "deelnr": [ + "eldern", + "lender", + "relend" + ], + "chorsu": [ + "chorus", + "urochs" + ], + "cehiinrst": [ + "christine", + "snitchier" + ], + "adegru": [ + "argued", + "dargue" + ], + "hmnopsyy": [ + "physnomy", + "symphony" + ], + "aceklr": [ + "calker", + "clarke", + "lacker", + "rackle", + "recalk", + "reckla" + ], + "ilnos": [ + "insol", + "isoln", + "linos", + "lions", + "loins", + "noils" + ], + "loops": [ + "loops", + "polos", + "pools", + "sloop", + "spool" + ], + "cilry": [ + "cyril", + "lyric" + ], + "aceilr": [ + "acerli", + "carlie", + "claire", + "eclair", + "erical", + "lacier" + ], + "eopr": [ + "pore", + "rope" + ], + "aailnort": [ + "notarial", + "rational", + "rotalian" + ], + "efghirst": [ + "fighters", + "freights", + "refights" + ], + "abcehmrs": [ + "becharms", + "brechams", + "chambers" + ], + "ceeilmnopt": [ + "emplection", + "incomplete" + ], + "benrru": [ + "burner", + "reburn" + ], + "rsy": [ + "yrs", + "syr" + ], + "foo": [ + "foo", + "ofo", + "oof" + ], + "eeglnt": [ + "gentle", + "telegn" + ], + "deeepr": [ + "deeper", + "peered" + ], + "hortwy": [ + "worthy", + "wrothy" + ], + "ainsst": [ + "saints", + "satins", + "stains" + ], + "aceirrs": [ + "carries", + "scarier" + ], + "dou": [ + "duo", + "oud", + "udo" + ], + "denov": [ + "devon", + "doven" + ], + "aeehln": [ + "anhele", + "helena" + ], + "aessv": [ + "saves", + "vases" + ], + "addeegrr": [ + "degrader", + "regarded", + "regraded" + ], + "cdeeenptux": [ + "unexcepted", + "unexpected" + ], + "aimnor": [ + "mainor", + "manoir", + "marion", + "minora", + "morian", + "romain" + ], + "deilnotu": [ + "outlined", + "untoiled" + ], + "aeginrtt": [ + "gnattier", + "treating" + ], + "rst": [ + "str", + "trs" + ], + "aaeinrrtv": [ + "narrative", + "veratrina" + ], + "emnoorsu": [ + "enormous", + "unmorose" + ], + "aakmr": [ + "karma", + "krama", + "makar", + "marka" + ], + "cinosst": [ + "consist", + "tocsins" + ], + "aclsu": [ + "cauls", + "claus", + "scaul" + ], + "beirst": [ + "bestir", + "bister", + "bistre", + "biters", + "bitser", + "tribes" + ], + "adimr": [ + "mardi", + "marid" + ], + "abceinst": [ + "bascinet", + "cabinets" + ], + "aehks": [ + "hakes", + "shake" + ], + "aabeglr": [ + "algebar", + "algebra" + ], + "illsy": [ + "yills", + "silyl", + "silly", + "slily" + ], + "einrssu": [ + "insures", + "rusines", + "russine", + "serinus", + "sunrise" + ], + "fru": [ + "fur", + "urf" + ], + "eeiilmnt": [ + "ilmenite", + "melinite", + "menilite" + ], + "adeilry": [ + "arylide", + "readily" + ], + "cos": [ + "cos", + "osc", + "soc" + ], + "dinstu": [ + "dustin", + "nudist" + ], + "aadin": [ + "andia", + "danai", + "diana", + "naiad" + ], + "eenrssu": [ + "ensures", + "russene" + ], + "aeeilrstv": [ + "levirates", + "relatives", + "versatile" + ], + "adilnsy": [ + "islandy", + "lindsay" + ], + "aehms": [ + "ahems", + "haems", + "hames", + "sahme", + "shame", + "shema" + ], + "eehlnopty": [ + "polythene", + "telephony" + ], + "aaflt": [ + "aflat", + "fatal" + ], + "aelorrst": [ + "realtors", + "relators", + "restoral" + ], + "abeghinrt": [ + "breathing", + "rebathing" + ], + "aacghilpr": [ + "algraphic", + "graphical" + ], + "aeerrtt": [ + "ettarre", + "retreat", + "treater" + ], + "abelry": [ + "barely", + "barley", + "bleary", + "yerbal" + ], + "gru": [ + "gur", + "rug" + ], + "aaiimnnst": [ + "amanitins", + "maintains" + ], + "adeeinrt": [ + "detainer", + "retained" + ], + "aaelmp": [ + "palame", + "palmae", + "pamela" + ], + "adenrsw": [ + "wanders", + "wardens" + ], + "abelmr": [ + "ambler", + "blamer", + "lamber", + "marble", + "ramble" + ], + "cehimnoopr": [ + "microphone", + "neomorphic" + ], + "aginst": [ + "gainst", + "giants", + "gisant", + "sating" + ], + "dehs": [ + "edhs", + "shed" + ], + "emmo": [ + "memo", + "mome" + ], + "ahm": [ + "ham", + "mah" + ], + "celnooss": [ + "consoles", + "coolness" + ], + "bfi": [ + "fbi", + "fib" + ], + "eelr": [ + "leer", + "lere", + "reel" + ], + "eehrs": [ + "heres", + "herse", + "sereh", + "sheer", + "shree" + ], + "ginops": [ + "gipons", + "pingos", + "posing" + ], + "bdin": [ + "bind", + "inbd" + ], + "adnr": [ + "darn", + "nard", + "rand" + ], + "egnrtu": [ + "gunter", + "gurnet", + "urgent" + ], + "chitw": [ + "tchwi", + "wicht", + "witch" + ], + "cehno": [ + "cohen", + "enoch" + ], + "eis": [ + "ise", + "sei", + "sie" + ], + "eeiprsx": [ + "expires", + "prexies" + ], + "ellms": [ + "mells", + "smell" + ], + "acdeinoorst": [ + "coordinates", + "decorations" + ], + "ceikrst": [ + "rickets", + "sticker", + "tickers" + ], + "eimoprss": [ + "imposers", + "promises", + "semipros" + ], + "bno": [ + "bon", + "nob" + ], + "deeersv": [ + "deserve", + "severed" + ], + "ailmot": [ + "lomita", + "tomial" + ], + "achn": [ + "chan", + "nach" + ], + "deiorrw": [ + "rowdier", + "wordier", + "worried" + ], + "enstu": [ + "suent", + "tunes", + "unset", + "usent" + ], + "cegimnopt": [ + "coempting", + "competing" + ], + "beht": [ + "beth", + "theb" + ], + "eln": [ + "enl", + "len" + ], + "aehprss": [ + "phasers", + "phrases", + "seraphs", + "shapers", + "sherpas" + ], + "aik": [ + "aik", + "kai" + ], + "aceehls": [ + "clashee", + "leaches" + ], + "bginor": [ + "boring", + "orbing", + "robing" + ], + "aceehrs": [ + "archsee", + "reaches", + "rechase" + ], + "acehms": [ + "sachem", + "samech", + "schema" + ], + "afos": [ + "oafs", + "sofa" + ], + "efiprx": [ + "perfix", + "prefix" + ], + "acilu": [ + "aulic", + "cauli", + "lucia" + ], + "aelnpst": [ + "planets", + "platens" + ], + "bdeloru": [ + "boulder", + "doubler" + ], + "adhlor": [ + "harold", + "holard" + ], + "ajr": [ + "jar", + "raj" + ], + "entt": [ + "nett", + "tent" + ], + "deefiiinst": [ + "definitise", + "identifies" + ], + "cklos": [ + "locks", + "slock" + ], + "aelmny": [ + "laymen", + "meanly", + "namely" + ], + "eorsu": [ + "euros", + "roues", + "rouse" + ], + "aaeilr": [ + "aerial", + "aralie", + "realia" + ], + "beelr": [ + "blere", + "rebel" + ], + "giinors": [ + "origins", + "signior", + "signori" + ], + "dehir": [ + "dheri", + "hider", + "hired", + "rehid" + ], + "ablm": [ + "balm", + "blam", + "lamb" + ], + "aahnnt": [ + "nathan", + "thanan" + ], + "ceeinrstu": [ + "ceintures", + "centuries" + ], + "dhinu": [ + "hindu", + "hundi", + "unhid" + ], + "aaeehkqrtu": [ + "earthquake", + "heartquake" + ], + "aeginssss": [ + "assessing", + "gassiness" + ], + "agilnst": [ + "anglist", + "lasting", + "salting", + "slating", + "staling" + ], + "cdeinorstu": [ + "discounter", + "introduces", + "rediscount", + "reductions" + ], + "cluy": [ + "cyul", + "lucy" + ], + "ahns": [ + "hans", + "hasn", + "nash", + "shan" + ], + "elops": [ + "elops", + "lopes", + "olpes", + "poles", + "slope", + "spole" + ], + "aeeggr": [ + "agrege", + "raggee", + "reggae" + ], + "eopt": [ + "peto", + "poet", + "pote", + "tope" + ], + "accinoprsy": [ + "conspiracy", + "snipocracy" + ], + "aemnrsu": [ + "manures", + "surname" + ], + "eghlooty": [ + "ethology", + "theology" + ], + "ailns": [ + "anils", + "nails", + "sinal", + "slain", + "snail" + ], + "ahstw": [ + "swath", + "thaws", + "whats" + ], + "deirs": [ + "dries", + "resid", + "rides", + "sider", + "sired" + ], + "ceip": [ + "epic", + "pice" + ], + "anrstu": [ + "saturn", + "unstar" + ], + "ntu": [ + "nut", + "tun" + ], + "aeks": [ + "kaes", + "keas", + "sake", + "seak" + ], + "dikss": [ + "disks", + "skids" + ], + "cdnoo": [ + "codon", + "condo" + ], + "abeimn": [ + "benami", + "bimane", + "embain" + ], + "anss": [ + "assn", + "sans" + ], + "bdilsu": [ + "builds", + "sublid" + ], + "afhst": [ + "hafts", + "shaft" + ], + "bey": [ + "bey", + "bye" + ], + "cdeeorrrs": [ + "recorders", + "rerecords" + ], + "eeills": [ + "eisell", + "leslie", + "sellie" + ], + "aan": [ + "ana", + "naa" + ], + "ginopsst": [ + "postings", + "postsign", + "signpost" + ], + "adinr": [ + "darin", + "dinar", + "drain", + "indra", + "nadir", + "ranid" + ], + "emnot": [ + "entom", + "monte" + ], + "efirs": [ + "fires", + "fries", + "frise", + "reifs", + "serif" + ], + "aaegilr": [ + "algeria", + "argaile", + "lairage", + "railage", + "regalia" + ], + "bdeelss": [ + "bedless", + "blessed" + ], + "aooptt": [ + "pattoo", + "potato", + "topato" + ], + "efmorrs": [ + "formers", + "reforms" + ], + "alot": [ + "alto", + "lota", + "tola" + ], + "cceilrs": [ + "circles", + "clerics" + ], + "aciilt": [ + "clitia", + "italic" + ], + "ilm": [ + "lim", + "mil" + ], + "abcsu": [ + "cubas", + "scuba" + ], + "egor": [ + "ergo", + "goer", + "gore", + "ogre", + "rego" + ], + "adhs": [ + "dahs", + "dash", + "sadh", + "shad" + ], + "aeipssv": [ + "passive", + "pavises", + "pavisse", + "spavies" + ], + "adeluv": [ + "devaul", + "valued" + ], + "deerv": [ + "derve", + "verde" + ], + "aceinorss": [ + "sarcosine", + "scenarios" + ], + "aabmnt": [ + "bantam", + "batman" + ], + "aeghinrs": [ + "hearings", + "hearsing", + "shearing" + ], + "acelmno": [ + "aclemon", + "cloamen" + ], + "aelv": [ + "eval", + "lave", + "leva", + "vale", + "veal", + "vela" + ], + "aaehimn": [ + "anaheim", + "anhimae" + ], + "ddeir": [ + "dried", + "redid" + ], + "aeegiinnnrtt": [ + "entertaining", + "intenerating" + ], + "ehlrtu": [ + "hurtle", + "luther", + "thurle" + ], + "ginoppst": [ + "stopping", + "toppings" + ], + "aelmpr": [ + "ampler", + "emparl", + "lamper", + "palmer", + "relamp" + ], + "acinopt": [ + "caption", + "paction", + "pontiac" + ], + "cdeinort": [ + "centroid", + "doctrine" + ], + "aeinrrst": [ + "restrain", + "retrains", + "strainer", + "terrains", + "trainers", + "transire" + ], + "eginsw": [ + "sewing", + "swinge" + ], + "amno": [ + "mano", + "moan", + "mona", + "noam", + "noma", + "oman" + ], + "cgm": [ + "cgm", + "mcg" + ], + "eoopprs": [ + "opposer", + "propose" + ], + "eghilrt": [ + "lighter", + "relight", + "rightle" + ], + "adls": [ + "lads", + "slad" + ], + "accistt": [ + "tactics", + "tictacs" + ], + "rssttu": [ + "struts", + "sturts", + "trusts" + ], + "aeinn": [ + "annie", + "ennia", + "inane" + ], + "ehorrst": [ + "rhetors", + "shorter" + ], + "adeginprs": [ + "respading", + "spreading" + ], + "acelpr": [ + "carpel", + "parcel", + "placer" + ], + "deefinr": [ + "definer", + "refined" + ], + "aefrs": [ + "fares", + "farse", + "fears", + "frase", + "safer" + ], + "enrtu": [ + "enrut", + "tuner", + "urent" + ], + "arsy": [ + "rays", + "ryas" + ], + "aeikl": [ + "alike", + "kelia", + "lakie" + ], + "altw": [ + "twal", + "walt" + ], + "acen": [ + "acne", + "cane", + "nace" + ], + "bcdeklo": [ + "blocked", + "deblock" + ], + "aailmw": [ + "awalim", + "malawi", + "mawali" + ], + "aadn": [ + "anda", + "dana", + "nada" + ], + "ahlo": [ + "halo", + "hola" + ], + "cirstu": [ + "citrus", + "curtis", + "rictus", + "rustic" + ], + "aaelnprt": [ + "parental", + "parlante", + "paternal", + "prenatal" + ], + "agsy": [ + "gays", + "sagy" + ], + "eginprss": [ + "pressing", + "springes" + ], + "aaaginr": [ + "agrania", + "angaria", + "niagara" + ], + "fin": [ + "fin", + "inf" + ], + "achmrs": [ + "charms", + "ramsch" + ], + "aderrt": [ + "darter", + "dartre", + "dertra", + "redart", + "retard", + "retrad", + "tarred", + "trader" + ], + "aeirss": [ + "arises", + "raises", + "serais" + ], + "egm": [ + "gem", + "meg" + ], + "ceelort": [ + "elector", + "electro" + ], + "ceiinorrt": [ + "cirterion", + "criterion", + "tricerion" + ], + "abdeg": [ + "badge", + "begad", + "debag" + ], + "irstw": [ + "wrist", + "writs" + ], + "aehht": [ + "heath", + "theah" + ], + "deeeimrs": [ + "redemise", + "remedies" + ], + "eersttu": [ + "surette", + "trustee" + ], + "efmoprrs": [ + "performs", + "preforms" + ], + "aelmr": [ + "lamer", + "realm" + ], + "aaeilrss": [ + "assailer", + "reassail", + "salaries" + ], + "aimnstu": [ + "manitus", + "tsunami" + ], + "achlors": [ + "chorals", + "scholar" + ], + "ceikln": [ + "nickel", + "nickle" + ], + "acginot": [ + "coating", + "cognati", + "cotinga" + ], + "aelltw": [ + "wallet", + "wellat" + ], + "acdeelr": [ + "cedrela", + "cleared", + "creedal", + "declare", + "relaced" + ], + "eiilmss": [ + "mislies", + "missile", + "similes" + ], + "aadeginr": [ + "drainage", + "gardenia" + ], + "aahikrs": [ + "kashira", + "shikara", + "sikhara" + ], + "cenorrs": [ + "corners", + "scorner" + ], + "abdeorr": [ + "arbored", + "boarder", + "broader", + "reboard" + ], + "aaeeginrtv": [ + "renavigate", + "vegetarian" + ], + "egoru": [ + "erugo", + "orgue", + "rogue", + "rouge" + ], + "aesty": [ + "yeast", + "teasy" + ], + "acegilnr": [ + "clearing", + "relacing" + ], + "acdeot": [ + "coated", + "decoat" + ], + "deinnt": [ + "dentin", + "indent", + "intend", + "tinned" + ], + "aeehinpst": [ + "ephestian", + "stephanie" + ], + "eilosu": [ + "louies", + "louise" + ], + "enow": [ + "enow", + "owen", + "wone" + ], + "einorstu": [ + "routines", + "rutinose", + "snoutier", + "tursenoi" + ], + "ghiintt": [ + "hitting", + "tithing" + ], + "aceeilnr": [ + "cerealin", + "cinereal", + "raceline", + "reliance" + ], + "abhist": [ + "habits", + "tasbih" + ], + "giiknrst": [ + "skirting", + "striking" + ], + "ghins": [ + "nighs", + "singh" + ], + "opsttuu": [ + "outputs", + "putouts" + ], + "iilnnsu": [ + "insulin", + "inulins" + ], + "deew": [ + "wede", + "weed" + ], + "eiiltuz": [ + "tuilzie", + "utilize" + ], + "aaegln": [ + "alange", + "alnage", + "angela", + "anlage", + "galena", + "lagena" + ], + "aeelrst": [ + "elaters", + "laertes", + "realest", + "relates", + "reslate", + "resteal", + "seletar", + "stealer", + "teasler" + ], + "cdei": [ + "cedi", + "dice", + "iced" + ], + "dmos": [ + "doms", + "mods" + ], + "adeginors": [ + "grandiose", + "organdies", + "organised", + "sargonide" + ], + "orsst": [ + "sorts", + "ssort", + "sstor" + ], + "eiinorssv": [ + "ivoriness", + "revisions" + ], + "deeorrst": [ + "resorted", + "restored" + ], + "amorr": [ + "armor", + "maror", + "morra" + ], + "deirrs": [ + "derris", + "driers", + "riders" + ], + "denosz": [ + "dozens", + "zendos" + ], + "aeirsv": [ + "aivers", + "sairve", + "varies" + ], + "adgrsu": [ + "gradus", + "guards" + ], + "acegilnpr": [ + "parceling", + "replacing" + ], + "adeehrstw": [ + "drawsheet", + "watershed" + ], + "ccilnosu": [ + "councils", + "succinol" + ], + "ailrv": [ + "rival", + "viral" + ], + "eipps": [ + "pepsi", + "pipes" + ], + "adeln": [ + "alden", + "eland", + "laden", + "lande", + "lenad", + "naled" + ], + "aelorrt": [ + "realtor", + "relator" + ], + "aeiimnostt": [ + "estimation", + "testimonia" + ], + "abnr": [ + "barn", + "bran" + ], + "ghinpsu": [ + "gunship", + "pushing" + ], + "acdeiiprt": [ + "dipicrate", + "patricide", + "pediatric" + ], + "bco": [ + "boc", + "cob" + ], + "emprs": [ + "perms", + "sperm" + ], + "abdl": [ + "bald", + "blad" + ], + "acprs": [ + "carps", + "craps", + "scarp", + "scrap" + ], + "forst": [ + "forst", + "forts", + "frost" + ], + "elno": [ + "elon", + "enol", + "leno", + "leon", + "lone", + "noel" + ], + "achty": [ + "cathy", + "cyath", + "yacht" + ], + "acrty": [ + "carty", + "tracy" + ], + "mpt": [ + "pmt", + "tpm" + ], + "abcehr": [ + "barche", + "brache", + "breach", + "chaber" + ], + "aehlw": [ + "halwe", + "whale", + "wheal" + ], + "deil": [ + "deil", + "deli", + "diel", + "eild", + "idle", + "lide", + "lied" + ], + "agmnstu": [ + "mustang", + "stagnum" + ], + "aoprst": [ + "asport", + "pastor", + "portas", + "sproat" + ], + "dmu": [ + "dum", + "mud" + ], + "ahkrs": [ + "harks", + "shark" + ], + "abdeeilrs": [ + "desirable", + "redisable" + ], + "abellt": [ + "ballet", + "batell" + ], + "egiilnors": [ + "ligroines", + "religions" + ], + "ehins": [ + "eshin", + "hsien", + "shine" + ], + "befirs": [ + "briefs", + "febris", + "fibers", + "fibres" + ], + "ceov": [ + "cove", + "voce" + ], + "aceinnoorsstv": [ + "conservations", + "conversations" + ], + "adiors": [ + "aroids", + "radios" + ], + "adiinv": [ + "avidin", + "vidian" + ], + "aapst": [ + "apast", + "pasta", + "patas", + "tapas" + ], + "emrsu": [ + "mures", + "muser", + "remus", + "serum" + ], + "eimnrtu": [ + "minuter", + "runtime", + "unmiter", + "unmitre" + ], + "acflo": [ + "falco", + "focal" + ], + "adinstt": [ + "dantist", + "distant" + ], + "ciln": [ + "clin", + "incl" + ], + "aal": [ + "aal", + "ala" + ], + "aabms": [ + "ambas", + "samba" + ], + "elmopy": [ + "employ", + "pomely" + ], + "aacgilm": [ + "camalig", + "magical" + ], + "aceilmr": [ + "calmier", + "claimer", + "milacre", + "miracle", + "reclaim" + ], + "cdeeenrt": [ + "centered", + "decenter", + "decentre", + "recedent" + ], + "aelryy": [ + "yarely", + "yearly", + "layery" + ], + "aors": [ + "asor", + "oars", + "oras", + "osar", + "rosa", + "soar", + "sora" + ], + "ahhs": [ + "hahs", + "hash", + "sahh", + "shah" + ], + "gmp": [ + "gpm", + "mpg" + ], + "aefhrst": [ + "fathers", + "hafters", + "shafter" + ], + "deiln": [ + "eldin", + "lined" + ], + "dow": [ + "dow", + "owd", + "wod" + ], + "diu": [ + "dui", + "iud", + "udi" + ], + "eny": [ + "eyn", + "yen", + "nye" + ], + "iprsst": [ + "spirts", + "sprits", + "stirps", + "strips" + ], + "aegnrrs": [ + "garners", + "rangers" + ], + "morw": [ + "morw", + "worm" + ], + "cdeeirst": [ + "creedist", + "desertic", + "discreet", + "discrete" + ], + "dil": [ + "dil", + "lid" + ], + "eeloprsty": [ + "polyester", + "proselyte" + ], + "adef": [ + "deaf", + "fade" + ], + "aehipprs": [ + "papisher", + "sapphire" + ], + "aeikns": [ + "kinase", + "sekani", + "skenai" + ], + "ikrsst": [ + "skirts", + "stirks" + ], + "amst": [ + "mast", + "mats", + "stam", + "tams" + ], + "abdeell": [ + "beladle", + "labeled" + ], + "abeirs": [ + "braies", + "braise", + "rabies", + "rebias", + "serbia" + ], + "ffgiinr": [ + "griffin", + "riffing" + ], + "aagnuy": [ + "guanay", + "guyana" + ], + "eipss": [ + "sipes", + "spies", + "spise" + ], + "eimm": [ + "emim", + "mime" + ], + "acceennortt": [ + "concentrate", + "concertante" + ], + "eglnost": [ + "longest", + "songlet" + ], + "inost": [ + "nitos", + "sinto", + "stion" + ], + "ceeennsst": [ + "senescent", + "sentences" + ], + "eflry": [ + "ferly", + "flyer", + "refly" + ], + "aeps": [ + "apes", + "apse", + "pase", + "peas", + "pesa", + "spae" + ], + "adegos": [ + "dagoes", + "dosage", + "seadog" + ], + "ceeeirrsv": [ + "receivers", + "reservice" + ], + "acemnoor": [ + "cameroon", + "coenamor" + ], + "deeeln": [ + "lendee", + "needle" + ], + "abhst": [ + "bahts", + "baths" + ], + "aainnrv": [ + "navarin", + "nirvana" + ], + "ademnss": [ + "desmans", + "dsnames", + "madness" + ], + "acems": [ + "acmes", + "cames", + "maces" + ], + "ahy": [ + "hay", + "yah" + ], + "aaccdir": [ + "arcadic", + "cardiac" + ], + "aailnostv": [ + "lavations", + "salvation" + ], + "deorv": [ + "dover", + "drove", + "roved", + "vedro", + "voder" + ], + "aadinr": [ + "adrian", + "andira", + "andria", + "radian", + "randia" + ], + "aeelnrrs": [ + "learners", + "relearns" + ], + "ceeeilstv": [ + "cleveites", + "electives", + "selective" + ], + "adeiilorst": [ + "editorials", + "idolatries", + "idolatrise", + "radiolites" + ], + "eeekrss": [ + "reseeks", + "seekers" + ], + "ais": [ + "ais", + "sai", + "sia" + ], + "abeelmorv": [ + "overblame", + "removable" + ], + "ceimnru": [ + "micerun", + "numeric", + "uncrime" + ], + "agiknst": [ + "gitksan", + "skating", + "staking", + "takings", + "tasking" + ], + "belst": [ + "belts", + "blest", + "blets" + ], + "abeerst": [ + "beaters", + "berates", + "bestare", + "rebates" + ], + "eeoprrrst": [ + "preresort", + "reporters" + ], + "bekru": [ + "bruke", + "burke" + ], + "ceeinssty": [ + "cysteines", + "necessity" + ], + "ekly": [ + "yelk", + "kyle" + ], + "cersuv": [ + "cervus", + "curves" + ], + "aaclr": [ + "clara", + "craal" + ], + "aelrstv": [ + "travels", + "varlets", + "vestral" + ], + "aeirvw": [ + "waiver", + "wavier" + ], + "aelp": [ + "leap", + "lepa", + "pale", + "peal", + "plea" + ], + "deghilt": [ + "delight", + "lighted" + ], + "ceeimnoos": [ + "economies", + "economise", + "monoecies" + ], + "aabceilrt": [ + "bacterial", + "calibrate" + ], + "agps": [ + "gaps", + "gasp", + "spag" + ], + "dnoors": [ + "donors", + "rondos" + ], + "aat": [ + "ata", + "taa" + ], + "aceehst": [ + "escheat", + "teaches" + ], + "iln": [ + "lin", + "nil" + ], + "aegnrrst": [ + "granters", + "regrants", + "stranger" + ], + "adegrty": [ + "gyrated", + "tragedy" + ], + "derry": [ + "derry", + "dryer", + "redry", + "ryder" + ], + "abilnrtu": [ + "tribunal", + "turbinal", + "untribal" + ], + "delru": [ + "duler", + "lured", + "ruled", + "urled" + ], + "anot": [ + "nato", + "nota", + "tano" + ], + "einnopss": [ + "pensions", + "snipnose" + ], + "aeprrsy": [ + "prayers", + "respray", + "sprayer" + ], + "eehnorw": [ + "nowhere", + "whereon" + ], + "cop": [ + "cop", + "cpo" + ], + "aegl": [ + "egal", + "gael", + "gale", + "geal" + ], + "aellty": [ + "lately", + "lealty" + ], + "acrsy": [ + "ascry", + "sacry", + "scary", + "scray" + ], + "aemrsstt": [ + "mattress", + "smartest", + "smatters" + ], + "beinru": [ + "burnie", + "eburin", + "rubine" + ], + "eeiiklsw": [ + "likewise", + "wiselike" + ], + "anst": [ + "ants", + "nast", + "sant", + "stan", + "tans" + ], + "dilo": [ + "dilo", + "diol", + "doli", + "idol", + "lido", + "olid" + ], + "deimnr": [ + "minder", + "remind" + ], + "acghimnr": [ + "charming", + "marching" + ], + "cdeeeprst": [ + "respected", + "sceptered", + "spectered" + ], + "assty": [ + "sayst", + "stays" + ], + "aaffir": [ + "affair", + "raffia" + ], + "aehrsw": [ + "hawser", + "rewash", + "washer" + ], + "ceirrstt": [ + "critters", + "restrict", + "stricter" + ], + "eginprrs": [ + "respring", + "springer" + ], + "eimns": [ + "miens", + "mines" + ], + "bdenoru": [ + "beround", + "bounder", + "rebound", + "unbored", + "unorbed", + "unrobed" + ], + "emnort": [ + "mentor", + "merton", + "metron", + "montre", + "termon", + "tormen" + ], + "eefmoprrr": [ + "performer", + "prereform", + "reperform" + ], + "deiltt": [ + "tilted", + "titled" + ], + "eehprs": [ + "herpes", + "hesper", + "sphere" + ], + "aiorst": [ + "aorist", + "aristo", + "ratios", + "satori" + ], + "addelr": [ + "ladder", + "larded", + "raddle" + ], + "aenorsst": [ + "assentor", + "essorant", + "senators", + "starnose", + "treasons" + ], + "koortuw": [ + "outwork", + "workout" + ], + "aelns": [ + "ansel", + "elans", + "lanes", + "leans", + "senal", + "slane" + ], + "aginstt": [ + "stating", + "tasting" + ], + "aceilnor": [ + "acrolein", + "arecolin", + "caroline", + "colinear", + "cornelia", + "creolian", + "lonicera" + ], + "elu": [ + "leu", + "lue", + "ule" + ], + "agiln": [ + "algin", + "align", + "langi", + "liang", + "ligan", + "linga" + ], + "adeimnnot": [ + "dentinoma", + "nominated" + ], + "aceellort": [ + "electoral", + "recollate" + ], + "eehl": [ + "heel", + "hele" + ], + "alloy": [ + "alloy", + "loyal" + ], + "cdnoos": [ + "codons", + "condos" + ], + "lopst": [ + "plots", + "topsl" + ], + "dehilops": [ + "depolish", + "polished" + ], + "alstu": [ + "altus", + "latus", + "sault", + "talus", + "tulsa" + ], + "adrsw": [ + "draws", + "sward", + "wards" + ], + "lou": [ + "lou", + "luo" + ], + "cdeeeorrv": [ + "overcreed", + "recovered" + ], + "aefrrs": [ + "farers", + "fraser" + ], + "egrsu": [ + "grues", + "guser", + "surge", + "urges" + ], + "aamrtu": [ + "taruma", + "trauma" + ], + "addegimnn": [ + "demanding", + "maddening" + ], + "lossu": [ + "solus", + "souls" + ], + "aknps": [ + "knaps", + "spank" + ], + "egoorv": [ + "groove", + "overgo" + ], + "aeeilnortv": [ + "relevation", + "revelation" + ], + "adeegilnot": [ + "degelation", + "delegation" + ], + "eirsw": [ + "swire", + "weirs", + "wires", + "wiser", + "wries" + ], + "eelpss": [ + "sleeps", + "speels" + ], + "abekl": [ + "blake", + "bleak", + "kabel" + ], + "eginr": [ + "grein", + "inger", + "nigre", + "regin", + "reign", + "renig", + "ringe" + ], + "abcno": [ + "bacon", + "banco" + ], + "aeehrt": [ + "aether", + "heater", + "hereat", + "reheat" + ], + "ccirsu": [ + "circus", + "crucis" + ], + "demooprt": [ + "promoted", + "toperdom" + ], + "aem": [ + "ame", + "eam", + "mae", + "mea" + ], + "elm": [ + "elm", + "mel" + ], + "einps": [ + "insep", + "peins", + "penis", + "pines", + "snipe", + "spine" + ], + "orttu": [ + "tourt", + "trout", + "tutor" + ], + "aeilmoprrty": [ + "polarimetry", + "premorality", + "temporarily" + ], + "ehillrrt": [ + "rethrill", + "thriller" + ], + "aimnrstt": [ + "tantrism", + "transmit" + ], + "adeglr": [ + "argled", + "gerald", + "glared", + "regald" + ], + "deeprss": [ + "depress", + "pressed" + ], + "eghnru": [ + "hunger", + "rehung" + ], + "pssu": [ + "puss", + "sups" + ], + "aeinnrtt": [ + "antirent", + "internat", + "intranet" + ], + "celoss": [ + "closes", + "socles" + ], + "eqs": [ + "esq", + "seq" + ], + "eeinprsstt": [ + "persistent", + "pinsetters", + "presentist", + "prettiness" + ], + "aeimmrssu": [ + "summaries", + "summarise" + ], + "glow": [ + "glow", + "gowl" + ], + "amw": [ + "awm", + "maw", + "mwa" + ], + "deiox": [ + "doxie", + "oxide" + ], + "akos": [ + "asok", + "koas", + "oaks", + "okas", + "soak", + "soka" + ], + "eikr": [ + "erik", + "keir", + "kier", + "reki" + ], + "ceelnorsu": [ + "enclosure", + "recounsel" + ], + "aeknrw": [ + "newark", + "wanker" + ], + "mnor": [ + "morn", + "norm" + ], + "elrttu": [ + "ruttle", + "turtle", + "tutler" + ], + "abinooprst": [ + "absorption", + "probations", + "saprobiont" + ], + "abdly": [ + "badly", + "baldy", + "blady" + ], + "alloop": [ + "apollo", + "palolo" + ], + "anw": [ + "awn", + "naw", + "wan" + ], + "aeinprs": [ + "paniers", + "persian", + "prasine", + "rapines", + "saprine", + "spirane" + ], + "eeegnr": [ + "neeger", + "reenge", + "renege" + ], + "boorst": [ + "brosot", + "robots" + ], + "adej": [ + "deja", + "jade" + ], + "coops": [ + "coops", + "scoop" + ], + "aeginnr": [ + "aginner", + "earning", + "engrain", + "geranin", + "grannie", + "nearing" + ], + "deenst": [ + "dentes", + "nested", + "sedent", + "tensed" + ], + "emorsv": [ + "movers", + "vomers" + ], + "abelrv": [ + "barvel", + "blaver", + "verbal" + ], + "eelnprsty": [ + "presently", + "serpently" + ], + "aess": [ + "asse", + "seas" + ], + "eilst": [ + "islet", + "istle", + "liest", + "lites", + "slite", + "stile", + "tiles" + ], + "eops": [ + "epos", + "opes", + "peso", + "pose", + "sope" + ], + "ikloott": [ + "kittool", + "toolkit" + ], + "agot": [ + "goat", + "toag", + "toga" + ], + "deenrr": [ + "derner", + "render" + ], + "ens": [ + "ens", + "sen" + ], + "efgor": [ + "forge", + "gofer" + ], + "ceiimmnoorsss": [ + "commissioners", + "recommissions" + ], + "aberv": [ + "brave", + "breva" + ], + "afluw": [ + "awful", + "fulwa" + ], + "aaeilnpr": [ + "airplane", + "perianal" + ], + "eenrst": [ + "enters", + "ernest", + "nester", + "rentes", + "resent", + "streen", + "tenser", + "ternes" + ], + "dop": [ + "dop", + "pod" + ], + "aaegsv": [ + "agaves", + "savage" + ], + "blot": [ + "blot", + "bolt" + ], + "ghinortw": [ + "ingrowth", + "throwing", + "worthing" + ], + "agnow": [ + "gowan", + "wagon", + "wonga" + ], + "adt": [ + "dat", + "tad" + ], + "egru": [ + "grue", + "urge" + ], + "aeeegnrst": [ + "generates", + "teenagers" + ], + "krtu": [ + "kurt", + "turk" + ], + "eeprs": [ + "peers", + "peres", + "perse", + "prees", + "prese", + "speer", + "spere", + "spree" + ], + "orsu": [ + "ours", + "rous", + "sour" + ], + "eefhrrs": [ + "fresher", + "refresh" + ], + "belstu": [ + "bluest", + "bluets", + "bustle", + "butles", + "sublet", + "subtle" + ], + "eiprsst": [ + "esprits", + "persist", + "priests", + "spriest", + "sprites", + "stirpes", + "stripes" + ], + "ceop": [ + "cope", + "opec" + ], + "acdelr": [ + "cardel", + "cradle", + "credal", + "reclad" + ], + "ikkr": [ + "kirk", + "rikk" + ], + "floru": [ + "flour", + "fluor" + ], + "adeeglnry": [ + "enragedly", + "legendary" + ], + "bloo": [ + "bolo", + "bool", + "lobo", + "loob", + "obol" + ], + "ahmpstyy": [ + "sympathy", + "symphyta" + ], + "chior": [ + "chiro", + "choir", + "ichor" + ], + "ceepstx": [ + "excepts", + "expects" + ], + "cho": [ + "cho", + "hoc", + "och" + ], + "itw": [ + "twi", + "wit" + ], + "brstu": [ + "burst", + "strub" + ], + "din": [ + "din", + "ind", + "nid" + ], + "coprsu": [ + "corpus", + "croups" + ], + "adehss": [ + "dashes", + "sadhes", + "sashed", + "shades" + ], + "ejst": [ + "jest", + "jets" + ], + "cdeiins": [ + "incised", + "indices" + ], + "ilnt": [ + "intl", + "lint" + ], + "adisy": [ + "daisy", + "sayid" + ], + "corrsu": [ + "cruors", + "cursor" + ], + "aeeilrst": [ + "ateliers", + "earliest", + "leariest", + "realties", + "tresaiel" + ], + "addenot": [ + "donated", + "nodated" + ], + "deffstu": [ + "destuff", + "stuffed" + ], + "ceinsst": [ + "incests", + "insects", + "scenist" + ], + "aeilmnrst": [ + "mislearnt", + "terminals", + "trailsmen", + "tramlines" + ], + "cderu": [ + "crude", + "cured" + ], + "elmrty": [ + "myrtle", + "termly" + ], + "bdeor": [ + "boder", + "bored", + "orbed", + "robed" + ], + "acelnpu": [ + "cleanup", + "unplace" + ], + "iknt": [ + "knit", + "tink" + ], + "gmu": [ + "gum", + "mug" + ], + "behort": [ + "bother", + "brothe" + ], + "abhntu": [ + "bhutan", + "thuban" + ], + "agimnt": [ + "mating", + "taming" + ], + "addeehr": [ + "adhered", + "redhead" + ], + "aeirrsv": [ + "arrives", + "riserva", + "variers" + ], + "aahll": [ + "allah", + "halal" + ], + "anpruw": [ + "unwarp", + "unwrap" + ], + "dehop": [ + "depoh", + "ephod", + "hoped" + ], + "eikp": [ + "kepi", + "kipe", + "pike" + ], + "ghou": [ + "hugo", + "ough" + ], + "aegnrw": [ + "gnawer", + "wagner", + "wanger" + ], + "aegnrr": [ + "garner", + "ranger" + ], + "ahmrs": [ + "harms", + "marsh", + "shram" + ], + "aehtt": [ + "hatte", + "theat", + "theta" + ] +} -- cgit v1.2.3 From febe5b9218f44a2c6abfa6355f063471c0593bc9 Mon Sep 17 00:00:00 2001 From: wookie184 Date: Sat, 9 Oct 2021 16:24:42 +0100 Subject: Replace usage of bot.command_prefix with constants.Client.prefix --- bot/exts/fun/trivia_quiz.py | 4 ++-- bot/exts/holidays/halloween/spookynamerate.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/trivia_quiz.py b/bot/exts/fun/trivia_quiz.py index 236586b0..712c8a12 100644 --- a/bot/exts/fun/trivia_quiz.py +++ b/bot/exts/fun/trivia_quiz.py @@ -16,7 +16,7 @@ from discord.ext import commands, tasks from rapidfuzz import fuzz from bot.bot import Bot -from bot.constants import Colours, NEGATIVE_REPLIES, Roles +from bot.constants import Client, Colours, NEGATIVE_REPLIES, Roles logger = logging.getLogger(__name__) @@ -332,7 +332,7 @@ class TriviaQuiz(commands.Cog): if self.game_status[ctx.channel.id]: await ctx.send( "Game is already running... " - f"do `{self.bot.command_prefix}quiz stop`" + f"do `{Client.prefix}quiz stop`" ) return diff --git a/bot/exts/holidays/halloween/spookynamerate.py b/bot/exts/holidays/halloween/spookynamerate.py index 2e59d4a8..a3aa4f13 100644 --- a/bot/exts/holidays/halloween/spookynamerate.py +++ b/bot/exts/holidays/halloween/spookynamerate.py @@ -143,7 +143,7 @@ class SpookyNameRate(Cog): if data["author"] == ctx.author.id: await ctx.send( "But you have already added an entry! Type " - f"`{self.bot.command_prefix}spookynamerate " + f"`{Client.prefix}spookynamerate " "delete` to delete it, and then you can add it again" ) return @@ -185,7 +185,7 @@ class SpookyNameRate(Cog): return await ctx.send( - f"But you don't have an entry... :eyes: Type `{self.bot.command_prefix}spookynamerate add your entry`" + f"But you don't have an entry... :eyes: Type `{Client.prefix}spookynamerate add your entry`" ) @Cog.listener() @@ -225,7 +225,7 @@ class SpookyNameRate(Cog): "Okkey... Welcome to the **Spooky Name Rate Game**! It's a relatively simple game.\n" f"Everyday, a random name will be sent in <#{Channels.community_bot_commands}> " "and you need to try and spookify it!\nRegister your name using " - f"`{self.bot.command_prefix}spookynamerate add spookified name`" + f"`{Client.prefix}spookynamerate add spookified name`" ) await self.data.set("first_time", False) -- cgit v1.2.3 From 0c814ceb2da9d1e8ffe49b902c4fbed377038a39 Mon Sep 17 00:00:00 2001 From: Izan Date: Mon, 11 Oct 2021 13:53:29 +0100 Subject: Set `AI.user` to @Sir Lancebot --- bot/exts/fun/tic_tac_toe.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/tic_tac_toe.py b/bot/exts/fun/tic_tac_toe.py index 5c4f8051..49620d02 100644 --- a/bot/exts/fun/tic_tac_toe.py +++ b/bot/exts/fun/tic_tac_toe.py @@ -72,7 +72,8 @@ class Player: class AI: """Tic Tac Toe AI class for against computer gaming.""" - def __init__(self, symbol: str): + def __init__(self, ctx: Context, symbol: str): + self.user = ctx.me self.symbol = symbol async def get_move(self, board: dict[int, str], _: discord.Message) -> tuple[bool, int]: @@ -97,8 +98,8 @@ class AI: return False, random.choice(open_edges) def __str__(self) -> str: - """Return `AI` as user name.""" - return "AI" + """Return mention of @Sir Lancebot.""" + return self.user.mention class Game: @@ -265,7 +266,7 @@ class TicTacToe(Cog): return if opponent is None: game = Game( - [Player(ctx.author, ctx, Emojis.x_square), AI(Emojis.o_square)], + [Player(ctx.author, ctx, Emojis.x_square), AI(ctx, Emojis.o_square)], ctx ) else: -- cgit v1.2.3 From 462b83c8150bbc9121d87cf8ee0e61d850776fc6 Mon Sep 17 00:00:00 2001 From: Izan Date: Mon, 11 Oct 2021 14:17:38 +0100 Subject: Add missing `Game.channel` attribute --- bot/exts/fun/tic_tac_toe.py | 1 + 1 file changed, 1 insertion(+) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/tic_tac_toe.py b/bot/exts/fun/tic_tac_toe.py index 49620d02..1ebf8d11 100644 --- a/bot/exts/fun/tic_tac_toe.py +++ b/bot/exts/fun/tic_tac_toe.py @@ -108,6 +108,7 @@ class Game: def __init__(self, players: list[Union[Player, AI]], ctx: Context): self.players = players self.ctx = ctx + self.channel = ctx.channel self.board = { 1: Emojis.number_emojis[1], 2: Emojis.number_emojis[2], -- cgit v1.2.3 From 860c137f868ff9c91df0669a33dd9d551cbcc4a5 Mon Sep 17 00:00:00 2001 From: Izan Date: Sun, 17 Oct 2021 13:09:54 +0100 Subject: Address review & make `AI.get_move` a staticmethod --- bot/exts/fun/tic_tac_toe.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'bot/exts/fun') diff --git a/bot/exts/fun/tic_tac_toe.py b/bot/exts/fun/tic_tac_toe.py index 1ebf8d11..946b6f7b 100644 --- a/bot/exts/fun/tic_tac_toe.py +++ b/bot/exts/fun/tic_tac_toe.py @@ -72,11 +72,12 @@ class Player: class AI: """Tic Tac Toe AI class for against computer gaming.""" - def __init__(self, ctx: Context, symbol: str): - self.user = ctx.me + def __init__(self, bot_user: discord.Member, symbol: str): + self.user = bot_user self.symbol = symbol - async def get_move(self, board: dict[int, str], _: discord.Message) -> tuple[bool, int]: + @staticmethod + async def get_move(board: dict[int, str], _: discord.Message) -> tuple[bool, int]: """Get move from AI. AI use Minimax strategy.""" possible_moves = [i for i, emoji in board.items() if emoji in list(Emojis.number_emojis.values())] @@ -175,7 +176,8 @@ class Game: self.canceled = True return False, "User declined" - async def add_reactions(self, msg: discord.Message) -> None: + @staticmethod + async def add_reactions(msg: discord.Message) -> None: """Add number emojis to message.""" for nr in Emojis.number_emojis.values(): await msg.add_reaction(nr) @@ -267,7 +269,7 @@ class TicTacToe(Cog): return if opponent is None: game = Game( - [Player(ctx.author, ctx, Emojis.x_square), AI(ctx, Emojis.o_square)], + [Player(ctx.author, ctx, Emojis.x_square), AI(ctx.me, Emojis.o_square)], ctx ) else: -- cgit v1.2.3