diff options
author | glowinthedark <48893368+glowinthedark@users.noreply.github.com> | 2020-02-29 21:46:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-01 02:16:31 +0530 |
commit | 947e41105b3fdfb7ce9734fb25119c46695f7bba (patch) | |
tree | 74c63b130b262a06ea068e10ffc20c1dd69d4897 /app | |
parent | bea3cd5457e331f04a9aeb5c99267f14908f5eaa (diff) |
Add xkpasswd-style password generator (#633)
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Diffstat (limited to 'app')
12 files changed, 9718 insertions, 10 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt index 50d5bcad..24ed62df 100644 --- a/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt +++ b/app/src/main/java/com/zeapo/pwdstore/UserPreference.kt @@ -15,6 +15,7 @@ import android.os.Bundle import android.os.Environment import android.provider.DocumentsContract import android.provider.Settings +import android.text.TextUtils import android.view.MenuItem import android.view.accessibility.AccessibilityManager import android.widget.Toast @@ -23,6 +24,7 @@ import androidx.biometric.BiometricManager import androidx.core.content.getSystemService import androidx.documentfile.provider.DocumentFile import androidx.preference.CheckBoxPreference +import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceManager @@ -32,6 +34,7 @@ import com.google.android.material.snackbar.Snackbar import com.zeapo.pwdstore.autofill.AutofillPreferenceActivity import com.zeapo.pwdstore.crypto.PgpActivity import com.zeapo.pwdstore.git.GitActivity +import com.zeapo.pwdstore.pwgenxkpwd.XkpwdDictionary import com.zeapo.pwdstore.sshkeygen.ShowSshKeyFragment import com.zeapo.pwdstore.sshkeygen.SshKeyGenActivity import com.zeapo.pwdstore.utils.PasswordRepository @@ -312,6 +315,51 @@ class UserPreference : AppCompatActivity() { } } } + + val prefCustomXkpwdDictionary = findPreference<Preference>("pref_key_custom_dict") + prefCustomXkpwdDictionary?.onPreferenceClickListener = ClickListener { + callingActivity.storeCustomDictionaryPath() + true + } + val dictUri = sharedPreferences.getString("pref_key_custom_dict", "") + + if (!TextUtils.isEmpty(dictUri)) { + setCustomDictSummary(prefCustomXkpwdDictionary, Uri.parse(dictUri)) + } + + val prefIsCustomDict = findPreference<CheckBoxPreference>("pref_key_is_custom_dict") + val prefCustomDictPicker = findPreference<Preference>("pref_key_custom_dict") + val prefPwgenType = findPreference<ListPreference>("pref_key_pwgen_type") + showHideDependentPrefs(prefPwgenType?.value, prefIsCustomDict, prefCustomDictPicker) + + prefPwgenType?.onPreferenceChangeListener = ChangeListener() { _, newValue -> + showHideDependentPrefs(newValue, prefIsCustomDict, prefCustomDictPicker) + true + } + + prefIsCustomDict?.onPreferenceChangeListener = ChangeListener() { _, newValue -> + if (!(newValue as Boolean)) { + val customDictFile = File(context.filesDir, XkpwdDictionary.XKPWD_CUSTOM_DICT_FILE) + if (customDictFile.exists()) { + FileUtils.deleteQuietly(customDictFile) + } + prefCustomDictPicker?.setSummary(R.string.xkpwgen_pref_custom_dict_picker_summary) + } + true + } + } + + private fun showHideDependentPrefs(newValue: Any?, prefIsCustomDict: CheckBoxPreference?, prefCustomDictPicker: Preference?) { + when (newValue as String) { + PgpActivity.KEY_PWGEN_TYPE_CLASSIC -> { + prefIsCustomDict?.isVisible = false + prefCustomDictPicker?.isVisible = false + } + PgpActivity.KEY_PWGEN_TYPE_XKPASSWD -> { + prefIsCustomDict?.isVisible = true + prefCustomDictPicker?.isVisible = true + } + } } override fun onResume() { @@ -396,6 +444,17 @@ class UserPreference : AppCompatActivity() { } } + /** + * Pick custom xkpwd dictionary from sdcard + */ + private fun storeCustomDictionaryPath() { + val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { + addCategory(Intent.CATEGORY_OPENABLE) + type = "*/*" + } + startActivityForResult(intent, SET_CUSTOM_XKPWD_DICT) + } + @Throws(IOException::class) private fun copySshKey(uri: Uri) { // TODO: Check if valid SSH Key before import @@ -516,6 +575,27 @@ class UserPreference : AppCompatActivity() { } } } + SET_CUSTOM_XKPWD_DICT -> { + val uri: Uri = data.data ?: throw IOException("Unable to open file") + + Toast.makeText( + this, + this.resources.getString(R.string.xkpwgen_custom_dict_imported, uri.path), + Toast.LENGTH_SHORT + ).show() + val prefs = PreferenceManager.getDefaultSharedPreferences(applicationContext) + + prefs.edit().putString("pref_key_custom_dict", uri.toString()).apply() + + val customDictPref = prefsFragment.findPreference<Preference>("pref_key_custom_dict") + setCustomDictSummary(customDictPref, uri) + // copy user selected file to internal storage + val inputStream = this.contentResolver.openInputStream(uri) + val customDictFile = File(this.filesDir.toString(), XkpwdDictionary.XKPWD_CUSTOM_DICT_FILE) + FileUtils.copyInputStreamToFile(inputStream, customDictFile) + + setResult(Activity.RESULT_OK) + } } } super.onActivityResult(requestCode, resultCode, data) @@ -599,6 +679,16 @@ class UserPreference : AppCompatActivity() { private const val SELECT_GIT_DIRECTORY = 4 private const val EXPORT_PASSWORDS = 5 private const val EDIT_GIT_CONFIG = 6 + private const val SET_CUSTOM_XKPWD_DICT = 7 private const val TAG = "UserPreference" + + /** + * Set custom dictionary summary + */ + @JvmStatic + private fun setCustomDictSummary(customDictPref: Preference?, uri: Uri) { + val fileName = uri.path?.substring(uri.path?.lastIndexOf(":")!! + 1) + customDictPref?.setSummary("Selected dictionary: " + fileName) + } } } diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt index 4e49dfe3..42878171 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpActivity.kt @@ -38,6 +38,7 @@ import com.zeapo.pwdstore.PasswordEntry import com.zeapo.pwdstore.R import com.zeapo.pwdstore.UserPreference import com.zeapo.pwdstore.ui.dialogs.PasswordGeneratorDialogFragment +import com.zeapo.pwdstore.ui.dialogs.XkPasswordGeneratorDialogFragment import com.zeapo.pwdstore.utils.Otp import java.io.ByteArrayInputStream import java.io.ByteArrayOutputStream @@ -142,8 +143,12 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound { setContentView(R.layout.encrypt_layout) generate_password?.setOnClickListener { - PasswordGeneratorDialogFragment() - .show(supportFragmentManager, "generator") + when (settings.getString("pref_key_pwgen_type", KEY_PWGEN_TYPE_CLASSIC)) { + KEY_PWGEN_TYPE_CLASSIC -> PasswordGeneratorDialogFragment() + .show(supportFragmentManager, "generator") + KEY_PWGEN_TYPE_XKPASSWD -> XkPasswordGeneratorDialogFragment() + .show(supportFragmentManager, "xkpwgenerator") + } } title = getString(R.string.new_password_title) @@ -505,8 +510,12 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound { private fun editPassword() { setContentView(R.layout.encrypt_layout) generate_password?.setOnClickListener { - PasswordGeneratorDialogFragment() - .show(supportFragmentManager, "generator") + when (settings.getString("pref_key_pwgen_type", KEY_PWGEN_TYPE_CLASSIC)) { + KEY_PWGEN_TYPE_CLASSIC -> PasswordGeneratorDialogFragment() + .show(supportFragmentManager, "generator") + KEY_PWGEN_TYPE_XKPASSWD -> XkPasswordGeneratorDialogFragment() + .show(supportFragmentManager, "xkpwgenerator") + } } title = getString(R.string.edit_password_title) @@ -853,6 +862,9 @@ class PgpActivity : AppCompatActivity(), OpenPgpServiceConnection.OnBound { const val TAG = "PgpActivity" + const val KEY_PWGEN_TYPE_CLASSIC = "classic" + const val KEY_PWGEN_TYPE_XKPASSWD = "xkpasswd" + private var delayTask: DelayShow? = null /** diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/CapsType.kt b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/CapsType.kt new file mode 100644 index 00000000..a0311b8d --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/CapsType.kt @@ -0,0 +1,9 @@ +/* + * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ +package com.zeapo.pwdstore.pwgenxkpwd + +enum class CapsType { + lowercase, UPPERCASE, TitleCase, Sentencecase, As_iS +} diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/PasswordBuilder.kt b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/PasswordBuilder.kt new file mode 100644 index 00000000..a526490f --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/PasswordBuilder.kt @@ -0,0 +1,166 @@ +/* + * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ +package com.zeapo.pwdstore.pwgenxkpwd + +import android.content.Context +import com.zeapo.pwdstore.R +import com.zeapo.pwdstore.pwgen.PasswordGenerator +import com.zeapo.pwdstore.pwgen.PasswordGenerator.PasswordGeneratorExeption +import java.io.IOException +import java.security.SecureRandom +import java.util.ArrayList +import java.util.Locale + +class PasswordBuilder(ctx: Context) { + + private var numSymbols = 0 + private var isAppendSymbolsSeparator = false + private var context = ctx + private var numWords = 3 + private var maxWordLength = 9 + private var minWordLength = 5 + private var separator = "." + private var capsType = CapsType.Sentencecase + private var prependDigits = 0 + private var numDigits = 0 + private var isPrependWithSeparator = false + private var isAppendNumberSeparator = false + + fun setNumberOfWords(amount: Int) = apply { + numWords = amount + } + + fun setMinimumWordLength(min: Int) = apply { + minWordLength = min + } + + fun setMaximumWordLength(max: Int) = apply { + maxWordLength = max + } + + fun setSeparator(separator: String) = apply { + this.separator = separator + } + + fun setCapitalization(capitalizationScheme: CapsType) = apply { + capsType = capitalizationScheme + } + + @JvmOverloads + fun prependNumbers(numDigits: Int, addSeparator: Boolean = true) = apply { + prependDigits = numDigits + isPrependWithSeparator = addSeparator + } + + @JvmOverloads + fun appendNumbers(numDigits: Int, addSeparator: Boolean = false) = apply { + this.numDigits = numDigits + isAppendNumberSeparator = addSeparator + } + + @JvmOverloads + fun appendSymbols(numSymbols: Int, addSeparator: Boolean = false) = apply { + this.numSymbols = numSymbols + isAppendSymbolsSeparator = addSeparator + } + + private fun generateRandomNumberSequence(totalNumbers: Int): String { + val secureRandom = SecureRandom() + val numbers = StringBuilder(totalNumbers) + + for (i in 0 until totalNumbers) { + numbers.append(secureRandom.nextInt(10)) + } + return numbers.toString() + } + + private fun generateRandomSymbolSequence(numSymbols: Int): String { + val secureRandom = SecureRandom() + val numbers = StringBuilder(numSymbols) + + for (i in 0 until numSymbols) { + numbers.append(SYMBOLS[secureRandom.nextInt(SYMBOLS.length)]) + } + return numbers.toString() + } + + @Throws(PasswordGenerator.PasswordGeneratorExeption::class) + fun create(): String { + val wordBank = ArrayList<String>() + val secureRandom = SecureRandom() + val password = StringBuilder() + + if (prependDigits != 0) { + password.append(generateRandomNumberSequence(prependDigits)) + if (isPrependWithSeparator) { + password.append(separator) + } + } + try { + val dictionary = XkpwdDictionary(context) + val words = dictionary.words + for (wordLength in words.keys) { + if (wordLength in minWordLength..maxWordLength) { + wordBank.addAll(words[wordLength]!!) + } + } + + if (wordBank.size == 0) { + throw PasswordGeneratorExeption(context.getString(R.string.xkpwgen_builder_error, minWordLength, maxWordLength)) + } + + for (i in 0 until numWords) { + val randomIndex = secureRandom.nextInt(wordBank.size) + var s = wordBank[randomIndex] + + if (capsType != CapsType.As_iS) { + s = s.toLowerCase(Locale.getDefault()) + when (capsType) { + CapsType.UPPERCASE -> s = s.toUpperCase(Locale.getDefault()) + CapsType.Sentencecase -> { + if (i == 0) { + s = capitalize(s) + } + } + CapsType.TitleCase -> { + s = capitalize(s) + } + } + } + password.append(s) + wordBank.removeAt(randomIndex) + if (i + 1 < numWords) { + password.append(separator) + } + } + } catch (e: IOException) { + throw PasswordGeneratorExeption("Failed generating password!") + } + if (numDigits != 0) { + if (isAppendNumberSeparator) { + password.append(separator) + } + password.append(generateRandomNumberSequence(numDigits)) + } + if (numSymbols != 0) { + if (isAppendSymbolsSeparator) { + password.append(separator) + } + password.append(generateRandomSymbolSequence(numSymbols)) + } + return password.toString() + } + + private fun capitalize(s: String): String { + var result = s + val lower = result.toLowerCase(Locale.getDefault()) + result = lower.substring(0, 1).toUpperCase(Locale.getDefault()) + result.substring(1) + return result + } + + companion object { + private const val SYMBOLS = "!@\$%^&*-_+=:|~?/.;#" + } +} diff --git a/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/XkpwdDictionary.kt b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/XkpwdDictionary.kt new file mode 100644 index 00000000..27f8fbd0 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/pwgenxkpwd/XkpwdDictionary.kt @@ -0,0 +1,58 @@ +/* + * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ +package com.zeapo.pwdstore.pwgenxkpwd + +import android.content.Context +import android.text.TextUtils +import androidx.preference.PreferenceManager +import com.zeapo.pwdstore.R +import java.io.File +import java.util.ArrayList +import java.util.HashMap + +class XkpwdDictionary(context: Context) { + val words: HashMap<Int, ArrayList<String>> = HashMap() + + init { + val prefs = PreferenceManager.getDefaultSharedPreferences(context) + + var lines: List<String> = listOf() + + if (prefs.getBoolean("pref_key_is_custom_dict", false)) { + + val uri = prefs.getString("pref_key_custom_dict", "") + + if (!TextUtils.isEmpty(uri)) { + val customDictFile = File(context.filesDir, XKPWD_CUSTOM_DICT_FILE) + + if (customDictFile.exists() && customDictFile.canRead()) { + lines = customDictFile.inputStream().bufferedReader().readLines() + } + } + } + + if (lines.isEmpty()) { + lines = context.getResources().openRawResource(R.raw.xkpwdict).bufferedReader().readLines() + } + + for (word in lines) { + if (!word.trim { it <= ' ' }.contains(" ")) { + val length = word.trim { it <= ' ' }.length + + if (length > 0) { + if (!words.containsKey(length)) { + words[length] = ArrayList() + } + val strings = words[length]!! + strings.add(word.trim { it <= ' ' }) + } + } + } + } + + companion object { + const val XKPWD_CUSTOM_DICT_FILE = "custom_dict.txt" + } +} diff --git a/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/PasswordGeneratorDialogFragment.kt b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/PasswordGeneratorDialogFragment.kt index af344bd4..26b6190f 100644 --- a/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/PasswordGeneratorDialogFragment.kt +++ b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/PasswordGeneratorDialogFragment.kt @@ -4,7 +4,6 @@ */ package com.zeapo.pwdstore.ui.dialogs -import android.app.Activity import android.app.Dialog import android.content.Context import android.graphics.Typeface @@ -26,7 +25,7 @@ import com.zeapo.pwdstore.pwgen.PasswordGenerator.setPrefs class PasswordGeneratorDialogFragment : DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = MaterialAlertDialogBuilder(requireContext()) - val callingActivity: Activity = requireActivity() + val callingActivity = requireActivity() val inflater = callingActivity.layoutInflater val view = inflater.inflate(R.layout.fragment_pwgen, null) val monoTypeface = Typeface.createFromAsset(callingActivity.assets, "fonts/sourcecodepro.ttf") @@ -49,8 +48,8 @@ class PasswordGeneratorDialogFragment : DialogFragment() { val edit = callingActivity.findViewById<EditText>(R.id.crypto_password_edit) edit.setText(passwordText.text) } - builder.setNegativeButton(resources.getString(R.string.dialog_cancel)) { _, _ -> } - builder.setNeutralButton(resources.getString(R.string.pwgen_generate), null) + builder.setNeutralButton(resources.getString(R.string.dialog_cancel)) { _, _ -> } + builder.setNegativeButton(resources.getString(R.string.pwgen_generate), null) val dialog = builder.setTitle(this.resources.getString(R.string.pwgen_title)).create() dialog.setOnShowListener { setPreferences() @@ -60,7 +59,7 @@ class PasswordGeneratorDialogFragment : DialogFragment() { Toast.makeText(requireActivity(), e.message, Toast.LENGTH_SHORT).show() passwordText.text = "" } - dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener { + dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener { setPreferences() try { passwordText.text = generate(callingActivity.applicationContext)[0] diff --git a/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt new file mode 100644 index 00000000..f42b6536 --- /dev/null +++ b/app/src/main/java/com/zeapo/pwdstore/ui/dialogs/XkPasswordGeneratorDialogFragment.kt @@ -0,0 +1,160 @@ +/* + * Copyright © 2014-2020 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ +package com.zeapo.pwdstore.ui.dialogs + +import android.app.Dialog +import android.content.Context +import android.content.SharedPreferences +import android.graphics.Typeface +import android.os.Bundle +import android.widget.CheckBox +import android.widget.EditText +import android.widget.Spinner +import android.widget.Toast +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.widget.AppCompatEditText +import androidx.appcompat.widget.AppCompatTextView +import androidx.fragment.app.DialogFragment +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.zeapo.pwdstore.R +import com.zeapo.pwdstore.pwgen.PasswordGenerator +import com.zeapo.pwdstore.pwgenxkpwd.CapsType +import com.zeapo.pwdstore.pwgenxkpwd.PasswordBuilder +import timber.log.Timber + +/** A placeholder fragment containing a simple view. */ +class XkPasswordGeneratorDialogFragment : DialogFragment() { + + private lateinit var editSeparator: AppCompatEditText + private lateinit var editNumWords: AppCompatEditText + private lateinit var cbSymbols: CheckBox + private lateinit var spinnerCapsType: Spinner + private lateinit var cbNumbers: CheckBox + private lateinit var prefs: SharedPreferences + private lateinit var spinnerNumbersCount: Spinner + private lateinit var spinnerSymbolsCount: Spinner + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val builder = MaterialAlertDialogBuilder(requireContext()) + val callingActivity = requireActivity() + val inflater = callingActivity.layoutInflater + val view = inflater.inflate(R.layout.fragment_xkpwgen, null) + + val monoTypeface = Typeface.createFromAsset(callingActivity.assets, "fonts/sourcecodepro.ttf") + + builder.setView(view) + + prefs = callingActivity.getSharedPreferences("PasswordGenerator", Context.MODE_PRIVATE) + + cbNumbers = view.findViewById<CheckBox>(R.id.xknumerals) + cbNumbers.isChecked = prefs.getBoolean(PREF_KEY_USE_NUMERALS, false) + + spinnerNumbersCount = view.findViewById<Spinner>(R.id.xk_numbers_count) + + val storedNumbersCount = prefs.getInt(PREF_KEY_NUMBERS_COUNT, 0) + spinnerNumbersCount.setSelection(storedNumbersCount) + + cbSymbols = view.findViewById<CheckBox>(R.id.xksymbols) + cbSymbols.isChecked = prefs.getBoolean(PREF_KEY_USE_SYMBOLS, false) != false + spinnerSymbolsCount = view.findViewById<Spinner>(R.id.xk_symbols_count) + val symbolsCount = prefs.getInt(PREF_KEY_SYMBOLS_COUNT, 0) + spinnerSymbolsCount.setSelection(symbolsCount) + + val previousStoredCapStyle: String = try { + prefs.getString(PREF_KEY_CAPITALS_STYLE, DEFAULT_CAPS_STYLE)!! + } catch (e: Exception) { + Timber.tag("xkpw").e(e) + DEFAULT_CAPS_STYLE + } + spinnerCapsType = view.findViewById<Spinner>(R.id.xkCapType) + + val lastCapitalsStyleIndex: Int + + lastCapitalsStyleIndex = try { + CapsType.valueOf(previousStoredCapStyle).ordinal + } catch (e: Exception) { + Timber.tag("xkpw").e(e) + DEFAULT_CAPS_INDEX + } + spinnerCapsType.setSelection(lastCapitalsStyleIndex) + + editNumWords = view.findViewById<AppCompatEditText>(R.id.xk_num_words) + editNumWords.setText(prefs.getString(PREF_KEY_NUM_WORDS, DEFAULT_NUMBER_OF_WORDS)) + + editSeparator = view.findViewById<AppCompatEditText>(R.id.xk_separator) + editSeparator.setText(prefs.getString(PREF_KEY_SEPARATOR, DEFAULT_WORD_SEPARATOR)) + + val passwordText: AppCompatTextView = view.findViewById(R.id.xkPasswordText) + passwordText.typeface = monoTypeface + + builder.setPositiveButton(resources.getString(R.string.dialog_ok)) { _, _ -> + setPreferences() + val edit = callingActivity.findViewById<EditText>(R.id.crypto_password_edit) + edit.setText(passwordText.text) + } + + // flip neutral and negative buttons + builder.setNeutralButton(resources.getString(R.string.dialog_cancel)) { _, _ -> } + builder.setNegativeButton(resources.getString(R.string.pwgen_generate), null) + + val dialog = builder.setTitle(this.resources.getString(R.string.xkpwgen_title)).create() + + dialog.setOnShowListener { + setPreferences() + makeAndSetPassword(passwordText) + + dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setOnClickListener { + setPreferences() + makeAndSetPassword(passwordText) + } + } + return dialog + } + + private fun makeAndSetPassword(passwordText: AppCompatTextView) { + try { + passwordText.text = PasswordBuilder(requireContext()) + .setNumberOfWords(Integer.valueOf(editNumWords.text.toString())) + .setMinimumWordLength(DEFAULT_MIN_WORD_LENGTH) + .setMaximumWordLength(DEFAULT_MAX_WORD_LENGTH) + .setSeparator(editSeparator.text.toString()) + .appendNumbers(if (cbNumbers.isChecked) Integer.parseInt(spinnerNumbersCount.selectedItem as String) else 0) + .appendSymbols(if (cbSymbols.isChecked) Integer.parseInt(spinnerSymbolsCount.selectedItem as String) else 0) + .setCapitalization(CapsType.valueOf(spinnerCapsType.selectedItem.toString())).create() + } catch (e: PasswordGenerator.PasswordGeneratorExeption) { + Toast.makeText(requireActivity(), e.message, Toast.LENGTH_SHORT).show() + Timber.tag("xkpw").e(e, "failure generating xkpasswd") + passwordText.text = FALLBACK_ERROR_PASS + } + } + + private fun setPreferences() { + prefs.edit().putBoolean(PREF_KEY_USE_NUMERALS, cbNumbers.isChecked) + .putBoolean(PREF_KEY_USE_SYMBOLS, cbSymbols.isChecked) + .putString(PREF_KEY_CAPITALS_STYLE, spinnerCapsType.selectedItem.toString()) + .putString(PREF_KEY_NUM_WORDS, editNumWords.text.toString()) + .putString(PREF_KEY_SEPARATOR, editSeparator.text.toString()) + .putInt(PREF_KEY_NUMBERS_COUNT, Integer.parseInt(spinnerNumbersCount.selectedItem as String) - 1) + .putInt(PREF_KEY_SYMBOLS_COUNT, Integer.parseInt(spinnerSymbolsCount.selectedItem as String) - 1) + .apply() + } + + companion object { + const val PREF_KEY_USE_NUMERALS = "pref_key_use_numerals" + const val PREF_KEY_USE_SYMBOLS = "pref_key_use_symbols" + const val PREF_KEY_CAPITALS_STYLE = "pref_key_capitals_style" + const val PREF_KEY_NUM_WORDS = "pref_key_num_words" + const val PREF_KEY_SEPARATOR = "pref_key_separator" + const val PREF_KEY_NUMBERS_COUNT = "pref_key_xkpwgen_numbers_count" + const val PREF_KEY_SYMBOLS_COUNT = "pref_key_symbols_count" + val DEFAULT_CAPS_STYLE = CapsType.Sentencecase.name + val DEFAULT_CAPS_INDEX = CapsType.Sentencecase.ordinal + const val DEFAULT_NUMBER_OF_WORDS = "3" + const val DEFAULT_WORD_SEPARATOR = "." + const val DEFAULT_MIN_WORD_LENGTH = 3 + const val DEFAULT_MAX_WORD_LENGTH = 9 + const val FALLBACK_ERROR_PASS = "42" + } +} diff --git a/app/src/main/res/layout/fragment_xkpwgen.xml b/app/src/main/res/layout/fragment_xkpwgen.xml new file mode 100644 index 00000000..6e9ebd29 --- /dev/null +++ b/app/src/main/res/layout/fragment_xkpwgen.xml @@ -0,0 +1,142 @@ +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingLeft="24dp" + android:paddingTop="20dp" + android:paddingRight="24dp" + android:paddingBottom="20dp" + tools:context=".MainActivityFragment"> + + <androidx.appcompat.widget.AppCompatTextView + android:id="@+id/xkPasswordText" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textIsSelectable="true" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:baselineAligned="false" + android:orientation="horizontal" + android:weightSum="2"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight=".6" + android:orientation="vertical"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:text="@string/pwgen_include" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <CheckBox + android:id="@+id/xknumerals" + android:layout_width="wrap_content" + android:gravity="center_vertical" + android:text="@string/xkpwgen_numbers" + android:layout_height="wrap_content" /> + + <Spinner + android:id="@+id/xk_numbers_count" + android:layout_width="fill_parent" + android:minWidth="40dp" + android:dropDownWidth="40dp" + android:gravity="center_vertical" + android:layout_height="wrap_content" + android:entries="@array/xk_range_1_10" + android:entryValues="@array/xk_range_1_10" + android:spinnerMode="dropdown" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <CheckBox + android:id="@+id/xksymbols" + android:layout_width="wrap_content" + android:gravity="center_vertical" + android:text="@string/xkpwgen_symbols" + android:layout_height="wrap_content"/> + + <Spinner + android:id="@+id/xk_symbols_count" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minWidth="40dp" + android:dropDownWidth="40dp" + android:entries="@array/xk_range_1_10" + android:entryValues="@array/xk_range_1_10" + android:spinnerMode="dropdown" /> + </LinearLayout> + + <Spinner + android:id="@+id/xkCapType" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:entries="@array/capitalization_type_values" + android:entryValues="@array/capitalization_type_values" + android:spinnerMode="dropdown" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_weight="1.4" + android:orientation="vertical"> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:text="@string/xkpwgen_length" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + <EditText + android:id="@+id/xk_num_words" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:maxLength="2" + android:ems="10" + android:inputType="number" /> + + <androidx.appcompat.widget.AppCompatTextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:text="@string/xkpwgen_separator" + android:textAppearance="?android:attr/textAppearanceSmall" /> + + <EditText + android:id="@+id/xk_separator" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="8dp" + android:ems="10" + android:autofillHints="" + android:hint="@string/xkpwgen_separator_character" + android:inputType="text" /> + </LinearLayout> + </LinearLayout> + </LinearLayout> +</ScrollView> diff --git a/app/src/main/res/raw/xkpwdict.txt b/app/src/main/res/raw/xkpwdict.txt new file mode 100644 index 00000000..8823c037 --- /dev/null +++ b/app/src/main/res/raw/xkpwdict.txt @@ -0,0 +1,9000 @@ +fresis +plinapherium +vahes +voictink +outimil +catahons +allenter +parts +nonuessy +hopatheaers +gizapper +readmisotic +hemas +pries +zultible +delletaming +welextery +horisticia +slics +tockmendprost +fidersa +chnese +metic +holigial +yatinsia +nesse +glinglysilly +ingesmarro +dyinchorte +alued +swogordiggiid +ingtal +verednessined +exagus +haetamantsic +coela +inolopee +promphous +dereslisers +preateatosian +sprentous +tisanhomincy +slontmon +mifers +aphilikoness +metiogo +aphanthysile +motalednes +overinred +agered +hoompagitoly +ouste +acrouses +floidologe +spilivetisms +suronaters +hover +eutbollumnes +baear +ploranepar +efernii +distent +nunies +gopicisher +phize +slopoin +rildic +noinon +pernauve +pornindness +nonart +olizing +limulthoct +bessic +blecoma +rismone +faubly +sperom +unmatortinan +questy +ophist +verion +magialictoide +luous +primicry +unsulathode +ytizonlan +elown +dones +oickene +dusts +flisness +copte +stiolartrapes +pneyests +unfalinansed +enzoly +carawed +mening +unsteberred +sumbecormend +abliphon +wigatrant +ingiefoozzly +puback +luminicke +taseara +teutchoo +emiabling +tratimbe +nueness +atism +siatlith +slerm +recized +milogred +phiresce +anickness +syackyan +eptickwing +nicarlasherty +raliperm +mothetionus +larbulant +unuck +dunonmetorme +gralft +misticats +smoal +plamerm +nubus +filing +unleggeronate +brosoodec +etheaterus +subcofine +inted +eptery +fientracta +unfellum +sorasirnated +heryogy +rediarcouse +tring +unestous +niping +befaus +intale +subspaseters +posillity +annucaft +therackylphy +subration +abdulated +diption +seader +isiansatelp +zotte +fureologing +ansely +poodipents +satirubial +pilsing +clized +submus +uninalish +inizanting +faulematic +admirefailing +bantery +cletrale +golor +brose +prehoxilver +cipacet +unass +solitomether +ephans +unebouggins +kolotopory +tabaries +pridditefale +sallines +ellatal +irchysts +undemikens +petemilly +encrious +preeslusly +pisosigrammot +tervary +novablextred +entinetia +esmelly +kammoweripa +acculotiont +evite +outhle +unpers +nolosicali +dedintevients +vishak +carightal +hometbanopas +hyron +domelerer +crytionsm +zolehoracia +kersining +phesiscogfunt +searmang +matoneraggran +mondeable +unfeopicastum +imbebomyrlyng +prodae +rejus +stived +chiplabsougly +licidgess +halcitingin +disits +dinnesquadae +eurategly +sormally +plevene +pseurisbed +ceptize +hyperanatly +clogertil +sembai +nulushnics +aings +sultion +undany +undespes +menes +affmateasente +demoente +suped +potes +dearan +shexse +inarocradwind +ramakied +sageste +nomishneary +vitess +undably +psychbarably +khargal +flionsock +flash +pighs +orpin +sitlectally +plarthrur +dirubte +audives +nophea +suffea +cathodandead +datic +munsautured +hysturams +reennove +pidition +uking +culgalicastic +poldly +aphort +nonsperfer +sumbsal +drivern +knouphiconit +undrieseuropy +thrinama +dacon +conta +pente +furau +inied +waspatignen +parchea +sared +unmin +spolum +volest +lefibulan +stesquist +atinarm +cychomats +squilinte +ardste +affle +eascropliness +diptoppies +unmempo +loreruiss +prels +dearactinit +aseper +etrabling +chypupec +baurpreme +equoncriont +peneis +rankyly +kally +hesue +histal +lisemats +noryned +calism +maspereceizes +lized +sweeruciing +midaste +anego +prochyos +prolpane +unseutates +tainey +symachus +lanader +urize +irraff +preforviver +anartites +spotunisous +stranne +puthis +pawarilogrado +augoilikernon +shalts +miders +piciler +triandies +theatimisma +unctescal +nonae +unking +woridd +iriomanture +kakers +rapperegge +ablike +senanon +moleyed +horthicater +crory +solly +soremaile +pherb +clishydors +suremblemic +ounhencher +samper +afferbentic +unhockakate +suped +pinathytic +fravituffic +tratizinle +prest +mentable +nonadrostries +arize +valize +moscous +emijigged +prearnes +carchtheld +copionalae +acadenicity +thring +overs +zonabloutsum +pretted +lugly +cingon +cestably +fasum +dered +hetoguee +triciferfe +lesited +grater +reveri +clows +deless +bicurnisted +laked +isibrarmales +forized +distorly +bookallers +mutamited +allon +chipiumpan +dility +reamuses +anarropillic +ealeneter +wittously +tratualic +olian +seandurishu +hetilationint +hablerip +ungeostas +turebromyrity +gulenu +polining +actonce +skeproardea +extulle +emptotocaliss +unanchabeard +cosed +spiting +pathylle +dilcitide +tholgendlic +union +hypaseding +inclanickner +enize +photomy +pygers +pharying +baspeang +proammithus +spallic +seliting +axomeon +jardanth +derouthiis +prealionesse +sulous +preapyr +prescits +comentaeous +diuss +deersowarte +glocceackhe +buchms +sneupped +teusly +vismotatren +mismas +athbudencity +wooro +unamy +locatotome +tefended +saltopropper +enonverooldy +relath +unclucage +olopoly +hechtly +dardomcallus +repilid +minfierung +aviant +ancomellasir +thablent +tortess +polider +susnes +nonasm +winclertess +appettest +crolarin +rention +andyol +stvelly +sustertive +buroverhen +fosteree +subwoodess +cateting +sownlicionie +nodic +rente +happunshness +arcers +biedeprets +snerspoly +buchorific +antitiontles +sholebiclost +ampor +colatistom +medplogitran +unbed +faity +engly +ingly +sphobity +titaicastic +cealing +erroaffly +clana +pagodocculate +romeled +aditale +herthydrager +unsuffer +nodole +croppayphora +acote +wardspined +lated +reoly +debalante +ebrashapach +guling +rebowee +undecionaled +teureally +cophrivesian +alique +woralce +undinve +mionsagelian +noneet +abied +catis +muncyes +lantenegitize +velly +psyng +parlontoms +estalla +hersuric +olocke +inguerind +caliss +unoncheifs +cometed +chriesseing +overtew +merly +meters +pothemen +overthoneole +kinagillm +matetterus +foranatize +unchrierver +viskioncea +preptylomy +vansm +arejachanes +miairrupluts +tatily +podgerry +unymic +exuram +gluse +diverprottoni +pered +dydrou +pribegaticaph +sylogranhosm +legal +tablexpants +tatie +frabless +hyphophobeab +peribler +rulize +jocking +husness +bifiets +lated +gencon +snally +swist +peroge +araphoen +balit +jarides +corip +fentaut +prelamons +smicary +aquin +kinedor +autilan +ovendier +bariggist +lingly +unkwietwing +antaph +ruscer +escocks +pauseambarkal +vamlahate +lubbisity +raperinger +asariness +awkeamingon +mulamican +pricallstim +reasive +gragromagot +tousnainesus +unnesed +fiess +revelognewis +unjaperinlial +aftyged +dents +posofied +bastealip +calianred +culaint +argearchnes +niloplint +colve +gismettelint +blendi +wariterarbiga +sauxodepts +coely +subelly +hoping +aponne +influsnest +binguers +thingon +menbosiser +epreotoxyla +fatintrast +inines +brallaven +untorical +uncidpatic +cless +starmanth +cones +sectered +applartly +canck +insubs +bionicompic +cranter +felis +actin +overres +holot +intion +inoblestely +nopoded +refass +scrospore +preedebiss +balendrail +prinenea +sorchellon +coimetrue +alsuboing +ovestion +seredle +stinfrenhy +rebtraciga +carraceness +cankmess +tradrudemer +karials +lyzed +thilione +deing +remicariopy +assed +chrinize +surers +werinethous +yabailic +nothras +lashed +donings +unater +veriatines +adbally +enleavindety +ceaungeo +prenstioule +ungly +brasubsubbero +laism +objectous +inisifice +jumenthile +pyroniss +subic +buing +opery +tatenter +toetimne +rhial +tralous +conisic +insheignae +beciop +retatere +minized +unchor +ositas +shistiter +clookoid +seletion +elian +suphodiata +ganis +artheam +antint +undifyiner +haistrotic +abing +unroanes +telattlithe +imoniecion +miscodyls +loust +notologgalic +scars +moplaryingus +osiogly +retremy +bostogess +acracksh +raphrerf +bitagmopores +alwedid +jultimmulite +rusly +snativiss +acooptortedul +orethosisrize +biastanled +flessa +unablaterbar +skers +monal +encemper +sentege +guichorturi +reptinies +comidaphark +pawidiglesed +calitess +surrhy +snetrapping +khimited +kishan +crodotin +redender +gertribbithan +stepat +glint +chipetatheres +burochemooly +bailve +eline +scolabled +stetion +tifulitical +anted +hypots +reiric +dignous +teroseazia +poneumicaus +bayiss +staft +cross +nonnatin +menchs +gomareria +pecal +ethery +johan +prempeted +ferivenorging +extions +douserstra +ampla +muttic +waciadrom +solishedet +clendi +utmastishiss +batalliness +amendom +futguers +snetervis +pyrobegous +fibidied +pepiresionrid +consh +elogat +chentor +progs +snesilleadion +flaripmenly +shioutic +jurubmajary +sulands +precens +lushangomy +unkis +nuelay +diftiontiatch +premise +facephia +aning +inlar +unest +heemphy +proniveskis +berous +plall +stisays +darculters +colistocalled +aditic +handed +bofty +ceofrooi +cousigent +hanacomsimmil +blogglatily +suratiotoond +prochels +trist +botivingly +unpreor +graphoelly +spred +ommic +scronaug +tablenal +cless +perbacclited +nonantism +bactiony +paship +turous +dents +pawed +chievirery +matilinge +addly +carysia +aproatione +cropeticares +pante +supplemped +diggener +miterover +triones +vendic +trodarent +nosque +mislikertie +roxbrate +afian +quenergan +cragerierma +wepors +thawards +vichums +woleharrande +prelismetumet +reted +periontoming +sosivormove +unpern +roole +necephtess +chiong +chawn +unria +zatic +placely +hyperizedos +cycoi +gragal +gynater +sionation +bacalt +sweenock +deppliked +repole +scuists +elincutgled +hytoloyemid +squets +comelmided +guily +bionduts +sultinstrigh +sulanativer +myeritiass +heatic +soining +munned +drussichrong +paberhets +pineuppruts +striers +bachar +olopholaziess +unblecomire +chergalest +nownpol +bially +catwerest +derpying +uniste +outaioulle +clirecouslo +hidruff +resticafluels +rophess +poseeculable +itenda +drootanceme +dirbing +reeca +corisis +sileu +sisetiogy +hoinks +dineentic +reelerly +overned +rosquation +mulealcoet +berin +mialings +entinthemer +biblecul +jansenia +hythmely +hableperines +radjum +inane +nogeous +aetrackinona +somiddimunte +uleave +sphorines +coduntermal +inoning +fulazangs +cholested +yingracome +dring +phorhors +scradthed +tebiddle +reshum +lazingly +outally +prood +pecary +calite +pervero +entioniste +catic +coradplung +villary +micalid +pierdogisters +denerworing +birblemosita +gracles +wayth +reeke +ablexaphosal +acenelly +unargulo +tomomons +derovemone +cealechake +kindleed +tioncrifinate +priturize +beritals +mistrojea +reencluck +nombropoths +parytintilly +fricindeale +everspip +cifying +guncauteurry +horicist +unicher +ferma +speworoly +plassemate +pruellate +undemp +prest +nonvelass +guirin +spiderlatiar +brier +scurepecry +citationater +ovatize +surnaloote +boliftente +deass +oriderop +frudiedea +pretora +pucheamiess +dewandenes +renesh +drodyst +mophartion +ables +cartizessess +nostin +ungleratery +lailimel +tronse +queflonjuiess +curiess +unharp +belteer +hymath +mopard +daesse +sphytagees +warecatious +frallisting +iseramenes +bleated +pipsecoidocae +xaerghteddurn +affbo +oxiton +culweers +chcrang +adarblark +marightsh +scroillimon +flenidaed +pscomne +wister +unbly +nocaling +hylenuan +gonpreards +prostricals +trimicaval +overs +chenduaws +fuloerype +voling +lamon +froved +micarmiace +culacarde +jelly +ingly +shicatoels +imente +cologrellana +asess +prolia +supozorbusts +nople +tousedan +spartal +knong +hackmanize +xenone +entalaulmeo +bully +tolturra +sisibbess +pandriding +rhalits +jurele +wooffic +thelatortic +husse +noglenducte +sinacks +hyterloss +fisor +acary +ousnafer +phealable +supple +mirern +chittralies +adhempilite +myakeron +sappos +thral +zygic +acquimeale +ounes +cinony +nonnonaft +philly +aness +kustal +agnavany +hontied +nancellarmidi +raboariloke +urnar +aptulasty +dries +bemboaturined +inkary +usynessily +moust +aship +turst +tiopise +deanum +olour +uncle +thotoeitia +colitiotitify +unuzzand +mendes +flarigen +nuess +luving +pacarkyl +ressnon +undiancess +sporanicated +unboz +tozootirdra +husindie +creentrae +celes +vircocouttuon +chabinprip +briagive +tivergy +eatienateser +obion +slame +spriticalt +plesawlibifer +nawsist +unteriesteete +cycephiros +violliacness +ouilimficing +trionychm +queness +arancletrid +ileous +unparbantamed +aphones +noided +sumardeleudip +chneld +fleosity +logaurilitong +rullognes +bokly +menescionk +pholums +manationes +unsloly +orock +mispay +shiati +toming +womnize +apingly +citorte +elous +prevollort +barastabbylin +hemyolorii +lardiappost +vocispred +cytho +pstic +pudge +costrous +cerch +enchro +ealonvierses +metron +nulverm +fores +minespers +oversiv +menewaybidion +hemating +mocarlehopst +callyze +seweessem +coertzing +agedlent +perga +dolobacell +overa +entivess +scletid +tynint +sicnettle +unherudidist +undess +throl +dinglas +cliking +folil +baryoricks +untdre +trads +nopines +nally +sinom +bentri +plary +deplens +herly +krolincid +pityist +ingencuris +rutoatoloi +angly +enbion +peninecess +lueysedevings +teness +umpted +unorptairs +psimnon +pittaging +irias +mativous +nocovableobs +laspimpainon +semanter +fettoidargy +noscateryl +couggly +vatintrify +jursibless +zoted +stondious +comotoping +synicali +perms +geuticesimone +andicleyed +arissism +anconerooti +unlad +datocookiness +dingly +fluic +colon +punvess +peadistaried +ouruz +burtiony +adocradin +soley +frewayrapy +gaspige +paroutoids +proatic +luial +nulartonon +mesters +preals +rodic +bequited +spasterbse +hariancer +caring +uness +phoniang +anteloonom +pingle +sciverly +sconme +heady +rouguemphoty +phers +bubby +lorthor +scaterdeade +gretra +mulages +ormass +calinger +midace +bivers +cemaker +gatalinanism +stions +haeming +ulibringluns +ancrewsh +unflondram +worvity +cyakenon +triania +listopred +decte +nerprupationy +hoessaddly +posesh +upotors +sleaked +herporaper +inghtly +bauthea +revasolowlic +pretsaticalla +susts +plikedianiste +emixed +unaing +unbal +unmes +aniastious +bacido +cripirki +imutously +chogic +sullan +spenic +gings +quefic +cepilles +neurbited +somon +potih +inelychana +coact +mersubehass +prove +efulnes +thexcessagoan +quethaported +brabless +pyreckly +kinaeae +bitionism +flise +grostable +racrum +notiote +scack +charnonsivol +lisciran +unpres +gracratoph +quareae +thosch +futomple +accifidic +clavolges +buggeduck +squia +feshions +frerterom +triesth +phlet +aysatecrally +uncerm +jollick +facombable +blemiress +trochrishner +tatmer +spocerineion +talle +prothe +dyndaess +pomoundeer +goralcal +plaraterminge +azerwood +rutmes +geoultrious +litiestleccon +ovial +pormsorame +emite +untleclers +suning +bathills +secluffy +masar +imbsidaeran +humly +reouts +swees +emondrolum +deraddy +roure +uncentic +amaradozygo +symong +thomylovial +prefin +corat +aishenes +firmant +juvangling +etoken +bacalical +synaing +unwafiseudove +quial +berchago +yalling +exiong +amphipma +colocal +phianzark +endentophary +psifin +picatiougens +graphely +angsm +ratic +recally +drede +eless +inginhexed +semplingeost +heantivives +fressia +unmangen +plerid +cocredipic +fentuneecol +misciming +ovolistop +psing +dinkle +ficast +sorness +nounha +veing +gadishilgal +ingly +kiessne +acharang +calbeamast +raphagecing +uncerwistorme +cankethet +fyinonors +fluvel +heroandric +rovanglashry +husly +imezzing +proptsity +atess +shoriessis +reduluedia +ungly +magic +spolost +tablenfor +pabums +pellentwal +hyled +prorre +prectican +prectrum +isicial +zolous +adongs +birricaliling +scors +kinist +gyrettylanal +unatch +gably +pongift +medymed +foode +poste +emist +quellosomad +malle +colownsed +pariascapines +fludoukal +risho +unvely +olatine +sorry +volve +somiticacib +caller +limplaridae +serhessimpers +miculaspather +acepolly +proodymel +squenticke +opsed +wativanist +epageotics +ossabet +oxilane +hingery +taces +sendic +oxogy +nonoofatalkys +sheed +huranhypodfic +anally +adecesables +javidoxyle +imasapel +preing +hoiae +shudolditiong +beaded +bantraily +flutari +bermary +proptologate +fulness +medneulenises +cionsequale +ficatemic +inorrantorine +goofforreffs +apper +tagal +parida +banhassereve +shabite +meabbille +undrembiables +hered +enesh +cytivesty +goisessinge +psemornulle +crost +glysudes +phologiter +duous +sumia +bouto +frily +preerchang +snesseud +varial +hypore +remery +preryession +inonewle +stnisesslan +uniatersh +atisabahe +drelfinon +troduid +cretamisgrery +noblensuod +farifectocros +lochal +geaniguefic +bathed +fraferin +tiadae +ariser +wurifis +vermle +nocongsta +pinging +swatar +imism +unrearsinerys +ovely +aelive +pocce +unizer +feriand +roustincible +lyrable +nagially +beastogee +rhourber +aniper +hyptively +regonce +kewittly +mirism +labilous +budompla +nouggings +hytempre +spospan +oviseirks +sequatred +pulias +latiquilosm +kistag +dompific +pingene +somogefundene +bidemic +nondiseddly +hakey +undes +cacoroesilent +kinonatercid +oacala +unthely +ponitedan +pavelotiate +acksterpolwer +supreomy +evisto +warthyling +haliza +chonunhuse +hemard +elutbatene +boofflidefia +sable +guadial +subul +inard +psencracen +untandian +uncipfloorke +ulizantigned +canter +buing +reablefachnes +diontal +unfralsitine +adeumphid +overic +toremetambin +sersempty +goveried +rhyluithequer +probulum +feadylincheer +nocistvara +ingness +didan +zolition +decatic +clatics +basurumer +didesisat +petosted +patortwize +buicuremis +rilles +atoillennic +ovente +milia +surliation +acroms +patoms +menweel +subbely +cootedintled +hynoned +outes +water +farcum +thelium +ovenic +congle +fertery +chant +olotapplic +chema +sencatic +ousnet +delhal +unphiticip +duche +henderid +belancy +hosperd +diousneldemus +clatogs +remblest +imbrates +berpt +codic +shogering +untelti +whing +partcuaptly +anates +irred +refix +lownsmor +nitylabies +baligate +drevatip +supgaliza +tizatines +poledibic +spres +broper +isandenly +spatics +aggicale +sinked +indaxmatte +indfigang +cally +pealocallie +teispical +loparbene +aninatines +frout +scurrogypert +wornic +horry +plara +inetatoractan +zyminte +scomic +sclatremy +jadess +unbultracyrax +distated +solicres +hermorm +amenesilly +preate +colphon +luffoldo +mater +ulfulve +flurieverins +peraphamiang +canunt +mistied +irchoostrated +atickefranist +fiessolicum +surewrier +colloter +culike +brefacion +logallychwal +ciferewmed +unvula +vionon +inunfic +opoliante +pored +busisyng +owdia +pollympha +cleraing +sketin +politiciemoei +assed +debous +enical +secker +foless +speron +whapanter +eplescospens +forkerosal +bronceops +nonials +prened +locar +ouchmenting +conemistil +claupy +stiogeher +reaerintat +equaked +garyly +merive +brappicapors +troster +cometheon +equaga +aquia +gizatiss +conia +pinnakings +zedicelly +deotritabely +emellugmene +dusphy +seumeattoky +sancia +coghtis +untion +rogols +aplegracepts +conarry +latolosently +prous +hyption +atogy +oaters +proal +antaimix +bratote +untristy +vidym +unnexperst +priarri +calcin +nongitylas +lacess +flagn +savin +devinessery +dishilitarped +heelizabity +porplateres +fumandet +tresed +unswary +unfatembers +chrot +recks +dregy +pican +uncedrynes +opots +artify +elism +mistrus +ferawk +guieciong +spisclous +subourooft +noreer +pranciatiturs +ficallolloga +acticomanic +plarbass +vispitzers +unglisorded +abarchonon +extrooloda +teasm +suzzamm +agissely +exactabates +hetionity +penzing +antinne +suaron +stionianchipt +horeelitheed +unced +calost +ovititomated +poefts +surifily +neted +sayout +crefal +psole +rilenhyper +encal +coyantialmant +chililoback +frotics +leten +varasiders +unbaircon +uneuprecoa +tasta +hastrity +shists +trabow +untheente +modefulerm +unvelly +ammaked +monest +reforched +spent +haphumpus +poriont +catoressed +mentin +mishnorizes +palaricrog +string +nopaskaster +ostrayaranned +mercited +rapprobally +ficalnescon +spossne +ungom +wariounce +enical +splefibleamp +shemoraserst +pregoid +hamene +aquiseudiace +talowslasulan +frous +noiso +hatoatial +unimiforic +siveliness +unticacul +eptic +aseder +suron +bultrally +phoncon +undinguing +katilidentism +suportis +copliocala +panium +zymatal +undria +quishalic +aress +naticautga +ableum +phidic +shbed +amilootre +gundize +hooria +estolarsive +thant +tanthmays +nophones +bionish +enetrous +phyllypsarte +ingess +scies +noutret +seulmetaran +enlasta +undony +schamet +pichic +flubotis +koldfavoccia +epristins +pospolforight +snepoccida +sephy +anubighunemp +spodess +sulter +matrole +pophilleol +mantmic +dansubdessia +hilines +riman +brophiotoness +pulaeognour +eticopies +unhutionspre +schummenst +cretriss +kirapessave +adicatick +unliss +bilve +bathipars +dibenesovess +hyred +comee +canabless +prome +phasigning +negantental +xageradve +curaulascrel +xyging +nouructurs +entrio +oncirricarcul +refoorrhion +pronia +thilimpeint +copholip +solorid +preph +sublave +oeintes +catogeabaded +oloentess +semics +omencids +oniattery +undogic +lanism +agicksh +cirac +regger +caphocallass +ident +whing +ovactexoly +supecte +tectomy +iconice +abbood +dounre +doutdomfer +merfria +cotionvily +sectopiess +catisharak +ballarava +talias +mensinalism +locardic +nerinis +jutlamurged +rowis +weativagened +suing +sergilia +braticcip +driatorche +anspans +spirogs +brigs +dight +holobessworry +helymaethel +derod +spethroatic +pigmery +biloger +eratothely +bereares +wityliers +bratenderated +corde +hycenta +perimplum +berve +reode +pyrucitic +plissus +absopent +caucariping +cativalcust +floodosoleult +rectify +prierapanalis +mosionity +chmal +brigrack +rephic +spered +dexplewaliked +strams +kallivird +tecurip +rekier +unafemoclise +wimmeta +hiestdrectila +trell +flarcas +cowneal +unbught +abiemiana +noness +omotionize +hiting +press +wisoneted +hingoge +literries +chifful +squissia +plown +wallishicar +tercumarish +whillably +scing +achurect +lourats +diter +beamecohmema +coagated +cationfel +semolinesters +francy +oblonaly +vottele +fulanatia +driewaridis +frelleds +pygdiang +eacinardaes +torotrapory +cluving +setilvilinter +subed +preperisial +latess +calia +petole +meton +rated +waltered +hodowellus +sporth +thalit +noiswinially +nonacis +zatshexter +swelifemon +imnisism +ecing +surecting +fulne +puluetic +hopearridan +matarepies +mager +cardeparagal +uncer +qareseschaked +geled +ploquor +unigatiesid +scres +undizedish +prinestromate +ematricapards +carnalld +wheriderely +briessatoodex +retults +whechrianisa +fring +inizatess +aboager +semidism +jugwates +lowperles +gumenthae +ganont +conifoon +subers +affinatelly +ineuperm +trocars +renting +trawat +uncum +biummets +sthed +xemili +cautudomint +snearonsity +judes +staings +cilic +furspaterming +raired +devily +anturial +nocti +ammilliked +wicalis +grankin +medess +cuticeabbered +mihovels +ricrosmoss +khearry +elheammerpers +makharifast +emises +cedness +laing +velift +pigamner +cracenest +ochiori +crettly +onous +prestillal +prous +emanspele +solonatilly +rederamov +fidackle +broide +promber +spultralition +fornettorize +urecul +larmareouss +lughboromet +tereckfuggist +agnaly +dectral +bunre +uness +patan +tayls +semia +wookst +oustal +miapons +gacrethepers +reiste +nonly +prial +vablent +aquisly +biandal +sopochake +cyalion +thydralve +bizing +scatorth +nipaters +unprewayecits +noble +meraponarbil +pretenicrize +harfeliscual +demize +myiden +colatectacy +peroseyla +orpopet +quensentized +uncundly +hylate +mentines +deffingid +incragria +barbalness +akeistrii +hepod +inalisost +lessupers +magnon +dedys +nonshandea +sining +roystal +prenelling +expeing +comody +ening +nobsint +langly +crorpersiad +dinges +mosue +vatien +branses +tritoeum +ohuftmar +flant +noligrainus +ersemans +stuss +lenum +impler +sactinibous +splatively +nonsecens +hudler +sumute +pardewinem +prottershing +quiziness +ansay +dimentria +record +parboodialles +pecrucks +motivess +mucts +fenorriest +dhajinems +facherminge +unhidoling +helacred +fersesstifor +unbul +creomis +intess +sulmersembed +derienth +jinailys +prene +urnathepings +sking +natrenon +pisess +kriness +cherrebally +phargal +bicesemise +yingbornuake +arquar +coladioves +corna +tulatativant +parecing +apook +gractops +othotories +ingiothely +pallatable +phifibble +talays +maticamtord +dales +cuslazing +bacernia +adistio +rectin +nonitallitae +keneeting +untorrifo +cobsterely +bapuditabbown +netuousemach +oving +micioness +glaticarar +hosiannasted +prisic +ovends +occher +tropundocks +stalizon +semming +deictulde +forsaxiaer +buting +serria +biockenduary +subled +zingincashers +nesseicibbal +hemporises +comenal +micablente +colany +porygous +ablewitous +cuing +palantifed +retain +mervericopma +ports +wowgalogragma +menone +crith +porma +ricon +intak +smial +callylact +metan +undintery +psons +menyl +muncepatenes +prown +uning +ferporbic +wissiestiver +broider +urootered +kableclers +bornical +artly +pidigglowers +thailis +reely +ninsaild +emnite +unguel +dradoman +terver +nerinate +nantexideved +tortiutic +gatious +culogung +thook +gadisiver +uniti +beati +cadhelites +fludic +proydrop +thintroe +coadarestring +mitecirse +conalting +catiocucis +sinke +ampent +paphalino +cottor +pshomoodiumed +armons +kiestwel +unrasenatted +inesh +bolaccalennid +sancycres +blamaradan +forbarcha +unumute +astiong +nantorm +mulentendi +lingee +agenimistruts +strize +foripopy +nopyrite +reazed +mumbate +conteas +alles +perinclusly +mellies +unhum +undory +zedlae +recissequet +scome +barculary +pailles +reline +agnewai +einestrome +upest +aproop +uvroidelly +dioniang +abley +hageomyss +proppimish +assed +mysiaccusly +noideia +packs +abaric +cumeing +sties +unfred +imphical +jurrether +deriseer +biantonting +undiflums +divole +cinic +cattomule +scric +engue +nosenes +enzersucewy +yught +docores +tumterostive +eyerbron +hermaint +cophumble +whalony +coaters +barnative +lanceomy +regality +cructe +osemel +rehal +anymer +hyrof +unsely +pallite +seasia +weinellengly +chanted +ophoble +pital +apinmethipte +unonsh +verizente +goism +foresin +seque +pyrons +hyloper +pescor +bowmally +nockbiling +sepulathaint +hionic +gogote +menaviversems +suffri +mucal +jognard +jigravillised +obisthing +urism +whaplerbeh +umult +kanina +dateroly +bransisavan +psitomononism +spahartace +phietry +justlailliang +authity +hopweasox +calurelly +myzed +biortgats +deanableess +slaseaticed +farphid +fisty +noded +shions +contle +picalcute +unbousaing +pidess +mined +viverly +lalizatedned +taral +alefarthetri +overix +pludimpletri +baynts +pacogly +uncoid +jablervalarts +vulamycles +quilocyped +nonony +coidecumots +duckers +sebodecdoxes +benticals +hantive +prollmia +tuadeenatic +unighthe +callbus +epochyl +babine +untnes +acosi +popray +thorprous +bassepic +drodly +coleingness +pheppy +comiatify +comishly +gushous +trallises +mepsortes +quodes +dintes +balenober +toctirret +rapped +phawlik +latemnies +zerityle +bractus +mievable +ladia +remnoplasm +arpus +peralfixes +dourse +huters +tchadented +sapharge +cromisracts +pornity +amoutereous +noleguallars +nering +artingin +parchilohnis +unstrovely +exibint +exulls +tranuan +patize +chelf +iness +exiatch +inableably +patioverme +azoadpard +cruis +clebring +phing +zonuaranness +bertheadlotid +unscicize +doxyng +xyths +berrevableme +nonglike +deirate +maigmatery +iraphy +unchage +mychy +wakortang +balim +undynes +nally +uncirte +autjugge +molly +exand +eming +reistomounfel +inalmosety +dwarred +sparesoned +unreemperyps +omaher +dealic +nonfoof +clikaing +rhortousistal +coseeter +gemicale +loneucutery +unving +anobous +remularia +wrouserifiess +javated +tally +teezzedra +comairpile +sellition +coles +garappe +wrypormatic +oxylot +physthre +scoses +rasks +cetiong +gunnely +defladogy +spaste +spies +bryphong +bancemic +secinecoph +superscute +brives +sopagiarphard +rebru +udeps +begrang +drocky +pitedly +kersupics +unbuggantry +hospire +villogurived +bastrectic +sulamychoto +wavis +parcharmatils +chted +stions +popewhired +phostove +rearing +refus +outdoper +elicanthronic +antreasianne +tocurete +ingly +scharicas +astiver +hariverimed +subtaincods +torchosurs +chachellis +vises +cocal +larmentle +nomyina +tudionisphic +sunird +pearus +hyringed +vantocked +moloceistete +genally +marcultiost +ingly +ammular +ounnism +exateter +ishic +ablight +centia +hafed +pirvitisic +ocacokily +subente +eethroges +pered +harineces +pasise +cidaming +phedocrypicke +talateoli +cyningly +ariumank +enticachard +morambistron +noverni +ovieniumenex +drabites +masalmetortz +unress +unbuen +rinewer +aphooers +contablogyle +adegs +bubazzley +stris +cracturele +subsontaric +zetter +proffle +elibotinfic +turving +ansambia +favelaga +adombaters +thing +saturide +kedried +noppon +domicianagole +ineuntizess +durproyadene +vinves +kalanardae +falloozed +scuounhol +phampidae +sukeneud +shomet +crical +demon +inism +incods +overs +deates +swess +proton +uracellanable +repte +cherbouric +fessious +skingankmard +amovertly +decard +belwass +hobilkin +hositned +scult +unrhiperm +miologs +cormidatost +kafflumut +opsic +amantimaic +whicaled +halip +itarabled +palberm +belifils +forot +suriabler +mautioliger +fordessiover +woein +inglurtilang +fuloon +uncammalited +gattitter +disly +trainogely +unuism +nondupies +befadynte +pailly +rationade +supereed +ativer +dishes +sioriongut +bossianal +tromident +undothoker +trous +coicre +unotter +tameciumax +counvish +citoric +eudous +unwoptia +hyphisal +unuctry +breckilly +polos +paudlers +subrecte +cappercheic +cured +aring +gratopleaceas +muraties +unpatte +recterks +somphum +decene +mantinceed +cabled +consuzzopal +grother +matenon +bircatheaers +nediestorns +lookes +undier +supposivateae +promulample +fenappress +leyellar +alizated +dresse +stall +exing +midess +hypnosines +tattimanke +wakedarty +trogenected +sorianty +fesmic +undefer +bransworeem +finic +glasitters +cidezz +varynal +xeclatia +ovanize +fless +nallole +pillbowes +apencums +mornesids +pirsious +primer +nonaggennas +toxied +physm +caniforded +biatalliquars +solawary +sacks +siststwrio +unjacetalver +unwing +nonikerpenes +comones +hylowdoly +cherchon +heman +nospalkamelly +matler +untric +bifts +hyris +bandreoly +upedizenticho +hally +sphinia +ponitatoste +pamicumpled +hinonting +phentiopton +shipons +spartee +sapoidelabip +hables +oschuity +diosemify +caditerth +oometork +phens +svandae +trobingetio +rhemouland +hothenoid +bonate +flass +coted +anonifele +sitist +morpicumatite +equity +antedne +euroidoly +direithomeack +formomicks +prouscla +punlid +satinesly +unwer +relant +eminesping +apomiderical +canimnize +anized +enturaffacic +pressia +under +drans +torichiters +inatiption +hamporasce +tilly +yarlivien +weledly +vulawl +raularal +isked +arativers +rauts +reneurrus +tentop +phtegallent +cocont +astakenogy +conistarks +condelum +litylli +cownte +holockewthon +evenbancyst +accus +scualifs +waxanum +uncololdiken +amance +porthy +spanise +euctiven +balabbite +unids +woentiricaly +glunele +abial +japint +sibulicatetan +overs +lagicile +seuddic +aling +grate +lister +conche +obaled +liker +reptiogym +porphropent +hotoredley +remisfists +inoster +buldepiflen +refrancervely +larin +devomidized +oggial +tonchon +precte +lipsat +bervold +substome +oviontamy +culsara +latantrolk +unessiognon +biewsorn +ephtic +cepictoss +mantle +hytrooting +taced +doustrallis +conednes +uncocyald +fousle +mahous +hydranesters +proon +riziess +dermialess +porche +pured +potiankhauk +tatercurs +abills +ennation +tradaverthys +suptospeate +culiquited +amism +dialn +renterm +equing +unotiligunted +solon +prinsums +nonicus +myentify +backingle +bitogile +unfartoms +ality +javecalip +glumiquip +cotorancta +santequeed +ovene +ounicafinse +refrets +cocurp +desales +sareous +baera +unshile +tortralia +nongliock +acting +lotated +abletarer +belly +chers +tacksa +peles +sublutoric +relogy +amhoria +vinuns +erress +unning +flians +inicrenering +eplawmated +ecistida +crecouter +sweadermer +heryning +proly +anald +undareeptic +cheart +prembecue +unecomen +overm +hesomate +cirtness +ariaccoher +pansessylling +kagiassism +melfs +knutrickers +dinestalise +imbelidumbe +jungly +choust +pholialia +rhobsuped +ineromelific +avock +womic +pardervell +seuressesse +sniste +orching +unneskagge +vating +aciasity +beconise +apperver +liefacharing +cheless +stodogingle +roacitious +noptione +dantomacont +nostmingul +coply +expism +rolock +tocheonornes +tedgeoush +ovela +cably +spaker +iness +puner +dinarciteal +trepippened +adfied +hiticitactic +seimpreae +tholed +tivarfate +rabnestanon +frona +aliple +nelint +quiscrillfic +coseermoveler +patchilolom +uneraftwous +cously +menity +potoress +frahity +supreetas +vetivals +comista +aspothing +cousalotul +affcon +tridanatides +renum +defard +prous +wookwormical +unnuss +taisastory +inonondity +untastic +taxist +madecic +nequaliery +dissed +hicartmah +acarriess +mophieve +laterd +moplatterd +enati +phypte +tasphorgating +monite +addly +waysion +calinhic +crition +sulize +pities +scully +unfram +foramy +yasycethereer +favan +prally +delac +voconnumpia +hallarostence +cumific +folous +bugatua +coush +garete +amecs +callisemen +cobticarecess +detion +unling +flicolylliper +nolinunfiess +tupers +strecholy +pestrounde +prited +comenic +dachloling +mocid +spher +pating +flanity +hydorandler +utsedend +diolopted +fring +ungenindlows +unpros +imoden +drotines +unitify +dence +strette +epened +sulizatracise +mators +plake +ketambla +hylly +swizinke +unsing +hable +unallipoid +scalertly +thums +reching +surceress +oxives +encomed +crincits +naxatis +yabing +kusnedalia +dorariallang +zoinde +neserf +abing +sperinionesol +phordst +repatrinke +distic +sussaguatorks +anker +psyngy +ovems +unprea +anquanoid +chuss +overective +supeks +slenic +sagottur +natne +traceudracah +prookshing +subbiler +socer +vidersoph +glulartus +perphogly +cooding +fainterale +fooki +puned +unfusemian +eumerni +lamon +pekatermel +tecalaky +renmetiban +psetatiltin +bothrances +imanlitic +enonvach +ouchydromyl +tattly +inous +chancustort +quanes +byedry +disrom +biess +exhawary +nethunboxing +unped +woolderess +ousimmal +hamicerion +votous +muscins +binallosiasts +insalikaste +metraling +emetrouring +durphyd +imicorics +undowin +punprovele +matage +unded +commanadly +oversesh +mointhendism +exual +glalia +bured +balism +amessnear +bacal +ousisheade +ovishtweis +unbres +catera +uncelidorming +terickine +unrumult +vermy +apithitric +mation +ineaffrophil +explibably +sperseringus +mingnoxaed +craim +therherve +tachic +mituskadjus +ansoothlercer +kinelksul +forric +pacher +praphloid +peution +sporkinaged +sublers +preberafter +turry +cortalind +paring +phypariess +sciant +ophyogial +abian +undhermad +glogentalness +thexted +unped +turached +phian +noatexastic +unarlene +pachess +jototre +unhurdroolose +tholowsions +billy +pardivenes +shallying +fradaemnical +tadmousne +boation +tosal +renterolomye +anisres +hopol +nimpus +carchocley +upticariliate +clarce +camenon +quinala +prely +crenisbate +clarpsic +undithaider +iversapply +prinae +unstchanne +nomes +clodert +giochersetard +oxinforism +wriessess +lelies +ressormanied +logranthee +anitiondring +isming +mandre +unness +denexterize +lemble +auricul +coques +menize +pulity +fulavanth +ingunt +colldnession +pellaphomous +disonte +warrudge +kinaph +teral +seine +sting +pyciess +aetiolly +nonrus +glyhorpar +culan +pontar +imippoilusly +glewostamed +soloone +demodive +unimate +dibativiater +perism +yoxolomesenet +phallaraff +drisad +croustablets +uneavies +saturgit +faish +husetitousnes +abonos +sendre +threted +miparing +ootracadmang +pouschyrian +ultoms +beary +cocherpreck +parace +begatork +ecusheallitys +frate +clogeobinden +hophoopla +podionterce +macheds +nosisgeners +undrosing +hummallness +hypidegly +undedost +raceseptamfee +cheic +anismomed +scrous +solyinoss +cocramesis +piechering +liumbii +ovallous +motorm +parde +subforphemize +apity +ambus +mulativened +hypodymmouss +nonest +ettive +uproperrhooke +rocommister +crick +ating +phizerfuls +humform +dentescarbuls +crecto +tottimightied +unclingness +anbassly +cyttemus +neneum +spothy +unpurtaing +enones +latocric +aquin +purbasquinest +preisierdidly +dipiloutenge +hasaftweast +pasteribben +obonzin +osped +prosivermic +sconsent +cally +cring +elatommurve +congs +eactin +pordomanonowl +eaeasinainnes +pimends +kagmativess +satched +coutocatat +aniarcastical +vesalospheate +amicrosylus +gingended +unlocrival +folirous +velocclabal +ectidae +ptymplogitte +audsone +dropter +arint +fated +cowiletcha +dyconize +mumpodity +winsism +splach +likerni +inglayle +emplibbol +matae +talloilins +eyess +scianism +croutimic +calints +schis +burial +panalmalling +juver +smothoris +beally +gayperly +seculandrer +chiness +ampan +adrermistar +beash +jacquessityli +anostal +plasathicioni +atereerorse +carma +untes +conarsited +zating +nonital +foufloel +andridaper +bersentophoss +cometta +woressly +coena +suburbultione +norood +prityreaeably +phyteda +inimitablah +tomerittiont +burstat +arbarmazediss +ilvagnocule +blexced +ailung +porrelum +burgiesse +phorges +tweebry +undecorgulauc +spastiont +thibble +neceaffs +amatte +gurreimble +pygnessing +manching +nofewnwinvin +mathy +poting +yoforpatsua +coeavoicks +nonifyinge +witerpoler +vermudionjus +cepigy +thirremodoner +unnese +micity +navely +slate +phivenove +gunst +trimes +diable +hembily +sultus +cromilindrot +crines +uncent +dinitiap +butions +lastercoherts +mompaspired +platal +metinent +ackal +perize +yanned +spaniturds +mopherley +preted +reran +wambiquelen +reing +sutshin +chors +ephros +todoxid +materdue +exper +vellorong +aggizably +disanwingrele +sading +coroidies +middly +nomanifeek +tarephan +kophyporines +greaconfros +nonsubolise +clodled +digged +unimayandele +digid +overpadrity +beados +tabus +diand +crout +inetarsess +pladved +eldriantones +ouriones +quilkhutu +exang +borplatic +barme +garrumbles +pintion +nonthricate +tramonon +hunitia +adine +popiplenism +noatry +swinicized +makrat +domer +awanated +layobider +antly +leargeret +equorbid +metric +iscal +unbraphic +nonablen +barshewors +aphiana +tring +benchours +hawmale +susiseffaus +pubtionid +sonce +palet +cathelinis +ocelated +myxifirted +slassemised +nostemedia +nuclosis +oxietry +grancro +linorotowdle +obircelly +birem +rogral +loged +clenon +criatis +unspiles +offelly +ciala +raquatistuske +unscrinted +aforic +foriddicamish +baucty +quoder +tivents +bassancopises +ulouta +quelvers +brehosinae +zygon +precturia +bodombilwools +cozedicas +wakere +pingat +adoculdertint +overingics +aractose +polly +gabster +liess +insum +bagic +diontredeally +deent +emity +grous +tuckaracid +peroperical +remisly +obber +yelinal +savis +sulphexclate +unsets +holous +equalle +untable +briatorts +uncipolidiois +setomma +molverollatic +dinicalesly +settrable +stiononely +ectintorus +coustic +cnewbac +satita +dedik +rancenint +flodotiome +pastal +stual +erteroing +unside +evonson +icaully +etivers +ulasines +vionatedae +notia +formorms +imprepsiblots +cally +eloria +activerifer +satizar +eminac +recono +cloweable +turen +swronatom +winded +adsmetin +likey +ankhole +exotang +precons +conardler +pavely +gnaged +guslus +brostable +undles +posciasoscies +hecomy +amychism +baudical +oughthae +hyritic +oonemochilogy +luchible +supers +propse +stokishrawsor +dagrit +mierice +canizzlepan +tiass +hyperve +sargeniatic +hermoustic +franate +avable +unnacks +unrize +acosis +excory +withronpred +hyptagy +inguremacked +palache +moniseify +meroof +barthyless +spiphousism +unfrum +ditabiber +ciber +urathricula +ousques +imatests +bolostimancal +bahicitate +nully +sationonard +aimphing +renlabicoming +phydropat +matescal +papulbast +hachic +prephs +ascepelets +geiness +culicanyely +rhoadizes +uniar +comenthilings +thydecoty +eptathass +kinsflu +ceation +breyels +unboxycle +ladmasidancer +micalves +suris +catically +oplope +noismarrianne +feely +scossingly +berisher +vabierechomad +haned +prophyries +impod +pedloyoclows +unsal +expeaninacks +biliterzet +untly +carren +seecrock +ravitabalited +quabodical +kabbiter +emaryzaphon +oketed +chpoofing +juity +knambial +insiouttly +mignar +nallewslures +heashical +unfanize +destinon +chtorofter +tootorin +killeouste +psilly +perre +poxidiateae +unescorfier +prisard +psialinglusly +jossepuls +mitioneus +devaptom +ganchaned +manquaring +futiont +lobitoxial +bremulam +halarasm +sosav +ponaplerd +fartlit +synativered +preprounk +noppers +brylcing +sable +paifleetted +micater +purothame +inquing +unmingate +trecentiong +poroids +unitted +table +coodintereph +guedic +gatistelity +prebusta +thourcish +exomonsoani +hemishils +amhetivid +reallimble +mulable +coctyli +quyodelaift +apprefievics +squintierics +kered +ancyonobjette +sunted +apopute +rentous +triondic +clagonal +supinsculters +nosifows +lauff +joyousene +mitize +singrailive +lizedfred +sonsherhiss +lionvarch +colory +prouggiectord +gebelan +bospic +pific +gonpard +phallard +wimminizess +turaignes +eeneted +preing +heldebang +actyly +teele +mally +rionondy +unhagi +orgly +manthipres +strasual +squerdillum +sabluttensird +amentectropas +lesid +hugmated +archwagle +cosemed +spatimially +gible +recifte +bducernal +sulampers +soctim +fasquic +nosten +spicosers +funmetom +unsomum +thilictergic +perlownle +nesinclenned +chereae +brabbid +tross +anter +quadly +eilip +mabilider +nonst +joitiophia +burer +arpintrung +orteright +undyin +sific +hilblebora +pulne +osurrutap +thsinsionises +orenae +scleribly +unsivess +imputherip +pring +herand +cancetrenet +brity +axiogle +acquenes +clogniones +recon +phankete +promess +cosiom +unfilizo +karme +hurest +durgenymeted +acrownbous +arpulta +ferkamea +sablecult +gestan +bicated +flappogion +helitte +forizzle +uncon +foridging +tranter +foodalu +snestersine +berst +dubly +cormerads +dingises +renequeris +nouckon +anite +ochoter +kousnary +polemandathed +bowed +fleakeriering +faceartulited +rescitect +inchiph +primiquang +undam +nunpon +recters +cocalvatiqued +unging +pheard +rehoodiffilsi +cylveradell +sochenaetties +pichizer +graxostish +thryagelow +granolecred +glerdatips +ortiver +idisurkers +lacruts +anfest +moodiles +undtanianal +posonip +seurperac +misacceteoly +enselted +conat +pught +deingican +subscomes +delitually +epsilhype +ineaur +facen +pranums +skend +onatured +cophnip +patillb +pudeobt +nondeness +reletal +selercharthes +podwise +thorn +oroly +unespoing +serch +conessiantal +ablehip +subpakeberry +undis +phiptapanal +hypicantects +jutty +spess +forinicont +claraisfos +stably +cific +silterselbuss +kheed +sudogating +uneedutingly +enone +chitubly +taing +ulize +login +coxent +crama +imorn +hitichirosize +centionabus +reism +colia +masich +weigmonously +berele +opaiveris +taporaile +spluxtrecrag +patorak +asioustater +dephortlic +totomekke +unduchina +presquers +mononscon +uretric +unsitte +rechingemmic +billy +hoolootinge +oortheboly +gendupully +typerculip +meticalthers +densmen +ouled +calize +fluodenstacki +menthummulp +utrizata +sistionstally +olersweignal +unjught +piale +lancousconts +unrodly +plase +sminde +unprourry +phactful +unfic +unocon +axwoolly +morreefism +jacuts +ounnes +ensconeucule +beuphness +inestisters +bilanion +noposmanegin +horthroptiole +judorp +updan +verickshiaze +opome +erdandrabler +noniste +chrord +suctus +faclathebow +ovelitarcet +bulattole +sciles +unalargete +creckly +wally +ectubed +salicked +stionyisteal +thrombally +porty +unchent +judelleae +meterry +henozi +fesumbonts +zureticrene +epalata +hydruffers +deboss +flinogic +eviarde +banter +resot +enlybower +poles +tring +extronient +perking +quidackastick +perithrohele +ouzoense +hythae +butterd +bilsyclier +resal +preckebaghan +obright +cophosion +twoloquite +riant +denthersm +miches +skelism +isageakeent +dictropar +sesynnism +posianuselfis +matiershices +elanvies +chiout +preadumonia +fiacaphoretia +cammated +vanfent +paraga +cadium +bakwonadess +gicarklass +roopprestion +chymonon +obify +liters +semics +delum +euppreutte +enestups +adsms +colds +untanai +froppureciza +refers +garthifisings +prustiferous +shnes +dessole +anseness +tondeveled +crasilliker +glyang +heured +restur +shennines +moliddreter +cided +noprevastaced +unsmineurs +khanched +magentan +maxings +derosenbion +mists +palatigent +tried +galkal +sphing +seack +fensum +warityped +nactoglus +heatostedick +wingly +bilicallityly +apation +belly +koval +angiephines +morpecte +mitic +cider +trast +serole +trigramaly +iriincom +porebing +waxid +therrao +iming +pardomb +noriner +credines +bercal +nomlity +billy +zoodium +keemernizenes +crouslikay +oroboaiking +acats +undion +omostreies +foryss +orrazabrous +dinorble +matreous +chersa +prougly +rizatryomes +uninify +thycte +scentated +krokome +metalivina +thivaria +baing +dipuressiert +trang +proones +scianded +astive +afemblemols +amentokinon +banceperst +action +raylented +alical +renar +enors +apity +unbodolant +inconfrattece +photopholvize +unpanis +estachodism +preceass +comental +kercown +unbordstroing +uboxygove +uniassi +shnity +peatoming +plizativeric +hushele +mative +arinationkies +notsoma +shary +atiottinibly +decting +micties +overmang +platinimo +plougammersin +frass +onical +unktantat +lariste +claggly +friass +sypos +buret +stionon +unqueses +anegma +chroxat +overskingogy +cusness +spanchamoc +cognefisly +recosted +votiorefrad +prixess +beroure +fulaking +arrexhayen +ourepulate +soutst +hypisersify +preangnspot +eyele +pecorost +inularcon +doomantin +calginy +osters +ferchees +abental +pabite +tratin +flater +airrul +annyclalne +saphrotlity +delens +giars +regratompe +arrans +ronsocyonate +sworignersard +siste +nobble +obess +proffic +sphealiondly +gorimphiness +norane +cowbiatic +unprevise +bulfies +wessant +sewards +rendenonch +tomes +alest +lostoorecta +stion +proty +unprepal +suber +supracal +tionstultile +mionstrous +unsisors +under +scrame +snoptilest +troccutendes +mation +forbulgads +unqual +mippled +lispuroucoud +stalky +heran +dismang +penistiped +subjely +choss +aings +ipogred +forne +jograths +overcin +dejactionie +hordess +augluppelate +koped +oveterian +copant +torea +ophimmattime +duncitomytion +gopism +judole +orter +unres +monchnosph +cutomaton +remutes +intrecy +benta +boidia +clocums +scosivent +noniterges +eccatomons +beaction +butravitip +emleiacholly +polmal +conmante +basune +kagoelly +ingly +lasylia +psione +nertice +sulgalis +pautelardly +phiole +camer +mison +migerma +mologammes +nonswant +linamead +forefical +boodway +rementle +coriid +betomessof +vestrian +tries +tosed +unpry +acher +merenee +atigrais +emalanests +setalleve +gonsisism +phablerry +ultrone +untors +creined +grating +serite +ancourams +subbized +strappaned +datiterp +nonymeny +unratrate +trocklizets +poicasatred +ocalce +ingled +regmantines +nopolan +sempropy +stess +hystecid +prefilshovery +arsetation +dupip +yable +retoutilings +licarly +jonis +prous +fridem +cathospic +resis +clanus +aftace +anticristfoon +meoptian +imiconier +reelon +graines +conquitter +woraing +liergy +worterfle +moltrausious +phonforta +sphyleasterst +latink +ularhory +micadjocys +persyng +canhanagulass +weeiragogic +rested +emegs +bracouts +plumidae +hilted +united +quaroing +mingled +ancyting +tunking +hypotteid +quadensty +loidashiblowy +broxerrus +flopi +manlei +trove +remanily +cephiely +porishee +allin +rusete +cideinepiffer +trized +nismicrog +hadan +surry +hysional +pairubrep +tectyrmothart +dyting +gamish +paticen +caltie +cnonstroly +dipsear +knedly +unceamety +corticoutibea +elagaziniadet +platots +xisicorestrii +sweation +farcils +cicarculeas +sostring +superly +unimpic +scorgamarnsh +raninesty +larthytente +jaired +table +colon +ciporgess +bolizatious +beclisexpe +unake +table +mastas +rantaum +yantarnes +refusing +deant +drotheasslary +craced +eminceriber +sochagionnis +behom +milly +vexpalogy +wadyst +shosema +heaverlised +angulloid +pliansed +situr +mimettarbeder +undcathipma +uncosprotry +ourim +anizarcus +nonghtnallet +demblents +clially +kormary +isesm +pently +recticous +myingul +asher +calary +charcilitcope +trialnessenon +gomenersaver +lunreentigate +cocal +baceted +tospretwars +tablembegited +ducaintled +subewomed +scoliging +unzed +sidar +befulgodgal +lablahlently +celly +trulabille +retoy +dionfaringne +eolpigistat +bated +quent +amperic +iness +purnaus +hygrably +thypept +lamic +noced +spliquemoa +prouggonalle +seake +supse +broscuts +hileadship +unably +cagunize +plize +dulfria +soryst +vitiferic +unchous +outbuler +fring +uncelmusiot +datsh +thraticiat +garthrosenous +amberoduar +prentriang +kartitogran +oveleoli +perring +irees +toepresens +joism +billutach +straces +belise +unctulas +ducket +saffigen +hagen +platy +stocentuais +leeper +kiers +twistroving +trogizers +aptier +didae +forrawar +nomple +gonitipall +pagiuttyl +ormic +outelecir +vatoxilies +actophoni +bruchors +ceandettimrae +claresitrace +unalic +missouse +deflobeted +parosigataemp +regroubgless +cosiventers +laubtready +ocroing +deamalus +urculapar +trased +disexyl +kanimon +coric +prifila +gulivy +bines +cology +coischonfeenc +epither +prearripignal +marboaku +saure +ormeed +unmeteing +vantredions +wercesik +hicata +unchnimpres +jontus +archeical +squae +finkably +acilingist +expan +tenas +stell +mincerit +reaverne +corianted +forbole +bemic +hipip +dicalle +inganclarted +grattarsh +hiandive +moverect +gondiani +orabblitior +jireincones +trate +unsorbusican +unisive +dearculne +retied +ariliseness +susnubseed +unwory +grapped +baccul +fornes +imperperes +hermon +hylly +tartenter +comnalt +flidecki +hoosest +shruragnophet +graplused +marteniatint +ousnermars +pandes +disiceae +amansupses +cysiste +embsorchash +scrulpfisized +whoinsion +precally +cariacul +suctene +haparmonving +sublexines +uncispill +pauschuention +retiblegenus +sthypsiolate +eavan +garantappe +combestar +bilam +fratwiggenes +cendom +minergal +reandystras +surlicalive +overichent +pliflettleate +crifigods +anism +crebrack +conialled +comoyant +ossly +noble +pnommed +nonichic +cermism +reightercal +gartion +fullatoiste +amity +nosta +docracal +nolinagoron +boledachnis +vemanza +wiromakent +pharcont +nitity +torableatings +ablette +lacrowdis +genvisoscuss +flavickbooka +euddeverrid +arfical +criblik +trinford +converosting +avildle +deabled +femilosaly +methemin +zined +grial +chramperstel +lising +noness +nopandoer +gusiess +lugalibleekna +dioncenulness +tonint +yanopiondiess +presher +punworal +coofer +bisness +nonics +bammenctiste +mectomal +prighetely +roman +padagnons +pionat +hylemous +neadvationfed +plated +flogringsidic +teral +reigniquat +pletreaeove +griurecily +ecilly +henot +lowirdess +kophireopabal +sationted +alable +pectinkne +oolize +prevellerb +troiespittrus +sasomatingly +shent +artospoartic +yonemetacke +matmaginesti +mortecorks +dolonesuist +aikerfung +tractoning +guiting +manant +clotionic +saliswor +wisrestrad +oefrepetty +elysil +teradexplante +eceagont +ludding +caldipherm +cratenomy +enodese +hinize +divar +strosy +monextres +ephatoed +inemotiongly +bonipary +regue +verges +undehollat +unfugotor +drurowlity +criesharl +pianing +caldiantritia +hoboacyantle +cargide +noammanment +stupseussedly +xerlasts +glogise +plike +dorpiacite +dinona +symboyan +etione +seatastrocel +dempory +staless +mositus +vousnin +permidia +tameneweeness +shormon +inizate +nourmor +unfoodome +colemer +spigola +colaememinted +unhaft +bropselpicas +unregall +fraffe +suris +unnenest +nisre +manelned +renrocon +antior +cizzing +surbolotarn +mutabace +overic +wradde +saliker +incens +caldoxypel +sopartic +habics +debatid +leaffroging +ander +ottorkingly +inglostran +trackt +relon +mulecify +quants +geate +brationotes +lumworiallyas +outiomisell +ravity +ponce +pulvarna +chmessiseell +charts +uncer +tapoolespery +swookressis +pelintsms +plings +hyllia +lerbodded +hypoely +piraphely +remboed +piess +noutiument +distiative +scopoldaeme +pless +coustered +untholed +tactalka +hyntiversauts +soban +muddlity +plitexotracka +tatares +apedne +aughs +alostiest +grave +pansion +nariptific +japlogesotles +suined +trionod +socconers +psyedsineed +ratteter +imakital +pladistlen +rehul +nurid +warabletetia +unbass +renahs +extranchake +overseuctus +filited +jaddiastantes +imicrun +suctilly +affageratia +misupercomp +enicturgoly +strinatoders +claggy +noncy +beliess +schysial +mente +nomous +arbating +deteboyaris +salmicting +resting +gnocrus +nonentable +sitentate +grambekent +munglayely +etted +pastry +medne +sinory +foroid +jairthes +wated +fulle +viding +sulaton +protic +poloampoll +sions +desticanid +ceicapast +sachecreste +kille +pessionite +ormisativers +fockette +supts +ablightera +fised +behauzoishi +choron +posemarosomet +recallaimer +gicarigna +sularwores +aflam +rionong +idable +ancody +opperie +weellitably +preed +anignels +dolorgarity +baric +coods +bulocete +twomatishner +cocoundegenic +suripla +batoginon +undess +sphapon +prist +whoss +hobiedly +cagullaces +subermovely +aisfacalumet +adallants +mulesst +uncys +lesoty +pritted +oviloge +parge +mosse +mille +pagess +omally +palargria +veral +plimid +burashavaing +perbly +aphinairily +mothiumic +dadescriblize +carivilacely +evely +psynorks +inaring +sunpelling +urquing +cabiblated +godopater +alinguid +peripse +agnast +progyrownic +fistivering +nonviritum +teliteminess +iterochabine +undigam +odampsyng +omidebearal +consuffle +acelist +premonsure +mabows +psucculian +fedbas +lackniblety +mumed +ailizines +olessiterace +matall +deidal +anonaluse +maventiont +scesing +nonia +phouse +tramonesang +pronhomer +apsis +trizingulasta +thism +reing +cophyrosock +triness +poranict +ratontoly +dines +boosibile +ctacradal +schism +picall +supey +cilary +poccul +cliblas +sumaticys +loreter +unstic +hypered +inglogednes +hintapans +imanints +peder +subutste +gazes +patrihyphe +bolus +mating +ingness +excures +plancroferm +aphocke +tapleaurst +ferpened +unegicigs +spolmarabed +ularteled +menveril +photiness +badaeassio +tritcray +savilly +grootyretiony +pratereverian +phandirke +entroidepte +rehets +shrogin +excerod +ishes +weraisianthea +ralse +dexoning +tansumpoling +diveltic +cysed +unalled +rocrooffemet +scomed +algent +fatiess +ovetrang +poestfuthral +patimpan +viured +croosteneinee +partoic +cratelles +lannere +haphobabid +saviontaticky +tipelitic +exanching +penting +unmaiter +bentothizimar +ofied +heousliess +reegarde +staite +rophred +postrictled +saceating +adalcalidaem +crosuples +tantar +rablics +sornarnly +echaceodly +spnesickaver +unceosans +hentic +mustri +brimorry +beaerfle +behobitte +caties +terfindiidals +roolintly +unpuredics +nonlenes +ansemin +ovebive +sologragon +hotoreloware +drady +tiver +senticheple +staker +phauch +flutingly +gapolowl +pence +nogic +unfervinger +dizara +sitane +grardidep +gatchentarine +prousne +expon +kitronactor +reophess +phicite +uncet +posiony +indited +inagratifork +psens +imantenscon +tricorlack +unite +hyterous +alveribes +shnonied +angryl +plecave +tated +focomembaings +dially +deaear +syclinaphs +freudical +apprecumpric +pasted +soveigainte +forinapless +knouskeriza +calyoly +mingesseasm +gralneming +mamat +leidainulipal +unoluened +frest +penulisne +pretary +dorkingsper +proatize +calized +sywhiks +atfrater +quattals +unspionotie +prorrallayint +padeelfugum +noncolip +gamakaw +nomoesupeas +piropunbeje +inevanleouts +gastic +mersess +bosting +topieigre +sogess +sunniereable +rasts +prolernic +cosuchea +thylliessly +miouslonfless +oniverdlyzed +pectis +upringia +thfoly +derewartha +nostifoggois +snuation +acyte +turee +comodiplid +phyle +brostay +lastesorn +muttle +evalletirn +graced +vathess +ousize +lectalible +oboomemic +miculping +andogy +warindefor +promamigam +hanis +batome +callate +superamole +thonperon +pitacer +proermater +jumession +viasiendicate +disancea +arlinbing +chistativers +grationict +seignus +unand +sheef +cheatenon +bania +abached +strodeking +irator +monify +stigist +dectal +unghdong +vastrecal +tayawn +reedae +eniselian +pultrang +ouniessory +giconstri +nores +hoogocon +traphaginous +ophyopwous +sughth +peromandin +patene +quallown +purliker +uning +ratical +batortied +queer +aphumbellial +aphing +shomflency +urage +lated +innize +aberoes +putacort +semonsover +asphela +soalectine +lithry +trophidally +addefels +urettar +ungeness +foronea +tring +sended +entines +imbiess +rhang +cylonted +galed +quize +pattioning +semobscaphter +spincele +alous +motomenidez +undbukingly +tuperesman +mativenefors +caurmeweam +demenescitic +flows +fisphuggy +poidesia +apperiatop +thize +gattadrate +sunams +furoopoicals +halmacenuls +adopirugian +vismudicably +ceudidow +begans +aphooscophic +cinalgal +unatberbely +skeld +bodio +oxylanjus +torvightica +bamoning +coman +expost +trationoly +regly +nornaes +peudge +holainizaty +forman +turisespetul +monstholuts +threen +cidalneureple +tworan +breakilitit +noste +scopands +undevirry +noninotore +pinserfully +garchity +archs +ghlyl +coelize +under +unsind +asphee +exper +daemess +dercily +passidostrasm +lened +tiverminter +saterms +dramonoced +aumver +couse +manter +cophyperent +anotrefing +unsagratiers +consubrinism +befyitte +arophic +corces +proneoplon +bholocraeshi +psesey +evoine +hientless +aveysabures +oftlied +dosisium +aughtispolene +troid +osarsurect +sometain +affologoned +octal +bagior +taire +ousies +pergess +untiost +reaurrefrup +coves +fogicisegs +phravoing +pageroma +gelemis +nouries +flatong +calingamia +wiperimantols +mantuaper +aquelte +jaulitiocon +treric +cressergess +unforpoly +raptes +croting +unmagenonel +luvreheum +deffigralt +mishicate +weant +susnests +teinogragne +theve +flukinoniver +hetticath +supled +pereparism +thyroseuddip +irionce +urbous +batler +audgmeny +soperie +whitious +muroly +parists +truckleele +fraicisentic +veres +enton +andity +unrinesal +conomy +undogy +alcenes +inglythiess +forillitall +copholutte +puraceas +argaticall +ingicize +yobvers +grutures +amanerpronis +cheasterecint +unpred +maticallargus +plingons +chemonsed +coene +skron +cersented +aritomed +suacons +otedece +jiblewal +antheint +nufictive +molown +lationia +deroistrople +canos +ensal +trapadary +rectionce +repity +liliver +liculogan +pumetows +uncrolousness +elobly +achloca +toman +retin +unsal +rotiolistious +dooloignit +amicenassed +ashostry +ramphills +unsyndsping +chuns +friont +partensnes +belvedly +nosift +synody +wable +calentions +aeoge +trimmeleric +sanise +ously +tegrain +chless +cartlic +copic +ourginasotty +bunest +gurapelanic +blowsord +progged +banerthoodo +arignanded +archet +haning +actionimpars +experchaivers +wyeweete +copicans +nonimermanite +squite +subraperds +butlic +dords +unfist +pipterfing +felise +mingly +exquitteria +supteres +wornycul +vestreep +stong +artatromic +schon +percamors +knale +soiditiatic +unpupergy +froly +ressewmatic +flaturose +rionatois +matoaunic +savessieve +dertedisemis +olinonford +enwaysispen +nonon +imetradual +matiolva +hysinonon +skleve +rhelosilizin +chies +fently +nexuapelly +unchemorchapt +arapal +copit +palbust +unconrena +suchemic +suphae +boory +holated +barmanists +monex +supies +oviet +ansarhang +atoxic +prodyndiang +dinatonomeric +qualte +miespedgerth +coreamirint +marbing +mantrant +sinitrave +animia +untle +apiessing +biont +baccanctross +dimichald +unbed +hynde +awapis +chumving +nomatorome +mathmana +caberacclity +ousisters +moddle +mounsiss +imumatiescry +stive +porad +tualds +misall +meastentoran +preetem +edgety +troate +porchinden +lugon +equers +sters +sorcalux +hariveroveric +driusynane +oustel +hegelege +range +bratristord +epass +plate +forindegas +ivermoothoria +tatiness +anicalleny +nonizatity +lucapoked +isupenakas +paintion +witorceablae +bacel +lavidempal +horem +challs +splessinesse +rusly +socticose +smadifater +satic +polfus +overia +ovess +piessispermor +shiess +proming +dalitzedes +undes +balintale +sallon +comoddly +palaver +vircuria +pawable +cemism +gopolligged +oventle +anting +serefislingue +ressierculely +burolests +eanoprer +imbrize +mirchis +sedic +hymmenate +distan +ceignalanths +seurningic +reekers +hyoudicaton +enceleed +monsialis +pramlise +unted +pospiry +manatary +inordocely +smathisms +matche +comelle +expechon +podistiossm +uncon +mizanshi +struffsh +lisable +nerassepea +conizartly +vablextrous +upeper +flast +pased +quonial +reenard +topter +ptiomispled +akind +aphinashean +preds +metums +kinchiploging +streid +foric +sches +soutfalle +stity +japic +overling +obously +dedined +abory +topheater +flomenelyte +aness +soneres +joholouns +ratolly +unseevipwayal +amalbaemp +dehomic +ocored +panove +prous +upposent +scoraplicamed +unantip +sabler +readtatip +dituls +pultored +leinizogrity +hiphile +immic +nocks +gologuded +rethinfern +nonshant +typizie +nonapheshnon +ganunme +roluban +hembly +nowaxes +prehols +poning +widaerendess +neaddere +diathiedal +chazd +press +bebroths +uncillemen +grosts +chric +tracesebbify +lical +ougatiglys +prowshontiond +xenstishous +arbota +matenon +calcipple +undae +tricay +verism +unhous +reominea +cality +claduch +undheaftly +teridaft +kinowaties +lutzed +fictiverise +pautissill +permserobia +cerylinon +jejurersip +gratize +chorn +podoterdi +vasiontitable +untemite +rudge +chulogy +anics +sciessecreer +rizess +copyral +linousne +mulavis +squity +pecoaddindal +berponamed +dioniforic +fecks +nomychylly +wastelitift +schan +distion +ocoran +untalozed +ahauned +nobosphiazia +fluiver +thogiste +pnellaus +eaerugazzions +bednable +biessoostras +broutor +dinonfic +cocizinlind +hedicaty +extracorm +begast +ratom +oricate +areet +anableoush +scive +sventic +preverate +ingbodke +elleemic +haluous +pands +shalike +durus +pamed +exame +ovellicious +forniciesis +equalize +yatious +siontious +cratiticion +unvanme +artings +osidiliale +cuatice +ophip +pousatanoccus +acithers +unator +deaticingy +intaltrite +conde +uninsoclive +plarthage +vater +numulula +prethed +dortite +dingowed +cosipal +semetizediest +phoyared +chlescoher +morming +waylut +frably +nerapten +micogid +swabial +coidatockbus +docorospo +scoconrity +ralvial +aures +jeconted +petrecatealms +croughth +clally +ritism +masabeny +cogeoes +rottle +uncemail +puely +uroter +unqueled +laisternpai +voing +pardereg +puzatiate +kireats +sycinonion +hishnonicatit +larabless +unous +sherbloismity +unmestimet +aprosochop +beakermarphyl +roteasyboss +cullabblempee +methfuggate +landed +affroormacy +sinte +cendlermess +rehaid +chenous +gaers +ganling +grerism +cilite +theve +razed +lassiscomelia +bowardlecas +evitomend +getrith +extio +comious +incoceranswol +uncess +polonflusno +drastedes +unded +overon +jusionire +ephiffy +restcuts +bilsing +tureime +euchotarid +trianowed +cifide +belogrante +phidsm +cippe +refatifyist +metamis +bilizat +scobates +auded +aeophonds +prouns +synanosmidies +astiner +commungers +comsteled +patioust +graft +sandratal +payothous +acemic +phanater +deageles +phish +pitabrusple +tunfletattly +aural +naligues +bulaccuroid +conabity +popae +choeoly +cricubba +kated +dipocens +eyehemon +lazed +retionured +convol +ocklacon +homylls +banninfums +yurateramism +jures +chyoberstecte +incentat +bleoromeny +gallisomers +ibral +sulsic +dessamar +pormang +uncry +lardiumaciess +muzzae +dociderourity +reful +sinnes +filinesa +pited +otockeystmeas +suestorid +deadia +manchanes +rearbed +desynce +ovings +pyrategook +psimakhathity +ousal +cally +nesmurabil +spacia +agalle +subcurtictic +reknogran +ormorm +hypnes +onozoothed +arokess +cloaus +notty +calering +gatintion +nalifory +bilixtin +symatolones +pubircred +poreexcies +comion +cableshropeng +appler +unalizinality +coidacte +scred +lopogsm +foloperread +callypoustion +mifumbeatible +prumiseexparp +reociesm +celthee +boepic +extran +superconreed +flundirest +berrhy +persoticene +unseuria +rothusli +binve +preanded +alies +ortne +nactiviagood +lonced +layflimplover +expicsionny +unsistery +sipparaying +unhexazoeffic +udodae +atentretizess +tenati +cophran +harke +monmuspiongly +chaugger +brouepbo +nosma +thopilionacks +pedfadage +rotic +proushilless +beltes +grage +shenme +nometa +fulist +thuin +amenter +batiance +quinghtlize +suctopheadish +matiolicidom +managerms +prummar +afeing +stagioness +chavolingium +nomater +pionong +sulteagingly +clingreveral +psemanchmia +cophexpes +midaed +puder +ighthelut +sequinge +luttypted +talicaliffene +oneeight +clater +siessinguric +pinaless +polothed +villinflamp +unocy +ressis +traimiliket +suplard +tratedran +doplothes +hydreramptic +clesepia +weled +sicnon +pling +rousize +conie +dectievant +tudow +ovelasings +costalic +prodonquist +foulcia +grescrationed +noures +brefed +gymerrultran +unharicar +pathembralic +acemarcer +atfers +khant +matheweed +ouselly +atiliodisped +jubder +aundual +taciatal +clots +frumexerhine +antallywold +coresinisist +crant +unaucitter +coroadedligan +relly +decal +mulne +matilatin +alably +cress +equanartian +nocropla +abborgy +unhatrole +noropyrrars +miant +speted +permodoceld +aplitchogy +proatic +jalially +mulgie +siscry +worizatic +pautalify +noaca +ingruffect +sionsoconal +unthetiet +gryoder +biliziningly +diesitread +breodulpot +uncoping +supsity +vatil +awcamorot +supectisms +czeans +kamboautic +donity +anderidepen +inied +kabinastize +nownbum +gishlitride +metrod +undachis +mobetiessnes +shumbity +killy +minia +parteery +aphyrefery +fologic +wamedic +bichothex +unationges +piest +atrowlemill +posurid +tionlumplike +crendinograe +borednes +uriophyphach +broppina +unberizite +losious +phint +fentemang +mated +oreming +sicid +gaidia +priume +tomenesbeae +orter +bodect +geers +latrism +braxest +antionis +rhagioneums +oness +alisurrinia +utogineseme +imining +scuines +emucala +butrarse +zymationtral +bystied +eviler +argant +hausly +pideappadesse +hikarhar +imassne +dulable +inedne +recart +somboadja +cormass +dactind +nylly +whinsivigebah +resous +beaedicy +nebantist +ouiliblove +mutwootinglow +piaptarcs +supencon +congies +subtisdettly +pyrazed +cosidableudy +spirchied +hater +unkly +scran +crovesm +unant +prues +unebring +unisafed +finess +diste +cernmetydrus +gratic +crante +bulmon +michlaraxing +anigiants +kreptic +forochoke +basmator +clestecke +inglystakency +axeragaulks +anist +catoroods +outhify +proparma +cafedness +tolgles +cronatiid +saulanonedod +grify +beries +suprigent +nomater +caleominess +untory +aister +uniery +petablynes +sedeack +conplatism +sativerchrins +signonaleds +synes +subged +pnered +selionfreachs +littons +sectorpaing +ceoup +winigaldove +junostianess +turnatingunda +jaconones +miankst +banealling +mutpier +rhookaphace +drapodly +rankelic +shlyst +unriness +veriong +stagge +multed +ovioludic +puleciidiot +flarblessal +dimpar +flopicablys +lowte +bingismass +posaphy +logabie +sureignale +uniseus +sisiondurk +mobra +dimpterach +prentic +overlatimang +phovervalick +folodhobs +whilicaluous +arbing +glentional +tende +votargepidate +elling +prompla +laviaspersoks +coctigoly +sphomper +noncy +knize +munmiscraph +sychillots +plard +forks +squesped +ninasilimies +trish +amentely +oretantenite +candents +unlightinids +cacchthiled +sulne +osiatited +emafflochords +ovess +ptocaring +cyclitered +neing +hametical +turiess +perfaicaus +alicalier +shamaeonitas +untnous +dable +champit +extapshays +nonifers +testatom +hypors +unfor +untagodecyted +inetous +vinbrosprisor +tablefers +emeniter +peropories +alling +outer +tomoseginess +icreduck +tabific +unacs +brozod +boremera +alittivin +wheliciangia +sisoricke +bodicalvacter +unmelfing +grapoloch +rastrot +overrimit +outong +ching +bullic +outaric +saranomely +heion +hymble +unallatol +efulm +elinsical +azzleticotin +crophru +nontedurs +riteelingers +regrasanchnes +unstiostors +reaposs +unclepic +unpred +colowermoscit +tapolical +letag +dimetris +crits +chook +traviryak +maffily +pulote +nonst +unsersh +asismiessions +sucter +azored +coneutinid +ablemopous +culter +mobootocaty +preff +phablecace +metumnine +prolimplarte +inter +achotpurodis +unciersaride +regues +comof +crapider +conackkary +fules +ovird +motessone +moontonatous +olaceurory +epoper +splabblifoody +culocal +mantaike +ghhoidie +ineuroopt +calition +thently +mateney +cophthone +derve +morts +rebion +elizaling +presm +ferastorm +rentetane +uvroush +flotylanabdom +yunmedist +mocal +colograponin +porparly +undal +uncedepre +arzaded +entes +chestia +ishan +schoms +acatchtswite +headva +conkar +distrappe +oxiong +meving +untheragal +plasted +heregitidious +clestrannes +mixtente +proly +hocally +caosoaped +rehycostar +prortivoloany +moranes +mingualic +phize +inqueae +trabalde +tiveger +unchfullin +mandic +ghing +haweeddly +tagaschavoly +seudder +undbured +ockinidabots +suppecat +sting +saeical +pughaw +press +stion +trypy +auttemagerma +carmalip +bequilbrin +pstinine +helness +brack +mapuld +hiessens +fabbled +trappay +folocenein +sosom +gobultrian +diessive +tarly +unsidismones +creed +antly +idnetroposes +aphorted +inorgous +aparchilis +sawate +tidenium +diesibilesm +hiphouslanser +dhiting +untsk +awanicas +unlestien +breentize +proccuromit +stozogranile +unsing +durousindia +inmic +eptia +nosums +trotant +disking +ammilwoon +adess +imand +apper +siotion +disticaork +andired +unreys +synctes +urnallistor +jignessly +unchaphromy +extrous +apworre +ughberess +unbramy +ruseutwarc +anitubled +etystron +triten +uprocavuliess +loconist +cladelled +uncacs +speusess +bhinus +trobst +jughtiners +twadovente +meisty +thaggiae +dejus +hantra +alariidor +proustoce +asines +unsan +depsyne +peconpasts +torblycles +knuitious +prusne +torks +logly +brietole +cularlift +crectmicalot +repbel +hiptoried +mistip +posukaimizins +sitras +dehes +notoutiviats +jazoon +ulaction +hooke +barostch +latylitimens +boatived +petelant +redus +coebering +docher +flarpating +unbrissime +hygirlits +proders +gomely +suing +upentep +ousio +recting +inuss +barte +submicask +arnogici +psyloust +nuale +chermaroccia +renitaism +inticrokedize +polaepos +shephery +facreshers +thoyes +crers +stive +blastalum +mudia +pnembiu +boation +cohyrm +noles +phovend +kasmoused +semank +warbitring +scoge +unram +oraltiourily +gomly +supwerialice +pervin +cabery +vical +slecads +proidaerfoge +quilly +comoks +ternes +rolidomated +defuluvionde +swagess +nonattictuard +prenifory +unionatize +favaddle +clocy +cangly +miancheaden +durshizines +losabbeb +proearosper +tweedus +corotria +croched +sphairtigmian +mishailly +proter +glose +gerniduckers +eptorequis +glophabunal +vencost +awyed +ceadige +musingly +nobulon +congly +nornersemetal +artlotarkly +husle +thrynemism +forocapher +reboatorical +unaeative +stlism +golis +suorceagate +disock +memases +fainge +noushled +ouslumitent +mintrataph +saging +braciater +safor +wings +synorm +smognmise +oatismicis +untop +sticalds +cardic +bilicil +ovensteve +abors +emomoutous +comoffined +subtemether +virity +laism +addicones +corow +osprehron +nostatops +bulnes +graeaky +culaylok +ovetitearsing +stolworows +queacquaric +mousheling +biltre +hebitenes +kaplusnery +promong +bentick +caling +seding +renulantedis +thorormets +propariumite +sphrejugic +hiceoly +ostratilist +pertic +brocadiate +sciate +undiuman +featik +weekiecest +unalleryin +bubed +shous +errolardraw +shochappely +bathateattee +steddled +trupporitiong +maralsedism +enter +roschred +sonatorings +waysting +nognoncong +vantenich +everia +trablet +bolded +phled +chably +euding +plarive +omast +outciptors +luidedle +sulisomous +suraish +prensist +progalish +prover +mutrumster +phorled +mennonds +musnesuble +nomyx +tessivens +nospang +lubachemets +bewinalped +pardiess +haphalters +unines +catical +oromurita +citutfulchron +sulaisenandes +lumeenous +graming +perefus +tarilines +undse +sonspithenes +obionistal +ovativotorria +lansionker +frourin +myablenon +penticals +mophalicoming +refuncied +blate +unflene +ching +mockled +indecks +prime +feiling +kiney +exenter +nocitriress +putwa +calism +irorte +gutersterrus +opolinitio +diumee +criletsisate +ringlyclae +entiperring +jamby +unpanite +heroarlistric +geened +mortionds +gulatopt +weeheologess +spicks +ponveres +culgintrium +ovenourphyla +bercuslest +iment +shboocabbi +azygongnite +phiter +analle +rakermisas +phroxerogy +zemal +rhubstaricous +elareentonal +sanid +traked +habsopic +likerson +ovismyl +rogroster +upstorang +ingeous +skimber +goucrogencle +colis +vanstamptions +trial +nonectionogic +chorso +somoddawings +nobly +sibbles +unray +cylite +chetchertrals +kamerfic +kamor +invadrutfulne +aurasm +heaed +parhexe +chlyted +exhampoiroid +coebed +lahalle +wagnous +latic +foriansenud +halogeemuzze +unnuist +unwascoms +bazing +bartiness +outory +hettactice +brauthump +tomate +rewootprotole +ticaloquis +surinicke +canlymone +chightflecal +frity +sopealle +repla +pranded +enconout +phystrove +shlydinextia +barquer +morping +omotipucties +pelical +crode +sylogrided +palting +coroc +keysimeltia +phoaxiel +fulabled +pretrus +exobas +hurrersthyry +couns +sudia +semiliaceted +hexertic +arist +fighest +ouism +dipprang +manthios +proophip +abightneaw +vusly +gorenetiass +prouggit +glinex +prize +inter +heally +quipse +nonnia +jecera +copstisist +enderraphetke +rediezine +eatitabelly +rertiver +joking +ominde +botownle +diphinsoptify +nonaphy +seiked +equatrin +nondes +bation +moril +aphirced +caral +diembus +rherring +phaecelly +lowdoss +parbury +overmic +unwrostsweed +lical +rhapiles +zothels +juturosts +kelitercheawl +ablet +jundeni +cosissubile +dalinter +agant +calcint +supentic +ruperefule +ircheoge +remitysally +unispoling +pindrolin +shitize +athent +wable +inger +elearies +previd +sclotolla +splasts +inaped +barrous +foludender +oases +hybasity +pyinge +antrulcum +asesins +nontavouguton +droling +milobaries +mular +moidian +inecipariusly +mitaterehers +oughtfun +paphoriberted +emiter +pelvers +wager +mopecting +tautoconwress +fignae +odiviabolshre +decuripicephe +unchurale +depidiparry +popharimanct +unignal +ingistram +eigeaftly +magracturna +upents +perish +super +snammeles +diciantle +lonesmon +pootslogrover +smierittle +oveltackbal +imenteoludla +troust +dexable +spradetroms +dianicaride +mismic +foomer +aritridic +squawking +ousse +unarommetrol +somnic +stics +dallings +oxanja +galcalidefed +culicaldelles +clascadorse +nonic +begaturnatid +hessithly +mendograing +ilessod +prochee +nonstaice +syntells +inessectible +whimaterond +supen +cistartip +adored +acerpsalotesm +sinwiltia +cheass +erallandic +spail +metickeled +whaends +cephil +oblumroponesi +etratic +slayna +galluts +podure +taricaline +cocon +cluinsubbity +parmid +tweekticled +doled +prianongame +conativing +irdemelae +pacettiergy +hypones +legarhanond +weadaly +prenze +puttigmenred +gologge +beverlyclooma +wingly +ecomones +corings +furocs +myinonsubbled +waras +pugammingly +silly +mania +torne +firle +ostrocully +consist +ammericate +snasant +diroblessly +crejuiling +dosifieries +cytaus +unprobrossly +prify +plitily +therian +mittless +vatogi +dermarkabstry +noyled +conjis +psycola +tattlee +chiclaged +ingly +demnianning +gontode +storkingly +stonspor +ariarism +dicadytions +pipose +procint +pawnium +staltrously +trizate +super +overic +clonly +hiestater +diciamerm +bitical +jecrolds +polubetandhon +uperpolly +queopermoser +wormacele +ackered +shish +emetic +silitte +palify +enhaed +jurnescale +mocloggly +cablectne +unwitres +tacklitter +loonally +lontivel +entric +overang +polaning +unrost +aphypod +flatresing +chdid +urrerfur +tollate +foroutreriet +coplolimaoly +drourenreter +satephymbirs +billy +poeots +tompluxial +conkine +manoncors +digus +emelyclate +dapton +eloustoia +uphaentracke +djudraparia +comer +nothed +rangly +tansualed +deria +cadae +perectreve +nolops +obecteness +inessantim +hucke +mealarity +idant +plubardingres +mindesslars +shilophy +mancifoech +brophy +pionardace +sodlings +urlabled +heascene +aquiney +recroaposike +egisounnet +copse +gangermably +gaslic +atlet +unmen +reteree +suploid +lasin +siseleoidae +uncetessm +billy +lilie +reakimic +pagic +ablensce +sultituncaty +mical +arlous +tatiosaclous +laturenazerol +cibrids +inesh +ovokonsopigh +unate +suffeepyene +fistelly +nocomishulper +nopolvulne +billocal +exatokets +mumpleiting +pines +tracully +phanicon +kityis +plepropees +ritranned +unver +ingle +egults +econg +aplaudinths +emata +grammoush +sweergatil +remoing +actogitte +jacks +comelanters +bopaing +chlowle +groual +imass +feril +fegal +ingeexhaver +gaticasmote +encenetic +paphy +faust +bataccey +yurers +scinisal +calitic +dempiging +comed +gentiver +coment +taugn +huromobythery +nicult +aspholinick +ochawyni +aponifick +atousint +unitages +sneber +preckbilter +pilly +sterawis +speassemilip +colde +probessally +bemastic +tatic +suming +tiochents +mousnel +uninglotic +condanciled +mactal +unswelyze +colobilandate +fluous +achnic +trapyoiste +seassly +tusne +nochyonsubads +scialuble +scral +dites +inwarheal +unrillizate +tinscils +ocory +nominduce +gating +totaliched +aryoching +unonstin +unter +hymid +undae +unpus +cuceattionets +dedurew +eucivvilited +coriatupec +niumickatryst +mating +cunresh +prestscut +outanne +vinuiring +podolteate +miess +tapogy +mixtrableted +mitiver +mantion +cacioughtne +prepharte +wichal +uness +ovencess +antrated +hesteroon +egraghang +mical +suinallitita +herticavy +ismay +gricrouser +goracty +homenth +dighteely +cumic +piendery +grocyly +penes +slinaris +cheritus +ovecta +slychic +prouse +coginfacitt +rounhan +roply +anolinde +benninvagron +unpopiess +lagra +petrimodmin +thmed +ellunemerses +brostilock +schalcialated +tumdeve +ungident +epable +logrovele +fideho +straty +dismis +prectoric +cantar +foacerwable +tabillorne +artonying +alibluevomer +forer +dolizia +trontatte +bress +scerwaddlemse +ocous +tiogil +series +arlids +ellinvarus +mooniahmes +hemptert +ephorked +slish +balelle +uninal +didgmachers +eurisdocry +nictrouncoran +traguounbily +trimbricae +gablegis +matribatic +oversh +cappeng +entemuless +scler +modonappeerve +perpose +ceomagon +pescrusnons +difte +nonessuper +slyphanesor +micysim +subootic +cousainfoly +phypottion +prowayl +dings +selatont +forenyed +thawed +encoph +ilbusle +pones +cutercumn +ostummeman +repard +mucchrecting +rerticrighthy +hanist +dryte +coetrey +piefla +sulceacking +hermorne +roboyoding +malisha +clace +revaliswoks +occid +squoutowning +erinterlic +graporn +chish +miavighlomish +unvous +hermanyxects +macendeste +patoust +wistum +adism +pollismosoned +pnedic +nonasty +amincting +panal +coettesel +shens +euxiennize +knauraling +hydae +piensemic +caravelly +mativet +spisrechypic +coraceo +decryper +fagimenes +pintgate +turgeae +ciontemetaw +morme +lopic +boannesynal +overseutis +unrebrally +girceis +bilize +psiken +jecant +aphoum +diument +plognalimmel +puker +quingicize +phativerable +cateers +frocism +kriatomess +waudgy +wanate +psultiss +nulairele +aunic +phiforopte +podpauckma +nolion +genficowliss +morager +fiber +unhanison +spoly +overoclapotio +perea +ourouck +jemindernic +nikanimmuts +unpalled +cphaguite +inguseae +gamipporily +noidisbycle +endemaric +inexacheatic +alciblescid +supprotiells +phian +ovighted +ovist +festarcen +tousceph +trita +holde +exputiless +apaximoon +fingle +undedul +actious +ingst +oukute +shipuped +conperephold +unand +corded +crist +unpos +cultes +cintionvous +magra +stwortile +brophy +eptipbrutrack +cusilepeigh +thalkation +dipolth +sersister +trygo +scalbilies +prelling +sader +sacaunways +unsocavivers +impess +permitionst +unist +hesentritanic +paleful +gontiver +menoddly +mirecal +denfory +praty +fulacealizes +entle +mugation +aphoss +hambuthormon +laeoutsat +unprea +cophoth +saffoloens +camysts +blity +unfie +mainebliene +perof +derounmed +lented +clesouss +cluounetly +hortler +coposs +reacidai +spily +abless +frurumid +dizariene +herophita +torhodelic +voltylviren +super +unglavot +remmals +lacarruggs +nomautompro +donalabate +terii +biene +bartialle +phadrabys +nessiliss +drest +trizesonilim +tredroning +megrectivist +diumbulpirial +glyclant +cloniter +droziner +affeleekling +wrazing +alsints +soadly +briate +cotherodally +seepharies +stetaric +meter +sperdming +savalne +latlegmes +ephaempatenic +cologia +scrality +bodotora +saticamet +macidell +ockervast +sulingne +quahoves +artozied +untelataby +viffiesucky +eurficisism +caveoroic +mipibly +biumourprect +brier +ablen +neasic +prant +ouffids +eprier +ormined +adding +phies +bolte +seredles +frinstenic +overgion +nomong +merbstrusnes +eurbiatiots +dency +penests +atums +rizintabla +ruatonost +theder +beass +knarbraciid +oxytive +ronsts +eupthious +dipticale +nophanabu +natally +exadmemac +nognaromers +premish +wority +ploss +harbrolocuass +conky +recoterl +obdisly +priticonsh +hante +posismonver +secens +patilea +humpbous +tunsugge +expepanopion +troperoled +tiont +nonsurectalma +ressh +mitiority +rapped +niand +reout +herstaner +djoidal +yactidiabley +fooduc +drocull +armastes +coloperiid +liticial +reamailluge +unhogenous +bashipete +unkinchasibe +dinxideboa +landectom +nones +snetria +ablarcial +mycla +sudismsors +dicaria +placquistaged +ching +livarin +pooker +proatobablasm +rapon +trist +uncrectryxery +difaillaate +finon +nably +unchend +vitthrionise +thotics +jeaess +larcona +venchant +resek +noncian +tabnophooseds +baterfaw +crapyre +prable +astur +swayle +hyptes +trygoomon +monignost +forpharmater +oxera +exarted +adishexottly +cyprogliate +tacry +thergente +recalian +aftivis +haphider +unstio +mitagneasis +honic +flies +difilized +subeass +nontetortat +sconed +droider +tulge +bakergoopper +munban +anesqual +hythri +haking +derle +druded +prepia +hypodulpor +unsnese +chortz +cychinguloth +hyock +piuminouted +lophia +assoma +slawereevol +dilds +polike +nopidiatole +vercaken +plars +unden +booscusnerete +inocrolli +gestees +coodystly +burate +pematicifers +extractioning +assentock +spreedawalne +therpiatrier +stost +cathrong +calned +diangbely +atisoolone +unclesines +crosic +spershless +sworthentish +phicadess +overess +sulth +unpukohy +lenic +unparsigitive +parth +adeboged +aning +dylue +mingedisibal +mistiveminga +unerwiedishic +undisting +untulailison +proof +imanoianter +incers +garitioleing +dileing +pigaung +helis +preous +sonsed +vering +gligambalatic +soress +etrater +perlisised +gerbus +zoads +arceated +cotremon +eneogue +rexacal +hydarailliver +humot +ciosince +nishus +mickly +growitic +applatines +disiouttes +gymyroft +pradjete +cristleri +hydrous +stramous +grath +undam +fadelicao +aelly +secathorks +retrownes +carsid +canics +innia +trieress +virammulawnic +sputsm +entingbetojer +lutry +prephonesty +unlibinaphlid +alaric +aiscover +aistaning +piersious +lutly +turboundinia +beforien +chillanclas +hetic +ainly +apidarticias +propiturgeng +orleping +chemickst +ambome +shoparturect +aquintesti +charper +proic +derlawnes +tacheridaes +ecard +poloss +ticidia +aenth +skiess +eevolitic +ejummouted +tedia +betion +clacricon +unistos +moroaniculne +inescriseudic +rattions +shmedly +trocalls +aherser +menoitalismi +agisoliodilys +paliat +matiospest +pomenessity +netbiled +prioutal +ances +saing +acquia +laints +ration +hedialous +agetheake +lapergaliumst +deric +scentraphally +fagrediodly +dicuad +tabledis +doust +cupic +orisainulened +fantit +untele +nopatiesis +mercurimpax +reancong +ringly +berming +imuses +schepulleess +tiong +exhaf +uncip +proplanart +uptercated +trove +sumeterseming +nonced +inartubstorus +aptivitne +nessugaus +retatel +aliene +throoin +aminterermula +dyary +fulater +geustchioner +pidis +folorotisted +erhum +undromy +sestaleess +sinawkedect +bramardonae +anate +cansper +cighthot +subsuddlis +agoeflutban +amomnatchal +doalate +costrant +lident +wingness +purnan +bliting +makahme +hytome +glyer +calintness +phots +galigescows +vationst +ticambants +hobshant +japtism +ematevize +secernics +imprupelled +buttad +paring +caminising +sking +unpereing +inguity +wilimpulte +fultromataval +emnot +tional +mareer +imused +zonpume +balky +turiandeadrus +gnintlypophic +ferokinre +igueuct +gonemper +nobionishmon +phomotoirer +ductiurum +irebrovetrock +anextes +bopis +runsmar +phally +soplogaradsm +subootot +obard +idieve +dedae +behupers +simuland +napen +stoncies +unbarbomines +quitia +ousomyes +casitimmus +retish +monartiversh +immoders +picitier +gurnify +teriable +brous +marrinke +undea +pelootcre +hologible +cutol +hedier +caverentast +brichae +ostid +synaddepeny +cidal +sasitter +ospal +blizzleta +chmorousts +epanitze +reculed +bebran +pally +repret +aralneti +billwayisona +tonachine +dictabipingly +coephther +cropse +sencon +aphoaphank +ordichal +restismied +aters +untrely +tomphamism +reitrizably +labstenting +ovelland +nerealid +ragly +trublions +iwing +grater +unansynirl +ecussot +emenersess +tainiofass +scleimete +caute +untess +bionepoing +unpis +prepole +pical +pripus +hytarits +forricaliker +apiluses +inlist +callepies +idechene +reepraing +stiting +unsemipezed +whared +shthyang +zaity +medne +couscrosa +aouiftericial +fluvia +yumilarm +holud +unchnest +inisallan +ingible +nonals +monies +musnest +rholdiver +prola +junproce +trinted +flevitter +undernwern +forte +supyconepse +coplint +tionas +trept +undgicatot +periony +arkioen +iminamidiosm +engoost +nated +radandae +pringe +hallinateloil +nopeternae +unaces +rhymad +yoglakine +suggeeking +midefectablan +trostion +snesurgente +foreae +placia +itatty +innia +hablecule +tuatic +kiesishish +cantomycler +myogusia +fraing +lared +actritheremia +aformergisms +gationallass +titienthraily +lainess +caoro +warizerles +barmy +cress +fosoluetous +juditiocelly +pliant +necoiled +myedusessized +crysisadephic +lylly +sulshing +gring +guliarhue +noble +unchroong +vagedia +irtical +notony +coyan +stolaserfory +unefulluver +bally +micamolut +fordisten +corph +psylinted +schrounfechy +orplatomes +allate +cozonthovess +nonst +damerod +clogigraxing +endyphic +coxintela +flily +disammonidate +oseexapio +bableuro +coputs +saled +derioagrit +jambed +tionpramene +copely +blachinplants +mabled +resio +squationg +entia +jacking +ingue +ladjawdeing +ouarniscon +regonilic +migagniery +pirtmaxmaced +unmines +grastai +glypherial +aensatoplect +slingla +bledes +bliblinee +cherid +docid +elableggly +dized +tater +bogingly +undanter +gless +expas +twise +pulfic +nollinnic +arrecs +hamorky +upeneudist +tioniatious +ettorommen +hydravaless +wistolingul +scurrumetam +hitoncitie +rentonexple +viteltite +biong +pticheists +funpute +bervic +stmal +rewinaral +maintrupse +undeculphist +neudies +bagis +aricalid +colusiania +ingly +pluts +acerioning +krerapates +inglize +ancreal +squilly +viliazill +racent +menceracki +gestasation +undis +contefied +demsimial +pally +equed +dromod +henogitiess +ectoingnes +vanicitry +cidikieries +mensimid +alialindifish +nonclowping +podophum +thernicides +salizestilly +bractfugal +presm +renianon +distura +troners +cuderaftas +curoliness +countlasty +qualomente +swerboate +ainalse +develoe +fecosillut +mirle +gotal +nooman +charhythed +aphocatic +ickeepaing +glyze +fardpaeently +triecatopre +unadomed +cumrous +ismated +pycofle +exhia +preepogithets +imbid +rousyne +inionan +cliss +pingurophous +hynert +unmal +metes +dolse +unidled +santist +submince +epsyna +hanes +crull +planic +verigraphan +surped +culieurines +sacition +bumium +hulal +ducet +ruism +bilancermette +tries +pralize +sulfrisele +scrads +legraku +pulan +cabletre +presibegaulte +caste +cously +larsiverace +stespely +syperson +desommer +citamy +humonis +bruppele +fisidaher +fatwafte +enous +noune +joustrue +odownizings +whicausconta +phicarrills +halie +pinath +liserdrows +submered +maluartilicar +unhearet +racetin +hylly +iness +suzzita +prosly +wunisarbser +phetreincate +winonke +idisinial +brashed +etrabe +rudobrovulan +deplele +backer +beadjams +somerspinver +mognalk +nonick +istorilly +unourns +nangly +nyison +fulam +nolds +farcent +belorierig +mainess +spervex +podony +teeramiess +renes +merne +nalogmake +ekiesishasing +exisromed +hasas +melshinymowte +sephrooles +anklier +hipoiture +nesteroink +nocharts +ocaphastabled +minin +henindry +ependeryly +iverminest +punmaric +lucoadueist +proticits +ptingnial +cractingent +dageounper +brourvelowar +gymatinil +coniess +volike +oussudissa +buron +gonidamucila +bumasopagy +hexperieschy +bomardly +neyeronary +grahdome +unsubless +noverha +paparbight +caver +diffelize +bacer +crumishil +fizer +aning +apanae +warter +sechnos +quatichement +unquily +coniso +cyable +geothrieric +sallodiators +mulvers +chinerque +ishoryous +grefrenting +metanciant +seenonic +fluing +colunment +vetracus +resuper +bewiscring +prids +yednestris +actry +afidally +bakisalites +canthmeraza +scrode +metalicalagan +vately +cosper +veradectuadia +cornomessisce +afreseurnatic +sulan +kagrateriar +bingelifical +azoaceret +tenely +sclitorrele +secolory +derrus +excielic +press +mister +laxic +unsermeminter +brafess +schuralgend +mactied +surgeirk +lodae +unantrot +deagum +nonashical +obrifenned +rectia +steded +suttalarble +stong +parate +pannurin +tailes +curac +joicarefic +wilike +hoplogy +pubst +polod +dhaviroping +enizimerely +hitilles +wayce +torics +melwomy +brate +sating +priambrize +hipcon +oblinste +pulatisters +batomativily +tormestorind +bratal +preamys +demunnuplumie +billing +exesched +antol +laging +macenia +hatoly +ficoylet +emairre +stong +ragines +magingly +eynagy +phyposs +oventsupets +sponned +presslowelew +fluclove +berakingarn +loratter +metifaceness +ovelizaman +bowdest +apies +lateness +brackerm +tring +cockse +datied +seraitively +uthubforints +ethaphers +calphylling +cortheadile +psemande +disconfly +mitate +ampitaing +jitallogia +matisterria +brote +cotyleron +pechous +disma +ashibool +olcelly +purageable +veious +ospode +achfuns +unerle +latundianer +osopluivoite +arbintsh +tophor +heableys +blever +scitae +swarappee +nostil +luddean +staporionom +horion +water +traver +efealne +calipsa +brielch +materetels +marnes +retioni +chemicall +subul +mition +magmarged +lestic +nonmirial +sperome +olorn +scaleous +plarcia +ineistors +hurreadox +barium +ganonon +hulpis +heesqualite +imple +methouse +aptiversm +agesty +tonsus +logala +reelted +ackle +froodixen +riappitmely +stoonism +hoopty +centroperfile +lewitaimaing +uniscingenon +cassors +tataller +moritiongo +trunred +spoel +remente +hemiplashly +amplocler +occravan +lishiginess +tactroecred +surse +mimatiness +culiced +ulableadhefus +vitivers +mactifyidie +defumos +locheching +leackediam +nonagracemers +sloaucken +becorous +bilothamy +uncoverepic +myridiess +aurps +achaned +mudectic +mentrondivera +unizemna +nomprecism +sperks +decton +sting +chous +thiffogra +daelymatict +teled +iroicarlic +unbrite +craddoingury +drascid +konicars +trimbly +mopaule +nonlinangen +orkent +appyrollmo +feros +chier +probinunche +woormanovere +blythatcroc +appings +volormis +cabiliusnes +unintity +refrevicale +aumprecor +ticurous +batal +quire +aulum +misablerct +compleeter +emins +plonary +unbang +caphagase +matiopt +aricarty +exoding +prouvist +readia +matchappria +unkso +krucismaury +tasingly +gogroontinded +detrint +miscacreric +tanstar +fored +wincenidity +dankable +oodness +ortin +coryptotive +ellsmatot +sluslellic +nores +irwidevine +psyperin +cotmana +lasesanauttu +abentler +untidaeranted +responflotars +palforete +besbysiong +caperless +cloquiniss +warteng +nugan +orpos +fugus +greptive +undecum +overoidifidar +yadmoly +capperic +fligly +proseled +squade +grize +bolan +obultatic +roencul +equist +eviatinced +minin diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index e3b7a68f..6b757fd6 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -19,4 +19,33 @@ <item>FILE_FIRST</item> <item>INDEPENDENT</item> </string-array> + <string-array name="capitalization_type_entries"> + <item>0</item> + <item>1</item> + <item>2</item> + <item>3</item> + </string-array> + <string-array name="capitalization_type_values"> + <item>lowercase</item> + <item>UPPERCASE</item> + <item>TitleCase</item> + <item>Sentencecase</item> + </string-array> + <string-array name="xk_range_1_10"> + <item>1</item> + <item>2</item> + <item>3</item> + <item>4</item> + <item>5</item> + <item>6</item> + <item>7</item> + <item>8</item> + <item>9</item> + <item>10</item> + </string-array> + <string-array name="pwgen_provider"> + <item>classic</item> + <item>xkpasswd</item> + </string-array> + </resources> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ae8ec622..b244a877 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -190,6 +190,25 @@ <string name="pwgen_no_chars_error">No characters included</string> <string name="pwgen_length_too_short_error">Length too short for selected criteria</string> + <!-- XKPWD password generator --> + <string name="xkpwgen_title">Xkpasswd Generator</string> + <string name="xkpwgen_length">Total words</string> + <string name="xkpwgen_separator">Separator</string> + <string name="xkpwgen_custom_dict_imported">Custom wordlist: %1$s</string> + <string name="xkpwgen_separator_character">separator character</string> + <string name="xkpwgen_numbers">numbers:</string> + <string name="xkpwgen_symbols">symbols:</string> + <string name="xkpwgen_builder_error">Selected dictionary does not contain enough words of given length %1$d..%2$d</string> + + <!-- XKPWD prefs --> + <string name="xkpwgen_pref_gentype_title">Password generator type</string> + <string name="xkpwgen_pref_custom_dict_title">Custom wordlist</string> + <string name="xkpwgen_pref_custom_dict_summary_on">Using custom wordlist file</string> + <string name="xkpwgen_pref_custom_dict_summary_off">Using built-in wordlist</string> + <string name="xkpwgen_pref_custom_dict_picker_title">Custom worldlist file</string> + <string name="xkpwgen_pref_custom_dict_picker_summary">Tap to pick a custom wordlist file containing one word per line</string> + + <!-- ssh keygen fragment --> <string name="ssh_keygen_length">Length</string> <string name="ssh_keygen_passphrase">Passphrase</string> @@ -285,4 +304,6 @@ <string name="pref_search_on_start_hint">Open search bar when app is launched</string> <string name="pref_search_from_root">Always search from root</string> <string name="pref_search_from_root_hint">Search from root of store regardless of currently open directory</string> + <string name="password_generator_category_title">Password Generator</string> + </resources> diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index dfbb44a4..3d91cbfa 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> +<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> <androidx.preference.PreferenceCategory android:title="@string/pref_git_title"> <androidx.preference.Preference android:key="git_server_info" @@ -48,6 +49,27 @@ android:title="@string/pref_key_title" /> </androidx.preference.PreferenceCategory> + <androidx.preference.PreferenceCategory android:title="@string/password_generator_category_title"> + <androidx.preference.ListPreference + android:key="pref_key_pwgen_type" + android:title="@string/xkpwgen_pref_gentype_title" + android:defaultValue="classic" + android:entries="@array/pwgen_provider" + android:entryValues="@array/pwgen_provider" + app:useSimpleSummaryProvider="true" + android:persistent="true" /> + <androidx.preference.CheckBoxPreference + android:key="pref_key_is_custom_dict" + android:title="@string/xkpwgen_pref_custom_dict_title" + android:summaryOn="@string/xkpwgen_pref_custom_dict_summary_on" + android:summaryOff="@string/xkpwgen_pref_custom_dict_summary_off"/> + <androidx.preference.Preference + android:key="pref_key_custom_dict" + android:title="@string/xkpwgen_pref_custom_dict_picker_title" + android:summary="@string/xkpwgen_pref_custom_dict_picker_summary" + android:dependency="pref_key_is_custom_dict"/> + </androidx.preference.PreferenceCategory> + <androidx.preference.PreferenceCategory android:title="@string/pref_general_title"> <androidx.preference.EditTextPreference android:defaultValue="45" |