From f4e2b1e1621c451b06bd3129020d62ca8c35d9bc Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 08:25:25 +0100 Subject: [PATCH 001/404] scripts/generate_deb.sh.in: fix PACKAGE_SHAREDIR and PACKAGE_BINDIR (updated cmake variables) --- scripts/generate_deb.sh.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in index 80ac9c5..c39e8d4 100644 --- a/scripts/generate_deb.sh.in +++ b/scripts/generate_deb.sh.in @@ -6,8 +6,8 @@ PACKAGE_NAME="@PROJECT_NAME@" PACKAGE_VERSION="@PROJECT_VERSION@" PACKAGE_DESCRIPTION="Keygenerator for EOSIO" PACKAGE_PREFIX=$(echo "@CMAKE_INSTALL_PREFIX@" | sed -E 's~^/~~') -PACKAGE_BINDIR="@INSTALL_BIN_DIR@" -PACKAGE_SHAREDIR="@INSTALL_SHARE_DIR@" +PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" +PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" PACKAGE_TMPDIR="tmp/debroot" # Default to 1 if no release is set. From 77d63a5c36309b53c32d3ce245928e4416d29df3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 09:27:49 +0100 Subject: [PATCH 002/404] key_search: split key_search() function into key_search() and key_search_n() --- src/key_search.cpp | 33 ++++++++++++++++++++++----------- src/key_search.h | 5 ++++- src/main.cpp | 6 +++--- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 9286ddf..c18c015 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -25,22 +25,33 @@ static void key_result(const std::string& word, const struct ec_keypair* pair) { wif_print_key(pair); } -void key_search(strlist_t word_list, size_t n) { +bool key_search(struct ec_keypair* key, std::string& word, const strlist_t& word_list) { + + std::string pubstr; + + ec_generate_key(key); + pubstr = wif_pub_encode(key->pub); + strtolower(pubstr); + + for(auto const& w: word_list) { + if (pubstr.find(w) != std::string::npos) { + word = w; + return true; + } + } + return false; +} + +void key_search_n(const strlist_t& word_list, size_t n) { size_t count = 0; struct ec_keypair pair; while (count < n) { - std::string pubstr; - ec_generate_key(&pair); - pubstr = wif_pub_encode(pair.pub); - strtolower(pubstr); - - for(auto const& word: word_list) { - if (pubstr.find(word) != std::string::npos) { - key_result(word, &pair); - count++; - } + std::string word; + if (key_search(&pair, word, word_list)) { + key_result(word, &pair); + count++; } } } diff --git a/src/key_search.h b/src/key_search.h index 742195c..3f73e16 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -25,7 +25,10 @@ #define KEY_SEARCH_H #include "string.h" +#include "ec.h" -void key_search(strlist_t word_list, size_t n); +bool key_search(struct ec_keypair* out, std::string& word, const strlist_t& word_list); + +void key_search_n(const strlist_t& word_list, size_t n); #endif /* KEY_SEARCH_H */ diff --git a/src/main.cpp b/src/main.cpp index 84c78b7..9f334d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -65,11 +65,11 @@ static void thread_search(const strlist_t& words, int n) { // Launch threads. for(int i = 0; i < t.size(); i++) { - t[i] = std::thread(key_search, words, d); + t[i] = std::thread(key_search_n, words, d); } // Use main thread for 1 search - key_search(words, d + m); + key_search_n(words, d + m); // Wait for all threads to compelete. for(int i = 0; i < t.size(); i++) { @@ -77,7 +77,7 @@ static void thread_search(const strlist_t& words, int n) { } } #else -#define search_func key_search +#define search_func key_search_n #endif void cmd_search(int argc, char **argv) { From 936378c69f7df1d6fadd4266eb1abfb1520c0235 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:28:55 +0100 Subject: [PATCH 003/404] Adding key_search_helpers module. --- CMakeLists.txt | 1 + src/key_search_helpers.cpp | 11 +++++++++++ src/key_search_helpers.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 src/key_search_helpers.cpp create mode 100644 src/key_search_helpers.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 49bfad6..7bdf10b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,7 @@ set (PROGRAM_SOURCE src/checksum.cpp src/WIF.cpp src/key_search.cpp + src/key_search_helpers.cpp src/main.cpp ) diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp new file mode 100644 index 0000000..869e64f --- /dev/null +++ b/src/key_search_helpers.cpp @@ -0,0 +1,11 @@ + +#include +#include "WIF.h" +#include "key_search_helpers.h" + +void key_search_result(const std::string& word, const struct ec_keypair* pair) { + + std::cout << "----" << std::endl; + std::cout << "Found: " << word << std::endl; + wif_print_key(pair); +} diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h new file mode 100644 index 0000000..70ee1b4 --- /dev/null +++ b/src/key_search_helpers.h @@ -0,0 +1,32 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef KEY_SEARCH_HELPSER_H +#define KEY_SEARCH_HELPERS_H + +#include +#include "ec.h" + +void key_search_result(const std::string& word, const struct ec_keypair* pair); + +#endif /* KEY_SEARCH_HELPERS_H */ From 7e37f1ef8bf56eb50d9e65eaa594a2a853961ee4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:30:16 +0100 Subject: [PATCH 004/404] key_search: refactor thread code into key_search_nt() function and key_search_nt.cpp file. --- CMakeLists.txt | 1 + src/key_search.cpp | 24 ++------------ src/key_search.h | 4 +++ src/key_search_nt.cpp | 74 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 22 deletions(-) create mode 100644 src/key_search_nt.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 7bdf10b..0222841 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,7 @@ if (USE_THREADS) if (Threads_FOUND) # Add preprocessor flag add_definitions( "-DHAVE_THREADS=1" ) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_nt.cpp) endif (Threads_FOUND) endif (USE_THREADS) diff --git a/src/key_search.cpp b/src/key_search.cpp index c18c015..8dfe10e 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -1,30 +1,10 @@ -#ifdef HAVE_THREADS -#include -#endif /* HAVE_THREADS */ #include #include -#include "ec.h" #include "WIF.h" +#include "key_search_helpers.h" #include "key_search.h" -#ifdef HAVE_THREADS -// Guards result output. -std::mutex search_mutex; -#endif /* HAVE_THREADS */ - -static void key_result(const std::string& word, const struct ec_keypair* pair) { - -#ifdef HAVE_THREADS - // Guard output with mutex, so we don't get interrupted mid write. - const std::lock_guard lock(search_mutex); -#endif /* HAVE_THREADS */ - - std::cout << "----" << std::endl; - std::cout << "Found: " << word << std::endl; - wif_print_key(pair); -} - bool key_search(struct ec_keypair* key, std::string& word, const strlist_t& word_list) { std::string pubstr; @@ -50,7 +30,7 @@ void key_search_n(const strlist_t& word_list, size_t n) { while (count < n) { std::string word; if (key_search(&pair, word, word_list)) { - key_result(word, &pair); + key_search_result(word, &pair); count++; } } diff --git a/src/key_search.h b/src/key_search.h index 3f73e16..b147b92 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -31,4 +31,8 @@ bool key_search(struct ec_keypair* out, std::string& word, const strlist_t& word void key_search_n(const strlist_t& word_list, size_t n); +#ifdef HAVE_THREADS +void key_search_nt(const strlist_t& word_list, size_t n, size_t n_threads = 0); +#endif /* HAVE_THREADS */ + #endif /* KEY_SEARCH_H */ diff --git a/src/key_search_nt.cpp b/src/key_search_nt.cpp new file mode 100644 index 0000000..73738d7 --- /dev/null +++ b/src/key_search_nt.cpp @@ -0,0 +1,74 @@ + +#include +#include +#include +#include "key_search_helpers.h" +#include "key_search.h" + +// Max keys to search for, +unsigned int g_max; + +// How many keys we have found so far. +unsigned int g_count; + +// Mutex guard for g_count. +std::mutex g_count_mtx; + +// Thread process. +static void thr_proc(const strlist_t& word_list) { + + struct ec_keypair pair; + + while (g_count < g_max) { + std::string word; + + if (key_search(&pair, word, word_list)) { + + // Guard output with mutex, so we don't get + // interrupted mid write and can write to g_count safely. + const std::lock_guard lock(g_count_mtx); + + // It is possible g_count was updated by another thread + // after we checked it in the while loop. + // So while we have the lock, we need to check it again. + if (g_count >= g_max) { + return; + } + + // Update count and print result. + g_count++; + key_search_result(word, &pair); + } + } +} + +void key_search_nt(const strlist_t& word_list, size_t n, size_t n_threads) { + + std::vector t; + + // Not enough threads passed in by caller. + if (n_threads < 2) { + // Just use linear function. + key_search_n(word_list, n); + return; + } + + t.resize(n_threads - 1); + + // Setup global variables for the threads. + g_max = n; + g_count = 0; + + // Launch them. + for(int i = 0; i < t.size(); i++) { + t[i] = std::thread(thr_proc, word_list); + } + + // Use main thread for 1 search + thr_proc(word_list); + + // Wait for all threads to compelete. + for(int i = 0; i < t.size(); i++) { + t[i].join(); + } +} From 1c3d5033691c03d85791dad2ab031db6f363a1b8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:30:42 +0100 Subject: [PATCH 005/404] src/main.cpp: remove thread code and use key_search_nt() --- src/main.cpp | 84 ++++++++++++++-------------------------------------- 1 file changed, 23 insertions(+), 61 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9f334d6..d9f2ab3 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,6 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#ifdef HAVE_THREADS +#include +#endif /* HAVE_THREADS */ #include #include #include @@ -31,58 +34,27 @@ #include "key_search.h" #ifdef HAVE_THREADS -#include -#include - -// Minium number of threads. -#define MIN_THREADS 2 - -// Number of threads to use. -static int n_threads = std::thread::hardware_concurrency(); - -#define search_func thread_search -static void thread_search(const strlist_t& words, int n) { - - std::vector t; - int d, m; - - // We can use all threads - if (n >= n_threads) { - - // create n_threads - 1 as we use main process also. - t.resize(n_threads - 1); - // divide the number of results for all threads. - d = n / n_threads; - // Also calculate the reminder (will be assigned to the main thread) - m = n % n_threads; +#define n_thread_decl int n_threads = std::thread::hardware_concurrency() +#define n_thread_argv \ + if (argc > 2) { \ + n_threads = atoi(argv[2]); \ + if (n_threads < 2) { \ + n_threads = 2; \ + } \ } - // not enough results to use all threads. - else { - t.resize(n); - d = 1; - m = 0; - } - - // Launch threads. - for(int i = 0; i < t.size(); i++) { - t[i] = std::thread(key_search_n, words, d); - } - - // Use main thread for 1 search - key_search_n(words, d + m); - - // Wait for all threads to compelete. - for(int i = 0; i < t.size(); i++) { - t[i].join(); - } -} +#define n_thread_outp << ", Using: " << n_threads << " threads" +#define call_search key_search_nt(words, n, n_threads) #else -#define search_func key_search_n -#endif +#define n_thread_decl +#define n_thread_argv +#define n_thread_outp +#define call_search key_search_n(words, n) +#endif /* HAVE_THREADS */ void cmd_search(int argc, char **argv) { int n = 100; + n_thread_decl; std::string search(argv[0]); strlist_t words = strsplitwords(strtolower(search)); @@ -93,24 +65,14 @@ void cmd_search(int argc, char **argv) { } } -#ifdef HAVE_THREADS - if (argc > 2) { - n_threads = atoi(argv[2]); - // Make sure we never go under min threads. - if (n_threads < MIN_THREADS) { - n_threads = MIN_THREADS; - } - } -# endif /* HAVE_THREADS */ + n_thread_argv; std::cout << "Searching for " << n - << " keys containing: " << search -#ifdef HAVE_THREADS - << ", Using: " << n_threads << " threads" -#endif /* HAVE_THREADS */ - << std::endl; + << " keys containing: " << search + n_thread_outp + << std::endl; - search_func(words, n); + call_search; } void usage(const char *name) { From bae37212111c774ed805a61d8ea70ce525c138b5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:39:39 +0100 Subject: [PATCH 006/404] src/key_search_helpers.cpp: add key_contains_word() --- src/key_search_helpers.cpp | 14 ++++++++++++++ src/key_search_helpers.h | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 869e64f..82d625e 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -9,3 +9,17 @@ void key_search_result(const std::string& word, const struct ec_keypair* pair) { std::cout << "Found: " << word << std::endl; wif_print_key(pair); } + +bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, std::string& word) { + + std::string pubstr = wif_pub_encode(key->pub); + strtolower(pubstr); + + for(auto const& w: word_list) { + if (pubstr.find(w) != std::string::npos) { + word = w; + return true; + } + } + return false; +} diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 70ee1b4..66d4291 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -24,9 +24,13 @@ #ifndef KEY_SEARCH_HELPSER_H #define KEY_SEARCH_HELPERS_H -#include +#include "string.h" #include "ec.h" void key_search_result(const std::string& word, const struct ec_keypair* pair); +// Check if any word in appears in 's public key. +// returns true if a word was found (stored in ), false otherwise. +bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, std::string& word); + #endif /* KEY_SEARCH_HELPERS_H */ From a4dec2e39b48a3f9bfa5de9aa92369711718b788 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:40:28 +0100 Subject: [PATCH 007/404] src/key_search.h: remove key_search() it does not make sense and key_contains_word() can be used instead. --- src/key_search.cpp | 20 ++------------------ src/key_search.h | 2 -- src/key_search_nt.cpp | 3 ++- 3 files changed, 4 insertions(+), 21 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 8dfe10e..cc2faf6 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -5,23 +5,6 @@ #include "key_search_helpers.h" #include "key_search.h" -bool key_search(struct ec_keypair* key, std::string& word, const strlist_t& word_list) { - - std::string pubstr; - - ec_generate_key(key); - pubstr = wif_pub_encode(key->pub); - strtolower(pubstr); - - for(auto const& w: word_list) { - if (pubstr.find(w) != std::string::npos) { - word = w; - return true; - } - } - return false; -} - void key_search_n(const strlist_t& word_list, size_t n) { size_t count = 0; @@ -29,7 +12,8 @@ void key_search_n(const strlist_t& word_list, size_t n) { while (count < n) { std::string word; - if (key_search(&pair, word, word_list)) { + ec_generate_key(&pair); + if (key_contains_word(&pair, word_list, word)) { key_search_result(word, &pair); count++; } diff --git a/src/key_search.h b/src/key_search.h index b147b92..f6a77e2 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -27,8 +27,6 @@ #include "string.h" #include "ec.h" -bool key_search(struct ec_keypair* out, std::string& word, const strlist_t& word_list); - void key_search_n(const strlist_t& word_list, size_t n); #ifdef HAVE_THREADS diff --git a/src/key_search_nt.cpp b/src/key_search_nt.cpp index 73738d7..c1b1b23 100644 --- a/src/key_search_nt.cpp +++ b/src/key_search_nt.cpp @@ -22,7 +22,8 @@ static void thr_proc(const strlist_t& word_list) { while (g_count < g_max) { std::string word; - if (key_search(&pair, word, word_list)) { + ec_generate_key(&pair); + if (key_contains_word(&pair, word_list, word)) { // Guard output with mutex, so we don't get // interrupted mid write and can write to g_count safely. From 6dcc897fcfc8d6965983728f7f971ff1f794a18d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Jan 2020 10:56:32 +0100 Subject: [PATCH 008/404] key_search: refactor key_search_n() and key_search_nt() to proper names. --- CMakeLists.txt | 2 +- src/key_search.cpp | 2 +- src/key_search.h | 4 ++-- src/{key_search_nt.cpp => key_search_mt.cpp} | 10 +++++----- src/main.cpp | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) rename src/{key_search_nt.cpp => key_search_mt.cpp} (86%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0222841..863826a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,7 +39,7 @@ if (USE_THREADS) if (Threads_FOUND) # Add preprocessor flag add_definitions( "-DHAVE_THREADS=1" ) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_nt.cpp) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) endif (Threads_FOUND) endif (USE_THREADS) diff --git a/src/key_search.cpp b/src/key_search.cpp index cc2faf6..4201588 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -5,7 +5,7 @@ #include "key_search_helpers.h" #include "key_search.h" -void key_search_n(const strlist_t& word_list, size_t n) { +void key_search(const strlist_t& word_list, size_t n) { size_t count = 0; struct ec_keypair pair; diff --git a/src/key_search.h b/src/key_search.h index f6a77e2..9676053 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -27,10 +27,10 @@ #include "string.h" #include "ec.h" -void key_search_n(const strlist_t& word_list, size_t n); +void key_search(const strlist_t& word_list, size_t n); #ifdef HAVE_THREADS -void key_search_nt(const strlist_t& word_list, size_t n, size_t n_threads = 0); +void key_search_mt(const strlist_t& word_list, size_t n, size_t n_threads = 0); #endif /* HAVE_THREADS */ #endif /* KEY_SEARCH_H */ diff --git a/src/key_search_nt.cpp b/src/key_search_mt.cpp similarity index 86% rename from src/key_search_nt.cpp rename to src/key_search_mt.cpp index c1b1b23..bfb2584 100644 --- a/src/key_search_nt.cpp +++ b/src/key_search_mt.cpp @@ -15,7 +15,7 @@ unsigned int g_count; std::mutex g_count_mtx; // Thread process. -static void thr_proc(const strlist_t& word_list) { +static void _mt_search(const strlist_t& word_list) { struct ec_keypair pair; @@ -43,14 +43,14 @@ static void thr_proc(const strlist_t& word_list) { } } -void key_search_nt(const strlist_t& word_list, size_t n, size_t n_threads) { +void key_search_mt(const strlist_t& word_list, size_t n, size_t n_threads) { std::vector t; // Not enough threads passed in by caller. if (n_threads < 2) { // Just use linear function. - key_search_n(word_list, n); + key_search(word_list, n); return; } @@ -62,11 +62,11 @@ void key_search_nt(const strlist_t& word_list, size_t n, size_t n_threads) { // Launch them. for(int i = 0; i < t.size(); i++) { - t[i] = std::thread(thr_proc, word_list); + t[i] = std::thread(_mt_search, word_list); } // Use main thread for 1 search - thr_proc(word_list); + _mt_search(word_list); // Wait for all threads to compelete. for(int i = 0; i < t.size(); i++) { diff --git a/src/main.cpp b/src/main.cpp index d9f2ab3..dec65e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -43,12 +43,12 @@ } \ } #define n_thread_outp << ", Using: " << n_threads << " threads" -#define call_search key_search_nt(words, n, n_threads) +#define call_search key_search_mt(words, n, n_threads) #else #define n_thread_decl #define n_thread_argv #define n_thread_outp -#define call_search key_search_n(words, n) +#define call_search key_search(words, n) #endif /* HAVE_THREADS */ void cmd_search(int argc, char **argv) { From 1546d3c81cfd50a647605fb7618cad0b86e3a88b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 12 Jan 2020 08:44:35 +0100 Subject: [PATCH 009/404] Version 0.1.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 863826a..ead58d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.4) # Project name and version -project(eosio-keygen VERSION 0.1.2) +project(eosio-keygen VERSION 0.1.3) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) From 26ddf38ef7bdf3243f8cf9f9e1ac6bec09519bcf Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 12 Jan 2020 12:57:02 +0100 Subject: [PATCH 010/404] src/main.cpp: for search, change default count from 100 to 10. --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index dec65e9..d07478f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -78,7 +78,7 @@ void cmd_search(int argc, char **argv) { void usage(const char *name) { std::cout << name - << " [ --help|-h ] [ search [ ]" + << " [ --help|-h ] [ search [ ]" #ifdef HAVE_THREADS << " [ ]" #endif /* HAVE_THREADS */ @@ -106,7 +106,7 @@ int main(int argc, char **argv) { } if (!strcmp(argv[1], "search")) { - int n = 100; + int n = 10; std::string search; strlist_t words; From 58c83b27957619d9764cd54d4ad8836ed3ad2711 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 12 Jan 2020 12:57:51 +0100 Subject: [PATCH 011/404] scripts/generate_deb.sh.in: find distribution name/version from lsb-release to use in filename. --- scripts/generate_deb.sh.in | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in index c39e8d4..9624f7d 100644 --- a/scripts/generate_deb.sh.in +++ b/scripts/generate_deb.sh.in @@ -10,12 +10,23 @@ PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" PACKAGE_TMPDIR="tmp/debroot" +if [[ -f /etc/upstream-release/lsb-release ]]; then + source /etc/upstream-release/lsb-release +elif [[ -f /etc/lsb-release ]]; then + source /etc/lsb-release +else + echo "ERROR: could not determine debian release." + exit 1 +fi + +DISTRIB_ID=$(echo $DISTRIB_ID | tr '[:upper:]' '[:lower:]') + # Default to 1 if no release is set. if [[ -z $RELEASE ]]; then RELEASE="1" fi -PACKAGE_FULLNAME="${PACKAGE_NAME}_${PACKAGE_VERSION}-${RELEASE}_amd64" +PACKAGE_FULLNAME="${PACKAGE_NAME}_${PACKAGE_VERSION}-${RELEASE}-${DISTRIB_ID}-${DISTRIB_RELEASE}_amd64" rm -fr ${BASE_DIR}/${PACKAGE_TMPDIR} From 6ab7a9affaee85adc100d030c7e183526cdb7eb4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Jan 2020 09:51:34 +0100 Subject: [PATCH 012/404] src/main.cpp: minor bug-fix, should be or instead of and when checking "-h" or "--help" flags. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index d07478f..aa0e5f1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -100,7 +100,7 @@ int main(int argc, char **argv) { // search [ ] if (argc > 1) { - if (!strcmp(argv[1], "-h") && !strcmp(argv[1], "--help")) { + if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { usage(argv[0]); return 0; } From 410c8902753209204990afb5cde588d4f9143991 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Jan 2020 10:18:22 +0100 Subject: [PATCH 013/404] src/main.cpp: remove unused variables. --- src/main.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index aa0e5f1..a736f07 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -106,10 +106,6 @@ int main(int argc, char **argv) { } if (!strcmp(argv[1], "search")) { - int n = 10; - std::string search; - strlist_t words; - if (argc < 3) { std::cout << "You must specify a word list." << std::endl; usage(argv[0]); From 87647ba1cd1cc88a870af3bd6ad464549c5339bb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Jan 2020 10:20:22 +0100 Subject: [PATCH 014/404] string: adding base58_strip() function --- src/string.cpp | 12 ++++++++++++ src/string.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index 91eed0e..a8c4e99 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -66,3 +66,15 @@ std::string& rtrim(std::string& str) { std::string& trim(std::string& str) { return ltrim(rtrim(str)); } + +static bool _is_base58(char ch) { + static std::string alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; + return alphabet.find(ch) != std::string::npos; +} + +std::string& base58_strip(std::string &str) { + str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) + { return !_is_base58(ch); } + ), str.end()); + return str; +} diff --git a/src/string.h b/src/string.h index 9c8bf67..38c0440 100644 --- a/src/string.h +++ b/src/string.h @@ -39,4 +39,6 @@ std::string& rtrim(std::string& str); std::string& ltrim(std::string& str); std::string& trim(std::string& str); +std::string& base58_strip(std::string &str); + #endif /* STRING_H */ From e5c096c709957b343822a9c1b2b1b41accda7db6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Jan 2020 10:20:50 +0100 Subject: [PATCH 015/404] src/main.cpp: use base58_strip() when creating the word list. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index a736f07..ffa54da 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -56,7 +56,7 @@ void cmd_search(int argc, char **argv) { int n = 100; n_thread_decl; std::string search(argv[0]); - strlist_t words = strsplitwords(strtolower(search)); + strlist_t words = strsplitwords(strtolower(base58_strip(search))); if (argc > 1) { n = atoi(argv[1]); From 4f4444a62ada09d8af878cf13d34459cf68631e2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:03:14 +0100 Subject: [PATCH 016/404] string: add l33twords() function. --- src/string.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ src/string.h | 2 ++ 2 files changed, 51 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index a8c4e99..89ff7b9 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -78,3 +78,52 @@ std::string& base58_strip(std::string &str) { ), str.end()); return str; } + +static bool is_l33t(char ch, char& r) { + + // '1', '2', '3', '4', '5', '6', '7', '8', '9' + static char alphabet[9] = { 'l', 'z', 'e', 'a', 's', 'G', 't', 'B', 'g' }; + + for(int i = 0; i < sizeof(alphabet) / sizeof(char); i++) { + + if (ch == alphabet[i]) { + r = '1' + i; + return true; + } + } + return false; +} + +static void _l33t(strlist_t& list, const std::string& a, int pos) { + + // Find the next character to be replaced. + for(int i = pos; i < a.length(); i++) { + + char ch; + if (is_l33t(a[i], ch)) { + // create a new string and replace the character. + std::string b = a; + b[i] = ch; + + // Store the new string as the result. + list.push_back(b); + + // Perform the same algorithm for both strings + // at the next position. + _l33t(list, a, i + 1); + _l33t(list, b, i + 1); + break; + } + } +} + +strlist_t l33twords(const std::string& str) { + + strlist_t list; + + // Store the original string as the first in list. + list.push_back(str); + + _l33t(list, str, 0); + return list; +} diff --git a/src/string.h b/src/string.h index 38c0440..0358667 100644 --- a/src/string.h +++ b/src/string.h @@ -41,4 +41,6 @@ std::string& trim(std::string& str); std::string& base58_strip(std::string &str); +strlist_t l33twords(const std::string& str); + #endif /* STRING_H */ From 5bc3335d541f53570cf59d3ebc2fc69089f8405b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:30:49 +0100 Subject: [PATCH 017/404] string: adding strjoin() function --- src/string.cpp | 15 +++++++++++++++ src/string.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index 89ff7b9..d5af6f8 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -46,6 +46,21 @@ strlist_t strsplit(const std::string& str, const std::string& delim) { return r; } +std::string strjoin(const strlist_t& list, const std::string& delim) { + + std::string out; + + for(const std::string& item : list) { + out += item + delim; + } + + if (out.length() > 0) { + out.erase(out.end() - delim.length()); + } + + return out; +} + std::string& strtolower(std::string& str) { std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); }); return str; diff --git a/src/string.h b/src/string.h index 0358667..98c1c8a 100644 --- a/src/string.h +++ b/src/string.h @@ -33,6 +33,8 @@ strlist_t strsplitwords(const std::string& str, const std::string& delim = ","); strlist_t strsplit(const std::string& str, const std::string& delim); +std::string strjoin(const strlist_t& list, const std::string& delim); + std::string& strtolower(std::string& str); std::string& rtrim(std::string& str); From 237fc4e4afc0893519a571f305edd107e0181ea9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:32:35 +0100 Subject: [PATCH 018/404] src/main.cpp: call strjoin(words) instead of printing "search" directly. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index ffa54da..87144ec 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -68,7 +68,7 @@ void cmd_search(int argc, char **argv) { n_thread_argv; std::cout << "Searching for " << n - << " keys containing: " << search + << " keys containing: " << strjoin(words, ",") n_thread_outp << std::endl; From baba04991f7e08fbd3c0b1314c2e52ef205a93a4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:56:40 +0100 Subject: [PATCH 019/404] string: adding base58_strip() for strlist_t --- src/string.cpp | 6 ++++++ src/string.h | 1 + 2 files changed, 7 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index a8c4e99..91b0960 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -78,3 +78,9 @@ std::string& base58_strip(std::string &str) { ), str.end()); return str; } + +strlist_t& base58_strip(strlist_t& list) { + + std::transform(list.begin(), list.end(), list.begin(), [](std::string& str){ return base58_strip(str); }); + return list; +} diff --git a/src/string.h b/src/string.h index 38c0440..e364fed 100644 --- a/src/string.h +++ b/src/string.h @@ -40,5 +40,6 @@ std::string& ltrim(std::string& str); std::string& trim(std::string& str); std::string& base58_strip(std::string &str); +strlist_t& base58_strip(strlist_t& list); #endif /* STRING_H */ From 58406e0c246f4ac9abc378fd9838bd78b1c34dc0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:58:43 +0100 Subject: [PATCH 020/404] src/main.cpp: must do base58_strip after we have split into list. otherwise we will strip the delimiter "," --- src/main.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index ffa54da..e5fcd02 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -56,7 +56,10 @@ void cmd_search(int argc, char **argv) { int n = 100; n_thread_decl; std::string search(argv[0]); - strlist_t words = strsplitwords(strtolower(base58_strip(search))); + strlist_t words = strsplitwords(strtolower(search)); + + // Strip words from non-base58. + base58_strip(words); if (argc > 1) { n = atoi(argv[1]); From f6e4603cbe2c8a3bf5ca5fde78597a9d8ead6ff5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 12:33:11 +0100 Subject: [PATCH 021/404] src/main.cpp: implement "--l33t" flag. --- src/main.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 87144ec..3c67bbc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -33,6 +33,9 @@ #include "ec.h" #include "key_search.h" +// Command line options. +bool option_l33t = false; + #ifdef HAVE_THREADS #define n_thread_decl int n_threads = std::thread::hardware_concurrency() #define n_thread_argv \ @@ -56,7 +59,18 @@ void cmd_search(int argc, char **argv) { int n = 100; n_thread_decl; std::string search(argv[0]); - strlist_t words = strsplitwords(strtolower(base58_strip(search))); + strlist_t words; + + if (option_l33t) { + strlist_t tmp = strsplitwords(search); + for(int i = 0; i < tmp.size(); i++) { + strlist_t list = l33twords(base58_strip(tmp[i])); + words.reserve(words.size() + list.size()); + words.insert(words.end(), list.begin(), list.end()); + } + } else { + words = strsplitwords(strtolower(base58_strip(search))); + } if (argc > 1) { n = atoi(argv[1]); @@ -105,6 +119,12 @@ int main(int argc, char **argv) { return 0; } + if (!strcmp(argv[1], "--l33t")) { + option_l33t = true; + argc--; + argv = &argv[1]; + } + if (!strcmp(argv[1], "search")) { if (argc < 3) { std::cout << "You must specify a word list." << std::endl; From 418949f26f33ed51ca9e855549ee8420895ba946 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 16:55:11 +0100 Subject: [PATCH 022/404] src/string.cpp: in l33twords() "l" is a bit special. so we set "l" to "1" --- src/string.cpp | 6 +++++- src/string.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/string.cpp b/src/string.cpp index a90388b..eb8bb9f 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -138,10 +138,14 @@ static void _l33t(strlist_t& list, const std::string& a, int pos) { } } -strlist_t l33twords(const std::string& str) { +strlist_t l33twords(std::string str) { strlist_t list; + // "l" is abit special and are not included in base58 so we set it to 1. + // All other characters in "l33t" are valid. + std::transform(str.begin(), str.end(), str.begin(), [](char c){ return c == 'l' ? '1' : c; }); + // Store the original string as the first in list. list.push_back(str); diff --git a/src/string.h b/src/string.h index d006579..b3f6300 100644 --- a/src/string.h +++ b/src/string.h @@ -44,6 +44,6 @@ std::string& trim(std::string& str); std::string& base58_strip(std::string &str); strlist_t& base58_strip(strlist_t& list); -strlist_t l33twords(const std::string& str); +strlist_t l33twords(std::string str); #endif /* STRING_H */ From 35bb2302dd41f3ccfa11a6b1827cd339dbf74c00 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 17:02:53 +0100 Subject: [PATCH 023/404] key_search: refactor into a KeySearch class. --- src/key_search.cpp | 42 ++++++++++++++++++++++++++++++++++++++++-- src/key_search.h | 39 +++++++++++++++++++++++++++++++++++++-- src/key_search_mt.cpp | 22 ++++++++++------------ src/main.cpp | 22 +++++++++------------- 4 files changed, 96 insertions(+), 29 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 4201588..408caa0 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -5,7 +5,32 @@ #include "key_search_helpers.h" #include "key_search.h" -void key_search(const strlist_t& word_list, size_t n) { +void KeySearch::addWord(const std::string& str) +{ + std::string tmp = str; + base58_strip(tmp); + strtolower(tmp); + m_words.push_back(tmp); +} + +void KeySearch::addList(const strlist_t& list) +{ + for(const std::string& item : list) { + addWord(item); + } +} + +const strlist_t& KeySearch::getList() +{ + return m_words; +} + +void KeySearch::clear() +{ + m_words.clear(); +} + +void KeySearch::_search_linear(size_t n) { size_t count = 0; struct ec_keypair pair; @@ -13,9 +38,22 @@ void key_search(const strlist_t& word_list, size_t n) { while (count < n) { std::string word; ec_generate_key(&pair); - if (key_contains_word(&pair, word_list, word)) { + if (key_contains_word(&pair, m_words, word)) { key_search_result(word, &pair); count++; } } } + +void KeySearch::find(size_t num_results) { + +#ifdef HAVE_THREADS + // Only do multithread if number of threads makes sense. + if (m_threads >= 2) { + _search_mt(num_results); + return; + } +#endif /* HAVE_THREADS */ + + _search_linear(num_results); +} diff --git a/src/key_search.h b/src/key_search.h index 9676053..3a92639 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -27,10 +27,45 @@ #include "string.h" #include "ec.h" -void key_search(const strlist_t& word_list, size_t n); +class KeySearch +{ +public : + // Add a word to search for. + void addWord(const std::string& str); + + // Add a list of words to search for. + void addList(const strlist_t& list); + + // get the list of words to search for. + const strlist_t& getList(); + + // Clears the search list. + void clear(); #ifdef HAVE_THREADS -void key_search_mt(const strlist_t& word_list, size_t n, size_t n_threads = 0); + // Set the number of threads to use while searching. + void setThreadCount(size_t num); #endif /* HAVE_THREADS */ + // Perform a search. + void find(size_t num_results); + +protected : + +#ifdef HAVE_THREADS + void _search_mt(size_t n); +#endif /* HAVE_THREADS */ + + void _search_linear(size_t n); + +protected : + // List of words to search for. + strlist_t m_words; + +#ifdef HAVE_THREADS + // Number of threads to use. + size_t m_threads; +#endif /* HAVE_THREADS */ +}; + #endif /* KEY_SEARCH_H */ diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index bfb2584..2c30fc0 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -15,7 +15,7 @@ unsigned int g_count; std::mutex g_count_mtx; // Thread process. -static void _mt_search(const strlist_t& word_list) { +static void _thr_proc(const strlist_t& word_list) { struct ec_keypair pair; @@ -43,18 +43,16 @@ static void _mt_search(const strlist_t& word_list) { } } -void key_search_mt(const strlist_t& word_list, size_t n, size_t n_threads) { +void KeySearch::setThreadCount(size_t num) +{ + m_threads = num; +} +void KeySearch::_search_mt(size_t n) +{ std::vector t; - // Not enough threads passed in by caller. - if (n_threads < 2) { - // Just use linear function. - key_search(word_list, n); - return; - } - - t.resize(n_threads - 1); + t.resize(m_threads - 1); // Setup global variables for the threads. g_max = n; @@ -62,11 +60,11 @@ void key_search_mt(const strlist_t& word_list, size_t n, size_t n_threads) { // Launch them. for(int i = 0; i < t.size(); i++) { - t[i] = std::thread(_mt_search, word_list); + t[i] = std::thread(_thr_proc, m_words); } // Use main thread for 1 search - _mt_search(word_list); + _thr_proc(m_words); // Wait for all threads to compelete. for(int i = 0; i < t.size(); i++) { diff --git a/src/main.cpp b/src/main.cpp index e6ea752..432549c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -44,33 +44,29 @@ bool option_l33t = false; if (n_threads < 2) { \ n_threads = 2; \ } \ - } + } \ + ks.setThreadCount(n_threads); #define n_thread_outp << ", Using: " << n_threads << " threads" -#define call_search key_search_mt(words, n, n_threads) #else #define n_thread_decl #define n_thread_argv #define n_thread_outp -#define call_search key_search(words, n) #endif /* HAVE_THREADS */ void cmd_search(int argc, char **argv) { int n = 100; n_thread_decl; - std::string search(argv[0]); - strlist_t words; + std::string input(argv[0]); + KeySearch ks; if (option_l33t) { - strlist_t tmp = strsplitwords(search); + strlist_t tmp = strsplitwords(input); for(int i = 0; i < tmp.size(); i++) { - strlist_t list = l33twords(base58_strip(tmp[i])); - words.reserve(words.size() + list.size()); - words.insert(words.end(), list.begin(), list.end()); + ks.addList(l33twords(tmp[i])); } } else { - words = strsplitwords(strtolower(search)); - base58_strip(words); + ks.addList(strsplitwords(input)); } if (argc > 1) { @@ -83,11 +79,11 @@ void cmd_search(int argc, char **argv) { n_thread_argv; std::cout << "Searching for " << n - << " keys containing: " << strjoin(words, ",") + << " keys containing: " << strjoin(ks.getList(), ",") n_thread_outp << std::endl; - call_search; + ks.find(n); } void usage(const char *name) { From 5b4a45fa594d2807f6c607e4e36ea98475d27da5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 17:13:59 +0100 Subject: [PATCH 024/404] Removing unused includes. --- src/key_search.cpp | 3 +-- src/key_search.h | 1 - src/key_search_mt.cpp | 1 + src/main.cpp | 2 -- 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 408caa0..e55b808 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -1,7 +1,6 @@ -#include #include -#include "WIF.h" +#include "ec.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/key_search.h b/src/key_search.h index 3a92639..6a6e5b3 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -25,7 +25,6 @@ #define KEY_SEARCH_H #include "string.h" -#include "ec.h" class KeySearch { diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 2c30fc0..3854529 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -2,6 +2,7 @@ #include #include #include +#include "ec.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/main.cpp b/src/main.cpp index 432549c..c530c92 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,11 +24,9 @@ #ifdef HAVE_THREADS #include #endif /* HAVE_THREADS */ -#include #include #include #include "string.h" -#include "base58.h" #include "WIF.h" #include "ec.h" #include "key_search.h" From 5b8d26a4e39b7881e343a5d7e331ebbc2782da6d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 17:24:11 +0100 Subject: [PATCH 025/404] README.md: Adding github actions badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index dc0e71f..121812a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ +![](https://github.com/eosswedenorg/eosio-keygen/workflows/CI/badge.svg) + # EOSIO Keygen This program generates public and private keypair for [EOS](https://eos.io/) From 725ba47e345e289471add8feb14146535c8f78a2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 17:30:25 +0100 Subject: [PATCH 026/404] CI: Build with and without thread support. --- .github/workflows/ci.yml | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 931f196..a7d28ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,10 +12,14 @@ jobs: name: compile - Ubuntu runs-on: ubuntu-latest + strategy: + matrix: + build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] + steps: - uses: actions/checkout@v1 - name: Configure - run: mkdir build && cd build && cmake .. + run: mkdir build && cd build && cmake ${{matrix.build-opts}} .. - name: Build run: cmake --build build @@ -23,18 +27,27 @@ jobs: name: compile - MacOS runs-on: macos-latest + strategy: + matrix: + build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] + steps: - uses: actions/checkout@v1 - name: Dependancies run: brew install openssl - name: Configure - run: mkdir build && cd build && cmake -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1 .. + run: mkdir build && cd build && cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1 .. - name: Build run: cmake --build build win: name: compile - windows runs-on: windows-latest + + strategy: + matrix: + build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] + steps: - uses: actions/checkout@v1 - name: Dependancies @@ -43,6 +56,6 @@ jobs: Invoke-WebRequest -Uri https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -OutFile openssl.zip Expand-Archive openssl.zip - name: Configure - run: cd build; cmake -D OPENSSL_ROOT_DIR="$pwd\openssl\openssl-1.1\x64" .. + run: cd build; cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR="$pwd\openssl\openssl-1.1\x64" .. - name: Build run: cmake --build build From 8c8e586b2cd1ea528979ea056871786d969eb53d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 17:42:55 +0100 Subject: [PATCH 027/404] CI: combine mac,unix,win jobs into one and use matrix + control steps via "if" and $RUNNER_OS variable. --- .github/workflows/ci.yml | 70 +++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7d28ce..191ed13 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,54 +8,44 @@ on: - '!master' jobs: - unix: - name: compile - Ubuntu - runs-on: ubuntu-latest - + compile: strategy: matrix: + os: [ ubuntu-latest, macos-latest, windows-latest ] build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] + name: ${{matrix.os}} (${{matrix.build-opts}}) + runs-on: ${{matrix.os}} + steps: - uses: actions/checkout@v1 - - name: Configure - run: mkdir build && cd build && cmake ${{matrix.build-opts}} .. - - name: Build - run: cmake --build build - mac: - name: compile - MacOS - runs-on: macos-latest - - strategy: - matrix: - build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] - - steps: - - uses: actions/checkout@v1 - - name: Dependancies - run: brew install openssl - - name: Configure - run: mkdir build && cd build && cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1 .. - - name: Build - run: cmake --build build - - win: - name: compile - windows - runs-on: windows-latest - - strategy: - matrix: - build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] - - steps: - - uses: actions/checkout@v1 - name: Dependancies + shell: bash run: | - mkdir build; cd build - Invoke-WebRequest -Uri https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -OutFile openssl.zip - Expand-Archive openssl.zip - - name: Configure - run: cd build; cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR="$pwd\openssl\openssl-1.1\x64" .. + mkdir -p build + if [ "$RUNNER_OS" == "macOS" ]; then + brew install openssl + elif [ "$RUNNER_OS" == "Windows" ]; then + cd build + curl https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -O + 7z x openssl-1.1.1e-dev.zip + fi + + - name: Configure (nix) + if: runner.os != 'Windows' + shell: bash + run: | + if [ "$RUNNER_OS" == "macOS" ]; then + SSL_OPTS="-D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1" + fi + cd build && cmake ${SSL_OPTS} ${{matrix.build-opts}} .. + + - name: Configure (win) + if: runner.os == 'Windows' + # cmake in windows bash can't find openssl. so we use windows cli. + run: cd build; cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR="$pwd\openssl-1.1\x64" .. + - name: Build + shell: bash run: cmake --build build From 2db52b9406748428c359d9a5da4673eb2610ba55 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Jan 2020 19:39:36 +0100 Subject: [PATCH 028/404] src/main.cpp: in cmd_search() n should default to 10 --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index c530c92..8b47070 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -53,7 +53,7 @@ bool option_l33t = false; void cmd_search(int argc, char **argv) { - int n = 100; + int n = 10; n_thread_decl; std::string input(argv[0]); KeySearch ks; From f6ba8a73a2686a5a3e2c320d46c55b2aa903fe07 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 08:05:53 +0100 Subject: [PATCH 029/404] src/key_search_helpers.cpp: in key_contains_word() skip first 3 chars of pubkey ("EOS") --- src/key_search_helpers.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 82d625e..7b6cf2c 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -12,7 +12,8 @@ void key_search_result(const std::string& word, const struct ec_keypair* pair) { bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, std::string& word) { - std::string pubstr = wif_pub_encode(key->pub); + // skip first 3 chars, as those are always "EOS" + std::string pubstr = wif_pub_encode(key->pub).substr(3); strtolower(pubstr); for(auto const& w: word_list) { From 92f2c4ffccf28c1b6c12f1d27e535a6670d07a1b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 10:08:09 +0100 Subject: [PATCH 030/404] Adding console text color/attribute support (ansi) --- CMakeLists.txt | 1 + src/console.h | 83 ++++++++++++++++++++++++++++++++++++++++++++ src/console_ansi.cpp | 49 ++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 src/console.h create mode 100644 src/console_ansi.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index ead58d1..13250b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,6 +16,7 @@ include(GNUInstallDirs) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE + src/console_ansi.cpp src/string.cpp src/ec.cpp src/base58.cpp diff --git a/src/console.h b/src/console.h new file mode 100644 index 0000000..c81a5b7 --- /dev/null +++ b/src/console.h @@ -0,0 +1,83 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef CONSOLE_H +#define CONSOLE_H + +#include + +namespace console { + + // enum for all supported colors. + enum Color { + default_fg, + black, + white, + red, + green, + blue, + yellow, + magenta, + cyan, + + // Light colors. + light_grey, + light_red, + light_green, + light_blue, + light_yellow, + light_magenta, + light_cyan, + + // Dark colors + dark_grey + }; + + enum Attribute { + normal, + bold, + italic + }; + + // Resets all colors/attributes + std::ostream& reset(std::ostream& os); + + // Foreground color + // Defined as a class with overloaded "<<" operator so you can write: + // std::cout << fg(red) << "Text"; + class fg + { + public: + fg(Color color, Attribute attribute = normal) + : _color(color), _attr(attribute) {} + + friend std::ostream& operator<<(std::ostream& os, const fg& obj); + + protected : + Color _color; + Attribute _attr; + }; + +} // namespace console + +#endif /* CONSOLE_H */ diff --git a/src/console_ansi.cpp b/src/console_ansi.cpp new file mode 100644 index 0000000..ed37b0a --- /dev/null +++ b/src/console_ansi.cpp @@ -0,0 +1,49 @@ + +#include +#include "console.h" + +namespace console { + +std::ostream& reset(std::ostream& os) { + return os << "\033[0m"; +} + +// Foreground +std::ostream& operator<<(std::ostream& os, const fg& obj) { + + int attr; + int code; + + switch(obj._color) { + case black : code = 30; break; + case red : code = 31; break; + case green : code = 32; break; + case yellow : code = 33; break; + case blue : code = 34; break; + case magenta : code = 35; break; + case cyan : code = 36; break; + case light_grey : code = 37; break; + case dark_grey : code = 90; break; + case light_red : code = 91; break; + case light_green : code = 92; break; + case light_yellow : code = 93; break; + case light_blue : code = 94; break; + case light_magenta : code = 95; break; + case light_cyan : code = 96; break; + case white : code = 97; break; + case default_fg : default : + code = 39; + } + + switch(obj._attr) { + + case bold : attr = 1; break; + case italic : attr = 2; break; + case normal : default : + attr = 0; + } + + return os << "\033[" << attr << ";" << code << "m"; +} + +} // namespace console From 8c8d88c631d9b6ae5604fd182f4e63796512d84c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 11:07:50 +0100 Subject: [PATCH 031/404] Adding src/console_win32.cpp --- CMakeLists.txt | 9 +++++- src/console_win32.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 src/console_win32.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 13250b2..dc8d912 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ project(eosio-keygen VERSION 0.1.3) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) +option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) @@ -16,7 +17,6 @@ include(GNUInstallDirs) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE - src/console_ansi.cpp src/string.cpp src/ec.cpp src/base58.cpp @@ -27,6 +27,13 @@ set (PROGRAM_SOURCE src/main.cpp ) +if (WIN32 AND NOT FORCE_ANSI) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) +else() + # *nix should have ansi support. + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) +endif() + # Configure the compiler options set( CMAKE_CXX_STANDARD 11 ) set( CMAKE_CXX_STANDARD_REQUIRED ON ) diff --git a/src/console_win32.cpp b/src/console_win32.cpp new file mode 100644 index 0000000..d250dfa --- /dev/null +++ b/src/console_win32.cpp @@ -0,0 +1,68 @@ + +#include +#include +#include "console.h" + +// WinAPI colors +#define FG_BLACK 0 +#define FG_BLUE FOREGROUND_BLUE +#define FG_GREEN FOREGROUND_GREEN +#define FG_RED FOREGROUND_RED +#define FG_CYAN (FOREGROUND_GREEN | FOREGROUND_BLUE) +#define FG_YELLOW (FOREGROUND_RED | FOREGROUND_GREEN) +#define FG_MAGENTA (FOREGROUND_RED | FOREGROUND_BLUE) +#define FG_DARKGREY FOREGROUND_INTENSITY +#define FG_GREY (FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) +#define FG_LIGHTBLUE (FOREGROUND_INTENSITY | FOREGROUND_BLUE) +#define FG_LIGHTGREEN (FOREGROUND_INTENSITY | FOREGROUND_GREEN) +#define FG_LIGHTCYAN (FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE) +#define FG_LIGHTRED (FOREGROUND_INTENSITY | FOREGROUND_RED) +#define FG_LIGHTMAGENTA (FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE) +#define FG_LIGHTYELLOW (FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN) +#define FG_WHITE (FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE) +#define FG_DEFAULT FG_GREY + +namespace console { + +std::ostream& reset(std::ostream& os) { + + ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FG_DEFAULT); + + return os; +} + +// Foreground +std::ostream& operator<<(std::ostream& os, const fg& obj) { + + int code; + + switch(obj._color) { + case black : code = FG_BLACK; break; + case red : code = FG_RED; break; + case green : code = FG_GREEN; break; + case blue : code = FG_BLUE; break; + case yellow : code = FG_YELLOW; break; + case magenta : code = FG_MAGENTA; break; + case cyan : code = FG_CYAN; break; + case light_grey : code = FG_GREY; break; + case light_red : code = FG_LIGHTRED; break; + case light_green : code = FG_LIGHTGREEN; break; + case light_yellow : code = FG_LIGHTYELLOW; break; + case light_blue : code = FG_LIGHTBLUE; break; + case light_magenta : code = FG_LIGHTMAGENTA; break; + case light_cyan : code = FG_LIGHTCYAN; break; + case dark_grey : code = FG_DARKGREY; break; + case white : code = FG_WHITE; break; + case default_fg : default : + code = FG_DEFAULT; + } + + ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), code); + + // WinAPI does not support text attributes in the console. + // so we ignore those. + + return os; +} + +} // namespace console From 075144c72b337c2981ce504b1c61260c0829dde2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 14:04:54 +0100 Subject: [PATCH 032/404] search: define a key_result struct and store position and length in public key for the word found. --- src/key_search.cpp | 6 +++--- src/key_search_helpers.cpp | 17 ++++++++++++----- src/key_search_helpers.h | 11 ++++++++--- src/key_search_mt.cpp | 6 +++--- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index e55b808..ddff617 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -35,10 +35,10 @@ void KeySearch::_search_linear(size_t n) { struct ec_keypair pair; while (count < n) { - std::string word; + struct key_result res; ec_generate_key(&pair); - if (key_contains_word(&pair, m_words, word)) { - key_search_result(word, &pair); + if (key_contains_word(&pair, m_words, &res)) { + key_search_result(&pair, &res); count++; } } diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 7b6cf2c..827a88e 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -3,22 +3,29 @@ #include "WIF.h" #include "key_search_helpers.h" -void key_search_result(const std::string& word, const struct ec_keypair* pair) { +void key_search_result(const struct ec_keypair* key, const struct key_result* result) { + + std::string pub = wif_pub_encode(key->pub); + std::string word = pub.substr(result->pos, result->len); std::cout << "----" << std::endl; std::cout << "Found: " << word << std::endl; - wif_print_key(pair); + + std::cout << "Public: " << pub << std::endl; + std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; } -bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, std::string& word) { +bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result) { // skip first 3 chars, as those are always "EOS" std::string pubstr = wif_pub_encode(key->pub).substr(3); strtolower(pubstr); for(auto const& w: word_list) { - if (pubstr.find(w) != std::string::npos) { - word = w; + size_t p = pubstr.find(w); + if (p != std::string::npos) { + result->pos = p + 3; + result->len = w.length(); return true; } } diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 66d4291..66e7783 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -27,10 +27,15 @@ #include "string.h" #include "ec.h" -void key_search_result(const std::string& word, const struct ec_keypair* pair); +struct key_result { + size_t pos; // position where the word was found. + size_t len; // the length of the word. +}; + +void key_search_result(const struct ec_keypair* key, const struct key_result* result); // Check if any word in appears in 's public key. -// returns true if a word was found (stored in ), false otherwise. -bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, std::string& word); +// returns true if a word was found (stored in ), false otherwise. +bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result); #endif /* KEY_SEARCH_HELPERS_H */ diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 3854529..881ed53 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -21,10 +21,10 @@ static void _thr_proc(const strlist_t& word_list) { struct ec_keypair pair; while (g_count < g_max) { - std::string word; + struct key_result res; ec_generate_key(&pair); - if (key_contains_word(&pair, word_list, word)) { + if (key_contains_word(&pair, word_list, &res)) { // Guard output with mutex, so we don't get // interrupted mid write and can write to g_count safely. @@ -39,7 +39,7 @@ static void _thr_proc(const strlist_t& word_list) { // Update count and print result. g_count++; - key_search_result(word, &pair); + key_search_result(&pair, &res); } } } From 97b834d11e68e90dc44899c22ca9bc480ef59ab7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 14:23:25 +0100 Subject: [PATCH 033/404] src/key_search_helpers.cpp: in key_search_result() use console colors to highlight the found word. --- src/key_search_helpers.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 827a88e..007d979 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -1,6 +1,7 @@ #include #include "WIF.h" +#include "console.h" #include "key_search_helpers.h" void key_search_result(const struct ec_keypair* key, const struct key_result* result) { @@ -11,7 +12,12 @@ void key_search_result(const struct ec_keypair* key, const struct key_result* re std::cout << "----" << std::endl; std::cout << "Found: " << word << std::endl; - std::cout << "Public: " << pub << std::endl; + std::cout << "Public: " + << pub.substr(0, result->pos) + << console::fg(console::red, console::bold) << word << console::reset + << pub.substr(result->pos + result->len) + << std::endl; + std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; } From 161b7e80e169287cdf07d6509c76fc34a4e1f8cf Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 14:27:17 +0100 Subject: [PATCH 034/404] src/WIF.cpp: in wif_print_key() print public before private. --- src/WIF.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WIF.cpp b/src/WIF.cpp index a021cab..618de62 100644 --- a/src/WIF.cpp +++ b/src/WIF.cpp @@ -54,6 +54,6 @@ std::string wif_pub_encode(ec_pubkey_t pub) { void wif_print_key(const struct ec_keypair *key) { - std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; - std::cout << "Public: " << wif_pub_encode(key->pub) << std::endl; + std::cout << "Public: " << wif_pub_encode(key->pub) << std::endl; + std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; } From 297ae2b98fff4195a4041f624e1738f36d34d218 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 15:01:09 +0100 Subject: [PATCH 035/404] src/main.cpp: document -h,--help in usage() --- src/main.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8b47070..4e581fa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -87,7 +87,7 @@ void cmd_search(int argc, char **argv) { void usage(const char *name) { std::cout << name - << " [ --help|-h ] [ search [ ]" + << " [ -h | --help | search [ ]" #ifdef HAVE_THREADS << " [ ]" #endif /* HAVE_THREADS */ @@ -95,6 +95,13 @@ void usage(const char *name) { std::cout << " - Output one EOSIO key pair if no arguments are given" << std::endl << std::endl; + // Options + std::cout + << " Options:" << std::endl + << " -h, --help Shows this help text." + << std::endl + << std::endl; + std::cout << " search: " << std::endl << " performs a search, finding public keys " << "containing one or more words from (separated with ',')." @@ -106,7 +113,6 @@ void usage(const char *name) { int main(int argc, char **argv) { - // search [ ] if (argc > 1) { if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { From 368d2ad72651be723f0e87ff28a199f0671450bc Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 16:28:45 +0100 Subject: [PATCH 036/404] src/main.cpp: cleaning up command-line arguments. --- src/main.cpp | 79 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 33 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 4e581fa..b968380 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -35,26 +35,12 @@ bool option_l33t = false; #ifdef HAVE_THREADS -#define n_thread_decl int n_threads = std::thread::hardware_concurrency() -#define n_thread_argv \ - if (argc > 2) { \ - n_threads = atoi(argv[2]); \ - if (n_threads < 2) { \ - n_threads = 2; \ - } \ - } \ - ks.setThreadCount(n_threads); -#define n_thread_outp << ", Using: " << n_threads << " threads" -#else -#define n_thread_decl -#define n_thread_argv -#define n_thread_outp +int option_num_threads = std::thread::hardware_concurrency(); #endif /* HAVE_THREADS */ void cmd_search(int argc, char **argv) { int n = 10; - n_thread_decl; std::string input(argv[0]); KeySearch ks; @@ -74,11 +60,15 @@ void cmd_search(int argc, char **argv) { } } - n_thread_argv; +#ifdef HAVE_THREADS + ks.setThreadCount(option_num_threads); +#endif /* HAVE_THREADS */ std::cout << "Searching for " << n << " keys containing: " << strjoin(ks.getList(), ",") - n_thread_outp +#ifdef HAVE_THREADS + << ", Using: " << option_num_threads << " threads" +#endif /* HAVE_THREADS */ << std::endl; ks.find(n); @@ -87,11 +77,12 @@ void cmd_search(int argc, char **argv) { void usage(const char *name) { std::cout << name - << " [ -h | --help | search [ ]" + << " [ -h | --help | search [ --l33t" #ifdef HAVE_THREADS - << " [ ]" + << " | --threads=" #endif /* HAVE_THREADS */ - " ]" << std::endl << std::endl; + << " ] [ ] ]" + << std::endl << std::endl; std::cout << " - Output one EOSIO key pair if no arguments are given" << std::endl << std::endl; @@ -103,37 +94,59 @@ void usage(const char *name) { << std::endl; std::cout << " search: " << std::endl - << " performs a search, finding public keys " - << "containing one or more words from (separated with ',')." + << " performs a search, finding public keys containing" << std::endl + << " one or more words from (separated with ',')." + << std::endl << std::endl + << " --l33t: Takes each word in and find all l33tspeak" << std::endl + << " combinations of that word and uses the new list for the search." #ifdef HAVE_THREADS - << std::endl << " specify the number of parallel threads to use." + << std::endl << std::endl + << " --threads=: Use of parallel threads for searching." << std::endl + << " Default is what the operating system recomend." #endif /* HAVE_THREADS */ << std::endl; } int main(int argc, char **argv) { - if (argc > 1) { + // current position in argv + // when parsing command line. + int p = 0; - if (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help")) { + if (argc > 1) { + p = 1; + + if (!strcmp(argv[p], "-h") || !strcmp(argv[p], "--help")) { usage(argv[0]); return 0; } - if (!strcmp(argv[1], "--l33t")) { - option_l33t = true; - argc--; - argv = &argv[1]; - } + if (!strcmp(argv[p], "search")) { + p++; - if (!strcmp(argv[1], "search")) { - if (argc < 3) { + if (p < argc && !strcmp(argv[p], "--l33t")) { + option_l33t = true; + p++; + } + +#ifdef HAVE_THREADS + if (p < argc && !memcmp(argv[p], "--threads=", 10)) { + option_num_threads = atoi(argv[p] + 10); + if (option_num_threads < 2) { + option_num_threads = 2; + } + p++; + } +#endif /* HAVE_THREADS */ + + if (argc <= p) { std::cout << "You must specify a word list." << std::endl; usage(argv[0]); return 1; } - cmd_search(argc - 2, &argv[2]); + // Pass the rest of argv, argc + cmd_search(argc - p, &argv[p]); } else { std::cout << "Unrecogniced command: " << argv[1] << std::endl; usage(argv[0]); From c416bbdad253b83620754b0aa2ce0a62b86f23fe Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 16:36:59 +0100 Subject: [PATCH 037/404] src/main.cpp: consume "--threads" flag even if not supported (so we dont break scripts) --- src/main.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b968380..d5f43b0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -129,15 +129,20 @@ int main(int argc, char **argv) { p++; } -#ifdef HAVE_THREADS if (p < argc && !memcmp(argv[p], "--threads=", 10)) { +#ifdef HAVE_THREADS option_num_threads = atoi(argv[p] + 10); if (option_num_threads < 2) { option_num_threads = 2; } +#else + // Even if we dont have threads. we consume the flag. + // otherwise we might break scripts. Print a nice message instead. + std::cerr << "NOTICE: eosio-keygen is not compiled with" + << " thread support. this option is ignored." << std::endl; +#endif /* HAVE_THREADS */ p++; } -#endif /* HAVE_THREADS */ if (argc <= p) { std::cout << "You must specify a word list." << std::endl; From f3bf4bdab1f3ba4ed3c5eb4e701a97398e1f9ca1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 16:48:50 +0100 Subject: [PATCH 038/404] src/main.cpp: use std::cerr for error messages. --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d5f43b0..27b76f8 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -145,7 +145,7 @@ int main(int argc, char **argv) { } if (argc <= p) { - std::cout << "You must specify a word list." << std::endl; + std::cerr << "You must specify a word list." << std::endl; usage(argv[0]); return 1; } @@ -153,7 +153,7 @@ int main(int argc, char **argv) { // Pass the rest of argv, argc cmd_search(argc - p, &argv[p]); } else { - std::cout << "Unrecogniced command: " << argv[1] << std::endl; + std::cerr << "Unrecogniced command: " << argv[1] << std::endl; usage(argv[0]); return 1; } From 152015d9595f2644c6f790b534aa60bda5a8fcfa Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 17:47:45 +0100 Subject: [PATCH 039/404] src/main.cpp: make sure we can parse "--l33t" and "--threads" in any order. --- src/main.cpp | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 27b76f8..a084951 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -122,27 +122,34 @@ int main(int argc, char **argv) { } if (!strcmp(argv[p], "search")) { + bool parse_opt; p++; - if (p < argc && !strcmp(argv[p], "--l33t")) { - option_l33t = true; - p++; - } - if (p < argc && !memcmp(argv[p], "--threads=", 10)) { -#ifdef HAVE_THREADS - option_num_threads = atoi(argv[p] + 10); - if (option_num_threads < 2) { - option_num_threads = 2; + do { + parse_opt = false; + if (p < argc && !strcmp(argv[p], "--l33t")) { + option_l33t = true; + parse_opt = true; + p++; } + + if (p < argc && !memcmp(argv[p], "--threads=", 10)) { +#ifdef HAVE_THREADS + option_num_threads = atoi(argv[p] + 10); + if (option_num_threads < 2) { + option_num_threads = 2; + } #else - // Even if we dont have threads. we consume the flag. - // otherwise we might break scripts. Print a nice message instead. - std::cerr << "NOTICE: eosio-keygen is not compiled with" - << " thread support. this option is ignored." << std::endl; + // Even if we dont have threads. we consume the flag. + // otherwise we might break scripts. Print a nice message instead. + std::cerr << "NOTICE: eosio-keygen is not compiled with" + << " thread support. this option is ignored." << std::endl; #endif /* HAVE_THREADS */ - p++; - } + p++; + parse_opt = true; + } + } while(parse_opt && p < argc); if (argc <= p) { std::cerr << "You must specify a word list." << std::endl; From 368f93a26ca5388a20fb6fbd34359d992fb62c28 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Jan 2020 17:51:38 +0100 Subject: [PATCH 040/404] src/main.cpp: in main() reduce indentation by handling no argument case first and return. --- src/main.cpp | 106 +++++++++++++++++++++++++-------------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index a084951..a68eed7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -111,63 +111,63 @@ int main(int argc, char **argv) { // current position in argv // when parsing command line. - int p = 0; + int p = 1; - if (argc > 1) { - p = 1; - - if (!strcmp(argv[p], "-h") || !strcmp(argv[p], "--help")) { - usage(argv[0]); - return 0; - } - - if (!strcmp(argv[p], "search")) { - bool parse_opt; - p++; - - - do { - parse_opt = false; - if (p < argc && !strcmp(argv[p], "--l33t")) { - option_l33t = true; - parse_opt = true; - p++; - } - - if (p < argc && !memcmp(argv[p], "--threads=", 10)) { -#ifdef HAVE_THREADS - option_num_threads = atoi(argv[p] + 10); - if (option_num_threads < 2) { - option_num_threads = 2; - } -#else - // Even if we dont have threads. we consume the flag. - // otherwise we might break scripts. Print a nice message instead. - std::cerr << "NOTICE: eosio-keygen is not compiled with" - << " thread support. this option is ignored." << std::endl; -#endif /* HAVE_THREADS */ - p++; - parse_opt = true; - } - } while(parse_opt && p < argc); - - if (argc <= p) { - std::cerr << "You must specify a word list." << std::endl; - usage(argv[0]); - return 1; - } - - // Pass the rest of argv, argc - cmd_search(argc - p, &argv[p]); - } else { - std::cerr << "Unrecogniced command: " << argv[1] << std::endl; - usage(argv[0]); - return 1; - } - } else { + // No args, just print a key. + if (argc <= 1) { struct ec_keypair pair; ec_generate_key(&pair); wif_print_key(&pair); + return 0; + } + + if (!strcmp(argv[p], "-h") || !strcmp(argv[p], "--help")) { + usage(argv[0]); + return 0; + } + + if (!strcmp(argv[p], "search")) { + bool parse_opt; + p++; + + do { + parse_opt = false; + + if (p < argc && !strcmp(argv[p], "--l33t")) { + option_l33t = true; + parse_opt = true; + p++; + } + + if (p < argc && !memcmp(argv[p], "--threads=", 10)) { +#ifdef HAVE_THREADS + option_num_threads = atoi(argv[p] + 10); + if (option_num_threads < 2) { + option_num_threads = 2; + } +#else + // Even if we dont have threads. we consume the flag. + // otherwise we might break scripts. Print a nice message instead. + std::cerr << "NOTICE: eosio-keygen is not compiled with" + << " thread support. this option is ignored." << std::endl; +#endif /* HAVE_THREADS */ + p++; + parse_opt = true; + } + } while(parse_opt && p < argc); + + if (argc <= p) { + std::cerr << "You must specify a word list." << std::endl; + usage(argv[0]); + return 1; + } + + // Pass the rest of argv, argc + cmd_search(argc - p, &argv[p]); + } else { + std::cerr << "Unrecogniced command: " << argv[1] << std::endl; + usage(argv[0]); + return 1; } return 0; From 1142b8d5e4431308596edbca2c1c016be5df17ed Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 17 Jan 2020 06:50:15 +0100 Subject: [PATCH 041/404] Version 0.1.4 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc8d912..019a78c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.4) # Project name and version -project(eosio-keygen VERSION 0.1.3) +project(eosio-keygen VERSION 0.1.4) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) From 693c7aa06951e586cac98242c2bc22927c808097 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Jan 2020 12:31:13 +0100 Subject: [PATCH 042/404] build.sh: handle build type option to cmake. --- build.sh | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 1e1deaf..7bdc6a9 100755 --- a/build.sh +++ b/build.sh @@ -2,6 +2,26 @@ mkdir build 2> /dev/null pushd build > /dev/null -cmake .. $@ + +function usage() { + echo "Usage: ${0##*/} [ -h ] [ -t Debug|Release|RelWithDebInfo|MinSizeRel ]" + exit 1 +} + +ARGS="" +while getopts ":h?t:" opt; do + + case "${opt}" in + t) ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${OPTARG}" ;; + h) usage ;; + :) echo "Error: -${OPTARG} requires a value" + exit 1 + ;; + esac +done +shift $((OPTIND-1)) + +cmake $ARGS $@ .. make -B + popd > /dev/null From 826ad10ce9650bb3ad5521ee241fb0744d09b70a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Jan 2020 12:54:07 +0100 Subject: [PATCH 043/404] build.sh: switch to "getopt" command and handle "--disable-threads" and "--force-ansi" long options. --- build.sh | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/build.sh b/build.sh index 7bdc6a9..476eaac 100755 --- a/build.sh +++ b/build.sh @@ -4,24 +4,41 @@ mkdir build 2> /dev/null pushd build > /dev/null function usage() { - echo "Usage: ${0##*/} [ -h ] [ -t Debug|Release|RelWithDebInfo|MinSizeRel ]" + echo "Usage: ${0##*/} [ -h ] [ -t Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]" exit 1 } -ARGS="" -while getopts ":h?t:" opt; do +options=$(getopt -n "${0##*/}" -o ht: --long disable-threads --long force-ansi -- "$@") - case "${opt}" in - t) ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${OPTARG}" ;; - h) usage ;; - :) echo "Error: -${OPTARG} requires a value" - exit 1 +[ $? -eq 0 ] || usage + +eval set -- "$options" + +ARGS="" +while true; do + + case "${1}" in + -t) + shift + [[ ! "$1" =~ ^(Debug|Release|RelWithDebInfo|MinSizeRel)$ ]] && { + echo "Incorrect type '$1' provided" + usage + } + ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}" + ;; + --disable-threads) + ARGS="${ARGS} -DUSE_THREADS=OFF" ;; + --force-ansi) + ARGS="${ARGS} -DFORCE_ANSI=ON" ;; + -h) usage ;; + --) shift + break ;; esac + shift done -shift $((OPTIND-1)) -cmake $ARGS $@ .. +echo cmake $ARGS .. make -B popd > /dev/null From 98a3d8b1d1256b0da46b3c24149185905764f543 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 08:32:52 +0100 Subject: [PATCH 044/404] Adding benchmark module --- CMakeLists.txt | 1 + src/benchmark.cpp | 50 +++++++++++++++++++++++++++++++++++++++++++++++ src/benchmark.h | 36 ++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+) create mode 100644 src/benchmark.cpp create mode 100644 src/benchmark.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 019a78c..fef4a69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ set (PROGRAM_SOURCE src/WIF.cpp src/key_search.cpp src/key_search_helpers.cpp + src/benchmark.cpp src/main.cpp ) diff --git a/src/benchmark.cpp b/src/benchmark.cpp new file mode 100644 index 0000000..b3f12da --- /dev/null +++ b/src/benchmark.cpp @@ -0,0 +1,50 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include "ec.h" +#include "benchmark.h" + +using std::chrono::steady_clock; +using std::chrono::duration; +using std::chrono::time_point; + +void benchmark(size_t num_keys, struct benchmark_result* res) { + + time_point start; + + if (num_keys < 1) { + res->sec = res->kps = 0; + return; + } + + start = steady_clock::now(); + + for(size_t i = 0; i < num_keys; i++) { + struct ec_keypair k; + ec_generate_key(&k); + } + + res->sec = duration(steady_clock::now() - start).count(); + res->kps = num_keys / res->sec; +} diff --git a/src/benchmark.h b/src/benchmark.h new file mode 100644 index 0000000..f001808 --- /dev/null +++ b/src/benchmark.h @@ -0,0 +1,36 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef BENCHMARK_H +#define BENCHMARK_H + +#include + +struct benchmark_result { + float sec; // elapsed seconds. + float kps; // keys per second. +}; + +void benchmark(size_t num_keys, struct benchmark_result* res); + +#endif /* BENCHMARK_H */ From db75317d3174e405589ef90bb221556075547b96 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 09:12:33 +0100 Subject: [PATCH 045/404] src/main.cpp: implement benchmark command. --- src/main.cpp | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index a68eed7..a9a46c7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,6 +30,7 @@ #include "WIF.h" #include "ec.h" #include "key_search.h" +#include "benchmark.h" // Command line options. bool option_l33t = false; @@ -81,7 +82,9 @@ void usage(const char *name) { #ifdef HAVE_THREADS << " | --threads=" #endif /* HAVE_THREADS */ - << " ] [ ] ]" + << " ] [ ]" + << " | benchmark [ ]" + << " ]" << std::endl << std::endl; std::cout << " - Output one EOSIO key pair if no arguments are given" << std::endl << std::endl; @@ -105,6 +108,23 @@ void usage(const char *name) { << " Default is what the operating system recomend." #endif /* HAVE_THREADS */ << std::endl; + + std::cout << " Benchmark: " << std::endl + << " performs a benchmark test, generating keys and measuring the time." << std::endl + << std::endl; +} + +void cmd_benchmark(size_t num_keys) { + + struct benchmark_result res; + + std::cout << "Benchmark: Generating " + << num_keys << " keys" << std::endl; + + benchmark(num_keys, &res); + + std::cout << "Result: Took " << res.sec << " seconds, " + << res.kps << " keys per second." << std::endl; } int main(int argc, char **argv) { @@ -164,6 +184,19 @@ int main(int argc, char **argv) { // Pass the rest of argv, argc cmd_search(argc - p, &argv[p]); + } + // Benchmark + else if (!strcmp(argv[p], "benchmark")) { + int num_keys = 1000; + + if (++p < argc) { + num_keys = atoi(argv[p]); + if (num_keys < 1) { + num_keys = 1; + } + } + + cmd_benchmark(num_keys); } else { std::cerr << "Unrecogniced command: " << argv[1] << std::endl; usage(argv[0]); From 2b20f8aaf4dddc20d223d7e0a9add1eca13f3c6f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 10:13:55 +0100 Subject: [PATCH 046/404] src/string.cpp: in strjoin() skip empty items. --- src/string.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index eb8bb9f..8793fa1 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -51,6 +51,9 @@ std::string strjoin(const strlist_t& list, const std::string& delim) { std::string out; for(const std::string& item : list) { + if (item.length() < 1) { + continue; + } out += item + delim; } From 2d1696a0e4db432bb2af4144ca3dc64b8d182ad8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 10:50:37 +0100 Subject: [PATCH 047/404] Merge branch 'compiler-warnings' into develop --- CMakeLists.txt | 4 ++++ src/base58.cpp | 5 +++-- src/checksum.cpp | 4 ++-- src/checksum.h | 5 +++-- src/key_search_mt.cpp | 9 +++++---- src/main.cpp | 2 +- src/string.cpp | 11 ++++++----- 7 files changed, 24 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 019a78c..8a7f659 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,6 +39,10 @@ set( CMAKE_CXX_STANDARD 11 ) set( CMAKE_CXX_STANDARD_REQUIRED ON ) set( CMAKE_CXX_EXTENSIONS OFF ) +if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wconversion -Wno-sign-conversion -Wextra" ) +endif() + # Libraries find_package(OpenSSL 1.1 REQUIRED) diff --git a/src/base58.cpp b/src/base58.cpp index 38304c7..cd3eccd 100644 --- a/src/base58.cpp +++ b/src/base58.cpp @@ -24,6 +24,7 @@ * * Based on code from https://github.com/bitcoin/bitcoin/blob/f1e2f2a85962c1664e4e55471061af0eaa798d40/src/base58.cpp */ +#include #include #include "base58.h" @@ -39,7 +40,7 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend zeroes++; } // Allocate enough space in big-endian base58 representation. - int size = (pend - pbegin) * 138 / 100 + 1; // log(256) / log(58), rounded up. + std::size_t size = (pend - pbegin) * 138 / 100 + 1; // log(256) / log(58), rounded up. std::vector b58(size); // Process the bytes. while (pbegin != pend) { @@ -48,7 +49,7 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend // Apply "b58 = b58 * 256 + ch". for (std::vector::reverse_iterator it = b58.rbegin(); (carry != 0 || i < length) && (it != b58.rend()); it++, i++) { carry += 256 * (*it); - *it = carry % 58; + *it = static_cast(carry % 58); carry /= 58; } diff --git a/src/checksum.cpp b/src/checksum.cpp index 3c29dcb..53c7e33 100644 --- a/src/checksum.cpp +++ b/src/checksum.cpp @@ -26,13 +26,13 @@ #include #include "checksum.h" -inline void sha256d(const unsigned char *data, unsigned int len, unsigned char *out) { +inline void sha256d(const unsigned char *data, std::size_t len, unsigned char *out) { SHA256(data, len, out); SHA256(out, 32, out); } #define checksum_impl(name, func) \ - checksum_t checksum_##name(const unsigned char *data, unsigned int len) { \ + checksum_t checksum_##name(const unsigned char *data, std::size_t len) { \ \ checksum_t crc; \ unsigned char hash[32]; \ diff --git a/src/checksum.h b/src/checksum.h index 44bfef8..57f50e8 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -24,12 +24,13 @@ #ifndef CHECKSUM_H #define CHECKSUM_H +#include #include typedef std::array checksum_t; -checksum_t checksum_sha256d(const unsigned char *data, unsigned int len); +checksum_t checksum_sha256d(const unsigned char *data, std::size_t len); -checksum_t checksum_ripemd160(const unsigned char *data, unsigned int len); +checksum_t checksum_ripemd160(const unsigned char *data, std::size_t len); #endif /* CHECKSUM_H */ diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 881ed53..e3d22cc 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -1,4 +1,5 @@ +#include #include #include #include @@ -7,10 +8,10 @@ #include "key_search.h" // Max keys to search for, -unsigned int g_max; +std::size_t g_max; // How many keys we have found so far. -unsigned int g_count; +std::size_t g_count; // Mutex guard for g_count. std::mutex g_count_mtx; @@ -60,7 +61,7 @@ void KeySearch::_search_mt(size_t n) g_count = 0; // Launch them. - for(int i = 0; i < t.size(); i++) { + for(std::size_t i = 0; i < t.size(); i++) { t[i] = std::thread(_thr_proc, m_words); } @@ -68,7 +69,7 @@ void KeySearch::_search_mt(size_t n) _thr_proc(m_words); // Wait for all threads to compelete. - for(int i = 0; i < t.size(); i++) { + for(std::size_t i = 0; i < t.size(); i++) { t[i].join(); } } diff --git a/src/main.cpp b/src/main.cpp index a68eed7..fa4d050 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,7 +46,7 @@ void cmd_search(int argc, char **argv) { if (option_l33t) { strlist_t tmp = strsplitwords(input); - for(int i = 0; i < tmp.size(); i++) { + for(std::size_t i = 0; i < tmp.size(); i++) { ks.addList(l33twords(tmp[i])); } } else { diff --git a/src/string.cpp b/src/string.cpp index 8793fa1..bee3330 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -21,8 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include +#include #include +#include #include "string.h" strlist_t strsplitwords(const std::string& str, const std::string& delim) { @@ -108,20 +109,20 @@ static bool is_l33t(char ch, char& r) { // '1', '2', '3', '4', '5', '6', '7', '8', '9' static char alphabet[9] = { 'l', 'z', 'e', 'a', 's', 'G', 't', 'B', 'g' }; - for(int i = 0; i < sizeof(alphabet) / sizeof(char); i++) { + for(std::size_t i = 0; i < sizeof(alphabet) / sizeof(char); i++) { if (ch == alphabet[i]) { - r = '1' + i; + r = static_cast('1' + i); return true; } } return false; } -static void _l33t(strlist_t& list, const std::string& a, int pos) { +static void _l33t(strlist_t& list, const std::string& a, std::size_t pos) { // Find the next character to be replaced. - for(int i = pos; i < a.length(); i++) { + for(std::size_t i = pos; i < a.length(); i++) { char ch; if (is_l33t(a[i], ch)) { From 288c7e96a2e23d6f0baa3640d9ab3ff44dc9cf05 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 11:07:08 +0100 Subject: [PATCH 048/404] src/benchmark.cpp: fixing compiler conversion error by explicitly casting num_keys to float. --- src/benchmark.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/benchmark.cpp b/src/benchmark.cpp index b3f12da..6fb6c66 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -46,5 +46,5 @@ void benchmark(size_t num_keys, struct benchmark_result* res) { } res->sec = duration(steady_clock::now() - start).count(); - res->kps = num_keys / res->sec; + res->kps = static_cast(num_keys) / res->sec; } From 56c78cbcc2a0ac6cbbca9c0fbe86b1fd796b39e8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 11:39:32 +0100 Subject: [PATCH 049/404] Adding license headers to some files that did not have it. --- src/console_ansi.cpp | 24 +++++++++++++++++++++++- src/console_win32.cpp | 24 +++++++++++++++++++++++- src/key_search.cpp | 24 +++++++++++++++++++++++- src/key_search_helpers.cpp | 24 +++++++++++++++++++++++- src/key_search_mt.cpp | 24 +++++++++++++++++++++++- 5 files changed, 115 insertions(+), 5 deletions(-) diff --git a/src/console_ansi.cpp b/src/console_ansi.cpp index ed37b0a..3aab56b 100644 --- a/src/console_ansi.cpp +++ b/src/console_ansi.cpp @@ -1,4 +1,26 @@ - +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #include #include "console.h" diff --git a/src/console_win32.cpp b/src/console_win32.cpp index d250dfa..5f7e87d 100644 --- a/src/console_win32.cpp +++ b/src/console_win32.cpp @@ -1,4 +1,26 @@ - +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #include #include #include "console.h" diff --git a/src/key_search.cpp b/src/key_search.cpp index ddff617..285962b 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -1,4 +1,26 @@ - +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #include #include "ec.h" #include "key_search_helpers.h" diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 007d979..32a7a21 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -1,4 +1,26 @@ - +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #include #include "WIF.h" #include "console.h" diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index e3d22cc..3d7dc5e 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -1,4 +1,26 @@ - +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ #include #include #include From 890e9841e8b1afb4025f3c8f8df5e8c2fc1a3ff6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 29 Jan 2020 11:48:18 +0100 Subject: [PATCH 050/404] Version 0.1.5 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 88af2fd..a5edd61 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.4) # Project name and version -project(eosio-keygen VERSION 0.1.4) +project(eosio-keygen VERSION 0.1.5) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) From 637ccd529f7f5ba1bced51b6412344bfb48baf61 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 07:32:59 +0100 Subject: [PATCH 051/404] Adding docs/eosio-keygen.1.in --- CMakeLists.txt | 3 ++ docs/eosio-keygen.1.in | 120 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 docs/eosio-keygen.1.in diff --git a/CMakeLists.txt b/CMakeLists.txt index a5edd61..ecdf4f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,6 +100,9 @@ endif (WIN32) install(FILES README.md LICENSE LICENSE.bitcoin DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}) +configure_file( docs/eosio-keygen.1.in + ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) + # -------------------------------- # Debian package script # -------------------------------- diff --git a/docs/eosio-keygen.1.in b/docs/eosio-keygen.1.in new file mode 100644 index 0000000..960ef1c --- /dev/null +++ b/docs/eosio-keygen.1.in @@ -0,0 +1,120 @@ +.TH @PROJECT_NAME@ 1 "January, 2020" "@PROJECT_NAME@ @PROJECT_VERSION@" + +.SH NAME +@PROJECT_NAME@ - Generate public and private keypair for +.UR https://eos.io/ +EOS +.UE . + +.SH SYNOPSIS + +.SY @PROJECT_NAME@ +.OP \-h|--help +.YS + +.SY @PROJECT_NAME@ +search +.OP \--l33t +.OP \--threads= +.B word_list +.OP count +.YS + +.SY @PROJECT_NAME@ +benchmark +.OP num_keys +.YS + +.SH DESCRIPTION +.P +Output one EOSIO key pair if no arguments are given +.P +Options and subcommands are as follows: + +.TP 15 +.B -h, --help +Shows this help text. +.TP 15 +.B search +performs a search, finding +.I +public keys containing one or more words from +.I +(separated with ','). +.PP +.RS 16 +Search specific options: +.RS 2 +.TP 20 +.B --l33t +Takes each word in +.I +and find all l33tspeak combinations of that word and uses the new list for the search. +.TP 20 +.B --threads= +Use +.I +of parallel threads for searching. Default is what the operating system recomends. +.TP 20 +.B count +Number of keys to search for (default is 10) +.RE 1 +.TP 15 +.B benchmark +performs a benchmark test, generating +.I +keys and measuring the time. +.PP +.RS 16 +Benchmark specific options: +.RS 2 +.TP 15 +.B num_keys +Number of keys to search for (default is 10) +.RE 1 + + +.SH SECURITY NOTICE + +Keys are generated by OpenSSL\'s +.B EC_KEY_generate_key +function. The program will +never expose your keys to anything but the computers memory and output of the\ +program. You are free to inspect the source code and compile yourself to verify. +.P +However, use this at your own risk. we cannot guarantee that the keys are\ +cryptographically secure as this depends on OpenSSL's implementation (alto it is\ +widely used and should be safe) +.P +Please read the +.I LICENSE +file. +.P +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +.br +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +.br +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +.br +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +.br +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +.br +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +.SH BUGS + +Report bugs to +.UR https://github.com/eosswedenorg/eosio-keygen/issues +Github +.UE . Thank you. + +.SH AUTHOR + +.MT henrik@eossweden.org +Henrik Hautakoski +.ME + +.UR https://eossweden.org +EOS Sw/eden +.UE From 3b916086d0a0056f576022c2c12b2ad445270c86 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 07:33:45 +0100 Subject: [PATCH 052/404] CMake: Install man page. --- CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index ecdf4f0..9c10548 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,6 +103,9 @@ install(FILES README.md LICENSE LICENSE.bitcoin configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) +install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 + DESTINATION ${CMAKE_INSTALL_MANDIR}) + # -------------------------------- # Debian package script # -------------------------------- From 3e7da262164fdbf5e84d679fe24d6cd4a01e8625 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 07:30:59 +0100 Subject: [PATCH 053/404] scripts/generate_deb.sh.in: include man page in package. --- scripts/generate_deb.sh.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in index 9624f7d..ce69e41 100644 --- a/scripts/generate_deb.sh.in +++ b/scripts/generate_deb.sh.in @@ -8,6 +8,7 @@ PACKAGE_DESCRIPTION="Keygenerator for EOSIO" PACKAGE_PREFIX=$(echo "@CMAKE_INSTALL_PREFIX@" | sed -E 's~^/~~') PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" +PACKAGE_MANDIR="@CMAKE_INSTALL_MANDIR@" PACKAGE_TMPDIR="tmp/debroot" if [[ -f /etc/upstream-release/lsb-release ]]; then @@ -46,8 +47,10 @@ cat ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR} mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} +mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} cp ${BASE_DIR}/${PACKAGE_NAME} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR}/${PACKAGE_NAME} +cp -r ${BASE_DIR}/man1 ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} for file in README.md LICENSE LICENSE.bitcoin ; do cp ${BASE_DIR}/../${file} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} From dbb6b64950153e58d0a3c892f969446ffd718c98 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 07:36:17 +0100 Subject: [PATCH 054/404] build.sh: fix a bug where "cmake" command is echoed instead of executed. --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 476eaac..98380e8 100755 --- a/build.sh +++ b/build.sh @@ -38,7 +38,7 @@ while true; do shift done -echo cmake $ARGS .. +cmake $ARGS .. make -B popd > /dev/null From 59b358d256e1594d02923e95f081445d6eff2f6e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:03:05 +0100 Subject: [PATCH 055/404] src/types.h: cleanup EC_PUBKEY_SIZE abit. --- src/types.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/types.h b/src/types.h index eba5182..806b61f 100644 --- a/src/types.h +++ b/src/types.h @@ -25,6 +25,12 @@ #define TYPES_H #define EC_PRIVKEY_SIZE 32 -#define EC_PUBKEY_SIZE 33 /* Compressed: 32 bytes + 1 prefix */ + +/* + * Compressed format! + * z||x, where byte z specifies which (of the 2) solutions of the quadratic equation y is. + * Each cordinate is 32 bytes. + */ +#define EC_PUBKEY_SIZE (32 + 1) #endif /* TYPES_H */ From cc4d91579bd2959d11aa9141b20ba40c81a30c86 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:03:39 +0100 Subject: [PATCH 056/404] src/checksum.h: Use a define for checksum length instead of magic number. --- src/checksum.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/checksum.h b/src/checksum.h index 57f50e8..1ac08a2 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -27,7 +27,9 @@ #include #include -typedef std::array checksum_t; +#define CHECKSUM_SIZE 4 + +typedef std::array checksum_t; checksum_t checksum_sha256d(const unsigned char *data, std::size_t len); From 07a85e732f8781fdc1235970aa52888f45c7e216 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:04:19 +0100 Subject: [PATCH 057/404] src/WIF.cpp: Use constants intead of magic number. --- src/WIF.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/WIF.cpp b/src/WIF.cpp index 618de62..5577d8e 100644 --- a/src/WIF.cpp +++ b/src/WIF.cpp @@ -27,16 +27,19 @@ #include "checksum.h" #include "WIF.h" +#define PRIV_KEY_PREFIX 0x80 /* 0x80 for "Bitcoin mainnet". Always used by EOS. */ + std::string wif_priv_encode(ec_privkey_t priv) { checksum_t check; - unsigned char buf[37] = { 0x80 }; + // 1 byte extra for prefix. + unsigned char buf[1 + EC_PRIVKEY_SIZE + CHECKSUM_SIZE] = { PRIV_KEY_PREFIX }; memcpy(buf + 1, priv.data(), priv.size()); // Checksum - check = checksum_sha256d(buf, 33); - memcpy(buf + 33, check.data(), check.size()); + check = checksum_sha256d(buf, 1 + EC_PRIVKEY_SIZE); + memcpy(buf + 1 + EC_PRIVKEY_SIZE, check.data(), check.size()); return base58_encode(buf, buf + sizeof(buf)); } @@ -44,10 +47,10 @@ std::string wif_priv_encode(ec_privkey_t priv) { std::string wif_pub_encode(ec_pubkey_t pub) { checksum_t check = checksum_ripemd160(pub.data(), pub.size()); - unsigned char buf[37]; + unsigned char buf[EC_PUBKEY_SIZE + CHECKSUM_SIZE]; memcpy(buf, pub.data(), pub.size()); - memcpy(buf + 33, check.data(), check.size()); + memcpy(buf + EC_PUBKEY_SIZE, check.data(), check.size()); return "EOS" + base58_encode(buf, buf + sizeof(buf)); } From 0bda9e3f2a3b924a1de880b69aaf041f7e095e41 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:08:43 +0100 Subject: [PATCH 058/404] src/ec.h: document ec_generate_key() --- src/ec.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ec.h b/src/ec.h index b29a8a4..a660ee8 100644 --- a/src/ec.h +++ b/src/ec.h @@ -35,6 +35,10 @@ struct ec_keypair { ec_pubkey_t pub; }; +/** + * Generates a keypair using the secp256k1 curve. + * public key is in compressed format. + */ int ec_generate_key(struct ec_keypair *pair); #endif /* EC_H */ From 8007a39c354df390852bc1922574bad5057de9b9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:16:41 +0100 Subject: [PATCH 059/404] src/ec.h: move typedefs and struct to types.h --- src/ec.h | 9 --------- src/types.h | 11 +++++++++++ 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/ec.h b/src/ec.h index a660ee8..29269e8 100644 --- a/src/ec.h +++ b/src/ec.h @@ -24,17 +24,8 @@ #ifndef EC_H #define EC_H -#include #include "types.h" -typedef std::array ec_privkey_t; -typedef std::array ec_pubkey_t; - -struct ec_keypair { - ec_privkey_t secret; - ec_pubkey_t pub; -}; - /** * Generates a keypair using the secp256k1 curve. * public key is in compressed format. diff --git a/src/types.h b/src/types.h index 806b61f..1977f5d 100644 --- a/src/types.h +++ b/src/types.h @@ -24,6 +24,8 @@ #ifndef TYPES_H #define TYPES_H +#include + #define EC_PRIVKEY_SIZE 32 /* @@ -33,4 +35,13 @@ */ #define EC_PUBKEY_SIZE (32 + 1) + +typedef std::array ec_privkey_t; +typedef std::array ec_pubkey_t; + +struct ec_keypair { + ec_privkey_t secret; + ec_pubkey_t pub; +}; + #endif /* TYPES_H */ From 8630f5c25560ab6107f267ea32040b5627591548 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:19:28 +0100 Subject: [PATCH 060/404] include "types.h" instead of "ec.h" where it is appropriate --- src/WIF.h | 2 +- src/key_search_helpers.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WIF.h b/src/WIF.h index 06b4a63..5102e65 100644 --- a/src/WIF.h +++ b/src/WIF.h @@ -25,7 +25,7 @@ #define WIF_H #include -#include "ec.h" +#include "types.h" std::string wif_priv_encode(ec_privkey_t priv); diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 66e7783..b9679b9 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -25,7 +25,7 @@ #define KEY_SEARCH_HELPERS_H #include "string.h" -#include "ec.h" +#include "types.h" struct key_result { size_t pos; // position where the word was found. From c7802b2e56f3a65108f8f377bc2193d1427f3ff1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 30 Jan 2020 08:41:30 +0100 Subject: [PATCH 061/404] move types.h and ec stuff to "ec" subdirectory. --- CMakeLists.txt | 2 +- src/WIF.h | 2 +- src/benchmark.cpp | 2 +- src/{ec.h => ec/generate.h} | 6 +++--- src/{ec.cpp => ec/openssl.cpp} | 2 +- src/{ => ec}/types.h | 7 +++---- src/key_search.cpp | 2 +- src/key_search_helpers.h | 2 +- src/key_search_mt.cpp | 2 +- src/main.cpp | 2 +- 10 files changed, 14 insertions(+), 15 deletions(-) rename src/{ec.h => ec/generate.h} (94%) rename src/{ec.cpp => ec/openssl.cpp} (98%) rename src/{ => ec}/types.h (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5edd61..e821d8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE src/string.cpp - src/ec.cpp + src/ec/openssl.cpp src/base58.cpp src/checksum.cpp src/WIF.cpp diff --git a/src/WIF.h b/src/WIF.h index 5102e65..48eb6a8 100644 --- a/src/WIF.h +++ b/src/WIF.h @@ -25,7 +25,7 @@ #define WIF_H #include -#include "types.h" +#include "ec/types.h" std::string wif_priv_encode(ec_privkey_t priv); diff --git a/src/benchmark.cpp b/src/benchmark.cpp index 6fb6c66..228b045 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "ec.h" +#include "ec/generate.h" #include "benchmark.h" using std::chrono::steady_clock; diff --git a/src/ec.h b/src/ec/generate.h similarity index 94% rename from src/ec.h rename to src/ec/generate.h index 29269e8..ccde10c 100644 --- a/src/ec.h +++ b/src/ec/generate.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EC_H -#define EC_H +#ifndef EC_GENERATE_H +#define EC_GENERATE_H #include "types.h" @@ -32,4 +32,4 @@ */ int ec_generate_key(struct ec_keypair *pair); -#endif /* EC_H */ +#endif /* EC_GENERATE_H */ diff --git a/src/ec.cpp b/src/ec/openssl.cpp similarity index 98% rename from src/ec.cpp rename to src/ec/openssl.cpp index d277eda..40e0cf3 100644 --- a/src/ec.cpp +++ b/src/ec/openssl.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "ec.h" +#include "generate.h" static int ec_generate_pair(unsigned char *priv, unsigned char *pub) { diff --git a/src/types.h b/src/ec/types.h similarity index 96% rename from src/types.h rename to src/ec/types.h index 1977f5d..19a2312 100644 --- a/src/types.h +++ b/src/ec/types.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef TYPES_H -#define TYPES_H +#ifndef EC_TYPES_H +#define EC_TYPES_H #include @@ -35,7 +35,6 @@ */ #define EC_PUBKEY_SIZE (32 + 1) - typedef std::array ec_privkey_t; typedef std::array ec_pubkey_t; @@ -44,4 +43,4 @@ struct ec_keypair { ec_pubkey_t pub; }; -#endif /* TYPES_H */ +#endif /* EC_TYPES_H */ diff --git a/src/key_search.cpp b/src/key_search.cpp index 285962b..9e1a259 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "ec.h" +#include "ec/generate.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index b9679b9..1b80105 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -25,7 +25,7 @@ #define KEY_SEARCH_HELPERS_H #include "string.h" -#include "types.h" +#include "ec/types.h" struct key_result { size_t pos; // position where the word was found. diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 3d7dc5e..85f3e2a 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -25,7 +25,7 @@ #include #include #include -#include "ec.h" +#include "ec/generate.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/main.cpp b/src/main.cpp index 3a25014..cdc2dfe 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,7 +28,7 @@ #include #include "string.h" #include "WIF.h" -#include "ec.h" +#include "ec/generate.h" #include "key_search.h" #include "benchmark.h" From cb5df9bbba46c5288d79c8c1e1b7db1174168b5a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 15:30:16 +0100 Subject: [PATCH 062/404] src/main.cpp: print a notice message if cli argument --threads is less than 2. --- src/main.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 3a25014..572183e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -163,6 +163,8 @@ int main(int argc, char **argv) { #ifdef HAVE_THREADS option_num_threads = atoi(argv[p] + 10); if (option_num_threads < 2) { + std::cerr << "NOTICE: Number of threads less than 2 does not make sense." + << " So eosio-keygen will use 2." << std::endl; option_num_threads = 2; } #else From f9930ec4fc0760581b93d4dcd44bb9e76924b884 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 15:52:06 +0100 Subject: [PATCH 063/404] src/main.cpp: refactor the do/while loop for search flags into just a while loop. --- src/main.cpp | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 572183e..3efd467 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -147,19 +147,11 @@ int main(int argc, char **argv) { } if (!strcmp(argv[p], "search")) { - bool parse_opt; - p++; - do { - parse_opt = false; - - if (p < argc && !strcmp(argv[p], "--l33t")) { + while(p++ < argc) { + if (!strcmp(argv[p], "--l33t")) { option_l33t = true; - parse_opt = true; - p++; - } - - if (p < argc && !memcmp(argv[p], "--threads=", 10)) { + } else if (!memcmp(argv[p], "--threads=", 10)) { #ifdef HAVE_THREADS option_num_threads = atoi(argv[p] + 10); if (option_num_threads < 2) { @@ -173,10 +165,12 @@ int main(int argc, char **argv) { std::cerr << "NOTICE: eosio-keygen is not compiled with" << " thread support. this option is ignored." << std::endl; #endif /* HAVE_THREADS */ - p++; - parse_opt = true; } - } while(parse_opt && p < argc); + // Nothing to parse + else { + break; + } + } if (argc <= p) { std::cerr << "You must specify a word list." << std::endl; From d636cf7756481bcac7d696646949c48a5e8a9a46 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 15:52:53 +0100 Subject: [PATCH 064/404] src/main.cpp: error out on unsupported flags for search. --- src/main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 3efd467..2478d2e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -166,6 +166,12 @@ int main(int argc, char **argv) { << " thread support. this option is ignored." << std::endl; #endif /* HAVE_THREADS */ } + // Error out on any flag we don't support. + else if (argv[p][0] == '-') { + std::cerr << "Unrecognized flag: " << argv[p] << std::endl; + usage(argv[0]); + return 0; + } // Nothing to parse else { break; From 67df40530949c0185c6dabaf2e27a1cbd47efc72 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 15:59:24 +0100 Subject: [PATCH 065/404] src/main.cpp: refactor cmd_search to take strlist_t and int parameters and do all parsing outside. --- src/main.cpp | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2478d2e..8da1547 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -39,40 +39,30 @@ bool option_l33t = false; int option_num_threads = std::thread::hardware_concurrency(); #endif /* HAVE_THREADS */ -void cmd_search(int argc, char **argv) { +void cmd_search(const strlist_t& words, int count) { - int n = 10; - std::string input(argv[0]); KeySearch ks; if (option_l33t) { - strlist_t tmp = strsplitwords(input); - for(std::size_t i = 0; i < tmp.size(); i++) { - ks.addList(l33twords(tmp[i])); + for(std::size_t i = 0; i < words.size(); i++) { + ks.addList(l33twords(words[i])); } } else { - ks.addList(strsplitwords(input)); - } - - if (argc > 1) { - n = atoi(argv[1]); - if (n < 1) { - n = 1; - } + ks.addList(words); } #ifdef HAVE_THREADS ks.setThreadCount(option_num_threads); #endif /* HAVE_THREADS */ - std::cout << "Searching for " << n + std::cout << "Searching for " << count << " keys containing: " << strjoin(ks.getList(), ",") #ifdef HAVE_THREADS << ", Using: " << option_num_threads << " threads" #endif /* HAVE_THREADS */ << std::endl; - ks.find(n); + ks.find(count); } void usage(const char *name) { @@ -182,10 +172,19 @@ int main(int argc, char **argv) { std::cerr << "You must specify a word list." << std::endl; usage(argv[0]); return 1; - } + } else { + int count = 10; + strlist_t words = strsplitwords(std::string(argv[p])); - // Pass the rest of argv, argc - cmd_search(argc - p, &argv[p]); + if (p + 1 < argc) { + count = atoi(argv[p+1]); + if (count < 1) { + count = 1; + } + } + + cmd_search(words, count); + } } // Benchmark else if (!strcmp(argv[p], "benchmark")) { From b24ea1fc83d489e4eb6427c28eed24b0563e5570 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 16:09:53 +0100 Subject: [PATCH 066/404] src/main.cpp: fix bug in command line parsing for search. loop should check for `argc - 1` (first param is program name) --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 8da1547..22e56d6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -138,7 +138,7 @@ int main(int argc, char **argv) { if (!strcmp(argv[p], "search")) { - while(p++ < argc) { + while(p++ < argc - 1) { if (!strcmp(argv[p], "--l33t")) { option_l33t = true; } else if (!memcmp(argv[p], "--threads=", 10)) { From fca45626fabdbd14516eb9cc2eef83d6756ca67b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 5 Feb 2020 16:12:48 +0100 Subject: [PATCH 067/404] src/main.cpp: in command line parsing for search, move word list and count inside while loop. --- src/main.cpp | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 22e56d6..d83e9de 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -138,6 +138,9 @@ int main(int argc, char **argv) { if (!strcmp(argv[p], "search")) { + int count = 10; + strlist_t words; + while(p++ < argc - 1) { if (!strcmp(argv[p], "--l33t")) { option_l33t = true; @@ -162,29 +165,26 @@ int main(int argc, char **argv) { usage(argv[0]); return 0; } - // Nothing to parse - else { - break; + // wordlist and count + else if (words.size() < 1) { + words = strsplitwords(std::string(argv[p])); + + if (p + 1 < argc) { + count = atoi(argv[++p]); + if (count < 1) { + count = 1; + } + } } } - if (argc <= p) { + if (words.size() < 1) { std::cerr << "You must specify a word list." << std::endl; usage(argv[0]); return 1; - } else { - int count = 10; - strlist_t words = strsplitwords(std::string(argv[p])); - - if (p + 1 < argc) { - count = atoi(argv[p+1]); - if (count < 1) { - count = 1; - } - } - - cmd_search(words, count); } + + cmd_search(words, count); } // Benchmark else if (!strcmp(argv[p], "benchmark")) { From 677a48f34a7e31c216ed099abc266ca9f129fc2c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 Feb 2020 13:26:19 +0100 Subject: [PATCH 068/404] build.sh: add "-l" option that does not build but list cmake variables. --- build.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 98380e8..27c9fdd 100755 --- a/build.sh +++ b/build.sh @@ -8,12 +8,13 @@ function usage() { exit 1 } -options=$(getopt -n "${0##*/}" -o ht: --long disable-threads --long force-ansi -- "$@") +options=$(getopt -n "${0##*/}" -o lht: --long disable-threads --long force-ansi -- "$@") [ $? -eq 0 ] || usage eval set -- "$options" +ONLY_CONFIG=0 ARGS="" while true; do @@ -30,6 +31,9 @@ while true; do ARGS="${ARGS} -DUSE_THREADS=OFF" ;; --force-ansi) ARGS="${ARGS} -DFORCE_ANSI=ON" ;; + -l) + ARGS="${ARGS} -LH" + ONLY_CONFIG=1 ;; -h) usage ;; --) shift break @@ -39,6 +43,8 @@ while true; do done cmake $ARGS .. -make -B +if [ ${ONLY_CONFIG} -eq 0 ]; then + make -B +fi popd > /dev/null From 38d16587483d99ce67fe3999207ef9d320c4903d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 Feb 2020 13:26:46 +0100 Subject: [PATCH 069/404] README.md: minor fix. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 121812a..681e68c 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ $ brew install openssl cmake #### Build -After you just need to run `./build.sh` to trigger the whole build. +Run `./build.sh` to trigger cmake. If you dont want to use the script. you can build with cmake using the following commands: From e0397ceee313ddb114fd9f80ca9d67ce1fa10838 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 Feb 2020 13:27:09 +0100 Subject: [PATCH 070/404] README.md: Document compile options. --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index 681e68c..9f8d964 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,18 @@ C:\repo\build> cmake -D OPENSSL_ROOT_DIR="C:/path/to/openssl-1.1/x86" .. C:\repo\build> cmake --build . --config Release ``` +## Compile options + +These compile options are available: + +| Cmake | build.sh | Description | +|--------------------------- | ----------------- | ------------------------------------------| +| -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | +| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | +| -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | + +For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA` + ## Install After the project has been compiled. run `sudo ./install.sh` or the following code if you dont want to use that: From 20a47d11b52403384980372cf9ebde7ef32dca92 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 7 Feb 2020 06:53:53 +0100 Subject: [PATCH 071/404] Version 0.1.6 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 66abdf4..4906a70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.4) # Project name and version -project(eosio-keygen VERSION 0.1.5) +project(eosio-keygen VERSION 0.1.6) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) From 0e9d23086f177b796f111d7e27d6b8816b45fdfb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 10 Feb 2020 16:58:08 +0100 Subject: [PATCH 072/404] Adding "eoskeygen" namespace. --- src/WIF.cpp | 4 ++++ src/WIF.h | 4 ++++ src/base58.cpp | 4 ++++ src/base58.h | 4 ++++ src/benchmark.cpp | 4 ++++ src/benchmark.h | 4 ++++ src/checksum.cpp | 4 ++++ src/checksum.h | 4 ++++ src/console.h | 4 ++++ src/console_ansi.cpp | 4 ++++ src/console_win32.cpp | 4 ++++ src/ec/generate.h | 4 ++++ src/ec/openssl.cpp | 4 ++++ src/ec/types.h | 4 ++++ src/key_search.cpp | 4 ++++ src/key_search.h | 4 ++++ src/key_search_helpers.cpp | 4 ++++ src/key_search_helpers.h | 4 ++++ src/key_search_mt.cpp | 4 ++++ src/main.cpp | 22 +++++++++++----------- src/string.cpp | 4 ++++ src/string.h | 4 ++++ 22 files changed, 95 insertions(+), 11 deletions(-) diff --git a/src/WIF.cpp b/src/WIF.cpp index 5577d8e..d31aff4 100644 --- a/src/WIF.cpp +++ b/src/WIF.cpp @@ -27,6 +27,8 @@ #include "checksum.h" #include "WIF.h" +namespace eoskeygen { + #define PRIV_KEY_PREFIX 0x80 /* 0x80 for "Bitcoin mainnet". Always used by EOS. */ std::string wif_priv_encode(ec_privkey_t priv) { @@ -60,3 +62,5 @@ void wif_print_key(const struct ec_keypair *key) { std::cout << "Public: " << wif_pub_encode(key->pub) << std::endl; std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; } + +} // namespace eoskeygen diff --git a/src/WIF.h b/src/WIF.h index 48eb6a8..55d6993 100644 --- a/src/WIF.h +++ b/src/WIF.h @@ -27,10 +27,14 @@ #include #include "ec/types.h" +namespace eoskeygen { + std::string wif_priv_encode(ec_privkey_t priv); std::string wif_pub_encode(ec_pubkey_t pub); void wif_print_key(const struct ec_keypair *key); +} // namespace eoskeygen + #endif /* WIF_H */ diff --git a/src/base58.cpp b/src/base58.cpp index cd3eccd..ad00911 100644 --- a/src/base58.cpp +++ b/src/base58.cpp @@ -28,6 +28,8 @@ #include #include "base58.h" +namespace eoskeygen { + static const char charmap[59] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend) { @@ -80,3 +82,5 @@ std::string base58_encode(const std::vector& vch) { return base58_encode(vch.data(), vch.data() + vch.size()); } + +} // namespace eoskeygen diff --git a/src/base58.h b/src/base58.h index 82039b5..59e269d 100644 --- a/src/base58.h +++ b/src/base58.h @@ -27,8 +27,12 @@ #include #include +namespace eoskeygen { + std::string base58_encode(const std::string& str); std::string base58_encode(const std::vector& vch); std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend); +} //namespace eoskeygen + #endif /* BASE58_H */ diff --git a/src/benchmark.cpp b/src/benchmark.cpp index 228b045..42b6b20 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -29,6 +29,8 @@ using std::chrono::steady_clock; using std::chrono::duration; using std::chrono::time_point; +namespace eoskeygen { + void benchmark(size_t num_keys, struct benchmark_result* res) { time_point start; @@ -48,3 +50,5 @@ void benchmark(size_t num_keys, struct benchmark_result* res) { res->sec = duration(steady_clock::now() - start).count(); res->kps = static_cast(num_keys) / res->sec; } + +} // namespace eoskeygen diff --git a/src/benchmark.h b/src/benchmark.h index f001808..e21a178 100644 --- a/src/benchmark.h +++ b/src/benchmark.h @@ -26,6 +26,8 @@ #include +namespace eoskeygen { + struct benchmark_result { float sec; // elapsed seconds. float kps; // keys per second. @@ -33,4 +35,6 @@ struct benchmark_result { void benchmark(size_t num_keys, struct benchmark_result* res); +} // namespace eoskeygen + #endif /* BENCHMARK_H */ diff --git a/src/checksum.cpp b/src/checksum.cpp index 53c7e33..aed8deb 100644 --- a/src/checksum.cpp +++ b/src/checksum.cpp @@ -26,6 +26,8 @@ #include #include "checksum.h" +namespace eoskeygen { + inline void sha256d(const unsigned char *data, std::size_t len, unsigned char *out) { SHA256(data, len, out); SHA256(out, 32, out); @@ -46,3 +48,5 @@ inline void sha256d(const unsigned char *data, std::size_t len, unsigned char *o checksum_impl(sha256d, sha256d) checksum_impl(ripemd160, RIPEMD160) + +} // namespace eosio-keygen diff --git a/src/checksum.h b/src/checksum.h index 1ac08a2..49b27f4 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -27,6 +27,8 @@ #include #include +namespace eoskeygen { + #define CHECKSUM_SIZE 4 typedef std::array checksum_t; @@ -35,4 +37,6 @@ checksum_t checksum_sha256d(const unsigned char *data, std::size_t len); checksum_t checksum_ripemd160(const unsigned char *data, std::size_t len); +} // namespace eoskeygen + #endif /* CHECKSUM_H */ diff --git a/src/console.h b/src/console.h index c81a5b7..49932a7 100644 --- a/src/console.h +++ b/src/console.h @@ -26,6 +26,8 @@ #include +namespace eoskeygen { + namespace console { // enum for all supported colors. @@ -80,4 +82,6 @@ namespace console { } // namespace console +} // namespace eoskeygen + #endif /* CONSOLE_H */ diff --git a/src/console_ansi.cpp b/src/console_ansi.cpp index 3aab56b..272615a 100644 --- a/src/console_ansi.cpp +++ b/src/console_ansi.cpp @@ -24,6 +24,8 @@ #include #include "console.h" +namespace eoskeygen { + namespace console { std::ostream& reset(std::ostream& os) { @@ -69,3 +71,5 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { } } // namespace console + +} // namespace eoskeygen diff --git a/src/console_win32.cpp b/src/console_win32.cpp index 5f7e87d..a6c2800 100644 --- a/src/console_win32.cpp +++ b/src/console_win32.cpp @@ -25,6 +25,8 @@ #include #include "console.h" +namespace eoskeygen { + // WinAPI colors #define FG_BLACK 0 #define FG_BLUE FOREGROUND_BLUE @@ -88,3 +90,5 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { } } // namespace console + +} // namespace eoskeygen diff --git a/src/ec/generate.h b/src/ec/generate.h index ccde10c..c3f686c 100644 --- a/src/ec/generate.h +++ b/src/ec/generate.h @@ -26,10 +26,14 @@ #include "types.h" +namespace eoskeygen { + /** * Generates a keypair using the secp256k1 curve. * public key is in compressed format. */ int ec_generate_key(struct ec_keypair *pair); +} // namespace eoskeygen + #endif /* EC_GENERATE_H */ diff --git a/src/ec/openssl.cpp b/src/ec/openssl.cpp index 40e0cf3..563af41 100644 --- a/src/ec/openssl.cpp +++ b/src/ec/openssl.cpp @@ -26,6 +26,8 @@ #include #include "generate.h" +namespace eoskeygen { + static int ec_generate_pair(unsigned char *priv, unsigned char *pub) { int ret = -1; @@ -69,3 +71,5 @@ int ec_generate_key(struct ec_keypair *pair) { return ec_generate_pair(pair->secret.data(), pair->pub.data()); } + +} // namespace eoskeygen diff --git a/src/ec/types.h b/src/ec/types.h index 19a2312..a59cf7a 100644 --- a/src/ec/types.h +++ b/src/ec/types.h @@ -26,6 +26,8 @@ #include +namespace eoskeygen { + #define EC_PRIVKEY_SIZE 32 /* @@ -43,4 +45,6 @@ struct ec_keypair { ec_pubkey_t pub; }; +} // namespace eoskeygen + #endif /* EC_TYPES_H */ diff --git a/src/key_search.cpp b/src/key_search.cpp index 9e1a259..a6a190c 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -26,6 +26,8 @@ #include "key_search_helpers.h" #include "key_search.h" +namespace eoskeygen { + void KeySearch::addWord(const std::string& str) { std::string tmp = str; @@ -78,3 +80,5 @@ void KeySearch::find(size_t num_results) { _search_linear(num_results); } + +} // namespace eoskeygen diff --git a/src/key_search.h b/src/key_search.h index 6a6e5b3..c1210ea 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -26,6 +26,8 @@ #include "string.h" +namespace eoskeygen { + class KeySearch { public : @@ -67,4 +69,6 @@ protected : #endif /* HAVE_THREADS */ }; +} // namespace eoskeygen + #endif /* KEY_SEARCH_H */ diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 32a7a21..b6aad5b 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -26,6 +26,8 @@ #include "console.h" #include "key_search_helpers.h" +namespace eoskeygen { + void key_search_result(const struct ec_keypair* key, const struct key_result* result) { std::string pub = wif_pub_encode(key->pub); @@ -59,3 +61,5 @@ bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, } return false; } + +} // namespace eoskeygen diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 1b80105..c688421 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -27,6 +27,8 @@ #include "string.h" #include "ec/types.h" +namespace eoskeygen { + struct key_result { size_t pos; // position where the word was found. size_t len; // the length of the word. @@ -38,4 +40,6 @@ void key_search_result(const struct ec_keypair* key, const struct key_result* re // returns true if a word was found (stored in ), false otherwise. bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result); +} // namespace eoskeygen + #endif /* KEY_SEARCH_HELPERS_H */ diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 85f3e2a..2d01382 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -29,6 +29,8 @@ #include "key_search_helpers.h" #include "key_search.h" +namespace eoskeygen { + // Max keys to search for, std::size_t g_max; @@ -95,3 +97,5 @@ void KeySearch::_search_mt(size_t n) t[i].join(); } } + +} // namespace eoskeygen diff --git a/src/main.cpp b/src/main.cpp index 002c05d..2eed33c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -39,13 +39,13 @@ bool option_l33t = false; int option_num_threads = std::thread::hardware_concurrency(); #endif /* HAVE_THREADS */ -void cmd_search(const strlist_t& words, int count) { +void cmd_search(const eoskeygen::strlist_t& words, int count) { - KeySearch ks; + eoskeygen::KeySearch ks; if (option_l33t) { for(std::size_t i = 0; i < words.size(); i++) { - ks.addList(l33twords(words[i])); + ks.addList(eoskeygen::l33twords(words[i])); } } else { ks.addList(words); @@ -56,7 +56,7 @@ void cmd_search(const strlist_t& words, int count) { #endif /* HAVE_THREADS */ std::cout << "Searching for " << count - << " keys containing: " << strjoin(ks.getList(), ",") + << " keys containing: " << eoskeygen::strjoin(ks.getList(), ",") #ifdef HAVE_THREADS << ", Using: " << option_num_threads << " threads" #endif /* HAVE_THREADS */ @@ -106,12 +106,12 @@ void usage(const char *name) { void cmd_benchmark(size_t num_keys) { - struct benchmark_result res; + struct eoskeygen::benchmark_result res; std::cout << "Benchmark: Generating " << num_keys << " keys" << std::endl; - benchmark(num_keys, &res); + eoskeygen::benchmark(num_keys, &res); std::cout << "Result: Took " << res.sec << " seconds, " << res.kps << " keys per second." << std::endl; @@ -125,9 +125,9 @@ int main(int argc, char **argv) { // No args, just print a key. if (argc <= 1) { - struct ec_keypair pair; - ec_generate_key(&pair); - wif_print_key(&pair); + struct eoskeygen::ec_keypair pair; + eoskeygen::ec_generate_key(&pair); + eoskeygen::wif_print_key(&pair); return 0; } @@ -139,7 +139,7 @@ int main(int argc, char **argv) { if (!strcmp(argv[p], "search")) { int count = 10; - strlist_t words; + eoskeygen::strlist_t words; while(p++ < argc - 1) { if (!strcmp(argv[p], "--l33t")) { @@ -167,7 +167,7 @@ int main(int argc, char **argv) { } // wordlist and count else if (words.size() < 1) { - words = strsplitwords(std::string(argv[p])); + words = eoskeygen::strsplitwords(std::string(argv[p])); if (p + 1 < argc) { count = atoi(argv[++p]); diff --git a/src/string.cpp b/src/string.cpp index bee3330..477311c 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -26,6 +26,8 @@ #include #include "string.h" +namespace eoskeygen { + strlist_t strsplitwords(const std::string& str, const std::string& delim) { strlist_t words = strsplit(str, delim); @@ -156,3 +158,5 @@ strlist_t l33twords(std::string str) { _l33t(list, str, 0); return list; } + +} // namespace eoskeygen diff --git a/src/string.h b/src/string.h index b3f6300..a0b07fc 100644 --- a/src/string.h +++ b/src/string.h @@ -27,6 +27,8 @@ #include #include +namespace eoskeygen { + typedef std::vector strlist_t; strlist_t strsplitwords(const std::string& str, const std::string& delim = ","); @@ -46,4 +48,6 @@ strlist_t& base58_strip(strlist_t& list); strlist_t l33twords(std::string str); +} // namespace eoskeygen + #endif /* STRING_H */ From 04641354ffb963082480d05c0763a096bf02af43 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 10 Feb 2020 17:01:31 +0100 Subject: [PATCH 073/404] Adding "EOSIOKEYGEN" prefix to all header guards. --- src/WIF.h | 6 +++--- src/base58.h | 6 +++--- src/benchmark.h | 6 +++--- src/checksum.h | 6 +++--- src/console.h | 6 +++--- src/ec/generate.h | 6 +++--- src/ec/types.h | 6 +++--- src/key_search.h | 6 +++--- src/key_search_helpers.h | 6 +++--- src/string.h | 6 +++--- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/WIF.h b/src/WIF.h index 55d6993..9ee077c 100644 --- a/src/WIF.h +++ b/src/WIF.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef WIF_H -#define WIF_H +#ifndef EOSIOKEYGEN_WIF_H +#define EOSIOKEYGEN_WIF_H #include #include "ec/types.h" @@ -37,4 +37,4 @@ void wif_print_key(const struct ec_keypair *key); } // namespace eoskeygen -#endif /* WIF_H */ +#endif /* EOSIOKEYGEN_WIF_H */ diff --git a/src/base58.h b/src/base58.h index 59e269d..16b7798 100644 --- a/src/base58.h +++ b/src/base58.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef BASE58_H -#define BASE58_H +#ifndef EOSIOKEYGEN_BASE58_H +#define EOSIOKEYGEN_BASE58_H #include #include @@ -35,4 +35,4 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend } //namespace eoskeygen -#endif /* BASE58_H */ +#endif /* EOSIOKEYGEN_BASE58_H */ diff --git a/src/benchmark.h b/src/benchmark.h index e21a178..8b1f57b 100644 --- a/src/benchmark.h +++ b/src/benchmark.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef BENCHMARK_H -#define BENCHMARK_H +#ifndef EOSIOKEYGEN_BENCHMARK_H +#define EOSIOKEYGEN_BENCHMARK_H #include @@ -37,4 +37,4 @@ void benchmark(size_t num_keys, struct benchmark_result* res); } // namespace eoskeygen -#endif /* BENCHMARK_H */ +#endif /* EOSIOKEYGEN_BENCHMARK_H */ diff --git a/src/checksum.h b/src/checksum.h index 49b27f4..b48f783 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef CHECKSUM_H -#define CHECKSUM_H +#ifndef EOSIOKEYGEN_CHECKSUM_H +#define EOSIOKEYGEN_CHECKSUM_H #include #include @@ -39,4 +39,4 @@ checksum_t checksum_ripemd160(const unsigned char *data, std::size_t len); } // namespace eoskeygen -#endif /* CHECKSUM_H */ +#endif /* EOSIOKEYGEN_CHECKSUM_H */ diff --git a/src/console.h b/src/console.h index 49932a7..bc20e0e 100644 --- a/src/console.h +++ b/src/console.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef CONSOLE_H -#define CONSOLE_H +#ifndef EOSIOKEYGEN_CONSOLE_H +#define EOSIOKEYGEN_CONSOLE_H #include @@ -84,4 +84,4 @@ namespace console { } // namespace eoskeygen -#endif /* CONSOLE_H */ +#endif /* EOSIOKEYGEN_CONSOLE_H */ diff --git a/src/ec/generate.h b/src/ec/generate.h index c3f686c..e617fa3 100644 --- a/src/ec/generate.h +++ b/src/ec/generate.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EC_GENERATE_H -#define EC_GENERATE_H +#ifndef EOSIOKEYGEN_EC_GENERATE_H +#define EOSIOKEYGEN_EC_GENERATE_H #include "types.h" @@ -36,4 +36,4 @@ int ec_generate_key(struct ec_keypair *pair); } // namespace eoskeygen -#endif /* EC_GENERATE_H */ +#endif /* EOSIOKEYGEN_EC_GENERATE_H */ diff --git a/src/ec/types.h b/src/ec/types.h index a59cf7a..f48b063 100644 --- a/src/ec/types.h +++ b/src/ec/types.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EC_TYPES_H -#define EC_TYPES_H +#ifndef EOSIOKEYGEN_EC_TYPES_H +#define EOSIOKEYGEN_EC_TYPES_H #include @@ -47,4 +47,4 @@ struct ec_keypair { } // namespace eoskeygen -#endif /* EC_TYPES_H */ +#endif /* EOSIOKEYGEN_EC_TYPES_H */ diff --git a/src/key_search.h b/src/key_search.h index c1210ea..78de4d6 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef KEY_SEARCH_H -#define KEY_SEARCH_H +#ifndef EOSIOKEYGEN_KEY_SEARCH_H +#define EOSIOKEYGEN_KEY_SEARCH_H #include "string.h" @@ -71,4 +71,4 @@ protected : } // namespace eoskeygen -#endif /* KEY_SEARCH_H */ +#endif /* EOSIOKEYGEN_KEY_SEARCH_H */ diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index c688421..5e8ff39 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef KEY_SEARCH_HELPSER_H -#define KEY_SEARCH_HELPERS_H +#ifndef EOSIOKEYGEN_KEY_SEARCH_HELPSER_H +#define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #include "string.h" #include "ec/types.h" @@ -42,4 +42,4 @@ bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, } // namespace eoskeygen -#endif /* KEY_SEARCH_HELPERS_H */ +#endif /* EOSIOKEYGEN_KEY_SEARCH_HELPERS_H */ diff --git a/src/string.h b/src/string.h index a0b07fc..52313a0 100644 --- a/src/string.h +++ b/src/string.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef STRING_H -#define STRING_H +#ifndef EOSIOKEYGEN_STRING_H +#define EOSIOKEYGEN_STRING_H #include #include @@ -50,4 +50,4 @@ strlist_t l33twords(std::string str); } // namespace eoskeygen -#endif /* STRING_H */ +#endif /* EOSIOKEYGEN_STRING_H */ From bc0369f30149cb6750dbaf35af27104f6b8b6ac7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 14:48:10 +0100 Subject: [PATCH 074/404] Move "ec" directory to "crypto" and move openssl implementation into crypto/openssl directory. --- CMakeLists.txt | 2 +- src/WIF.h | 2 +- src/benchmark.cpp | 2 +- src/{ec/generate.h => crypto/ec.h} | 6 +++--- src/{ec/openssl.cpp => crypto/openssl/ec.cpp} | 2 +- src/{ec => crypto}/types.h | 6 +++--- src/key_search.cpp | 2 +- src/key_search_helpers.h | 2 +- src/key_search_mt.cpp | 2 +- src/main.cpp | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) rename src/{ec/generate.h => crypto/ec.h} (92%) rename src/{ec/openssl.cpp => crypto/openssl/ec.cpp} (98%) rename src/{ec => crypto}/types.h (93%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4906a70..fa88c06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE src/string.cpp - src/ec/openssl.cpp src/base58.cpp src/checksum.cpp src/WIF.cpp @@ -46,6 +45,7 @@ endif() # Libraries find_package(OpenSSL 1.1 REQUIRED) +set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/crypto/openssl/ec.cpp) if (USE_THREADS) find_package(Threads) diff --git a/src/WIF.h b/src/WIF.h index 9ee077c..a8bba10 100644 --- a/src/WIF.h +++ b/src/WIF.h @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_WIF_H #include -#include "ec/types.h" +#include "crypto/types.h" namespace eoskeygen { diff --git a/src/benchmark.cpp b/src/benchmark.cpp index 42b6b20..bc8e69f 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "ec/generate.h" +#include "crypto/ec.h" #include "benchmark.h" using std::chrono::steady_clock; diff --git a/src/ec/generate.h b/src/crypto/ec.h similarity index 92% rename from src/ec/generate.h rename to src/crypto/ec.h index e617fa3..e8558dd 100644 --- a/src/ec/generate.h +++ b/src/crypto/ec.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_EC_GENERATE_H -#define EOSIOKEYGEN_EC_GENERATE_H +#ifndef EOSIOKEYGEN_CRYPTO_EC_H +#define EOSIOKEYGEN_CRYPTO_EC_H #include "types.h" @@ -36,4 +36,4 @@ int ec_generate_key(struct ec_keypair *pair); } // namespace eoskeygen -#endif /* EOSIOKEYGEN_EC_GENERATE_H */ +#endif /* EOSIOKEYGEN_CRYPTO_EC_H */ diff --git a/src/ec/openssl.cpp b/src/crypto/openssl/ec.cpp similarity index 98% rename from src/ec/openssl.cpp rename to src/crypto/openssl/ec.cpp index 563af41..da83738 100644 --- a/src/ec/openssl.cpp +++ b/src/crypto/openssl/ec.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "generate.h" +#include "../ec.h" namespace eoskeygen { diff --git a/src/ec/types.h b/src/crypto/types.h similarity index 93% rename from src/ec/types.h rename to src/crypto/types.h index f48b063..f1a505d 100644 --- a/src/ec/types.h +++ b/src/crypto/types.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_EC_TYPES_H -#define EOSIOKEYGEN_EC_TYPES_H +#ifndef EOSIOKEYGEN_CRYPTO_TYPES_H +#define EOSIOKEYGEN_CRYPTO_TYPES_H #include @@ -47,4 +47,4 @@ struct ec_keypair { } // namespace eoskeygen -#endif /* EOSIOKEYGEN_EC_TYPES_H */ +#endif /* EOSIOKEYGEN_CRYPTO_TYPES_H */ diff --git a/src/key_search.cpp b/src/key_search.cpp index a6a190c..12a3a11 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "ec/generate.h" +#include "crypto/ec.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 5e8ff39..f3a6bd5 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #include "string.h" -#include "ec/types.h" +#include "crypto/types.h" namespace eoskeygen { diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 2d01382..cc775c1 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -25,7 +25,7 @@ #include #include #include -#include "ec/generate.h" +#include "crypto/ec.h" #include "key_search_helpers.h" #include "key_search.h" diff --git a/src/main.cpp b/src/main.cpp index 2eed33c..3e16602 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,7 +28,7 @@ #include #include "string.h" #include "WIF.h" -#include "ec/generate.h" +#include "crypto/ec.h" #include "key_search.h" #include "benchmark.h" From 7a4cc43ec950b854941c02dc57851f0a3957382e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 14:49:56 +0100 Subject: [PATCH 075/404] src/crypto/openssl/ec.cpp: remove static helper function. --- src/crypto/openssl/ec.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/crypto/openssl/ec.cpp b/src/crypto/openssl/ec.cpp index da83738..2d7fbac 100644 --- a/src/crypto/openssl/ec.cpp +++ b/src/crypto/openssl/ec.cpp @@ -28,7 +28,7 @@ namespace eoskeygen { -static int ec_generate_pair(unsigned char *priv, unsigned char *pub) { +int ec_generate_key(struct ec_keypair *pair) { int ret = -1; EC_KEY *k; @@ -52,12 +52,12 @@ static int ec_generate_pair(unsigned char *priv, unsigned char *pub) { } // Copy private key to binary format. - EC_KEY_priv2oct(k, priv, EC_PRIVKEY_SIZE); + EC_KEY_priv2oct(k, pair->secret.data(), EC_PRIVKEY_SIZE); // Copy public key key EC_POINT_point2oct(EC_KEY_get0_group(k), EC_KEY_get0_public_key(k), POINT_CONVERSION_COMPRESSED, - pub, EC_PUBKEY_SIZE, ctx); + pair->pub.data(), EC_PUBKEY_SIZE, ctx); ret = 0; fail2: @@ -67,9 +67,4 @@ fail1: return ret; } -int ec_generate_key(struct ec_keypair *pair) { - - return ec_generate_pair(pair->secret.data(), pair->pub.data()); -} - } // namespace eoskeygen From fc5614eff23507e823fe1513ce392cd84d4aeee0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 15:42:41 +0100 Subject: [PATCH 076/404] adding crypto/hash.h and move openssl specific code from checksum.cpp to crypto/openssl/hash.cpp --- CMakeLists.txt | 5 ++++- src/checksum.cpp | 23 +++++++++++----------- src/crypto/hash.h | 38 +++++++++++++++++++++++++++++++++++++ src/crypto/openssl/hash.cpp | 38 +++++++++++++++++++++++++++++++++++++ src/crypto/types.h | 5 +++++ 5 files changed, 96 insertions(+), 13 deletions(-) create mode 100644 src/crypto/hash.h create mode 100644 src/crypto/openssl/hash.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index fa88c06..2396237 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,7 +45,10 @@ endif() # Libraries find_package(OpenSSL 1.1 REQUIRED) -set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/crypto/openssl/ec.cpp) +set (PROGRAM_SOURCE ${PROGRAM_SOURCE} + src/crypto/openssl/ec.cpp + src/crypto/openssl/hash.cpp +) if (USE_THREADS) find_package(Threads) diff --git a/src/checksum.cpp b/src/checksum.cpp index aed8deb..9f46b0e 100644 --- a/src/checksum.cpp +++ b/src/checksum.cpp @@ -21,32 +21,31 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include -#include #include +#include "crypto/hash.h" #include "checksum.h" namespace eoskeygen { -inline void sha256d(const unsigned char *data, std::size_t len, unsigned char *out) { - SHA256(data, len, out); - SHA256(out, 32, out); +inline void sha256d(const unsigned char *data, std::size_t len, sha256_t *out) { + sha256(data, len, out); + sha256(out->data, 32, out); } -#define checksum_impl(name, func) \ - checksum_t checksum_##name(const unsigned char *data, std::size_t len) { \ +#define checksum_impl(func, type) \ + checksum_t checksum_##func(const unsigned char *data, std::size_t len) { \ \ checksum_t crc; \ - unsigned char hash[32]; \ + type hash; \ \ - func(data, len, hash); \ + func(data, len, &hash); \ \ - std::memcpy(crc.data(), hash, crc.size()); \ + std::memcpy(crc.data(), &hash, crc.size()); \ return crc; \ } -checksum_impl(sha256d, sha256d) -checksum_impl(ripemd160, RIPEMD160) +checksum_impl(sha256d, sha256_t) +checksum_impl(ripemd160, ripemd160_t) } // namespace eosio-keygen diff --git a/src/crypto/hash.h b/src/crypto/hash.h new file mode 100644 index 0000000..10b0373 --- /dev/null +++ b/src/crypto/hash.h @@ -0,0 +1,38 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_CRYPTO_HASH_H +#define EOSIOKEYGEN_CRYPTO_HASH_H + +#include +#include "types.h" + +namespace eoskeygen { + +sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out); + +ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out); + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_CRYPTO_HASH_H */ diff --git a/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp new file mode 100644 index 0000000..08cf360 --- /dev/null +++ b/src/crypto/openssl/hash.cpp @@ -0,0 +1,38 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include "../hash.h" + +namespace eoskeygen { + +sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out) { + return (sha256_t *) SHA256(data, len, out->data); +} + +ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out) { + return (ripemd160_t *) RIPEMD160(data, len, out->data); +} + +} // namespace eoskeygen diff --git a/src/crypto/types.h b/src/crypto/types.h index f1a505d..23e2585 100644 --- a/src/crypto/types.h +++ b/src/crypto/types.h @@ -45,6 +45,11 @@ struct ec_keypair { ec_pubkey_t pub; }; +// Hashes. + +typedef struct { unsigned char data[20]; } ripemd160_t; +typedef struct { unsigned char data[32]; } sha256_t; + } // namespace eoskeygen #endif /* EOSIOKEYGEN_CRYPTO_TYPES_H */ From ce5dda06fec17499239f617fd5ea2ad5f28e7fba Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 19:30:16 +0100 Subject: [PATCH 077/404] crypto/hash: define sha256d() Better to have it here. Gives the implementation a chance to do any optimization over calling sha256() two times. --- src/crypto/hash.h | 3 +++ src/crypto/openssl/hash.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/crypto/hash.h b/src/crypto/hash.h index 10b0373..783ba57 100644 --- a/src/crypto/hash.h +++ b/src/crypto/hash.h @@ -31,6 +31,9 @@ namespace eoskeygen { sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out); +// sha256 double. +sha256_t* sha256d(const unsigned char *data, std::size_t len, sha256_t* out); + ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out); } // namespace eoskeygen diff --git a/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp index 08cf360..0e26334 100644 --- a/src/crypto/openssl/hash.cpp +++ b/src/crypto/openssl/hash.cpp @@ -31,6 +31,11 @@ sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out) { return (sha256_t *) SHA256(data, len, out->data); } +sha256_t* sha256d(const unsigned char *data, std::size_t len, sha256_t* out) { + SHA256(data, len, out->data); + return (sha256_t *) SHA256(data, 32, out->data); +} + ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out) { return (ripemd160_t *) RIPEMD160(data, len, out->data); } From 8e7b132ca11c72de1dd2ae45acf203487f8d8f1a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 19:32:34 +0100 Subject: [PATCH 078/404] checksum.h: implement using templates instead of nasty macro + header only as we don't have openssl specific code there anymore. --- CMakeLists.txt | 1 - src/checksum.cpp | 51 ------------------------------------------------ src/checksum.h | 16 +++++++++++++-- 3 files changed, 14 insertions(+), 54 deletions(-) delete mode 100644 src/checksum.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2396237..d0195d1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,7 +19,6 @@ set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE src/string.cpp src/base58.cpp - src/checksum.cpp src/WIF.cpp src/key_search.cpp src/key_search_helpers.cpp diff --git a/src/checksum.cpp b/src/checksum.cpp deleted file mode 100644 index 9f46b0e..0000000 --- a/src/checksum.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include "crypto/hash.h" -#include "checksum.h" - -namespace eoskeygen { - -inline void sha256d(const unsigned char *data, std::size_t len, sha256_t *out) { - sha256(data, len, out); - sha256(out->data, 32, out); -} - -#define checksum_impl(func, type) \ - checksum_t checksum_##func(const unsigned char *data, std::size_t len) { \ - \ - checksum_t crc; \ - type hash; \ - \ - func(data, len, &hash); \ - \ - std::memcpy(crc.data(), &hash, crc.size()); \ - return crc; \ - } - - -checksum_impl(sha256d, sha256_t) -checksum_impl(ripemd160, ripemd160_t) - -} // namespace eosio-keygen diff --git a/src/checksum.h b/src/checksum.h index b48f783..a67a42b 100644 --- a/src/checksum.h +++ b/src/checksum.h @@ -25,7 +25,9 @@ #define EOSIOKEYGEN_CHECKSUM_H #include +#include #include +#include "crypto/hash.h" namespace eoskeygen { @@ -33,9 +35,19 @@ namespace eoskeygen { typedef std::array checksum_t; -checksum_t checksum_sha256d(const unsigned char *data, std::size_t len); +template +inline checksum_t checksum(const unsigned char* data, std::size_t len) { + checksum_t crc; + T hash; -checksum_t checksum_ripemd160(const unsigned char *data, std::size_t len); + F(data, len, &hash); + std::memcpy(crc.data(), &hash, crc.size()); + return crc; +} + +#define checksum_sha256 checksum +#define checksum_sha256d checksum +#define checksum_ripemd160 checksum } // namespace eoskeygen From 985cab3f64a3eb24fad153b59de45d48e8df6ac9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 11 Feb 2020 19:33:15 +0100 Subject: [PATCH 079/404] crypto/openssl/ec.cpp: typo fix. --- src/crypto/openssl/ec.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crypto/openssl/ec.cpp b/src/crypto/openssl/ec.cpp index 2d7fbac..4b43a70 100644 --- a/src/crypto/openssl/ec.cpp +++ b/src/crypto/openssl/ec.cpp @@ -54,7 +54,7 @@ int ec_generate_key(struct ec_keypair *pair) { // Copy private key to binary format. EC_KEY_priv2oct(k, pair->secret.data(), EC_PRIVKEY_SIZE); - // Copy public key key + // Copy public key EC_POINT_point2oct(EC_KEY_get0_group(k), EC_KEY_get0_public_key(k), POINT_CONVERSION_COMPRESSED, pair->pub.data(), EC_PUBKEY_SIZE, ctx); From 4ddcedb5d6e3e2b02af41a9ea0af31ed15d752d6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 12 Feb 2020 15:21:36 +0100 Subject: [PATCH 080/404] Adding scripts/generate-dict.sh --- scripts/generate-dict.sh | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100755 scripts/generate-dict.sh diff --git a/scripts/generate-dict.sh b/scripts/generate-dict.sh new file mode 100755 index 0000000..e0f2faf --- /dev/null +++ b/scripts/generate-dict.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# Generates a dictionary file for usage with eosio-keygen +# - input is read from stdin and should have words separated by newline. +# - output is written to stdout. + +BASE58_ALPHABET=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz + +# 1. Remove any line that contains non base58 characters +# 2. Remove lines that are 2 or less characters long +# 3. Convert to lowercase +# 4. Sort and remove duplicate lines. +LC_CTYPE=C awk "! /[^${BASE58_ALPHABET}]/" < /dev/stdin 2> /dev/null \ + | sed -r '/^.{,2}$/d' \ + | tr '[:upper:]' '[:lower:]' \ + | sort | uniq -d From c8cd7f10e477f94bc0e95068afe84502b18a364a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 13 Feb 2020 14:55:11 +0100 Subject: [PATCH 081/404] extras: Adding dictionary files and support scripts. --- extras/dict.json | 7 + extras/dict/english | 45562 +++++++++++++++++++++++++++++++++++++++ extras/dict/swedish | 78 + scripts/update-dict.sh | 17 + 4 files changed, 45664 insertions(+) create mode 100644 extras/dict.json create mode 100644 extras/dict/english create mode 100644 extras/dict/swedish create mode 100755 scripts/update-dict.sh diff --git a/extras/dict.json b/extras/dict.json new file mode 100644 index 0000000..0381564 --- /dev/null +++ b/extras/dict.json @@ -0,0 +1,7 @@ +{ + "english": [ + "/usr/share/dict/american-english", + "/usr/share/dict/british-english" + ], + "swedish": "/usr/share/dict/swedish" +} diff --git a/extras/dict/english b/extras/dict/english new file mode 100644 index 0000000..2497413 --- /dev/null +++ b/extras/dict/english @@ -0,0 +1,45562 @@ +aachen +aardvark +aardvarks +aaron +abaci +aback +abacus +abacuses +abaft +abandon +abandoned +abandoning +abandonment +abandons +abase +abased +abasement +abases +abash +abashed +abashes +abashing +abasing +abate +abated +abatement +abates +abating +abattoir +abattoirs +abbas +abbasid +abbess +abbesses +abbey +abbeys +abbot +abbots +abbott +abbreviate +abbreviated +abbreviates +abbreviating +abbreviation +abbreviations +abby +abdicate +abdicated +abdicates +abdicating +abdication +abdications +abdomen +abdomens +abduct +abducted +abductee +abductees +abducting +abduction +abductions +abductor +abductors +abducts +abe +abeam +abed +aberdeen +abernathy +aberrant +aberration +aberrations +abet +abets +abetted +abetter +abetters +abetting +abettor +abettors +abeyance +abhor +abhorred +abhorrence +abhorrent +abhorring +abhors +abide +abided +abides +abiding +abidjan +abject +abjuration +abjurations +abjure +abjured +abjures +abjuring +abnegate +abnegated +abnegates +abnegating +abnegation +abner +aboard +abode +abodes +abominate +abominated +abominates +abominating +abomination +abominations +aborigine +aborigines +abort +aborted +aborting +abortion +abortionist +abortionists +abortions +abortive +aborts +abound +abounded +abounding +abounds +about +above +aboveboard +abracadabra +abrade +abraded +abrades +abrading +abraham +abram +abrams +abrasion +abrasions +abrasive +abrasiveness +abrasives +abreast +abridge +abridged +abridgement +abridgements +abridges +abridging +abridgment +abridgments +abroad +abrogate +abrogated +abrogates +abrogating +abrogation +abrogations +abrupt +abrupter +abruptest +abruptness +abscess +abscessed +abscesses +abscessing +abscissa +abscissae +abscissas +abscond +absconded +absconding +absconds +absence +absences +absent +absented +absentee +absenteeism +absentees +absenting +absents +absinth +absinthe +absorb +absorbed +absorbency +absorbent +absorbents +absorbing +absorbs +absorption +abstain +abstained +abstainer +abstainers +abstaining +abstains +abstemious +abstention +abstentions +abstinence +abstinent +abstract +abstracted +abstracting +abstraction +abstractions +abstractness +abstractnesses +abstracts +abstruse +abstruseness +absurd +absurder +absurdest +absurdities +absurdity +abuja +abundance +abundances +abundant +abuse +abused +abuser +abusers +abuses +abusing +abusive +abusiveness +abut +abutment +abutments +abuts +abutted +abutting +abuzz +abyss +abysses +abyssinia +abyssinian +acacia +acacias +academia +academic +academician +academicians +academics +academies +academy +acadia +acanthi +acanthus +acanthuses +accede +acceded +accedes +acceding +accent +accented +accenting +accents +accentuate +accentuated +accentuates +accentuating +accentuation +accenture +accept +acceptance +acceptances +accepted +accepting +accepts +access +accessed +accesses +accessing +accession +accessioned +accessioning +accessions +accessories +accessory +accident +accidents +accommodate +accommodated +accommodates +accommodating +accommodation +accommodations +accompanied +accompanies +accompaniment +accompaniments +accompanist +accompanists +accompany +accompanying +accord +accordance +accorded +according +accordion +accordions +accords +accost +accosted +accosting +accosts +account +accountancy +accountant +accountants +accounted +accounting +accounts +accoutrements +accra +accredit +accreditation +accredited +accrediting +accredits +accretion +accretions +accrue +accrued +accrues +accruing +accuracy +accurate +accurateness +accursed +accusation +accusations +accusative +accusatives +accusatory +accuse +accused +accuser +accusers +accuses +accusing +accustom +accustomed +accustoming +accustoms +ace +aced +acerbic +acerbity +aces +acetaminophen +acetate +acetates +acetic +acetone +acevedo +achaean +ache +achebe +ached +achernar +aches +acheson +achier +achiest +achieve +achieved +achievement +achievements +achiever +achievers +achieves +achieving +aching +achoo +achromatic +achy +acid +acidic +acidified +acidifies +acidify +acidifying +acidity +acids +acing +acme +acmes +acne +aconcagua +aconite +aconites +acorn +acorns +acosta +acoustic +acoustics +acquaint +acquaintance +acquaintances +acquainted +acquainting +acquaints +acquiesce +acquiesced +acquiescence +acquiescent +acquiesces +acquiescing +acquire +acquired +acquirement +acquires +acquiring +acquisition +acquisitions +acquisitive +acquisitiveness +acquit +acquits +acquitted +acquitting +acre +acreage +acreages +acres +acrid +acrider +acridest +acrimonious +acrimony +acrobat +acrobatic +acrobatics +acrobats +acronym +acronyms +across +acrostic +acrostics +acrux +act +actaeon +acted +acting +actinium +action +actions +activate +activated +activates +activating +activation +active +actives +activism +activist +activists +activities +activity +acton +actor +actors +actress +actresses +acts +actuaries +actuary +actuate +actuated +actuates +actuating +actuator +actuators +acuff +acuity +acumen +acupuncture +acupuncturist +acupuncturists +acute +acuteness +acuter +acutes +acutest +ada +adage +adages +adagio +adagios +adam +adamant +adams +adan +adana +adapt +adaptation +adaptations +adapted +adapter +adapters +adapting +adaptive +adaptor +adaptors +adapts +adar +add +addams +added +addend +addenda +addends +addendum +addendums +adder +adders +addict +addicted +addicting +addiction +addictions +addictive +addicts +addie +adding +addison +addition +additions +additive +additives +address +addressed +addressee +addressees +addresses +addressing +adds +adduce +adduced +adduces +adducing +aden +adenauer +adenoid +adenoids +adept +adeptness +adepts +adequacy +adequate +adhara +adhere +adhered +adherence +adherent +adherents +adheres +adhering +adhesion +adhesive +adhesives +adiabatic +adidas +adieu +adieus +adieux +adipose +adirondack +adirondacks +adjacent +adjective +adjectives +adjoin +adjoined +adjoining +adjoins +adjourn +adjourned +adjourning +adjournment +adjournments +adjourns +adjudge +adjudged +adjudges +adjudging +adjudicate +adjudicated +adjudicates +adjudicating +adjudication +adjudicator +adjudicators +adjunct +adjuncts +adjuration +adjurations +adjure +adjured +adjures +adjuring +adjust +adjusted +adjuster +adjusters +adjusting +adjustment +adjustments +adjustor +adjustors +adjusts +adjutant +adjutants +adkins +adman +admen +administer +administered +administering +administers +administrate +administrated +administrates +administrating +administration +administrations +administrative +administrator +administrators +admiration +admire +admired +admirer +admirers +admires +admiring +admission +admissions +admit +admits +admittance +admitted +admitting +admixture +admixtures +admonish +admonished +admonishes +admonishing +admonishment +admonishments +admonition +admonitions +admonitory +ado +adobe +adobes +adonis +adonises +adopt +adopted +adopting +adoption +adoptions +adoptive +adopts +adoration +adore +adored +adores +adoring +adorn +adorned +adorning +adornment +adornments +adorns +adrian +adriana +adriatic +adrienne +adrift +adroit +adroitness +ads +adumbrate +adumbrated +adumbrates +adumbrating +adumbration +advance +advanced +advancement +advancements +advances +advancing +advantage +advantaged +advantageous +advantages +advantaging +advent +adventist +adventitious +advents +adventure +adventured +adventurer +adventurers +adventures +adventuresome +adventuress +adventuresses +adventuring +adventurous +adverb +adverbs +adversaries +adversary +adverse +adverser +adversest +adversities +adversity +advert +adverted +adverting +advertise +advertised +advertisement +advertisements +advertiser +advertisers +advertises +advertising +adverts +advice +advise +advised +advisement +adviser +advisers +advises +advising +advisor +advisories +advisors +advisory +advocacy +advocate +advocated +advocates +advocating +adware +adze +adzes +aegean +aegis +aeneas +aeneid +aeon +aeons +aerate +aerated +aerates +aerating +aeration +aerator +aerators +aerie +aeries +aerobatics +aerobic +aerobics +aerodynamic +aerodynamics +aeronautics +aerospace +aery +aesop +aesthete +aesthetes +aesthetic +aesthetics +afar +affair +affairs +affect +affectation +affectations +affected +affecting +affection +affectionate +affections +affects +affidavit +affidavits +affinities +affinity +affirm +affirmation +affirmations +affirmative +affirmatives +affirmed +affirming +affirms +affix +affixed +affixes +affixing +afford +afforded +affording +affords +afforest +afforestation +afforested +afforesting +afforests +affray +affrays +affront +affronted +affronting +affronts +afghan +afghani +afghanistan +afghans +aficionado +aficionados +afire +afoot +aforementioned +aforesaid +aforethought +afraid +afresh +africa +african +africans +afrikaans +afrikaner +afrikaners +afro +afrocentrism +afros +aft +after +afterbirth +afterbirths +afterburner +afterburners +aftercare +aftereffect +aftereffects +aftermath +aftermaths +afternoon +afternoons +aftershave +aftershaves +aftershock +aftershocks +aftertaste +aftertastes +afterthought +afterthoughts +afterwards +afterword +afterwords +again +against +agamemnon +agape +agar +agassi +agassiz +agate +agates +agatha +agave +age +aged +ageing +ageings +ageism +agencies +agency +agenda +agendas +agent +agents +ages +aggie +aggravate +aggravated +aggravates +aggravating +aggravation +aggravations +aggregate +aggregated +aggregates +aggregating +aggregation +aggregations +aggression +aggressive +aggressiveness +aggressor +aggressors +aggrieve +aggrieved +aggrieves +aggrieving +aghast +aging +agings +agism +agitate +agitated +agitates +agitating +agitation +agitations +agitator +agitators +agnes +agnew +agni +agnostic +agnosticism +agnostics +ago +agog +agonies +agony +agra +agrarian +agrarians +agree +agreed +agreeing +agreement +agreements +agrees +agribusiness +agribusinesses +agrippa +agrippina +agronomist +agronomists +agronomy +aground +ague +aguirre +agustin +aha +ahab +ahead +ahem +ahmad +ahmadabad +ahmadinejad +ahmed +ahoy +ahriman +aid +aida +aide +aided +aides +aiding +aids +aiken +aim +aimed +aimee +aiming +aims +ainu +air +airborne +airbrush +airbrushed +airbrushes +airbrushing +aircraft +airdrop +airdropped +airdropping +airdrops +aired +aires +airfare +airfares +airhead +airheads +airier +airiest +airiness +airing +airings +airman +airmen +airport +airports +airs +airship +airships +airsick +airsickness +airspace +airstrip +airstrips +airtight +airwaves +airway +airways +airworthy +airy +aisha +ajar +ajax +akbar +akhmatova +akihito +akimbo +akin +akita +akiva +akkad +akron +amadeus +amado +amanda +amanuenses +amanuensis +amaranth +amaranths +amaru +amass +amassed +amasses +amassing +amaterasu +amateur +amateurish +amateurism +amateurs +amati +amatory +amaze +amazed +amazement +amazes +amazing +amazon +amazons +ambassador +ambassadors +ambassadorship +ambassadorships +amber +ambergris +ambiance +ambiances +ambidextrous +ambience +ambiences +ambient +ambiguities +ambiguity +ambiguous +ambition +ambitions +ambitious +ambitiousness +ambrosia +ambush +ambushed +ambushes +ambushing +amd +ameer +ameers +amen +amend +amended +amending +amendment +amendments +amends +amenhotep +amenities +amenity +amerasian +america +american +americana +americanism +americanisms +americans +americas +amerind +amerindian +amerindians +amerinds +amethyst +amethysts +amharic +amherst +amid +amidships +amidst +amie +amiga +amigo +amigos +amino +amir +amirs +amish +amiss +amity +amman +ammeter +ammeters +ammo +ammonia +ammunition +amnesia +amnesiac +amnesiacs +amnestied +amnesties +amnesty +amnestying +amniocenteses +amniocentesis +amoco +amoeba +amoebae +amoebas +amoebic +amok +among +amongst +amorous +amorousness +amorphous +amorphousness +amos +amount +amounted +amounting +amounts +amour +amours +amp +amparo +amperage +ampere +amperes +ampersand +ampersands +amphetamine +amphetamines +amphibian +amphibians +amphibious +amphitheatre +amphitheatres +amps +amputate +amputated +amputates +amputating +amputation +amputations +amputee +amputees +amritsar +amsterdam +amtrak +amuck +amundsen +amur +amuse +amused +amusement +amusements +amuses +amusing +amway +amy +ana +anabaptist +anachronism +anachronisms +anachronistic +anacin +anaconda +anacondas +anacreon +anaemia +anaemic +anaerobic +anaesthesia +anaesthetic +anaesthetics +anaesthetist +anaesthetists +anaesthetize +anaesthetized +anaesthetizes +anaesthetizing +anagram +anagrams +anaheim +ananias +anapest +anapests +anarchic +anarchism +anarchist +anarchistic +anarchists +anarchy +anasazi +anastasia +anathema +anathemas +anatomic +anatomies +anatomist +anatomists +anatomy +anaxagoras +ancestor +ancestors +ancestress +ancestresses +ancestries +ancestry +anchor +anchorage +anchorages +anchored +anchoring +anchorite +anchorites +anchorman +anchormen +anchorperson +anchorpersons +anchors +anchorwoman +anchorwomen +anchovies +anchovy +ancient +ancienter +ancientest +ancients +and +andaman +andante +andantes +andean +andersen +anderson +andes +andiron +andirons +andorra +andre +andrea +andrei +andres +andretti +andrew +andrews +andrianampoinimerina +androgen +androgynous +android +androids +andromache +andromeda +andropov +andy +anecdota +anecdote +anecdotes +anemometer +anemometers +anemone +anemones +aneurism +aneurisms +aneurysm +aneurysms +anew +angara +anger +angered +angering +angers +angevin +angie +angina +angiosperm +angiosperms +angkor +angora +angoras +angrier +angriest +angry +angst +angstrom +angstroms +anguish +anguished +anguishes +anguishing +angus +ani +aniakchak +animate +animated +animates +animating +animation +animations +animator +animators +anime +animism +animist +animistic +animists +animosities +animosity +animus +anion +anions +anise +aniseed +anita +ankara +ankh +ankhs +ann +anna +annam +annapurna +anne +annette +annex +annexation +annexations +annexed +annexes +annexing +annie +anniversaries +anniversary +annmarie +annotate +annotated +annotates +annotating +annotation +annotations +announce +announced +announcement +announcements +announcer +announcers +announces +announcing +annoy +annoyance +annoyances +annoyed +annoying +annoys +annuities +annuity +anode +anodes +anodyne +anodynes +anoint +anointed +anointing +anointment +anoints +anon +anons +anonymity +anonymous +anorak +anoraks +anorexia +anorexic +anorexics +another +anshan +answer +answered +answering +answers +ant +antacid +antacids +antaeus +antagonism +antagonisms +antagonist +antagonistic +antagonists +antananarivo +antarctic +antarctica +antares +ante +anteater +anteaters +antecedent +antecedents +antechamber +antechambers +anted +antedate +antedated +antedates +antedating +anteed +anteing +antenna +antennae +antennas +anterior +anteroom +anterooms +antes +anthem +anthems +anther +anthers +anthony +anthracite +anthrax +anthropocene +anthropocentric +anthropoid +anthropoids +anthropomorphic +anthropomorphism +anti +antiabortion +antiaircraft +antibiotic +antibiotics +antibodies +antibody +antic +antichrist +antichrists +anticipate +anticipated +anticipates +anticipating +anticipation +anticipations +anticipatory +anticked +anticking +antics +antidepressant +antidepressants +antidote +antidotes +antietam +antifreeze +antigen +antigens +antigone +antigua +antihero +antiheroes +antihistamine +antihistamines +antiknock +antimatter +antimony +antioch +antipas +antipasti +antipasto +antipastos +antipathetic +antipathies +antipathy +antiperspirant +antiperspirants +antipodes +antiquarian +antiquarians +antiquaries +antiquary +antiquate +antiquated +antiquates +antiquating +antique +antiqued +antiques +antiquing +antiquities +antiquity +antis +antiseptic +antiseptics +antitheses +antithesis +antitoxin +antitoxins +antitrust +antivirus +antiwar +antofagasta +antoine +antoinette +anton +antone +antonia +antoninus +antonio +antonius +antony +antonym +antonyms +ants +antwan +antwerp +anubis +anus +anuses +anxieties +anxiety +anxious +any +anybodies +anybody +anyhow +anymore +anyone +anything +anythings +anytime +anyway +anywhere +anzac +aorta +aortae +aortas +apace +apache +apaches +apart +apartheid +apartment +apartments +apathetic +apathy +apatosaurus +ape +aped +apennines +aperitif +aperitifs +aperture +apertures +apes +apex +apexes +aphasia +aphasic +aphasics +aphid +aphids +aphorism +aphorisms +aphoristic +aphrodisiac +aphrodisiacs +aphrodite +apia +apiaries +apiary +apices +apiece +aping +apocrypha +apogee +apogees +apostasies +apostasy +apostate +apostates +apostrophe +apostrophes +apothecaries +apothecary +apotheoses +apotheosis +apparatus +apparatuses +apparent +apparition +apparitions +appear +appearance +appearances +appeared +appearing +appears +appease +appeased +appeasement +appeasements +appeaser +appeasers +appeases +appeasing +append +appendage +appendages +appendectomies +appendectomy +appended +appendices +appendicitis +appending +appendix +appendixes +appends +appertain +appertained +appertaining +appertains +appetite +appetites +appoint +appointed +appointee +appointees +appointing +appointive +appointment +appointments +appoints +appomattox +apportion +apportioned +apportioning +apportionment +apportions +apposite +appositeness +apposition +appositive +appositives +appraise +appraised +appraiser +appraisers +appraises +appraising +appreciate +appreciated +appreciates +appreciating +appreciation +appreciations +appreciative +apprehend +apprehended +apprehending +apprehends +apprehension +apprehensions +apprehensive +apprehensiveness +apprentice +apprenticed +apprentices +apprenticeship +apprenticeships +apprenticing +apprise +apprised +apprises +apprising +approach +approached +approaches +approaching +approbation +approbations +appropriate +appropriated +appropriateness +appropriates +appropriating +appropriation +appropriations +approve +approved +approves +approving +approximate +approximated +approximates +approximating +approximation +approximations +apps +appurtenance +appurtenances +apr +apricot +apricots +apron +aprons +apropos +apse +apses +apt +apter +aptest +aptitude +aptitudes +aptness +aqua +aquae +aquafresh +aquamarine +aquamarines +aquanaut +aquanauts +aquaria +aquarium +aquariums +aquarius +aquariuses +aquas +aquatic +aquatics +aquavit +aqueduct +aqueducts +aqueous +aquifer +aquifers +aquinas +aquino +aquitaine +ara +arab +arabesque +arabesques +arabia +arabian +arabians +arabic +arabs +araby +arachnid +arachnids +arafat +araguaya +aramaic +aramco +arapaho +ararat +araucanian +arawak +arawakan +arbiter +arbiters +arbitrariness +arbitrary +arbitrate +arbitrated +arbitrates +arbitrating +arbitration +arbitrator +arbitrators +arbitron +arboreta +arboretum +arboretums +arborvitae +arborvitaes +arbutus +arbutuses +arc +arcade +arcades +arcadia +arcadian +arcane +arced +arch +archaic +archaism +archaisms +archbishop +archbishopric +archbishoprics +archbishops +archdeacon +archdeacons +archdiocese +archdioceses +archduke +archdukes +archean +arched +archenemies +archenemy +archer +archers +archery +arches +archest +archetype +archetypes +archie +archimedes +arching +architect +architects +architecture +architectures +archive +archived +archives +archiving +archivist +archivists +archness +archway +archways +arcing +arcked +arcking +arcs +arctic +arctics +arcturus +arden +ardent +arduous +arduousness +are +area +areas +arena +arenas +arequipa +ares +argentina +argentine +argentinian +argentinians +argo +argon +argonaut +argonne +argos +argosies +argosy +argot +argots +argue +argued +argues +arguing +argument +argumentation +argumentative +arguments +argus +aria +ariadne +arianism +arias +arid +aridity +aries +arieses +aright +ariosto +arise +arisen +arises +arising +aristarchus +aristides +aristocracies +aristocracy +aristocrat +aristocratic +aristocrats +aristophanes +arithmetic +arius +arizona +arizonan +arizonans +arizonian +arizonians +arjuna +ark +arkansan +arkansas +arks +arkwright +arm +armada +armadas +armageddon +armageddons +armagnac +armament +armaments +armand +armando +armani +armature +armatures +armband +armbands +armchair +armchairs +armed +armenia +armenian +armenians +armies +arming +arminius +armistice +armistices +armonk +armour +armpit +armpits +armrest +armrests +arms +armstrong +army +arneb +arnhem +arno +aroma +aromas +aromatherapy +aromatic +aromatics +aron +arose +around +arouse +aroused +arouses +arousing +arpeggio +arpeggios +arraign +arraigned +arraigning +arraignment +arraignments +arraigns +arrange +arranged +arrangement +arrangements +arranger +arrangers +arranges +arranging +arrant +array +arrayed +arraying +arrays +arrears +arrest +arrested +arresting +arrests +arrhenius +arrive +arrived +arrives +arriving +arrogance +arrogant +arrogate +arrogated +arrogates +arrogating +arron +arrow +arrowhead +arrowheads +arrowroot +arrows +arroyo +arroyos +arsenic +arson +arsonist +arsonists +art +artaxerxes +artefact +artefacts +artemis +arteries +artery +arthritic +arthritics +arthritis +arthropod +arthropods +arthur +arthurian +artichoke +artichokes +artie +artier +artiest +artifice +artificer +artificers +artifices +artisan +artisans +artist +artiste +artistes +artistic +artistry +artists +arts +artsier +artsiest +artsy +arturo +artwork +artworks +arty +aruba +aryan +aryans +asama +asbestos +ascend +ascendancy +ascendant +ascendants +ascended +ascendent +ascendents +ascending +ascends +ascension +ascensions +ascent +ascents +ascertain +ascertained +ascertaining +ascertains +ascetic +asceticism +ascetics +ascot +ascots +ascribe +ascribed +ascribes +ascribing +ascription +aseptic +asgard +ash +ashamed +ashanti +ashcan +ashcans +ashcroft +ashe +ashed +ashen +ashes +ashier +ashiest +ashikaga +ashing +ashkenazim +ashkhabad +ashore +ashram +ashrams +ashtray +ashtrays +ashy +asia +asiago +asian +asians +asiatic +asiatics +aside +asides +asimov +asinine +asininities +asininity +ask +askance +asked +askew +asking +asks +asmara +asoka +asp +asparagus +aspartame +aspect +aspects +aspen +aspens +asperger +asperities +asperity +aspersion +aspersions +asphyxia +asphyxiate +asphyxiated +asphyxiates +asphyxiating +asphyxiation +asphyxiations +aspic +aspics +aspidiske +aspirant +aspirants +aspirate +aspirated +aspirates +aspirating +aspiration +aspirations +aspire +aspired +aspires +aspirin +aspiring +aspirins +asps +asquith +ass +assad +assam +assamese +assassin +assassinate +assassinated +assassinates +assassinating +assassination +assassinations +assassins +assay +assayed +assaying +assays +assent +assented +assenting +assents +assert +asserted +asserting +assertion +assertions +assertive +assertiveness +asserts +asses +assess +assessed +assesses +assessing +assessment +assessments +assessor +assessors +asset +assets +asseverate +asseverated +asseverates +asseverating +assiduous +assiduousness +assign +assignation +assignations +assigned +assigning +assignment +assignments +assigns +assisi +assist +assistance +assistant +assistants +assisted +assisting +assists +assize +assizes +associate +associated +associates +associating +association +associations +associative +assonance +assort +assorted +assorting +assortment +assortments +assorts +assuage +assuaged +assuages +assuaging +assume +assumed +assumes +assuming +assumption +assumptions +assurance +assurances +assure +assured +assureds +assures +assuring +assyria +assyrian +assyrians +astaire +astana +astarte +aster +asterisk +asterisked +asterisking +asterisks +astern +asteroid +asteroids +asters +asthma +asthmatic +asthmatics +astigmatic +astigmatism +astigmatisms +astir +aston +astonish +astonished +astonishes +astonishing +astonishment +astor +astoria +astound +astounded +astounding +astounds +astrakhan +astray +astride +astringency +astringent +astringents +astronaut +astronautics +astronauts +astronomer +astronomers +astronomic +astronomy +astrophysicist +astrophysicists +astrophysics +astroturf +asturias +astute +astuteness +astuter +astutest +asunder +aswan +asymmetric +asymmetry +asymptotic +asynchronous +atacama +atari +atavism +atavistic +ate +athabasca +athabascan +atheism +atheist +atheistic +atheists +athena +athenian +athenians +athens +atkins +atkinson +atman +atmosphere +atmospheres +atmospheric +atom +atomic +atoms +atone +atoned +atonement +atones +atoning +atop +atreus +atria +atrium +atriums +atrocious +atrociousness +atrocities +atrocity +atrophied +atrophies +atrophy +atrophying +atropos +ats +attach +attached +attaching +attachment +attachments +attack +attacked +attacker +attackers +attacking +attacks +attain +attained +attaining +attainment +attainments +attains +attar +attempt +attempted +attempting +attempts +attend +attendance +attendances +attendant +attendants +attended +attender +attending +attends +attention +attentions +attentive +attentiveness +attenuate +attenuated +attenuates +attenuating +attenuation +attest +attestation +attestations +attested +attesting +attests +attic +attica +attics +attire +attired +attires +attiring +attitude +attitudes +attorney +attorneys +attract +attracted +attracting +attraction +attractions +attractive +attractiveness +attracts +attribute +attributed +attributes +attributing +attribution +attributions +attributive +attributives +attrition +attucks +attune +attuned +attunes +attuning +atwitter +atwood +aubrey +auburn +auction +auctioned +auctioneer +auctioneers +auctioning +auctions +audacious +audaciousness +audacity +auden +audi +audience +audiences +audio +audion +audios +audit +audited +auditing +audition +auditioned +auditioning +auditions +auditor +auditoria +auditorium +auditoriums +auditors +auditory +audits +audra +audrey +audubon +aug +augean +auger +augers +aught +aughts +augment +augmentation +augmentations +augmented +augmenting +augments +augsburg +augur +augured +auguries +auguring +augurs +augury +august +augusta +augustan +auguster +augustest +augustine +augusts +augustus +auk +auks +aunt +aunts +aura +aurae +aurangzeb +auras +aureomycin +auriga +aurora +auschwitz +auspice +auspices +auspicious +auspiciousness +aussie +aussies +austen +austere +austerer +austerest +austerities +austerity +austin +austins +austria +austrian +austrians +austronesian +authentic +authenticate +authenticated +authenticates +authenticating +authentication +authentications +authenticity +author +authored +authoring +authoritarian +authoritarianism +authoritarians +authoritative +authoritativeness +authorities +authority +authors +authorship +autism +autistic +auto +autobiographies +autobiography +autocracies +autocracy +autocrat +autocratic +autocrats +autograph +autographed +autographing +autographs +autoimmune +automata +automate +automated +automates +automatic +automatics +automating +automation +automaton +automatons +automotive +autonomous +autonomy +autopsied +autopsies +autopsy +autopsying +autos +autoworker +autoworkers +autumn +autumns +ava +avarice +avaricious +avast +avatar +avatars +avenge +avenged +avenger +avengers +avenges +avenging +aventine +avenue +avenues +aver +average +averaged +averages +averaging +avernus +averred +averring +averroes +avers +averse +aversion +aversions +avert +averted +averting +averts +avery +avesta +avian +aviaries +aviary +aviation +aviator +aviators +aviatrices +aviatrix +aviatrixes +avicenna +avid +avidity +avignon +avionics +avior +avis +avocado +avocadoes +avocados +avocation +avocations +avogadro +avoid +avoidance +avoided +avoiding +avoids +avoirdupois +avon +avow +avowed +avowing +avows +await +awaited +awaiting +awaits +awake +awaked +awaken +awakened +awakening +awakenings +awakens +awakes +awaking +award +awarded +awarding +awards +aware +awareness +awash +away +awe +awed +aweigh +awes +awesome +awestricken +awestruck +awing +awkward +awkwarder +awkwardest +awkwardness +awning +awnings +awoke +awoken +awry +axe +axed +axes +axing +axiom +axiomatic +axioms +axis +axon +axons +axum +aye +ayers +ayes +aymara +ayrshire +ayurveda +ayyubid +azana +azania +azerbaijan +azerbaijani +azimuth +azimuths +azores +azov +aztec +aztecan +aztecs +azure +azures +baa +baaed +baaing +baas +baath +baathist +babar +babbage +babbitt +babe +babes +babied +babier +babies +babiest +baboon +baboons +babur +babushka +babushkas +baby +babyhood +babying +babyish +babysat +babysit +babysits +babysitter +babysitters +babysitting +bacardi +bacchus +bach +back +backache +backaches +backbit +backbite +backbiter +backbiters +backbites +backbiting +backbitten +backboard +backboards +backbone +backbones +backbreaking +backdate +backdated +backdates +backdating +backdrop +backdrops +backed +backer +backers +backfire +backfired +backfires +backfiring +backgammon +background +backgrounds +backhand +backhanded +backhanding +backhands +backhoe +backhoes +backing +backings +backpack +backpacked +backpacker +backpackers +backpacking +backpacks +backrest +backrests +backs +backside +backsides +backspace +backspaced +backspaces +backspacing +backspin +backstabbing +backstage +backstairs +backstop +backstopped +backstopping +backstops +backstories +backstory +backstretch +backstretches +backstroke +backstroked +backstrokes +backstroking +backtrack +backtracked +backtracking +backtracks +backup +backups +backus +backward +backwardness +backwards +backwash +backwater +backwaters +backwoods +backyard +backyards +bacon +bacteria +bacterium +bactria +bad +badder +baddest +bade +baden +badge +badger +badgered +badgering +badgers +badges +badinage +badminton +badmouth +badmouthed +badmouthing +badmouths +badness +baedeker +baez +baffin +bag +baggage +bagged +baggier +baggies +baggiest +bagginess +bagging +baggy +baghdad +bagpipe +bagpipes +bags +baguio +bah +bahama +bahamas +bahamian +bahamians +bahia +bahrain +baird +bait +baited +baiting +baits +baize +bake +baked +baker +bakeries +bakers +bakery +bakes +baking +baku +bakunin +bamako +bambi +bamboo +bamboos +ban +banach +banana +bananas +bancroft +band +bandage +bandaged +bandages +bandaging +bandana +bandanas +bandanna +bandannas +banded +bandied +bandier +bandies +bandiest +banding +bandit +banditry +bandits +banditti +bands +bandstand +bandstands +bandung +bandwagon +bandwagons +bandwidth +bandy +bandying +bane +banes +bang +banged +banging +bangkok +bangor +bangs +bangui +bani +banish +banished +banishes +banishing +banishment +banister +banisters +banjarmasin +banjo +banjoes +banjoist +banjoists +banjos +bank +bankbook +bankbooks +banked +banker +bankers +banking +banknote +banknotes +bankrupt +bankruptcies +bankruptcy +bankrupted +bankrupting +bankrupts +banks +banned +banneker +banner +banners +banning +bannister +bannisters +banns +banquet +banqueted +banqueting +banquets +bans +banshee +banshees +bantam +bantams +bantamweight +bantamweights +banter +bantered +bantering +banters +banting +bantu +bantus +banyan +banyans +baobab +baobabs +baotou +baptism +baptisms +baptist +baptiste +baptisteries +baptistery +baptistries +baptistry +baptists +bar +barabbas +barack +barb +barbacoa +barbadian +barbadians +barbados +barbara +barbarian +barbarians +barbaric +barbarism +barbarisms +barbarities +barbarity +barbarossa +barbarous +barbary +barbecue +barbecued +barbecues +barbecuing +barbed +barbeque +barbequed +barbeques +barbequing +barber +barbered +barbering +barberries +barberry +barbers +barbershop +barbershops +barbie +barbing +barbiturate +barbiturates +barbour +barbra +barbs +barbuda +bard +bardeen +bards +bare +bareback +bared +barefaced +barefoot +barefooted +barehanded +bareheaded +bareness +barents +barer +bares +barest +barf +barfed +barfing +barfs +bargain +bargained +bargainer +bargaining +bargains +barge +barged +barges +barging +baring +barista +baristas +baritone +baritones +barium +bark +barked +barker +barkers +barking +barks +barmaid +barmaids +barman +barn +barnabas +barnaby +barnard +barnes +barnett +barney +barns +barnstorm +barnstormed +barnstorming +barnstorms +barnum +barnyard +barnyards +baroda +barometer +barometers +barometric +baron +baroness +baronesses +baronet +baronets +barons +baroque +barquisimeto +barr +barrack +barracks +barracuda +barracudas +barrage +barraged +barrages +barraging +barred +barren +barrener +barrenest +barrenness +barrens +barrera +barrett +barrette +barrettes +barricade +barricaded +barricades +barricading +barrie +barrier +barriers +barring +barrings +barrio +barrios +barrister +barristers +barron +barroom +barrooms +barrow +barrows +barry +barrymore +bars +bartender +bartenders +barter +bartered +bartering +barters +barth +barton +baruch +baryshnikov +base +baseboard +baseboards +based +baseman +basemen +basement +basements +baseness +baser +bases +basest +bash +bashed +bashes +bashing +basho +basic +basics +basie +basin +basing +basins +basis +bask +basked +basket +baskets +basking +basks +basque +basques +basra +bass +basses +basseterre +bassi +bassinet +bassinets +bassist +bassists +basso +bassoon +bassoonist +bassoonists +bassoons +bassos +bast +bastard +bastards +baste +basted +bastes +basting +bastion +bastions +bat +bataan +batch +batched +batches +batching +bate +bated +bates +bath +bathe +bathed +bather +bathers +bathes +bathhouse +bathhouses +bathing +bathmat +bathmats +bathos +bathrobe +bathrobes +bathroom +bathrooms +baths +bathsheba +bathtub +bathtubs +batik +batiks +bating +batista +batman +baton +batons +bats +batsman +batsmen +batted +batten +battened +battening +battens +batter +battered +batteries +battering +batters +battery +battier +battiest +batting +batty +batu +baud +baudouin +bauds +bauer +bauhaus +baum +bauxite +bavaria +bavarian +bawdier +bawdiest +bawdiness +bawdy +baxter +bay +bayberries +bayberry +bayed +bayer +bayes +bayesian +bayeux +baying +bayonet +bayoneted +bayoneting +bayonets +bayonetted +bayonetting +bayonne +bayou +bayous +bayreuth +bays +baywatch +bazaar +bazaars +bazooka +bazookas +bbb +beach +beachcomber +beachcombers +beached +beaches +beachhead +beachheads +beaching +beacon +beacons +bead +beaded +beadier +beadiest +beading +beads +beady +beak +beaked +beaker +beakers +beaks +beam +beamed +beaming +beams +bean +beanbag +beanbags +beaned +beaning +beans +bear +beard +bearded +bearding +beardmore +beards +bearer +bearers +bearing +bearings +bearish +bearnaise +bears +bearskin +bearskins +beast +beasts +beat +beaten +beater +beaters +beatific +beatification +beatifications +beatified +beatifies +beatify +beatifying +beating +beatings +beatitude +beatitudes +beatnik +beatniks +beatrice +beatrix +beatriz +beats +beau +beaufort +beaumarchais +beaumont +beauregard +beaus +beauteous +beautician +beauticians +beauties +beautification +beautified +beautifier +beautifiers +beautifies +beautify +beautifying +beauty +beauvoir +beaux +beaver +beavered +beavering +beavers +bebop +bebops +became +because +beck +becker +becket +beckett +beckon +beckoned +beckoning +beckons +becks +becky +become +becomes +becoming +bed +bedbug +bedbugs +bedded +bedder +bedding +bede +bedeck +bedecked +bedecking +bedecks +bedouin +bedouins +bedpan +bedpans +bedridden +bedrock +bedrocks +bedroom +bedrooms +beds +bedside +bedsides +bedsore +bedsores +bedspread +bedspreads +bedstead +bedsteads +bedtime +bedtimes +bee +beebe +beech +beecher +beeches +beechnut +beechnuts +beef +beefaroni +beefburger +beefed +beefier +beefiest +beefing +beefs +beefsteak +beefsteaks +beefy +beehive +beehives +beekeeper +beekeepers +beekeeping +been +beep +beeped +beeper +beepers +beeping +beeps +beer +beerbohm +beers +bees +beeswax +beet +beethoven +beeton +beets +beeves +befit +befits +befitted +befitting +befog +befogged +befogging +befogs +before +beforehand +befriend +befriended +befriending +befriends +beg +began +begat +beget +begets +begetting +beggar +beggared +beggaring +beggars +begged +begging +begin +beginner +beginners +beginning +beginnings +begins +begone +begonia +begonias +begot +begotten +begrudge +begrudged +begrudges +begrudging +begs +begun +behan +behave +behaved +behaves +behaving +behead +beheaded +beheading +beheads +behemoth +behemoths +behest +behests +behind +behinds +behring +beiderbecke +beige +beijing +being +beings +beirut +bekesy +bemoan +bemoaned +bemoaning +bemoans +bemuse +bemused +bemuses +bemusing +ben +benacerraf +benares +bench +benched +benches +benching +benchmark +benchmarks +bend +bender +bending +bendix +bends +beneath +benedict +benedictine +benediction +benedictions +benefaction +benefactions +benefactor +benefactors +benefactress +benefactresses +benefice +beneficence +beneficent +benefices +beneficiaries +beneficiary +benefit +benefited +benefiting +benefits +benefitted +benefitting +benet +benetton +benghazi +benighted +benign +benin +benita +benito +benjamin +bennett +bennie +benny +benson +bent +bentham +benton +bents +benumb +benumbed +benumbing +benumbs +benz +benzedrine +benzene +bequeath +bequeathed +bequeathing +bequeaths +bequest +bequests +berate +berated +berates +berating +berber +berbers +bereave +bereaved +bereavement +bereavements +bereaves +bereaving +bereft +berenice +beret +berets +beretta +berg +bergen +berger +bergerac +bergman +bergs +bergson +beriberi +bering +berkshire +berkshires +berm +berms +bermuda +bermudas +bern +bernadette +bernadine +bernanke +bernard +bernardo +bernays +bernbach +berne +bernhardt +bernice +bernie +bernini +bernstein +berra +berried +berries +berry +berrying +berserk +bert +berta +berth +bertha +berthed +berthing +berths +bertie +bertram +bertrand +beseech +beseeched +beseeches +beseeching +beset +besets +besetting +beside +besides +besiege +besieged +besieger +besiegers +besieges +besieging +besmirch +besmirched +besmirches +besmirching +besom +besoms +besot +besots +besotted +besotting +besought +bespeak +bespeaking +bespeaks +bespoke +bespoken +bess +bessemer +bessie +best +bested +bestiaries +bestiary +besting +bestir +bestirred +bestirring +bestirs +bestow +bestowed +bestowing +bestows +bestrid +bestridden +bestride +bestrides +bestriding +bestrode +bests +bet +beta +betake +betaken +betakes +betaking +betas +betcha +beth +bethany +bethe +bethesda +bethink +bethinking +bethinks +bethought +bethune +betide +betided +betides +betiding +betoken +betokened +betokening +betokens +betook +betray +betrayed +betrayer +betrayers +betraying +betrays +betroth +betrothed +betrothing +betroths +bets +betsy +bette +betted +better +bettered +bettering +betterment +betters +bettie +betting +bettor +bettors +betty +bettye +between +betwixt +beverage +beverages +bevies +bevy +beware +bewared +bewares +bewaring +bewitch +bewitched +bewitches +bewitching +beyond +bhutan +bhutto +bianca +bias +biased +biases +biasing +biassed +biassing +bib +bibs +bic +bicep +biceps +bicepses +bicker +bickered +bickering +bickers +bicuspid +bicuspids +bid +bidden +bidder +bidders +biddies +bidding +biddy +bide +bided +biden +bides +bidet +bidets +biding +bids +bier +bierce +biers +bifurcate +bifurcated +bifurcates +bifurcating +bifurcation +bifurcations +big +bigamist +bigamists +bigamous +bigamy +bigfoot +bigger +biggest +biggie +biggies +bighearted +bighorn +bighorns +bight +bights +bigmouth +bigmouths +bigness +bigot +bigoted +bigotries +bigotry +bigots +bigwig +bigwigs +bike +biked +biker +bikers +bikes +biking +bikini +bikinis +biko +bimbo +bimboes +bimbos +bimini +bin +binaries +binary +bind +binder +binderies +binders +bindery +binding +bindings +binds +binge +binged +bingeing +binges +bingo +binned +binning +bins +biochemist +biochemistry +biochemists +biodiversity +biofeedback +biographer +biographers +biographies +biography +bioko +bionic +biophysicist +biophysicists +biophysics +biopsied +biopsies +biopsy +biopsying +biorhythm +biorhythms +biosphere +biospheres +bipartisan +bipartite +biped +bipeds +birch +birched +birches +birching +bird +birdbath +birdbaths +birdbrained +birdcage +birdcages +birded +birdhouse +birdhouses +birdie +birdied +birdieing +birdies +birding +birds +birdseed +birdseye +birdwatcher +birdwatchers +biretta +birettas +birkenstock +birmingham +biro +birth +birthday +birthdays +birthed +birther +birthers +birthing +birthmark +birthmarks +birthrate +birthrates +birthright +birthrights +births +birthstone +birthstones +biscay +biscayne +biscuit +biscuits +bisect +bisected +bisecting +bisection +bisections +bisector +bisectors +bisects +bishkek +bishop +bishopric +bishoprics +bishops +bismarck +bismark +bismuth +bison +bisons +bisque +bisquick +bissau +bistro +bistros +bit +bitch +bitched +bitches +bitchier +bitchiest +bitching +bitchy +bitcoin +bitcoins +bite +bites +biting +bitmap +bits +bitten +bitter +bitterer +bitterest +bittern +bitterness +bitterns +bitters +bittersweet +bittersweets +bittorrent +bitumen +bituminous +bivouac +bivouacked +bivouacking +bivouacs +bizarre +bizet +bjerknes +bjork +bmw +boa +boar +board +boarded +boarder +boarders +boarding +boardinghouse +boardinghouses +boardroom +boardrooms +boards +boars +boas +boast +boasted +boaster +boasters +boasting +boasts +boat +boated +boater +boaters +boating +boatman +boatmen +boats +boatswain +boatswains +bob +bobbed +bobbi +bobbie +bobbies +bobbin +bobbing +bobbins +bobbitt +bobby +bobcat +bobcats +bobs +bobwhite +bobwhites +boccaccio +bode +boded +bodega +bodegas +bodes +bodhidharma +bodhisattva +bodice +bodices +bodies +boding +bodkin +bodkins +body +bodyguard +bodyguards +bodywork +boeing +boeotia +boeotian +boer +boers +boethius +bog +bogart +bogey +bogeyed +bogeying +bogeyman +bogeymen +bogeys +bogged +boggier +boggiest +bogging +boggy +bogie +bogied +bogies +bogs +bogus +bogy +bohemia +bohemian +bohemians +bohr +boise +boisterous +boisterousness +bomb +bombard +bombarded +bombardier +bombardiers +bombarding +bombardment +bombardments +bombards +bombast +bombastic +bombay +bombed +bomber +bombers +bombing +bombings +bombs +bonanza +bonanzas +bonaparte +bonaventure +bonbon +bonbons +bond +bondage +bonded +bonding +bonds +bondsman +bondsmen +bone +boned +bonehead +boneheads +boner +boners +bones +boney +boneyer +boneyest +bonfire +bonfires +bong +bonged +bonging +bongo +bongoes +bongos +bongs +bonhoeffer +bonier +boniest +boniface +boning +bonita +bonito +bonitoes +bonitos +bonkers +bonn +bonner +bonnet +bonnets +bonnie +bonnier +bonniest +bonny +bono +bonsai +bonus +bonuses +bony +boo +boob +boobed +boobies +boobing +boobs +booby +booed +boogie +boogied +boogieing +boogies +booing +book +bookcase +bookcases +booked +bookend +bookends +booker +bookie +bookies +booking +bookings +bookish +bookkeeper +bookkeepers +bookkeeping +bookmaker +bookmakers +bookmaking +bookmark +bookmarked +bookmarking +bookmarks +books +bookshop +bookshops +bookstore +bookstores +bookworm +bookworms +boom +boomed +boomerang +boomeranged +boomeranging +boomerangs +booming +booms +boon +boondocks +boone +boons +boor +boorish +boors +boos +boost +boosted +booster +boosters +boosting +boosts +boot +booted +bootee +bootees +booth +booths +bootie +booties +booting +boots +bootstrap +bootstraps +booty +booze +boozed +boozer +boozers +boozes +boozier +booziest +boozing +boozy +bop +bopped +bopping +bops +borax +bordeaux +borden +border +bordered +bordering +borders +bordon +bore +boreas +bored +boredom +borer +borers +bores +borg +borges +borgia +boring +boris +bork +born +borne +borneo +borobudur +borodin +boron +borough +boroughs +borrow +borrowed +borrower +borrowers +borrowing +borrows +borsch +borscht +boru +bosch +bose +bosh +bosnia +bosom +bosoms +bosporus +boss +bossed +bosses +bossier +bossiest +bossiness +bossing +bossy +boston +bostonian +bostons +bosun +bosuns +botanist +botanists +botany +botch +botched +botches +botching +both +bother +bothered +bothering +bothers +bothersome +botnet +botnets +botox +botswana +bottom +bottomed +bottoming +bottoms +boudoir +boudoirs +bouffant +bouffants +bough +boughs +bought +bounce +bounced +bouncer +bouncers +bounces +bouncier +bounciest +bouncing +bouncy +bound +boundaries +boundary +bounded +bounden +bounder +bounders +bounding +bounds +bounteous +bounties +bounty +bouquet +bouquets +bourbaki +bourbon +bourgeois +bourgeoisie +bournemouth +bout +boutique +boutiques +bouts +bovary +bovine +bovines +bow +bowditch +bowed +bowen +bower +bowers +bowery +bowie +bowing +bowman +bowmen +bows +bowsprit +bowsprits +bowstring +bowstrings +box +boxcar +boxcars +boxed +boxer +boxers +boxes +boxing +boxwood +boy +boycott +boycotted +boycotting +boycotts +boyd +boyer +boyfriend +boyfriends +boyhood +boyhoods +boyish +boyishness +boys +boysenberries +boysenberry +bozo +bozos +bra +brace +braced +braces +bracing +bracken +bracket +bracketed +bracketing +brackets +brackish +bract +bracts +brad +bradbury +braddock +bradford +brads +bradshaw +bradstreet +brady +brag +bragg +braggart +braggarts +bragged +bragger +braggers +bragging +brags +brahe +brahma +brahmagupta +brahman +brahmanism +brahmanisms +brahmans +brahmaputra +brahmas +brahmin +brahmins +brahms +braid +braided +braiding +braids +brain +brained +brainier +brainiest +braining +brains +brainstorm +brainstormed +brainstorming +brainstorms +brainteaser +brainteasers +brainwash +brainwashed +brainwashes +brainwashing +brainy +braise +braised +braises +braising +brake +braked +brakeman +brakemen +brakes +braking +brampton +bran +branch +branched +branches +branching +brand +branded +brandeis +branden +brandenburg +brandi +brandie +brandied +brandies +branding +brandish +brandished +brandishes +brandishing +brando +brandon +brands +brandt +brandy +brandying +brant +braque +bras +brash +brasher +brashest +brashness +brass +brasses +brassier +brassiere +brassieres +brassiest +brassy +brat +brats +brattain +brattier +brattiest +bratty +bravado +brave +braved +braver +bravery +braves +bravest +braving +bravo +bravos +bravura +bravuras +brawn +brawnier +brawniest +brawniness +brawny +bray +brayed +braying +brays +brazen +brazened +brazening +brazenness +brazens +brazier +braziers +brazos +breach +breached +breaches +breaching +bread +breadbasket +breadbaskets +breaded +breadfruit +breadfruits +breading +breads +breadth +breadths +breadwinner +breadwinners +break +breakage +breakages +breakdown +breakdowns +breaker +breakers +breakfast +breakfasted +breakfasting +breakfasts +breaking +breakneck +breakpoints +breaks +breakspear +breakthrough +breakthroughs +breakup +breakups +breakwater +breakwaters +breast +breastbone +breastbones +breasted +breasting +breasts +breaststroke +breaststrokes +breastwork +breastworks +breath +breathe +breathed +breather +breathers +breathes +breathier +breathiest +breathing +breaths +breathtaking +breathy +brecht +breckenridge +bred +breech +breeches +breed +breeder +breeders +breeding +breeds +breeze +breezed +breezes +breezier +breeziest +breeziness +breezing +breezy +bremen +brenda +brendan +brennan +brenner +brent +brenton +brest +bret +brethren +breton +brett +breviaries +breviary +brevity +brew +brewed +brewer +breweries +brewers +brewery +brewing +brews +brewster +brexit +brezhnev +brian +briana +brianna +briar +briars +bribe +bribed +bribery +bribes +bribing +brice +brick +brickbat +brickbats +bricked +bricking +bricks +bride +bridegroom +bridegrooms +brides +bridesmaid +bridesmaids +bridge +bridged +bridgehead +bridgeheads +bridgeport +bridger +bridges +bridget +bridgetown +bridgett +bridgette +bridgework +bridging +bridgman +brie +brief +briefcase +briefcases +briefed +briefer +briefest +briefing +briefings +briefness +briefs +brier +briers +brig +brigade +brigades +brigadoon +brigand +brigandage +brigands +brigantine +brigantines +briggs +brigham +bright +brighten +brightened +brightening +brightens +brighter +brightest +brightness +brighton +brigid +brigitte +brigs +brim +brimmed +brimming +brims +brimstone +brine +bring +bringing +brings +brinier +briniest +brink +brinkmanship +brinks +brinksmanship +briny +briquet +briquets +briquette +briquettes +brisbane +brisk +brisked +brisker +briskest +brisket +briskets +brisking +briskness +brisks +brit +britain +britannia +britannic +britannica +britches +british +britisher +britney +briton +britons +brits +britt +brittany +britten +brittney +brno +broach +broached +broaches +broaching +broad +broadband +broadcast +broadcasted +broadcaster +broadcasters +broadcasting +broadcasts +broaden +broadened +broadening +broadens +broader +broadest +broadness +broads +broadside +broadsided +broadsides +broadsiding +broadsword +broadswords +broadway +broadways +brobdingnag +brobdingnagian +brocade +brocaded +brocades +brocading +brochure +brochures +brock +brogan +brogans +brogue +brogues +brokaw +broke +broken +brokenhearted +broker +brokerage +brokerages +brokered +brokering +brokers +bromide +bromides +bromine +bronchi +bronchitis +broncho +bronchos +bronchus +bronco +broncos +bronson +bronte +brontosaur +brontosauri +brontosaurs +brontosaurus +brontosauruses +bronx +bronze +bronzed +bronzes +bronzing +brooch +brooches +brood +brooded +brooder +brooders +brooding +broods +brook +brooke +brooked +brooking +brooks +broom +brooms +broomstick +broomsticks +broth +brother +brotherhood +brotherhoods +brothers +broths +brought +brouhaha +brouhahas +brow +browbeat +browbeaten +browbeating +browbeats +brown +browne +browned +browner +brownest +brownian +brownie +brownies +browning +brownish +brownout +brownouts +browns +brownshirt +brownstone +brownstones +brows +browse +browsed +browser +browsers +browses +browsing +brr +brubeck +bruce +bruckner +bruin +bruins +bruise +bruised +bruiser +bruisers +bruises +bruising +brunch +brunched +brunches +brunching +brunei +brunet +brunets +brunette +brunettes +bruno +brunswick +brunt +brush +brushed +brushes +brushing +brushwood +brusk +brusker +bruskest +bruskness +brusque +brusqueness +brusquer +brusquest +brut +brute +brutes +brutish +brutus +bryan +bryant +bryce +brynner +bryon +brzezinski +bsd +btu +buber +buccaneer +buccaneered +buccaneering +buccaneers +buchanan +bucharest +buck +buckboard +buckboards +bucked +bucket +bucketed +bucketing +buckets +buckeye +buckeyes +bucking +buckingham +buckner +buckram +bucks +bucksaw +bucksaws +buckshot +buckskin +buckskins +buckteeth +bucktooth +bucktoothed +buckwheat +bud +budapest +budded +buddha +buddhas +buddhism +buddhisms +buddhist +buddhists +buddies +budding +buddings +buddy +budge +budged +budgerigar +budgerigars +budges +budget +budgetary +budgeted +budgeting +budgets +budgie +budgies +budging +buds +budweiser +buff +buffed +buffer +buffered +buffering +buffers +buffet +buffeted +buffeting +buffets +buffing +buffoon +buffoonery +buffoons +buffs +buffy +buford +bug +bugaboo +bugaboos +bugatti +bugbear +bugbears +bugged +bugger +buggers +buggier +buggies +buggiest +bugging +buggy +bugs +buick +bujumbura +bukhara +bukharin +bum +bummed +bummer +bummers +bummest +bumming +bump +bumped +bumper +bumpers +bumpier +bumpiest +bumping +bumpkin +bumpkins +bumppo +bumps +bumptious +bumpy +bums +bun +bunch +bunche +bunched +bunches +bunching +buncombe +bundesbank +bundestag +bung +bunged +bunging +bungs +bunin +bunion +bunions +bunk +bunked +bunker +bunkers +bunkhouse +bunkhouses +bunking +bunks +bunkum +bunnies +bunny +buns +bunsen +bunt +bunted +bunting +buntings +bunts +bunyan +buoy +buoyancy +buoyant +buoyed +buoying +buoys +bur +burbank +burberry +burch +burden +burdened +burdening +burdens +burdensome +burdock +bureau +bureaucracies +bureaucracy +bureaucrat +bureaucratic +bureaucrats +bureaus +bureaux +burg +burgeon +burgeoned +burgeoning +burgeons +burger +burgers +burgess +burgher +burghers +burgoyne +burgs +burgundian +burgundies +burgundy +buried +buries +burka +burkas +burke +burks +burma +burmese +burn +burned +burner +burners +burnett +burning +burnish +burnished +burnishes +burnishing +burnoose +burnooses +burnous +burnouses +burnout +burnouts +burns +burnside +burnt +burp +burped +burping +burps +burr +burred +burring +burris +burrito +burritos +burro +burros +burroughs +burrow +burrowed +burrowing +burrows +burrs +burs +bursa +bursar +bursars +bursitis +burst +bursted +bursting +bursts +burt +burton +burundi +bury +burying +bus +busbies +busboy +busboys +busby +busch +bused +buses +bush +bushed +bushes +bushido +bushier +bushiest +bushiness +bushing +bushings +bushman +bushmen +bushwhack +bushwhacked +bushwhacker +bushwhackers +bushwhacking +bushwhacks +bushy +busied +busier +busies +busiest +business +businesses +businessman +businessmen +businesswoman +businesswomen +busing +buss +bussed +busses +bussing +bust +busted +buster +busters +busting +busts +busy +busybodies +busybody +busying +busyness +busywork +but +butane +butch +butcher +butchered +butcheries +butchering +butchers +butchery +butches +buts +butt +butte +butted +butter +buttercup +buttercups +buttered +butterfat +butterfingers +butterier +butteries +butteriest +buttering +butternut +butternuts +butters +butterscotch +buttery +buttes +butting +buttock +buttocks +button +buttoned +buttoning +buttons +buttress +buttressed +buttresses +buttressing +butts +buxom +buxtehude +buy +buyer +buyers +buying +buyout +buyouts +buys +buzz +buzzard +buzzards +buzzed +buzzer +buzzers +buzzes +buzzing +buzzword +buzzwords +bye +byers +byes +bygone +bygones +bypass +bypassed +bypasses +bypassing +bypast +byproduct +byproducts +byrd +byron +byronic +bystander +bystanders +byte +bytes +byway +byways +byword +bywords +byzantine +byzantines +byzantium +cab +cabana +cabanas +cabaret +cabarets +cabbage +cabbages +cabbed +cabbie +cabbies +cabbing +cabby +cabernet +cabin +cabinet +cabinetmaker +cabinetmakers +cabinets +cabins +caboose +cabooses +cabot +cabrera +cabrini +cabs +cacao +cacaos +cache +cached +caches +cachet +cachets +caching +cacophonies +cacophonous +cacophony +cacti +cactus +cactuses +cad +cadaver +cadaverous +cadavers +caddie +caddied +caddies +caddish +caddy +caddying +cadence +cadences +cadenza +cadenzas +cadet +cadets +cadge +cadged +cadger +cadgers +cadges +cadging +cadiz +cadmium +cadre +cadres +cads +caducei +caduceus +caedmon +caesar +caesarean +caesareans +caesarian +caesarians +caesars +caesura +caesurae +caesuras +cafeteria +cafeterias +caffeinated +caffeine +caftan +caftans +cage +caged +cages +cagey +cageyness +cagier +cagiest +caginess +caging +cagney +cagy +cahokia +cahoot +cahoots +caiaphas +cain +cains +cairn +cairns +cairo +caisson +caissons +cajun +cajuns +cake +caked +cakes +caking +cam +camacho +camaraderie +camber +cambered +cambering +cambers +cambia +cambium +cambiums +cambodia +cambodian +cambodians +cambrian +cambric +cambridge +camcorder +camcorders +came +camembert +camemberts +cameo +cameos +camera +cameraman +cameramen +cameras +camerawoman +camerawomen +cameron +cameroon +cameroons +camoens +camp +campaign +campaigned +campaigner +campaigners +campaigning +campaigns +camped +camper +campers +campfire +campfires +campground +campgrounds +camphor +campier +campiest +campinas +camping +campos +camps +campsite +campsites +campus +campuses +campy +camry +cams +camshaft +camshafts +camus +can +canaan +canada +canadian +canadians +canard +canards +canaries +canary +canasta +canberra +cancan +cancans +cancer +cancerous +cancers +cancun +candace +candice +candid +candidacies +candidacy +candidate +candidates +candide +candidness +candied +candies +candy +candying +cane +caned +canes +canine +canines +caning +canister +canisters +canker +cankered +cankering +cankerous +cankers +cannabis +cannabises +canned +canneries +cannery +cannes +cannier +canniest +canniness +canning +cannon +cannonade +cannonaded +cannonades +cannonading +cannoned +cannoning +cannons +cannot +canny +canoe +canoed +canoeing +canoeist +canoeists +canoes +canon +canons +canopied +canopies +canopus +canopy +canopying +cans +cant +cantabrigian +cantankerous +cantankerousness +cantata +cantatas +canted +canteen +canteens +canter +canterbury +cantered +cantering +canters +canting +canto +canton +cantonese +cantons +cantor +cantors +cantos +cants +cantu +canute +canvas +canvasback +canvasbacks +canvased +canvases +canvasing +canvass +canvassed +canvasser +canvassers +canvasses +canvassing +canyon +canyons +cap +capacious +capaciousness +capacitance +capacities +capacitor +capacitors +capacity +caparison +caparisoned +caparisoning +caparisons +cape +caped +capek +caper +capered +capering +capers +capes +capet +capetian +capetown +caph +capistrano +capon +capone +capons +capote +capped +capping +cappuccino +cappuccinos +capra +capri +caprice +caprices +capricious +capriciousness +capricorn +capricorns +caps +capsize +capsized +capsizes +capsizing +capstan +capstans +captain +captaincies +captaincy +captained +captaining +captains +caption +captioned +captioning +captions +captious +captivate +captivated +captivates +captivating +captivation +captive +captives +captivities +captivity +captor +captors +capture +captured +captures +capturing +capuchin +car +cara +caracas +carafe +carafes +carapace +carapaces +carat +carats +caravaggio +caravan +caravans +caraway +caraways +carbide +carbides +carbine +carbines +carbohydrate +carbohydrates +carbon +carbonate +carbonated +carbonates +carbonating +carbonation +carboniferous +carbons +carborundum +carboy +carboys +carbs +carcass +carcasses +carcinogen +carcinogenic +carcinogenics +carcinogens +carcinoma +carcinomas +carcinomata +card +cardboard +carded +cardenas +cardiac +cardiff +cardigan +cardigans +cardin +carding +cardio +cardiogram +cardiograms +cardozo +cards +cardsharp +cardsharps +care +cared +careen +careened +careening +careens +career +careered +careering +careers +carefree +caregiver +caregivers +cares +caress +caressed +caresses +caressing +caret +caretaker +caretakers +carets +careworn +carey +carfare +cargo +cargoes +cargos +carib +caribbean +caribbeans +caribou +caribous +caricature +caricatured +caricatures +caricaturing +caricaturist +caricaturists +caries +carina +caring +carissa +carjack +carjacked +carjacker +carjackers +carjacking +carjackings +carjacks +carmen +carmine +carmines +carnage +carnap +carnation +carnations +carnegie +carney +carnivore +carnivores +carnivorous +carnot +carom +caromed +caroming +caroms +carotid +carotids +carouse +caroused +carouser +carousers +carouses +carousing +carp +carpathian +carpathians +carped +carpenter +carpentered +carpentering +carpenters +carpentry +carpet +carpetbag +carpetbagged +carpetbagger +carpetbaggers +carpetbagging +carpetbags +carpeted +carpeting +carpets +carpi +carping +carport +carports +carps +carpus +carr +carranza +carriage +carriages +carriageway +carrie +carried +carrier +carriers +carries +carrion +carrot +carrots +carry +carrying +carryout +cars +carsick +carsickness +carson +cart +carted +carter +cartesian +carthage +carthaginian +cartier +carting +cartographer +cartographers +cartography +carton +cartons +cartoon +cartooned +cartooning +cartoonist +cartoonists +cartoons +cartridge +cartridges +carts +cartwright +caruso +carve +carved +carver +carvers +carves +carving +carvings +cary +caryatid +caryatides +caryatids +casandra +casanova +casanovas +cascade +cascaded +cascades +cascading +case +cased +casein +casement +casements +cases +casework +caseworker +caseworkers +casey +cash +cashback +cashed +cashes +cashew +cashews +cashier +cashiered +cashiering +cashiers +cashing +cashmere +casing +casings +casino +casinos +casio +cask +casket +caskets +casks +caspar +caspian +cassandra +cassatt +cassava +cassavas +cassette +cassettes +cassia +cassias +cassie +cassino +cassinos +cassiopeia +cassius +cassock +cassocks +cast +castaneda +castanet +castanets +castaway +castaways +caste +caster +casters +castes +castigate +castigated +castigates +castigating +castigation +castigator +castigators +casting +castings +castoff +castoffs +castor +castors +castrate +castrated +castrates +castrating +castration +castrations +castries +castro +casts +casuist +casuistry +casuists +cat +catacomb +catacombs +catamaran +catamarans +cataract +cataracts +catarrh +catastrophe +catastrophes +catastrophic +catatonic +catatonics +catawba +catbird +catbirds +catboat +catboats +catch +catcher +catchers +catches +catchier +catchiest +catching +catchings +catchment +catchphrase +catchup +catchword +catchwords +catchy +catechise +catechised +catechises +catechising +catechism +catechisms +categories +category +cater +catered +caterer +caterers +catering +caterings +caters +catfish +catfishes +catgut +catharses +catharsis +cathartic +cathartics +cathay +cather +catherine +catheter +catheters +cathode +cathodes +cathryn +cathy +cation +cations +catkin +catkins +catnap +catnapped +catnapping +catnaps +catnip +cato +cats +catsup +catt +cattier +cattiest +cattiness +catty +caucasian +caucasians +caucasoid +caucasus +cauchy +caucus +caucused +caucuses +caucusing +caucussed +caucussing +caught +causation +causative +cause +caused +causes +causeway +causeways +causing +caustic +caustics +caution +cautionary +cautioned +cautioning +cautions +cautious +cautiousness +cave +caveat +caveats +caved +caveman +cavemen +cavendish +cavern +cavernous +caverns +caves +caviar +caviare +caving +cavities +cavity +cavort +cavorted +cavorting +cavorts +cavour +caw +cawed +cawing +caws +caxton +cayenne +cayman +cayuga +cease +ceased +ceasefire +ceases +ceasing +ceausescu +cebu +cebuano +cedar +cedars +cede +ceded +cedes +ceding +cedric +cement +cemented +cementing +cements +cemeteries +cemetery +cenotaph +cenotaphs +cenozoic +censer +censers +censor +censored +censoring +censorious +censors +censorship +censure +censured +censures +censuring +census +censused +censuses +censusing +cent +centaur +centaurs +centaurus +centenarian +centenarians +centenaries +centenary +centigrade +centigram +centigramme +centigrammes +centigrams +centime +centimes +centipede +centipedes +centrifuge +centrifuged +centrifuges +centrifuging +centrist +centrists +cents +centuries +centurion +centurions +century +cepheid +cepheus +ceramic +ceramics +cerberus +cerebra +cerebrum +cerebrums +ceremonies +ceremonious +ceremony +cerenkov +ceres +cerf +cerise +certain +certainties +certainty +certificate +certificated +certificates +certificating +certification +certifications +certified +certifies +certify +certifying +certitude +cervantes +cervices +cervix +cervixes +cesar +cesarean +cesareans +cesarian +cesarians +cessation +cessations +cession +cessions +cessna +cetacean +cetaceans +cetus +cezanne +chad +chadwick +chafe +chafed +chafes +chaff +chaffed +chaffinch +chaffinches +chaffing +chaffs +chafing +chagrin +chagrined +chagrining +chagrinned +chagrinning +chagrins +chain +chained +chaining +chains +chainsaw +chainsawed +chainsawing +chainsaws +chair +chaired +chairing +chairman +chairmanship +chairmen +chairperson +chairpersons +chairs +chairwoman +chairwomen +chaise +chaises +chaitanya +chaitin +chamber +chambermaid +chambermaids +chambers +chambray +chammies +chammy +chamois +chamoix +champ +champagne +champagnes +champed +champing +champion +championed +championing +champions +championship +championships +champs +chan +chance +chanced +chanceries +chancery +chances +chancier +chanciest +chancing +chancy +chandigarh +chandon +chandra +chandragupta +chandrasekhar +chaney +chang +changchun +change +changed +changeover +changeovers +changes +changing +changsha +chant +chanted +chanter +chanters +chantey +chanteys +chanties +chanting +chants +chanty +chanukah +chanukahs +chaos +chaotic +chap +chaperon +chaperone +chaperoned +chaperones +chaperoning +chaperons +chapman +chappaquiddick +chapped +chapping +chaps +chapt +chapter +chapters +char +character +characteristic +characteristics +characters +charade +charades +charbray +chardonnay +charge +charged +charger +chargers +charges +charging +charier +chariest +chariot +charioteer +charioteers +chariots +charisma +charismatic +charismatics +charities +charity +charm +charmaine +charmed +charmer +charmers +charmin +charming +charms +charon +charred +charring +chars +chart +charted +charter +chartered +chartering +charters +charting +chartism +chartres +chartreuse +charts +charwoman +charwomen +chary +charybdis +chase +chased +chaser +chasers +chases +chasing +chasity +chasm +chasms +chassis +chaste +chasten +chastened +chastening +chastens +chaster +chastest +chastise +chastised +chastisement +chastisements +chastises +chastising +chastity +chat +chateaubriand +chateaus +chats +chattahoochee +chattanooga +chatted +chatter +chatterbox +chatterboxes +chattered +chatterer +chatterers +chattering +chatters +chatterton +chattier +chattiest +chattiness +chatting +chatty +chaucer +chauffeur +chauffeured +chauffeuring +chauffeurs +chauncey +chautauqua +chauvinism +chauvinist +chauvinistic +chauvinists +chavez +chayefsky +che +cheap +cheapen +cheapened +cheapening +cheapens +cheaper +cheapest +cheapness +cheapskate +cheapskates +cheat +cheated +cheater +cheaters +cheating +cheats +chechen +chechnya +check +checked +checker +checkers +checking +checkmate +checkmated +checkmates +checkmating +checkout +checkouts +checkpoint +checkpoints +checkroom +checkrooms +checks +checkup +checkups +cheddar +cheek +cheekbone +cheekbones +cheeked +cheekier +cheekiest +cheekiness +cheeking +cheeks +cheeky +cheep +cheeped +cheeping +cheeps +cheer +cheered +cheerier +cheeriest +cheeriness +cheering +cheerios +cheers +cheery +cheese +cheeseburger +cheeseburgers +cheesecake +cheesecakes +cheesed +cheeses +cheesier +cheesiest +cheesing +cheesy +cheetah +cheetahs +cheetos +cheever +chef +chefs +chekhov +chemise +chemises +chemist +chemistry +chemists +chemotherapy +chen +cheney +chengdu +chennai +cheops +cheri +cherie +cherish +cherished +cherishes +cherishing +chernenko +chernomyrdin +cherokee +cherokees +cheroot +cheroots +cherries +cherry +cherub +cherubic +cherubim +cherubims +cherubs +chesapeake +cheshire +chess +chessboard +chessboards +chessman +chessmen +chest +chester +chesterton +chestnut +chestnuts +chests +cheviot +chevron +chevrons +chevy +chew +chewed +chewer +chewers +chewier +chewiest +chewing +chews +chewy +cheyenne +cheyennes +chi +chianti +chiantis +chiaroscuro +chiba +chibcha +chic +chicago +chicagoan +chicana +chicaneries +chicanery +chicano +chicer +chicest +chichi +chichis +chick +chickadee +chickadees +chickasaw +chicken +chickened +chickening +chickenpox +chickens +chickpea +chickpeas +chicks +chickweed +chicories +chicory +chid +chidden +chide +chided +chides +chiding +chief +chiefer +chiefest +chiefs +chieftain +chieftains +chiffon +chigger +chiggers +chignon +chignons +chihuahua +chihuahuas +chimaera +chimaeras +chimborazo +chime +chimed +chimera +chimeras +chimes +chiming +chimney +chimneys +chimp +chimpanzee +chimpanzees +chimps +chimu +chin +china +chinatown +chinese +chink +chinked +chinking +chinks +chinned +chinning +chino +chinook +chinooks +chinos +chins +chinstrap +chinstraps +chintz +chintzier +chintziest +chintzy +chip +chipewyan +chipmunk +chipmunks +chipped +chipper +chippers +chippewa +chipping +chips +chiquita +chirico +chiropodist +chiropodists +chiropody +chiropractic +chiropractics +chiropractor +chiropractors +chirp +chirped +chirping +chirps +chirrup +chirruped +chirruping +chirrupped +chirrupping +chirrups +chisinau +chit +chitchat +chitchats +chitchatted +chitchatting +chitin +chits +chittagong +chivas +chive +chives +chock +chocked +chocking +chocks +choctaw +choice +choicer +choices +choicest +choir +choirs +choke +choked +choker +chokers +chokes +choking +chomp +chomped +chomping +chomps +chomsky +chongqing +choose +chooses +choosey +choosier +choosiest +choosing +choosy +chop +chopin +chopped +chopper +choppered +choppering +choppers +choppier +choppiest +choppiness +chopping +choppy +chopra +chops +chopstick +chopsticks +chord +chords +chore +choreograph +choreographed +choreographer +choreographers +choreographic +choreographing +choreographs +choreography +chores +chorister +choristers +chorus +chorused +choruses +chorusing +chorussed +chorussing +chose +chosen +chou +chow +chowder +chowders +chowed +chowing +chows +chretien +chris +christ +christa +christchurch +christen +christendom +christendoms +christened +christening +christenings +christens +christensen +christi +christian +christianities +christianity +christians +christie +christina +christine +christmas +christmases +christoper +christopher +christs +christy +chromatic +chrome +chromed +chromes +chroming +chromium +chromosome +chromosomes +chronic +chronometer +chronometers +chrysanthemum +chrysanthemums +chrysostom +chubbier +chubbiest +chubbiness +chubby +chuck +chucked +chucking +chucks +chug +chugged +chugging +chugs +chukchi +chum +chumash +chummed +chummier +chummiest +chumminess +chumming +chummy +chump +chumps +chums +chung +chungking +chunk +chunkier +chunkiest +chunkiness +chunks +chunky +church +churches +churchgoer +churchgoers +churchman +churchmen +churchyard +churchyards +churn +churned +churning +churns +churriguera +chute +chutes +chutney +chutzpa +chutzpah +chuvash +ciabatta +ciabattas +cicada +cicadae +cicadas +cicatrice +cicatrices +cicatrix +cicero +cid +cider +ciders +cigar +cigarette +cigarettes +cigars +cimabue +cinch +cinched +cinches +cinching +cinchona +cinchonas +cincinnati +cincture +cinctures +cinder +cindered +cindering +cinders +cindy +cinema +cinemas +cinemascope +cinematic +cinematographer +cinematographers +cinematography +cinerama +cinnabar +cinnamon +cipher +ciphered +ciphering +ciphers +cipro +circa +circadian +circe +circuit +circuited +circuiting +circuitous +circuitry +circuits +circumcise +circumcised +circumcises +circumcising +circumcision +circumcisions +circumference +circumferences +circumnavigate +circumnavigated +circumnavigates +circumnavigating +circumnavigation +circumnavigations +circumscribe +circumscribed +circumscribes +circumscribing +circumscription +circumscriptions +circumspect +circumspection +circumstance +circumstanced +circumstances +circumstancing +circumvent +circumvented +circumventing +circumvention +circumvents +circus +circuses +cirrhosis +cirrus +cisco +cistern +cisterns +citation +citations +cite +cited +cites +citibank +cities +citigroup +citing +citizen +citizenry +citizens +citizenship +citric +citroen +citron +citrons +citrous +citrus +citruses +city +civet +civets +civic +civics +civies +civvies +coach +coached +coaches +coaching +coachman +coachmen +coarse +coarsen +coarsened +coarseness +coarsening +coarsens +coarser +coarsest +coast +coasted +coaster +coasters +coasting +coasts +coat +coated +coating +coatings +coats +coauthor +coauthored +coauthoring +coauthors +coax +coaxed +coaxes +coaxing +cob +cobain +cobb +cobra +cobras +cobs +cobweb +cobwebs +cocaine +cocci +coccis +coccus +coccyges +coccyx +coccyxes +cochabamba +cochin +cochise +cochran +cock +cockade +cockades +cockamamie +cockatoo +cockatoos +cocked +cockeyed +cockfight +cockfights +cockier +cockiest +cockiness +cocking +cockney +cockneys +cockpit +cockpits +cockroach +cockroaches +cocks +cockscomb +cockscombs +cocksucker +cocksuckers +cocksure +cocky +cocoa +cocoanut +cocoanuts +cocoas +coconut +coconuts +cocoon +cocooned +cocooning +cocoons +cocteau +cod +coda +codas +codded +codding +code +coded +codeine +codependency +codependent +codependents +codes +codex +codfish +codfishes +codger +codgers +codices +codification +codifications +codified +codifies +codify +codifying +coding +cods +cody +coed +coeds +coeducation +coefficient +coefficients +coerce +coerced +coerces +coercing +coercion +coercive +coexist +coexisted +coexistence +coexisting +coexists +coffee +coffeecake +coffeecakes +coffeehouse +coffeehouses +coffeepot +coffeepots +coffees +coffer +coffers +coffey +coffin +coffined +coffining +coffins +cog +cogency +cogent +cogitate +cogitated +cogitates +cogitating +cogitation +cognac +cognacs +cognate +cognates +cognition +cognitive +cognomen +cognomens +cognomina +cogs +cohabit +cohabitation +cohabited +cohabiting +cohabits +cohan +cohen +cohere +cohered +coherence +coherent +coheres +cohering +cohesion +cohesive +cohesiveness +cohort +cohorts +coif +coifed +coiffed +coiffing +coiffure +coiffured +coiffures +coiffuring +coifing +coifs +coimbatore +coin +coinage +coinages +coincide +coincided +coincidence +coincidences +coincident +coincides +coinciding +coined +coining +coins +cointreau +coitus +coke +coked +cokes +coking +coma +comanche +comanches +comas +comatose +comb +combat +combatant +combatants +combated +combating +combative +combats +combatted +combatting +combed +combination +combinations +combine +combined +combines +combing +combining +combo +combos +combs +combustion +come +comeback +comebacks +comedian +comedians +comedic +comedienne +comediennes +comedies +comedown +comedowns +comedy +comer +comers +comes +comet +comets +comeuppance +comeuppances +comfier +comfiest +comfort +comforted +comforter +comforters +comforting +comforts +comfy +comic +comics +coming +comings +comintern +comity +comma +command +commandant +commandants +commanded +commandeer +commandeered +commandeering +commandeers +commander +commanders +commanding +commandment +commandments +commando +commandoes +commandos +commands +commas +commemorate +commemorated +commemorates +commemorating +commemoration +commemorations +commemorative +commence +commenced +commencement +commencements +commences +commencing +commend +commendation +commendations +commended +commending +commends +commensurate +comment +commentaries +commentary +commentate +commentated +commentates +commentating +commentator +commentators +commented +commenting +comments +commerce +commiserate +commiserated +commiserates +commiserating +commiseration +commiserations +commissar +commissariat +commissariats +commissaries +commissars +commissary +commission +commissioned +commissioner +commissioners +commissioning +commissions +commit +commitment +commitments +commits +committed +committee +committees +committing +commode +commodes +commodious +commodities +commodity +commodore +commodores +common +commoner +commoners +commonest +commons +commotion +commotions +commune +communed +communes +communicant +communicants +communicate +communicated +communicates +communicating +communication +communications +communicative +communicator +communicators +communing +communion +communions +communique +communiques +communism +communist +communistic +communists +communities +community +commutation +commutations +commutative +commute +commuted +commuter +commuters +commutes +commuting +como +comoros +compact +compacted +compacter +compactest +compacting +compaction +compactness +compactor +compactors +compacts +companies +companion +companions +companionship +companionway +companionways +company +compaq +comparative +comparatives +compare +compared +compares +comparing +comparison +comparisons +compartment +compartments +compass +compassed +compasses +compassing +compassion +compassionate +compatriot +compatriots +compendia +compendium +compendiums +compensate +compensated +compensates +compensating +compensation +compensations +compensatory +compete +competed +competence +competences +competencies +competency +competent +competes +competing +competition +competitions +competitive +competitiveness +competitor +competitors +component +components +comport +comported +comporting +comportment +comports +compose +composed +composer +composers +composes +composing +composite +composites +composition +compositions +compositor +compositors +compost +composted +composting +composts +composure +compote +compotes +compound +compounded +compounding +compounds +comprehend +comprehended +comprehending +comprehends +comprehension +comprehensions +comprehensive +comprehensiveness +comprehensives +compress +compressed +compresses +compressing +compression +compressor +compressors +comprise +comprised +comprises +comprising +compromise +compromised +compromises +compromising +compton +compunction +compunctions +compuserve +computation +computations +compute +computed +computer +computers +computes +computing +comrade +comrades +comradeship +comte +con +conakry +conan +concatenate +concatenated +concatenates +concatenating +concatenation +concatenations +concave +concavities +concavity +concede +conceded +concedes +conceding +conceit +conceited +conceits +conceive +conceived +conceives +conceiving +concentrate +concentrated +concentrates +concentrating +concentration +concentrations +concentric +concept +conception +conceptions +concepts +concern +concerned +concerning +concerns +concert +concerted +concerti +concertina +concertinaed +concertinaing +concertinas +concerting +concertmaster +concertmasters +concerto +concertos +concerts +concession +concessionaire +concessionaires +concessions +concetta +conch +conches +conchs +concierge +concierges +concise +conciseness +conciser +concisest +concoct +concocted +concocting +concoction +concoctions +concocts +concomitant +concomitants +concord +concordance +concordances +concordant +concorde +concords +concourse +concourses +concrete +concreted +concretes +concreting +concubine +concubines +concur +concurred +concurrence +concurrences +concurrency +concurrent +concurring +concurs +concussion +concussions +condemn +condemnation +condemnations +condemnatory +condemned +condemning +condemns +condensation +condensations +condense +condensed +condenser +condensers +condenses +condensing +condescend +condescended +condescending +condescends +condescension +condiment +condiments +condition +conditioned +conditioner +conditioners +conditioning +conditions +condo +condoes +condom +condominium +condominiums +condoms +condone +condoned +condones +condoning +condor +condorcet +condors +condos +conduce +conduced +conduces +conducing +conducive +conduct +conducted +conducting +conduction +conductive +conductivity +conductor +conductors +conducts +conduit +conduits +cone +cones +conestoga +confab +confabbed +confabbing +confabs +confection +confectioner +confectioneries +confectioners +confectionery +confections +confederacies +confederacy +confederate +confederated +confederates +confederating +confederation +confederations +confer +conference +conferences +conferencing +conferment +conferments +conferred +conferrer +conferring +confers +confess +confessed +confesses +confessing +confession +confessions +confessor +confessors +confetti +confidant +confidante +confidantes +confidants +confide +confided +confidence +confidences +confident +confides +confiding +configuration +configurations +configure +configured +configures +configuring +confine +confined +confinement +confinements +confines +confining +confirm +confirmation +confirmations +confirmatory +confirmed +confirming +confirms +confiscate +confiscated +confiscates +confiscating +confiscation +confiscations +conform +conformance +conformation +conformations +conformed +conforming +conformist +conformists +conformity +conforms +confound +confounded +confounding +confounds +confront +confrontation +confrontations +confronted +confronting +confronts +confucian +confucianism +confucianisms +confucians +confucius +confuse +confused +confuses +confusing +confusion +confusions +confute +confuted +confutes +confuting +conga +congaed +congaing +congas +congest +congested +congesting +congestion +congestive +congests +congo +congregate +congregated +congregates +congregating +congregation +congregations +congress +congresses +congressman +congressmen +congresswoman +congresswomen +congreve +congruence +congruent +congruities +congruity +congruous +conic +conics +conifer +coniferous +conifers +conjecture +conjectured +conjectures +conjecturing +conjoin +conjoined +conjoining +conjoins +conjoint +conjugate +conjugated +conjugates +conjugating +conjugation +conjugations +conjunction +conjunctions +conjunctive +conjunctives +conjunctivitis +conjuncture +conjunctures +conjure +conjured +conjurer +conjurers +conjures +conjuring +conjuror +conjurors +conk +conked +conking +conks +connect +connected +connecticut +connecting +connection +connections +connective +connectives +connectivity +connector +connectors +connects +conned +connemara +conner +connery +connie +conning +connivance +connive +connived +conniver +connivers +connives +conniving +connoisseur +connoisseurs +connors +connotation +connotations +connotative +connote +connoted +connotes +connoting +conquer +conquered +conquering +conqueror +conquerors +conquers +conquest +conquests +conquistador +conquistadores +conquistadors +conrad +cons +consanguinity +conscience +consciences +conscientious +conscientiousness +conscious +consciousness +consciousnesses +conscript +conscripted +conscripting +conscription +conscripts +consecrate +consecrated +consecrates +consecrating +consecration +consecrations +consecutive +consensus +consensuses +consent +consented +consenting +consents +consequence +consequences +consequent +conservation +conservationist +conservationists +conservatism +conservative +conservatives +conservator +conservatories +conservators +conservatory +conserve +conserved +conserves +conserving +consider +considerate +consideration +considerations +considered +considering +considers +consign +consigned +consigning +consignment +consignments +consigns +consist +consisted +consistencies +consistency +consistent +consisting +consists +consonance +consonances +consonant +consonants +consort +consorted +consortia +consorting +consortium +consortiums +consorts +conspicuous +conspiracies +conspiracy +conspirator +conspirators +conspire +conspired +conspires +conspiring +constance +constancy +constant +constantine +constants +consternation +constipate +constipated +constipates +constipating +constipation +constituencies +constituency +constituent +constituents +constitute +constituted +constitutes +constituting +constitution +constitutions +constrain +constrained +constraining +constrains +constraint +constraints +constrict +constricted +constricting +constriction +constrictions +constrictive +constrictor +constrictors +constricts +construct +constructed +constructing +construction +constructions +constructive +constructor +constructors +constructs +construe +construed +construes +construing +consume +consumed +consumer +consumerism +consumers +consumes +consuming +consummate +consummated +consummates +consummating +consummation +consummations +consumption +consumptive +consumptives +contact +contacted +contacting +contacts +contagion +contagions +contagious +contain +contained +container +containers +containing +containment +contains +contaminant +contaminants +contaminate +contaminated +contaminates +contaminating +contamination +contemporaneous +contemporaries +contemporary +contempt +contemptuous +contend +contended +contender +contenders +contending +contends +content +contented +contentedness +contenting +contention +contentions +contentious +contentment +contents +contest +contestant +contestants +contested +contesting +contests +context +contexts +contiguity +contiguous +continence +continent +continents +contingencies +contingency +contingent +contingents +continua +continuance +continuances +continuation +continuations +continue +continued +continues +continuing +continuity +continuous +continuum +continuums +contort +contorted +contorting +contortion +contortionist +contortionists +contortions +contorts +contour +contoured +contouring +contours +contraband +contraception +contraceptive +contraceptives +contract +contracted +contracting +contraction +contractions +contractor +contractors +contracts +contradict +contradicted +contradicting +contradiction +contradictions +contradictory +contradicts +contradistinction +contradistinctions +contraption +contraptions +contraries +contrariness +contrariwise +contrary +contrast +contrasted +contrasting +contrasts +contravene +contravened +contravenes +contravening +contravention +contraventions +contreras +contretemps +contribute +contributed +contributes +contributing +contribution +contributions +contributor +contributors +contributory +contrite +contrition +contrivance +contrivances +contrive +contrived +contrives +contriving +controversies +controversy +controvert +controverted +controverting +controverts +contumacious +contuse +contused +contuses +contusing +contusion +contusions +conundrum +conundrums +conurbation +conurbations +convection +convene +convened +convenes +convenience +conveniences +convenient +convening +convent +convention +conventions +convents +converge +converged +convergence +convergences +convergent +converges +converging +conversant +conversation +conversations +converse +conversed +converses +conversing +conversion +conversions +convert +converted +converter +converters +converting +convertor +convertors +converts +convex +convexity +convey +conveyance +conveyances +conveyed +conveyer +conveyers +conveying +conveyor +conveyors +conveys +convict +convicted +convicting +conviction +convictions +convicts +convince +convinced +convinces +convincing +convocation +convocations +convoke +convoked +convokes +convoking +convoy +convoyed +convoying +convoys +conway +coo +cooed +cooing +cook +cookbook +cookbooks +cooke +cooked +cooker +cookeries +cookers +cookery +cookie +cookies +cooking +cookout +cookouts +cooks +coon +coons +coop +cooped +cooper +cooperate +cooperated +cooperates +cooperating +cooperation +cooperative +cooperatives +coopered +coopering +coopers +cooperstown +cooping +coops +coordinate +coordinated +coordinates +coordinating +coordination +coordinator +coordinators +coors +coos +coot +cootie +cooties +coots +cop +copacabana +cope +copeck +copecks +coped +copenhagen +copernican +copernicus +copes +copied +copier +copiers +copies +coping +copings +copious +copped +copper +copperhead +copperheads +coppers +coppertone +coppery +coppice +coppices +copping +copra +cops +copse +copses +copter +copters +coptic +copy +copycat +copycats +copycatted +copycatting +copying +copyright +copyrighted +copyrighting +copyrights +copywriter +copywriters +coquette +coquetted +coquettes +coquetting +coquettish +cora +cord +corded +cording +cordite +cordoba +cordon +cordoned +cordoning +cordons +cords +corduroy +corduroys +core +cored +cores +corespondent +corespondents +corey +corfu +coriander +corina +corine +coring +corinne +corinth +corinthian +corinthians +cork +corked +corking +corks +corkscrew +corkscrewed +corkscrewing +corkscrews +corm +cormack +cormorant +cormorants +corms +corn +cornbread +corncob +corncobs +cornea +corneas +corned +corner +cornered +cornering +corners +cornerstone +cornerstones +cornet +cornets +cornice +cornices +cornier +corniest +corning +cornish +cornrow +cornrowed +cornrowing +cornrows +corns +cornstarch +cornucopia +cornucopias +corny +corona +coronado +coronae +coronaries +coronary +coronas +coronation +coronations +coroner +coroners +coronet +coronets +corot +corpora +corporate +corporation +corporations +corps +corpse +corpses +corpus +corpuses +correct +corrected +correcter +correctest +correcting +correction +corrections +corrective +correctives +correctness +corrector +corrects +correggio +correspond +corresponded +correspondence +correspondences +correspondent +correspondents +corresponding +corresponds +corridor +corridors +corrine +corroborate +corroborated +corroborates +corroborating +corroboration +corroborations +corroborative +corrode +corroded +corrodes +corroding +corrosion +corrosive +corrosives +corrugate +corrugated +corrugates +corrugating +corrugation +corrugations +corrupt +corrupted +corrupter +corruptest +corrupting +corruption +corruptions +corruptness +corrupts +corsage +corsages +corsair +corsairs +corset +corseted +corseting +corsets +corsica +corsican +cortes +corteses +cortex +cortexes +cortez +cortices +cortisone +coruscate +coruscated +coruscates +coruscating +corvette +corvus +cory +cosby +cosier +cosies +cosiest +cosign +cosignatories +cosignatory +cosigned +cosigner +cosigners +cosigning +cosigns +cosine +cosmetic +cosmetics +cosmic +cosmogonies +cosmogony +cosmonaut +cosmonauts +cosmos +cosmoses +cosponsor +cosponsored +cosponsoring +cosponsors +cossack +cost +costar +costarred +costarring +costars +costco +costed +costing +costings +costner +costs +costume +costumed +costumes +costuming +cosy +cot +cote +coterie +coteries +cotes +cotonou +cotopaxi +cots +cottage +cottages +cotter +cotters +cotton +cottoned +cottoning +cottonmouth +cottonmouths +cottons +cottonseed +cottonseeds +cottonwood +cottonwoods +couch +couched +couches +couching +cougar +cougars +cough +coughed +coughing +coughs +count +countdown +countdowns +counted +countenance +countenanced +countenances +countenancing +counter +counteract +counteracted +counteracting +counteraction +counteractions +counteracts +counterattack +counterattacked +counterattacking +counterattacks +countered +counterespionage +counterfeit +counterfeited +counterfeiter +counterfeiters +counterfeiting +counterfeits +countering +countermand +countermanded +countermanding +countermands +counteroffer +counteroffers +counterpane +counterpanes +counterpart +counterparts +counterpoint +counterpoints +counterproductive +counters +countersank +countersign +countersigned +countersigning +countersigns +countersink +countersinking +countersinks +countersunk +countertenor +countertenors +counterweight +counterweights +countess +countesses +counties +counting +countries +countrified +country +countryman +countrymen +countryside +countrysides +countrywoman +countrywomen +counts +county +coup +coupe +couperin +coupes +coupon +coupons +coups +courage +courageous +courbet +courier +couriers +course +coursed +courser +courses +coursing +court +courted +courteous +courteousness +courtesan +courtesans +courtesies +courtesy +courthouse +courthouses +courtier +courtiers +courting +courtney +courtroom +courtrooms +courts +courtship +courtships +courtyard +courtyards +cousin +cousins +cousteau +cove +coven +covenant +covenanted +covenanting +covenants +covens +coventries +coventry +cover +coverage +covered +covering +coverings +covers +covert +coverts +coves +covet +coveted +coveting +covetous +covetousness +covets +covey +coveys +cow +coward +cowardice +cowards +cowbird +cowbirds +cowboy +cowboys +cowed +cower +cowered +cowering +cowers +cowhand +cowhands +cowhide +cowhides +cowing +coworker +coworkers +cowper +cowpoke +cowpokes +cowpox +cowpuncher +cowpunchers +cows +cox +coxcomb +coxcombs +coxswain +coxswains +coy +coyer +coyest +coyness +coyote +coyotes +cozen +cozened +cozening +cozens +crab +crabbe +crabbed +crabbier +crabbiest +crabbiness +crabbing +crabby +crabs +crack +crackdown +crackdowns +cracked +cracker +crackerjack +crackerjacks +crackers +cracking +crackpot +crackpots +cracks +crackup +crackups +craft +crafted +craftier +craftiest +craftiness +crafting +crafts +craftsman +craftsmanship +craftsmen +crafty +crag +craggier +craggiest +craggy +crags +craig +cram +crammed +cramming +cramp +cramped +cramping +cramps +crams +cranach +cranberries +cranberry +crane +craned +cranes +crania +craning +cranium +craniums +crank +crankcase +crankcases +cranked +crankier +crankiest +crankiness +cranking +cranks +crankshaft +crankshafts +cranky +cranmer +crannies +cranny +crap +crape +crapes +crapped +crappier +crappiest +crapping +crappy +craps +crash +crashed +crashes +crashing +crass +crasser +crassest +crassness +crate +crated +crater +cratered +cratering +craters +crates +crating +cravat +cravats +crave +craved +craven +cravens +craves +craving +cravings +craw +crawfish +crawfishes +crawford +craws +cray +crayfish +crayfishes +crayon +crayoned +crayoning +crayons +craze +crazed +crazes +crazier +crazies +craziest +craziness +crazing +crazy +creak +creaked +creakier +creakiest +creaking +creaks +creaky +cream +creamed +creamer +creameries +creamers +creamery +creamier +creamiest +creaminess +creaming +creams +creamy +crease +creased +creases +creasing +create +created +creates +creating +creation +creationism +creations +creative +creativeness +creatives +creativity +creator +creators +creature +creatures +crecy +credence +credenza +credenzas +credit +credited +crediting +creditor +creditors +credits +credo +credos +cree +creed +creeds +creek +creeks +creep +creeper +creepers +creepier +creepiest +creepiness +creeping +creeps +creepy +creighton +cremate +cremated +cremates +cremating +cremation +cremations +crematoria +crematories +crematorium +crematoriums +crematory +creon +creosote +creosoted +creosotes +creosoting +crepe +crepes +crept +crescendi +crescendo +crescendos +crescent +crescents +cress +cressida +crest +crested +cresting +crests +cretaceous +cretan +crete +cretin +cretinous +cretins +crevasse +crevasses +crevice +crevices +crew +crewed +crewing +crewman +crewmen +crews +crib +cribbage +cribbed +cribbing +cribs +crichton +crick +cricked +cricket +cricketer +cricketers +crickets +cricking +cricks +cried +crier +criers +cries +crime +crimea +crimean +crimes +crimp +crimped +crimping +crimps +crimson +crimsoned +crimsoning +crimsons +cringe +cringed +cringes +cringing +crisco +crises +crisis +crisp +crisped +crisper +crispest +crispier +crispiest +crisping +crispness +crisps +crispy +crisscross +crisscrossed +crisscrosses +crisscrossing +cristina +criteria +criterion +criterions +critic +criticism +criticisms +critics +critique +critiqued +critiques +critiquing +critter +critters +croak +croaked +croaking +croaks +croat +croatia +croatian +croatians +croats +croce +crochet +crocheted +crocheting +crochets +croci +crock +crocked +crockery +crockett +crocks +crocus +crocuses +croesus +crofts +croissant +croissants +crone +crones +cronies +cronin +cronkite +cronus +crony +crook +crooked +crookeder +crookedest +crookedness +crookes +crooking +crooks +croon +crooned +crooner +crooners +crooning +croons +crop +cropped +cropper +croppers +cropping +crops +croquet +croquette +croquettes +crosby +crosier +crosiers +cross +crossbar +crossbars +crossbeam +crossbeams +crossbones +crossbow +crossbows +crossbred +crossbreed +crossbreeding +crossbreeds +crosscheck +crosschecked +crosschecking +crosschecks +crossed +crosser +crosses +crossest +crossfire +crossfires +crossing +crossings +crossness +crossover +crossovers +crosspiece +crosspieces +crossroad +crossroads +crosstown +crossways +crosswise +crossword +crosswords +crotch +crotches +crotchet +crotchets +crotchety +crouch +crouched +crouches +crouching +croup +croupier +croupiers +croupiest +croupy +crow +crowbar +crowbars +crowd +crowded +crowdfund +crowdfunded +crowdfunding +crowdfunds +crowding +crowds +crowed +crowing +crown +crowned +crowning +crowns +crows +crozier +croziers +crucified +crucifies +crucifix +crucifixes +crucifixion +crucifixions +cruciform +cruciforms +crucify +crucifying +crud +cruddier +cruddiest +cruddy +crude +crudeness +cruder +crudest +crudities +crudity +cruet +cruets +cruikshank +cruise +cruised +cruiser +cruisers +cruises +cruising +crumb +crumbed +crumbier +crumbiest +crumbing +crumbs +crumby +crummier +crummiest +crummy +crumpet +crumpets +crunch +crunched +cruncher +crunches +crunchier +crunchiest +crunching +crunchy +crusade +crusaded +crusader +crusaders +crusades +crusading +crush +crushed +crushes +crushing +crusoe +crust +crustacean +crustaceans +crusted +crustier +crustiest +crusting +crusts +crusty +crutch +crutches +crux +cruxes +cruz +cry +crybabies +crybaby +crying +cryings +cryogenics +crypt +cryptic +cryptogram +cryptograms +cryptographer +cryptographers +cryptography +cryptozoic +crypts +csonka +ctesiphon +cub +cuba +cuban +cubans +cube +cubed +cubes +cubic +cubing +cubism +cubist +cubists +cubit +cubits +cubs +cuckoo +cuckoos +cucumber +cucumbers +cud +cuds +cue +cued +cueing +cues +cuff +cuffed +cuffing +cuffs +cuing +cuisinart +cuisine +cuisines +cumbersome +cumin +cummerbund +cummerbunds +cumming +cummings +cumquat +cumquats +cums +cunard +cuneiform +cunning +cunninger +cunningest +cunningham +cunt +cunts +cup +cupboard +cupboards +cupcake +cupcakes +cupid +cupidity +cupids +cupped +cupping +cups +cur +curacao +curacies +curacy +curate +curates +curative +curatives +curator +curators +curb +curbed +curbing +curbs +curd +curds +cure +cured +curer +cures +curfew +curfews +curie +curies +curing +curio +curios +curiosities +curiosity +curious +curitiba +curmudgeon +curmudgeons +currant +currants +currencies +currency +current +currents +curried +currier +curries +curry +currycomb +currycombed +currycombing +currycombs +currying +curs +curse +cursed +curses +cursing +cursive +cursor +cursors +cursory +curst +curt +curtain +curtained +curtaining +curtains +curter +curtest +curtis +curtness +curtsey +curtseyed +curtseying +curtseys +curtsied +curtsies +curtsy +curtsying +curvaceous +curvacious +curvature +curvatures +curve +curved +curves +curvier +curviest +curving +curvy +cushier +cushiest +cushion +cushioned +cushioning +cushions +cushy +cusp +cuspid +cuspids +cusps +cuss +cussed +cusses +cussing +custard +custards +custer +custodian +custodians +custody +custom +customary +customer +customers +customs +cut +cutback +cutbacks +cute +cuteness +cuter +cutesier +cutesiest +cutest +cutesy +cutoff +cutoffs +cutout +cutouts +cuts +cutter +cutters +cutthroat +cutthroats +cutting +cuttings +cutup +cutups +cuvier +cuzco +cvs +cyanide +cybernetic +cybernetics +cyberpunk +cyberpunks +cybersex +cyberspace +cygnet +cygnets +cygnus +cynic +cynicism +cynics +cynosure +cynosures +cynthia +cypher +cypress +cypresses +cyprian +cypriot +cypriots +cyprus +cyrano +cyrus +cyst +cystic +cysts +czar +czarina +czarinas +czars +czech +czechia +czechs +czerny +dab +dabbed +dabbing +dabs +dacca +dacha +dachas +dachau +dachshund +dachshunds +dacron +dacrons +dad +dada +dadaism +daddies +daddy +dado +dadoes +dados +dads +daemon +daemons +daffier +daffiest +daffy +daft +dafter +daftest +dagger +daggers +daguerre +daguerreotype +daguerreotyped +daguerreotypes +daguerreotyping +dagwood +dahomey +daintier +dainties +daintiest +daintiness +dainty +daiquiri +daiquiris +dairies +dairy +dairying +dairymaid +dairymaids +dairyman +dairymen +dais +daises +daisies +daisy +dakar +dakota +dakotan +dakotas +dam +damage +damaged +damages +damaging +damascus +damask +damasked +damasking +damasks +dame +dames +damian +damien +damion +dammed +damming +damn +damnation +damndest +damned +damnedest +damning +damns +damon +damp +damped +dampen +dampened +dampening +dampens +damper +dampers +dampest +damping +dampness +damps +dams +damson +damsons +dana +dance +danced +dancer +dancers +dances +dancing +dander +dandier +dandies +dandiest +dandruff +dandy +dane +danes +danger +dangerous +dangers +danish +dank +danker +dankest +dankness +dannie +danny +danone +dante +danton +danube +danubian +daphne +dapper +dapperer +dapperest +darby +darcy +dare +dared +daren +dares +darfur +darin +daring +dario +darius +dark +darken +darkened +darkening +darkens +darker +darkest +darkness +darkroom +darkrooms +darn +darned +darneder +darnedest +darning +darns +darren +darrin +darrow +dart +dartboard +dartboards +darted +darth +darting +dartmoor +dartmouth +darts +darvon +darwin +darwinian +darwinism +dash +dashboard +dashboards +dashed +dashes +dashiki +dashikis +dashing +data +database +databases +datatype +date +dated +dates +dating +dative +datives +datum +daub +daubed +dauber +daubers +daubing +daubs +daugherty +daughter +daughters +daumier +daunt +daunted +daunting +daunts +dauphin +dauphins +davao +dave +davenport +davenports +david +davids +davidson +davies +davis +davit +davits +davy +dawes +dawn +dawned +dawning +dawns +dawson +day +daybed +daybeds +daybreak +daydream +daydreamed +daydreamer +daydreamers +daydreaming +daydreams +daydreamt +days +daytime +dayton +daze +dazed +dazes +dazing +deacon +deaconess +deaconesses +deacons +deactivate +deactivated +deactivates +deactivating +dead +deadbeat +deadbeats +deaden +deadened +deadening +deadens +deader +deadest +deadhead +deadpan +deadpanned +deadpanning +deadpans +deadwood +deaf +deafen +deafened +deafening +deafens +deafer +deafest +deafness +dean +deana +deandre +deann +deanna +deanne +deans +dear +dearer +dearest +dearness +dears +dearth +dearths +death +deathbed +deathbeds +deaths +deathtrap +deathtraps +deaves +deb +debar +debark +debarkation +debarked +debarking +debarks +debarment +debarred +debarring +debars +debase +debased +debasement +debasements +debases +debasing +debate +debated +debater +debaters +debates +debating +debauch +debauched +debaucheries +debauchery +debauches +debauching +debbie +debby +debenture +debentures +debian +debit +debited +debiting +debits +debonair +debora +deborah +debra +debrief +debriefed +debriefing +debriefings +debriefs +debris +debs +debt +debtor +debtors +debts +debug +debugged +debugger +debuggers +debugging +debugs +debunk +debunked +debunking +debunks +debussy +debut +debuted +debuting +debuts +dec +decade +decadence +decadent +decadents +decades +decaf +decaffeinate +decaffeinated +decaffeinates +decaffeinating +decamp +decamped +decamping +decamps +decant +decanted +decanter +decanters +decanting +decants +decapitate +decapitated +decapitates +decapitating +decapitation +decapitations +decatur +decay +decayed +decaying +decays +decca +deccan +decease +deceased +deceases +deceasing +decedent +decedents +deceit +deceits +deceive +deceived +deceiver +deceivers +deceives +deceiving +december +decembers +decencies +decency +decent +deception +deceptions +deceptive +deceptiveness +decide +decided +decides +deciding +deciduous +decimate +decimated +decimates +decimating +decimation +decipher +deciphered +deciphering +deciphers +decision +decisions +decisive +decisiveness +deck +decked +decker +deckhand +deckhands +decking +decks +decode +decoded +decoder +decodes +decoding +decommission +decommissioned +decommissioning +decommissions +decompose +decomposed +decomposes +decomposing +decomposition +decompress +decompressed +decompresses +decompressing +decompression +decongestant +decongestants +deconstruction +deconstructions +decontaminate +decontaminated +decontaminates +decontaminating +decontamination +decor +decorate +decorated +decorates +decorating +decoration +decorations +decorative +decorator +decorators +decorous +decors +decorum +decoy +decoyed +decoying +decoys +decrease +decreased +decreases +decreasing +decree +decreed +decreeing +decrees +decremented +decrements +decrepit +decrepitude +decrescendi +decrescendo +decrescendos +decried +decries +decry +decrying +decryption +dedekind +dedicate +dedicated +dedicates +dedicating +dedication +dedications +deduce +deduced +deduces +deducing +deduct +deducted +deducting +deduction +deductions +deductive +deducts +dee +deed +deeded +deeding +deeds +deejay +deejays +deem +deemed +deeming +deems +deena +deep +deepen +deepened +deepening +deepens +deeper +deepest +deepness +deeps +deer +deere +deers +deerskin +deface +defaced +defacement +defaces +defacing +defamation +defamatory +defame +defamed +defames +defaming +defeat +defeated +defeating +defeatism +defeatist +defeatists +defeats +defecate +defecated +defecates +defecating +defecation +defect +defected +defecting +defection +defections +defective +defectives +defector +defectors +defects +defend +defendant +defendants +defended +defender +defenders +defending +defends +defensive +defensiveness +defer +deference +deferment +deferments +deferred +deferring +defers +defiance +defiant +deficiencies +deficiency +deficient +deficit +deficits +defied +defies +define +defined +definer +definers +defines +defining +definite +definiteness +definition +definitions +definitive +defoe +defogger +defoggers +deforest +deforestation +deforested +deforesting +deforests +deform +deformation +deformations +deformed +deforming +deformities +deformity +deforms +defraud +defrauded +defrauding +defrauds +defray +defrayed +defraying +defrays +defrost +defrosted +defroster +defrosters +defrosting +defrosts +deft +defter +deftest +deftness +defunct +defuse +defused +defuses +defusing +defy +defying +degas +degeneracy +degenerate +degenerated +degenerates +degenerating +degeneration +degenerative +degeneres +degradation +degrade +degraded +degrades +degrading +degree +degrees +dehumidified +dehumidifier +dehumidifiers +dehumidifies +dehumidify +dehumidifying +dehydrate +dehydrated +dehydrates +dehydrating +dehydration +deice +deiced +deicer +deicers +deices +deicing +deidre +deification +deified +deifies +deify +deifying +deign +deigned +deigning +deigns +deimos +deirdre +deism +deities +deity +deject +dejected +dejecting +dejection +dejects +dejesus +demagogic +demagogue +demagoguery +demagogues +demagogy +demand +demanded +demanding +demands +demarcate +demarcated +demarcates +demarcating +demarcation +demavend +demean +demeaned +demeaning +demeans +demented +dementia +demerit +demerits +demesne +demesnes +demeter +demetrius +demigod +demigods +demijohn +demijohns +deming +demise +demised +demises +demising +demitasse +demitasses +demo +democracies +democracy +democrat +democratic +democrats +democritus +demoed +demographer +demographers +demographic +demographics +demography +demoing +demon +demoniac +demonic +demons +demonstrate +demonstrated +demonstrates +demonstrating +demonstration +demonstrations +demonstrative +demonstratives +demonstrator +demonstrators +demos +demosthenes +demote +demoted +demotes +demoting +demotion +demotions +demount +dempsey +demur +demure +demurer +demurest +demurred +demurring +demurs +den +dena +denature +denatured +denatures +denaturing +dendrite +dendrites +deneb +deng +denied +denier +deniers +denies +denigrate +denigrated +denigrates +denigrating +denigration +denim +denims +denis +denise +denizen +denizens +denmark +dennis +denny +denominate +denominated +denominates +denominating +denomination +denominations +denominator +denominators +denotation +denotations +denote +denoted +denotes +denoting +denouement +denouements +denounce +denounced +denouncement +denouncements +denounces +denouncing +dens +dense +denseness +denser +densest +densities +density +dent +dented +dentifrice +dentifrices +dentine +denting +dentist +dentistry +dentists +dents +denture +dentures +denude +denuded +denudes +denuding +denunciation +denunciations +denver +deny +denying +deodorant +deodorants +deon +depart +departed +departing +department +departments +departs +departure +departures +depend +dependant +dependants +depended +dependence +dependencies +dependency +dependent +dependents +depending +depends +depict +depicted +depicting +depiction +depictions +depicts +deport +deportation +deportations +deported +deporting +deportment +deports +depose +deposed +deposes +deposing +deposit +deposited +depositing +deposition +depositions +depositor +depositories +depositors +depository +deposits +depot +depots +depp +deprave +depraved +depraves +depraving +depravities +depravity +deprecate +deprecated +deprecates +deprecating +deprecation +deprecatory +depreciate +depreciated +depreciates +depreciating +depreciation +depredation +depredations +depress +depressant +depressants +depressed +depresses +depressing +depression +depressions +depressive +depressives +deprivation +deprivations +deprive +deprived +deprives +depriving +deprogram +deprogramed +deprograming +deprogrammed +deprogramming +deprograms +depth +depths +deputation +deputations +depute +deputed +deputes +deputies +deputing +deputy +derange +deranged +derangement +deranges +deranging +derbies +derby +derek +derick +deride +derided +derides +deriding +derision +derisive +derisory +derivation +derivations +derivative +derivatives +derive +derived +derives +deriving +dermatitis +dermis +derogate +derogated +derogates +derogating +derogation +derogatory +derrick +derricks +derrida +derringer +derringers +dervish +dervishes +descant +descanted +descanting +descants +descartes +descend +descendant +descendants +descended +descendent +descender +descending +descends +descent +descents +describe +described +describes +describing +descried +descries +description +descriptions +descriptive +descriptor +descriptors +descry +descrying +desdemona +desecrate +desecrated +desecrates +desecrating +desecration +desegregate +desegregated +desegregates +desegregating +desegregation +desert +deserted +deserter +deserters +deserting +desertion +desertions +deserts +deserve +deserved +deserves +deserving +desiccate +desiccated +desiccates +desiccating +desiccation +desiderata +desideratum +design +designate +designated +designates +designating +designation +designations +designed +designer +designers +designing +designs +desire +desired +desiree +desires +desiring +desirous +desist +desisted +desisting +desists +desk +desks +desktop +desktops +desmond +despair +despaired +despairing +despairs +despatch +despatched +despatches +despatching +desperado +desperadoes +desperados +desperate +desperation +despise +despised +despises +despising +despite +despondency +despondent +despot +despotic +despotism +despots +dessert +desserts +destination +destinations +destine +destined +destines +destinies +destining +destiny +destitute +destitution +destroy +destroyed +destroyer +destroyers +destroying +destroys +destruct +destructed +destructing +destruction +destructive +destructiveness +destructs +detach +detached +detaches +detaching +detachment +detachments +detain +detained +detainee +detainees +detaining +detainment +detains +detect +detected +detecting +detection +detective +detectives +detector +detectors +detects +detentes +detention +detentions +deter +detergent +detergents +deteriorate +deteriorated +deteriorates +deteriorating +deterioration +determinant +determinants +determinate +determination +determinations +determine +determined +determiner +determiners +determines +determining +determinism +deterministic +deterred +deterrence +deterrent +deterrents +deterring +deters +detest +detestation +detested +detesting +detests +dethrone +dethroned +dethronement +dethrones +dethroning +detonate +detonated +detonates +detonating +detonation +detonations +detonator +detonators +detour +detoured +detouring +detours +detox +detoxed +detoxes +detoxification +detoxified +detoxifies +detoxify +detoxifying +detoxing +detract +detracted +detracting +detraction +detractor +detractors +detracts +detriment +detriments +detritus +detroit +deuce +deuces +deuterium +deuteronomy +devanagari +devastate +devastated +devastates +devastating +devastation +devi +deviance +deviant +deviants +deviate +deviated +deviates +deviating +deviation +deviations +device +devices +devin +devious +deviousness +devise +devised +devises +devising +devoid +devon +devonian +devote +devoted +devotee +devotees +devotes +devoting +devotion +devotions +devour +devoured +devouring +devours +devout +devouter +devoutest +devoutness +dew +dewar +dewayne +dewberries +dewberry +dewdrop +dewdrops +dewey +dewier +dewiest +dewitt +dewy +dexedrine +dexter +dexterity +dexterous +dextrose +dextrous +dhaka +dharma +dhoti +dhotis +diabetes +diabetic +diabetics +diacritic +diacritics +diadem +diadems +diagnose +diagnosed +diagnoses +diagnosing +diagnosis +diagnostic +diagnostician +diagnosticians +diagnostics +diagram +diagramed +diagraming +diagrammatic +diagrammed +diagramming +diagrams +diameter +diameters +diamond +diamonds +diana +diane +diann +dianna +dianne +diaper +diapered +diapering +diapers +diaphanous +diaphragm +diaphragms +diaries +diarist +diarists +diarrhoea +diary +diaspora +diatom +diatoms +diatribe +diatribes +diaz +dicaprio +dice +diced +dices +dicey +dichotomies +dichotomy +dicier +diciest +dicing +dick +dickens +dicker +dickered +dickering +dickers +dickerson +dickey +dickeys +dickie +dickies +dickinson +dicks +dickson +dicky +dicta +dictaphone +dictate +dictated +dictates +dictating +dictation +dictations +dictator +dictators +dictatorship +dictatorships +diction +dictionaries +dictionary +dictum +dictums +did +didactic +diderot +dido +didrikson +die +died +diefenbaker +diego +diehard +diehards +diem +diereses +dieresis +dies +diet +dietaries +dietary +dieted +dieter +dieters +dietetic +dietetics +dietician +dieticians +dieting +dietitian +dietitians +dietrich +diets +differ +differed +difference +differences +different +differentiate +differentiated +differentiates +differentiating +differentiation +differing +differs +diffidence +diffident +diffraction +diffuse +diffused +diffuseness +diffuses +diffusing +diffusion +dig +digest +digested +digesting +digestion +digestions +digestive +digests +digger +diggers +digging +digit +digits +dignified +dignifies +dignify +dignifying +dignitaries +dignitary +dignities +dignity +digraph +digraphs +digress +digressed +digresses +digressing +digression +digressions +digressive +digs +dijkstra +dijon +dike +diked +dikes +diking +dim +dimaggio +dime +dimension +dimensions +dimer +dimes +diminish +diminished +diminishes +diminishing +diminuendo +diminuendoes +diminuendos +diminution +diminutions +diminutive +diminutives +dimmed +dimmer +dimmers +dimmest +dimming +dimness +dims +dimwit +dimwits +dimwitted +din +dina +dinah +dine +dined +diner +diners +dines +dinette +dinettes +ding +dinged +dinghies +dinghy +dingier +dingiest +dinginess +dinging +dingo +dingoes +dings +dingy +dining +dinkier +dinkies +dinkiest +dinky +dinned +dinner +dinnered +dinnering +dinners +dinning +dino +dinosaur +dinosaurs +dins +dint +diocesan +diocesans +diocese +dioceses +diode +diodes +diogenes +dion +dionne +dionysian +dionysus +diophantine +dior +diorama +dioramas +dioxide +dioxin +dioxins +dip +diphtheria +diphthong +diphthongs +dipped +dipper +dippers +dipping +dips +dipsomania +dipsomaniac +dipsomaniacs +dipstick +dipsticks +dirac +dire +direct +directed +directer +directest +directing +direction +directions +directive +directives +directness +director +directorate +directorates +directories +directors +directorship +directorships +directory +directs +direr +direst +dirge +dirges +dirk +dirks +dirt +dirtied +dirtier +dirties +dirtiest +dirtiness +dirty +dirtying +dis +disabuse +disabused +disabuses +disabusing +disadvantage +disadvantaged +disadvantageous +disadvantages +disadvantaging +disaffect +disaffected +disaffecting +disaffection +disaffects +disagree +disagreed +disagreeing +disagreement +disagreements +disagrees +disambiguate +disambiguation +disappear +disappearance +disappearances +disappeared +disappearing +disappears +disappoint +disappointed +disappointing +disappointment +disappointments +disappoints +disapprobation +disapprove +disapproved +disapproves +disapproving +disarm +disarmament +disarmed +disarming +disarms +disarrange +disarranged +disarrangement +disarranges +disarranging +disarray +disarrayed +disarraying +disarrays +disassociate +disassociated +disassociates +disassociating +disaster +disasters +disastrous +disavow +disavowed +disavowing +disavows +disband +disbanded +disbanding +disbands +disbar +disbarment +disbarred +disbarring +disbars +disburse +disbursed +disbursement +disbursements +disburses +disbursing +disc +discard +discarded +discarding +discards +discern +discerned +discerning +discernment +discerns +discharge +discharged +discharges +discharging +disco +discoed +discoing +discomfit +discomfited +discomfiting +discomfits +discomfiture +discomfort +discomforted +discomforting +discomforts +discommode +discommoded +discommodes +discommoding +discompose +discomposed +discomposes +discomposing +discomposure +disconcert +disconcerted +disconcerting +disconcerts +disconnect +disconnected +disconnecting +disconnection +disconnections +disconnects +discontent +discontented +discontenting +discontentment +discontents +discontinuance +discontinuances +discontinuation +discontinuations +discontinue +discontinued +discontinues +discontinuing +discontinuities +discontinuity +discontinuous +discord +discordant +discorded +discording +discords +discos +discotheque +discotheques +discount +discounted +discountenance +discountenanced +discountenances +discountenancing +discounting +discounts +discourage +discouraged +discouragement +discouragements +discourages +discouraging +discourse +discoursed +discourses +discoursing +discourteous +discourtesies +discourtesy +discover +discovered +discoverer +discoverers +discoveries +discovering +discovers +discovery +discredit +discredited +discrediting +discredits +discreet +discreeter +discreetest +discrepancies +discrepancy +discrete +discretion +discretionary +discriminant +discriminate +discriminated +discriminates +discriminating +discrimination +discriminatory +discs +discursive +discus +discuses +discuss +discussant +discussants +discussed +discusses +discussing +discussion +discussions +disdain +disdained +disdaining +disdains +disease +diseased +diseases +disembark +disembarkation +disembarked +disembarking +disembarks +disembodied +disembodies +disembody +disembodying +disenchant +disenchanted +disenchanting +disenchantment +disenchants +disencumber +disencumbered +disencumbering +disencumbers +disenfranchise +disenfranchised +disenfranchisement +disenfranchises +disenfranchising +disengage +disengaged +disengagement +disengagements +disengages +disengaging +disfigure +disfigured +disfigurement +disfigurements +disfigures +disfiguring +disfranchise +disfranchised +disfranchisement +disfranchises +disfranchising +disgorge +disgorged +disgorges +disgorging +disgrace +disgraced +disgraces +disgracing +disguise +disguised +disguises +disguising +disgust +disgusted +disgusting +disgusts +dish +disharmonious +disharmony +dishearten +disheartened +disheartening +disheartens +dished +dishes +dishing +dishonest +dishonesty +dishpan +dishpans +dishrag +dishrags +dishwasher +dishwashers +dishwater +disincentive +disinfect +disinfectant +disinfectants +disinfected +disinfecting +disinfects +disinformation +disingenuous +disinherit +disinherited +disinheriting +disinherits +disintegrate +disintegrated +disintegrates +disintegrating +disintegration +disinter +disinterest +disinterested +disinterests +disinterment +disinterred +disinterring +disinters +disjoint +disjointed +disjointing +disjoints +disk +diskette +diskettes +disks +dismay +dismayed +dismaying +dismays +dismember +dismembered +dismembering +dismemberment +dismembers +dismiss +dismissed +dismisses +dismissing +dismissive +dismount +dismounted +dismounting +dismounts +disney +disobedience +disobedient +disobey +disobeyed +disobeying +disobeys +disorder +disordered +disordering +disorders +disorient +disorientation +disoriented +disorienting +disorients +disown +disowned +disowning +disowns +disparage +disparaged +disparagement +disparages +disparaging +disparate +disparities +disparity +dispassionate +dispatch +dispatched +dispatcher +dispatchers +dispatches +dispatching +dispensaries +dispensary +dispensation +dispensations +dispense +dispensed +dispenser +dispensers +dispenses +dispensing +disperse +dispersed +disperses +dispersing +dispersion +dispirit +dispirited +dispiriting +dispirits +disport +disported +disporting +disports +dispose +disposed +disposes +disposing +disposition +dispositions +dispossess +dispossessed +dispossesses +dispossessing +dispossession +disproof +disproportion +disproportionate +disproportions +disprove +disproved +disproven +disproves +disproving +disputant +disputants +disputation +disputations +disputatious +dispute +disputed +disputes +disputing +disquiet +disquieted +disquieting +disquiets +disquisition +disquisitions +disregard +disregarded +disregarding +disregards +disrepair +disrepute +disrespect +disrespected +disrespecting +disrespects +disrobe +disrobed +disrobes +disrobing +disrupt +disrupted +disrupting +disruption +disruptions +disruptive +disrupts +diss +dissatisfaction +dissatisfied +dissatisfies +dissatisfy +dissatisfying +dissect +dissected +dissecting +dissection +dissections +dissects +dissed +disseminate +disseminated +disseminates +disseminating +dissemination +dissension +dissensions +dissent +dissented +dissenter +dissenters +dissenting +dissents +dissertation +dissertations +disservice +disservices +disses +dissidence +dissident +dissidents +dissing +dissipate +dissipated +dissipates +dissipating +dissipation +dissociate +dissociated +dissociates +dissociating +dissociation +dissonance +dissonances +dissonant +dissuade +dissuaded +dissuades +dissuading +dissuasion +distaff +distaffs +distance +distanced +distances +distancing +distant +distaste +distastes +distemper +distend +distended +distending +distends +distension +distensions +distention +distentions +distinct +distincter +distinctest +distinction +distinctions +distinctive +distinctiveness +distinguish +distinguished +distinguishes +distinguishing +distort +distorted +distorter +distorting +distortion +distortions +distorts +distract +distracted +distracting +distraction +distractions +distracts +distrait +distraught +distress +distressed +distresses +distressing +distribute +distributed +distributes +distributing +distribution +distributions +distributive +distributor +distributors +district +districts +distrust +distrusted +distrusting +distrusts +disturb +disturbance +disturbances +disturbed +disturbing +disturbs +disunite +disunited +disunites +disuniting +disunity +disuse +disused +disuses +disusing +ditch +ditched +ditches +ditching +dither +dithered +dithering +dithers +ditties +ditto +dittoed +dittoes +dittoing +dittos +ditty +diuretic +diuretics +diva +divan +divans +divas +dive +dived +diver +diverge +diverged +divergence +divergences +divergent +diverges +diverging +divers +diverse +diversification +diversified +diversifies +diversify +diversifying +diversion +diversionary +diversions +diversities +diversity +divert +diverted +diverting +diverts +dives +divest +divested +divesting +divests +divide +divided +dividend +dividends +divider +dividers +divides +dividing +divination +divine +divined +diviner +diviners +divines +divinest +diving +divining +divinities +divinity +division +divisions +divisive +divisiveness +divisor +divisors +divorce +divorced +divorces +divorcing +divot +divots +divvied +divvies +divvy +divvying +dix +dixie +dixiecrat +dixon +dizzied +dizzier +dizzies +dizziest +dizziness +dizzy +dizzying +djakarta +djibouti +djinn +djinni +djinns +dmitri +dnepropetrovsk +dnieper +dniester +dobbin +doberman +dobro +doc +docent +docents +dock +docked +docket +docketed +docketing +dockets +docking +docks +dockyard +dockyards +docs +doctor +doctorate +doctorates +doctored +doctoring +doctorow +doctors +doctrinaire +doctrinaires +doctrine +doctrines +docudrama +docudramas +document +documentaries +documentary +documentation +documented +documenting +documents +dodder +doddered +doddering +dodders +dodge +dodged +dodger +dodgers +dodges +dodging +dodgson +dodo +dodoes +dodoma +dodos +dodson +doe +doer +doers +does +doff +doffed +doffing +doffs +dog +dogcatcher +dogcatchers +dogfight +dogfights +dogfish +dogfishes +dogged +doggedness +doggie +doggier +doggies +doggiest +dogging +doggone +doggoned +doggoneder +doggonedest +doggoner +doggones +doggonest +doggoning +doggy +doghouse +doghouses +dogie +dogies +dogma +dogmas +dogmata +dogmatic +dogmatism +dogmatist +dogmatists +dogs +dogtrot +dogtrots +dogtrotted +dogtrotting +dogwood +dogwoods +doha +doing +doings +domain +domains +dome +domed +domes +domesday +domestic +domesticate +domesticated +domesticates +domesticating +domestication +domesticity +domestics +dominance +dominant +dominants +dominate +dominated +dominates +dominating +domination +domineer +domineered +domineering +domineers +doming +domingo +dominguez +dominic +dominica +dominican +dominicans +dominick +dominion +dominions +dominique +domino +dominoes +dominos +domitian +don +dona +donahue +donate +donated +donates +donating +donation +donations +done +donetsk +donizetti +donkey +donkeys +donn +donna +donne +donned +donner +donnie +donning +donny +donor +donors +donovan +dons +doodad +doodads +doohickey +doohickeys +doom +doomed +dooming +dooms +doomsday +doonesbury +door +doorknob +doorknobs +doorman +doormat +doormats +doormen +doors +doorstep +doorsteps +doorway +doorways +dope +doped +dopes +dopey +dopier +dopiest +doping +dopy +dora +dorcas +doreen +dorian +doric +dories +doris +doritos +dork +dorkier +dorkiest +dorks +dorky +dorm +dormancy +dormant +dormer +dormers +dormice +dormitories +dormitory +dormouse +dorms +dorothea +dorothy +dorset +dorsey +dorthy +dortmund +dory +dos +dosage +dosages +dose +dosed +doses +dosing +dossier +dossiers +dostoevsky +dot +dotage +dotcom +dotcoms +dote +doted +dotes +doth +doting +dots +dotson +dotted +dotting +dotty +douay +doubt +doubted +doubter +doubters +doubting +doubts +douche +douched +douches +douching +doug +dough +doughier +doughiest +doughnut +doughnuts +doughtier +doughtiest +doughty +doughy +dour +dourer +dourest +douro +douse +doused +douses +dousing +dove +dover +doves +dow +dowager +dowagers +dowdier +dowdies +dowdiest +dowdiness +dowdy +down +downbeat +downbeats +downcast +downed +downer +downers +downgrade +downgraded +downgrades +downgrading +downhearted +downier +downiest +downing +downpour +downpours +downright +downs +downsize +downsized +downsizes +downsizing +downstage +downstairs +downstate +downstream +downswing +downswings +downtime +downtown +downtrodden +downturn +downturns +downward +downwards +downwind +downy +dowries +dowry +dowse +dowsed +dowses +dowsing +doyen +doyens +doze +dozed +dozen +dozens +dozes +dozing +drab +drabber +drabbest +drabness +drabs +drachma +drachmae +drachmai +drachmas +draco +draconian +draft +drafted +draftee +draftees +drafting +drafts +drag +dragged +dragging +dragnet +dragnets +dragon +dragons +dragoon +dragooned +dragooning +dragoons +drags +drain +drainage +drained +drainer +drainers +draining +drainpipe +drainpipes +drains +drake +drakes +dram +drama +dramamine +dramas +dramatic +dramatics +dramatist +dramatists +drambuie +drams +drank +drano +drape +draped +draperies +drapery +drapes +draping +drastic +dravidian +draw +drawback +drawbacks +drawbridge +drawbridges +drawer +drawers +drawing +drawings +drawn +draws +drawstring +drawstrings +dray +drays +dread +dreaded +dreading +dreadnought +dreadnoughts +dreads +dream +dreamed +dreamer +dreamers +dreamier +dreamiest +dreaming +dreams +dreamy +drearier +dreariest +dreariness +dreary +dredge +dredged +dredger +dredgers +dredges +dredging +dregs +dreiser +drench +drenched +drenches +drenching +dresden +dress +dressage +dressed +dresser +dressers +dresses +dressier +dressiest +dressiness +dressing +dressings +dressmaker +dressmakers +dressmaking +dressy +drew +dreyfus +dried +drier +driers +dries +driest +drift +drifted +drifter +drifters +drifting +drifts +driftwood +drink +drinker +drinkers +drinking +drinkings +drinks +drip +dripped +dripping +drippings +drips +dristan +drive +driven +driver +drivers +drives +driveway +driveways +driving +drivings +dromedaries +dromedary +drone +droned +drones +droning +droop +drooped +droopier +droopiest +drooping +droops +droopy +drop +dropbox +dropout +dropouts +dropped +dropper +droppers +dropping +droppings +drops +dropsy +dross +drought +droughts +drouth +drouthes +drouths +drove +drover +drovers +droves +drown +drowned +drowning +drownings +drowns +drowse +drowsed +drowses +drowsier +drowsiest +drowsiness +drowsing +drowsy +drub +drubbed +drubbing +drubbings +drubs +drudge +drudged +drudgery +drudges +drudging +drug +drugged +drugging +druggist +druggists +drugs +drugstore +drugstores +druid +druids +drum +drummed +drummer +drummers +drumming +drums +drumstick +drumsticks +drunk +drunkard +drunkards +drunken +drunkenness +drunker +drunkest +drunks +dry +dryad +dryads +dryden +dryer +dryers +dryest +drying +dryness +drys +dschubba +duane +dub +dubai +dubbed +dubbing +dubcek +dubhe +dubiety +dubious +dubiousness +dubrovnik +dubs +ducat +ducats +duchamp +duchess +duchesses +duchies +duchy +duck +ducked +ducking +ducks +duct +ducting +ducts +dud +dude +duded +dudes +dudgeon +duding +duds +due +dues +duet +duets +duff +duffer +duffers +duffy +dug +dugout +dugouts +duh +duisburg +duke +dukedom +dukedoms +dukes +dumas +dumb +dumber +dumbest +dumbfound +dumbfounded +dumbfounding +dumbfounds +dumbness +dumbo +dumbwaiter +dumbwaiters +dumfound +dumfounded +dumfounding +dumfounds +dummies +dummy +dump +dumped +dumpier +dumpiest +dumping +dumps +dumpster +dumpy +dun +dunant +dunbar +duncan +dunce +dunces +dune +dunedin +dunes +dung +dungaree +dungarees +dunged +dungeon +dungeons +dunging +dungs +dunk +dunked +dunking +dunkirk +dunks +dunn +dunne +dunned +dunner +dunnest +dunning +dunno +duns +duo +duodena +duodenum +duodenums +duos +dupe +duped +dupes +duping +dupont +duran +durant +durante +duration +durban +duress +durex +durham +durhams +during +durkheim +duroc +durocher +duse +dushanbe +dusk +duskier +duskiest +dusky +dust +dustbin +dustbins +dustbuster +dusted +duster +dusters +dustier +dustiest +dustin +dustiness +dusting +dustman +dustmen +dustpan +dustpans +dusts +dusty +dutch +dutchman +dutchmen +duteous +duties +duty +duvet +dvina +dwarf +dwarfed +dwarfing +dwarfish +dwarfism +dwarfs +dwarves +dwayne +dweeb +dweebs +dwight +dyadic +dye +dyed +dyeing +dyer +dyers +dyes +dyestuff +dying +dyke +dykes +dynamic +dynamics +dynamism +dynamite +dynamited +dynamites +dynamiting +dynamo +dynamos +dynastic +dynasties +dynasty +dysentery +dysfunction +dysfunctions +dyson +dyspepsia +dyspeptic +dyspeptics +dzerzhinsky +dzungaria +each +eager +eagerer +eagerest +eagerness +eakins +ear +earache +earaches +earbud +earbuds +eardrum +eardrums +earhart +earmark +earmarked +earmarking +earmarks +earmuff +earmuffs +earn +earned +earner +earners +earnest +earnestine +earnestness +earnests +earnhardt +earning +earnings +earns +earp +earphone +earphones +earring +earrings +ears +earshot +earth +earthed +earthen +earthenware +earthier +earthiest +earthiness +earthing +earthquake +earthquakes +earths +earthshaking +earthward +earthwork +earthworks +earthworm +earthworms +earthy +earwax +earwig +earwigs +ease +eased +eases +easier +easiest +easiness +easing +east +eastbound +easter +eastern +easterner +easterners +easternmost +easters +eastman +easts +eastward +eastwards +eastwood +easy +easygoing +eat +eaten +eater +eateries +eaters +eatery +eating +eaton +eats +eave +eaves +eavesdrop +eavesdropped +eavesdropper +eavesdroppers +eavesdropping +eavesdrops +ebay +ebb +ebbed +ebbing +ebbs +eben +ebeneezer +ebert +ebonics +ebonies +ebony +ebro +eccentric +eccentricities +eccentricity +eccentrics +echo +echoed +echoes +echoing +echos +ecmascript +eco +econometric +economic +economics +economies +economist +economists +economy +ecosystem +ecosystems +ecotourism +ecru +ecstasies +ecstasy +ecstatic +ecuador +ecuadoran +ecuadorans +ecuadorian +ecuadorians +eczema +edam +edamame +edams +edda +eddie +eddied +eddies +eddington +eddy +eddying +eden +edens +edgar +edgardo +edge +edged +edger +edges +edgeways +edgewise +edgier +edgiest +edginess +edging +edgings +edgy +edict +edicts +edification +edifice +edifices +edified +edifies +edify +edifying +edinburgh +edison +edit +edited +edith +editing +edition +editions +editor +editors +editorship +edits +edmond +edmonton +edmund +edna +eduardo +educate +educated +educates +educating +education +educations +educator +educators +edward +edwardian +edwardo +edwards +edwin +edwina +eerie +eerier +eeriest +eeriness +eery +eeyore +efface +effaced +effacement +effaces +effacing +effect +effected +effecting +effective +effectiveness +effects +effectuate +effectuated +effectuates +effectuating +effeminacy +effeminate +effervesce +effervesced +effervescence +effervescent +effervesces +effervescing +effete +efficacious +efficacy +efficiencies +efficiency +efficient +effie +effigies +effigy +effort +efforts +effrontery +effusion +effusions +effusive +effusiveness +efrain +efren +egg +eggbeater +eggbeaters +egged +egghead +eggheads +egging +eggnog +eggo +eggs +ego +egocentric +egocentrics +egoism +egoist +egoistic +egoists +egos +egotism +egotist +egotistic +egotists +egregious +egress +egresses +egret +egrets +egypt +egyptian +egyptians +ehrenberg +eichmann +eider +eiderdown +eiderdowns +eiders +eight +eighteen +eighteens +eighteenth +eighteenths +eighth +eighths +eighties +eightieth +eightieths +eights +eighty +einstein +einsteins +eire +eisenhower +eisenstein +eisner +either +eject +ejected +ejecting +ejection +ejections +ejects +eke +eked +ekes +eking +emaciate +emaciated +emaciates +emaciating +emaciation +emacs +emanate +emanated +emanates +emanating +emanation +emanations +emancipate +emancipated +emancipates +emancipating +emancipation +emancipator +emancipators +embankment +embankments +embargo +embargoed +embargoes +embargoing +embark +embarkation +embarkations +embarked +embarking +embarks +embarrass +embarrassed +embarrasses +embarrassing +embarrassment +embarrassments +embassies +embassy +embed +embedded +embedding +embeds +ember +embers +embitter +embittered +embittering +embitters +embodied +embodies +embodiment +embody +embodying +emboss +embossed +embosses +embossing +embrace +embraced +embraces +embracing +embroider +embroidered +embroideries +embroidering +embroiders +embroidery +embryo +embryonic +embryos +emcee +emceed +emceeing +emcees +emend +emendation +emendations +emended +emending +emends +emerge +emerged +emergence +emergencies +emergency +emergent +emerges +emerging +emeritus +emerson +emery +emetic +emetics +emigrant +emigrants +emigrate +emigrated +emigrates +emigrating +emigration +emigrations +eminem +eminence +eminences +eminent +emir +emirate +emirates +emirs +emissaries +emissary +emission +emissions +emit +emits +emitted +emitting +emma +emmett +emmy +emo +emoji +emojis +emory +emos +emote +emoted +emotes +emoting +emotion +emotions +emotive +empathetic +empathy +emperor +emperors +emphases +emphasis +emphatic +emphysema +empire +empires +empiricism +emporia +emporium +emporiums +empower +empowered +empowering +empowerment +empowers +empress +empresses +emptied +emptier +empties +emptiest +emptiness +empty +emptying +ems +emu +emus +emusic +enact +enacted +enacting +enactment +enactments +enacts +encamp +encamped +encamping +encampment +encampments +encamps +encarta +encase +encased +encases +encasing +enchant +enchanted +enchanter +enchanters +enchanting +enchantment +enchantments +enchantress +enchantresses +enchants +encode +encoded +encoder +encoders +encodes +encoding +encompass +encompassed +encompasses +encompassing +encore +encored +encores +encoring +encounter +encountered +encountering +encounters +encourage +encouraged +encouragement +encouragements +encourages +encouraging +encroach +encroached +encroaches +encroaching +encroachment +encroachments +encrust +encrustation +encrustations +encrusted +encrusting +encrusts +encrypt +encrypted +encryption +encrypts +encumber +encumbered +encumbering +encumbers +encumbrance +encumbrances +end +endanger +endangered +endangering +endangers +endear +endeared +endearing +endearment +endearments +endears +ended +endemic +endemics +ending +endings +endive +endives +endocrine +endocrines +endorse +endorsed +endorsement +endorsements +endorser +endorsers +endorses +endorsing +endow +endowed +endowing +endowment +endowments +endows +ends +endue +endued +endues +enduing +endurance +endure +endured +endures +enduring +endways +endwise +endymion +enema +enemas +enemata +enemies +enemy +energetic +energies +energy +enervate +enervated +enervates +enervating +enervation +enforce +enforced +enforcement +enforcer +enforcers +enforces +enforcing +enfranchise +enfranchised +enfranchisement +enfranchises +enfranchising +engage +engaged +engagement +engagements +engages +engaging +engender +engendered +engendering +engenders +engine +engineer +engineered +engineering +engineers +engines +engorge +engorged +engorges +engorging +engrave +engraved +engraver +engravers +engraves +engraving +engravings +engross +engrossed +engrosses +engrossing +enhance +enhanced +enhancement +enhancements +enhancer +enhances +enhancing +enid +enif +enigma +enigmas +enigmatic +eniwetok +enjoin +enjoined +enjoining +enjoins +enjoy +enjoyed +enjoying +enjoyment +enjoyments +enjoys +enkidu +enmesh +enmeshed +enmeshes +enmeshing +enmities +enmity +ennui +enoch +enormities +enormity +enormous +enormousness +enos +enough +enquire +enquired +enquires +enquiries +enquiring +enquiry +enrage +enraged +enrages +enraging +enrapture +enraptured +enraptures +enrapturing +enrich +enriched +enriches +enriching +enrichment +enrico +enrique +enron +ensconce +ensconced +ensconces +ensconcing +enshrine +enshrined +enshrines +enshrining +enshroud +enshrouded +enshrouding +enshrouds +ensign +ensigns +ensnare +ensnared +ensnares +ensnaring +ensue +ensued +ensues +ensuing +ensure +ensured +ensures +ensuring +entente +ententes +enter +entered +entering +enterprise +enterprises +enterprising +enters +entertain +entertained +entertainer +entertainers +entertaining +entertainment +entertainments +entertains +enthrone +enthroned +enthronement +enthronements +enthrones +enthroning +enthuse +enthused +enthuses +enthusiasm +enthusiasms +enthusiast +enthusiastic +enthusiasts +enthusing +entice +enticed +enticement +enticements +entices +enticing +entire +entirety +entities +entity +entomb +entombed +entombing +entombment +entombs +entourage +entourages +entrance +entranced +entrances +entrancing +entrant +entrants +entrap +entrapment +entrapped +entrapping +entraps +entreat +entreated +entreaties +entreating +entreats +entreaty +entrench +entrenched +entrenches +entrenching +entrenchment +entrenchments +entrepreneur +entrepreneurs +entries +entropy +entrust +entrusted +entrusting +entrusts +entry +entryway +entryways +entwine +entwined +entwines +entwining +enumerate +enumerated +enumerates +enumerating +enumeration +enumerations +enunciate +enunciated +enunciates +enunciating +enunciation +enure +enured +enures +enuring +envied +envies +envious +enviousness +environment +environments +environs +envisage +envisaged +envisages +envisaging +envision +envisioned +envisioning +envisions +envoy +envoys +envy +envying +enzyme +enzymes +eocene +eon +eons +epcot +ephesian +ephesus +ephraim +epic +epics +epictetus +epicure +epicurean +epicureans +epicures +epicurus +epidemic +epidemics +epidermis +epidermises +epigram +epigrammatic +epigrams +epimethius +epiphanies +epiphany +episcopacy +episcopate +episode +episodes +episodic +epitaph +epitaphs +epithet +epithets +epitome +epitomes +epoch +epochs +epoxied +epoxies +epoxy +epoxyed +epoxying +epsom +epson +epstein +equanimity +equate +equated +equates +equating +equation +equations +equator +equators +equestrian +equestrians +equestrienne +equestriennes +equidistant +equine +equines +equinox +equinoxes +equip +equipage +equipages +equipment +equipoise +equipped +equipping +equips +equities +equity +equivocate +equivocated +equivocates +equivocating +equivocation +equivocations +era +eradicate +eradicated +eradicates +eradicating +eradication +eras +erase +erased +eraser +erasers +erases +erasing +erasmus +erasure +erasures +erato +eratosthenes +ere +erebus +erect +erected +erecting +erection +erections +erectness +erector +erects +erewhon +erg +ergo +ergonomic +ergonomics +ergs +erhard +eric +erica +erich +erick +ericka +erickson +ericson +ericsson +eridanus +erie +erik +erika +erin +eris +eritrea +erma +ermine +ermines +erna +ernest +ernestine +ernesto +ernie +ernst +erode +eroded +erodes +eroding +erogenous +eros +eroses +erosion +erosive +erotic +erotica +eroticism +err +errand +errands +errant +errata +erratas +erratic +erratum +erred +erring +erroneous +error +errors +errs +ersatz +ersatzes +erse +erudite +erudition +erupt +erupted +erupting +eruption +eruptions +erupts +erwin +erythrocyte +erythrocytes +esau +escapade +escapades +escape +escaped +escapee +escapees +escapes +escaping +escapism +escapist +escapists +escarpment +escarpments +escher +escherichia +eschew +eschewed +eschewing +eschews +escort +escorted +escorting +escorts +escrow +escrows +escutcheon +escutcheons +eskimo +eskimos +esoteric +esperanto +esperanza +espied +espies +espinoza +espionage +espouse +espoused +espouses +espousing +espresso +espressos +espy +espying +esquire +esquires +essay +essayed +essaying +essayist +essayists +essays +essen +essence +essences +essene +essequibo +essex +essie +estate +estates +esteban +esteem +esteemed +esteeming +esteems +ester +esters +estes +esther +estimate +estimated +estimates +estimating +estimation +estimations +estimator +estimators +estonia +estonian +estonians +estrada +estrange +estranged +estrangement +estrangements +estranges +estranging +estuaries +estuary +eta +etch +etched +etcher +etchers +etches +etching +etchings +eternities +eternity +ethan +ether +ethernet +ethic +ethics +ethiopia +ethiopian +ethiopians +ethnic +ethnicity +ethnics +ethos +etiquette +etna +eton +etruria +etruscan +etta +eucharist +eucharistic +eucharists +eugene +eugenia +eugenics +eugenie +eugenio +eumenides +eunice +eunuch +eunuchs +euphemism +euphemisms +euphemistic +euphony +euphoria +euphoric +euphrates +eurasia +eurasian +eurasians +eureka +euripides +euro +europa +europe +european +europeans +euros +eurydice +eustachian +eutectic +euterpe +euthanasia +eva +evacuate +evacuated +evacuates +evacuating +evacuation +evacuations +evacuee +evacuees +evade +evaded +evades +evading +evan +evanescent +evans +evaporate +evaporated +evaporates +evaporating +evaporation +evasion +evasions +evasive +evasiveness +eve +even +evened +evener +evenest +evenhanded +evening +evenings +evenki +evenness +evens +event +eventide +events +eventuate +eventuated +eventuates +eventuating +ever +everest +everett +everette +evergreen +evergreens +evermore +everready +evert +every +everybody +everyday +everyone +everything +everywhere +eves +evian +evict +evicted +evicting +eviction +evictions +evicts +evidence +evidenced +evidences +evidencing +evident +evince +evinced +evinces +evincing +eviscerate +eviscerated +eviscerates +eviscerating +evisceration +evita +evocation +evocations +evocative +evoke +evoked +evokes +evoking +ewe +ewer +ewers +ewes +ewing +exacerbate +exacerbated +exacerbates +exacerbating +exacerbation +exact +exacted +exacter +exactest +exacting +exactitude +exactness +exacts +exaggerate +exaggerated +exaggerates +exaggerating +exaggeration +exaggerations +exam +examination +examinations +examine +examined +examiner +examiners +examines +examining +exams +exasperate +exasperated +exasperates +exasperating +exasperation +excavate +excavated +excavates +excavating +excavation +excavations +excavator +excavators +excedrin +exceed +exceeded +exceeding +exceeds +except +excepted +excepting +exception +exceptions +excepts +excerpt +excerpted +excerpting +excerpts +excess +excesses +excessive +exchange +exchanged +exchanges +exchanging +exchequer +exchequers +excise +excised +excises +excising +excision +excisions +excitation +excite +excited +excitement +excitements +excites +exciting +excommunicate +excommunicated +excommunicates +excommunicating +excommunication +excommunications +excoriate +excoriated +excoriates +excoriating +excoriation +excoriations +excrement +excrescence +excrescences +excreta +excrete +excreted +excretes +excreting +excretion +excretions +excretory +excruciating +excursion +excursions +excuse +excused +excuses +excusing +exec +execrate +execrated +execrates +execrating +execs +execute +executed +executes +executing +execution +executioner +executioners +executions +executive +executives +executor +executors +executrices +executrix +executrixes +exegeses +exegesis +exempt +exempted +exempting +exemption +exemptions +exempts +exercise +exercised +exercises +exercising +exert +exerted +exerting +exertion +exertions +exerts +exes +exhaust +exhausted +exhausting +exhaustion +exhaustive +exhausts +exhibit +exhibited +exhibiting +exhibition +exhibitionism +exhibitionist +exhibitionists +exhibitions +exhibitor +exhibitors +exhibits +exhort +exhortation +exhortations +exhorted +exhorting +exhorts +exhumation +exhumations +exhume +exhumed +exhumes +exhuming +exigencies +exigency +exigent +exiguous +exist +existed +existence +existences +existent +existing +exists +exit +exited +exiting +exits +exocet +exodus +exoduses +exonerate +exonerated +exonerates +exonerating +exoneration +exorbitance +exorbitant +exorcise +exorcised +exorcises +exorcising +exorcism +exorcisms +exorcist +exorcists +exotic +exotics +expand +expanded +expanding +expands +expanse +expanses +expansion +expansionist +expansionists +expansions +expansive +expansiveness +expatiate +expatiated +expatiates +expatiating +expatriate +expatriated +expatriates +expatriating +expatriation +expect +expectancy +expectant +expectation +expectations +expected +expecting +expectorant +expectorants +expectorate +expectorated +expectorates +expectorating +expectoration +expects +expedience +expediences +expediencies +expediency +expedient +expedients +expedite +expedited +expediter +expediters +expedites +expediting +expedition +expeditionary +expeditions +expeditious +expeditor +expeditors +expend +expended +expending +expenditure +expenditures +expends +expense +expenses +expensive +experience +experienced +experiences +experiencing +experiment +experimentation +experimented +experimenter +experimenters +experimenting +experiments +expert +expertise +expertness +experts +expiate +expiated +expiates +expiating +expiation +expiration +expire +expired +expires +expiring +expiry +expo +exponent +exponentiation +exponents +export +exportation +exported +exporter +exporters +exporting +exports +expos +expose +exposed +exposes +exposing +exposition +expositions +expository +exposure +exposures +expound +expounded +expounding +expounds +express +expressed +expresses +expressing +expression +expressionism +expressionist +expressionists +expressions +expressive +expressiveness +expressway +expressways +expropriate +expropriated +expropriates +expropriating +expropriation +expropriations +expunge +expunged +expunges +expunging +expurgate +expurgated +expurgates +expurgating +expurgation +expurgations +exquisite +extant +extemporaneous +extempore +extend +extended +extending +extends +extension +extensions +extensive +extensiveness +extent +extents +extenuate +extenuated +extenuates +extenuating +extenuation +exterior +exteriors +exterminate +exterminated +exterminates +exterminating +extermination +exterminations +exterminator +exterminators +extinct +extincted +extincting +extinction +extinctions +extincts +extinguish +extinguished +extinguisher +extinguishers +extinguishes +extinguishing +extirpate +extirpated +extirpates +extirpating +extirpation +extort +extorted +extorting +extortion +extortionate +extortionist +extortionists +extorts +extra +extract +extracted +extracting +extraction +extractions +extractor +extractors +extracts +extradite +extradited +extradites +extraditing +extradition +extraditions +extraneous +extraordinary +extras +extrasensory +extravagance +extravagances +extravagant +extravaganza +extravaganzas +extravert +extraverted +extraverts +extreme +extremer +extremes +extremest +extremism +extremist +extremists +extremities +extremity +extricate +extricated +extricates +extricating +extrication +extrinsic +extroversion +extrovert +extroverted +extroverts +extrude +extruded +extrudes +extruding +extrusion +extrusions +exuberance +exuberant +exude +exuded +exudes +exuding +exxon +eyck +eye +eyebrow +eyebrows +eyed +eyeing +eyepiece +eyepieces +eyes +eyesight +eyesore +eyesores +eyestrain +eyeteeth +eyetooth +eyewitness +eyewitnesses +eying +eyre +eyrie +eysenck +ezra +fabian +fabric +fabricate +fabricated +fabricates +fabricating +fabrication +fabrications +fabrics +facade +facades +face +facebook +faced +faces +facet +faceted +faceting +facetious +facetiousness +facets +facetted +facetting +facing +facings +fact +faction +factions +factitious +factor +factored +factories +factoring +factors +factory +factotum +factotums +facts +fad +faddish +fade +faded +fades +fading +fads +faeces +faeroe +fafnir +fag +fagged +fagging +faggot +faggots +fagin +fags +fahd +fahrenheit +fain +fainer +fainest +faint +fainted +fainter +faintest +fainthearted +fainting +faintness +faints +fair +fairbanks +fairer +fairest +fairground +fairgrounds +fairies +fairness +fairs +fairway +fairways +fairy +faith +faiths +fake +faked +faker +fakers +fakes +faking +fakir +fakirs +fame +famed +famine +famines +famish +famished +famishes +famishing +famous +fan +fanatic +fanaticism +fanatics +fanboy +fanboys +fancied +fancier +fanciers +fancies +fanciest +fanciness +fancy +fancying +fandom +fanfare +fanfares +fang +fangs +fanned +fannie +fannies +fanning +fanny +fans +fantasied +fantasies +fantastic +fantasy +fantasying +fanzine +far +faraday +faraway +farce +farces +fare +fared +fares +fargo +farina +farinaceous +faring +farm +farmed +farmer +farmers +farmhand +farmhands +farmhouse +farmhouses +farming +farms +farmyard +farmyards +farragut +farrakhan +farrow +farrowed +farrowing +farrows +farsi +farsighted +farsightedness +fart +farted +farther +farthest +farthing +farthings +farting +farts +fascinate +fascinated +fascinates +fascinating +fascination +fascinations +fascism +fascist +fascists +fashion +fashioned +fashioning +fashionista +fashionistas +fashions +fassbinder +fast +fasted +fasten +fastened +fastener +fasteners +fastening +fastenings +fastens +faster +fastest +fastidious +fastidiousness +fasting +fastness +fastnesses +fasts +fat +fatah +fate +fated +fates +fathead +fatheads +father +fathered +fatherhood +fathering +fathers +fathom +fathomed +fathoming +fathoms +fatigue +fatigued +fatigues +fatiguing +fatima +fatimid +fating +fatness +fats +fatten +fattened +fattening +fattens +fatter +fattest +fattier +fatties +fattiest +fatty +fatuous +fatuousness +faucet +faucets +faun +fauna +faunae +faunas +fauns +faust +faustian +faustino +faustus +fawkes +fawn +fawned +fawning +fawns +fax +faxed +faxes +faxing +fay +faye +faze +fazed +fazes +fazing +fdr +fear +feared +fearing +fears +fearsome +feast +feasted +feasting +feasts +feat +feather +featherbedding +feathered +featherier +featheriest +feathering +feathers +featherweight +featherweights +feathery +feats +feature +featured +features +featuring +feb +februaries +february +fecund +fecundity +fed +federate +federated +federates +federating +federation +federations +federico +fedex +fedora +fedoras +feds +fee +feed +feedback +feedbag +feedbags +feeder +feeders +feeding +feedings +feeds +fees +feet +feign +feigned +feigning +feigns +feint +feinted +feinting +feints +feistier +feistiest +feisty +feminine +feminines +femininity +feminism +feminist +feminists +femora +femur +femurs +fen +fence +fenced +fencer +fencers +fences +fencing +fend +fended +fender +fenders +fending +fends +fenian +fens +fer +ferber +ferdinand +fergus +ferguson +fermat +ferment +fermentation +fermented +fermenting +ferments +fermi +fern +fernandez +fernando +ferns +ferocious +ferociousness +ferocity +ferrari +ferraro +ferret +ferreted +ferreting +ferrets +ferric +ferried +ferries +ferris +ferrous +ferry +ferryboat +ferryboats +ferrying +fervency +fervent +fervid +fest +fester +festered +festering +festers +festive +festivities +festivity +festoon +festooned +festooning +festoons +fests +feta +fetch +fetched +fetches +fetching +feted +fetid +feting +fetish +fetishes +fetishism +fetishist +fetishistic +fetishists +fetter +fettered +fettering +fetters +fetus +fetuses +feud +feuded +feuding +feuds +fever +fevered +feverish +fevers +few +fewer +fewest +fey +feynman +fez +fezes +fezzes +fiasco +fiascoes +fiascos +fiat +fiats +fib +fibbed +fibber +fibbers +fibbing +fibonacci +fibroid +fibrous +fibs +fiche +fiches +fichte +fiction +fictions +fictitious +fidget +fidgeted +fidgeting +fidgets +fidgety +fido +fiduciaries +fiduciary +fie +fief +fiefs +fiend +fiendish +fiends +fierce +fierceness +fiercer +fiercest +fierier +fieriest +fieriness +fiery +fiesta +fiestas +fife +fifes +fifteen +fifteens +fifteenth +fifteenths +fifth +fifths +fifties +fiftieth +fiftieths +fifty +fig +figaro +fight +fighter +fighters +fighting +fights +figment +figments +figs +figueroa +figurative +figure +figured +figurehead +figureheads +figures +figurine +figurines +figuring +fiji +fijian +fijians +fin +finance +financed +finances +financier +financiers +financing +finch +finches +find +finder +finders +finding +findings +finds +fine +fined +fineness +finer +finery +fines +finesse +finessed +finesses +finessing +finest +finger +fingerboard +fingerboards +fingered +fingering +fingerings +fingerprint +fingerprinted +fingerprinting +fingerprints +fingers +fingertip +fingertips +finickier +finickiest +finicky +fining +finis +finises +finish +finished +finisher +finishers +finishes +finishing +finite +fink +finked +finking +finks +finn +finnbogadottir +finnegan +finnish +finns +finny +fins +fiona +fiord +fiords +fir +fire +firearm +firearms +firebomb +firebombed +firebombing +firebombs +firebrand +firebrands +firebreak +firebreaks +firebug +firebugs +firecracker +firecrackers +fired +firefight +firefighter +firefighters +firefighting +firefights +firefox +firehouse +firehouses +fireman +firemen +firepower +fireproof +fireproofed +fireproofing +fireproofs +fires +fireside +firesides +firestone +firestorm +firestorms +firetrap +firetraps +firewater +firewood +firework +fireworks +firing +firm +firmament +firmaments +firmed +firmer +firmest +firming +firmness +firms +firmware +firs +first +firstborn +firstborns +firsthand +firsts +firth +firths +fischer +fish +fished +fisher +fisheries +fisherman +fishermen +fishers +fishery +fishes +fishhook +fishhooks +fishier +fishiest +fishing +fishnet +fishnets +fishwife +fishwives +fishy +fisk +fission +fissure +fissures +fist +fisticuffs +fists +fit +fitch +fitness +fits +fitted +fitter +fitters +fittest +fitting +fittings +fitzpatrick +fitzroy +five +fiver +fives +fix +fixate +fixated +fixates +fixating +fixation +fixations +fixative +fixatives +fixed +fixer +fixers +fixes +fixing +fixings +fixity +fixture +fixtures +fizeau +fizz +fizzed +fizzes +fizzier +fizziest +fizzing +fizzy +fjord +fjords +fnma +foam +foamed +foamier +foamiest +foaming +foams +foamy +fob +fobbed +fobbing +fobs +foch +foci +focus +focused +focuses +focusing +focussed +focusses +focussing +fodder +fodders +foe +foes +foetus +foetuses +fog +fogbound +fogey +fogeys +fogged +foggier +foggiest +fogginess +fogging +foggy +foghorn +foghorns +fogies +fogs +fogy +foist +foisted +foisting +foists +fokker +foment +fomentation +fomented +fomenting +foments +fond +fonda +fondant +fondants +fonder +fondest +fondness +fondu +fondue +fondues +fondus +font +fonts +food +foods +foodstuff +foodstuffs +foot +footage +footbridge +footbridges +footed +footing +footings +footman +footmen +footnote +footnoted +footnotes +footnoting +footpath +footpaths +footprint +footprints +footrest +footrests +foots +footsie +footsies +footsore +footstep +footsteps +footwear +footwork +fop +foppish +fops +for +fora +forage +foraged +forager +foragers +forages +foraging +foray +forayed +foraying +forays +forbad +forbade +forbear +forbearance +forbearing +forbears +forbes +forbid +forbidden +forbidding +forbiddings +forbids +forbore +forborne +force +forced +forceps +forces +forcing +ford +forded +fording +fords +fore +forearm +forearmed +forearming +forearms +forebear +forebears +forebode +foreboded +forebodes +foreboding +forebodings +forecast +forecasted +forecaster +forecasters +forecasting +forecasts +forefather +forefathers +forefeet +forefinger +forefingers +forefoot +forefront +forefronts +foregather +foregathered +foregathering +foregathers +forego +foregoes +foregoing +foregone +foreground +foregrounded +foregrounding +foregrounds +forehand +forehands +forehead +foreheads +foreign +foreigner +foreigners +foreman +foremast +foremasts +foremen +foremost +forename +forenames +forenoon +forenoons +forensic +forensics +foreordain +foreordained +foreordaining +foreordains +forerunner +forerunners +fores +foresaw +foresee +foreseeing +foreseen +foresees +foreshadow +foreshadowed +foreshadowing +foreshadows +foreshorten +foreshortened +foreshortening +foreshortens +foresight +foreskin +foreskins +forest +forestation +forested +forester +foresters +foresting +forestry +forests +foreswear +foreswearing +foreswears +foreswore +foresworn +foretaste +foretasted +foretastes +foretasting +forethought +forever +forevermore +forewarn +forewarned +forewarning +forewarns +forewent +forewoman +forewomen +foreword +forewords +forfeit +forfeited +forfeiting +forfeits +forfeiture +forgather +forgathered +forgathering +forgathers +forgave +forge +forged +forger +forgeries +forgers +forgery +forges +forget +forgets +forgetting +forging +forgive +forgiven +forgiveness +forgives +forgiving +forgo +forgoes +forgoing +forgone +forgot +forgotten +fork +forked +forking +forks +form +format +formation +formations +formative +formats +formatted +formatting +formed +former +formica +formicas +forming +formosa +formosan +forms +fornicate +fornicated +fornicates +fornicating +fornication +forrest +forsake +forsaken +forsakes +forsaking +forsook +forsooth +forster +forswear +forswearing +forswears +forswore +forsworn +forsythia +forsythias +fort +forte +fortes +forth +forthcoming +forthright +forthrightness +forthwith +forties +fortieth +fortieths +fortification +fortifications +fortified +fortifies +fortify +fortifying +fortissimo +fortitude +fortnight +fortnights +fortress +fortresses +forts +fortuitous +fortunate +fortune +fortunes +forty +forum +forums +forward +forwarded +forwarder +forwardest +forwarding +forwardness +forwards +forwent +fosse +foster +fostered +fostering +fosters +fotomat +fought +found +foundation +foundations +founded +founder +foundered +foundering +founders +founding +foundries +foundry +founds +fount +fountain +fountainhead +fountainheads +fountains +founts +four +fourier +fourneyron +fours +fourscore +foursome +foursomes +foursquare +fourteen +fourteens +fourteenth +fourteenths +fourth +fourths +fox +foxed +foxes +foxhound +foxhounds +foxier +foxiest +foxing +foxtrot +foxtrots +foxtrotted +foxtrotting +foxy +foyer +foyers +fracas +fracases +frack +fracked +fracking +fracks +fraction +fractions +fractious +fracture +fractured +fractures +fracturing +fragment +fragmentary +fragmentation +fragmented +fragmenting +fragments +fragonard +fragrance +fragrances +fragrant +frame +framed +framer +framers +frames +framework +frameworks +framing +fran +franc +france +frances +francesca +franchise +franchised +franchisee +franchisees +franchiser +franchisers +franchises +franchising +francine +francis +francisca +franciscan +francisco +franck +franco +francois +francoise +francs +frank +franked +frankenstein +franker +frankest +frankfort +frankfurt +frankfurter +frankfurters +frankie +frankincense +franking +frankness +franks +franny +frantic +franz +frappes +fraser +frat +fraternities +fraternity +fratricide +fratricides +frats +fraud +frauds +fraught +fray +frayed +fraying +frays +frazier +freak +freaked +freakier +freakiest +freaking +freakish +freaks +freaky +fred +freda +freddie +freddy +frederic +frederick +fredericton +fredric +fredrick +free +freebase +freebased +freebases +freebasing +freebee +freebees +freebie +freebies +freebooter +freebooters +freed +freedman +freedmen +freedom +freedoms +freehand +freeing +freeman +freemason +freemasonries +freemasonry +freemasons +freemen +freer +frees +freest +freestanding +freethinker +freethinkers +freethinking +freetown +freeway +freeways +freeze +freezer +freezers +freezes +freezing +freida +freight +freighted +freighter +freighters +freighting +freights +fremont +french +frenches +frenchman +frenchmen +frenchwoman +frenchwomen +frenetic +frenzied +frenzies +frenzy +freon +frequencies +frequency +frequent +frequented +frequenter +frequentest +frequenting +frequents +fresco +frescoes +frescos +fresh +freshen +freshened +freshening +freshens +fresher +freshest +freshet +freshets +freshman +freshmen +freshness +freshwater +fresno +fret +frets +fretted +fretting +fretwork +freud +freudian +frey +freya +friar +friars +fricassee +fricasseed +fricasseeing +fricassees +friction +friday +fridays +fridge +fridges +fried +frieda +friedan +friedman +friend +friended +friending +friends +friendship +friendships +frier +friers +fries +frieze +friezes +frigate +frigates +frigga +fright +frighted +frighten +frightened +frightening +frightens +frighting +frights +frigid +frigidaire +frigidity +fringe +fringed +fringes +fringing +fripperies +frippery +frisbee +frisco +frisian +frisk +frisked +friskier +friskiest +friskiness +frisking +frisks +frisky +frito +fritter +frittered +frittering +fritters +fritz +frizz +frizzed +frizzes +frizzier +frizziest +frizzing +frizzy +fro +frobisher +frock +frocks +frog +frogman +frogmen +frogs +froissart +from +fromm +frond +fronde +fronds +front +frontage +frontages +fronted +frontenac +frontier +frontiers +frontiersman +frontiersmen +fronting +frontispiece +frontispieces +frontrunner +frontrunners +fronts +frost +frostbit +frostbite +frostbites +frostbiting +frostbitten +frosted +frostier +frostiest +frostiness +frosting +frostings +frosts +frosty +froth +frothed +frothier +frothiest +frothing +froths +frothy +frown +frowned +frowning +frowns +frowsier +frowsiest +frowsy +frowzier +frowziest +frowzy +froze +frozen +fructified +fructifies +fructify +fructifying +fructose +fruit +fruitcake +fruitcakes +fruited +fruitier +fruitiest +fruiting +fruition +fruits +fruity +frump +frumpier +frumpiest +frumps +frumpy +frustrate +frustrated +frustrates +frustrating +frustration +frustrations +fry +frye +fryer +fryers +frying +fsf +fuchs +fuchsia +fuchsias +fuck +fucked +fucker +fuckers +fucking +fucks +fudge +fudged +fudges +fudging +fuentes +fugger +fugitive +fugitives +fugue +fugues +fuji +fujitsu +fujiwara +fukuoka +fukuyama +fume +fumed +fumes +fumigate +fumigated +fumigates +fumigating +fumigation +fumigator +fumigators +fuming +fun +funafuti +function +functionaries +functionary +functioned +functioning +functions +fund +funded +funding +funds +fundy +fungi +fungicide +fungicides +fungous +fungus +funguses +funk +funked +funkier +funkiest +funking +funks +funky +funner +funnest +funnier +funnies +funniest +funniness +funny +fur +furbish +furbished +furbishes +furbishing +furies +furious +furnace +furnaces +furnish +furnished +furnishes +furnishing +furnishings +furniture +furred +furrier +furriers +furriest +furring +furrow +furrowed +furrowing +furrows +furry +furs +further +furtherance +furthered +furthering +furthermore +furthermost +furthers +furthest +furtive +furtiveness +fury +furze +fuse +fused +fuses +fushun +fusing +fusion +fusions +fuss +fussbudget +fussbudgets +fussed +fusses +fussier +fussiest +fussiness +fussing +fussy +fustian +fustier +fustiest +fusty +futon +futons +future +futures +futuristic +futurities +futurity +futz +futzed +futzes +futzing +fuzhou +fuzz +fuzzbuster +fuzzed +fuzzes +fuzzier +fuzziest +fuzziness +fuzzing +fuzzy +gab +gabardine +gabardines +gabbed +gabbier +gabbiest +gabbing +gabby +gaberdine +gaberdines +gabon +gaborone +gabs +gacrux +gad +gadabout +gadabouts +gadded +gadding +gadget +gadgetry +gadgets +gads +gadsden +gaea +gaff +gaffe +gaffed +gaffes +gaffing +gaffs +gag +gagarin +gage +gagged +gagging +gags +gaia +gaiety +gaiman +gain +gained +gaines +gaining +gains +gainsaid +gainsay +gainsaying +gainsays +gainsborough +gait +gaiter +gaiters +gaits +gamay +gambia +gambit +gambits +game +gamecock +gamecocks +gamed +gamekeeper +gamekeepers +gameness +gamer +games +gamesmanship +gamest +gamete +gametes +gamey +gamier +gamiest +gamin +gamine +gamines +gaming +gamins +gamma +gammas +gamow +gamut +gamuts +gamy +gander +ganders +gandhi +gandhian +ganesha +gang +ganged +ganges +ganging +gangrene +gangrened +gangrenes +gangrening +gangrenous +gangs +gangster +gangsters +gangtok +gangway +gangways +gannet +gannets +gantries +gantry +ganymede +gap +gape +gaped +gapes +gaping +gaps +garage +garaged +garages +garaging +garb +garbage +garbageman +garbanzo +garbanzos +garbed +garbing +garbo +garbs +garcia +garden +gardened +gardener +gardeners +gardenia +gardenias +gardening +gardens +gardner +gareth +gargantua +gargantuan +garish +garishness +garment +garments +garner +garnered +garnering +garners +garnet +garnets +garnish +garnished +garnishee +garnisheed +garnisheeing +garnishees +garnishes +garnishing +garote +garoted +garotes +garoting +garotte +garotted +garottes +garotting +garret +garrets +garrett +garrick +garrison +garrisoned +garrisoning +garrisons +garrote +garroted +garrotes +garroting +garrotte +garrotted +garrottes +garrotting +garry +garter +garters +garth +garvey +gary +garza +gas +gascony +gaseous +gases +gash +gashed +gashes +gashing +gasket +gaskets +gasp +gasped +gasping +gasps +gassed +gasser +gassier +gassiest +gassing +gassy +gastric +gastritis +gastronomic +gastronomy +gasworks +gate +gatecrasher +gatecrashers +gated +gatepost +gateposts +gates +gateway +gateways +gather +gathered +gatherer +gatherers +gathering +gatherings +gathers +gating +gatorade +gatsby +gatun +gauche +gaucher +gauchest +gaucho +gauchos +gaudier +gaudiest +gaudiness +gaudy +gauge +gauged +gauges +gauging +gauguin +gaunt +gaunter +gauntest +gauntness +gauss +gaussian +gautama +gautier +gauze +gauzier +gauziest +gauzy +gave +gavin +gavotte +gavottes +gawain +gawk +gawked +gawkier +gawkiest +gawkiness +gawking +gawks +gawky +gay +gayer +gayest +gayety +gayness +gays +gaza +gaze +gazebo +gazeboes +gazebos +gazed +gazer +gazers +gazes +gazette +gazetted +gazetteer +gazetteers +gazettes +gazetting +gaziantep +gazing +gazpacho +gdansk +gear +gearbox +gearboxes +geared +gearing +gears +gearshift +gearshifts +gecko +geckoes +geckos +gee +geed +geegaw +geegaws +geeing +geek +geekier +geekiest +geeks +geeky +gees +geese +geez +geezer +geezers +geffen +gehenna +gehrig +geiger +geisha +geishas +gem +gemini +geminis +gems +gemstone +gemstones +gena +genaro +gendarme +gendarmes +gender +genders +gene +genera +generate +generated +generates +generating +generation +generations +generative +generator +generators +generic +generics +generosities +generosity +generous +genes +geneses +genesis +genet +genetic +geneticist +geneticists +genetics +geneva +genevieve +genghis +genie +genies +genii +genitive +genitives +genius +geniuses +genoa +genoas +genocide +genome +genomes +genre +genres +gent +gentian +gentians +gentoo +gentries +gentrification +gentrified +gentrifies +gentrify +gentrifying +gentry +gents +genuine +genuineness +genus +genuses +geo +geocache +geocached +geocaches +geocaching +geocentric +geode +geodes +geodesic +geodesics +geoengineering +geoffrey +geographer +geographers +geographic +geographies +geography +geometer +geometric +geometries +geometry +geophysics +george +georges +georgetown +georgette +georgia +georgian +georgians +georgina +geostationary +geranium +geraniums +gerard +gerardo +gerber +gere +geriatric +geriatrics +germ +german +germane +germanic +germanium +germans +germany +germicide +germicides +germinate +germinated +germinates +germinating +germination +germs +geronimo +gerry +gerrymander +gerrymandered +gerrymandering +gerrymanders +gershwin +gertrude +gerund +gerunds +gestapo +gestapos +gestate +gestated +gestates +gestating +gestation +gesture +gestured +gestures +gesturing +gesundheit +get +getaway +getaways +gethsemane +gets +getting +getty +gettysburg +getup +gewgaw +gewgaws +geyser +geysers +ghana +ghanaian +ghanian +ghanians +ghats +ghazvanid +ghent +gherkin +gherkins +ghetto +ghettoes +ghettos +ghost +ghosted +ghosting +ghosts +ghostwrite +ghostwriter +ghostwriters +ghostwrites +ghostwriting +ghostwritten +ghostwrote +giacometti +giannini +giant +giantess +giantesses +giants +giauque +gibber +gibbered +gibbering +gibberish +gibbers +gibbet +gibbeted +gibbeting +gibbets +gibbon +gibbons +gibbs +gibe +gibed +gibes +gibing +gibson +giddier +giddiest +giddiness +giddy +gide +gideon +gienah +gift +gifted +gifting +gifts +gig +gigabit +gigabits +gigabyte +gigabytes +gigahertz +gigantic +gigged +gigging +gigs +gimcrack +gimcracks +gimme +gimmick +gimmickry +gimmicks +gimmicky +gimpy +gin +gina +ginger +gingerbread +gingersnap +gingersnaps +gingham +gingivitis +gingko +gingkoes +gingkos +gingrich +ginkgo +ginkgoes +ginkgos +ginned +ginning +ginny +gino +gins +ginsberg +ginsburg +ginseng +ginsu +giorgione +giotto +giovanni +gipsies +gipsy +giraffe +giraffes +giraudoux +gird +girded +girder +girders +girding +girds +girt +girted +girth +girths +girting +girts +gish +gismo +gismos +gist +github +giuseppe +give +giveaway +giveaways +given +givens +gives +giving +giza +gizmo +gizmos +gizzard +gizzards +gnash +gnashed +gnashes +gnashing +gnat +gnats +gnaw +gnawed +gnawing +gnawn +gnaws +gneiss +gnome +gnomes +gnomish +gnostic +gnosticism +gnu +gnus +goa +goad +goaded +goading +goads +goat +goatee +goatees +goatherd +goatherds +goats +goatskin +goatskins +gob +gobbed +gobbing +gobi +gobs +god +goddam +goddamed +goddamn +goddamned +goddard +goddaughter +goddaughters +goddess +goddesses +godfather +godfathers +godforsaken +godhood +godiva +godmother +godmothers +godot +godparent +godparents +gods +godsend +godsends +godson +godsons +godthaab +godunov +goering +goes +goethe +gofer +gofers +goff +gog +goiania +going +goings +goitre +goitres +gomez +gomorrah +gompers +gonad +gonads +gone +goner +goners +gong +gonged +gonging +gongs +gonna +gonorrhoea +goo +goober +goobers +good +goodbye +goodbyes +goodie +goodies +goodman +goodness +goodnight +goodrich +goods +goodwin +goody +goodyear +gooey +goof +goofed +goofier +goofiest +goofing +goofs +goofy +gooier +gooiest +gook +gooks +goon +goons +goop +goose +gooseberries +gooseberry +goosed +gooses +goosing +gopher +gophers +gorbachev +gordian +gordimer +gordon +gore +gored +goren +gores +gorey +gorgas +gorge +gorged +gorgeous +gorges +gorging +gorier +goriest +goriness +goring +gorky +gorse +gory +gosh +gossamer +gossip +gossiped +gossiping +gossipped +gossipping +gossips +gossipy +got +goth +gotham +gothic +gothics +goths +gotta +gotten +gouda +goudas +gouge +gouged +gouger +gougers +gouges +gouging +gounod +gourd +gourds +gourmand +gourmands +gourmet +gourmets +gout +goutier +goutiest +gouty +govern +governance +governed +governess +governesses +governing +government +governments +governor +governors +governorship +governs +gown +gowned +gowning +gowns +goya +grab +grabbed +grabber +grabbing +grabs +gracchus +grace +graced +graces +gracie +gracing +gracious +graciousness +grad +gradation +gradations +grade +graded +grader +graders +grades +gradient +gradients +grading +grads +graduate +graduated +graduates +graduating +graduation +graduations +grady +graffias +graffiti +graffito +graft +grafted +grafter +grafters +grafting +grafton +grafts +graham +grahame +grain +grainier +grainiest +grains +grainy +gram +grammar +grammarian +grammarians +grammars +grammy +gramophone +grampians +grams +granada +granaries +granary +grand +grandad +grandads +granddad +granddads +granddaughter +granddaughters +grandee +grandees +grander +grandest +grandeur +grandfather +grandfathered +grandfathering +grandfathers +grandiose +grandma +grandmas +grandmother +grandmothers +grandness +grandpa +grandparent +grandparents +grandpas +grands +grandson +grandsons +grandstand +grandstanded +grandstanding +grandstands +grange +granges +granite +grannie +grannies +granny +grant +granted +granting +grants +grape +grapefruit +grapefruits +grapes +grapevine +grapevines +graph +graphed +graphic +graphics +graphing +graphite +graphs +grasp +grasped +grasping +grasps +grass +grassed +grasses +grasshopper +grasshoppers +grassier +grassiest +grassing +grassy +grate +grated +grater +graters +grates +gratification +gratifications +gratified +gratifies +gratify +gratifying +grating +gratings +gratis +gratitude +gratuities +gratuitous +gratuity +grave +graved +graven +graver +graves +gravest +gravestone +gravestones +graveyard +graveyards +gravies +graving +gravitate +gravitated +gravitates +gravitating +gravitation +gravity +gravy +gray +graybeard +graybeards +graze +grazed +grazes +grazing +grease +greased +greasepaint +greases +greasier +greasiest +greasiness +greasing +greasy +great +greater +greatest +greatness +greats +grebe +grebes +grecian +greece +greed +greedier +greediest +greediness +greedy +greek +greeks +green +greenback +greenbacks +greene +greened +greener +greenery +greenest +greengrocer +greengrocers +greenhorn +greenhorns +greenhouse +greenhouses +greening +greenish +greenness +greenpeace +greens +greensboro +greenspan +greensward +greenwich +greer +greet +greeted +greeting +greetings +greets +greg +gregarious +gregariousness +gregg +gregorian +gregorio +gregory +grenada +grenade +grenades +grenadier +grenadiers +grenadines +gresham +greta +gretchen +gretzky +grew +grey +greyed +greyer +greyest +greyhound +greyhounds +greying +greyish +greys +grid +gridiron +gridirons +grids +grief +griefs +grieg +grievance +grievances +grieve +grieved +grieves +grieving +grievous +griffin +griffins +griffith +grim +grimace +grimaced +grimaces +grimacing +grime +grimed +grimes +grimier +grimiest +griming +grimm +grimmer +grimmest +grimness +grimy +grin +grinch +grind +grinder +grinders +grinding +grinds +grindstone +grindstones +gringo +gringos +grinned +grinning +grins +grip +gripe +griped +gripes +griping +grippe +gripped +gripping +grips +gris +grist +grit +grits +gritted +grittier +grittiest +gritting +gritty +groan +groaned +groaning +groans +grocer +groceries +grocers +grocery +grog +groggier +groggiest +grogginess +groggy +groin +groins +grommet +grommets +gromyko +groom +groomed +grooming +grooms +groove +grooved +grooves +groovier +grooviest +grooving +groovy +grope +groped +gropes +groping +gropius +grosbeak +grosbeaks +gross +grossed +grosser +grosses +grossest +grossing +grossness +grosz +grotesque +grotesques +grotius +grotto +grottoes +grottos +grouch +grouched +grouches +grouchier +grouchiest +grouchiness +grouching +grouchy +ground +groundbreaking +groundbreakings +grounded +grounder +grounders +groundhog +groundhogs +grounding +groundings +grounds +groundwork +group +grouped +grouper +groupers +groupie +groupies +grouping +groupings +groups +grouse +groused +grouses +grousing +grout +grouted +grouting +grouts +grove +grover +groves +grow +grower +growers +growing +grown +grownup +grownups +grows +growth +growths +grub +grubbed +grubbier +grubbiest +grubbiness +grubbing +grubby +grubs +grubstake +grudge +grudged +grudges +grudging +gruesome +gruesomer +gruesomest +gruff +gruffer +gruffest +gruffness +grumman +grumpier +grumpiest +grumpiness +grumpy +grundy +grunge +grungier +grungiest +grungy +grunt +grunted +grunting +grunts +grus +gruyeres +gryphon +gryphons +gte +guam +guangzhou +guano +guantanamo +guarani +guarantee +guaranteed +guaranteeing +guarantees +guarantied +guaranties +guarantor +guarantors +guaranty +guarantying +guard +guarded +guardhouse +guardhouses +guardian +guardians +guardianship +guarding +guardroom +guardrooms +guards +guardsman +guardsmen +guarnieri +guava +guavas +gucci +guernsey +guernseys +guerra +guerrero +guess +guessed +guesser +guessers +guesses +guessing +guesstimate +guesstimated +guesstimates +guesstimating +guesswork +guest +guested +guesting +guests +guevara +guff +guffaw +guffawed +guffawing +guffaws +guggenheim +guiana +guidance +guide +guidebook +guidebooks +guided +guides +guiding +guinea +guinean +guineans +guineas +guinevere +guinness +guise +guises +guitar +guitarist +guitarists +guitars +guiyang +guizot +gujarat +gujarati +gum +gumbo +gumbos +gumdrop +gumdrops +gummed +gummier +gummiest +gumming +gummy +gumption +gums +gun +gunboat +gunboats +gunfight +gunfights +gunfire +gunk +gunman +gunmen +gunned +gunner +gunners +gunnery +gunning +gunny +gunnysack +gunnysacks +gunpoint +gunpowder +gunrunner +gunrunners +gunrunning +guns +gunshot +gunshots +gunsmith +gunsmiths +gunther +guofeng +guppies +guppy +gupta +gurkha +gurney +gurneys +guru +gurus +gus +gush +gushed +gusher +gushers +gushes +gushier +gushiest +gushing +gushy +gusset +gusseted +gusseting +gussets +gust +gustatory +gustav +gustavo +gustavus +gusted +gustier +gustiest +gusting +gusto +gusts +gusty +gut +gutenberg +guthrie +gutierrez +guts +gutsier +gutsiest +gutsy +gutted +gutter +guttered +guttering +gutters +guttersnipe +guttersnipes +gutting +guy +guyana +guyanese +guyed +guying +guys +guzman +gwen +gwyn +gybe +gybed +gybes +gybing +gym +gymnasia +gymnasium +gymnasiums +gymnast +gymnastic +gymnastics +gymnasts +gymnosperm +gymnosperms +gyms +gyp +gypped +gypping +gyps +gypsies +gypsum +gypsy +gyrate +gyrated +gyrates +gyrating +gyration +gyrations +gyro +gyros +gyroscope +gyroscopes +haas +habakkuk +haber +haberdasher +haberdasheries +haberdashers +haberdashery +habit +habitat +habitation +habitations +habitats +habits +habituate +habituated +habituates +habituating +habituation +hacienda +haciendas +hack +hacked +hacker +hackers +hacking +hackney +hackneyed +hackneying +hackneys +hacks +hacksaw +hacksaws +hacktivist +hacktivists +had +hadar +haddock +haddocks +hades +hadrian +haemorrhage +haemorrhaged +haemorrhages +haemorrhaging +haemorrhoids +hafiz +hafnium +haft +hafts +hag +hagar +haggai +haggard +hagiographa +hags +hague +hah +hahn +haifa +haiku +haiphong +hair +hairbreadth +hairbreadths +hairbrush +hairbrushes +haircut +haircuts +hairdo +hairdos +hairdresser +hairdressers +hairdressing +haired +hairier +hairiest +hairiness +hairnet +hairnets +hairpiece +hairpieces +hairpin +hairpins +hairs +hairsbreadth +hairsbreadths +hairspring +hairsprings +hairy +haiti +haitian +haitians +hake +hakes +hakka +ham +haman +hamburg +hamburger +hamburgers +hamburgs +hamhung +hamitic +hammed +hammer +hammered +hammerhead +hammerheads +hammering +hammerings +hammers +hammerstein +hammett +hamming +hammock +hammocks +hammond +hammurabi +hamper +hampered +hampering +hampers +hampshire +hampton +hams +hamster +hamsters +hamstring +hamstringing +hamstrings +hamstrung +hamsun +han +hancock +hand +handbag +handbags +handbook +handbooks +handcar +handcars +handcart +handcarts +handcraft +handcrafted +handcrafting +handcrafts +handcuff +handcuffed +handcuffing +handcuffs +handed +handedness +handgun +handguns +handicap +handicapped +handicapper +handicappers +handicapping +handicaps +handicraft +handicrafts +handier +handiest +handiness +handing +handiwork +handkerchief +handkerchiefs +handkerchieves +handmade +handmaid +handmaiden +handmaidens +handmaids +handout +handouts +handpick +handpicked +handpicking +handpicks +hands +handset +handsets +handshake +handshakes +handshaking +handsome +handsomeness +handsomer +handsomest +handspring +handsprings +handstand +handstands +handwork +handwriting +handwritten +handy +handyman +handymen +haney +hang +hangar +hangars +hangdog +hanged +hanger +hangers +hanging +hangings +hangman +hangmen +hangout +hangouts +hangover +hangovers +hangs +hangzhou +hank +hanker +hankered +hankering +hankerings +hankers +hankie +hankies +hanks +hanky +hanna +hannah +hanoi +hanover +hanoverian +hans +hansen +hansom +hansoms +hanson +hanukkah +hanukkahs +haphazard +happen +happened +happening +happenings +happens +happenstance +happenstances +happier +happiest +happiness +happy +hapsburg +harangue +harangued +harangues +haranguing +harare +harass +harassed +harasses +harassing +harassment +harbin +harbinger +harbingers +hard +hardback +hardbacks +hardcover +hardcovers +harden +hardened +hardener +hardeners +hardening +hardens +harder +hardest +hardheaded +hardheadedness +hardhearted +hardheartedness +hardier +hardiest +hardin +hardiness +harding +hardness +hardship +hardships +hardtack +hardtop +hardtops +hardware +hardwood +hardwoods +hardy +hare +harebrained +hared +harem +harems +hares +hargreaves +haring +hark +harked +harken +harkened +harkening +harkens +harking +harks +harm +harmed +harming +harmon +harmonic +harmonica +harmonicas +harmonics +harmonies +harmonious +harmoniousness +harmony +harms +harness +harnessed +harnesses +harnessing +harp +harped +harper +harpies +harping +harpist +harpists +harpoon +harpooned +harpooning +harpoons +harps +harpsichord +harpsichords +harpy +harridan +harridans +harried +harries +harriet +harriett +harrington +harris +harrisburg +harrison +harrods +harrow +harrowed +harrowing +harrows +harry +harrying +harsh +harsher +harshest +harshness +hart +harte +hartford +hartman +harts +harvard +harvest +harvested +harvester +harvesters +harvesting +harvests +harvey +has +hasbro +hash +hashed +hasheesh +hashes +hashing +hashish +hashtag +hashtags +hasidim +hasp +hasps +hassock +hassocks +haste +hasted +hasten +hastened +hastening +hastens +hastes +hastier +hastiest +hastiness +hasting +hastings +hasty +hat +hatch +hatchback +hatchbacks +hatched +hatcheries +hatchery +hatches +hatchet +hatchets +hatching +hatchway +hatchways +hate +hated +hater +haters +hates +hath +hathaway +hating +hatred +hatreds +hats +hatsheput +hatted +hatter +hatteras +hatters +hattie +hatting +haughtier +haughtiest +haughtiness +haughty +haunch +haunches +haunt +haunted +haunting +haunts +hauptmann +hausa +hausdorff +hauteur +havana +havanas +havarti +have +haven +havens +haversack +haversacks +haves +having +havoc +haw +hawaii +hawaiian +hawaiians +hawed +hawing +hawk +hawked +hawker +hawkers +hawking +hawkins +hawkish +hawks +haws +hawser +hawsers +hawthorn +hawthorne +hawthorns +hay +haycock +haycocks +hayden +haydn +hayed +hayes +haying +haymow +haymows +haynes +hays +hayseed +hayseeds +haystack +haystacks +haywire +haywood +hayworth +hazard +hazarded +hazarding +hazardous +hazards +haze +hazed +hazes +hazier +haziest +haziness +hazing +hazings +hazmat +hazy +head +headache +headaches +headband +headbands +headboard +headboards +headdress +headdresses +headed +header +headers +headfirst +headgear +headhunter +headhunters +headier +headiest +heading +headings +headmaster +headmasters +headmistress +headmistresses +headphone +headphones +headquarter +headquarters +headrest +headrests +headroom +heads +headset +headsets +headstone +headstones +headstrong +headwaiter +headwaiters +headwaters +headway +headwind +headwinds +headword +headwords +heady +heap +heaped +heaping +heaps +hear +heard +hearer +hearers +hearing +hearings +hearken +hearkened +hearkening +hearkens +hears +hearsay +hearse +hearses +hearst +heart +heartache +heartaches +heartbeat +heartbeats +heartbreak +heartbreaking +heartbreaks +heartbroken +heartburn +hearten +heartened +heartening +heartens +hearth +hearths +heartier +hearties +heartiest +heartiness +heartrending +hearts +heartsick +heartstrings +heartthrob +heartthrobs +heartwarming +hearty +heat +heated +heater +heaters +heath +heathen +heathenish +heathens +heather +heaths +heating +heats +heatstroke +heave +heaved +heaven +heavens +heavenward +heavenwards +heaves +heavier +heavies +heaviest +heaviness +heaving +heaviside +heavy +heavyset +heavyweight +heavyweights +hebe +hebert +hebraic +hebrew +hebrews +hebrides +hecate +heck +hectare +hectares +hectic +hector +hectored +hectoring +hectors +hecuba +hedge +hedged +hedgehog +hedgehogs +hedgerow +hedgerows +hedges +hedging +hedonism +hedonist +hedonistic +hedonists +heed +heeded +heeding +heeds +heehaw +heehawed +heehawing +heehaws +heep +hefner +heft +hefted +heftier +heftiest +hefting +hefts +hefty +hegemony +hegira +heidegger +heidi +heifer +heifers +heifetz +height +heighten +heightened +heightening +heightens +heights +heine +heineken +heinous +heinousness +heinrich +heinz +heir +heiress +heiresses +heirs +heisenberg +heisman +heist +heisted +heisting +heists +hem +hemingway +hemisphere +hemispheres +hemispheric +hemmed +hemming +hemp +hempen +hems +hemstitch +hemstitched +hemstitches +hemstitching +hen +hence +henceforth +henceforward +hench +henchman +henchmen +henderson +hendricks +hendrix +henna +hennaed +hennaing +hennas +hennessy +henpeck +henpecked +henpecking +henpecks +henri +henrietta +henry +hens +henson +hep +hepatic +hepatitis +hepburn +hephaestus +hepper +heppest +heptagon +heptagons +her +hera +herb +herbaceous +herbage +herbart +herbert +herbicide +herbicides +herbivore +herbivores +herbivorous +herbs +herd +herded +herder +herders +herding +herds +herdsman +herdsmen +here +hereabout +hereabouts +hereafter +hereafters +hereby +hereditary +heredity +hereford +herein +hereof +herero +heresies +heresy +heretic +heretics +hereto +heretofore +hereupon +herewith +heriberto +heritage +heritages +herman +hermaphrodite +hermaphrodites +hermaphroditic +hermaphroditus +hermes +hermetic +herminia +hermit +hermitage +hermitages +hermite +hermits +hernandez +hernia +herniae +hernias +hero +herod +herodotus +heroes +heroic +heroics +heroin +heroine +heroins +heroism +heron +herons +heros +herpes +herrera +herrick +herring +herringbone +herrings +hers +hersey +hershey +hertz +hertzes +hertzsprung +herzegovina +hes +heshvan +hesiod +hesitancy +hesitant +hesitate +hesitated +hesitates +hesitating +hesitation +hesitations +hesperus +hess +hesse +hessian +hester +heston +heterodox +heterodoxy +heterogeneity +heterogeneous +hettie +heuristic +heuristics +hew +hewed +hewer +hewers +hewing +hewitt +hewn +hews +hex +hexagon +hexagons +hexameter +hexameters +hexed +hexes +hexing +hey +heyday +heydays +heywood +hezekiah +hiatus +hiatuses +hiawatha +hibachi +hibachis +hibernate +hibernated +hibernates +hibernating +hibernation +hibernia +hibiscus +hibiscuses +hiccough +hiccoughed +hiccoughing +hiccoughs +hiccup +hiccuped +hiccuping +hiccups +hick +hickey +hickeys +hickman +hickok +hickories +hickory +hicks +hid +hidden +hide +hideaway +hideaways +hidebound +hided +hideous +hideousness +hideout +hideouts +hides +hiding +hie +hied +hieing +hierarchies +hierarchy +hieronymus +hies +higgins +high +highborn +highboy +highboys +highbrow +highbrows +highchair +highchairs +higher +highest +highjack +highjacked +highjacker +highjackers +highjacking +highjacks +highness +highs +highway +highwayman +highwaymen +highways +hijack +hijacked +hijacker +hijackers +hijacking +hijackings +hijacks +hike +hiked +hiker +hikers +hikes +hiking +him +hims +hinayana +hind +hindemith +hindenburg +hinder +hindered +hindering +hinders +hindi +hindmost +hindquarter +hindquarters +hindrance +hindrances +hinds +hindsight +hindu +hinduism +hinduisms +hindus +hindustan +hindustani +hines +hinge +hinged +hinges +hinging +hint +hinted +hinting +hinton +hints +hip +hipparchus +hipped +hipper +hippest +hippie +hippies +hipping +hippo +hippocrates +hippocratic +hippopotami +hippopotamus +hippopotamuses +hippos +hippy +hips +hiram +hire +hired +hires +hiring +hirobumi +hirohito +hiroshima +hirsute +his +hispanic +hispanics +hiss +hissed +hisses +hissing +histamine +histamines +histogram +histograms +historian +historians +historic +histories +history +histrionic +histrionics +hit +hitachi +hitch +hitchcock +hitched +hitches +hitchhike +hitchhiked +hitchhiker +hitchhikers +hitchhikes +hitchhiking +hitching +hither +hitherto +hits +hitter +hitters +hitting +hittite +hive +hived +hives +hiving +hmong +hoagie +hoagies +hoagy +hoard +hoarded +hoarder +hoarders +hoarding +hoards +hoarfrost +hoarier +hoariest +hoariness +hoarse +hoarseness +hoarser +hoarsest +hoary +hoax +hoaxed +hoaxer +hoaxers +hoaxes +hoaxing +hob +hobart +hobbes +hobbies +hobbit +hobbs +hobby +hobbyhorse +hobbyhorses +hobbyist +hobbyists +hobnob +hobnobbed +hobnobbing +hobnobs +hobo +hoboes +hobos +hobs +hock +hocked +hockey +hocking +hockney +hocks +hockshop +hockshops +hod +hodge +hodgepodge +hodgepodges +hodges +hodgkin +hods +hoe +hoed +hoedown +hoedowns +hoeing +hoes +hoff +hoffa +hoffman +hofstadter +hog +hogan +hogans +hogarth +hogged +hogging +hoggish +hogs +hogshead +hogsheads +hogwarts +hogwash +hohenstaufen +hohhot +hohokam +hoist +hoisted +hoisting +hoists +hokey +hokier +hokiest +hokkaido +hokum +hokusai +homage +homages +homburg +homburgs +home +homebodies +homebody +homeboy +homeboys +homecoming +homecomings +homed +homegrown +homemade +homemaker +homemakers +homeopathic +homeopathy +homeowner +homeowners +homepage +homepages +homer +homered +homeric +homering +homeroom +homerooms +homers +homes +homesick +homesickness +homespun +homestead +homesteaded +homesteader +homesteaders +homesteading +homesteads +homestretch +homestretches +hometown +hometowns +homeward +homewards +homework +homewrecker +homewreckers +homey +homeyness +homeys +homicide +homicides +homie +homier +homies +homiest +hominess +homing +hominy +homogeneity +homogeneous +homograph +homographs +homonym +homonyms +homophobia +homophobic +homophone +homophones +homy +honcho +honchos +honda +honduran +hondurans +honduras +hone +honecker +honed +hones +honest +honester +honestest +honesty +honey +honeybee +honeybees +honeycomb +honeycombed +honeycombing +honeycombs +honeydew +honeydews +honeyed +honeying +honeymoon +honeymooned +honeymooner +honeymooners +honeymooning +honeymoons +honeys +hong +honiara +honied +honing +honk +honked +honking +honks +honoraria +honorarium +honorariums +honorary +honorific +honorifics +honshu +hooch +hood +hooded +hoodie +hoodies +hooding +hoodoo +hoodooed +hoodooing +hoodoos +hoods +hoodwink +hoodwinked +hoodwinking +hoodwinks +hooey +hoof +hoofed +hoofing +hoofs +hook +hookah +hookahs +hooke +hooked +hooker +hookers +hookey +hooking +hooks +hookup +hookups +hookworm +hookworms +hooky +hoop +hooped +hooper +hooping +hoops +hooray +hoorayed +hooraying +hoorays +hoosier +hoot +hootch +hooted +hooter +hooters +hooting +hoots +hoover +hoovers +hooves +hop +hope +hoped +hopes +hopi +hoping +hopkins +hopped +hopper +hoppers +hopping +hops +hopscotch +hopscotched +hopscotches +hopscotching +horace +horacio +horatio +horde +horded +hordes +hording +horizon +horizons +hormone +hormones +hormuz +horn +horne +horned +hornet +hornets +hornier +horniest +hornpipe +hornpipes +horns +horny +horoscope +horoscopes +horowitz +horrendous +horrid +horrific +horrified +horrifies +horrify +horrifying +horror +horrors +horse +horseback +horsed +horsehair +horsehide +horseman +horsemanship +horsemen +horsepower +horseradish +horseradishes +horses +horseshoe +horseshoed +horseshoeing +horseshoes +horsewhip +horsewhipped +horsewhipping +horsewhips +horsewoman +horsewomen +horsey +horsier +horsiest +horsing +horsy +horthy +horton +horus +hos +hosanna +hosannas +hose +hosea +hosed +hoses +hosiery +hosing +hospice +hospices +host +hostage +hostages +hosted +hostess +hostessed +hostesses +hostessing +hosting +hosts +hot +hotbed +hotbeds +hotcake +hotcakes +hothead +hotheaded +hotheadedness +hotheads +hothouse +hothouses +hotkey +hotkeys +hotness +hotpoint +hotshot +hotshots +hottentot +hotter +hottest +houdini +hoummos +houmous +hound +hounded +hounding +hounds +hour +hours +house +houseboat +houseboats +housebound +housebreak +housebreaking +housebreaks +housebroke +housebroken +housecoat +housecoats +housed +househusband +househusbands +housekeeper +housekeepers +housekeeping +housemaid +housemaids +housemother +housemothers +houses +housetop +housetops +housewares +housewarming +housewarmings +housewife +housewives +housework +housing +housings +housman +houston +houyhnhnm +hove +hover +hovercraft +hovercrafts +hovered +hovering +hovers +hovhaness +how +howard +howdah +howdahs +howdy +howe +however +howitzer +howitzers +hows +howsoever +hrothgar +hsbc +huang +hub +hubbard +hubbies +hubbub +hubbubs +hubby +hubcap +hubcaps +huber +hubert +hubris +hubs +huck +huckster +huckstered +huckstering +hucksters +hudson +hue +hued +huerta +hues +huey +huff +huffed +huffier +huffiest +huffing +huffman +huffs +huffy +hug +huge +hugeness +huger +hugest +hugged +hugging +huggins +hugh +hughes +hugo +hugs +huguenot +huguenots +huh +hui +hum +human +humane +humaneness +humaner +humanest +humanism +humanist +humanistic +humanists +humanitarian +humanitarianism +humanitarians +humanities +humanity +humankind +humanness +humanoid +humanoids +humans +humberto +humbug +humbugged +humbugging +humbugs +humdinger +humdingers +humdrum +hume +humeri +humerus +humid +humidified +humidifier +humidifiers +humidifies +humidify +humidifying +humidity +humidor +humidors +hummed +hummer +humming +hummingbird +hummingbirds +hummock +hummocks +hummus +humongous +humorist +humorists +humorous +hump +humpback +humpbacked +humpbacks +humped +humphrey +humping +humps +hums +humungous +humus +humvee +hun +hunch +hunchback +hunchbacked +hunchbacks +hunched +hunches +hunching +hundred +hundreds +hundredth +hundredths +hundredweight +hundredweights +hung +hungarian +hungarians +hungary +hunger +hungered +hungering +hungers +hungover +hungrier +hungriest +hungry +hunk +hunker +hunkered +hunkering +hunkers +hunks +huns +hunt +hunted +hunter +hunters +hunting +huntington +huntress +huntresses +hunts +huntsman +huntsmen +huron +hurrah +hurrahed +hurrahing +hurrahs +hurray +hurrayed +hurraying +hurrays +hurricane +hurricanes +hurried +hurries +hurry +hurrying +hurst +hurt +hurting +hurts +hus +husband +husbanded +husbanding +husbandry +husbands +hush +hushed +hushes +hushing +husk +husked +husker +huskers +huskier +huskies +huskiest +huskiness +husking +husks +husky +hussar +hussars +hussein +hussies +hussite +hussy +hustings +huston +hut +hutch +hutches +hutchinson +huts +hutton +hutu +hutzpa +hutzpah +huygens +hyacinth +hyacinths +hyades +hyaena +hyaenas +hybrid +hybrids +hyde +hyderabad +hydra +hydrae +hydrangea +hydrangeas +hydrant +hydrants +hydras +hydrate +hydrated +hydrates +hydrating +hydrocarbon +hydrocarbons +hydrogen +hydrogenate +hydrogenated +hydrogenates +hydrogenating +hydrometer +hydrometers +hydrophobia +hydroponic +hydroponics +hydrosphere +hydrotherapy +hyena +hyenas +hygiene +hygienic +hygienist +hygienists +hygrometer +hygrometers +hying +hymen +hymens +hymn +hymned +hymning +hymns +hype +hyped +hyper +hyperactive +hyperactivity +hyperion +hypermarket +hypersensitive +hypersensitivities +hypersensitivity +hyperspace +hypertension +hypertext +hypes +hyphen +hyphenate +hyphenated +hyphenates +hyphenating +hyphenation +hyphenations +hyphened +hyphening +hyphens +hyping +hypnoses +hypnosis +hypnotic +hypnotics +hypnotism +hypnotist +hypnotists +hypo +hypochondria +hypochondriac +hypochondriacs +hypocrisies +hypocrisy +hypocrite +hypocrites +hypodermic +hypodermics +hypos +hypotenuse +hypotenuses +hypothermia +hypotheses +hypothesis +hysterectomies +hysterectomy +hysteresis +hysteria +hysteric +hysterics +hyundai +iamb +iambic +iambics +iambs +ibex +ibexes +ibices +ibis +ibises +ibuprofen +ice +iceberg +icebergs +icebound +icebox +iceboxes +icebreaker +icebreakers +icecap +icecaps +iced +ices +icier +iciest +iciness +icing +icings +ickier +ickiest +icky +icon +icons +icy +idea +ideas +identification +identified +identifier +identifiers +identifies +identify +identifying +identities +identity +ideogram +ideograms +ideograph +ideographs +ides +idiocies +idiocy +idiom +idiomatic +idioms +idiosyncrasies +idiosyncrasy +idiosyncratic +idiot +idiotic +idiots +ids +iffier +iffiest +iffy +ifs +igneous +ignite +ignited +ignites +igniting +ignition +ignitions +ignominies +ignominious +ignominy +ignoramus +ignoramuses +ignorance +ignorant +ignore +ignored +ignores +ignoring +iguana +iguanas +ikon +ikons +image +imaged +imagery +images +imaginary +imagination +imaginations +imaginative +imagine +imagined +imagines +imaging +imagining +imam +imams +imbed +imbedded +imbedding +imbeds +imbibe +imbibed +imbibes +imbibing +imbue +imbued +imbues +imbuing +imitate +imitated +imitates +imitating +imitation +imitations +imitative +imitator +imitators +immanence +immanent +immature +immaturity +immediacy +immediate +immense +immensities +immensity +immerse +immersed +immerses +immersing +immersion +immersions +immersive +immigrant +immigrants +immigrate +immigrated +immigrates +immigrating +immigration +imminence +imminent +immoderate +immodest +immodesty +immune +immunity +immure +immured +immures +immuring +imp +impact +impacted +impacting +impacts +impair +impaired +impairing +impairment +impairments +impairs +impart +imparted +imparting +imparts +impasse +impasses +impassioned +impassive +impassivity +impatience +impatiences +impatient +impeach +impeached +impeaches +impeaching +impeachment +impeachments +impecunious +impecuniousness +impedance +impede +impeded +impedes +impediment +impedimenta +impediments +impeding +impend +impended +impending +impends +impenitence +impenitent +imperative +imperatives +imperfect +imperfection +imperfections +imperfects +imperious +imperiousness +impermanence +impermanent +impersonate +impersonated +impersonates +impersonating +impersonation +impersonations +impersonator +impersonators +impertinence +impertinent +impervious +impetigo +impetuosity +impetuous +impetus +impetuses +impieties +impiety +impinge +impinged +impingement +impinges +impinging +impious +impish +impishness +import +importance +important +importation +importations +imported +importer +importers +importing +imports +importunate +importune +importuned +importunes +importuning +importunity +impose +imposed +imposes +imposing +imposition +impositions +imposter +imposters +impostor +impostors +imposture +impostures +impotence +impotent +impound +impounded +impounding +impounds +impoverish +impoverished +impoverishes +impoverishing +impoverishment +imprecation +imprecations +imprecise +imprecision +impregnate +impregnated +impregnates +impregnating +impregnation +impresario +impresarios +impress +impressed +impresses +impressing +impression +impressionism +impressionist +impressionistic +impressionists +impressions +impressive +impressiveness +imprimatur +imprimaturs +imprint +imprinted +imprinting +imprints +imprison +imprisoned +imprisoning +imprisonment +imprisonments +imprisons +impromptu +impromptus +improper +improprieties +impropriety +improve +improved +improvement +improvements +improves +improvidence +improvident +improving +improvisation +improvisations +improvise +improvised +improvises +improvising +imprudence +imprudent +imps +impudence +impudent +impugn +impugned +impugning +impugns +impunity +impure +impurer +impurest +impurities +impurity +imputation +imputations +impute +imputed +imputes +imputing +inaccuracies +inaccuracy +inaccurate +inaction +inactive +inactivity +inadequacies +inadequacy +inadequate +inadvertence +inadvertent +inamorata +inamoratas +inane +inaner +inanest +inanimate +inanities +inanity +inappropriate +inapt +inasmuch +inattention +inattentive +inaugurate +inaugurated +inaugurates +inaugurating +inauguration +inaugurations +inauspicious +inboard +inboards +inborn +inbound +inbox +inboxes +inbred +inbreed +inbreeding +inbreeds +incandescence +incandescent +incantation +incantations +incapacitate +incapacitated +incapacitates +incapacitating +incapacity +incarcerate +incarcerated +incarcerates +incarcerating +incarceration +incarcerations +incarnate +incarnated +incarnates +incarnating +incarnation +incarnations +incautious +incendiaries +incendiary +incense +incensed +incenses +incensing +incentive +incentives +inception +inceptions +incessant +incest +incestuous +inch +inched +inches +inching +inchoate +incidence +incidences +incident +incidents +incinerate +incinerated +incinerates +incinerating +incineration +incinerator +incinerators +incipient +incise +incised +incises +incising +incision +incisions +incisive +incisiveness +incisor +incisors +incite +incited +incitement +incitements +incites +inciting +incognito +incognitos +incoherence +incoherent +income +incomes +incoming +incommensurate +incommunicado +incompetence +incompetent +incompetents +incongruities +incongruity +incongruous +inconsiderate +inconsiderateness +inconsistencies +inconsistency +inconsistent +inconspicuous +inconspicuousness +inconstancy +inconstant +incontinence +incontinent +inconvenience +inconvenienced +inconveniences +inconveniencing +inconvenient +incorporate +incorporated +incorporates +incorporating +incorporation +incorrect +incorrectness +increase +increased +increases +increasing +increment +incremented +increments +incriminate +incriminated +incriminates +incriminating +incrimination +incriminatory +incrust +incrustation +incrustations +incrusted +incrusting +incrusts +incubate +incubated +incubates +incubating +incubation +incubator +incubators +incubi +incubus +incubuses +incumbencies +incumbency +incumbent +incumbents +incur +incurious +incurred +incurring +incurs +incursion +incursions +indebted +indebtedness +indecencies +indecency +indecent +indecision +indecisive +indecisiveness +indecorous +indeed +indefinite +indemnification +indemnifications +indemnified +indemnifies +indemnify +indemnifying +indemnities +indemnity +indent +indentation +indentations +indented +indenting +indents +indenture +indentured +indentures +indenturing +independence +independent +independents +indeterminacy +indeterminate +index +indexed +indexes +indexing +indicate +indicated +indicates +indicating +indication +indications +indicative +indicatives +indicator +indicators +indices +indict +indicted +indicting +indictment +indictments +indicts +indifference +indifferent +indigence +indigenous +indigent +indigents +indigestion +indignant +indignation +indignities +indignity +indigo +indirect +indirection +indirectness +indiscreet +indiscretion +indiscretions +indiscriminate +indisposed +indisposition +indispositions +indistinct +indistinctness +indoctrinate +indoctrinated +indoctrinates +indoctrinating +indoctrination +indoor +indoors +indorse +indorsed +indorsement +indorsements +indorses +indorsing +induce +induced +inducement +inducements +induces +inducing +induct +inductance +inducted +inductee +inductees +inducting +induction +inductions +inductive +inducts +indue +indued +indues +induing +industries +industrious +industriousness +industry +inebriate +inebriated +inebriates +inebriating +inebriation +ineffective +ineffectiveness +inefficiencies +inefficiency +inefficient +inept +ineptitude +ineptness +inequities +inequity +inert +inertia +inertness +inexact +inexpedient +inexpensive +inexperience +inexperienced +inexpert +infamies +infamous +infamy +infancy +infant +infanticide +infanticides +infantries +infantry +infantryman +infantrymen +infants +infarction +infatuate +infatuated +infatuates +infatuating +infatuation +infatuations +infect +infected +infecting +infection +infections +infectious +infectiousness +infects +infer +inference +inferences +inferior +inferiority +inferiors +inferno +infernos +inferred +inferring +infers +infest +infestation +infestations +infested +infesting +infests +infighting +infinite +infinities +infinitive +infinitives +infinitude +infinity +infirm +infirmaries +infirmary +infirmities +infirmity +infix +info +inform +informant +informants +information +informative +informed +informer +informers +informing +informs +infotainment +infraction +infractions +infrared +infrastructure +infrastructures +infrequency +infrequent +infringe +infringed +infringement +infringements +infringes +infringing +infuriate +infuriated +infuriates +infuriating +infuse +infused +infuses +infusing +infusion +infusions +ingenious +ingenuity +ingenuous +ingenuousness +ingest +ingested +ingesting +ingestion +ingests +ingot +ingots +ingrain +ingrained +ingraining +ingrains +ingrate +ingrates +ingratiate +ingratiated +ingratiates +ingratiating +ingratitude +ingredient +ingredients +ingress +ingresses +ingrown +inhabit +inhabitant +inhabitants +inhabited +inhabiting +inhabits +inhere +inhered +inherent +inheres +inhering +inherit +inheritance +inheritances +inherited +inheriting +inheritor +inheritors +inherits +inhibit +inhibited +inhibiting +inhibition +inhibitions +inhibits +inhuman +inhumane +inhumanities +inhumanity +iniquities +iniquitous +iniquity +initiate +initiated +initiates +initiating +initiation +initiations +initiative +initiatives +initiator +initiators +inject +injected +injecting +injection +injections +injector +injectors +injects +injudicious +injunction +injunctions +injure +injured +injures +injuries +injuring +injurious +injury +injustice +injustices +ink +inked +inkier +inkiest +inkiness +inking +inks +inky +inmate +inmates +inmost +inn +innards +innate +inner +innermost +inning +innings +innkeeper +innkeepers +innocence +innocent +innocents +innocuous +innovate +innovated +innovates +innovating +innovation +innovations +innovative +innovator +innovators +inns +innuendo +innuendoes +innuendos +inoffensive +inoperative +inopportune +inordinate +inorganic +inpatient +inpatients +input +inputs +inputted +inputting +inquest +inquests +inquietude +inquire +inquired +inquirer +inquirers +inquires +inquiries +inquiring +inquiry +inquisition +inquisitions +inquisitive +inquisitiveness +inquisitor +inquisitors +inroad +inroads +ins +insane +insaner +insanest +insanity +inscribe +inscribed +inscribes +inscribing +inscription +inscriptions +inseam +inseams +insect +insecticide +insecticides +insectivore +insectivores +insectivorous +insects +insecure +insecurities +insecurity +inseminate +inseminated +inseminates +inseminating +insemination +insensate +insensitive +insensitivity +insentience +insentient +insert +inserted +inserting +insertion +insertions +inserts +inset +insets +insetted +insetting +inshore +inside +insider +insiders +insides +insidious +insidiousness +insight +insights +insigne +insignes +insignia +insignias +insignificance +insignificant +insincere +insincerity +insinuate +insinuated +insinuates +insinuating +insinuation +insinuations +insipid +insist +insisted +insistence +insistent +insisting +insists +insofar +insomnia +insomniac +insomniacs +insouciance +insouciant +inspect +inspected +inspecting +inspection +inspections +inspector +inspectors +inspects +inspiration +inspirations +inspire +inspired +inspires +inspiring +instance +instanced +instances +instancing +instant +instantaneous +instants +instead +instep +insteps +instigate +instigated +instigates +instigating +instigation +instigator +instigators +instinct +instinctive +instincts +institute +instituted +institutes +instituting +institution +institutions +instruct +instructed +instructing +instruction +instructions +instructive +instructor +instructors +instructs +instrument +instrumentation +instrumented +instrumenting +instruments +insubordinate +insubordination +insufficiency +insufficient +insurance +insurances +insure +insured +insureds +insurer +insurers +insures +insurgence +insurgences +insurgencies +insurgency +insurgent +insurgents +insuring +insurrection +insurrectionist +insurrectionists +insurrections +intact +intake +intakes +integer +integers +integrate +integrated +integrates +integrating +integration +integrator +integrity +integument +integuments +intemperance +intemperate +intend +intended +intendeds +intending +intends +intense +intenser +intensest +intensification +intensified +intensifier +intensifiers +intensifies +intensify +intensifying +intensities +intensity +intensive +intensives +intent +intention +intentions +intentness +intents +inter +interact +interacted +interacting +interaction +interactions +interactive +interacts +interbred +interbreed +interbreeding +interbreeds +intercede +interceded +intercedes +interceding +intercept +intercepted +intercepting +interception +interceptions +interceptor +interceptors +intercepts +intercession +intercessions +intercessor +intercessors +interchange +interchanged +interchanges +interchanging +intercom +intercoms +interconnect +interconnected +interconnecting +interconnection +interconnections +interconnects +intercourse +interdependence +interdependent +interdict +interdicted +interdicting +interdiction +interdicts +interest +interested +interesting +interests +interface +interfaced +interfaces +interfacing +interfaith +interfere +interfered +interference +interferes +interfering +interferon +interim +interior +interiors +interject +interjected +interjecting +interjection +interjections +interjects +intermarriage +intermarriages +intermarried +intermarries +intermarry +intermarrying +intermediaries +intermediary +intermediate +intermediates +interment +interments +intermezzi +intermezzo +intermezzos +intermission +intermissions +intermittent +intern +interne +internecine +interned +internee +internees +internement +internes +interneship +interneships +internet +interning +internist +internists +internment +interns +internship +internships +interoffice +interpose +interposed +interposes +interposing +interposition +interpret +interpretation +interpretations +interpretative +interpreted +interpreter +interpreters +interpreting +interpretive +interprets +interred +interring +interrogate +interrogated +interrogates +interrogating +interrogation +interrogations +interrogative +interrogatives +interrogator +interrogatories +interrogators +interrogatory +interrupt +interrupted +interrupting +interruption +interruptions +interrupts +inters +intersect +intersected +intersecting +intersection +intersections +intersects +intersperse +interspersed +intersperses +interspersing +interstate +interstates +interstice +interstices +intertwine +intertwined +intertwines +intertwining +interurban +intervene +intervened +intervenes +intervening +intervention +interventions +interview +interviewed +interviewee +interviewees +interviewer +interviewers +interviewing +interviews +interweave +interweaved +interweaves +interweaving +interwove +interwoven +intestate +intestine +intestines +intimacies +intimacy +intimate +intimated +intimates +intimating +intimation +intimations +intimidate +intimidated +intimidates +intimidating +intimidation +into +intonation +intonations +intone +intoned +intones +intoning +intoxicant +intoxicants +intoxicate +intoxicated +intoxicates +intoxicating +intoxication +intranet +intranets +intransigence +intransigent +intransigents +intransitive +intransitives +intravenous +intravenouses +intrench +intrenched +intrenches +intrenching +intrenchment +intrenchments +intrepid +intricacies +intricacy +intricate +intrigue +intrigued +intrigues +intriguing +intrinsic +introduce +introduced +introduces +introducing +introduction +introductions +introductory +intros +introspection +introspective +introversion +introvert +introverted +introverts +intrude +intruded +intruder +intruders +intrudes +intruding +intrusion +intrusions +intrusive +intrust +intrusted +intrusting +intrusts +intuit +intuited +intuiting +intuition +intuitions +intuitive +intuits +inundate +inundated +inundates +inundating +inundation +inundations +inure +inured +inures +inuring +invade +invaded +invader +invaders +invades +invading +invariant +invasion +invasions +invasive +invective +inveigh +inveighed +inveighing +inveighs +invent +invented +inventing +invention +inventions +inventive +inventiveness +inventor +inventoried +inventories +inventors +inventory +inventorying +invents +inverse +inverses +inversion +inversions +invert +invertebrate +invertebrates +inverted +inverting +inverts +invest +invested +investigate +investigated +investigates +investigating +investigation +investigations +investigative +investigator +investigators +investing +investiture +investitures +investment +investments +investor +investors +invests +inveterate +invidious +invigorate +invigorated +invigorates +invigorating +invigoration +invitation +invitations +invite +invited +invites +inviting +invocation +invocations +invoice +invoiced +invoices +invoicing +invoke +invoked +invokes +invoking +inward +inwards +iodine +ion +ionizer +ionizers +ionosphere +ionospheres +ions +iota +iotas +ipad +ipecac +ipecacs +iphone +ipod +irate +irateness +ire +iridescence +iridescent +iridium +iris +irises +irk +irked +irking +irks +irksome +iron +ironed +ironic +ironies +ironing +irons +ironware +ironwork +irony +irradiate +irradiated +irradiates +irradiating +irradiation +irrespective +irreverence +irreverent +irrigate +irrigated +irrigates +irrigating +irrigation +irritant +irritants +irritate +irritated +irritates +irritating +irritation +irritations +irruption +irruptions +ism +isms +isobar +isobars +isometric +isometrics +isomorphic +isotope +isotopes +isotopic +isotropic +issuance +issue +issued +issues +issuing +isthmi +isthmus +isthmuses +itch +itched +itches +itchier +itchiest +itchiness +itching +itchy +item +items +iterate +iterated +iterates +iterating +iteration +iterations +iterative +iterator +iterators +itinerant +itinerants +itineraries +itinerary +its +itunes +ivies +ivories +ivory +ivy +jab +jabbed +jabber +jabbered +jabberer +jabberers +jabbering +jabbers +jabbing +jabot +jabots +jabs +jack +jackass +jackasses +jackboot +jackboots +jackdaw +jackdaws +jacked +jacket +jackets +jackhammer +jackhammers +jackie +jacking +jackknife +jackknifed +jackknifes +jackknifing +jackknives +jackpot +jackpots +jackrabbit +jackrabbits +jacks +jackson +jacksonian +jacky +jacob +jacobean +jacobi +jacobin +jacobite +jacobs +jacobson +jacquard +jacques +jacuzzi +jade +jaded +jades +jading +jag +jagged +jaggeder +jaggedest +jaggedness +jagger +jags +jaguar +jaguars +jahangir +jaime +jain +jainism +jaipur +jakarta +jake +jam +jamaica +jamaican +jamaicans +jamar +jamb +jamboree +jamborees +jambs +jame +james +jamestown +jami +jamie +jammed +jamming +jams +jan +jana +janacek +jane +janet +janette +janice +janie +janine +janis +janissary +janitor +janitors +janjaweed +janna +jannie +jansen +jansenist +januaries +january +janus +japan +japanese +japaneses +japanned +japanning +japans +jape +japed +japes +japing +japura +jar +jared +jargon +jarred +jarrett +jarring +jarrod +jars +jarvis +jasmine +jasmines +jason +jasper +jataka +jaundice +jaundiced +jaundices +jaundicing +jaunt +jaunted +jauntier +jauntiest +jauntiness +jaunting +jaunts +jaunty +java +javanese +javas +javascript +javier +jaw +jawbone +jawboned +jawbones +jawboning +jawbreaker +jawbreakers +jawed +jawing +jaws +jaxartes +jay +jayapura +jayawardene +jaycee +jaycees +jayne +jays +jayson +jazz +jazzed +jazzes +jazzier +jazziest +jazzing +jazzy +jean +jeanette +jeanie +jeanine +jeanne +jeannette +jeannie +jeannine +jeans +jed +jedi +jeep +jeeps +jeer +jeered +jeering +jeers +jeeves +jeez +jeff +jefferey +jefferson +jeffersonian +jeffery +jeffrey +jeffry +jehad +jehads +jehoshaphat +jehovah +jejune +jenifer +jenkins +jenna +jenner +jennie +jennifer +jennings +jenny +jensen +jeopardy +jephthah +jeremiad +jeremiads +jeremiah +jeremiahs +jeremy +jeri +jericho +jerk +jerked +jerkier +jerkiest +jerkin +jerking +jerkins +jerks +jerkwater +jerky +jermaine +jeroboam +jerome +jerri +jerrod +jerry +jersey +jerseys +jess +jessamine +jessamines +jesse +jessica +jessie +jest +jested +jester +jesters +jesting +jests +jesuit +jesuits +jesus +jet +jets +jetsam +jetted +jetties +jetting +jettison +jettisoned +jettisoning +jettisons +jetty +jetway +jew +jewish +jewishness +jewry +jews +jfk +jib +jibbed +jibbing +jibe +jibed +jibes +jibing +jibs +jidda +jiffies +jiffy +jig +jigged +jigger +jiggered +jiggering +jiggers +jigging +jigs +jigsaw +jigsawed +jigsawing +jigsawn +jigsaws +jihad +jihadist +jihadists +jihads +jim +jimenez +jimmie +jimmied +jimmies +jimmy +jimmying +jinan +jingoism +jingoist +jingoistic +jingoists +jinn +jinnah +jinni +jinnis +jinns +jinny +jinricksha +jinrickshas +jinrikisha +jinrikishas +jinx +jinxed +jinxes +jinxing +jitney +jitneys +jitterbug +jitterbugged +jitterbugging +jitterbugs +jitterier +jitteriest +jitters +jittery +jiujitsu +jivaro +jive +jived +jives +jiving +joan +joann +joanna +joanne +joaquin +job +jobbed +jobber +jobbers +jobbing +jobs +jocasta +jock +jockey +jockeyed +jockeying +jockeys +jocks +jockstrap +jockstraps +jocose +jocosity +jocund +jocundity +jodhpurs +jodi +jodie +jody +joe +joey +jog +jogged +jogger +joggers +jogging +jogjakarta +jogs +johann +johanna +johannes +johannesburg +john +johnathan +johnathon +johnie +johnnie +johnny +johns +johnson +johnston +join +joined +joiner +joiners +joining +joins +joint +jointed +jointing +joints +joist +joists +joke +joked +joker +jokers +jokes +joking +jon +jonah +jonahs +jonas +jonathan +jonathon +jones +joni +jonson +jordan +jordanian +jordanians +jorge +jose +josef +josefa +josefina +joseph +josephine +josephs +josephson +josephus +josh +joshed +joshes +joshing +joshua +josiah +josie +josue +jot +jots +jotted +jotting +jottings +jounce +jounced +jounces +jouncing +journey +journeyed +journeying +journeyman +journeymen +journeys +joust +jousted +jousting +jousts +jove +jovian +joy +joyce +joycean +joyed +joying +joyner +joyous +joyousness +joyridden +joyride +joyrider +joyriders +joyrides +joyriding +joyrode +joys +joystick +joysticks +juan +juana +juanita +juarez +judaeo +judah +judaic +judaism +judaisms +judas +judases +judd +jude +judea +judge +judged +judgement +judgements +judges +judgeship +judging +judgment +judgments +judicature +judiciaries +judiciary +judicious +judiciousness +judith +judo +judson +judy +jug +jugged +juggernaut +juggernauts +jugging +jugs +juice +juiced +juicer +juicers +juices +juicier +juiciest +juiciness +juicing +juicy +jujitsu +jujube +jujubes +jujutsu +jukebox +jukeboxes +jumbo +jumbos +jump +jumped +jumper +jumpers +jumpier +jumpiest +jumpiness +jumping +jumps +jumpsuit +jumpsuits +jumpy +junco +juncoes +juncos +junction +junctions +juncture +junctures +june +juneau +junes +jung +jungfrau +jungian +junior +juniors +juniper +junipers +junk +junked +junker +junkers +junket +junketed +junketing +junkets +junkie +junkier +junkies +junkiest +junking +junks +junky +junkyard +junkyards +juno +junta +juntas +jupiter +jurassic +juries +jurisdiction +jurisprudence +jurist +jurists +juror +jurors +jurua +jury +just +juster +justest +justice +justices +justification +justifications +justified +justifies +justify +justifying +justin +justine +justinian +justness +jut +jute +juts +jutted +jutting +juxtapose +juxtaposed +juxtaposes +juxtaposing +juxtaposition +juxtapositions +kaaba +kabob +kabobs +kaboom +kafka +kafkaesque +kaftan +kaftans +kagoshima +kaifeng +kaiser +kama +kamchatka +kamehameha +kamikaze +kamikazes +kampuchea +kanchenjunga +kandahar +kandinsky +kane +kangaroo +kangaroos +kannada +kano +kanpur +kansan +kansans +kansas +kant +kantian +kaohsiung +kapok +kaposi +kaput +kara +karachi +karaganda +karakorum +karamazov +karaoke +karaokes +karat +karate +karats +kareem +karen +karenina +kari +karin +karina +karma +karo +karroo +karyn +kasai +kasey +kashmir +kasparov +kate +katharine +katherine +katheryn +kathiawar +kathie +kathrine +kathryn +kathy +katie +katina +katmai +katmandu +katowice +katrina +katy +katydid +katydids +kauai +kaufman +kaunas +kaunda +kawabata +kawasaki +kay +kayak +kayaked +kayaking +kayaks +kaye +kazakh +kazakhstan +kazan +kazantzakis +kazoo +kazoos +keaton +keats +kebab +kebabs +kebob +kebobs +keck +keen +keenan +keened +keener +keenest +keening +keenness +keens +keep +keeper +keepers +keeping +keeps +keepsake +keepsakes +keewatin +keg +kegs +keisha +keith +kemerovo +kemp +kempis +ken +kendra +kendrick +kenmore +kennan +kenned +kennedy +kenneth +kenning +kennith +kenny +kens +kent +kenton +kentuckian +kentuckians +kentucky +kenya +kenyan +kenyans +kenyatta +kenyon +keogh +keokuk +kept +keratin +kerchief +kerchiefs +kerchieves +kerensky +keri +kermit +kern +kerosene +kerosine +kerouac +kerr +kerri +kerry +ketch +ketches +ketchup +kettering +keven +kevin +kevorkian +kewpie +key +keybinding +keybindings +keyboard +keyboarded +keyboarder +keyboarders +keyboarding +keyboards +keyed +keying +keynes +keynesian +keynote +keynoted +keynotes +keynoting +keypunch +keypunched +keypunches +keypunching +keys +keystone +keystones +keystroke +keystrokes +keyword +keywords +kfc +khabarovsk +khachaturian +khaki +khakis +khan +khans +kharkov +khartoum +khayyam +khazar +khmer +khoikhoi +khoisan +khomeini +khorana +khrushchev +khufu +khwarizmi +khyber +khz +kibbutz +kibbutzim +kibitz +kibitzed +kibitzer +kibitzers +kibitzes +kibitzing +kibosh +kick +kickapoo +kickback +kickbacks +kicked +kicker +kickers +kickier +kickiest +kicking +kickoff +kickoffs +kicks +kickstand +kickstands +kicky +kid +kidd +kidded +kidder +kidders +kiddie +kiddies +kidding +kiddo +kiddoes +kiddos +kiddy +kidnap +kidnapped +kidnapper +kidnappers +kidnapping +kidnappings +kidnaps +kidney +kidneys +kids +kierkegaard +kieth +kiev +kikuyu +kim +kimono +kimonos +kin +kind +kinda +kinder +kindergarten +kindergartener +kindergarteners +kindergartens +kindest +kindhearted +kindness +kindnesses +kindred +kinds +kinematic +kinematics +kinetic +king +kingdom +kingdoms +kingfisher +kingfishers +kingpin +kingpins +kings +kingship +kingston +kingstown +kink +kinked +kinkier +kinkiest +kinking +kinks +kinky +kinney +kinsey +kinshasa +kinship +kinsman +kinsmen +kinswoman +kinswomen +kiosk +kiosks +kiowa +kip +kipper +kippered +kippering +kippers +kirby +kirchhoff +kirchner +kirghistan +kirghiz +kiribati +kirinyaga +kirk +kirkpatrick +kirov +kirsten +kisangani +kishinev +kismet +kiss +kissed +kisser +kissers +kisses +kissing +kissinger +kit +kitakyushu +kitchen +kitchener +kitchenette +kitchenettes +kitchens +kitchenware +kite +kited +kites +kith +kiting +kits +kitsch +kitschy +kitten +kittenish +kittens +kitties +kitty +kiwanis +kiwi +kiwis +kmart +knack +knacker +knacks +knackwurst +knackwursts +knapp +knapsack +knapsacks +knave +knavery +knaves +knavish +knead +kneaded +kneader +kneaders +kneading +kneads +knee +kneecap +kneecapped +kneecapping +kneecaps +kneed +kneeing +knees +knesset +knew +kngwarreye +knickerbocker +knickers +knickknack +knickknacks +knife +knifed +knifes +knifing +knight +knighted +knighthood +knighthoods +knighting +knights +knit +knits +knitted +knitter +knitters +knitting +knitwear +knives +knob +knobbier +knobbiest +knobby +knobs +knock +knocked +knocker +knockers +knocking +knockout +knockouts +knocks +knockwurst +knockwursts +knopf +knossos +knot +knots +knotted +knottier +knottiest +knotting +knotty +know +knowing +knowings +known +knows +knox +knudsen +knuth +kobe +koch +kochab +kodachrome +kodak +kodiak +kohinoor +koizumi +kojak +kommunizma +kong +kongo +konrad +kook +kookaburra +kookaburras +kookie +kookier +kookiest +kookiness +kooks +kooky +koontz +kopeck +kopecks +kopek +kopeks +koran +korans +korea +korean +koreans +kornberg +kory +korzybski +kosciusko +kosher +koshered +koshering +koshers +kossuth +kosygin +koufax +kowtow +kowtowed +kowtowing +kowtows +kraft +krakatoa +krakow +kramer +krasnodar +krasnoyarsk +krebs +kresge +kris +krishna +krishnamurti +krista +kristen +kristi +kristie +kristin +kristina +kristine +kristopher +kristy +kroc +kroger +krone +kronecker +kroner +kronor +kropotkin +kruger +krugerrand +krupp +krypton +kshatriya +kubrick +kudos +kudzu +kudzus +kuhn +kuibyshev +kumquat +kumquats +kunming +kuomintang +kurd +kurdish +kurdistan +kurosawa +kurt +kurtis +kusch +kutuzov +kuwait +kuwaiti +kuwaitis +kuznets +kuznetsk +kwan +kwangju +kwanzaa +kwanzaas +kyoto +kyrgyzstan +kyushu +laban +labrador +labradors +lacey +lachesis +lacy +ladoga +ladonna +lafayette +lafitte +lagos +lagrange +lagrangian +lahore +laius +lajos +lakeisha +lakewood +lakisha +lakota +lakshmi +lamar +lamarck +lamaze +lamb +lambert +lamborghini +lambrusco +lamont +lana +lanai +lancashire +lancaster +lance +land +landon +landry +landsat +landsteiner +lane +lang +langerhans +langmuir +lanka +lanny +lansing +lanzhou +lao +laocoon +laos +laotian +laotians +lapp +lapps +lara +laramie +lardner +laredo +larousse +larry +lars +larsen +larson +las +lascaux +lassa +lassen +lassie +latasha +lateran +latin +latina +latiner +latino +latinos +latins +latisha +latonya +latoya +latrobe +latvia +latvian +latvians +laud +lauder +laue +laundromat +laura +laurasia +lauren +laurence +laurent +lauri +laurie +lavern +laverne +lavoisier +lavonne +lawanda +lawrence +lawson +layamon +lazaro +lazarus +lbj +lea +leach +leah +leakey +lean +leander +leann +leanna +leanne +lear +learjet +leary +leavenworth +lebanese +lebanon +lebesgue +leda +lederberg +lee +leeds +leeuwenhoek +leeward +left +legendre +leger +leghorn +lego +legree +lehman +leibniz +leicester +leiden +leif +leigh +leipzig +lemaitre +lemuria +len +lena +lenard +lenin +leningrad +leninism +leninist +lennon +lenny +leno +lenoir +lenora +lenore +lent +lenten +lents +leo +leon +leona +leonard +leonardo +leonid +leonidas +leonor +leos +lepidus +lepke +lepus +lerner +leroy +les +lesa +lesotho +lesseps +lessie +lester +lestrade +leta +letha +lethe +leticia +letitia +letterman +levant +levesque +levi +leviathan +levine +leviticus +levitt +levy +lew +lewinsky +lewis +lexington +lexus +lhasa +lhotse +libby +liberace +liberia +liberian +liberians +libra +libras +librium +libya +libyan +libyans +lichtenstein +lidia +lie +lieberman +liechtenstein +liege +lima +limbaugh +limburger +limoges +limousin +limpopo +lin +lina +lind +linda +lindbergh +lindsay +lindsey +lindy +linnaeus +linotype +linton +linus +linux +linwood +lipizzaner +lippi +lippmann +lipscomb +lipton +lisa +lisbon +lissajous +lister +listerine +liston +liszt +lithuania +lithuanian +lithuanians +litton +livia +livingston +livingstone +livonia +livy +liz +liza +lizzie +lizzy +loafer +loafers +lobachevsky +lochinvar +locke +lockean +lockheed +lockwood +lodge +lodz +loewe +loewi +loews +logan +lohengrin +loire +lois +loki +lombard +lombardi +lombardy +lome +lon +london +londoner +long +longstreet +lonnie +lopez +lora +loraine +lord +lords +loren +lorena +lorene +lorentz +lorenz +lorenzo +loretta +lori +lorie +lorna +lorraine +lorre +lorrie +los +lot +lothario +lott +lottie +lou +louie +louis +louisa +louise +louisiana +louisianan +louisianans +louisianian +louisianians +lourdes +louvre +love +lovecraft +lowe +lowenbrau +lowery +loyang +loyd +luanda +luann +lubavitcher +lubbock +lubumbashi +lucas +luce +lucia +lucian +luciano +lucien +lucifer +lucinda +lucio +lucite +lucius +lucknow +lucretia +lucretius +lucy +luddite +ludhiana +ludwig +lufthansa +luftwaffe +luger +lugosi +luigi +luis +luisa +luke +luna +lupe +lupus +luria +lusaka +lusitania +luther +lutheran +lutheranism +lutherans +luvs +luxembourg +luxembourger +luxembourgers +luz +luzon +lvov +lycra +lycurgus +lydia +lyman +lyme +lynch +lynda +lyndon +lynette +lynn +lynne +lynnette +lyon +lyons +lyra +lysenko +lysistrata +lyx +macabre +macadam +macao +macaroni +macaronies +macaronis +macaroon +macaroons +macarthur +macaw +macaws +macbeth +macbride +maccabeus +mace +maced +macedon +macedonia +macedonian +macedonians +macerate +macerated +macerates +macerating +maceration +maces +mach +machete +machetes +machination +machinations +machine +machined +machinery +machines +machining +machinist +machinists +machismo +macho +macias +macing +macintosh +macintoshes +mack +mackenzie +mackinac +mackinaw +mackinaws +mackintosh +mackintoshes +macleish +macon +macro +macrobiotic +macrobiotics +macrocosm +macrocosms +macron +macrons +macros +macroscopic +macumba +macy +mad +madagascan +madagascans +madagascar +madam +madame +madams +madcap +madcaps +madden +maddened +maddening +maddens +madder +madders +maddest +maddox +made +madeira +madeiras +madge +madhouse +madhouses +madison +madman +madmen +madness +madonna +madonnas +madras +madrasa +madrasah +madrasahs +madrasas +madrases +madrassa +madrassas +madrid +mads +madurai +madwoman +madwomen +mae +maestri +maestro +maestros +mafia +mafias +mafioso +magazine +magazines +magenta +maggie +maggot +maggots +maghreb +magi +magic +magician +magicians +maginot +magistrate +magistrates +magma +magnanimity +magnanimous +magnate +magnates +magnesia +magnesium +magnet +magnetic +magnetism +magneto +magnetos +magnetosphere +magnets +magnification +magnifications +magnificence +magnificent +magnified +magnifier +magnifiers +magnifies +magnify +magnifying +magnitogorsk +magnitude +magnitudes +magnum +magnums +magog +magoo +magpie +magpies +magritte +magsaysay +magyar +magyars +mahabharata +maharaja +maharajah +maharajahs +maharajas +maharanee +maharanees +maharani +maharanis +maharashtra +maharishi +maharishis +mahatma +mahatmas +mahavira +mahayana +mahayanist +mahdi +mahfouz +mahican +mahicans +mahjong +mahoganies +mahogany +mai +maid +maiden +maidenform +maidenhair +maidenhead +maidenheads +maidenhood +maidens +maids +maidservant +maidservants +maigret +maim +maiman +maimed +maiming +maimonides +maims +main +maine +mainframe +mainframes +mainmast +mainmasts +mains +mainspring +mainsprings +mainstay +mainstays +mainstream +mainstreamed +mainstreaming +mainstreams +maintain +maintained +maintainer +maintainers +maintaining +maintains +maintenance +maisie +maitreya +maize +maizes +majestic +majesties +majesty +major +majorca +majored +majorette +majorettes +majoring +majorities +majority +majors +majuro +makarios +make +maker +makers +makes +makeshift +makeshifts +makeup +makeups +making +makings +mama +mamas +mambo +mamboed +mamboing +mambos +mamet +mamie +mamma +mammary +mammas +mammogram +mammograms +mammography +mammon +mammoth +mammoths +mamore +man +manage +managed +management +manager +managers +manages +managing +managua +manama +manasseh +manatee +manatees +manaus +manchester +manchu +manchuria +manchurian +mancini +mandarin +mandarins +mandate +mandated +mandates +mandating +mandatory +mandingo +mandrake +mandrakes +mandy +mane +manes +manet +manfred +manga +manganese +mange +manger +mangers +mangier +mangiest +mango +mangoes +mangos +mangrove +mangroves +mangy +manhattan +manhattans +manhood +manhunt +manhunts +mani +mania +maniac +maniacs +manias +manic +manichean +manics +manicure +manicured +manicures +manicuring +manicurist +manicurists +manifest +manifestation +manifestations +manifested +manifesting +manifesto +manifestoes +manifestos +manifests +manikin +manikins +manitoba +mankind +mann +manna +manned +mannequin +mannequins +manner +mannered +mannerism +mannerisms +manners +mannheim +mannikin +mannikins +manning +mannish +mannishness +manor +manors +manpower +mans +mansard +mansards +manse +manservant +manses +mansion +mansions +manson +mantegna +mantis +mantises +mantissa +mantra +mantras +manufacture +manufactured +manufacturer +manufacturers +manufactures +manufacturing +manumit +manumits +manumitted +manumitting +manure +manured +manures +manuring +manuscript +manuscripts +manx +many +mao +maoism +maoisms +maoist +maoists +maori +maoris +map +mapped +mapper +mapping +mappings +maps +maputo +mar +mara +marabou +marabous +maraca +maracaibo +maracas +marat +maratha +marathi +marathon +marathoner +marathoners +marathons +maraud +marauded +marauder +marauders +marauding +marauds +marc +marceau +march +marched +marcher +marchers +marches +marching +marchioness +marchionesses +marci +marcia +marciano +marcie +marco +marconi +marcos +marcus +marcy +marduk +mare +mares +margaret +margarine +margarita +margaritas +margarito +marge +margery +margie +margin +margins +margo +margret +margrethe +marguerite +mari +maria +mariachi +mariachis +marian +mariana +marianas +marianne +mariano +marie +marietta +marihuana +marijuana +marimba +marimbas +marin +marina +marinade +marinaded +marinades +marinading +marinas +marinate +marinated +marinates +marinating +marine +mariner +mariners +marines +mario +marion +marionette +marionettes +maris +marisa +marissa +maritain +maritime +maritza +marius +marjoram +marjorie +marjory +mark +markab +markdown +markdowns +marked +marker +markers +market +marketed +marketer +marketers +marketing +markets +markham +marking +markings +markov +marks +marksman +marksmanship +marksmen +markup +markups +marmara +marmoset +marmosets +marmot +marmots +marne +maronite +maroon +marooned +marooning +maroons +marquee +marquees +marquesas +marquess +marquesses +marquetry +marquette +marquez +marquis +marquise +marquises +marquita +marrakesh +marred +marriage +marriages +married +marrieds +marries +marring +marriott +marrow +marrows +marry +marrying +mars +marsh +marsha +marshes +marshier +marshiest +marshy +mart +marta +marten +martens +martha +martian +martians +martin +martina +martinet +martinets +martinez +martini +martinique +martinis +martins +marts +marty +martyr +martyrdom +martyred +martyring +martyrs +marva +marvin +marx +marxism +marxisms +marxist +marxists +mary +maryann +maryanne +marzipan +mas +masada +masai +masaryk +mascagni +mascara +mascaraed +mascaraing +mascaras +mascot +mascots +maserati +maseru +mash +mashed +masher +mashers +mashes +mashhad +mashing +mashup +mashups +mask +masked +masking +masks +masochism +masochist +masochistic +masochists +mason +masonic +masonite +masonry +masons +masque +masquerade +masqueraded +masquerader +masqueraders +masquerades +masquerading +masques +mass +massachusetts +massacre +massacred +massacres +massacring +massage +massaged +massages +massaging +massasoit +massed +massenet +masses +masseur +masseurs +masseuse +masseuses +massey +massing +massive +massiveness +mast +mastectomies +mastectomy +master +mastercard +mastered +mastering +mastermind +masterminded +masterminding +masterminds +masterpiece +masterpieces +masters +masterstroke +masterstrokes +masterwork +masterworks +mastery +masthead +mastheads +masticate +masticated +masticates +masticating +mastication +mastiff +mastiffs +mastodon +mastodons +mastoid +mastoids +masts +masturbate +masturbated +masturbates +masturbating +masturbation +mat +matador +matadors +match +matchbook +matchbooks +matchbox +matchboxes +matched +matches +matching +matchmaker +matchmakers +matchmaking +matchstick +matchsticks +mate +mated +maternity +mates +mathematician +mathematicians +mathematics +mather +mathew +mathews +mathewson +mathias +mathis +mating +matins +matisse +matriarch +matriarchies +matriarchs +matriarchy +matrices +matricide +matricides +matrimony +matrix +matrixes +matron +matrons +mats +matt +matte +matted +matter +mattered +matterhorn +mattering +matters +mattes +matthew +matthews +matthias +mattie +matting +mattock +mattocks +mattress +mattresses +matts +maturation +mature +matured +maturer +matures +maturest +maturing +maturities +maturity +matzo +matzoh +matzohs +matzos +matzot +matzoth +maud +maude +maugham +maui +maunder +maundered +maundering +maunders +maupassant +maura +maureen +mauriac +maurice +mauricio +maurine +mauritania +mauritius +mauro +maurois +mauryan +mauser +mauve +maven +mavens +maverick +mavericks +mavin +mavins +mavis +maw +mawkish +maws +max +maxed +maxes +maxim +maxima +maxims +maximum +maximums +maxine +maxing +may +maya +mayan +mayans +mayas +maybe +maybes +mayday +maydays +mayer +mayfair +mayhem +maynard +mayo +mayonnaise +mayor +mayors +mayra +mays +maytag +mazama +mazarin +mazda +maze +mazes +mazourka +mazourkas +mazurka +mazurkas +mazzini +mbabane +mbini +mcadam +mcbride +mccain +mccarthy +mccarthyism +mccartney +mccarty +mccormick +mccoy +mccray +mcenroe +mcfadden +mcgee +mcgovern +mcgowan +mcguffey +mcguire +mckay +mckee +mckenzie +mckinney +mcknight +mclean +mcleod +mcluhan +mcmahon +mcnamara +mcnaughton +mcpherson +mcqueen +mcveigh +mead +meade +meadow +meadows +meagan +meagerness +mean +meander +meandered +meandering +meanders +meaner +meanest +meaning +meanings +meanness +means +meant +meantime +meany +measure +measured +measurement +measurements +measures +measuring +meat +meatier +meatiest +meats +meaty +mecca +meccas +mechanic +mechanics +mechanism +mechanisms +mechanistic +medan +medea +media +median +medians +medias +mediate +mediated +mediates +mediating +mediation +mediator +mediators +medic +medicaid +medicaids +medicare +medicares +medicate +medicated +medicates +medicating +medication +medications +medici +medicine +medicines +medics +medina +mediocre +mediocrities +mediocrity +meditate +meditated +meditates +meditating +meditation +meditations +meditative +mediterranean +mediterraneans +medium +mediums +medusa +meek +meeker +meekest +meekness +meet +meeting +meetinghouse +meetinghouses +meetings +meets +meg +megabyte +megabytes +megachurch +megachurches +megahertz +megahertzes +megan +megaphone +megaphoned +megaphones +megaphoning +megaton +megatons +meghan +megs +meh +meier +meighen +meiji +meir +mejia +mekong +member +members +membership +memberships +membrane +membranes +membranous +meme +memento +mementoes +mementos +memes +memo +memoir +memoirs +memoranda +memorandum +memorandums +memories +memory +memos +memphis +men +menace +menaced +menaces +menacing +menage +menagerie +menageries +menages +menander +mencius +mencken +mend +mendacious +mendacity +mended +mender +menders +mendez +mendicant +mendicants +mending +mendocino +mendoza +mends +menes +menhaden +menhadens +meningitis +menkar +menkent +mennen +mennonite +mennonites +menominee +menopause +menorah +menorahs +menotti +mensa +menservants +menses +menstruate +menstruated +menstruates +menstruating +menstruation +menswear +mention +mentioned +mentioning +mentions +mentor +mentored +mentoring +mentors +menu +menuhin +menus +menzies +meow +meowed +meowing +meows +merak +mercado +mercator +mercedes +mercenaries +mercenary +mercer +merchandise +merchandised +merchandises +merchandising +merchandize +merchandized +merchandizes +merchandizing +merchant +merchantman +merchantmen +merchants +mercia +mercies +merck +mercuric +mercuries +mercurochrome +mercury +mercy +mere +meredith +meres +merest +meretricious +merganser +mergansers +merge +merged +merger +mergers +merges +merging +meridian +meridians +meringue +meringues +merino +merinos +merit +merited +meriting +meritocracies +meritocracy +meritorious +merits +mermaid +mermaids +merman +mermen +merovingian +merriam +merrick +merrier +merriest +merrimack +merriment +merriness +merritt +merry +merrymaker +merrymakers +merrymaking +merton +mervin +mes +mesa +mesabi +mesas +mesdames +mesh +meshed +meshes +meshing +mesmer +mesmerism +mesopotamia +mesozoic +mesquite +mesquites +mess +message +messages +messed +messenger +messengers +messerschmidt +messes +messiaen +messiah +messiahs +messianic +messier +messiest +messieurs +messiness +messing +messy +mestizo +mestizoes +mestizos +met +metacarpi +metacarpus +metamorphic +metamorphism +metamorphose +metamorphosed +metamorphoses +metamorphosing +metamorphosis +metaphor +metaphors +metaphysics +metastases +metastasis +mete +meted +meteor +meteoric +meteorite +meteorites +meteoroid +meteoroids +meteors +meter +metered +metering +meters +metes +methadon +methadone +methane +methinks +method +methodism +methodisms +methodist +methodists +methods +methought +meting +metric +metrication +metrics +metro +metronome +metronomes +metros +metternich +meuse +mew +mewed +mewing +mews +mexican +mexicans +mexico +meyer +meyerbeer +meyers +mezzanine +mezzanines +mfume +mgm +mhz +mia +miami +miamis +miaow +miaowed +miaowing +miaows +miasma +miasmas +miasmata +mica +micah +micawber +mice +michigan +michigander +michiganders +mick +mickey +mickie +micky +micmac +micra +microaggression +microaggressions +microbe +microbes +microchip +microchips +microcode +microcomputer +microcomputers +microcosm +microcosms +microeconomics +microfiche +microfiches +micrometer +micrometers +micron +micronesia +micronesian +microns +microorganism +microorganisms +microphone +microphones +microprocessor +microprocessors +microscope +microscopes +microscopic +microscopy +microsecond +microseconds +microsoft +microsurgery +microwave +microwaved +microwaves +microwaving +mid +midair +midas +midday +middies +middy +midge +midges +midget +midgets +midmost +midnight +midpoint +midpoints +midriff +midriffs +midshipman +midshipmen +midst +midstream +midsummer +midterm +midterms +midtown +midway +midways +midweek +midweeks +midwest +midwestern +midwife +midwifed +midwiferies +midwifery +midwifes +midwifing +midwinter +midwived +midwives +midwiving +midyear +midyears +mien +miens +miff +miffed +miffing +miffs +mig +might +mightier +mightiest +mightiness +mighty +migraine +migraines +migrant +migrants +migrate +migrated +migrates +migrating +migration +migrations +migratory +mike +miked +mikes +miking +mikoyan +mime +mimed +mimeograph +mimeographed +mimeographing +mimeographs +mimes +mimetic +mimi +mimic +mimicked +mimicking +mimicries +mimicry +mimics +miming +mimosa +mimosas +minamoto +minaret +minarets +minatory +mince +minced +mincemeat +minces +mincing +mind +mindanao +minded +mindedness +minding +mindoro +minds +mindy +mine +mined +miner +miners +minerva +mines +minestrone +minesweeper +minesweepers +ming +mingus +mini +miniature +miniatures +miniaturist +miniaturists +minibike +minibikes +minibus +minibuses +minicam +minicams +minicomputer +minicomputers +minim +minima +minims +minimum +minimums +mining +minion +minions +minis +miniseries +miniskirt +miniskirts +minister +ministered +ministering +ministers +ministrant +ministrants +ministration +ministrations +ministries +ministry +minivan +minivans +mink +minks +minnesota +minnesotan +minnesotans +minnie +minnow +minnows +minoan +minoans +minor +minored +minoring +minorities +minority +minors +minos +minot +minotaur +minsk +minsky +minster +mint +mintaka +minted +mintier +mintiest +minting +mints +minty +minuend +minuends +minuet +minuets +minuit +minus +minuses +minute +minuted +minuteman +minutemen +minuteness +minuter +minutes +minutest +minutia +minutiae +minuting +minx +minxes +miocene +mir +mira +mirabeau +mirach +mirage +mirages +miranda +mire +mired +mires +mirfak +miriam +miring +miro +mirror +mirrored +mirroring +mirrors +mirth +mirzam +misadventure +misadventures +misanthrope +misanthropes +misanthropic +misanthropist +misanthropists +misanthropy +misapprehend +misapprehended +misapprehending +misapprehends +misapprehension +misapprehensions +misappropriate +misappropriated +misappropriates +misappropriating +misappropriation +misappropriations +misbegotten +misbehave +misbehaved +misbehaves +misbehaving +miscarriage +miscarriages +miscarried +miscarries +miscarry +miscarrying +miscast +miscasting +miscasts +miscegenation +mischance +mischances +mischief +mischievous +mischievousness +miscommunication +misconceive +misconceived +misconceives +misconceiving +misconception +misconceptions +misconduct +misconducted +misconducting +misconducts +misconstruction +misconstructions +misconstrue +misconstrued +misconstrues +misconstruing +miscount +miscounted +miscounting +miscounts +miscreant +miscreants +miscue +miscued +miscues +miscuing +misdeed +misdeeds +misdiagnose +misdiagnosed +misdiagnoses +misdiagnosing +misdiagnosis +misdid +misdirect +misdirected +misdirecting +misdirection +misdirects +misdo +misdoes +misdoing +misdoings +misdone +miser +miseries +misers +misery +misfeasance +misfire +misfired +misfires +misfiring +misfit +misfits +misfitted +misfitting +misfortune +misfortunes +misgiving +misgivings +misgovern +misgoverned +misgoverning +misgoverns +misguide +misguided +misguides +misguiding +mishap +mishaps +mishmash +mishmashes +misidentified +misidentifies +misidentify +misidentifying +misinform +misinformation +misinformed +misinforming +misinforms +misinterpret +misinterpretation +misinterpretations +misinterpreted +misinterpreting +misinterprets +misjudge +misjudged +misjudgement +misjudgements +misjudges +misjudging +misjudgment +misjudgments +miskito +mismanage +mismanaged +mismanagement +mismanages +mismanaging +mismatch +mismatched +mismatches +mismatching +misnomer +misnomers +misogynist +misogynistic +misogynists +misogyny +misprint +misprinted +misprinting +misprints +mispronounce +mispronounced +mispronounces +mispronouncing +mispronunciation +mispronunciations +misquotation +misquotations +misquote +misquoted +misquotes +misquoting +misread +misreading +misreadings +misreads +misrepresent +misrepresentation +misrepresentations +misrepresented +misrepresenting +misrepresents +miss +missed +misses +misshapen +missing +mission +missionaries +missionary +missions +mississauga +mississippi +mississippian +mississippians +missive +missives +missouri +missourian +missourians +misspend +misspending +misspends +misspent +misstate +misstated +misstatement +misstatements +misstates +misstating +misstep +missteps +missy +mist +mistake +mistaken +mistakes +mistaking +mistassini +misted +mister +misters +mistier +mistiest +mistime +mistimed +mistimes +mistiming +mistiness +misting +mistook +mistreat +mistreated +mistreating +mistreatment +mistreats +mistress +mistresses +mistrust +mistrusted +mistrusting +mistrusts +mists +misty +mistype +mistypes +mistyping +misunderstand +misunderstanding +misunderstandings +misunderstands +misunderstood +misuse +misused +misuses +misusing +mitch +mite +mites +mitford +mithra +mithridates +mitigate +mitigated +mitigates +mitigating +mitigation +mitosis +mitsubishi +mitt +mitten +mittens +mitterrand +mitts +mitty +mitzi +mix +mixed +mixer +mixers +mixes +mixing +mixtec +mixture +mixtures +mizar +mizzen +mizzenmast +mizzenmasts +mizzens +mkay +mnemonic +mnemonics +mnemosyne +moan +moaned +moaning +moans +moat +moats +mob +mobbed +mobbing +mobs +mobster +mobsters +mobutu +moccasin +moccasins +mocha +mochas +mock +mocked +mocker +mockeries +mockers +mockery +mocking +mockingbird +mockingbirds +mocks +mod +mode +modem +modems +moderate +moderated +moderates +moderating +moderation +moderator +moderators +modern +modernism +modernist +modernistic +modernists +modernity +moderns +modes +modest +modesto +modesty +modicum +modicums +modification +modifications +modified +modifier +modifiers +modifies +modify +modifying +modish +modishness +mods +moe +moet +mogadishu +mohacs +mohair +mohamed +mohammad +mohammed +mohammedan +mohammedanism +mohammedanisms +mohammedans +mohawk +mohawks +mohican +mohicans +moho +mohorovicic +moieties +moiety +moira +moire +moires +moises +moiseyev +moist +moisten +moistened +moistening +moistens +moister +moistest +moistness +moisture +mojave +mombasa +moment +momentary +momentous +momentousness +moments +momentum +momma +mommas +mommies +mommy +mona +monaco +monarch +monarchic +monarchies +monarchism +monarchist +monarchists +monarchs +monarchy +monasteries +monastery +monastic +monasticism +monastics +monday +mondays +mondrian +monera +monet +monetarism +monetary +money +moneybag +moneybags +moneyed +moneymaker +moneymakers +moneymaking +mongeese +monger +mongered +mongering +mongers +mongoose +mongooses +monica +monicker +monickers +monied +monies +moniker +monikers +monique +monitor +monitored +monitoring +monitors +monk +monkey +monkeyed +monkeying +monkeys +monkeyshine +monkeyshines +monks +monmouth +mono +monochromatic +monochrome +monochromes +monogamous +monogamy +monogram +monogrammed +monogramming +monograms +monograph +monographs +monomania +monomaniac +monomaniacs +monophonic +monotheism +monotheist +monotheistic +monotheists +monotone +monotones +monotonic +monotonous +monotony +monoxide +monoxides +monroe +monrovia +mons +monsanto +monsieur +monsignor +monsignori +monsignors +monsoon +monsoons +monster +monsters +monstrance +monstrances +monstrosities +monstrosity +monstrous +montage +montages +montague +montaigne +montana +montanan +montanans +monte +montenegrin +montenegro +monterrey +montesquieu +montessori +monteverdi +montevideo +montezuma +montgomery +month +months +montoya +montrachet +montserrat +monty +monument +monuments +moo +mooch +mooched +moocher +moochers +mooches +mooching +mood +moodier +moodiest +moodiness +moods +moody +mooed +moog +mooing +moon +moonbeam +moonbeams +mooned +mooney +mooning +moons +moonscape +moonscapes +moonshine +moonshines +moonshot +moonshots +moonstone +moonstones +moonstruck +moor +moore +moored +mooring +moorings +moorish +moors +moos +moose +moot +mooted +mooting +moots +mop +mope +moped +mopeds +mopes +moping +mopped +moppet +moppets +mopping +mops +moraine +moraines +moran +morass +morasses +moratoria +moratorium +moratoriums +moravia +moravian +moray +morays +morbid +morbidity +mordant +mordants +mordred +more +moreno +moreover +mores +morgan +morgue +morgues +moriarty +moribund +morin +morison +morita +mormon +mormonism +mormonisms +mormons +morn +morning +mornings +morns +moro +moroccan +moroccans +morocco +moron +moroni +moronic +morons +morose +moroseness +morpheme +morphemes +morpheus +morphine +morphy +morris +morrison +morrow +morrows +morse +mort +mortar +mortarboard +mortarboards +mortared +mortaring +mortars +mortgage +mortgaged +mortgagee +mortgagees +mortgager +mortgagers +mortgages +mortgaging +mortgagor +mortgagors +mortice +morticed +mortices +mortician +morticians +morticing +mortification +mortified +mortifies +mortify +mortifying +mortimer +mortise +mortised +mortises +mortising +morton +mortuaries +mortuary +mosaic +mosaics +moscow +moses +mosey +moseyed +moseying +moseys +mosque +mosques +mosquito +mosquitoes +mosquitos +moss +mosses +mossier +mossiest +mossy +most +mote +motes +moth +mother +motherboard +motherboards +mothered +motherfucker +motherfuckers +motherfucking +motherhood +mothering +mothers +moths +motif +motifs +motion +motioned +motioning +motions +motivate +motivated +motivates +motivating +motivation +motivations +motivator +motivators +motive +motives +motocross +motocrosses +motor +motorbike +motorbiked +motorbikes +motorbiking +motorboat +motorboats +motorcade +motorcades +motorcar +motorcars +motored +motoring +motorist +motorists +motorman +motormen +motormouth +motormouths +motors +motorway +motorways +motown +motrin +mott +motto +mottoes +mottos +mound +mounded +mounding +mounds +mount +mountain +mountaineer +mountaineered +mountaineering +mountaineers +mountainous +mountains +mountainside +mountainsides +mountaintop +mountaintops +mountbatten +mountebank +mountebanks +mounted +mountie +mounties +mounting +mountings +mounts +mourn +mourned +mourner +mourners +mourning +mourns +mouse +moused +mouser +mousers +mouses +mousetrap +mousetrapped +mousetrapping +mousetraps +mousey +mousier +mousiest +mousiness +mousing +mousse +moussed +mousses +moussing +moussorgsky +moustache +moustaches +mousy +mouth +mouthe +mouthed +mouthing +mouthpiece +mouthpieces +mouths +mouthwash +mouthwashes +mouthwatering +mouton +move +moved +movement +movements +mover +movers +moves +movie +movies +moving +mow +mowed +mower +mowers +mowing +mown +mows +mozambican +mozambicans +mozambique +mozart +muawiya +mubarak +much +muck +mucked +muckier +muckiest +mucking +muckrake +muckraked +muckraker +muckrakers +muckrakes +muckraking +mucks +mucky +mucous +mucus +mud +muddied +muddier +muddies +muddiest +muddiness +muddy +muddying +mudguard +mudguards +muenster +muezzin +muezzins +muff +muffed +muffin +muffing +muffins +muffs +mufti +muftis +mug +mugabe +mugged +mugger +muggers +muggier +muggiest +mugginess +mugging +muggings +muggy +mugs +muhammad +muhammadan +muhammadanism +muhammadanisms +muhammadans +muir +mujib +mum +mumbai +mumford +mummer +mummers +mummery +mummies +mummification +mummified +mummifies +mummify +mummifying +mummy +mumps +munch +munched +munches +munchies +munching +mundane +munich +munificence +munificent +munition +munitions +munoz +munro +muppet +murasaki +murat +murchison +murder +murdered +murderer +murderers +murderess +murderesses +murdering +murderous +murders +murdoch +murine +murk +murkier +murkiest +murkiness +murks +murky +murmansk +murmur +murmured +murmuring +murmurs +murphy +murray +murrow +murrumbidgee +muscat +muscovite +muscovy +muse +mused +muses +museum +museums +mush +musharraf +mushed +mushes +mushier +mushiest +mushiness +mushing +mushroom +mushroomed +mushrooming +mushrooms +mushy +music +musician +musicians +musicianship +musing +musings +musk +musket +musketeer +musketeers +musketry +muskets +muskier +muskiest +muskiness +muskogee +muskrat +muskrats +musky +muss +mussed +musses +mussier +mussiest +mussing +mussorgsky +mussy +must +mustang +mustangs +mustard +muster +mustered +mustering +musters +mustier +mustiest +mustiness +musts +musty +mutant +mutants +mutate +mutated +mutates +mutating +mutation +mutations +mute +muted +muteness +muter +mutes +mutest +mutineer +mutineers +muting +mutinied +mutinies +mutinous +mutiny +mutinying +mutsuhito +mutt +mutter +muttered +muttering +mutters +mutton +mutts +muumuu +muumuus +muzak +myanmar +mycenae +mycenaean +myers +myna +mynah +mynahes +mynahs +mynas +myopia +myopic +myra +myriad +myriads +myrna +myron +myrrh +mysore +myspace +myst +mysteries +mysterious +mysteriousness +mystery +mystic +mysticism +mystics +mystification +mystified +mystifies +mystify +mystifying +mystique +myth +mythic +myths +nab +nabbed +nabbing +nabisco +nabob +nabobs +nabokov +nabs +nacho +nachos +nacre +nader +nadia +nadine +nadir +nadirs +nag +nagasaki +nagged +nagging +nagoya +nagpur +nags +nagy +nahum +naiad +naiades +naiads +nair +nairobi +naismith +naive +naiver +naivest +naivety +naked +nakedness +nam +namath +name +named +names +namesake +namesakes +namibia +namibian +namibians +naming +nan +nanak +nanchang +nancy +nanette +nanjing +nanking +nankings +nannie +nannies +nanny +nanook +nanosecond +nanoseconds +nansen +nantes +nantucket +naomi +nap +nape +napes +naphtha +napier +napkin +napkins +napped +nappier +nappies +nappiest +napping +nappy +naps +napster +narc +narcissi +narcissism +narcissist +narcissistic +narcissists +narcissus +narcissuses +narcosis +narcotic +narcotics +narcs +nark +narked +narking +narks +narmada +narnia +narragansett +narrate +narrated +narrates +narrating +narration +narrations +narrative +narratives +narrator +narrators +narrow +narrowed +narrower +narrowest +narrowing +narrowness +narrows +nary +nascar +nascent +nash +nashua +nassau +nasser +nastier +nastiest +nastiness +nasturtium +nasturtiums +nasty +nat +natasha +natchez +nate +nathan +nathans +nation +nations +nationwide +native +natives +nativities +nativity +nattier +nattiest +natty +nature +natures +naugahyde +naughtier +naughtiest +naughtiness +naughty +nauru +nausea +nauseate +nauseated +nauseates +nauseating +nauseous +navaho +navahoes +navahos +navajo +navajoes +navajos +navarre +navarro +nave +naves +navies +navigate +navigated +navigates +navigating +navigation +navigator +navigators +navy +nay +nays +naysayer +naysayers +nazarene +nazareth +nazca +nazi +naziism +naziisms +nazis +nazism +nazisms +ndjamena +near +nearby +neared +nearer +nearest +nearing +nearness +nears +nearsighted +nearsightedness +neat +neater +neatest +neath +neatness +nebraska +nebraskan +nebraskans +nebuchadnezzar +necessaries +necessary +necessitate +necessitated +necessitates +necessitating +necessities +necessity +neck +necked +neckerchief +neckerchiefs +neckerchieves +necking +necks +necktie +neckties +necromancer +necromancers +necromancy +necrosis +nectar +nectarine +nectarines +ned +need +needed +needier +neediest +neediness +needing +needs +needy +nefarious +nefariousness +nefertiti +negate +negated +negates +negating +negation +negations +negative +negatived +negatives +negativing +negativity +negev +negotiate +negotiated +negotiates +negotiating +negotiation +negotiations +negotiator +negotiators +negro +negroes +negroid +negroids +negros +nehemiah +nehru +neigh +neighed +neighing +neighs +neither +nematode +nematodes +nemeses +nemesis +neocon +neocons +neoconservative +neoconservatives +neodymium +neogene +neon +neonate +neonates +neophyte +neophytes +neoprene +nephew +nephews +nephritis +nepotism +neptune +neptunium +nerd +nerdier +nerdiest +nerds +nerdy +nereid +nerf +nero +neruda +nerve +nerved +nerves +nervier +nerviest +nerving +nervous +nervousness +nervy +nescafe +nest +nested +nesting +nestor +nestorius +nests +net +netbook +netbooks +nether +nethermost +nets +netscape +netted +nettie +netting +network +networked +networking +networks +neuritis +neuron +neurons +neuroses +neurosis +neurosurgery +neurotic +neurotics +neurotransmitter +neurotransmitters +neuter +neutered +neutering +neuters +neutrino +neutrinos +neutron +neutrons +neva +nevada +nevadan +nevadans +never +nevermore +nevis +nevsky +new +newark +newbie +newbies +newborn +newborns +newcomer +newcomers +newer +newest +newman +newness +newport +news +newsagents +newsboy +newsboys +newscast +newscaster +newscasters +newscasts +newsier +newsiest +newsman +newsmen +newspaper +newspaperman +newspapermen +newspapers +newspaperwoman +newspaperwomen +newsprint +newsstand +newsstands +newsweek +newsworthy +newsy +newt +newton +newtonian +newtons +newts +nexis +next +nexus +nexuses +nguyen +niacin +niagara +niamey +nib +nibs +nicaea +nicaragua +nicaraguan +nicaraguans +nice +nicene +niceness +nicer +nicest +niceties +nicety +niche +niches +nichiren +nick +nicked +nicking +nicknack +nicknacks +nickname +nicknamed +nicknames +nicknaming +nicks +nicobar +nicodemus +nicosia +nicotine +niebuhr +niece +nieces +nietzsche +nieves +niftier +niftiest +nifty +niger +nigeria +nigerian +nigerians +nigga +niggard +niggards +niggas +niggaz +nigger +niggers +nigh +nigher +nighest +night +nightcap +nightcaps +nightgown +nightgowns +nighthawk +nighthawks +nightie +nighties +nightmare +nightmares +nightmarish +nights +nightshade +nightshades +nightshirt +nightshirts +nightstick +nightsticks +nighttime +nighty +nijinsky +nike +nikita +nikkei +nikki +nikon +nimbi +nimbus +nimbuses +nimitz +nimrod +nina +nincompoop +nincompoops +nine +ninepin +ninepins +nines +nineteen +nineteens +nineteenth +nineteenths +nineties +ninetieth +ninetieths +ninety +nineveh +ninja +ninjas +ninnies +ninny +nintendo +ninth +ninths +niobe +nip +nipped +nipper +nippers +nippier +nippiest +nipping +nippon +nippy +nips +nirenberg +nirvana +nisan +nisei +nissan +nit +nita +nitpick +nitpicked +nitpicker +nitpickers +nitpicking +nitpicks +nitrate +nitrated +nitrates +nitrating +nitrogen +nitrogenous +nits +nitwit +nitwits +nivea +nix +nixed +nixes +nixing +nixon +nkrumah +noah +nobodies +nobody +nocturne +nocturnes +nod +nodded +nodding +noddy +node +nodes +nodoz +nods +noe +noemi +noes +noggin +noggins +noh +noise +noised +noisemaker +noisemakers +noises +noisier +noisiest +noisiness +noising +noisome +noisy +nokia +nomad +nomadic +nomads +nome +nominate +nominated +nominates +nominating +nomination +nominations +nominative +nominatives +nominee +nominees +non +nona +nonabrasive +nonabsorbent +nonabsorbents +nonagenarian +nonagenarians +nonce +noncom +noncombatant +noncombatants +noncompetitive +noncoms +nonconductor +nonconductors +nonconformist +nonconformists +nonconformity +noncontagious +noncooperation +nondairy +nondescript +nondrinker +nondrinkers +none +nonempty +nonentities +nonentity +nonesuch +nonesuches +nonevent +nonevents +nonexempt +nonexistence +nonexistent +nonfat +nonfiction +nonhazardous +nonhuman +noninterference +nonintervention +nonmember +nonmembers +nonobjective +nonpartisan +nonpartisans +nonpayment +nonpayments +nonpoisonous +nonprescription +nonproductive +nonprofit +nonprofits +nonresident +nonresidents +nonrestrictive +nonrigid +nonsectarian +nonsense +nonsexist +nonskid +nonsmoker +nonsmokers +nonsmoking +nonstandard +nonstick +nonstop +nonsupport +nontoxic +nonunion +nonuser +nonusers +nonvoting +nonwhite +nonwhites +nonzero +nook +nooks +noon +noonday +noontime +noose +nooses +nootka +nope +nor +nora +norbert +norberto +nordic +nordics +noreen +noriega +norm +norma +norman +normand +normandy +normans +normative +norms +norris +norse +norseman +norsemen +north +northampton +northbound +northeast +northeaster +northeastern +northeasters +northeasts +northeastward +northern +northerner +northerners +northernmost +northrop +northrup +norths +northward +northwards +northwest +northwestern +northwests +northwestward +norton +norway +norwegian +norwegians +norwich +nose +nosed +nosedive +nosedived +nosedives +nosediving +nosedove +nosegay +nosegays +noses +nosey +nosferatu +nosh +noshed +noshes +noshing +nosier +nosiest +nosiness +nosing +nostradamus +nostrum +nostrums +nosy +not +notaries +notary +notation +notations +notch +notched +notches +notching +note +notebook +notebooks +noted +notepad +notepaper +notes +noteworthy +nothing +nothingness +nothings +notice +noticeboard +noticeboards +noticed +notices +noticing +notification +notifications +notified +notifies +notify +notifying +noting +notion +notions +notoriety +notorious +nottingham +notwithstanding +nouakchott +nougat +nougats +nought +noughts +noumea +noun +nouns +nourish +nourished +nourishes +nourishing +nourishment +nous +nova +novae +novartis +novas +november +novembers +novgorod +novice +novices +novitiate +novitiates +novocain +novocaine +novokuznetsk +novosibirsk +now +nowadays +noway +nowhere +nowise +noxious +noxzema +noyce +noyes +nsa +nth +nuance +nuanced +nuances +nub +nubia +nubian +nubs +nude +nuder +nudes +nudest +nudge +nudged +nudges +nudging +nudism +nudist +nudists +nudity +nugget +nuggets +nuisance +nuisances +nuke +nuked +nukes +nuking +numb +numbed +number +numbered +numbering +numbers +numbest +numbing +numbness +numbs +numeracy +numerate +numerated +numerates +numerating +numeration +numerations +numerator +numerators +numeric +numerous +numismatic +numismatics +numismatist +numismatists +nun +nunavut +nuncio +nuncios +nunez +nunki +nunneries +nunnery +nuns +nuremberg +nureyev +nurse +nursed +nursemaid +nursemaids +nurseries +nursery +nurseryman +nurserymen +nurses +nursing +nurture +nurtured +nurtures +nurturing +nut +nutcracker +nutcrackers +nuthatch +nuthatches +nutmeat +nutmeats +nutmeg +nutmegs +nutrasweet +nutria +nutrias +nutrient +nutrients +nutriment +nutriments +nutrition +nutritionist +nutritionists +nutritious +nutritive +nuts +nutted +nuttier +nuttiest +nuttiness +nutting +nutty +nyasa +nyerere +nymph +nymphomania +nymphomaniac +nymphomaniacs +nymphs +oaf +oafish +oafs +oak +oaken +oaks +oakum +oar +oared +oaring +oars +oarsman +oarsmen +oases +oasis +oat +oaten +oath +oaths +oats +obduracy +obdurate +obedience +obedient +obeisance +obeisances +obeisant +obese +obesity +obey +obeyed +obeying +obeys +obfuscate +obfuscated +obfuscates +obfuscating +obfuscation +obit +obits +obituaries +obituary +object +objected +objecting +objection +objections +objective +objectiveness +objectives +objectivity +objector +objectors +objects +obnoxious +oboe +oboes +oboist +oboists +obscene +obscener +obscenest +obscenities +obscenity +obscure +obscured +obscurer +obscures +obscurest +obscuring +obscurities +obscurity +obsequies +obsequious +obsequiousness +obsequy +observance +observances +observant +observation +observations +observatories +observatory +observe +observed +observer +observers +observes +observing +obsess +obsessed +obsesses +obsessing +obsession +obsessions +obsessive +obsessives +obsidian +obstetric +obstetrician +obstetricians +obstetrics +obstinacy +obstinate +obstreperous +obstruct +obstructed +obstructing +obstruction +obstructionist +obstructionists +obstructions +obstructive +obstructiveness +obstructs +obtain +obtained +obtaining +obtains +obtrude +obtruded +obtrudes +obtruding +obtrusive +obtrusiveness +obtuse +obtuseness +obtuser +obtusest +obverse +obverses +obviate +obviated +obviates +obviating +obvious +obviousness +ocarina +ocarinas +occasion +occasioned +occasioning +occasions +occupancy +occupant +occupants +occupation +occupations +occupied +occupies +occupy +occupying +occur +occurred +occurrence +occurrences +occurring +occurs +ocean +oceangoing +oceanic +oceanographer +oceanographers +oceanographic +oceanography +oceans +ochre +octagon +octagons +octane +octave +octaves +octet +octets +octette +octettes +octogenarian +octogenarians +octopi +octopus +octopuses +odd +odder +oddest +oddities +oddity +oddness +odds +ode +odes +odious +odium +odometer +odometers +odoriferous +odorous +odyssey +odysseys +off +offbeat +offbeats +offed +offend +offended +offender +offenders +offending +offends +offensive +offensiveness +offensives +offer +offered +offering +offerings +offers +offertories +offertory +offhand +office +officer +officers +offices +officiate +officiated +officiates +officiating +officious +officiousness +offing +offings +offs +offset +offsets +offsetting +offshoot +offshoots +offshore +offshoring +offside +offspring +offsprings +offstage +offstages +oft +often +oftener +oftenest +oftentimes +ogre +ogres +ohm +ohms +oho +ohs +oink +oinked +oinking +oinks +ointment +ointments +okay +okayed +okaying +okays +okra +okras +ombudsman +ombudsmen +omega +omegas +omen +omens +ominous +omission +omissions +omit +omits +omitted +omitting +omnibus +omnibuses +omnibusses +omnipotence +omnipotent +omnipresence +omnipresent +omniscience +omniscient +omnivore +omnivores +omnivorous +once +oncoming +one +oneness +onerous +ones +onetime +ongoing +onion +onions +onionskin +onomatopoeia +onomatopoeic +onrush +onrushes +onrushing +onset +onsets +onshore +onto +onus +onuses +onward +onwards +onyx +onyxes +oops +ooze +oozed +oozes +oozing +opacity +opaque +opaqued +opaqueness +opaquer +opaques +opaquest +opaquing +open +opened +opener +openers +openest +openhanded +opening +openings +openness +opens +openwork +opera +operand +operands +operas +operate +operated +operates +operatic +operating +operation +operations +operative +operatives +operator +operators +operetta +operettas +opiate +opiates +opine +opined +opines +opining +opinion +opinionated +opinions +opium +opossum +opossums +opponent +opponents +opportune +opportunism +opportunist +opportunistic +opportunists +opportunities +opportunity +oppose +opposed +opposes +opposing +opposite +opposites +opposition +oppress +oppressed +oppresses +oppressing +oppression +oppressive +oppressor +oppressors +opprobrious +opprobrium +opt +opted +optic +optician +opticians +optics +optima +optimism +optimist +optimistic +optimists +optimum +optimums +opting +option +optioned +optioning +options +optometrist +optometrists +optometry +opts +opus +opuses +orange +orangeade +orangeades +oranges +orangutan +orangutang +orangutangs +orangutans +orate +orated +orates +orating +oration +orations +orator +oratories +oratorio +oratorios +orators +oratory +orb +orbit +orbited +orbiting +orbits +orbs +orc +orchard +orchards +orchestra +orchestras +orchestrate +orchestrated +orchestrates +orchestrating +orchestration +orchestrations +orchid +orchids +orcs +ordain +ordained +ordaining +ordains +order +ordered +ordering +orderings +orders +ordinance +ordinances +ordinaries +ordinariness +ordinary +ordination +ordinations +ordnance +ordure +ore +oregano +ores +organ +organdie +organic +organics +organism +organisms +organist +organists +organs +orgasm +orgasmic +orgasms +orgiastic +orgies +orgy +orient +orientate +orientated +orientates +orientating +orientation +orientations +oriented +orienting +orients +orifice +orifices +origami +origin +originate +originated +originates +originating +origination +originator +originators +origins +ornament +ornamentation +ornamented +ornamenting +ornaments +ornate +ornateness +ornerier +orneriest +ornery +orotund +orphan +orphanage +orphanages +orphaned +orphaning +orphans +orthodontia +orthodontic +orthodontics +orthodontist +orthodontists +orthodox +orthodoxies +orthodoxy +orthographic +orthographies +orthography +orthopaedic +orthopaedics +orthopaedist +orthopaedists +osier +osiers +osmosis +osmotic +osprey +ospreys +ossification +ossified +ossifies +ossify +ossifying +ostentation +ostentatious +osteopath +osteopaths +osteopathy +osteoporosis +ostracism +ostrich +ostriches +other +others +otherwise +otiose +otter +otters +ottoman +ottomans +ouch +ought +ounce +ounces +our +ours +oust +ousted +ouster +ousters +ousting +ousts +out +outage +outages +outback +outbacks +outbid +outbidding +outbids +outbound +outbreak +outbreaks +outburst +outbursts +outcast +outcasts +outcome +outcomes +outcries +outcrop +outcropped +outcropping +outcroppings +outcrops +outcry +outdated +outdid +outdistance +outdistanced +outdistances +outdistancing +outdo +outdoes +outdoing +outdone +outdoor +outdoors +outed +outer +outermost +outfit +outfits +outfitted +outfitter +outfitters +outfitting +outfox +outfoxed +outfoxes +outfoxing +outgo +outgoes +outgoing +outgrew +outgrow +outgrowing +outgrown +outgrows +outgrowth +outgrowths +outhouse +outhouses +outing +outings +outmanoeuvre +outmanoeuvred +outmanoeuvres +outmanoeuvring +outmoded +outnumber +outnumbered +outnumbering +outnumbers +outpatient +outpatients +outperform +outperformed +outperforming +outperforms +outpost +outposts +outpouring +outpourings +output +outputs +outputted +outputting +outrage +outraged +outrageous +outrages +outraging +outran +outrank +outranked +outranking +outranks +outreach +outreached +outreaches +outreaching +outrider +outriders +outrigger +outriggers +outright +outrun +outrunning +outruns +outs +outset +outsets +outshine +outshined +outshines +outshining +outshone +outside +outsider +outsiders +outsides +outsize +outsized +outsizes +outskirt +outskirts +outsmart +outsmarted +outsmarting +outsmarts +outsource +outsourced +outsources +outsourcing +outspoken +outspokenness +outspread +outspreading +outspreads +outstanding +outstation +outstations +outstay +outstayed +outstaying +outstays +outstretch +outstretched +outstretches +outstretching +outstrip +outstripped +outstripping +outstrips +outstript +outtake +outtakes +outvote +outvoted +outvotes +outvoting +outward +outwards +outwear +outwearing +outwears +outweigh +outweighed +outweighing +outweighs +outwit +outwits +outwitted +outwitting +outwore +outworn +ova +ovarian +ovaries +ovary +ovation +ovations +oven +ovens +over +overabundance +overabundant +overachieve +overachieved +overachiever +overachievers +overachieves +overachieving +overact +overacted +overacting +overactive +overacts +overage +overages +overambitious +overanxious +overate +overawe +overawed +overawes +overawing +overbear +overbearing +overbears +overbite +overbites +overboard +overbook +overbooked +overbooking +overbooks +overbore +overborne +overburden +overburdened +overburdening +overburdens +overcame +overcast +overcasting +overcasts +overcautious +overcharge +overcharged +overcharges +overcharging +overcoat +overcoats +overcome +overcomes +overcoming +overcompensate +overcompensated +overcompensates +overcompensating +overcompensation +overconfident +overcook +overcooked +overcooking +overcooks +overcrowd +overcrowded +overcrowding +overcrowds +overdid +overdo +overdoes +overdoing +overdone +overdose +overdosed +overdoses +overdosing +overdraft +overdrafts +overdraw +overdrawing +overdrawn +overdraws +overdress +overdressed +overdresses +overdressing +overdrew +overdrive +overdue +overeager +overeat +overeaten +overeating +overeats +overenthusiastic +overestimate +overestimated +overestimates +overestimating +overexpose +overexposed +overexposes +overexposing +overexposure +overextend +overextended +overextending +overextends +overgenerous +overgrew +overgrow +overgrowing +overgrown +overgrows +overgrowth +overhand +overhands +overhang +overhanging +overhangs +overhead +overheads +overhear +overheard +overhearing +overhears +overheat +overheated +overheating +overheats +overhung +overjoy +overjoyed +overjoying +overjoys +overmuch +overmuches +overnight +overnights +overpaid +overpass +overpasses +overpay +overpaying +overpays +overpower +overpowered +overpowering +overpowers +overprice +overpriced +overprices +overpricing +overprint +overprinted +overprinting +overprints +overproduce +overproduced +overproduces +overproducing +overproduction +overprotective +overran +overrate +overrated +overrates +overrating +overreach +overreached +overreaches +overreaching +overreact +overreacted +overreacting +overreaction +overreactions +overreacts +overridden +override +overrides +overriding +overripe +overrode +overrun +overrunning +overruns +overs +oversaw +overseas +oversee +overseeing +overseen +overseer +overseers +oversees +oversensitive +oversexed +overshadow +overshadowed +overshadowing +overshadows +overshare +overshared +overshares +oversharing +overshoe +overshoes +overshoot +overshooting +overshoots +overshot +oversight +oversights +oversize +oversized +overspend +overspending +overspends +overspent +overspread +overspreading +overspreads +overstate +overstated +overstatement +overstatements +overstates +overstating +overstay +overstayed +overstaying +overstays +overstep +overstepped +overstepping +oversteps +overstock +overstocked +overstocking +overstocks +overstuffed +overt +overtake +overtaken +overtakes +overtaking +overtax +overtaxed +overtaxes +overtaxing +overthink +overthinking +overthinks +overthought +overthrew +overthrow +overthrowing +overthrown +overthrows +overtime +overtimes +overtone +overtones +overtook +overture +overtures +overturn +overturned +overturning +overturns +overuse +overused +overuses +overusing +overview +overviews +overweening +overweight +overwork +overworked +overworking +overworks +overwrite +overwrites +overwriting +overwritten +overwrought +oviduct +oviducts +oviparous +ovoid +ovoids +ovum +owe +owed +owes +owing +own +owned +owner +owners +ownership +owning +owns +oxbow +oxbows +oxen +oxford +oxfords +oxidation +oxide +oxides +oxygen +oxygenate +oxygenated +oxygenates +oxygenating +oxygenation +oxymora +oxymoron +oxymorons +oyster +oysters +ozone +paar +pabst +pace +paced +pacemaker +pacemakers +paces +pacesetter +pacesetters +pacheco +pachyderm +pachyderms +pacific +pacification +pacified +pacifier +pacifiers +pacifies +pacifism +pacifist +pacifists +pacify +pacifying +pacing +pacino +pack +package +packaged +packages +packaging +packard +packed +packer +packers +packet +packets +packing +packs +pact +pacts +pad +padded +paddies +padding +paddock +paddocked +paddocking +paddocks +paddy +paderewski +padre +padres +pads +paean +paeans +pagan +paganini +paganism +pagans +page +pageant +pageantry +pageants +paged +pager +pagers +pages +paginate +paginated +paginates +paginating +pagination +paging +pagoda +pagodas +paid +paige +pain +paine +pained +paining +pains +painstaking +paint +paintbrush +paintbrushes +painted +painter +painters +painting +paintings +paints +paintwork +pair +paired +pairing +pairs +pairwise +pakistan +pakistani +pakistanis +pam +pamirs +pampas +pamper +pampered +pampering +pampers +pan +panacea +panaceas +panache +panama +panamanian +panamanians +panamas +panasonic +pancake +pancaked +pancakes +pancaking +panchromatic +pancreas +pancreases +pancreatic +panda +pandas +pandemic +pandemics +pandemonium +pander +pandered +panderer +panderers +pandering +panders +pandora +pane +panegyric +panegyrics +panes +pang +pangaea +pangs +panic +panicked +panicking +panicky +panics +panier +paniers +pankhurst +panmunjom +panned +pannier +panniers +panning +panorama +panoramas +panoramic +pans +pansies +pansy +pant +panted +pantheism +pantheist +pantheistic +pantheists +pantheon +pantheons +panther +panthers +pantie +panties +panting +pantomime +pantomimed +pantomimes +pantomiming +pantries +pantry +pants +pantsuit +pantsuits +panty +pantyhose +panza +pap +papa +papacies +papacy +papas +papaw +papaws +papaya +papayas +paper +paperback +paperbacks +paperboy +paperboys +papered +paperhanger +paperhangers +papering +papers +paperweight +paperweights +paperwork +papery +papoose +papooses +paprika +paps +papyri +papyrus +papyruses +par +parachute +parachuted +parachutes +parachuting +parachutist +parachutists +parade +paraded +parades +paradigm +paradigmatic +paradigms +parading +paradise +paradises +paradox +paradoxes +paraffin +paragon +paragons +paragraph +paragraphed +paragraphing +paragraphs +paraguay +paraguayan +paraguayans +parakeet +parakeets +paramaribo +paramecia +paramecium +parameciums +paramedic +paramedics +parameter +parameters +paramount +paramour +paramours +paranoia +paranoid +paranoids +parapet +parapets +paraphrase +paraphrased +paraphrases +paraphrasing +parasite +parasites +parasitic +paratrooper +paratroopers +paratroops +parch +parched +parcheesi +parches +parching +parchment +parchments +pardon +pardoned +pardoning +pardons +pare +pared +parent +parentage +parented +parentheses +parenthesis +parenthetic +parenthood +parenting +parents +pares +pareto +parfait +parfaits +pariah +pariahs +paring +parings +paris +parish +parishes +parishioner +parishioners +parisian +parisians +parity +park +parka +parkas +parked +parker +parking +parkinson +parkman +parkour +parks +parkway +parkways +parmesan +parmesans +parnassus +parodied +parodies +parody +parodying +paroxysm +paroxysms +parquet +parqueted +parqueting +parquetry +parquets +parr +parrakeet +parrakeets +parred +parricide +parricides +parried +parries +parring +parrish +parrot +parroted +parroting +parrots +parry +parrying +pars +parse +parsec +parsecs +parsed +parser +parses +parsi +parsimonious +parsimony +parsing +parsnip +parsnips +parson +parsonage +parsonages +parsons +part +partake +partaken +partaker +partakers +partakes +partaking +parted +parterre +parterres +parthenogenesis +parthenon +parthia +participant +participants +participate +participated +participates +participating +participation +participator +participators +participatory +partied +parties +parting +partings +partisan +partisans +partisanship +partition +partitioned +partitioning +partitions +partizan +partizans +partner +partnered +partnering +partners +partnership +partnerships +partook +partridge +partridges +parts +parturition +partway +party +partying +parvenu +parvenus +pas +pasadena +pasha +pashas +pass +passage +passages +passageway +passageways +passbook +passbooks +passed +passenger +passengers +passer +passerby +passersby +passes +passing +passion +passionate +passions +passive +passives +passivity +passkey +passkeys +passover +passovers +passport +passports +password +passwords +past +pasta +pastas +paste +pasteboard +pasted +pastern +pasternak +pasterns +pastes +pasteur +pastiche +pastiches +pastier +pasties +pastiest +pastime +pastimes +pasting +pastor +pastorate +pastorates +pastors +pastrami +pastries +pastry +pasts +pasturage +pasture +pastured +pastures +pasturing +pasty +pat +patagonia +patagonian +patch +patched +patches +patchier +patchiest +patchiness +patching +patchwork +patchworks +patchy +pate +patent +patented +patenting +patents +paternity +paterson +pates +path +pathetic +pathogen +pathogenic +pathogens +pathos +paths +pathway +pathways +patience +patient +patienter +patientest +patients +patina +patinae +patinas +patio +patios +patna +patois +patriarch +patriarchies +patriarchs +patriarchy +patrica +patrice +patricia +patrician +patricians +patricide +patricides +patrick +patrimonies +patrimony +patriot +patriotic +patriotism +patriots +patron +patronage +patronages +patrons +patronymic +patronymics +pats +patsies +patsy +patted +patter +pattered +pattering +pattern +patterned +patterning +patterns +patters +patterson +patti +patties +patting +patton +patty +paucity +paunch +paunches +paunchier +paunchiest +paunchy +pauper +pauperism +paupers +pause +paused +pauses +pausing +pavarotti +pave +paved +pavement +pavements +paves +paving +pavings +paw +pawed +pawing +pawn +pawnbroker +pawnbrokers +pawned +pawnee +pawning +pawns +pawnshop +pawnshops +pawpaw +pawpaws +paws +pay +paycheck +paychecks +payday +paydays +payed +payee +payees +payer +payers +paying +paymaster +paymasters +payment +payments +payne +payoff +payoffs +pays +pea +peabody +peace +peacekeeping +peacemaker +peacemakers +peaces +peacetime +peach +peaches +peacock +peacocks +peahen +peahens +peak +peaked +peaking +peaks +peanut +peanuts +pear +pears +pearson +peary +peas +peasant +peasantry +peasants +pease +peat +pecan +pecans +peccaries +peccary +pechora +peck +pecked +pecking +peckinpah +pecks +pecos +pecs +pectin +pecuniary +pedagogic +pedagogue +pedagogues +pedagogy +pedant +pedantic +pedantry +pedants +pederast +pederasts +pederasty +pedestrian +pedestrians +pedicure +pedicured +pedicures +pedicuring +pedigree +pedigreed +pedigrees +pediment +pediments +pedometer +pedometers +pedro +pee +peed +peeing +peek +peekaboo +peeked +peeking +peeks +peep +peeped +peeper +peepers +peeping +peeps +peer +peerage +peerages +peered +peering +peers +pees +peeve +peeved +peeves +peeving +peevish +peevishness +peewee +peewees +peg +pegasus +pegasuses +pegged +pegging +peggy +pegs +pei +peiping +pejorative +pejoratives +pekinese +pekineses +peking +pekingese +pekingeses +pekings +pekoe +pembroke +pen +pena +penance +penances +pence +penchant +penchants +pendant +pendants +pended +pendent +pendents +penderecki +pending +pends +penes +penetrate +penetrated +penetrates +penetrating +penetration +penetrations +penetrative +penguin +penguins +penis +penises +penitence +penitent +penitentiaries +penitentiary +penitents +penknife +penknives +penmanship +penn +pennant +pennants +penned +penney +pennies +penning +pennington +pennon +pennons +penny +pennyweight +pennyweights +pens +pension +pensioned +pensioner +pensioners +pensioning +pensions +pensive +pensiveness +pent +pentagon +pentagons +pentameter +pentameters +pentateuch +pentax +pentecost +pentecosts +penthouse +penthouses +pentium +penurious +penury +peon +peonage +peonies +peons +peony +peoria +pep +pepin +pepped +pepper +peppercorn +peppercorns +peppered +peppering +peppermint +peppermints +pepperoni +pepperonis +peppers +peppery +peppier +peppiest +pepping +peppy +peps +pepsi +pepsin +peptic +peptics +pepys +pequot +per +perceive +perceived +perceives +perceiving +percent +percentage +percentages +percents +perception +perceptions +perceptive +perceptiveness +perch +perchance +perched +percheron +perches +perching +percussion +percussionist +percussionists +percy +perdition +peregrination +peregrinations +peremptory +perez +perfect +perfected +perfecter +perfectest +perfecting +perfection +perfectionism +perfectionist +perfectionists +perfections +perfects +perfidies +perfidious +perfidy +perforate +perforated +perforates +perforating +perforation +perforations +perforce +perform +performance +performances +performed +performer +performers +performing +performs +perfume +perfumed +perfumeries +perfumery +perfumes +perfuming +perfunctory +perhaps +pericardia +pericardium +pericardiums +perigee +perigees +perimeter +perimeters +period +periodic +periodicity +periods +peripatetic +peripatetics +peripheries +periphery +periphrases +periphrasis +periscope +periscopes +perish +perished +perishes +perishing +peritonea +peritoneum +peritoneums +peritonitis +periwig +periwigs +perjure +perjured +perjurer +perjurers +perjures +perjuries +perjuring +perjury +perk +perked +perkier +perkiest +perkiness +perking +perkins +perks +perky +perm +permafrost +permanence +permanent +permanents +permeate +permeated +permeates +permeating +permed +permian +perming +permission +permissions +permissive +permissiveness +permit +permits +permitted +permitting +perms +permutation +permutations +permute +permuted +permutes +permuting +pernicious +pernod +peron +peroration +perorations +perot +peroxide +peroxided +peroxides +peroxiding +perpetrate +perpetrated +perpetrates +perpetrating +perpetration +perpetrator +perpetrators +perpetuate +perpetuated +perpetuates +perpetuating +perpetuation +perpetuity +perquisite +perquisites +perrier +perry +persecute +persecuted +persecutes +persecuting +persecution +persecutions +persecutor +persecutors +perseid +persephone +perseus +perseverance +persevere +persevered +perseveres +persevering +pershing +persia +persian +persians +persimmon +persimmons +persist +persisted +persistence +persistent +persisting +persists +persnickety +person +persona +personae +personage +personages +personification +personifications +personified +personifies +personify +personifying +persons +perspective +perspectives +perspicacious +perspicacity +perspicuity +perspicuous +perspiration +perspire +perspired +perspires +perspiring +persuade +persuaded +persuades +persuading +persuasion +persuasions +persuasive +persuasiveness +pert +pertain +pertained +pertaining +pertains +perter +pertest +perth +pertinacious +pertinacity +pertinence +pertinent +pertness +perturb +perturbation +perturbations +perturbed +perturbing +perturbs +peru +peruse +perused +peruses +perusing +peruvian +peruvians +pervade +pervaded +pervades +pervading +pervasive +perverse +perverseness +perversion +perversions +perversity +pervert +perverted +perverting +perverts +peseta +pesetas +peshawar +peskier +peskiest +pesky +peso +pesos +pessimism +pessimist +pessimistic +pessimists +pest +pester +pestered +pestering +pesters +pesticide +pesticides +pests +pet +petard +petards +pete +peter +petered +petering +peters +petersen +peterson +petite +petites +petition +petitioned +petitioner +petitioners +petitioning +petitions +petra +petrarch +petrifaction +petrified +petrifies +petrify +petrifying +pets +petted +petticoat +petticoats +pettier +pettiest +pettifog +pettifogged +pettifogger +pettifoggers +pettifogging +pettifogs +pettiness +petting +petty +petunia +petunias +peugeot +pew +pewee +pewees +pews +pewter +pewters +peyote +pfizer +phaedra +phaethon +phanerozoic +phantasied +phantasies +phantasm +phantasmagoria +phantasmagorias +phantasms +phantasy +phantasying +phantom +phantoms +pharaoh +pharaohs +pharisee +pharisees +pharmacies +pharmacist +pharmacists +pharmacopeia +pharmacopeias +pharmacopoeia +pharmacopoeias +pharmacy +pharynges +pharynx +pharynxes +phase +phased +phases +phasing +pheasant +pheasants +phekda +phenomena +phenomenon +phenomenons +phenotype +pheromone +pheromones +phidias +phipps +phish +phished +phisher +phishers +phishing +phobia +phobias +phobic +phobics +phobos +phoebe +phoebes +phoenicia +phoenix +phoenixes +phone +phoned +phoneme +phonemes +phonemic +phones +phonetic +phonetician +phoneticians +phonetics +phoney +phoneyed +phoneying +phoneys +phonic +phonics +phonied +phonier +phonies +phoniest +phoniness +phoning +phonograph +phonographs +phony +phonying +phooey +phosphate +phosphates +phosphor +phosphorescence +phosphorescent +phosphoric +phosphors +phosphorus +photo +photocopied +photocopier +photocopiers +photocopies +photocopy +photocopying +photoed +photogenic +photograph +photographed +photographer +photographers +photographic +photographing +photographs +photography +photoing +photon +photons +photos +photosensitive +photostat +photostats +photostatted +photostatting +photosynthesis +phototypesetter +phototypesetting +phrase +phrased +phrases +phrasing +phrasings +phrygia +physic +physician +physicians +physicist +physicists +physicked +physicking +physics +physiognomies +physiognomy +physiotherapist +physiotherapists +physiotherapy +physique +physiques +piaf +piaget +pianissimi +pianissimo +pianissimos +pianist +pianists +piano +pianoforte +pianofortes +pianos +piazza +piazzas +piazze +pica +picante +picaresque +picasso +picayune +pick +pickaback +pickabacked +pickabacking +pickabacks +pickax +pickaxe +pickaxed +pickaxes +pickaxing +picked +picker +pickering +pickers +picket +picketed +picketing +pickets +pickett +pickford +pickier +pickiest +picking +pickings +pickpocket +pickpockets +picks +pickup +pickups +pickwick +picky +picnic +picnicked +picnicker +picnickers +picnicking +picnics +pict +pictograph +pictographs +picture +pictured +pictures +picturesque +picturing +pidgin +pidgins +pie +piece +pieced +pieces +piecework +piecing +pied +piedmont +pieing +pier +pierce +pierced +pierces +piercing +piercings +pierre +pierrot +piers +pies +piety +pig +pigeon +pigeons +pigged +piggier +piggies +piggiest +pigging +piggish +piggishness +piggy +piggyback +piggybacked +piggybacking +piggybacks +pigheaded +pigment +pigmentation +pigments +pigmies +pigmy +pigpen +pigpens +pigs +pigskin +pigskins +pigsties +pigsty +piing +pike +piked +piker +pikers +pikes +piking +pimento +pimentos +pimiento +pimientos +pimp +pimped +pimping +pimps +pin +pinafore +pinafores +pinatubo +pincer +pincers +pinch +pinched +pinches +pinching +pincus +pincushion +pincushions +pindar +pine +pined +pines +pinfeather +pinfeathers +ping +pinged +pinging +pings +pinhead +pinheads +pining +pinion +pinioned +pinioning +pinions +pink +pinked +pinker +pinkerton +pinkest +pinkeye +pinkie +pinkies +pinking +pinkish +pinks +pinky +pinnate +pinned +pinning +pinocchio +pinochet +pinpoint +pinpointed +pinpointing +pinpoints +pinprick +pinpricks +pins +pinstripe +pinstriped +pinstripes +pint +pinter +pinto +pintoes +pintos +pints +pinup +pinups +pioneer +pioneered +pioneering +pioneers +pious +pip +pipe +piped +piper +pipers +pipes +piping +pipit +pipits +pipped +pippin +pipping +pippins +pips +pipsqueak +pipsqueaks +piquancy +piquant +pique +piqued +piques +piquing +piracy +piraeus +piranha +piranhas +pirate +pirated +pirates +pirating +pirouette +pirouetted +pirouettes +pirouetting +pis +pisa +pisces +pisistratus +piss +pissaro +pissed +pisses +pissing +pistachio +pistachios +piston +pistons +pit +pita +pitcairn +pitch +pitched +pitcher +pitchers +pitches +pitchfork +pitchforked +pitchforking +pitchforks +pitching +pitchman +pitchmen +piteous +pith +pithier +pithiest +pithy +pitied +pities +piton +pitons +pits +pitt +pittance +pittances +pitted +pitting +pittman +pitts +pittsburgh +pituitaries +pituitary +pity +pitying +pius +pivot +pivoted +pivoting +pivots +pixie +pixies +pixy +pizarro +pizazz +pizza +pizzas +pizzazz +pizzeria +pizzerias +pizzicati +pizzicato +pizzicatos +pneumatic +pneumonia +poach +poached +poacher +poachers +poaches +poaching +pocahontas +pock +pocked +pocket +pocketbook +pocketbooks +pocketed +pocketing +pocketknife +pocketknives +pockets +pocking +pockmark +pockmarked +pockmarking +pockmarks +pocks +pocono +poconos +pod +podcast +podcasting +podcasts +podded +podding +podgorica +podhoretz +podia +podiatrist +podiatrists +podiatry +podium +podiums +pods +podunk +poe +poem +poems +poesy +poet +poetess +poetesses +poetic +poetry +poets +pogo +pogrom +pogroms +poi +poignancy +poignant +poinsettia +poinsettias +point +pointed +pointer +pointers +pointier +pointiest +pointing +points +pointy +poiret +poirot +poise +poised +poises +poising +poison +poisoned +poisoner +poisoners +poisoning +poisonings +poisonous +poisons +poisson +poitier +poke +poked +poker +pokers +pokes +pokey +pokeys +pokier +pokiest +poking +poky +pomade +pomaded +pomades +pomading +pomegranate +pomegranates +pomerania +pomeranian +pomona +pomp +pompadour +pompadoured +pompadours +pompeii +pompey +pompom +pompoms +pompon +pompons +pomposity +pompous +pompousness +ponce +poncho +ponchos +pond +ponder +pondered +pondering +ponderous +ponders +ponds +pone +pones +poniard +poniards +ponies +pontchartrain +pontiac +pontianak +pontiff +pontiffs +pontificate +pontificated +pontificates +pontificating +pontoon +pontoons +pony +pooch +pooched +pooches +pooching +pooh +poohed +poohing +poohs +poona +poop +pooped +pooping +poops +poor +poorer +poorest +poorhouse +poorhouses +pop +popcorn +pope +popes +popeye +popgun +popguns +popinjay +popinjays +popover +popovers +poppa +poppas +popped +popper +poppies +popping +poppins +poppy +poppycock +pops +porch +porches +porcine +porcupine +porcupines +pore +pored +pores +porfirio +poring +pork +porn +porno +pornographer +pornographers +pornographic +pornography +porosity +porous +porphyry +porpoise +porpoised +porpoises +porpoising +porridge +porrima +porringer +porringers +porsche +port +portage +portaged +portages +portaging +ported +portend +portended +portending +portends +portent +portentous +portents +porter +porterhouse +porterhouses +porters +portia +portico +porticoes +porticos +porting +portion +portioned +portioning +portions +portmanteau +portmanteaus +portmanteaux +portrait +portraitist +portraitists +portraits +portraiture +portray +portrayed +portraying +portrays +ports +portsmouth +portuguese +pose +posed +poseidon +poser +posers +poses +poseur +poseurs +posh +posher +poshest +posies +posing +posit +posited +positing +position +positioned +positioning +positions +positive +positives +positivism +positron +positrons +posits +posse +posses +possess +possessed +possesses +possessing +possession +possessions +possessive +possessiveness +possessives +possessor +possessors +possum +possums +post +postage +postbox +postcard +postcards +postcode +postcodes +postdate +postdated +postdates +postdating +postdoc +posted +poster +posterior +posteriors +posterity +posters +postgraduate +postgraduates +posthaste +posthumous +posting +postman +postmark +postmarked +postmarking +postmarks +postmaster +postmasters +postmen +postmistress +postmistresses +postmodern +postmortem +postmortems +postoperative +postpaid +postpartum +postpone +postponed +postponement +postponements +postpones +postponing +posts +postscript +postscripts +posture +postured +postures +posturing +postwar +posy +pot +potash +potassium +potato +potatoes +potemkin +potency +potent +potentate +potentates +pothook +pothooks +potion +potions +potomac +potpie +potpies +potpourri +potpourris +pots +potsdam +potsherd +potsherds +potshot +potshots +pottage +pottawatomie +potted +potter +pottered +potteries +pottering +potters +pottery +pottier +potties +pottiest +potting +potts +potty +pouch +pouched +pouches +pouching +pounce +pounced +pounces +pouncing +pound +pounded +pounding +pounds +pour +poured +pouring +pours +poussin +pout +pouted +pouting +pouts +poverty +powder +powdered +powdering +powders +powdery +power +powerboat +powerboats +powered +powerhouse +powerhouses +powering +powerpc +powerpoint +powers +powhatan +powwow +powwowed +powwowing +powwows +pox +poxes +poznan +practice +practices +practise +practised +practises +practising +practitioner +practitioners +prada +prado +praetorian +pragmatic +pragmatics +pragmatism +pragmatist +pragmatists +prague +praia +prairie +prairies +praise +praised +praises +praiseworthiness +praiseworthy +praising +prakrit +pram +prance +pranced +prancer +prancers +prances +prancing +prank +pranks +prankster +pranksters +pratchett +prate +prated +prates +prating +pratt +pravda +prawn +prawned +prawning +prawns +pray +prayed +prayer +prayers +praying +prays +preach +preached +preacher +preachers +preaches +preachier +preachiest +preaching +preachy +preakness +prearrange +prearranged +prearrangement +prearranges +prearranging +precambrian +precarious +precaution +precautionary +precautions +precede +preceded +precedence +precedent +precedents +precedes +preceding +precept +preceptor +preceptors +precepts +precinct +precincts +preciosity +precious +preciousness +precipice +precipices +precipitant +precipitants +precipitate +precipitated +precipitates +precipitating +precipitation +precipitations +precipitous +precise +preciseness +preciser +precises +precisest +precision +precocious +precociousness +precocity +precognition +preconceive +preconceived +preconceives +preconceiving +preconception +preconceptions +precondition +preconditioned +preconditioning +preconditions +precursor +precursors +predate +predated +predates +predating +predator +predators +predatory +predecease +predeceased +predeceases +predeceasing +predecessor +predecessors +predefined +predestination +predestine +predestined +predestines +predestining +predetermination +predetermine +predetermined +predetermines +predetermining +predicament +predicaments +predicate +predicated +predicates +predicating +predication +predicative +predict +predicted +predicting +prediction +predictions +predictive +predictor +predicts +predispose +predisposed +predisposes +predisposing +predisposition +predispositions +predominance +predominant +predominate +predominated +predominates +predominating +preeminence +preeminent +preempt +preempted +preempting +preemption +preemptive +preempts +preen +preened +preening +preens +preexist +preexisted +preexisting +preexists +prefab +prefabbed +prefabbing +prefabricate +prefabricated +prefabricates +prefabricating +prefabrication +prefabs +preface +prefaced +prefaces +prefacing +prefatory +prefect +prefects +prefecture +prefectures +prefer +preference +preferences +preferment +preferred +preferring +prefers +prefigure +prefigured +prefigures +prefiguring +prefix +prefixed +prefixes +prefixing +pregnancies +pregnancy +pregnant +preheat +preheated +preheating +preheats +prehistoric +prehistory +prejudge +prejudged +prejudges +prejudging +prejudgment +prejudgments +prejudice +prejudiced +prejudices +prejudicing +premature +premeditate +premeditated +premeditates +premeditating +premeditation +premier +premiere +premiered +premieres +premiering +premiers +preminger +premise +premised +premises +premising +premiss +premisses +premium +premiums +premonition +premonitions +premonitory +prensa +prentice +prenup +prenups +preoccupation +preoccupations +preoccupied +preoccupies +preoccupy +preoccupying +preordain +preordained +preordaining +preordains +prep +prepackage +prepackaged +prepackages +prepackaging +prepaid +preparation +preparations +preparatory +prepare +prepared +preparedness +prepares +preparing +prepay +prepaying +prepayment +prepayments +prepays +preponderance +preponderances +preponderant +preponderate +preponderated +preponderates +preponderating +preposition +prepositions +prepossess +prepossessed +prepossesses +prepossessing +preposterous +prepped +preppie +preppier +preppies +preppiest +prepping +preppy +preps +prerecord +prerecorded +prerecording +prerecords +preregister +preregistered +preregistering +preregisters +preregistration +prerequisite +prerequisites +prerogative +prerogatives +presage +presaged +presages +presaging +presbyterian +presbyterianism +presbyterians +prescience +prescient +prescott +prescribe +prescribed +prescribes +prescribing +prescription +prescriptions +prescriptive +presence +presences +present +presentation +presentations +presented +presenter +presentiment +presentiments +presenting +presents +preservation +preservative +preservatives +preserve +preserved +preserver +preservers +preserves +preserving +preset +presets +presetting +preshrank +preshrink +preshrinking +preshrinks +preshrunk +preshrunken +preside +presided +presidencies +presidency +president +presidents +presides +presiding +press +pressed +presses +pressing +pressings +pressman +pressmen +pressure +pressured +pressures +pressuring +prestige +prestigious +presto +preston +prestos +presume +presumed +presumes +presuming +presumption +presumptions +presumptive +presumptuous +presumptuousness +presuppose +presupposed +presupposes +presupposing +presupposition +presuppositions +preteen +preteens +pretence +pretences +pretend +pretended +pretender +pretenders +pretending +pretends +pretension +pretensions +pretentious +pretentiousness +preterite +preterites +pretext +pretexts +pretoria +prettied +prettier +pretties +prettiest +prettified +prettifies +prettify +prettifying +prettiness +pretty +prettying +prevaricate +prevaricated +prevaricates +prevaricating +prevarication +prevarications +prevaricator +prevaricators +prevent +preventative +preventatives +prevented +preventing +prevention +preventive +preventives +prevents +preview +previewed +previewer +previewers +previewing +previews +previous +prewar +prey +preyed +preying +preys +priam +price +priced +prices +pricey +pricier +priciest +pricing +prick +pricked +pricking +pricks +pricy +pride +prided +prides +priding +pried +pries +priest +priestess +priestesses +priesthood +priesthoods +priests +prig +priggish +prigs +prim +primacy +primaries +primary +primate +primates +prime +primed +primer +primers +primes +priming +primitive +primitives +primmer +primmest +primness +primogeniture +primp +primped +primping +primps +primrose +primroses +prince +princes +princess +princesses +princeton +principe +print +printed +printer +printers +printing +printings +printout +printouts +prints +prior +prioress +prioresses +priories +priorities +priority +priors +priory +prism +prismatic +prisms +prison +prisoner +prisoners +prisons +prissier +prissiest +prissiness +prissy +pristine +prithee +prius +privacy +private +privateer +privateers +privater +privates +privatest +privation +privations +privet +privets +privier +privies +priviest +privy +prize +prizefight +prizefighter +prizefighters +prizefighting +prizefights +prizes +pro +proactive +probate +probated +probates +probating +probation +probationary +probationer +probationers +probe +probed +probes +probing +probity +proboscides +proboscis +proboscises +procedure +procedures +proceed +proceeded +proceeding +proceedings +proceeds +process +processed +processes +processing +procession +processioned +processioning +processions +processor +processors +procrastinate +procrastinated +procrastinates +procrastinating +procrastination +procrastinator +procrastinators +procreate +procreated +procreates +procreating +procreation +procreative +procrustean +procrustes +procter +proctor +proctored +proctoring +proctors +procurator +procurators +procure +procured +procurement +procurer +procurers +procures +procuring +procyon +prod +prodded +prodding +prodigies +prodigious +prodigy +prods +produce +produced +producer +producers +produces +producing +product +production +productions +productive +productiveness +productivity +products +prof +profanation +profanations +profane +profaned +profanes +profaning +profanities +profanity +profess +professed +professes +professing +profession +professions +professor +professors +professorship +professorships +proffer +proffered +proffering +proffers +proficiency +proficient +proficients +profit +profited +profiteer +profiteered +profiteering +profiteers +profiting +profits +proforma +profound +profounder +profoundest +profs +profundities +profundity +profuse +profusion +profusions +progenitor +progenitors +progeny +progesterone +prognoses +prognosis +prognostic +prognosticate +prognosticated +prognosticates +prognosticating +prognostication +prognostications +prognosticator +prognosticators +prognostics +program +programme +programmed +programmer +programmers +programmes +programming +programs +progress +progressed +progresses +progressing +progression +progressions +progressive +progressives +prohibit +prohibited +prohibiting +prohibition +prohibitionist +prohibitionists +prohibitions +prohibitive +prohibitory +prohibits +project +projected +projecting +projection +projectionist +projectionists +projections +projector +projectors +projects +prokofiev +prom +promenade +promenaded +promenades +promenading +promethean +prometheus +prominence +prominent +promiscuity +promiscuous +promise +promised +promises +promising +promissory +promo +promontories +promontory +promos +promote +promoted +promoter +promoters +promotes +promoting +promotion +promotions +prompt +prompted +prompter +prompters +promptest +prompting +promptings +promptness +prompts +proms +prone +proneness +prong +pronged +pronghorn +pronghorns +prongs +pronoun +pronounce +pronounced +pronouncement +pronouncements +pronounces +pronouncing +pronouns +pronto +pronunciation +pronunciations +proof +proofed +proofing +proofread +proofreader +proofreaders +proofreading +proofreads +proofs +prop +propaganda +propagandist +propagandists +propagate +propagated +propagates +propagating +propagation +propane +propensities +propensity +proper +properer +properest +propertied +properties +property +prophecies +prophecy +prophesied +prophesies +prophesy +prophesying +prophet +prophetess +prophetesses +prophetic +prophets +propinquity +propitiate +propitiated +propitiates +propitiating +propitiation +propitiatory +propitious +proponent +proponents +proportion +proportionate +proportioned +proportioning +proportions +propose +proposed +proposer +proposes +proposing +proposition +propositioned +propositioning +propositions +propound +propounded +propounding +propounds +propped +propping +proprietaries +proprietary +proprietor +proprietors +proprietorship +proprietress +proprietresses +propriety +props +prorate +prorated +prorates +prorating +pros +prosaic +proscenia +proscenium +prosceniums +proscribe +proscribed +proscribes +proscribing +proscription +proscriptions +prose +prosecute +prosecuted +prosecutes +prosecuting +prosecution +prosecutions +prosecutor +prosecutors +proserpine +prosier +prosiest +prosodies +prosody +prospect +prospected +prospecting +prospective +prospector +prospectors +prospects +prospectus +prospectuses +prosper +prospered +prospering +prosperity +prosperous +prospers +prostate +prostates +prostheses +prosthesis +prosthetic +prostitute +prostituted +prostitutes +prostituting +prostitution +prostrate +prostrated +prostrates +prostrating +prostration +prostrations +prosy +protagonist +protagonists +protagoras +protean +protect +protected +protecting +protection +protections +protective +protectiveness +protector +protectorate +protectorates +protectors +protects +protein +proteins +proterozoic +protest +protestant +protestantism +protestantisms +protestants +protestation +protestations +protested +protester +protesters +protesting +protestor +protestors +protests +proteus +proton +protons +prototype +prototypes +prototyping +protozoa +protozoan +protozoans +protozoon +protract +protracted +protracting +protraction +protractor +protractors +protracts +protrude +protruded +protrudes +protruding +protrusion +protrusions +protuberance +protuberances +protuberant +proud +prouder +proudest +proudhon +proust +prove +proved +proven +provenance +provence +provender +proverb +proverbs +proves +provide +provided +providence +providences +provident +provider +providers +provides +providing +province +provinces +proving +provision +provisioned +provisioning +provisions +proviso +provisoes +provisos +provo +provocation +provocations +provocative +provoke +provoked +provokes +provoking +provost +provosts +prow +prowess +prows +proxies +proximity +proxy +prozac +prude +prudence +prudent +prudery +prudes +prudish +pruitt +prune +pruned +prunes +pruning +prurience +prurient +prussia +prussian +prut +pry +prying +pryor +pseudo +pseudonym +pseudonyms +pshaw +pshaws +psoriasis +psst +psych +psyche +psyched +psyches +psychiatric +psychiatrist +psychiatrists +psychiatry +psychic +psychics +psyching +psycho +psychogenic +psychokinesis +psychopath +psychopathic +psychopaths +psychos +psychoses +psychosis +psychosomatic +psychotherapies +psychotherapist +psychotherapists +psychotherapy +psychotic +psychotics +psychs +ptah +ptarmigan +ptarmigans +ptomaine +ptomaines +pub +puberty +pubescence +pubescent +pubic +pubs +puccini +puck +pucker +puckered +puckering +puckers +puckett +puckish +pucks +pudding +puddings +pudgier +pudgiest +pudgy +puerto +puff +puffed +puffer +puffier +puffiest +puffin +puffiness +puffing +puffins +puffs +puffy +pug +puget +pugh +pugnacious +pugnacity +pugs +puke +puked +pukes +puking +puma +pumas +pumice +pumices +pump +pumped +pumper +pumpers +pumping +pumpkin +pumpkins +pumps +pun +punch +punched +punches +punchier +punchiest +punching +punchy +punctuate +punctuated +punctuates +punctuating +punctuation +puncture +punctured +punctures +puncturing +pundit +pundits +pungency +pungent +punic +punier +puniest +punish +punished +punishes +punishing +punishment +punishments +punitive +punjab +punjabi +punk +punker +punkest +punks +punned +punning +puns +punster +punsters +punt +punted +punter +punters +punting +punts +puny +pup +pupa +pupae +pupas +pupped +puppet +puppeteer +puppeteers +puppetry +puppets +puppies +pupping +puppy +pups +purana +purchase +purchased +purchaser +purchasers +purchases +purchasing +purdue +pure +purebred +purebreds +puree +pureed +pureeing +purees +pureness +purer +purest +purgative +purgatives +purgatories +purgatory +purge +purged +purges +purging +purification +purified +purifier +purifiers +purifies +purify +purifying +purim +purims +purina +purism +purist +purists +puritan +puritanism +puritanisms +puritans +purity +purport +purported +purporting +purports +purpose +purposed +purposes +purposing +purr +purred +purring +purrs +purse +pursed +purser +pursers +purses +pursing +pursuance +pursuant +pursue +pursued +pursuer +pursuers +pursues +pursuing +pursuit +pursuits +purus +purvey +purveyed +purveying +purveyor +purveyors +purveys +purview +pus +pusan +pusey +push +pushcart +pushcarts +pushed +pusher +pushers +pushes +pushier +pushiest +pushiness +pushing +pushkin +pushover +pushovers +pushtu +pushup +pushups +pushy +puss +pusses +pussier +pussies +pussiest +pussy +pussycat +pussycats +pussyfoot +pussyfooted +pussyfooting +pussyfoots +put +putative +putin +putnam +putrefaction +putrefied +putrefies +putrefy +putrefying +putrescence +putrescent +putrid +puts +putsch +putsches +putt +putted +putter +puttered +puttering +putters +puttied +putties +putting +putts +putty +puttying +puzo +pwn +pwned +pwning +pwns +pygmies +pygmy +pym +pynchon +pyongyang +pyotr +pyramid +pyramided +pyramiding +pyramids +pyre +pyrenees +pyres +pyrex +pyrexes +pyrite +pyromania +pyromaniac +pyromaniacs +pyrotechnic +pyrotechnics +pyrrhic +pythagoras +pythagorean +pythias +python +pythons +pyx +pyxes +qaddafi +qantas +qatar +qingdao +qiqihar +qom +qua +quack +quacked +quackery +quacking +quacks +quad +quadrant +quadrants +quadraphonic +quadratic +quadrature +quadriceps +quadricepses +quadriphonic +quadruped +quadrupeds +quads +quaff +quaffed +quaffing +quaffs +quagmire +quagmires +quahaug +quahaugs +quahog +quahogs +quaint +quainter +quaintest +quaintness +quake +quaked +quaker +quakers +quakes +quaking +quandaries +quandary +quanta +quantified +quantifier +quantifiers +quantifies +quantify +quantifying +quantitative +quantities +quantity +quantum +quaoar +quarantine +quarantined +quarantines +quarantining +quark +quarks +quarried +quarries +quarry +quarrying +quart +quarter +quarterback +quarterbacked +quarterbacking +quarterbacks +quarterdeck +quarterdecks +quartered +quartering +quartermaster +quartermasters +quarters +quartet +quartets +quartette +quartettes +quarto +quartos +quarts +quartz +quasar +quasars +quash +quashed +quashes +quashing +quasi +quasimodo +quaternary +quatrain +quatrains +quaver +quavered +quavering +quavers +quavery +quay +quays +queasier +queasiest +queasiness +queasy +quebec +quechua +queen +queened +queening +queens +queer +queered +queerer +queerest +queering +queerness +queers +quench +quenched +quenches +quenching +quentin +queried +queries +query +querying +quest +quested +questing +question +questioned +questioner +questioners +questioning +questionnaire +questionnaires +questions +quests +queue +queued +queues +queuing +quezon +quiche +quiches +quick +quicken +quickened +quickening +quickens +quicker +quickest +quickie +quickies +quickness +quicksand +quicksands +quid +quids +quiescence +quiescent +quiet +quieted +quieter +quietest +quieting +quietness +quiets +quietude +quietus +quietuses +quince +quinces +quincy +quinine +quinn +quintessence +quintessences +quintet +quintets +quinton +quip +quipped +quipping +quips +quire +quires +quirk +quirked +quirkier +quirkiest +quirking +quirks +quirky +quit +quite +quito +quits +quitted +quitter +quitters +quitting +quiver +quivered +quivering +quivers +quixote +quixotic +quixotism +quiz +quizzed +quizzes +quizzing +qumran +quoit +quoited +quoiting +quoits +quondam +quonset +quorum +quorums +quota +quotas +quotation +quotations +quote +quoted +quotes +quoth +quotidian +quotient +quotients +quoting +quran +rabat +rabbi +rabbinate +rabbis +rabbit +rabbited +rabbiting +rabbits +rabid +rabies +rabin +raccoon +raccoons +race +racecourse +racecourses +raced +racehorse +racehorses +raceme +racemes +racer +racers +races +racetrack +racetracks +raceway +raceways +rachmaninoff +racier +raciest +racine +raciness +racing +racism +racist +racists +rack +racked +racket +racketed +racketeer +racketeered +racketeering +racketeers +racketing +rackets +racking +racks +raconteur +raconteurs +racoon +racoons +racquet +racquets +racy +radar +radars +radiance +radiant +radiate +radiated +radiates +radiating +radiation +radiations +radiator +radiators +radii +radio +radioactive +radioactivity +radioed +radiogram +radiograms +radioing +radioisotope +radioisotopes +radios +radiotherapist +radiotherapists +radiotherapy +radish +radishes +radium +radius +radiuses +radon +rae +raffia +raffish +raft +rafted +rafter +rafters +rafting +rafts +rag +raga +ragamuffin +ragamuffins +ragas +rage +raged +rages +ragged +raggeder +raggedest +raggedier +raggediest +raggedness +raggedy +ragging +raging +ragout +ragouts +rags +ragtag +ragtags +ragtime +ragweed +raid +raided +raider +raiders +raiding +raids +raiment +rain +rainbow +rainbows +raincoat +raincoats +raindrop +raindrops +rained +rainforest +rainier +rainiest +raining +rainmaker +rainmakers +rains +rainstorm +rainstorms +rainwater +rainy +raise +raised +raises +raisin +raising +raisins +raja +rajah +rajahs +rajas +rake +raked +rakes +raking +rakish +rakishness +ram +rama +ramada +ramadan +ramadans +ramakrishna +ramanujan +ramayana +rambo +rambunctious +rambunctiousness +ramification +ramifications +ramified +ramifies +ramify +ramifying +ramirez +ramiro +rammed +ramming +ramon +ramona +ramos +ramp +rampage +rampaged +rampages +rampaging +rampant +rampart +ramparts +ramps +ramrod +ramrodded +ramrodding +ramrods +rams +ramsay +ramses +ramsey +ran +ranch +ranched +rancher +ranchers +ranches +ranching +rancid +rancidity +rancorous +rand +randi +randier +randiest +random +randomness +randy +rang +range +ranged +ranger +rangers +ranges +rangier +rangiest +ranginess +ranging +rangoon +rangy +rank +ranked +ranker +rankest +rankin +rankine +ranking +rankings +rankness +ranks +ransack +ransacked +ransacking +ransacks +ransom +ransomed +ransoming +ransoms +rant +ranted +ranter +ranting +rants +rap +rapacious +rapaciousness +rapacity +rape +raped +rapes +rapid +rapider +rapidest +rapidity +rapids +rapier +rapiers +rapine +raping +rapist +rapists +rapped +rapper +rappers +rapping +rapport +rapports +rapprochement +rapprochements +raps +rapt +rapture +raptures +rapturous +rare +rared +rarefied +rarefies +rarefy +rarefying +rareness +rarer +rares +rarest +raring +rarities +rarity +rash +rasher +rashers +rashes +rashest +rashness +rasmussen +rasp +raspberries +raspberry +rasped +raspier +raspiest +rasping +rasps +rasputin +raspy +rasta +rastaban +rastafarian +rastafarianism +raster +rat +ratchet +ratcheted +ratcheting +ratchets +rate +rated +rates +rather +ratification +ratified +ratifies +ratify +ratifying +rating +ratings +ratio +ration +rationed +rationing +rations +ratios +rats +rattan +rattans +ratted +rattier +rattiest +ratting +rattrap +rattraps +ratty +raucous +raucousness +raunchier +raunchiest +raunchiness +raunchy +ravage +ravaged +ravages +ravaging +rave +raved +raven +ravened +ravening +ravenous +ravens +raves +ravine +ravines +raving +ravings +ravish +ravished +ravishes +ravishing +ravishment +raw +rawboned +rawer +rawest +rawhide +rawness +ray +rayban +rayburn +raymond +raymundo +rayon +rays +raze +razed +razes +razing +razor +razors +razz +razzed +razzes +razzing +rca +reach +reached +reaches +reaching +react +reacted +reacting +reaction +reactionaries +reactionary +reactions +reactivate +reactivated +reactivates +reactivating +reactivation +reactive +reactor +reactors +reacts +read +reader +readers +readership +readerships +readied +readier +readies +readiest +readiness +reading +readings +readjust +readjusted +readjusting +readjustment +readjustments +readjusts +readmit +readmits +readmitted +readmitting +readout +readouts +reads +ready +readying +reaffirm +reaffirmed +reaffirming +reaffirms +reagan +reaganomics +reagent +reagents +ream +reamed +reamer +reamers +reaming +reams +reanimate +reanimated +reanimates +reanimating +reap +reaped +reaper +reapers +reaping +reappear +reappearance +reappearances +reappeared +reappearing +reappears +reappoint +reappointed +reappointing +reappointment +reappoints +reapportion +reapportioned +reapportioning +reapportionment +reapportions +reappraise +reappraised +reappraises +reappraising +reaps +rear +reared +rearing +rearm +rearmament +rearmed +rearming +rearmost +rearms +rearrange +rearranged +rearrangement +rearrangements +rearranges +rearranging +rears +rearward +rearwards +reason +reasoned +reasoner +reasoning +reasons +reassert +reasserted +reasserting +reasserts +reassess +reassessed +reassesses +reassessing +reassessment +reassessments +reassign +reassigned +reassigning +reassigns +reassurance +reassurances +reassure +reassured +reassures +reassuring +reawaken +reawakened +reawakening +reawakens +reba +rebate +rebated +rebates +rebating +rebecca +rebekah +rebind +rebinding +rebinds +rebirth +rebirths +reborn +rebound +rebounded +rebounding +rebounds +rebroadcast +rebroadcasted +rebroadcasting +rebroadcasts +rebuff +rebuffed +rebuffing +rebuffs +rebuke +rebuked +rebukes +rebuking +rebus +rebuses +rebut +rebuts +rebutted +rebutting +recant +recantation +recantations +recanted +recanting +recants +recap +recapped +recapping +recaps +recapture +recaptured +recaptures +recapturing +recast +recasting +recasts +recede +receded +recedes +receding +receipt +receipted +receipting +receipts +receive +received +receiver +receivers +receivership +receives +receiving +recent +recenter +recentest +reception +receptionist +receptionists +receptions +receptive +receptiveness +receptivity +receptor +receptors +recess +recessed +recesses +recessing +recession +recessions +recessive +recessives +recharge +recharged +recharges +recharging +recheck +rechecked +rechecking +rechecks +recidivism +recidivist +recidivists +recife +recipe +recipes +recipient +recipients +reciprocate +reciprocated +reciprocates +reciprocating +reciprocation +reciprocity +recitation +recitations +recitative +recitatives +recite +recited +recites +reciting +reckon +reckoned +reckoning +reckonings +reckons +recognition +recombination +recombine +recombined +recombines +recombining +recommence +recommenced +recommences +recommencing +recommend +recommendation +recommendations +recommended +recommending +recommends +recompense +recompensed +recompenses +recompensing +recondite +recondition +reconditioned +reconditioning +reconditions +reconfiguration +reconfigure +reconfigured +reconnaissance +reconnaissances +reconnect +reconnected +reconnecting +reconnects +reconquer +reconquered +reconquering +reconquers +reconsider +reconsideration +reconsidered +reconsidering +reconsiders +reconstitute +reconstituted +reconstitutes +reconstituting +reconstruct +reconstructed +reconstructing +reconstruction +reconstructions +reconstructs +reconvene +reconvened +reconvenes +reconvening +recopied +recopies +recopy +recopying +record +recorded +recorder +recorders +recording +recordings +records +recount +recounted +recounting +recounts +recoup +recouped +recouping +recoups +recourse +recover +recovered +recoveries +recovering +recovers +recovery +recreant +recreants +recreate +recreated +recreates +recreating +recreation +recreations +recriminate +recriminated +recriminates +recriminating +recrimination +recriminations +recrudescence +recruit +recruited +recruiter +recruiters +recruiting +recruitment +recruits +recta +rectification +rectifications +rectified +rectifier +rectifiers +rectifies +rectify +rectifying +rectitude +rector +rectories +rectors +rectory +rectum +rectums +recumbent +recuperate +recuperated +recuperates +recuperating +recuperation +recuperative +recur +recurred +recurrence +recurrences +recurrent +recurring +recurs +recursion +recursive +red +redbreast +redbreasts +redcap +redcaps +redcoat +redcoats +redden +reddened +reddening +reddens +redder +reddest +reddish +redecorate +redecorated +redecorates +redecorating +rededicate +rededicated +rededicates +rededicating +redeem +redeemed +redeemer +redeemers +redeeming +redeems +redefine +redefined +redefines +redefining +redefinition +redemption +redesign +redesigned +redesigning +redesigns +redford +redgrave +redhead +redheaded +redheads +redid +redirect +redirected +redirecting +redirection +redirects +rediscover +rediscovered +rediscovering +rediscovers +rediscovery +redistribute +redistributed +redistributes +redistributing +redistribution +redistributor +redistributors +redistrict +redistricted +redistricting +redistricts +redmond +redneck +rednecks +redness +redo +redoes +redoing +redone +redoubt +redoubts +redound +redounded +redounding +redounds +redraft +redrafted +redrafting +redrafts +redraw +redrawing +redrawn +redraws +redress +redressed +redresses +redressing +redrew +reds +redskin +redskins +reduce +reduced +reduces +reducing +reduction +reductions +redundancies +redundancy +redundant +redwood +redwoods +reebok +reed +reedier +reediest +reeds +reeducate +reeducated +reeducates +reeducating +reeducation +reedy +reef +reefed +reefer +reefers +reefing +reefs +reek +reeked +reeking +reeks +reemerge +reemerged +reemerges +reemerging +reenact +reenacted +reenacting +reenactment +reenactments +reenacts +reenter +reentered +reentering +reenters +reentries +reentry +reese +reeve +reeved +reeves +reeving +reexamine +reexamined +reexamines +reexamining +ref +refashion +refashioned +refashioning +refashions +refectories +refectory +refer +referee +refereed +refereeing +referees +reference +referenced +references +referencing +referenda +referendum +referendums +referent +referred +referring +refers +reffed +reffing +refinance +refinanced +refinances +refinancing +refine +refined +refinement +refinements +refiner +refineries +refiners +refinery +refines +refining +refinish +refinished +refinishes +refinishing +refit +refits +refitted +refitting +refocus +refocused +refocuses +refocusing +refocussed +refocusses +refocussing +reforest +reforestation +reforested +reforesting +reforests +reform +reformat +reformation +reformations +reformatories +reformatory +reformatted +reformatting +reformed +reformer +reformers +reforming +reforms +refract +refracted +refracting +refraction +refractories +refractory +refracts +refrain +refrained +refraining +refrains +refresh +refreshed +refresher +refreshers +refreshes +refreshing +refreshment +refreshments +refrigerant +refrigerants +refrigerate +refrigerated +refrigerates +refrigerating +refrigeration +refrigerator +refrigerators +refs +refuge +refugee +refugees +refuges +refugio +refund +refunded +refunding +refunds +refurbish +refurbished +refurbishes +refurbishing +refurbishment +refurbishments +refurnish +refurnished +refurnishes +refurnishing +refuse +refused +refuses +refusing +refutation +refutations +refute +refuted +refutes +refuting +regain +regained +regaining +regains +regard +regarded +regarding +regards +regatta +regattas +regencies +regency +regenerate +regenerated +regenerates +regenerating +regeneration +regenerative +regent +regents +reggae +reggie +regicide +regicides +regime +regimen +regimens +regiment +regimentation +regimented +regimenting +regiments +regimes +regina +reginae +region +regions +register +registered +registering +registers +registrant +registrants +registrar +registrars +registration +registrations +registries +registry +regor +regress +regressed +regresses +regressing +regression +regressions +regressive +regret +regrets +regretted +regretting +regroup +regrouped +regrouping +regroups +regurgitate +regurgitated +regurgitates +regurgitating +regurgitation +rehab +rehabbed +rehabbing +rehabs +rehash +rehashed +rehashes +rehashing +rehearse +rehearsed +rehearses +rehearsing +reheat +reheated +reheating +reheats +rehire +rehired +rehires +rehiring +rehnquist +reich +reichstag +reid +reign +reigned +reigning +reigns +reimburse +reimbursed +reimbursement +reimbursements +reimburses +reimbursing +reimpose +reimposed +reimposes +reimposing +rein +reincarnate +reincarnated +reincarnates +reincarnating +reincarnation +reincarnations +reindeer +reindeers +reined +reinforce +reinforced +reinforcement +reinforcements +reinforces +reinforcing +reinhardt +reining +reins +reinsert +reinserted +reinserting +reinserts +reinstate +reinstated +reinstatement +reinstates +reinstating +reinterpret +reinterpretation +reinterpretations +reinterpreted +reinterpreting +reinterprets +reinvent +reinvented +reinventing +reinvents +reinvest +reinvested +reinvesting +reinvests +reis +reissue +reissued +reissues +reissuing +reiterate +reiterated +reiterates +reiterating +reiteration +reiterations +reject +rejected +rejecting +rejection +rejections +rejects +rejoice +rejoiced +rejoices +rejoicing +rejoicings +rejoin +rejoinder +rejoinders +rejoined +rejoining +rejoins +rejuvenate +rejuvenated +rejuvenates +rejuvenating +rejuvenation +remade +remain +remainder +remaindered +remainders +remained +remaining +remains +remake +remakes +remaking +remand +remanded +remanding +remands +remark +remarked +remarking +remarks +remarque +remarriage +remarriages +remarried +remarries +remarry +remarrying +rematch +rematches +rembrandt +remedied +remedies +remedy +remedying +remember +remembered +remembering +remembers +remembrance +remembrances +remind +reminded +reminder +reminders +reminding +reminds +remington +reminisce +reminisced +reminiscence +reminiscences +reminiscent +reminisces +reminiscing +remiss +remission +remissions +remissness +remit +remits +remittance +remittances +remitted +remitting +remnant +remnants +remonstrance +remonstrances +remonstrate +remonstrated +remonstrates +remonstrating +remorse +remortgage +remortgaged +remortgages +remortgaging +remote +remoteness +remoter +remotes +remotest +remount +remounted +remounting +remounts +remove +removed +remover +removers +removes +removing +remunerate +remunerated +remunerates +remunerating +remuneration +remunerations +remunerative +remus +rena +renaissance +renaissances +rename +renamed +renames +renaming +renascence +renascences +renascent +rend +render +rendered +rendering +renderings +renders +rendezvous +rendezvoused +rendezvouses +rendezvousing +rending +rendition +renditions +rends +rene +renee +renegade +renegaded +renegades +renegading +renege +reneged +reneges +reneging +renegotiate +renegotiated +renegotiates +renegotiating +renew +renewed +renewing +renews +rennet +reno +renoir +renounce +renounced +renounces +renouncing +renovate +renovated +renovates +renovating +renovation +renovations +renovator +renovators +renown +renowned +rent +rented +renter +renters +renting +rents +renumber +renumbered +renumbering +renumbers +renunciation +renunciations +reoccupied +reoccupies +reoccupy +reoccupying +reoccur +reoccurred +reoccurring +reoccurs +reopen +reopened +reopening +reopens +reorder +reordered +reordering +reorders +reorg +reorged +reorging +reorgs +rep +repackage +repackaged +repackages +repackaging +repaid +repaint +repainted +repainting +repaints +repair +repaired +repairing +repairman +repairmen +repairs +reparation +reparations +repartee +repast +repasts +repatriate +repatriated +repatriates +repatriating +repatriation +repay +repaying +repayment +repayments +repays +repeat +repeated +repeater +repeaters +repeating +repeats +repent +repentance +repentant +repented +repenting +repents +repercussion +repercussions +repertoire +repertoires +repertories +repertory +repetition +repetitions +repetitious +repetitive +rephrase +rephrased +rephrases +rephrasing +report +reportage +reported +reporter +reporters +reporting +reports +repose +reposed +reposes +reposing +repositories +repository +repossess +repossessed +repossesses +repossessing +repossession +repossessions +reprehend +reprehended +reprehending +reprehends +represent +representation +representations +representative +representatives +represented +representing +represents +repress +repressed +represses +repressing +repression +repressions +repressive +reprieve +reprieved +reprieves +reprieving +reprimand +reprimanded +reprimanding +reprimands +reprint +reprinted +reprinting +reprints +reprise +reprises +reprising +reproach +reproached +reproaches +reproaching +reprobate +reprobates +reprocess +reprocessed +reprocesses +reprocessing +reproduce +reproduced +reproduces +reproducing +reproduction +reproductions +reproductive +reprogram +reprogramed +reprograming +reprogrammed +reprogramming +reprograms +reproof +reproofed +reproofing +reproofs +reprove +reproved +reproves +reproving +reps +repudiate +repudiated +repudiates +repudiating +repudiation +repudiations +repugnance +repugnant +reputation +reputations +repute +reputed +reputes +reputing +request +requested +requester +requesting +requests +requiem +requiems +require +required +requirement +requirements +requires +requiring +requisite +requisites +requisition +requisitioned +requisitioning +requisitions +requite +requited +requites +requiting +reran +reread +rereading +rereads +reroute +rerouted +reroutes +rerouting +rerun +rerunning +reruns +rescind +rescinded +rescinding +rescinds +rescission +rescue +rescued +rescuer +rescuers +rescues +rescuing +research +researched +researcher +researchers +researches +researching +resend +resent +resented +resenting +resentment +resentments +resents +reservation +reservations +reserve +reserved +reserves +reserving +reservist +reservists +reservoir +reservoirs +reset +resets +resetting +reside +resided +residence +residences +residencies +residency +resident +residents +resides +residing +residue +residues +resign +resignation +resignations +resigned +resigning +resigns +resin +resinous +resins +resist +resistance +resistances +resistant +resisted +resister +resisters +resisting +resistor +resistors +resists +resonance +resonances +resonant +resonate +resonated +resonates +resonating +resonator +resonators +resort +resorted +resorting +resorts +resound +resounded +resounding +resounds +resource +resources +respect +respected +respecting +respective +respects +respiration +respirator +respirators +respiratory +respire +respired +respires +respiring +respite +respites +respond +responded +respondent +respondents +responding +responds +response +responses +responsive +responsiveness +rest +restart +restarted +restarting +restarts +restate +restated +restatement +restatements +restates +restating +restaurant +restauranteur +restauranteurs +restaurants +restaurateur +restaurateurs +rested +resting +restitution +restive +restiveness +restock +restocked +restocking +restocks +restoration +restorations +restorative +restoratives +restore +restored +restorer +restorers +restores +restoring +restrain +restrained +restraining +restrains +restraint +restraints +restrict +restricted +restricting +restriction +restrictions +restrictive +restricts +restroom +restrooms +restructure +restructured +restructures +restructuring +restructurings +rests +restudied +restudies +restudy +restudying +resubmit +resubmits +resubmitted +resubmitting +resume +resumed +resumes +resuming +resumption +resumptions +resurface +resurfaced +resurfaces +resurfacing +resurgence +resurgences +resurgent +resurrect +resurrected +resurrecting +resurrection +resurrections +resurrects +resuscitate +resuscitated +resuscitates +resuscitating +resuscitation +resuscitator +resuscitators +retain +retained +retainer +retainers +retaining +retains +retake +retaken +retakes +retaking +retard +retardant +retardants +retardation +retarded +retarding +retards +retch +retched +retches +retching +retention +retentive +retentiveness +rethink +rethinking +rethinks +rethought +reticence +reticent +retina +retinae +retinas +retinue +retinues +retire +retired +retiree +retirees +retirement +retirements +retires +retiring +retook +retort +retorted +retorting +retorts +retouch +retouched +retouches +retouching +retrace +retraced +retraces +retracing +retract +retracted +retracting +retraction +retractions +retracts +retrain +retrained +retraining +retrains +retread +retreaded +retreading +retreads +retreat +retreated +retreating +retreats +retrench +retrenched +retrenches +retrenching +retrenchment +retrenchments +retribution +retributions +retributive +retried +retries +retrieve +retrieved +retriever +retrievers +retrieves +retrieving +retroactive +retrod +retrodden +retrofit +retrofits +retrofitted +retrofitting +retrograde +retrograded +retrogrades +retrograding +retrogress +retrogressed +retrogresses +retrogressing +retrogression +retrogressive +retrorocket +retrorockets +retrospect +retrospected +retrospecting +retrospection +retrospective +retrospectives +retrospects +retry +retrying +return +returned +returnee +returnees +returning +returns +retweet +retweeted +retweeting +retweets +retype +retyped +retypes +retyping +reuben +reunification +reunified +reunifies +reunify +reunifying +reunion +reunions +reunite +reunited +reunites +reuniting +reuse +reused +reuses +reusing +reuters +reuther +rev +reva +revamp +revamped +revamping +revamps +revenge +revenged +revenges +revenging +revenue +revenues +reverberate +reverberated +reverberates +reverberating +reverberation +reverberations +revere +revered +reverence +reverenced +reverences +reverencing +reverend +reverends +reverent +reveres +reverie +reveries +revering +reverse +reversed +reverses +reversing +reversion +revert +reverted +reverting +reverts +revery +review +reviewed +reviewer +reviewers +reviewing +reviews +revise +revised +revises +revising +revision +revisions +revisit +revisited +revisiting +revisits +revive +revived +revives +revivification +revivified +revivifies +revivify +revivifying +reviving +revocation +revocations +revoke +revoked +revokes +revoking +revs +revue +revues +revved +revving +reward +rewarded +rewarding +rewards +rewind +rewinding +rewinds +rewire +rewired +rewires +rewiring +reword +reworded +rewording +rewords +rework +reworked +reworking +reworks +rewound +rewrite +rewrites +rewriting +rewritten +rewrote +rex +reyes +reykjavik +reyna +rhapsodic +rhapsodies +rhapsody +rhea +rheas +rhee +rheingau +rhenish +rheostat +rheostats +rhetoric +rhetorician +rhetoricians +rheum +rheumatic +rheumatics +rheumatism +rheumy +rhiannon +rhine +rhinestone +rhinestones +rhino +rhinoceri +rhinoceros +rhinoceroses +rhinos +rhizome +rhizomes +rho +rhoda +rhode +rhodes +rhodesia +rhodium +rhododendron +rhododendrons +rhombi +rhomboid +rhomboids +rhombus +rhombuses +rhonda +rhone +rhubarb +rhubarbs +rhyme +rhymed +rhymes +rhyming +rhythm +rhythmic +rhythms +rib +ribbed +ribbentrop +ribbing +ribbon +ribbons +ribs +ricardo +rice +riced +rices +rich +richard +richards +richardson +richer +riches +richest +richie +richmond +richness +richter +richthofen +ricing +rick +ricked +rickenbacker +ricketier +ricketiest +rickets +rickety +rickey +rickie +ricking +rickover +ricks +ricksha +rickshas +rickshaw +rickshaws +ricky +rico +ricochet +ricocheted +ricocheting +ricochets +ricochetted +ricochetting +ricotta +rid +riddance +ridded +ridden +ridding +ride +rider +riders +rides +ridge +ridged +ridges +ridging +riding +rids +riemann +rife +rifer +rifest +riff +riffed +riffing +riffraff +riffs +rift +rifted +rifting +rifts +rig +riga +rigged +rigging +riggs +right +righted +righteous +righteousness +righter +rightest +righting +rightist +rightists +rightmost +rightness +rights +rigid +rigidity +rigidness +rigoberto +rigorous +rigs +rim +rimbaud +rime +rimed +rimes +riming +rimmed +rimming +rims +rind +rinds +ring +ringed +ringer +ringers +ringing +ringmaster +ringmasters +ringo +rings +ringside +ringtone +ringtones +ringworm +rink +rinks +rinse +rinsed +rinses +rinsing +rio +rios +riot +rioted +rioter +rioters +rioting +riotous +riots +rip +ripe +ripen +ripened +ripeness +ripening +ripens +riper +ripest +riposte +riposted +ripostes +riposting +ripped +ripper +rippers +ripping +rips +ripsaw +ripsaws +rise +risen +riser +risers +rises +rising +risk +risked +riskier +riskiest +riskiness +risking +risks +risky +risorgimento +rita +rite +rites +ritz +ritzier +ritziest +ritzy +rivas +riven +river +rivera +riverbed +riverbeds +riverfront +rivers +riverside +riversides +rivet +riveted +riveter +riveters +riveting +rivets +rivetted +rivetting +riviera +rivieras +riyadh +roach +roaches +road +roadbed +roadbeds +roadhouse +roadhouses +roadrunner +roadrunners +roads +roadshow +roadside +roadsides +roadster +roadsters +roadway +roadways +roadwork +roadworthy +roam +roamed +roamer +roamers +roaming +roams +roan +roans +roar +roared +roaring +roars +roast +roasted +roaster +roasters +roasting +roasts +rob +robbed +robber +robberies +robbers +robbery +robbie +robbin +robbing +robbins +robby +robe +robed +roberson +robert +roberta +roberto +roberts +robertson +robes +robeson +robespierre +robin +robing +robins +robinson +robitussin +robot +robotic +robotics +robots +robs +robson +robt +robust +robuster +robustest +robustness +robyn +rocco +rocha +rochambeau +roche +rochester +rock +rocked +rocker +rockers +rocket +rocketed +rocketing +rocketry +rockets +rockford +rockier +rockies +rockiest +rockiness +rocking +rockne +rocks +rocky +rococo +rod +roddenberry +rode +rodent +rodents +rodeo +rodeos +roderick +rodger +rodgers +rodin +rodney +rodrick +rodrigo +rodriguez +rodriquez +rods +roe +roebuck +roebucks +roeg +roentgen +roentgens +roes +roger +rogered +rogering +rogers +roget +rogue +roguery +rogues +roguish +roister +roistered +roisterer +roisterers +roistering +roisters +rojas +roku +romaine +roman +romance +romanced +romances +romancing +romanesque +romanian +romanians +romanies +romano +romanov +romans +romansh +romantic +romanticism +romanticist +romanticists +romantics +romany +rome +romeo +romero +romes +romney +romp +romped +romper +rompers +romping +romps +ron +ronda +ronnie +ronny +ronstadt +rood +roods +roof +roofed +roofer +roofers +roofing +roofs +rooftop +rooftops +rook +rooked +rookeries +rookery +rookie +rookies +rooking +rooks +room +roomed +roomer +roomers +roomier +roomiest +roominess +rooming +roommate +roommates +rooms +roomy +rooney +roost +roosted +rooster +roosters +roosting +roosts +root +rooted +rooter +rooting +roots +rope +roped +ropes +roping +roquefort +roqueforts +rorschach +rory +rosa +rosanna +rosanne +rosaries +rosario +rosary +roscoe +rose +roseann +roseate +roseau +rosebud +rosebuds +rosebush +rosebushes +rosecrans +rosemarie +rosemary +rosenberg +rosendo +rosenzweig +roses +rosetta +rosette +rosettes +rosewood +rosewoods +rosicrucian +rosie +rosier +rosiest +rosin +rosined +rosiness +rosining +rosins +ross +rossetti +rossini +rostand +roster +rosters +rostov +rostra +rostropovich +rostrum +rostrums +rosy +rot +rotarian +rotaries +rotary +rotate +rotated +rotates +rotating +rotation +rotations +rote +roth +rothko +rotisserie +rotisseries +rotogravure +rotogravures +rotor +rotors +rots +rotted +rotten +rottener +rottenest +rottenness +rotterdam +rotting +rotund +rotunda +rotundas +rotundity +rotundness +rouge +rouged +rouges +rough +roughage +roughed +roughen +roughened +roughening +roughens +rougher +roughest +roughhouse +roughhoused +roughhouses +roughhousing +roughing +roughneck +roughnecked +roughnecking +roughnecks +roughness +roughs +roughshod +rouging +roumania +round +roundabout +roundabouts +rounded +rounder +roundest +roundhouse +roundhouses +rounding +roundish +roundness +rounds +roundup +roundups +roundworm +roundworms +rourke +rouse +roused +rouses +rousing +rousseau +roustabout +roustabouts +rout +route +routed +routeing +router +routes +routine +routines +routing +routs +rove +roved +rover +rovers +roves +roving +row +rowboat +rowboats +rowdier +rowdies +rowdiest +rowdiness +rowdy +rowdyism +rowe +rowed +rowena +rower +rowers +rowing +rows +roxanne +roxie +roxy +roy +royce +rub +rubaiyat +rubbed +rubber +rubbermaid +rubberneck +rubbernecked +rubbernecking +rubbernecks +rubbers +rubbery +rubbing +rubbish +rubbished +rubbishes +rubbishing +rubbishy +rubdown +rubdowns +rube +ruben +rubens +rubes +rubicon +rubicund +rubier +rubies +rubiest +rubik +rubin +rubinstein +rubric +rubrics +rubs +ruby +ruchbah +rucksack +rucksacks +ruckus +ruckuses +rudder +rudders +ruddier +ruddiest +ruddiness +ruddy +rude +rudeness +ruder +rudest +rudiment +rudimentary +rudiments +rudy +rudyard +rue +rued +rues +ruff +ruffed +ruffian +ruffians +ruffing +ruffs +rufus +rug +rugby +rugged +ruggeder +ruggedest +ruggedness +rugrat +rugrats +rugs +ruhr +ruin +ruination +ruined +ruing +ruining +ruinous +ruins +ruiz +rukeyser +rum +rumania +rumba +rumbaed +rumbaing +rumbas +ruminant +ruminants +ruminate +ruminated +ruminates +ruminating +rumination +ruminations +rummage +rummaged +rummages +rummaging +rummer +rummest +rummy +rump +rumps +rumpus +rumpuses +rums +run +runabout +runabouts +runaround +runarounds +runaway +runaways +rundown +rundowns +rune +runes +rung +rungs +runner +runners +runnier +runniest +running +runny +runnymede +runoff +runoffs +runs +runt +runts +runway +runways +runyon +rupee +rupees +rupert +rupture +ruptured +ruptures +rupturing +ruse +ruses +rush +rushdie +rushed +rushes +rushing +rushmore +rusk +ruskin +rusks +russet +russets +russia +russian +russians +russo +rust +rusted +rustic +rusticity +rustics +rustier +rustiest +rustiness +rusting +rustproof +rustproofed +rustproofing +rustproofs +rusts +rusty +rut +rutabaga +rutabagas +rutan +rutgers +ruth +rutherford +ruthie +ruts +rutted +rutting +rwanda +rwandan +rwandans +rwandas +ryan +rydberg +ryder +rye +ryukyu +saab +saar +saarinen +saatchi +sabbath +sabbaths +sabik +sabin +sabina +sabine +sabotage +sabotaged +sabotages +sabotaging +saboteur +saboteurs +sabre +sabres +sabrina +sac +sacajawea +saccharin +saccharine +sacco +sachem +sachems +sachet +sachets +sachs +sack +sacked +sacking +sacks +sacrament +sacramento +sacraments +sacred +sacredness +sacrifice +sacrificed +sacrifices +sacrificing +sacristan +sacristans +sacristies +sacristy +sacrosanct +sacs +sad +sadat +saddam +sadden +saddened +saddening +saddens +sadder +saddest +sadducee +sade +sades +sadie +sadism +sadist +sadistic +sadists +sadness +sadr +safari +safaried +safariing +safaris +safavid +safe +safeguard +safeguarded +safeguarding +safeguards +safekeeping +safeness +safer +safes +safest +safeties +safety +safeway +saffron +saffrons +sag +saga +sagacious +sagacity +sagan +sagas +sage +sagebrush +sager +sages +sagest +sagged +sagging +saginaw +sagittarius +sagittariuses +sago +sags +saguaro +saguaros +sahara +sahib +sahibs +said +saigon +saint +sainthood +saints +saiph +saith +sakai +sake +sakha +sakharov +saki +saks +samantha +samar +samara +samaritan +samaritans +samarkand +samba +sambaed +sambaing +sambas +same +sameness +sames +sammie +sammy +samoa +samoan +samoset +samovar +samovars +samoyed +sampan +sampans +sampson +samson +samsonite +samsung +samurai +san +sana +sanatoria +sanatorium +sanatoriums +sanchez +sancho +sancta +sanctification +sanctified +sanctifies +sanctify +sanctifying +sanctimonious +sanction +sanctioned +sanctioning +sanctions +sanctity +sanctuaries +sanctuary +sanctum +sanctums +sand +sandbag +sandbagged +sandbagging +sandbags +sandbank +sandbanks +sandbar +sandbars +sandbox +sandboxes +sandburg +sanded +sander +sanders +sandhog +sandhogs +sandier +sandiest +sandiness +sanding +sandinista +sandman +sandmen +sandpaper +sandpapered +sandpapering +sandpapers +sandpiper +sandpipers +sandra +sands +sandstone +sandstorm +sandstorms +sandwich +sandwiched +sandwiches +sandwiching +sandy +sane +saner +sanest +sanford +sanforized +sang +sanger +sangfroid +sanguinary +sanguine +sanhedrin +sanitaria +sanitarium +sanitariums +sanitary +sanitation +sanity +sank +sanka +sankara +sans +sanserif +sanskrit +santa +santana +santayana +santeria +santiago +santos +sap +sapience +sapient +sapped +sapphire +sapphires +sappho +sappier +sappiest +sapping +sapporo +sappy +saprophyte +saprophytes +saps +sapsucker +sapsuckers +sara +saracen +saracens +saragossa +sarah +sarajevo +saran +sarape +sarapes +sarasota +saratov +sarawak +sarcasm +sarcasms +sarcastic +sarcoma +sarcomas +sarcomata +sarcophagi +sarcophagus +sarcophaguses +sardine +sardines +sardinia +sardonic +saree +sarees +sargasso +sargent +sargon +sari +saris +sarnoff +sarong +sarongs +saroyan +sars +sarto +sartre +sash +sasha +sashay +sashayed +sashaying +sashays +sashes +saskatchewan +saskatoon +sasquatch +sass +sassafras +sassafrases +sassanian +sassed +sasses +sassier +sassiest +sassing +sassoon +sassy +sat +satan +satanic +satanism +satanist +satay +sate +sated +sateen +sates +satiate +satiated +satiates +satiating +satiety +satin +sating +satinwood +satinwoods +satiny +satire +satires +satirist +satirists +satisfaction +satisfactions +satisfactory +satisfied +satisfies +satisfy +satisfying +satrap +satraps +saturate +saturated +saturates +saturating +saturation +saturday +saturdays +saturn +saturnine +satyr +satyrs +sauce +sauced +saucepan +saucepans +saucer +saucers +sauces +saucier +sauciest +sauciness +saucing +saucy +saudi +saudis +sauerkraut +sauna +saunaed +saunaing +saunas +saunders +saundra +saunter +sauntered +sauntering +saunters +sausage +sausages +saussure +sauted +sauterne +savage +savaged +savageness +savager +savageries +savagery +savages +savagest +savaging +savanna +savannah +savannahes +savannahs +savannas +savant +savants +save +saved +saver +savers +saves +saving +savings +savior +saviour +saviours +savoy +savoyard +savvied +savvier +savvies +savviest +savvy +savvying +saw +sawdust +sawed +sawhorse +sawhorses +sawing +sawn +saws +sawyer +sawyers +sax +saxes +saxon +saxons +saxony +saxophone +saxophones +saxophonist +saxophonists +say +sayers +saying +sayings +says +scab +scabbard +scabbards +scabbed +scabbier +scabbiest +scabbing +scabby +scabies +scabrous +scabs +scad +scads +scam +scammed +scammer +scammers +scamming +scamp +scamper +scampered +scampering +scampers +scampi +scampies +scamps +scams +scan +scandinavia +scandinavian +scandinavians +scanned +scanner +scanners +scanning +scans +scansion +scant +scanted +scanter +scantest +scantier +scanties +scantiest +scantiness +scanting +scants +scanty +scapegoat +scapegoated +scapegoating +scapegoats +scar +scarab +scarabs +scaramouch +scarborough +scarce +scarceness +scarcer +scarcest +scarcity +scare +scarecrow +scarecrows +scared +scares +scarf +scarfed +scarfing +scarfs +scarier +scariest +scarified +scarifies +scarify +scarifying +scaring +scarred +scarring +scars +scarves +scary +scat +scathing +scats +scatted +scatter +scatterbrain +scatterbrained +scatterbrains +scattered +scattering +scatters +scatting +scavenge +scavenged +scavenger +scavengers +scavenges +scavenging +scenario +scenarios +scene +scenery +scenes +scenic +scent +scented +scenting +scents +scheat +schedar +scheherazade +schema +schematic +schematics +scheme +schemed +schemer +schemers +schemes +scheming +schenectady +scherzi +scherzo +scherzos +schick +schism +schismatic +schismatics +schisms +schist +schizoid +schizoids +schizophrenia +schizophrenic +schizophrenics +schmidt +schmooze +schmoozed +schmoozes +schmoozing +schmuck +schmucks +schnapps +schnauzer +schnauzers +schneider +schoenberg +schooner +schooners +schopenhauer +schrieffer +schrod +schrods +schroeder +schtick +schticks +schubert +schumann +schumpeter +schuss +schussed +schusses +schussing +schwa +schwartz +schwarzenegger +schwarzkopf +schwas +schweitzer +schweppes +schwinger +schwinn +sciatic +sciatica +science +sciences +scientific +scientist +scientists +scimitar +scimitars +scion +scions +scipio +scissor +scissors +scoff +scoffed +scoffing +scoffs +sconce +sconces +scone +scones +scoop +scooped +scooping +scoops +scoot +scooted +scooter +scooters +scooting +scoots +scope +scoped +scopes +scoping +scorch +scorched +scorcher +scorchers +scorches +scorching +score +scoreboard +scoreboards +scorecard +scorecards +scored +scorer +scorers +scores +scoring +scorn +scorned +scorning +scorns +scorpio +scorpion +scorpions +scorpios +scorpius +scorsese +scot +scotch +scotched +scotches +scotching +scotchman +scotchmen +scotchs +scotia +scots +scotsman +scotsmen +scotswoman +scotswomen +scott +scottie +scottish +scotty +scour +scoured +scourge +scourged +scourges +scourging +scouring +scours +scout +scouted +scouting +scoutmaster +scoutmasters +scouts +scow +scows +scram +scrammed +scramming +scrams +scranton +scrap +scrapbook +scrapbooks +scrape +scraped +scraper +scrapers +scrapes +scraping +scrapped +scrappier +scrappiest +scrapping +scrappy +scraps +scratch +scratched +scratches +scratchier +scratchiest +scratchiness +scratching +scratchy +scrawnier +scrawniest +scrawny +scream +screamed +screaming +screams +screech +screeched +screeches +screechier +screechiest +screeching +screechy +screen +screened +screening +screenings +screens +screenshot +screenshots +screenwriter +screenwriters +screw +screwdriver +screwdrivers +screwed +screwier +screwiest +screwing +screws +screwy +scriabin +scribe +scribes +scribner +scrimmage +scrimmaged +scrimmages +scrimmaging +scrimp +scrimped +scrimping +scrimps +scrimshaw +scrimshawed +scrimshawing +scrimshaws +scrip +scrips +script +scripted +scripting +scripts +scripture +scriptures +scriptwriter +scriptwriters +scrod +scrods +scrooge +scrooges +scrota +scrotum +scrotums +scrounge +scrounged +scrounger +scroungers +scrounges +scrounging +scrub +scrubbed +scrubber +scrubbers +scrubbier +scrubbiest +scrubbing +scrubby +scrubs +scruff +scruffier +scruffiest +scruffs +scruffy +scruggs +scrumptious +scrunch +scrunched +scrunches +scrunchie +scrunchies +scrunching +scrunchy +scrutiny +scuba +scubaed +scubaing +scubas +scud +scudded +scudding +scuds +scuff +scuffed +scuffing +scuffs +scum +scumbag +scumbags +scummed +scummier +scummiest +scumming +scummy +scums +scupper +scuppered +scuppering +scuppers +scurf +scurfy +scurried +scurries +scurry +scurrying +scurvier +scurviest +scurvy +scuzzier +scuzziest +scuzzy +scythe +scythed +scythes +scythia +scythian +scything +sea +seabed +seabeds +seabird +seabirds +seaboard +seaboards +seaborg +seacoast +seacoasts +seafarer +seafarers +seafaring +seafood +seagoing +seagram +seam +seaman +seamanship +seamed +seamen +seamier +seamiest +seaming +seams +seamstress +seamstresses +seamy +sean +seaport +seaports +sear +search +searched +searcher +searchers +searches +searching +seared +searing +sears +seas +seascape +seascapes +seashore +seashores +seasick +seasickness +seaside +seasides +season +seasoned +seasoning +seasonings +seasons +seat +seated +seating +seats +seaward +seawards +seaway +seaways +seaweed +seaworthy +sebaceous +sebastian +secede +seceded +secedes +seceding +secession +secessionist +secessionists +second +secondaries +secondary +seconded +secondhand +seconding +seconds +secrecy +secret +secretariat +secretariats +secretaries +secretary +secrete +secreted +secretes +secreting +secretion +secretions +secretive +secretiveness +secrets +secs +sect +sectarian +sectarianism +sectarians +section +sectioned +sectioning +sections +sector +sectors +sects +secure +secured +securer +secures +securest +securing +securities +security +sedan +sedans +sedate +sedated +sedater +sedates +sedatest +sedating +sedation +sedative +sedatives +sedentary +seder +seders +sedge +sediment +sedimentary +sedimentation +sediments +sedition +seditious +sedna +seduce +seduced +seducer +seducers +seduces +seducing +seduction +seductions +seductive +see +seebeck +seed +seeded +seedier +seediest +seediness +seeding +seeds +seedy +seeger +seeing +seeings +seek +seeker +seekers +seeking +seeks +seem +seemed +seeming +seems +seen +seep +seepage +seeped +seeping +seeps +seer +seers +seersucker +sees +seesaw +seesawed +seesawing +seesaws +seethe +seethed +seethes +seething +sega +segment +segmentation +segmented +segmenting +segments +segovia +segre +segregate +segregated +segregates +segregating +segregation +segregationist +segregationists +segue +segued +segueing +segues +segundo +seiko +seine +seismic +seismograph +seismographic +seismographs +seize +seized +seizes +seizing +seizure +seizures +sejong +semantic +semantics +semaphore +semaphored +semaphores +semaphoring +semarang +semen +semester +semesters +semi +semiautomatic +semiautomatics +semiconductor +semiconductors +semiconscious +seminar +seminarian +seminarians +seminaries +seminars +seminary +semiotics +semiprecious +semiprivate +semiramis +semiretired +semis +semite +semites +semitic +semitics +semitone +semitones +semtex +senate +senates +senator +senators +send +sendai +sender +senders +sending +sends +seneca +senecas +senghor +senior +seniority +seniors +senna +sennacherib +sennett +sensation +sensations +sense +sensed +senses +sensing +sensitive +sensitiveness +sensitives +sensitivities +sensitivity +sensor +sensors +sensory +sensuous +sensuousness +sensurround +sent +sentence +sentenced +sentences +sentencing +sententious +sentience +sentient +sentiment +sentiments +sentries +sentry +separate +separated +separates +separating +separation +separations +separatism +separatist +separatists +separator +separators +sephardi +sepia +sepoy +sepsis +septa +september +septembers +septet +septets +septette +septettes +septic +septuagenarian +septuagenarians +septuagint +septuagints +septum +septums +sequence +sequenced +sequencer +sequencers +sequences +sequencing +sequester +sequestered +sequestering +sequesters +sequestration +sequestrations +sequin +sequined +sequins +sequitur +sequoia +sequoias +sequoya +sera +serape +serapes +seraph +seraphic +seraphim +seraphs +serb +serbia +serbian +serbians +serbs +sere +serena +serenade +serenaded +serenades +serenading +serendipitous +serendipity +serene +sereneness +serener +serenest +serengeti +serenity +serer +serest +serf +serfdom +serfs +serge +sergeant +sergeants +sergei +sergio +series +serious +seriousness +sermon +sermons +serous +serpens +serpent +serpentine +serpents +serra +serrano +serrated +serried +serum +serums +servant +servants +serve +served +server +servers +serves +service +serviced +serviceman +servicemen +services +servicewoman +servicewomen +servicing +serviette +serviettes +serving +servings +servitude +servo +servomechanism +servomechanisms +servos +sesame +sesames +session +sessions +set +setback +setbacks +seth +seton +sets +settee +settees +setter +setters +setting +settings +setup +setups +seurat +seuss +seven +sevens +seventeen +seventeens +seventeenth +seventeenths +seventh +sevenths +seventies +seventieth +seventieths +seventy +sever +severance +severances +severe +severed +severer +severest +severing +severity +severn +severs +severus +sew +sewage +seward +sewed +sewer +sewerage +sewers +sewing +sewn +sews +sex +sexagenarian +sexagenarians +sexed +sexes +sexier +sexiest +sexiness +sexing +sexism +sexist +sexists +sexpot +sexpots +sextans +sextant +sextants +sextet +sextets +sextette +sextettes +sexting +sexton +sextons +sexy +seyfert +seymour +shabbier +shabbiest +shabbiness +shabby +shack +shacks +shad +shade +shaded +shades +shadier +shadiest +shadiness +shading +shadings +shadow +shadowbox +shadowboxed +shadowboxes +shadowboxing +shadowed +shadowier +shadowiest +shadowing +shadows +shadowy +shads +shady +shaffer +shaft +shafted +shafting +shafts +shag +shagged +shaggier +shaggiest +shagginess +shagging +shaggy +shags +shah +shahs +shaka +shake +shakedown +shakedowns +shaken +shaker +shakers +shakes +shakespeare +shakespearean +shakeup +shakeups +shakier +shakiest +shakiness +shaking +shaky +sham +shaman +shamans +shame +shamed +shamefaced +shames +shaming +shammed +shammies +shamming +shammy +shampoo +shampooed +shampooing +shampoos +shamrock +shamrocks +shams +shana +shandy +shane +shanghai +shanghaied +shanghaiing +shanghais +shank +shankara +shanks +shanna +shannon +shanties +shantung +shanty +shantytown +shantytowns +shape +shaped +shapes +shaping +shapiro +shard +shards +share +sharecropper +sharecroppers +shared +shares +shari +sharia +shariah +sharif +sharing +shark +sharked +sharking +sharks +sharkskin +sharon +sharp +sharpe +sharped +sharpen +sharpened +sharpener +sharpeners +sharpening +sharpens +sharper +sharpers +sharpest +sharping +sharpness +sharps +sharpshooter +sharpshooters +sharron +shasta +shat +shatter +shattered +shattering +shatterproof +shatters +shaun +shauna +shave +shaved +shaven +shaver +shavers +shaves +shavian +shaving +shavings +shavuot +shaw +shawn +shawna +shawnee +shaykh +shaykhs +shcharansky +she +shea +sheaf +shear +sheared +shearer +shearers +shearing +shears +sheath +sheathe +sheathed +sheathes +sheathing +sheathings +sheaths +sheave +sheaves +sheba +shebang +shebangs +shed +shedding +sheds +sheen +sheena +sheep +sheepdog +sheepdogs +sheepish +sheepishness +sheepskin +sheepskins +sheer +sheered +sheerer +sheerest +sheering +sheers +sheet +sheeting +sheetrock +sheets +sheik +sheikdom +sheikdoms +sheikh +sheikhdom +sheikhdoms +sheikhs +sheiks +shenandoah +shenanigan +shenanigans +shenyang +shepard +shepherd +shepherded +shepherdess +shepherdesses +shepherding +shepherds +sheppard +sheratan +sheraton +sherbert +sherberts +sherbet +sherbets +sherd +sherds +sheree +sheri +sheridan +sheriff +sheriffs +sherman +sherpa +sherri +sherrie +sherries +sherry +sherwood +shes +shevardnadze +shevat +shied +shies +shift +shifted +shiftier +shiftiest +shiftiness +shifting +shifts +shifty +shiitake +shiitakes +shijiazhuang +shikoku +shim +shimmed +shimmer +shimmered +shimmering +shimmers +shimmery +shimmied +shimmies +shimming +shimmy +shimmying +shims +shin +shinbone +shinbones +shindig +shindigs +shine +shined +shiner +shiners +shines +shinier +shiniest +shininess +shining +shinned +shinnied +shinnies +shinning +shinny +shinnying +shins +shinto +shintoism +shintoisms +shintos +shiny +ship +shipboard +shipboards +shipmate +shipmates +shipment +shipments +shipped +shipper +shippers +shipping +ships +shipshape +shipwreck +shipwrecked +shipwrecking +shipwrecks +shipwright +shipwrights +shipyard +shipyards +shiraz +shire +shires +shirk +shirked +shirker +shirkers +shirking +shirks +shirr +shirred +shirring +shirrings +shirrs +shirt +shirted +shirting +shirts +shirtwaist +shirtwaists +shit +shits +shittier +shittiest +shitting +shitty +shiva +shiver +shivered +shivering +shivers +shivery +shock +shocked +shocker +shockers +shocking +shockproof +shocks +shod +shodden +shoddier +shoddiest +shoddiness +shoddy +shoe +shoed +shoehorn +shoehorned +shoehorning +shoehorns +shoeing +shoemaker +shoemakers +shoes +shoeshine +shoeshines +shoestring +shoestrings +shogun +shoguns +shone +shoo +shooed +shooing +shook +shoon +shoos +shoot +shooter +shooters +shooting +shootings +shootout +shootouts +shoots +shop +shopkeeper +shopkeepers +shopped +shopper +shoppers +shopping +shops +shopworn +shore +shored +shores +shoring +shorn +short +shortage +shortages +shortbread +shortcake +shortcakes +shortchange +shortchanged +shortchanges +shortchanging +shortcoming +shortcomings +shortcut +shortcuts +shorted +shorten +shortened +shortening +shortenings +shortens +shorter +shortest +shorthand +shorthorn +shorthorns +shorting +shortish +shortness +shorts +shortsighted +shortsightedness +shortstop +shortstops +shortwave +shortwaves +shoshone +shostakovitch +shot +shotgun +shotgunned +shotgunning +shotguns +shots +shout +shouted +shouting +shouts +shove +shoved +shoves +shoving +show +showbiz +showboat +showboated +showboating +showboats +showcase +showcased +showcases +showcasing +showdown +showdowns +showed +shower +showered +showering +showers +showery +showier +showiest +showiness +showing +showings +showman +showmanship +showmen +shown +showoff +showoffs +showpiece +showpieces +showroom +showrooms +shows +showy +shrank +shred +shredded +shredder +shredders +shredding +shreds +shrek +shreveport +shrew +shrewd +shrewder +shrewdest +shrewdness +shrewish +shrews +shriek +shrieked +shrieking +shrieks +shrift +shrike +shrikes +shrimp +shrimped +shrimping +shrimps +shrine +shriner +shrines +shrink +shrinkage +shrinking +shrinks +shrive +shrived +shriven +shrives +shriving +shropshire +shroud +shrouded +shrouding +shrouds +shrove +shrub +shrubberies +shrubbery +shrubbier +shrubbiest +shrubby +shrubs +shrug +shrugged +shrugging +shrugs +shrunk +shrunken +shtick +shticks +shtik +shtiks +shuck +shucked +shucking +shucks +shuckses +shudder +shuddered +shuddering +shudders +shun +shunned +shunning +shuns +shunt +shunted +shunting +shunts +shush +shushed +shushes +shushing +shut +shutdown +shutdowns +shuteye +shutout +shutouts +shuts +shutter +shutterbug +shutterbugs +shuttered +shuttering +shutters +shutting +shy +shyer +shyest +shying +shyness +shyster +shysters +siam +siamese +sian +siberia +siberian +sic +sick +sickbed +sickbeds +sicked +sicken +sickened +sickening +sickens +sicker +sickest +sicking +sickness +sicknesses +sicks +sics +sid +siddhartha +side +sidearm +sidearms +sidebar +sidebars +sideboard +sideboards +sideburns +sidecar +sidecars +sided +sidekick +sidekicks +sides +sideshow +sideshows +sidestep +sidestepped +sidestepping +sidesteps +sidestroke +sidestroked +sidestrokes +sidestroking +sideswipe +sideswiped +sideswipes +sideswiping +sidetrack +sidetracked +sidetracking +sidetracks +sideways +sidewise +siding +sidings +sidney +siege +sieges +siegfried +siemens +sierpinski +sierra +sierras +siesta +siestas +sieve +sieved +sieves +sieving +sift +sifted +sifter +sifters +sifting +sifts +sigh +sighed +sighing +sighs +sight +sighted +sighting +sightings +sightread +sights +sightseeing +sightseer +sightseers +sigismund +sigma +sigmund +sign +signatories +signatory +signature +signatures +signboard +signboards +signed +signer +signers +signet +signets +significance +significant +signification +significations +signified +signifies +signify +signifying +signing +signings +signpost +signposted +signposting +signposts +signs +sigurd +sihanouk +sikh +sikhism +sikhs +sikkim +sikkimese +sikorsky +sim +simenon +simian +simians +simmer +simmered +simmering +simmers +simmons +simon +simone +simpatico +simper +simpered +simpering +simpers +simpson +simpsons +sims +sin +sinai +sinatra +since +sincere +sincerer +sincerest +sincerity +sindbad +sindhi +sine +sinecure +sinecures +sinew +sinews +sinewy +sing +singapore +singe +singed +singeing +singer +singers +singes +singh +singing +sings +singsong +singsonged +singsonging +singsongs +sinister +sink +sinker +sinkers +sinkiang +sinking +sinks +sinned +sinner +sinners +sinning +sins +sinuous +sinus +sinuses +sinusitis +sioux +sip +siphon +siphoned +siphoning +siphons +sipped +sipping +sips +sir +sire +sired +siren +sirens +sires +siring +sirius +sirocco +siroccos +sirs +sis +sises +sissier +sissies +sissiest +sissy +sister +sisterhood +sisterhoods +sisters +sistine +sisyphean +sisyphus +sit +sitar +sitars +sitcom +sitcoms +site +sited +sites +siting +sits +sitter +sitters +sitting +sittings +situate +situated +situates +situating +situation +situations +siva +sivan +six +sixes +sixpence +sixpences +sixteen +sixteens +sixteenth +sixteenths +sixth +sixths +sixties +sixtieth +sixtieths +sixty +size +sized +sizer +sizes +sizing +skate +skateboard +skateboarded +skateboarder +skateboarders +skateboarding +skateboards +skated +skater +skaters +skates +skating +skeet +skein +skeins +sketch +sketched +sketches +sketchier +sketchiest +sketching +sketchy +skew +skewed +skewer +skewered +skewering +skewers +skewing +skews +ski +skid +skidded +skidding +skids +skied +skier +skiers +skies +skiff +skiffs +skiing +skim +skimmed +skimming +skimp +skimped +skimpier +skimpiest +skimpiness +skimping +skimps +skimpy +skims +skin +skinhead +skinheads +skinned +skinner +skinnier +skinniest +skinniness +skinning +skinny +skins +skintight +skip +skipped +skipper +skippered +skippering +skippers +skipping +skippy +skips +skirmish +skirmished +skirmishes +skirmishing +skirt +skirted +skirting +skirts +skis +skit +skits +skitter +skittered +skittering +skitters +skittish +skivvied +skivvies +skivvy +skivvying +skopje +skunk +skunked +skunking +skunks +sky +skycap +skycaps +skydive +skydived +skydiver +skydivers +skydives +skydiving +skydove +skye +skyed +skying +skyjack +skyjacked +skyjacker +skyjackers +skyjacking +skyjacks +skype +skyrocket +skyrocketed +skyrocketing +skyrockets +skyscraper +skyscrapers +skyward +skywards +skywriter +skywriters +skywriting +smack +smacked +smacker +smackers +smacking +smacks +smarmier +smarmiest +smarmy +smart +smarted +smarten +smartened +smartening +smartens +smarter +smartest +smarting +smartness +smartphone +smartphones +smarts +smartwatch +smartwatches +smash +smashed +smashes +smashing +smattering +smatterings +smear +smeared +smearing +smears +smetana +smidgen +smidgens +smidgeon +smidgeons +smidgin +smidgins +smirch +smirched +smirches +smirching +smirk +smirked +smirking +smirks +smirnoff +smit +smite +smites +smith +smithereens +smithies +smiths +smithson +smithsonian +smithy +smiting +smitten +smock +smocked +smocking +smocks +smog +smoggier +smoggiest +smoggy +smoke +smoked +smokehouse +smokehouses +smoker +smokers +smokes +smokestack +smokestacks +smokey +smokier +smokiest +smokiness +smoking +smoky +smooch +smooched +smooches +smooching +smooth +smoothed +smoother +smoothes +smoothest +smoothie +smoothies +smoothing +smoothness +smooths +smoothy +smote +smother +smothered +smothering +smothers +smudge +smudged +smudges +smudgier +smudgiest +smudging +smudgy +smug +smugger +smuggest +smugness +smut +smuts +smuttier +smuttiest +smutty +snack +snacked +snacking +snacks +snafu +snafus +snag +snagged +snagging +snags +snake +snakebite +snakebites +snaked +snakes +snakier +snakiest +snaking +snaky +snap +snapdragon +snapdragons +snapped +snapper +snappers +snappier +snappiest +snapping +snappish +snappy +snaps +snapshot +snapshots +snare +snared +snares +snaring +snarkier +snarkiest +snarky +snatch +snatched +snatches +snatching +snazzier +snazziest +snazzy +snead +sneak +sneaked +sneaker +sneakers +sneakier +sneakiest +sneaking +sneaks +sneaky +sneer +sneered +sneering +sneers +sneeze +sneezed +sneezes +sneezing +snicker +snickered +snickering +snickers +snide +snider +snidest +sniff +sniffed +sniffing +sniffs +snifter +snifters +snigger +sniggered +sniggering +sniggers +snip +snipe +sniped +sniper +snipers +snipes +sniping +snipped +snippet +snippets +snippier +snippiest +snipping +snippy +snips +snit +snitch +snitched +snitches +snitching +snits +snob +snobbery +snobbier +snobbiest +snobbish +snobbishness +snobby +snobs +snooker +snoop +snooped +snooper +snoopers +snoopier +snoopiest +snooping +snoops +snoopy +snoot +snootier +snootiest +snootiness +snoots +snooty +snooze +snoozed +snoozes +snoozing +snore +snored +snorer +snorers +snores +snoring +snort +snorted +snorting +snorts +snot +snots +snottier +snottiest +snotty +snout +snouts +snow +snowboard +snowboarded +snowboarding +snowboards +snowbound +snowdrift +snowdrifts +snowdrop +snowdrops +snowed +snowier +snowiest +snowing +snowman +snowmen +snows +snowshoe +snowshoeing +snowshoes +snowstorm +snowstorms +snowsuit +snowsuits +snowy +snub +snubbed +snubbing +snubs +snuck +snuff +snuffbox +snuffboxes +snuffed +snuffer +snuffers +snuffing +snuffs +snug +snugged +snugger +snuggest +snugging +snugs +snyder +soak +soaked +soaking +soakings +soaks +soap +soapbox +soapboxes +soaped +soapier +soapiest +soapiness +soaping +soaps +soapstone +soapsuds +soapy +soar +soared +soaring +soars +soave +sob +sobbed +sobbing +sober +sobered +soberer +soberest +sobering +soberness +sobers +sobriety +sobriquet +sobriquets +sobs +soccer +societies +society +socioeconomic +sociopath +sociopaths +sock +socked +socket +sockets +socking +socks +socorro +socrates +socratic +sod +soda +sodas +sodded +sodden +sodding +soddy +sodium +sodom +sodomite +sodomites +sodomy +sods +sofa +sofas +sofia +soft +soften +softened +softener +softeners +softening +softens +softer +softest +softhearted +softie +softies +softness +software +softwood +softwoods +softy +soggier +soggiest +sogginess +soggy +soho +sojourn +sojourned +sojourning +sojourns +sombre +sombrero +sombreros +some +somebodies +somebody +someday +somehow +someone +someones +something +somethings +sometime +sometimes +someway +somewhat +somewhats +somewhere +somme +somoza +son +sonar +sonars +sonata +sonatas +sondheim +sondra +song +songbird +songbirds +songhai +songhua +songs +songster +songsters +songwriter +songwriters +sonia +sonic +sonja +sonnet +sonnets +sonnies +sonny +sonority +sonorous +sons +sontag +sony +sonya +soon +sooner +soonest +soot +sooth +soothe +soothed +soothes +soothing +soothsayer +soothsayers +sootier +sootiest +sooty +sop +sophia +sophie +sophism +sophist +sophisticate +sophisticated +sophisticates +sophisticating +sophistication +sophistries +sophistry +sophists +sophomore +sophomores +sophomoric +soporific +soporifics +sopped +soppier +soppiest +sopping +soppy +soprano +sopranos +sops +sopwith +sorbet +sorbets +sorbonne +sorcerer +sorcerers +sorceress +sorceresses +sorcery +sordid +sordidness +sore +sorehead +soreheads +soreness +sorer +sores +sorest +sorghum +sororities +sorority +sorrier +sorriest +sorrow +sorrowed +sorrowing +sorrows +sorry +sort +sorta +sorted +sorter +sorters +sortie +sortied +sortieing +sorties +sorting +sorts +sos +sosa +sot +soto +sots +sottish +soubriquet +soubriquets +sough +soughed +soughing +soughs +sought +sound +sounded +sounder +soundest +sounding +soundings +soundness +soundproof +soundproofed +soundproofing +soundproofs +sounds +soundtrack +soundtracks +soup +souped +souphanouvong +soupier +soupiest +souping +soups +soupy +sour +source +sourced +sourceforge +sources +sourcing +sourdough +sourdoughs +soured +sourer +sourest +souring +sourness +sourpuss +sourpusses +sours +sousa +souse +soused +souses +sousing +south +southampton +southbound +southeast +southeastern +southeasts +southeastward +southern +southerner +southerners +southernmost +southerns +southey +southpaw +southpaws +souths +southward +southwards +southwest +southwester +southwestern +southwesters +southwests +southwestward +souvenir +souvenirs +sovereign +sovereigns +sovereignty +soviet +soviets +sow +sowed +sower +sowers +soweto +sowing +sown +sows +sox +soy +soya +soybean +soybeans +soyinka +soyuz +spa +spaatz +space +spacecraft +spacecrafts +spaced +spaceman +spacemen +spaces +spaceship +spaceships +spacesuit +spacesuits +spacey +spacier +spaciest +spacing +spacious +spaciousness +spacy +spade +spaded +spades +spadework +spading +spaghetti +spahn +spain +spake +spam +spammed +spammer +spammers +spamming +spams +span +spandex +spaniard +spaniards +spanish +spank +spanked +spanking +spankings +spanks +spanned +spanner +spanners +spanning +spans +spar +spare +spared +spareness +sparer +spareribs +spares +sparest +sparing +spark +sparked +sparking +sparks +sparred +sparring +sparrow +sparrows +spars +sparse +sparseness +sparser +sparsest +sparsity +sparta +spartacus +spartan +spartans +spas +spasm +spasmodic +spasms +spastic +spastics +spat +spate +spates +spats +spatted +spatter +spattered +spattering +spatters +spatting +spawn +spawned +spawning +spawns +spay +spayed +spaying +spays +speak +speakeasies +speakeasy +speaker +speakers +speaking +speaks +spear +speared +spearhead +spearheaded +spearheading +spearheads +spearing +spearmint +spears +spec +specced +speccing +specie +species +specific +specification +specifications +specifics +specified +specifier +specifiers +specifies +specify +specifying +specimen +specimens +specious +speck +specked +specking +specks +specs +spectator +spectators +spectra +spectroscope +spectroscopes +spectroscopic +spectroscopy +spectrum +spectrums +sped +speech +speeches +speed +speedboat +speedboats +speeded +speeder +speeders +speedier +speediest +speeding +speedometer +speedometers +speeds +speedster +speedsters +speedup +speedups +speedway +speedways +speedy +speer +spence +spencer +spencerian +spend +spender +spenders +spending +spends +spendthrift +spendthrifts +spenser +spenserian +spent +sperm +spermatozoa +spermatozoon +spermicide +spermicides +sperms +sperry +spew +spewed +spewing +spews +sphere +spheres +spheroid +spheroids +sphincter +sphincters +sphinges +sphinx +sphinxes +spica +spice +spiced +spices +spicier +spiciest +spiciness +spicing +spicy +spider +spiders +spidery +spied +spies +spiffier +spiffiest +spiffy +spigot +spigots +spike +spiked +spikes +spikier +spikiest +spiking +spiky +spin +spinach +spine +spines +spinet +spinets +spinier +spiniest +spinnaker +spinnakers +spinner +spinners +spinning +spinoff +spinoffs +spinoza +spins +spinster +spinsterhood +spinsters +spinx +spiny +spiraea +spiraeas +spire +spires +spirit +spirited +spiriting +spirits +spirituous +spiro +spirograph +spit +spite +spited +spites +spitfire +spitfires +spiting +spits +spitsbergen +spitted +spitting +spittoon +spittoons +spitz +spock +spokane +spoke +spoken +spokes +spokesman +spokesmen +spokesperson +spokespersons +spokeswoman +spokeswomen +sponge +sponged +sponger +spongers +sponges +spongier +spongiest +sponging +spongy +sponsor +sponsored +sponsoring +sponsors +sponsorship +spontaneity +spontaneous +spoof +spoofed +spoofing +spoofs +spook +spooked +spookier +spookiest +spooking +spooks +spooky +spoon +spooned +spoonerism +spoonerisms +spooning +spoons +spoor +spoored +spooring +spoors +sporadic +spore +spored +spores +sporing +sporran +sport +sported +sportier +sportiest +sporting +sportive +sports +sportscast +sportscaster +sportscasters +sportscasting +sportscasts +sportsman +sportsmanship +sportsmen +sportswear +sportswoman +sportswomen +sporty +spot +spots +spotted +spotter +spotters +spottier +spottiest +spottiness +spotting +spotty +spouse +spouses +spout +spouted +spouting +spouts +sprain +sprained +spraining +sprains +sprang +sprat +sprats +spray +sprayed +sprayer +sprayers +spraying +sprays +spread +spreader +spreaders +spreading +spreads +spreadsheet +spreadsheets +spree +spreed +spreeing +sprees +sprier +spriest +sprig +sprigs +spring +springboard +springboards +springier +springiest +springiness +springing +springs +springsteen +springtime +springy +sprint +sprinted +sprinter +sprinters +sprinting +sprints +sprite +sprites +spritz +spritzed +spritzes +spritzing +sprocket +sprockets +sprout +sprouted +sprouting +sprouts +spruce +spruced +sprucer +spruces +sprucest +sprucing +sprung +spry +spryer +spryest +spryness +spud +spuds +spume +spumed +spumes +spuming +spumone +spumoni +spun +spunk +spunkier +spunkiest +spunky +spur +spurious +spuriousness +spurn +spurned +spurning +spurns +spurred +spurring +spurs +spurt +spurted +spurting +spurts +sputnik +sputter +sputtered +sputtering +sputters +sputum +spy +spying +spyware +squab +squabs +squad +squadron +squadrons +squads +squander +squandered +squandering +squanders +squanto +square +squared +squareness +squarer +squares +squarest +squaring +squash +squashed +squashes +squashier +squashiest +squashing +squashy +squat +squats +squatted +squatter +squatters +squattest +squatting +squaw +squawk +squawked +squawking +squawks +squaws +squeak +squeaked +squeakier +squeakiest +squeaking +squeaks +squeaky +squeamish +squeamishness +squeegee +squeegeed +squeegeeing +squeegees +squeeze +squeezed +squeezer +squeezers +squeezes +squeezing +squibb +squid +squids +squint +squinted +squinter +squintest +squinting +squints +squire +squired +squires +squiring +squirm +squirmed +squirmier +squirmiest +squirming +squirms +squirmy +squirt +squirted +squirting +squirts +squish +squished +squishes +squishier +squishiest +squishing +squishy +srinagar +sriracha +srivijaya +stab +stabbed +stabbing +stabbings +stabs +staccati +staccato +staccatos +stacey +staci +stacie +stack +stacked +stacking +stacks +stacy +stadia +stadium +stadiums +staff +staffed +staffer +staffers +staffing +stafford +staffs +stag +stage +stagecoach +stagecoaches +staged +stagehand +stagehands +stages +stagger +staggered +staggering +staggers +staging +stagings +stagnant +stagnate +stagnated +stagnates +stagnating +stagnation +stags +staid +staider +staidest +stain +stained +staining +stains +stair +staircase +staircases +stairmaster +stairs +stairway +stairways +stake +staked +stakeout +stakeouts +stakes +staking +stamen +stamens +stamford +stamina +stammer +stammered +stammerer +stammerers +stammering +stammers +stamp +stamped +stampede +stampeded +stampedes +stampeding +stamping +stamps +stan +stance +stances +stanch +stanched +stancher +stanches +stanchest +stanching +stanchion +stanchions +stand +standard +standards +standby +standbys +standing +standings +standish +standoff +standoffish +standoffs +standout +standouts +standpoint +standpoints +stands +stanford +stank +stanton +stanza +stanzas +staph +star +starboard +starbucks +starch +starched +starches +starchier +starchiest +starching +starchy +stardom +stare +stared +stares +starfish +starfishes +stargazer +stargazers +staring +stark +starker +starkest +starkey +starkness +starr +starred +starrier +starriest +starring +starry +stars +start +started +starter +starters +starting +starts +startup +startups +starvation +starve +starved +starves +starving +starvings +stash +stashed +stashes +stashing +state +stated +statehood +statehouse +statehouses +statement +statements +staten +stater +stateroom +staterooms +states +stateside +statesman +statesmanship +statesmen +statewide +static +stating +station +stationary +stationed +stationer +stationers +stationery +stationing +stations +statistic +statistician +statisticians +statistics +stats +statuary +statue +statues +statuesque +statuette +statuettes +stature +statures +status +statuses +statute +statutes +statutory +staubach +staunch +staunched +stauncher +staunches +staunchest +staunching +stave +staved +staves +staving +stay +stayed +staying +stays +stead +steadfast +steadfastness +steadicam +steadied +steadier +steadies +steadiest +steadiness +steads +steady +steadying +steak +steakhouse +steakhouses +steaks +steam +steamboat +steamboats +steamed +steamer +steamers +steamier +steamiest +steaming +steams +steamship +steamships +steamy +steed +steeds +steep +steeped +steeper +steepest +steeping +steepness +steeps +steer +steerage +steered +steering +steers +stefan +stefanie +stein +steinbeck +steinem +steiner +steinmetz +steins +steinway +stem +stemmed +stemming +stems +stench +stenches +stenographer +stenographers +stenographic +stenography +stent +stentorian +stents +step +stepbrother +stepbrothers +stepdad +stepdads +stepdaughter +stepdaughters +stepfather +stepfathers +stephan +stephanie +stephen +stephens +stephenson +stepmom +stepmoms +stepmother +stepmothers +stepparent +stepparents +steppe +stepped +steppes +stepping +steppingstone +steppingstones +steps +stepsister +stepsisters +stepson +stepsons +stereo +stereophonic +stereos +stereoscope +stereoscopes +stereotype +stereotyped +stereotypes +stereotyping +stern +sterna +sterne +sterner +sternest +sternness +sterno +sterns +sternum +sternums +steroid +steroids +stethoscope +stethoscopes +stetson +steuben +steve +stevedore +stevedores +steven +stevens +stevenson +stevie +stew +steward +stewarded +stewardess +stewardesses +stewarding +stewards +stewardship +stewart +stewed +stewing +stews +stick +sticker +stickers +stickier +stickies +stickiest +stickiness +sticking +stickpin +stickpins +sticks +stickup +stickups +sticky +sties +stiff +stiffed +stiffen +stiffened +stiffener +stiffeners +stiffening +stiffens +stiffer +stiffest +stiffing +stiffness +stiffs +stigma +stigmas +stigmata +stimson +stine +sting +stinger +stingers +stingier +stingiest +stinginess +stinging +stingray +stingrays +stings +stingy +stink +stinker +stinkers +stinking +stinks +stint +stinted +stinting +stints +stipend +stipends +stir +stirred +stirrer +stirrers +stirring +stirrings +stirrup +stirrups +stirs +stitch +stitched +stitches +stitching +stoat +stoats +stochastic +stock +stockade +stockaded +stockades +stockading +stockbroker +stockbrokers +stocked +stockhausen +stockier +stockiest +stockiness +stocking +stockings +stockroom +stockrooms +stocks +stockton +stocky +stockyard +stockyards +stodgier +stodgiest +stodginess +stodgy +stoic +stoicism +stoics +stoke +stoked +stoker +stokers +stokes +stoking +stomach +stomachache +stomachaches +stomached +stomaching +stomachs +stomp +stomped +stomping +stomps +stone +stoned +stonehenge +stoner +stoners +stones +stoneware +stonework +stoney +stonier +stoniest +stoning +stony +stood +stooge +stooges +stoop +stooped +stooping +stoops +stop +stopcock +stopcocks +stopgap +stopgaps +stopover +stopovers +stoppage +stoppages +stoppard +stopped +stopper +stoppered +stoppering +stoppers +stopping +stops +stopwatch +stopwatches +storage +store +stored +storefront +storefronts +storehouse +storehouses +storekeeper +storekeepers +storeroom +storerooms +stores +storey +storeys +storied +stories +storing +stork +storks +storm +stormed +stormier +stormiest +storminess +storming +storms +stormy +story +storybook +storybooks +stout +stouter +stoutest +stoutness +stove +stovepipe +stovepipes +stoves +stow +stowaway +stowaways +stowe +stowed +stowing +stows +strabo +stradivarius +strafe +strafed +strafes +strafing +straight +straightaway +straightaways +straightedge +straightedges +straighten +straightened +straightening +straightens +straighter +straightest +straightforward +straightjacket +straightjacketed +straightjacketing +straightjackets +straightness +straights +strain +strained +strainer +strainers +straining +strains +strait +straiten +straitened +straitening +straitens +straitjacket +straitjacketed +straitjacketing +straitjackets +straits +strand +stranded +stranding +strands +strange +strangeness +stranger +strangers +strangest +strap +strapped +strapping +straps +strasbourg +strata +stratagem +stratagems +strategic +strategies +strategist +strategists +strategy +stratification +stratified +stratifies +stratify +stratifying +stratosphere +stratospheres +stratum +stratums +strauss +stravinsky +straw +strawberries +strawberry +strawed +strawing +straws +stray +strayed +straying +strays +streak +streaked +streakier +streakiest +streaking +streaks +streaky +stream +streamed +streamer +streamers +streaming +streams +street +streetcar +streetcars +streets +streetwise +streisand +strength +strengthen +strengthened +strengthening +strengthens +strengths +strenuous +strenuousness +strep +streptococci +streptococcus +streptomycin +stress +stressed +stresses +stressing +stretch +stretched +stretcher +stretchers +stretches +stretchier +stretchiest +stretching +stretchy +strew +strewed +strewing +strewn +strews +striated +stricken +strict +stricter +strictest +strictness +stricture +strictures +stridden +stride +strident +strides +striding +strife +strike +strikeout +strikeouts +striker +strikers +strikes +striking +strikings +strindberg +string +stringed +stringency +stringent +stringer +stringers +stringier +stringiest +stringing +strings +stringy +strip +stripe +striped +stripes +striping +stripped +stripper +strippers +stripping +strips +stript +striptease +stripteased +stripteases +stripteasing +strive +strived +striven +strives +striving +strobe +strobes +strode +stroke +stroked +strokes +stroking +strong +strongbox +strongboxes +stronger +strongest +strontium +strop +strophe +strophes +stropped +stropping +strops +strove +struck +structure +structured +structures +structuring +strum +strummed +strumming +strumpet +strumpets +strums +strung +strut +struts +strutted +strutting +strychnine +stu +stuart +stuarts +stub +stubbed +stubbier +stubbiest +stubbing +stubborn +stubborner +stubbornest +stubbornness +stubby +stubs +stucco +stuccoed +stuccoes +stuccoing +stuccos +stuck +stud +studded +studding +studebaker +student +students +studentship +studentships +studied +studies +studio +studios +studious +studs +study +studying +stuff +stuffed +stuffier +stuffiest +stuffiness +stuffing +stuffings +stuffs +stuffy +stump +stumped +stumpier +stumpiest +stumping +stumps +stumpy +stun +stung +stunk +stunned +stunning +stuns +stunt +stunted +stunting +stunts +stupefaction +stupefied +stupefies +stupefy +stupefying +stupendous +stupid +stupider +stupidest +stupidities +stupidity +stupids +stupor +stupors +sturdier +sturdiest +sturdiness +sturdy +sturgeon +sturgeons +stutter +stuttered +stutterer +stutterers +stuttering +stutters +stuttgart +stuyvesant +sty +stye +styes +stygian +stymie +stymied +stymieing +stymies +stymying +styptic +styptics +styrofoam +styrofoams +styron +styx +suarez +suave +suaver +suavest +suavity +sub +subaru +subatomic +subbasement +subbasements +subbed +subbing +subcommittee +subcommittees +subcompact +subcompacts +subconscious +subcontinent +subcontinents +subcontract +subcontracted +subcontracting +subcontractor +subcontractors +subcontracts +subcutaneous +subdivide +subdivided +subdivides +subdividing +subdivision +subdivisions +subdue +subdued +subdues +subduing +subgroup +subgroups +subhead +subheading +subheadings +subheads +subhuman +subhumans +subject +subjected +subjecting +subjection +subjective +subjectivity +subjects +subjoin +subjoined +subjoining +subjoins +subjugate +subjugated +subjugates +subjugating +subjugation +subjunctive +subjunctives +submarine +submarines +submerge +submerged +submergence +submerges +submerging +submerse +submersed +submerses +submersing +submersion +submission +submissions +submissive +submit +submits +submitted +submitter +submitting +subordinate +subordinated +subordinates +subordinating +subordination +suborn +subornation +suborned +suborning +suborns +subpoena +subpoenaed +subpoenaing +subpoenas +subprime +subprogram +subprograms +subroutine +subroutines +subs +subscribe +subscribed +subscriber +subscribers +subscribes +subscribing +subscript +subscription +subscriptions +subscripts +subsection +subsections +subsequent +subservience +subservient +subset +subsets +subside +subsided +subsidence +subsides +subsidiaries +subsidiary +subsidies +subsiding +subsidy +subsist +subsisted +subsistence +subsisting +subsists +subsonic +subspace +substance +substances +substandard +substantiate +substantiated +substantiates +substantiating +substantiation +substantiations +substantive +substantives +substation +substations +substitute +substituted +substitutes +substituting +substitution +substitutions +substrata +substrate +substratum +substratums +substructure +substructures +subsume +subsumed +subsumes +subsuming +subsystem +subsystems +subteen +subteens +subterfuge +subterfuges +subterranean +subtract +subtracted +subtracting +subtraction +subtractions +subtracts +subtrahend +subtrahends +suburb +suburban +suburbanite +suburbanites +suburbans +suburbia +suburbs +subversion +subversive +subversives +subvert +subverted +subverting +subverts +subway +subways +succeed +succeeded +succeeding +succeeds +success +successes +succession +successions +successive +successor +successors +succinct +succincter +succinctest +succinctness +succotash +succumb +succumbed +succumbing +succumbs +such +suck +sucked +sucker +suckered +suckering +suckers +sucking +sucks +sucre +sucrets +sucrose +suction +suctioned +suctioning +suctions +sudan +sudanese +sudden +suddenness +sudoku +sudra +suds +sudsier +sudsiest +sudsy +sue +sued +suede +sues +suet +suetonius +suez +suffer +sufferance +suffered +sufferer +sufferers +suffering +sufferings +suffers +suffice +sufficed +suffices +sufficiency +sufficient +sufficing +suffix +suffixed +suffixes +suffixing +suffocate +suffocated +suffocates +suffocating +suffocation +suffragan +suffragans +suffrage +suffragette +suffragettes +suffragist +suffragists +suffuse +suffused +suffuses +suffusing +suffusion +sufi +sufism +sugar +sugarcane +sugarcoat +sugarcoated +sugarcoating +sugarcoats +sugared +sugarier +sugariest +sugaring +sugars +sugary +suggest +suggested +suggester +suggesting +suggestion +suggestions +suggestive +suggests +suharto +sui +suicide +suicides +suing +suit +suitcase +suitcases +suite +suited +suites +suiting +suitor +suitors +suits +sukarno +sukiyaki +sukkot +sukkoth +sukkoths +sum +sumac +sumach +sumatra +sumeria +sumerian +summaries +summary +summation +summations +summed +summer +summered +summerhouse +summerhouses +summering +summers +summertime +summery +summing +summit +summitry +summits +summon +summoned +summoner +summoners +summoning +summons +summonsed +summonses +summonsing +sumner +sumo +sump +sumps +sumptuous +sums +sumter +sun +sunbathe +sunbathed +sunbather +sunbathers +sunbathes +sunbathing +sunbeam +sunbeams +sunbonnet +sunbonnets +sunburn +sunburned +sunburning +sunburns +sunburnt +sundae +sundaes +sundanese +sundas +sunday +sundays +sunder +sundered +sundering +sunders +sundown +sundowns +sundries +sundry +sunfish +sunfishes +sung +sunk +sunken +sunkist +sunned +sunni +sunnier +sunniest +sunning +sunny +sunrise +sunrises +sunroof +sunroofs +suns +sunscreen +sunscreens +sunset +sunsets +sunshine +sunspot +sunspots +sunstroke +suntan +suntanned +suntanning +suntans +sunup +sup +super +superabundance +superabundances +superabundant +superannuate +superannuated +superannuates +superannuating +superb +superber +superbest +supercharge +supercharged +supercharger +superchargers +supercharges +supercharging +supercomputer +supercomputers +superconductivity +superconductor +superconductors +superego +superegos +superfund +superhighway +superhighways +superhuman +superimpose +superimposed +superimposes +superimposing +superintend +superintended +superintendence +superintendency +superintendent +superintendents +superintending +superintends +superior +superiority +superiors +superman +supermarket +supermarkets +supermen +supernova +supernovae +supernovas +supernumeraries +supernumerary +superpower +superpowers +supers +superscript +superscripts +supersede +superseded +supersedes +superseding +supersize +supersized +supersizes +supersizing +supersonic +superstar +superstars +superstition +superstitions +superstitious +superstructure +superstructures +supertanker +supertankers +supervene +supervened +supervenes +supervening +supervise +supervised +supervises +supervising +supervision +supervisions +supervisor +supervisors +supervisory +supine +supped +supper +suppers +supping +support +supported +supporter +supporters +supporting +supportive +supports +suppose +supposed +supposes +supposing +supposition +suppositions +suppositories +suppository +suppress +suppressed +suppresses +suppressing +suppression +suppurate +suppurated +suppurates +suppurating +suppuration +supremacist +supremacists +supremacy +supreme +sups +surabaya +surat +surcease +surceased +surceases +surceasing +surcharge +surcharged +surcharges +surcharging +sure +surefire +surefooted +sureness +surer +surest +sureties +surety +surf +surface +surfaced +surfaces +surfacing +surfboard +surfboarded +surfboarding +surfboards +surfed +surfeit +surfeited +surfeiting +surfeits +surfer +surfers +surfing +surfs +surge +surged +surgeon +surgeons +surgeries +surgery +surges +surging +surinam +suriname +surmise +surmised +surmises +surmising +surmount +surmounted +surmounting +surmounts +surname +surnames +surpass +surpassed +surpasses +surpassing +surprise +surprised +surprises +surprising +surprisings +surrender +surrendered +surrendering +surrenders +surreptitious +surrey +surreys +surrogate +surrogates +surround +surrounded +surrounding +surroundings +surrounds +surtax +surtaxed +surtaxes +surtaxing +survey +surveyed +surveying +surveyor +surveyors +surveys +survive +survived +survives +surviving +survivor +survivors +surya +susan +susana +susanna +susanne +suse +sushi +susie +suspect +suspected +suspecting +suspects +suspend +suspended +suspender +suspenders +suspending +suspends +suspense +suspension +suspensions +suspicion +suspicions +suspicious +susquehanna +sussex +sustain +sustained +sustaining +sustains +sustenance +sutton +suture +sutured +sutures +suturing +suva +suwanee +suzanne +suzette +suzhou +suzuki +suzy +sven +svn +swab +swabbed +swabbing +swabs +swag +swagged +swagger +swaggered +swaggerer +swaggering +swaggers +swagging +swags +swain +swains +swam +swami +swamis +swammerdam +swamp +swamped +swampier +swampiest +swamping +swamps +swampy +swan +swanee +swank +swanked +swanker +swankest +swankier +swankiest +swanking +swanks +swanky +swans +swansea +swanson +swap +swapped +swapping +swaps +sward +swards +swarm +swarmed +swarming +swarms +swarthier +swarthiest +swarthy +swash +swashed +swashes +swashing +swastika +swastikas +swat +swatch +swatches +swath +swathe +swathed +swathes +swathing +swaths +swats +swatted +swatter +swattered +swattering +swatters +swatting +sway +swaybacked +swayed +swaying +sways +swazi +swear +swearer +swearers +swearing +swears +swearword +swearwords +sweat +sweater +sweaters +sweatier +sweatiest +sweating +sweatpants +sweats +sweatshirt +sweatshirts +sweatshop +sweatshops +sweaty +swede +sweden +swedenborg +swedes +swedish +sweeney +sweep +sweeper +sweepers +sweeping +sweepings +sweeps +sweepstake +sweepstakes +sweet +sweetbread +sweetbreads +sweetbriar +sweetbriars +sweetbrier +sweetbriers +sweeten +sweetened +sweetener +sweeteners +sweetening +sweetens +sweeter +sweetest +sweetheart +sweethearts +sweetie +sweeties +sweetish +sweetmeat +sweetmeats +sweetness +sweets +swept +swerve +swerved +swerves +swerving +swift +swifter +swiftest +swiftness +swifts +swig +swigged +swigging +swigs +swim +swimmer +swimmers +swimming +swims +swimsuit +swimsuits +swinburne +swine +swines +swing +swinger +swingers +swinging +swings +swinish +swipe +swiped +swipes +swiping +swish +swished +swisher +swishes +swishest +swishing +swiss +swissair +swisses +switch +switchback +switchbacks +switchboard +switchboards +switched +switcher +switches +switching +swoon +swooned +swooning +swoons +swoop +swooped +swooping +swoops +swop +swopped +swopping +swops +sword +swordfish +swordfishes +swords +swordsman +swordsmen +swore +sworn +swum +swung +sybarite +sybarites +sybaritic +sycamore +sycamores +sycophant +sycophantic +sycophants +sydney +sykes +symbioses +symbiosis +symbiotic +symmetric +symmetries +symmetry +sympathetic +sympathies +sympathy +symphonic +symphonies +symphony +symposia +symposium +symposiums +symptom +symptomatic +symptoms +synagog +synagogs +synagogue +synagogues +synapse +synapses +sync +synced +synch +synched +synches +synching +synchronous +synchs +syncing +syncopate +syncopated +syncopates +syncopating +syncopation +syncs +syndicate +syndicated +syndicates +syndicating +syndication +syndrome +syndromes +synergism +synergistic +synergy +synge +synod +synods +synonym +synonymous +synonyms +synopses +synopsis +syntactic +syntax +syntheses +synthesis +synthesizer +synthesizers +synthetic +synthetics +syphon +syphoned +syphoning +syphons +syracuse +syria +syriac +syrian +syrians +syringe +syringed +syringes +syringing +syrup +syrups +syrupy +system +systematic +systemic +systemics +systems +szechuan +szymborska +tab +tabasco +tabatha +tabbed +tabbies +tabbing +tabby +tabitha +taboo +tabooed +tabooing +taboos +tabriz +tabs +tabu +tabued +tabuing +tabus +tachometer +tachometers +tacit +tacitness +taciturn +taciturnity +tacitus +tack +tacked +tackier +tackiest +tackiness +tacking +tacks +tacky +taco +tacoma +tacos +tact +tactic +tactician +tacticians +tactics +tad +tads +tadzhik +tadzhikistan +taegu +taejon +taffeta +taffies +taffy +taft +tag +tagged +tagging +tagore +tags +tagus +tahiti +tahitian +tahitians +tahoe +taichung +taine +taint +tainted +tainting +taints +taipei +taiping +taiwan +taiwanese +taiyuan +tajikistan +take +takeaways +taken +takeoff +takeoffs +takeout +takeouts +takeover +takeovers +taker +takers +takes +taking +takings +tam +tamara +tamarind +tamarinds +tambourine +tambourines +tame +tamed +tameka +tameness +tamer +tamera +tamers +tames +tamest +tami +tamika +taming +tammany +tammi +tammie +tammuz +tammy +tamp +tampa +tampax +tamped +tamper +tampered +tampering +tampers +tamping +tampon +tampons +tamps +tamra +tams +tamworth +tan +tanager +tanagers +tancred +tandem +tandems +taney +tang +tanganyika +tangent +tangents +tangerine +tangerines +tangier +tangiers +tangiest +tango +tangoed +tangoing +tangos +tangs +tangshan +tangy +tania +tanisha +tank +tankard +tankards +tanked +tanker +tankers +tanking +tanks +tanned +tanner +tanneries +tanners +tannery +tannest +tannin +tanning +tans +tansy +tantamount +tantrum +tantrums +tanya +tanzania +tanzanian +tanzanians +tao +taoism +taoisms +taoist +taoists +tap +tape +taped +taper +tapered +tapering +tapers +tapes +tapestries +tapestry +tapeworm +tapeworms +taping +tapioca +tapir +tapirs +tapped +tapping +taproom +taprooms +taproot +taproots +taps +tar +tara +tarantino +tarawa +tarazed +tardier +tardiest +tardiness +tardy +tare +tared +tares +target +targeted +targeting +targets +tariff +tariffs +tarim +taring +tarkenton +tarkington +tarmac +tarmacked +tarmacking +tarmacs +tarnish +tarnished +tarnishes +tarnishing +taro +taros +tarot +tarots +tarp +tarpon +tarpons +tarps +tarragon +tarragons +tarred +tarried +tarrier +tarries +tarriest +tarring +tarry +tarrying +tars +tart +tartan +tartans +tartar +tartars +tartary +tarter +tartest +tartness +tarts +tartuffe +tarzan +taser +tasered +tasering +tasers +tasha +tashkent +task +tasked +tasking +taskmaster +taskmasters +tasks +tasman +tasmania +tasmanian +tass +taste +tasted +taster +tasters +tastes +tastier +tastiest +tastiness +tasting +tasty +tat +tatar +tatars +tate +tats +tatted +tatter +tattered +tattering +tatters +tatting +tattoo +tattooed +tattooing +tattooist +tattooists +tattoos +tatty +tatum +taught +taunt +taunted +taunting +taunts +taupe +taurus +tauruses +taut +tauter +tautest +tautness +tavern +taverns +tawdrier +tawdriest +tawdriness +tawdry +tawney +tawnier +tawniest +tawny +tax +taxation +taxed +taxes +taxi +taxicab +taxicabs +taxidermist +taxidermists +taxidermy +taxied +taxies +taxiing +taxing +taxis +taxonomic +taxonomies +taxonomy +taxpayer +taxpayers +taxying +tchaikovsky +tea +teabag +teach +teacher +teachers +teaches +teaching +teachings +teacup +teacups +teak +teaks +team +teamed +teaming +teammate +teammates +teams +teamster +teamsters +teamwork +teapot +teapots +tear +teardrop +teardrops +teared +teargas +teargases +teargassed +teargasses +teargassing +tearier +teariest +tearing +tearjerker +tearjerkers +tearoom +tearooms +tears +teary +teas +tease +teased +teaser +teasers +teases +teasing +teaspoon +teaspoons +teat +teatime +teats +technician +technicians +technique +techniques +techno +technocracy +technocrat +technocrats +techs +tectonics +tecumseh +ted +teddy +tedious +tediousness +tedium +tee +teed +teeing +teem +teemed +teeming +teems +teen +teenage +teenaged +teenager +teenagers +teenier +teeniest +teens +teensier +teensiest +teensy +teeny +teepee +teepees +tees +teeter +teetered +teetering +teeters +teeth +teethe +teethed +teethes +teething +teheran +tehran +temerity +temp +tempe +temped +temper +tempera +temperament +temperaments +temperance +temperas +temperate +temperature +temperatures +tempered +tempering +tempers +tempest +tempests +tempestuous +tempestuousness +tempi +temping +tempo +temporaries +temporary +tempos +temps +tempt +temptation +temptations +tempted +tempter +tempters +tempting +temptress +temptresses +tempts +tempura +ten +tenacious +tenacity +tenancies +tenancy +tenant +tenanted +tenanting +tenants +tend +tended +tendencies +tendency +tendentious +tendentiousness +tender +tendered +tenderer +tenderest +tenderfeet +tenderfoot +tenderfoots +tenderhearted +tendering +tenderness +tenders +tending +tendinitis +tendon +tendonitis +tendons +tends +tenement +tenements +tenet +tenets +tennessee +tennis +tennyson +tenon +tenoned +tenoning +tenons +tenor +tenors +tenpin +tenpins +tens +tense +tensed +tenseness +tenser +tenses +tensest +tensing +tension +tensions +tensor +tensors +tent +tentative +tented +tenth +tenths +tenting +tents +tenuous +tenuousness +tenure +tenured +tenures +tenuring +teotihuacan +tepee +tepees +tepid +terabit +terabits +terabyte +terabytes +tercentenaries +tercentenary +terence +teresa +tereshkova +teri +term +termagant +termagants +termed +terminate +terminated +terminates +terminating +termination +terminations +terminator +terminators +terming +termini +terminus +terminuses +termite +termites +terms +tern +terns +terpsichore +terr +terra +terrace +terraced +terraces +terracing +terrain +terrains +terran +terrance +terrapin +terrapins +terraria +terrarium +terrariums +terrence +terri +terrie +terrier +terriers +terrific +terrified +terrifies +terrify +terrifying +territories +territory +terror +terrorism +terrorist +terrorists +terrors +terry +terse +terseness +terser +tersest +tertiary +tess +tessa +tessie +test +testament +testamentary +testaments +testate +testates +tested +tester +testers +testes +testier +testiest +testified +testifies +testify +testifying +testimonies +testimony +testiness +testing +testis +testosterone +tests +testy +tet +tetanus +tether +tethered +tethering +tethers +tethys +tetons +tetrahedra +tetrahedron +tetrahedrons +teutonic +tevet +texaco +texan +texans +texas +text +textbook +textbooks +texted +texting +texts +texture +textured +textures +texturing +thackeray +thad +thaddeus +thai +thais +thames +than +thanh +thank +thanked +thanking +thanks +thanksgiving +thanksgivings +thant +thar +tharp +that +thatch +thatched +thatcher +thatches +thatching +thaw +thawed +thawing +thaws +the +thea +theatre +theatres +thebes +thee +thees +theft +thefts +their +theirs +theism +theist +theistic +theists +them +thematic +theme +themes +then +thence +thenceforth +thenceforward +theocracies +theocracy +theocratic +theocritus +theodora +theodore +theodoric +theodosius +theorem +theorems +theoretic +theoretician +theoreticians +theories +theorist +theorists +theory +theosophy +therapeutic +therapeutics +therapies +therapist +therapists +therapy +theravada +there +thereabout +thereabouts +thereafter +thereby +therefore +therefrom +therein +thereof +thereon +theresa +therese +thereto +thereupon +therewith +thermionic +thermodynamic +thermodynamics +thermometer +thermometers +thermos +thermoses +thermostat +thermostatic +thermostats +theron +thesauri +thesaurus +thesauruses +these +theses +theseus +thesis +thespian +thespians +thespis +theta +they +thiamin +thiamine +thick +thicken +thickened +thickener +thickeners +thickening +thickenings +thickens +thicker +thickest +thicket +thickets +thickness +thicknesses +thickset +thief +thieu +thieve +thieved +thievery +thieves +thieving +thievish +thigh +thighbone +thighbones +thighs +thimbu +thin +thine +thing +thingamajig +thingamajigs +things +think +thinker +thinkers +thinking +thinks +thinned +thinner +thinners +thinness +thinnest +thinning +thins +third +thirds +thirst +thirsted +thirstier +thirstiest +thirsting +thirsts +thirsty +thirteen +thirteens +thirteenth +thirteenths +thirties +thirtieth +thirtieths +thirty +this +thither +tho +thomas +thomism +thomistic +thompson +thomson +thong +thongs +thor +thoraces +thoracic +thorax +thoraxes +thorazine +thoreau +thorium +thorn +thornier +thorniest +thorns +thornton +thorny +thorough +thoroughbred +thoroughbreds +thorougher +thoroughest +thoroughfare +thoroughfares +thoroughgoing +thoroughness +thorpe +those +thoth +thou +though +thought +thoughts +thous +thousand +thousands +thousandth +thousandths +thrace +thracian +thrash +thrashed +thrasher +thrashers +thrashes +thrashing +thrashings +thread +threadbare +threaded +threading +threads +threat +threaten +threatened +threatening +threatens +threats +three +threes +threescore +threescores +threesome +threesomes +threnodies +threnody +thresh +threshed +thresher +threshers +threshes +threshing +threw +thrice +thrift +thriftier +thriftiest +thriftiness +thrifts +thrifty +thrive +thrived +thriven +thrives +thriving +throat +throatier +throatiest +throatiness +throats +throaty +throb +throbbed +throbbing +throbs +throe +throes +thromboses +thrombosis +throne +thrones +throng +thronged +thronging +throngs +through +throughout +throughput +throughway +throughways +throve +throw +throwaway +throwaways +throwback +throwbacks +thrower +throwers +throwing +thrown +throws +thru +thrum +thrummed +thrumming +thrums +thrush +thrushes +thrust +thrusting +thrusts +thruway +thruways +thucydides +thud +thudded +thudding +thuds +thug +thugs +thumb +thumbed +thumbing +thumbs +thumbscrew +thumbscrews +thumbtack +thumbtacks +thump +thumped +thumping +thumps +thunder +thunderbird +thundered +thunderhead +thunderheads +thundering +thunderous +thunders +thundershower +thundershowers +thunderstorm +thunderstorms +thunderstruck +thurber +thurman +thurmond +thursday +thursdays +thus +thutmose +thwack +thwacked +thwacking +thwacks +thwart +thwarted +thwarting +thwarts +thy +thyme +thymi +thymus +thymuses +thyroid +thyroids +tia +tianjin +tiara +tiaras +tiber +tiberius +tibet +tibetan +tibetans +tibia +tibiae +tibias +tic +tick +ticked +ticker +tickers +ticket +ticketed +ticketing +ticketmaster +tickets +ticking +ticks +ticonderoga +tics +tide +tided +tides +tidewater +tidewaters +tidied +tidier +tidies +tidiest +tidiness +tiding +tidings +tidy +tidying +tie +tiebreaker +tiebreakers +tied +tieing +tienanmen +tientsin +tier +tiers +ties +tiff +tiffany +tiffed +tiffing +tiffs +tiger +tigers +tight +tighten +tightened +tightening +tightens +tighter +tightest +tightfisted +tightness +tightrope +tightropes +tights +tightwad +tightwads +tigress +tigresses +tigris +tijuana +tike +tikes +tim +timber +timbered +timbering +timbers +timbre +timbres +timbuktu +time +timed +timekeeper +timekeepers +timepiece +timepieces +timer +timers +times +timestamp +timestamps +timeworn +timex +timezone +timid +timider +timidest +timidity +timing +timings +timmy +timon +timorous +timothy +timpani +timpanist +timpanists +timur +timurid +tin +tina +tincture +tinctured +tinctures +tincturing +tinder +tinderbox +tinderboxes +tine +tines +ting +tinge +tinged +tingeing +tinges +tinging +tings +tinier +tiniest +tinker +tinkered +tinkering +tinkers +tinkertoy +tinned +tinnier +tinniest +tinning +tinny +tins +tinsmith +tinsmiths +tint +tinted +tinting +tintoretto +tints +tiny +tip +tipi +tipis +tippecanoe +tipped +tipper +tipperary +tippers +tipping +tips +tipsier +tipsiest +tipster +tipsters +tipsy +tiptoe +tiptoed +tiptoeing +tiptoes +tiptop +tiptops +tirade +tirades +tirana +tire +tired +tireder +tiredest +tiredness +tires +tiresias +tiresome +tiresomeness +tiring +tiro +tiros +tisha +tishri +tissue +tissues +tit +titan +titania +titanic +titanium +titans +titbit +titbits +tithe +tithed +tithes +tithing +titian +titicaca +titmice +titmouse +tito +tits +titter +tittered +tittering +titters +titus +tizzies +tizzy +toad +toadied +toadies +toads +toady +toadying +toast +toasted +toaster +toasters +toastier +toastiest +toasting +toastmaster +toastmasters +toasts +toasty +tobacco +tobaccoes +tobacconist +tobacconists +tobaccos +tobago +toboggan +tobogganed +tobogganing +toboggans +toby +tocantins +tocsin +tocsins +tod +today +todd +toddies +toddy +toe +toed +toeing +toes +toffee +toffees +toffies +toffy +tofu +tog +toga +togae +togas +together +togetherness +togo +togs +tojo +tokay +toke +toked +token +tokenism +tokens +tokes +toking +tokugawa +tokyo +tom +tomahawk +tomahawked +tomahawking +tomahawks +tomas +tomato +tomatoes +tomb +tombaugh +tombed +tombing +tomboy +tomboys +tombs +tombstone +tombstones +tomcat +tomcats +tome +tomes +tommie +tommy +tomorrow +tomorrows +tompkins +toms +tomsk +ton +tone +toned +toner +tones +tong +tonga +tongan +tongans +tongs +tongue +tongued +tongues +tonguing +toni +tonia +tonic +tonics +tonier +toniest +tonight +toning +tonnage +tonnages +tonne +tonnes +tons +tonsure +tonsured +tonsures +tonsuring +tonto +tony +tonya +too +took +toot +tooted +tooth +toothache +toothaches +toothbrush +toothbrushes +toothed +toothier +toothiest +toothpaste +toothpastes +toothpick +toothpicks +toothsome +toothy +tooting +toots +top +topaz +topazes +topcoat +topcoats +topeka +topic +topics +topknot +topknots +topmast +topmasts +topmost +topographer +topographers +topographic +topographies +topography +topped +topping +toppings +tops +topside +topsides +topsy +toque +toques +tor +torah +torahs +torch +torched +torches +torching +tore +toreador +toreadors +tories +torment +tormented +tormenter +tormenters +tormenting +tormentor +tormentors +torments +torn +tornado +tornadoes +tornados +toronto +torpedo +torpedoed +torpedoes +torpedoing +torpedos +torpid +torpidity +torpor +torque +torqued +torquemada +torques +torquing +torrance +torrens +torrent +torrents +torres +torrid +tors +torsi +torsion +torso +torsos +tort +torte +tortes +tortoise +tortoises +torts +tortuga +tortuous +torture +tortured +torturer +torturers +tortures +torturing +torus +tory +tosca +toscanini +toshiba +toss +tossed +tosses +tossing +tossup +tossups +tost +tot +tote +toted +totem +totemic +totems +totes +toting +toto +tots +totted +totter +tottered +tottering +totters +totting +toucan +toucans +touch +touchdown +touchdowns +touched +touches +touchier +touchiest +touching +touchings +touchstone +touchstones +touchy +tough +toughen +toughened +toughening +toughens +tougher +toughest +toughness +toughs +toupee +toupees +tour +toured +touring +tourism +tourist +tourists +tournament +tournaments +tourney +tourneys +tourniquet +tourniquets +tours +tout +touted +touting +touts +tow +toward +towards +towed +tower +towered +towering +towers +towhead +towheaded +towheads +towing +town +townes +townhouse +townhouses +towns +townsend +township +townships +townsman +townsmen +towpath +towpaths +tows +toxic +toxicity +toxin +toxins +toy +toyed +toying +toynbee +toyoda +toyota +toys +trace +traced +tracer +traceries +tracers +tracery +traces +tracey +trachea +tracheae +tracheas +tracheotomies +tracheotomy +traci +tracie +tracing +tracings +track +tracked +tracker +trackers +tracking +tracks +tract +traction +tractor +tractors +tracts +tracy +trade +traded +trademark +trademarked +trademarking +trademarks +trader +traders +trades +tradesman +tradesmen +trading +tradition +traditions +traduce +traduced +traduces +traducing +traffic +trafficked +trafficker +traffickers +trafficking +traffics +tragedian +tragedians +tragedies +tragedy +tragic +tragicomedies +tragicomedy +train +trained +trainee +trainees +trainer +trainers +training +trains +traipse +traipsed +traipses +traipsing +trait +traitor +traitorous +traitors +traits +trajan +trajectories +trajectory +tram +trammed +tramming +tramp +tramped +tramping +tramps +trams +tran +trance +trances +transact +transacted +transacting +transaction +transactions +transacts +transcaucasia +transceiver +transceivers +transcend +transcended +transcendence +transcendent +transcending +transcends +transcribe +transcribed +transcribes +transcribing +transcript +transcription +transcriptions +transcripts +transducer +transducers +transept +transepts +transfer +transference +transferred +transferring +transfers +transfiguration +transfigure +transfigured +transfigures +transfiguring +transfinite +transfix +transfixed +transfixes +transfixing +transfixt +transform +transformation +transformations +transformed +transformer +transformers +transforming +transforms +transfuse +transfused +transfuses +transfusing +transfusion +transfusions +transgress +transgressed +transgresses +transgressing +transgression +transgressions +transgressor +transgressors +transience +transiency +transient +transients +transistor +transistors +transit +transited +transiting +transition +transitioned +transitioning +transitions +transitive +transitives +transitory +transits +transitted +transitting +transmigrate +transmigrated +transmigrates +transmigrating +transmigration +transmission +transmissions +transmit +transmits +transmitted +transmitter +transmitters +transmitting +transmutation +transmutations +transmute +transmuted +transmutes +transmuting +transoceanic +transom +transoms +transparencies +transparency +transparent +transpiration +transpire +transpired +transpires +transpiring +transponder +transponders +transport +transportation +transported +transporter +transporters +transporting +transports +transpose +transposed +transposes +transposing +transposition +transpositions +transship +transshipment +transshipped +transshipping +transships +transubstantiation +transverse +transverses +transvestism +transvestite +transvestites +trap +trapdoor +trapdoors +trapeze +trapezes +trapezoid +trapezoids +trapped +trapper +trappers +trapping +trappings +trappist +traps +trapshooting +trash +trashcan +trashcans +trashed +trashes +trashier +trashiest +trashing +trashy +trauma +traumas +traumata +traumatic +traverse +traversed +traverses +traversing +travestied +travesties +travesty +travestying +travis +tray +trays +treacheries +treacherous +treachery +tread +treading +treads +treason +treasonous +treasure +treasured +treasurer +treasurers +treasures +treasuries +treasuring +treasury +treat +treated +treaties +treating +treatise +treatises +treatment +treatments +treats +treaty +tree +treed +treeing +trees +treetop +treetops +trek +trekked +trekkie +trekking +treks +tremendous +tremor +tremors +trench +trenchant +trenched +trenches +trenching +trend +trended +trendier +trendies +trendiest +trending +trends +trendy +trent +trenton +trepidation +trespass +trespassed +trespasser +trespassers +trespasses +trespassing +tress +tresses +trevino +trevor +trey +triad +triads +triage +triassic +tribe +tribes +tribesman +tribesmen +tribune +tribunes +tributaries +tributary +tribute +tributes +trice +triceps +tricepses +triceratops +triceratopses +tricia +trick +tricked +trickery +trickier +trickiest +trickiness +tricking +tricks +trickster +tricksters +tricky +trident +tridents +tried +tries +trieste +trifecta +trifectas +trig +trigger +triggered +triggering +triggers +trigonometric +trigonometry +trike +trikes +trim +trimaran +trimarans +trimester +trimesters +trimmed +trimmer +trimmers +trimmest +trimming +trimmings +trimness +trims +trimurti +trina +trinidad +trinities +trinity +trinket +trinkets +trio +trios +trip +tripartite +tripe +tripitaka +tripod +tripods +tripos +trippe +tripped +tripping +trips +triptych +triptychs +trisect +trisected +trisecting +trisects +trisha +tristan +trite +triteness +triter +tritest +triton +triumph +triumphant +triumphed +triumphing +triumphs +triumvirate +triumvirates +trivet +trivets +trivia +trobriand +trochee +trochees +trod +trodden +troika +troikas +trojan +trojans +trombone +trombones +trombonist +trombonists +tromp +tromped +tromping +tromps +trondheim +troop +trooped +trooper +troopers +trooping +troops +troopship +troopships +trope +tropes +trophies +trophy +tropic +tropicana +tropics +tropism +tropisms +troposphere +tropospheres +trot +troth +trots +trotsky +trotted +trotter +trotters +trotting +troubadour +troubadours +trough +troughs +trounce +trounced +trounces +trouncing +troupe +trouped +trouper +troupers +troupes +trouping +trouser +trousers +trousseau +trousseaus +trousseaux +trout +trouts +troy +troyes +troys +truancy +truant +truanted +truanting +truants +truce +truces +truck +trucked +truckee +trucker +truckers +trucking +trucks +trudeau +trudge +trudged +trudges +trudging +trudy +true +trued +trueing +truer +trues +truest +truffaut +truing +truism +truisms +truman +trump +trumped +trumpery +trumpet +trumpeted +trumpeter +trumpeters +trumpeting +trumpets +trumping +trumps +truncate +truncated +truncates +truncating +truncation +truncheon +truncheons +trunk +trunking +trunks +truss +trussed +trusses +trussing +trust +trusted +trustee +trustees +trusteeship +trusteeships +trustier +trusties +trustiest +trusting +trusts +trustworthier +trustworthiest +trustworthiness +trustworthy +trusty +truth +truther +truthers +truthiness +truths +try +trying +tryout +tryouts +tryst +trysted +trysting +trysts +tsar +tsarina +tsarinas +tsars +tsimshian +tsingtao +tsitsihar +tsongkhapa +tsunami +tsunamis +tswana +tuamotu +tuareg +tub +tuba +tubas +tubbier +tubbiest +tubby +tube +tubed +tuber +tuberous +tubers +tubes +tubing +tubman +tubs +tuck +tucked +tucker +tuckered +tuckering +tuckers +tucking +tucks +tucson +tucuman +tudor +tuesday +tuesdays +tuft +tufted +tufting +tufts +tug +tugboat +tugboats +tugged +tugging +tugs +tuition +tumid +tummies +tummy +tums +tun +tuna +tunas +tundra +tundras +tune +tuned +tuner +tuners +tunes +tungsten +tungus +tunguska +tunic +tunics +tuning +tunis +tunisia +tunisian +tunisians +tunney +tunnies +tunny +tuns +tupi +tupperware +tupungato +turban +turbans +turbid +turbine +turbines +turbojet +turbojets +turboprop +turboprops +turbot +turbots +turd +turds +turducken +turduckens +tureen +tureens +turf +turfed +turfing +turfs +turgenev +turgid +turgidity +turin +turing +turk +turkestan +turkey +turkeys +turkish +turkmenistan +turks +turmeric +turmerics +turn +turnabout +turnabouts +turnaround +turnarounds +turncoat +turncoats +turned +turner +turners +turning +turnip +turnips +turnkey +turnkeys +turnoff +turnoffs +turnout +turnouts +turnover +turnovers +turnpike +turnpikes +turns +turpentine +turpin +turpitude +turquoise +turquoises +turret +turrets +turves +tuscan +tuscany +tuscarora +tuscon +tush +tushes +tusk +tusked +tuskegee +tusks +tussaud +tussock +tussocks +tut +tutankhamen +tutor +tutored +tutoring +tutors +tutsi +tutu +tutus +tux +tuxedo +tuxedoes +tuxedos +tuxes +twa +twain +twang +twanged +twanging +twangs +tweak +tweaked +tweaking +tweaks +twee +tweed +tweedier +tweediest +tweeds +tweedy +tweet +tweeted +tweeter +tweeters +tweeting +tweets +tweezers +twenties +twentieth +twentieths +twenty +twerk +twerked +twerking +twerks +twerp +twerps +twice +twig +twigged +twiggier +twiggiest +twigging +twiggy +twigs +twin +twine +twined +twines +twinge +twinged +twingeing +twinges +twinging +twining +twinkies +twinned +twinning +twins +twist +twisted +twister +twisters +twisting +twists +twit +twitch +twitched +twitches +twitching +twits +twitted +twitter +twittered +twittering +twitters +twitting +two +twofer +twofers +twos +twosome +twosomes +tycho +tycoon +tycoons +tying +tyke +tykes +tympana +tympanum +tympanums +type +typecast +typecasting +typecasts +typed +typeface +typefaces +types +typescript +typescripts +typeset +typesets +typesetter +typesetters +typesetting +typewrite +typewriter +typewriters +typewrites +typewriting +typewritten +typewrote +typhoid +typhoon +typhoons +typhus +typified +typifies +typify +typifying +typing +typist +typists +typo +typographer +typographers +typographic +typography +typos +tyrannies +tyrannosaur +tyrannosaurs +tyrannosaurus +tyrannosauruses +tyrannous +tyranny +tyrant +tyrants +tyre +tyree +tyro +tyroes +tyrone +tyros +tyson +tzar +tzarina +tzarinas +tzars +ubangi +ubiquitous +ubiquity +ubs +ubuntu +ucla +udder +udders +ufa +uganda +ugandan +ugandans +ugh +uighur +ujungpandang +ukraine +ukrainian +ukrainians +umber +umbrage +umiak +umiaks +ump +umped +umping +umpire +umpired +umpires +umpiring +umps +umpteen +umpteenth +unabashed +unabated +unabridged +unabridgeds +unaccented +unaccepted +unaccompanied +unaccustomed +unacquainted +unadorned +unadvised +unaffected +unafraid +unaided +unambiguous +unanimity +unanimous +unannounced +unanswered +unanticipated +unappreciated +unappreciative +unarmed +unashamed +unasked +unassigned +unassisted +unassuming +unattached +unattended +unattractive +unattributed +unauthenticated +unaware +unawares +unbar +unbarred +unbarring +unbars +unbeaten +unbecoming +unbeknown +unbeknownst +unbend +unbending +unbends +unbent +unbiased +unbiassed +unbidden +unbind +unbinding +unbinds +unborn +unbosom +unbosomed +unbosoming +unbosoms +unbound +unbounded +unbranded +unbroken +unburden +unburdened +unburdening +unburdens +unbutton +unbuttoned +unbuttoning +unbuttons +uncannier +uncanniest +uncanny +uncaring +uncased +unceasing +uncensored +unceremonious +uncertain +uncertainties +uncertainty +unchanged +unchanging +uncharacteristic +uncharted +unchecked +unchristian +uncommitted +uncommon +uncommoner +uncommonest +uncommunicative +uncomprehending +uncompressed +uncompromising +unconcern +unconcerned +unconfirmed +unconnected +unconscious +unconsciousness +unconsidered +uncontaminated +uncontested +unconvinced +unconvincing +uncooked +uncooperative +uncoordinated +uncork +uncorked +uncorking +uncorks +uncorroborated +uncounted +uncouth +uncover +uncovered +uncovering +uncovers +unction +unctions +unctuous +unctuousness +uncut +undamaged +undated +undaunted +undeceive +undeceived +undeceives +undeceiving +undecided +undecideds +undefeated +undefended +undefined +undemanding +undemocratic +undemonstrative +under +underachieve +underachieved +underachiever +underachievers +underachieves +underachieving +underact +underacted +underacting +underacts +underage +underarm +underarms +underbid +underbidding +underbids +underbrush +undercarriage +undercarriages +undercharge +undercharged +undercharges +undercharging +undercoat +undercoated +undercoating +undercoats +undercover +undercurrent +undercurrents +undercut +undercuts +undercutting +underdog +underdogs +underdone +underestimate +underestimated +underestimates +underestimating +underexpose +underexposed +underexposes +underexposing +underfed +underfeed +underfeeding +underfeeds +underfoot +underfunded +undergarment +undergarments +undergo +undergoes +undergoing +undergone +undergrad +undergrads +undergraduate +undergraduates +underground +undergrounds +undergrowth +underhand +underhanded +undermine +undermined +undermines +undermining +undermost +underneath +underneaths +undernourished +underpaid +underpants +underpass +underpasses +underpay +underpaying +underpays +underpin +underpinned +underpinning +underpinnings +underpins +underrate +underrated +underrates +underrating +underscore +underscored +underscores +underscoring +undersea +undersecretaries +undersecretary +undershirt +undershirts +undershoot +undershooting +undershoots +undershorts +undershot +underside +undersides +undersign +undersigned +undersigning +undersigns +undersize +undersized +underskirt +underskirts +understaffed +understand +understanding +understandings +understands +understate +understated +understatement +understatements +understates +understating +understood +understudied +understudies +understudy +understudying +undertake +undertaken +undertaker +undertakers +undertakes +undertaking +undertakings +undertone +undertones +undertook +undertow +undertows +underused +underwater +underwear +underweight +underwent +underwood +underwrite +underwriter +underwriters +underwrites +underwriting +underwritten +underwrote +undeserved +undeserving +undetected +undetermined +undeterred +undid +undies +undignified +undiminished +undiscovered +undiscriminating +undisguised +undisputed +undistinguished +undisturbed +undivided +undo +undocumented +undoes +undoing +undoings +undone +undoubted +undress +undressed +undresses +undressing +undue +undying +unearned +unearth +unearthed +unearthing +unearths +unease +uneasier +uneasiest +uneasiness +uneasy +uneaten +uneconomic +unedited +uneducated +unembarrassed +unending +unenthusiastic +unerring +uneven +unevenness +unexciting +unexpected +unexpurgated +unfair +unfairer +unfairest +unfairness +unfasten +unfastened +unfastening +unfastens +unfeigned +unfetter +unfettered +unfettering +unfetters +unfinished +unfit +unfits +unfitted +unfitting +unforeseen +unforgiving +unformed +unfortunate +unfortunates +unfounded +unfrequented +unfriend +unfriended +unfriending +unfriends +unfrock +unfrocked +unfrocking +unfrocks +unfunny +unfurnished +ungava +ungracious +ungrudging +unguarded +unguent +unguents +unhand +unhanded +unhanding +unhands +unhappier +unhappiest +unhappiness +unhappy +unharmed +unheard +unheeded +unhesitating +unhindered +unhinge +unhinged +unhinges +unhinging +unhitch +unhitched +unhitches +unhitching +unhook +unhooked +unhooking +unhooks +unhorse +unhorsed +unhorses +unhorsing +unhurried +unhurt +unicode +unicorn +unicorns +unidentified +unification +unified +unifies +uniform +uniformed +uniforming +uniformity +uniforms +unify +unifying +unimaginative +unimpaired +unimportant +unimpressed +unimpressive +uninformative +uninformed +uninhabited +uninhibited +uninitiated +uninjured +uninspired +uninspiring +uninsured +unintended +uninterested +uninteresting +uninterpreted +uninterrupted +uninvited +uninviting +union +unions +unique +uniqueness +uniquer +uniquest +unisex +unison +unit +unitarian +unitarianism +unitarianisms +unitarians +unitary +unitas +unite +united +unites +unities +uniting +units +unity +universe +universes +universities +university +unjust +unjustified +unkempt +unkind +unkinder +unkindest +unkindness +unknowing +unknowings +unknown +unknowns +unmade +unmake +unmakes +unmaking +unman +unmanned +unmanning +unmans +unmarked +unmarried +unmask +unmasked +unmasking +unmasks +unmatched +unmissed +unmitigated +unmodified +unmoved +unnamed +unnecessary +unneeded +unnerve +unnerved +unnerves +unnerving +unnoticed +unnumbered +unobservant +unobserved +unobstructed +unobtrusive +unoccupied +unoffensive +unopened +unopposed +unorthodox +unpack +unpacked +unpacking +unpacks +unpaid +unpainted +unpatriotic +unpaved +unperturbed +unpick +unpin +unpinned +unpinning +unpins +unprecedented +unprejudiced +unpremeditated +unprepared +unpretentious +unproductive +unpromising +unprompted +unprotected +unproved +unproven +unprovoked +unpunished +unquestioned +unquestioning +unquote +unquoted +unquotes +unquoting +unread +unready +unreasoning +unreconstructed +unrecorded +unrefined +unregenerate +unregistered +unrehearsed +unremitting +unrepentant +unrepresentative +unrequited +unreserved +unresponsive +unrest +unrestrained +unrestricted +unrewarding +unripe +unriper +unripest +unromantic +unsafe +unsafer +unsafest +unsaid +unsanctioned +unsanitary +unsatisfactory +unsatisfied +unsatisfying +unsaturated +unsay +unsaying +unsays +unscathed +unscientific +unscrew +unscrewed +unscrewing +unscrews +unseasoned +unseat +unseated +unseating +unseats +unseeing +unseen +unsent +unset +unshaven +unsheathe +unsheathed +unsheathes +unsheathing +unsigned +unsnap +unsnapped +unsnapping +unsnaps +unsophisticated +unsound +unsounder +unsoundest +unsparing +unspecific +unspecified +unspoken +unstated +unsteadier +unsteadiest +unsteadiness +unsteady +unstop +unstopped +unstopping +unstops +unstressed +unstructured +unstrung +unstuck +unstudied +unsubscribe +unsubscribed +unsubscribes +unsubscribing +unsubstantiated +unsuited +unsung +unsupervised +unsupported +unsure +unsurpassed +unsurprising +unsuspected +unsuspecting +unsweetened +unswerving +unsympathetic +untainted +untamed +untapped +untaught +untested +unthinking +untidier +untidiest +untidiness +untidy +untie +untied +unties +untiring +unto +untouched +untoward +untrained +untreated +untried +untrue +untruer +untruest +untrustworthy +untruth +untruths +untutored +untwist +untwisted +untwisting +untwists +untying +unused +unvarnished +unvarying +unverified +unvoiced +unwanted +unwarier +unwariest +unwariness +unwarranted +unwary +unwashed +unwavering +unwed +unwind +unwinding +unwinds +unwise +unwiser +unwisest +unwitting +unwonted +unworthier +unworthiest +unworthiness +unworthy +unwound +unwrap +unwrapped +unwrapping +unwraps +unwritten +unzip +unzipped +unzipping +unzips +upanishads +upbeat +upbeats +upbraid +upbraided +upbraiding +upbraids +upbringing +upbringings +upchuck +upchucked +upchucking +upchucks +upcoming +upcountry +update +updated +updater +updates +updating +updike +upend +upended +upending +upends +upfront +upgrade +upgraded +upgrades +upgrading +upjohn +upkeep +upmarket +upon +upped +upper +uppercase +uppercut +uppercuts +uppercutting +uppermost +uppers +upping +uppity +upraise +upraised +upraises +upraising +upright +uprights +uprising +uprisings +uproar +uproarious +uproars +uproot +uprooted +uprooting +uproots +ups +upset +upsets +upsetting +upshot +upshots +upside +upsides +upstage +upstaged +upstages +upstaging +upstairs +upstanding +upstart +upstarted +upstarting +upstarts +upstate +upstream +upsurge +upsurged +upsurges +upsurging +upswing +upswings +uptake +uptakes +uptight +upton +uptown +upturn +upturned +upturning +upturns +upward +upwards +urania +uranium +uranus +urban +urbane +urbaner +urbanest +urbanity +urchin +urchins +urdu +urea +urethra +urethrae +urethras +urey +urge +urged +urgency +urgent +urges +urging +uriah +uric +urinary +urinate +urinated +urinates +urinating +urination +urine +uris +urn +urns +urquhart +ursa +uruguay +uruguayan +uruguayans +urumqi +usage +usages +use +used +usenet +user +username +usernames +users +uses +usher +ushered +usherette +usherettes +ushering +ushers +using +ustinov +usurer +usurers +usurious +usurp +usurpation +usurped +usurper +usurpers +usurping +usurps +usury +utah +ute +uteri +uterine +uterus +uteruses +utmost +utopia +utopian +utopians +utopias +utrecht +utter +utterance +utterances +uttered +uttering +uttermost +utters +uzbek +uzbekistan +uzi +vacancies +vacancy +vacant +vacate +vacated +vacates +vacating +vacation +vacationed +vacationer +vacationers +vacationing +vacations +vaccinate +vaccinated +vaccinates +vaccinating +vaccination +vaccinations +vaccine +vaccines +vacua +vacuity +vacuous +vacuum +vacuumed +vacuuming +vacuums +vader +vaduz +vagabond +vagabonded +vagabonding +vagabonds +vagaries +vagary +vagina +vaginae +vagrancy +vagrant +vagrants +vague +vagueness +vaguer +vaguest +vain +vainer +vainest +vamoose +vamoosed +vamooses +vamoosing +vamp +vamped +vamping +vampire +vampires +vamps +van +vanadium +vance +vancouver +vandyke +vane +vanes +vanessa +vang +vanguard +vanguards +vanish +vanished +vanishes +vanishing +vanishings +vanities +vanity +vanned +vanning +vanquish +vanquished +vanquishes +vanquishing +vans +vantage +vantages +vanuatu +vanzetti +vape +vaped +vapes +vapid +vapidity +vapidness +vaping +vaporous +varanasi +varese +vargas +variance +variances +variant +variants +variate +variation +variations +varicose +varied +variegate +variegated +variegates +variegating +varies +varieties +variety +various +varmint +varmints +varnish +varnished +varnishes +varnishing +varsities +varsity +vary +varying +vase +vasectomies +vasectomy +vases +vasquez +vassar +vast +vaster +vastest +vastness +vasts +vat +vatican +vats +vatted +vatting +vauban +vaughan +vaughn +vaunt +vaunted +vaunting +vaunts +vazquez +vector +vectored +vectoring +vectors +veda +vedanta +vedas +veep +veeps +veer +veered +veering +veers +vega +vegan +vegans +vegas +vegemite +vegetarian +vegetarianism +vegetarians +vegetate +vegetated +vegetates +vegetating +vegetation +vegetative +veggie +veggies +vehemence +vehement +vein +veined +veining +veins +vend +vended +vendetta +vendettas +vending +vendor +vendors +vends +veneer +veneered +veneering +veneers +venerate +venerated +venerates +venerating +veneration +venetian +venetians +vengeance +venice +venison +venn +venom +venomous +venous +vent +vented +venting +vents +venture +ventured +ventures +venturesome +venturing +venturous +venue +venues +venus +venuses +venusian +vera +veracious +veracity +veracruz +veranda +verandah +verandahs +verandas +verb +verbatim +verbena +verbenas +verbiage +verbose +verbosity +verbs +verdant +verde +verdi +verdict +verdicts +verdigris +verdigrised +verdigrises +verdigrising +verdun +verdure +verge +verged +verges +verging +verier +veriest +verification +verified +verifies +verify +verifying +verities +verity +verizon +vermeer +vermin +verminous +vermont +vermonter +vermouth +vern +verna +verne +vernon +verona +veronese +veronica +verse +versed +verses +versification +versified +versifies +versify +versifying +versing +version +versions +versus +vertebra +vertebrae +vertebras +vertebrate +vertebrates +vertex +vertexes +vertices +vertiginous +vertigo +verve +very +vespasian +vesper +vespers +vespucci +vest +vesta +vested +vestige +vestiges +vesting +vestment +vestments +vestries +vestry +vests +vesuvius +vet +vetch +vetches +veteran +veterans +veterinarian +veterinarians +veterinaries +veterinary +veto +vetoed +vetoes +vetoing +vets +vetted +vetting +vex +vexation +vexations +vexatious +vexed +vexes +vexing +via +viacom +viaduct +viaducts +viagra +viand +viands +vibe +vibes +vibrancy +vibrant +vibraphone +vibraphones +vibrate +vibrated +vibrates +vibrating +vibration +vibrations +vibrato +vibrator +vibrators +vibratos +viburnum +viburnums +vicar +vicarage +vicarages +vicarious +vicars +vice +viced +vicente +viceroy +viceroys +vices +vichy +vichyssoise +vicing +vicinity +vicious +viciousness +vicissitude +vicissitudes +vicki +vickie +vicksburg +vicky +victim +victims +victor +victoria +victorian +victorians +victories +victorious +victors +victory +video +videocassette +videocassettes +videodisc +videodiscs +videos +videotape +videotaped +videotapes +videotaping +vie +vied +vienna +viennese +vientiane +vies +vietcong +vietminh +vietnam +vietnamese +view +viewed +viewer +viewers +viewfinder +viewfinders +viewing +viewings +viewpoint +viewpoints +views +vignette +vignetted +vignettes +vignetting +vigorous +vijayanagar +vijayawada +viking +vikings +vim +vinaigrette +vince +vincent +vindemiatrix +vindicate +vindicated +vindicates +vindicating +vindication +vindications +vindicator +vindicators +vindictive +vindictiveness +vine +vinegar +vinegary +vines +vineyard +vineyards +vinson +vintage +vintages +vintner +vintners +viper +vipers +virago +viragoes +viragos +vireo +vireos +virgie +virgin +virginia +virginian +virginians +virginity +virgins +virgo +virgos +virtue +virtues +virtuosi +virtuosity +virtuoso +virtuosos +virtuous +virtuousness +virus +viruses +visa +visaed +visage +visages +visaing +visakhapatnam +visas +visayans +viscera +viscid +viscosity +viscount +viscountess +viscountesses +viscounts +viscous +viscus +vise +vised +vises +vishnu +visigoth +vising +vision +visionaries +visionary +visioned +visioning +visions +visit +visitation +visitations +visited +visiting +visitor +visitors +visits +visor +visors +vista +vistas +vitamin +vitamins +vitiate +vitiated +vitiates +vitiating +vitiation +vitim +vito +vitreous +vituperate +vituperated +vituperates +vituperating +vituperation +vituperative +vitus +viva +vivace +vivacious +vivaciousness +vivacity +vivas +vivekananda +vivian +vivid +vivider +vividest +vividness +vivienne +vivified +vivifies +vivify +vivifying +viviparous +vivisection +vixen +vixenish +vixens +vizier +viziers +vizor +vizors +vocation +vocations +vocative +vocatives +vociferate +vociferated +vociferates +vociferating +vociferation +vociferous +vodka +vogue +vogues +voguish +voice +voiced +voices +voicing +void +voided +voiding +voids +vomit +vomited +vomiting +vomits +vonda +vonnegut +voodoo +voodooed +voodooing +voodooism +voodoos +voracious +voracity +voronezh +vorster +vortex +vortexes +vortices +votaries +votary +vote +voted +voter +voters +votes +voting +votive +vouch +vouched +voucher +vouchers +vouches +vouching +vouchsafe +vouchsafed +vouchsafes +vouchsafing +vow +vowed +vowing +vows +voyage +voyaged +voyager +voyagers +voyages +voyaging +voyeur +voyeurism +voyeuristic +voyeurs +vuitton +vying +wabash +wack +wacker +wackest +wackier +wackiest +wackiness +wacko +wackos +wacks +wacky +waco +wad +wadded +wadding +wade +waded +wader +waders +wades +wadi +wading +wadis +wads +wafer +wafers +waft +wafted +wafting +wafts +wag +wage +waged +wager +wagered +wagering +wagers +wages +wagged +wagging +waggish +waging +wagner +wagnerian +wagon +wagoner +wagoners +wagons +wags +wahhabi +waif +waifs +waikiki +wainscot +wainscoted +wainscoting +wainscotings +wainscots +wainscotted +wainscotting +wainscottings +waist +waistband +waistbands +waistcoat +waistcoats +waists +wait +waite +waited +waiter +waiters +waiting +waitress +waitresses +waits +waive +waived +waiver +waivers +waives +waiving +wake +waked +waken +wakened +wakening +wakens +wakes +waking +waksman +wampum +wan +wanamaker +wand +wanda +wander +wandered +wanderer +wanderers +wandering +wanders +wands +wane +waned +wanes +wang +waning +wanna +wannabe +wannabes +wanner +wannest +want +wanted +wanting +wanton +wantoned +wantoning +wantonness +wantons +wants +wapiti +wapitis +war +ward +warded +warden +wardens +warder +warders +warding +wardrobe +wardrobes +wardroom +wardrooms +wards +ware +warehouse +warehoused +warehouses +warehousing +wares +warfare +warhead +warheads +warhorse +warhorses +warier +wariest +wariness +waring +warm +warmed +warmer +warmers +warmest +warmhearted +warming +warmonger +warmongering +warmongers +warms +warmth +warn +warned +warner +warning +warnings +warns +warp +warpath +warpaths +warped +warping +warps +warrant +warranted +warrantied +warranties +warranting +warrants +warranty +warrantying +warred +warren +warrens +warring +warrior +warriors +wars +warsaw +warship +warships +wart +warthog +warthogs +wartier +wartiest +wartime +warts +warty +warwick +wary +was +wasatch +wash +washbasin +washbasins +washboard +washboards +washed +washer +washers +washerwoman +washerwomen +washes +washing +washings +washington +washingtonian +washingtonians +washout +washouts +washroom +washrooms +washstand +washstands +washtub +washtubs +wasp +waspish +wasps +wassermann +wastage +waste +wastebasket +wastebaskets +wasted +wastepaper +waster +wasters +wastes +wastewater +wasting +watch +watchband +watchbands +watchdog +watchdogs +watched +watcher +watchers +watches +watching +watchmaker +watchmakers +watchman +watchmen +watchtower +watchtowers +watchword +watchwords +water +waterbed +waterbeds +waterboard +waterboarded +waterboarding +waterboardings +waterboards +waterbury +watercourse +watercourses +watercraft +watercress +watered +waterford +waterfront +waterfronts +watergate +waterier +wateriest +watering +watermark +watermarked +watermarking +watermarks +waterpower +waterproof +waterproofed +waterproofing +waterproofs +waters +watershed +watersheds +waterside +watersides +waterspout +waterspouts +watertight +waterway +waterways +waterworks +watery +watkins +watson +watt +wattage +watteau +watts +watusi +waugh +wave +waved +waveform +waver +wavered +wavering +wavers +waves +wavier +waviest +waviness +waving +wavy +wax +waxed +waxen +waxes +waxier +waxiest +waxiness +waxing +waxwing +waxwings +waxwork +waxworks +waxy +way +wayfarer +wayfarers +wayfaring +wayfarings +wayne +ways +wayside +waysides +wayward +waywardness +weak +weaken +weakened +weakening +weakens +weaker +weakest +weakfish +weakfishes +weakness +weaknesses +wean +weaned +weaning +weans +weapon +weaponry +weapons +wear +wearer +wearers +wearied +wearier +wearies +weariest +weariness +wearing +wearisome +wears +weary +wearying +weather +weathercock +weathercocks +weathered +weathering +weatherman +weathermen +weatherproof +weatherproofed +weatherproofing +weatherproofs +weathers +weave +weaved +weaver +weavers +weaves +weaving +web +webb +webbed +webbing +webcam +webcams +webcast +webcasting +webcasts +weber +webern +webinar +webinars +webisode +webisodes +webmaster +webmasters +webmistress +webmistresses +webs +website +websites +webster +websters +wed +wedded +wedder +wedding +weddings +wedge +wedged +wedges +wedging +wedgwood +wednesday +wednesdays +weds +wee +weed +weeded +weeder +weeders +weedier +weediest +weeding +weeds +weedy +weeing +week +weekday +weekdays +weekend +weekended +weekending +weekends +weeknight +weeknights +weeks +weep +weeper +weepers +weepier +weepies +weepiest +weeping +weepings +weeps +weepy +weer +wees +weest +weft +wefts +wehrmacht +wei +weierstrass +weigh +weighed +weighing +weighs +weight +weighted +weightier +weightiest +weightiness +weighting +weights +weighty +weinberg +weir +weird +weirder +weirdest +weirdness +weirdo +weirdos +weirs +weiss +weizmann +wen +wench +wenches +wend +wended +wendi +wending +wends +wendy +wens +went +wept +were +wesak +wessex +wesson +west +westbound +western +westerner +westerners +westernmost +westerns +westinghouse +westminster +weston +wests +westward +westwards +wet +wetback +wetbacks +wetness +wets +wetted +wetter +wettest +wetting +weyden +wezen +whack +whacked +whackier +whackiest +whacking +whacks +whacky +wham +whammed +whammies +whamming +whammy +whams +wharf +wharfs +wharton +wharves +what +whatever +whatnot +whats +whatsoever +wheat +wheaten +wheaties +wheatstone +wheeze +wheezed +wheezes +wheezier +wheeziest +wheezing +wheezy +when +whence +whenever +whens +where +whereabouts +whereas +whereat +whereby +wherefore +wherefores +wherein +whereof +whereon +wheres +wheresoever +whereupon +wherever +whet +whether +whets +whetstone +whetstones +whetted +whetting +whew +whey +which +whichever +whiff +whiffed +whiffing +whiffs +whig +whigs +whim +whimper +whimpered +whimpering +whimpers +whims +whimsey +whimseys +whimsies +whimsy +whine +whined +whiner +whiners +whines +whinier +whiniest +whining +whinnied +whinnies +whinny +whinnying +whiny +whip +whipcord +whipped +whippersnapper +whippersnappers +whippet +whippets +whipping +whippings +whips +whir +whirr +whirred +whirring +whirrs +whirs +whisk +whisked +whisker +whiskered +whiskers +whiskies +whisking +whisks +whisky +whiskys +whisper +whispered +whispering +whispers +whist +whit +whitaker +white +whitecap +whitecaps +whitefish +whitefishes +whitehead +whitehorse +whiten +whitened +whitener +whiteners +whiteness +whitening +whitens +whiter +whites +whitest +whitewash +whitewashed +whitewashes +whitewashing +whither +whiting +whitings +whitish +whitman +whitney +whits +whitsunday +whitsundays +whittier +whiz +whizz +whizzed +whizzes +whizzing +who +whoa +whodunit +whodunits +whodunnit +whodunnits +whoever +whom +whomever +whomsoever +whoop +whooped +whoopee +whoopees +whooping +whoops +whoosh +whooshed +whooshes +whooshing +whopper +whoppers +whopping +whore +whorehouse +whorehouses +whores +whose +whosoever +why +whys +wicca +wichita +wick +wicked +wickeder +wickedest +wickedness +wicker +wickers +wickerwork +wicket +wickets +wicks +wide +widen +widened +wideness +widening +widens +wider +widescreen +widescreens +widespread +widest +widgeon +widgeons +widow +widowed +widower +widowers +widowhood +widowing +widows +width +widths +wiemar +wiener +wieners +wife +wifi +wig +wigeon +wigeons +wigged +wigging +wiggins +wight +wights +wigner +wigs +wigwag +wigwagged +wigwagging +wigwags +wigwam +wigwams +wii +wiki +wikipedia +wikis +wimp +wimpier +wimpiest +wimps +wimpy +wimsey +win +wince +winced +winces +winch +winched +winches +winchester +winching +wincing +wind +windbag +windbags +windbreak +windbreaker +windbreakers +windbreaks +windburn +winded +windex +windhoek +windier +windiest +windiness +winding +windjammer +windjammers +window +windowed +windowing +windowpane +windowpanes +windows +windpipe +windpipes +winds +windscreen +windscreens +windsock +windsocks +windsor +windsors +windstorm +windstorms +windsurf +windsurfed +windsurfing +windsurfs +windswept +windup +windups +windward +windy +wine +wined +wineries +winery +wines +winesap +winfred +winfrey +wing +winged +winger +wingers +winging +wingnut +wingnuts +wings +wingspan +wingspans +wingspread +wingspreads +wingtip +wingtips +winifred +wining +wink +winked +winking +winks +winnebago +winner +winners +winnie +winning +winnings +winnipeg +winnow +winnowed +winnowing +winnows +wino +winos +wins +winsome +winsomer +winsomest +winston +winter +wintered +wintergreen +winterier +winteriest +wintering +winters +wintertime +wintery +winthrop +wintrier +wintriest +wintry +wipe +wiped +wiper +wipers +wipes +wiping +wire +wired +wires +wiretap +wiretapped +wiretapping +wiretaps +wirier +wiriest +wiriness +wiring +wiry +wisconsin +wisconsinite +wisconsinites +wisdom +wise +wiseacre +wiseacres +wisecrack +wisecracked +wisecracking +wisecracks +wiser +wises +wisest +wish +wishbone +wishbones +wished +wisher +wishers +wishes +wishing +wisp +wispier +wispiest +wisps +wispy +wist +wistaria +wistarias +wisteria +wisterias +wit +witch +witchcraft +witched +witchery +witches +witching +with +withdraw +withdrawing +withdrawn +withdraws +withdrew +wither +withered +withering +withers +within +without +withstand +withstanding +withstands +withstood +witness +witnessed +witnesses +witnessing +wits +witt +wittgenstein +witticism +witticisms +wittier +wittiest +wittiness +witting +witty +witwatersrand +wive +wives +wiz +wizard +wizardry +wizards +wizened +wizes +wizzes +wobegon +wodehouse +woe +woebegone +woes +wok +woke +woken +woks +woman +womanhood +womanish +womankind +womb +wombat +wombats +wombs +women +won +wonder +wonderbra +wondered +wondering +wonderment +wonders +wondrous +wong +wont +wonted +woo +wood +woodard +woodbine +woodcarving +woodcarvings +woodchuck +woodchucks +woodcock +woodcocks +woodcraft +woodcut +woodcuts +woodcutter +woodcutters +woodcutting +wooded +wooden +woodener +woodenest +woodenness +woodier +woodies +woodiest +woodiness +wooding +woodman +woodmen +woodpecker +woodpeckers +woodrow +woods +woodshed +woodsheds +woodsier +woodsiest +woodsman +woodsmen +woodstock +woodsy +woodward +woodwind +woodwinds +woodwork +woodworking +woodworm +woody +wooed +wooer +wooers +woof +woofed +woofer +woofers +woofing +woofs +wooing +woos +wooster +wooten +woozier +wooziest +wooziness +woozy +worcester +worcesters +worcestershire +word +worded +wordier +wordiest +wordiness +wording +wordings +words +wordsworth +wordy +wore +work +workaday +workbench +workbenches +workbook +workbooks +workday +workdays +worked +worker +workers +workfare +workforce +workhorse +workhorses +workhouse +workhouses +working +workingman +workingmen +workings +workman +workmanship +workmen +workout +workouts +works +worksheet +worksheets +workshop +workshops +workstation +workstations +workweek +workweeks +worm +wormed +wormier +wormiest +worming +worms +wormwood +wormy +worn +worried +worrier +worriers +worries +worrisome +worry +worrying +worryings +worrywart +worrywarts +worse +worsen +worsened +worsening +worsens +worship +worshipped +worshipper +worshippers +worshipping +worships +worst +worsted +worsting +worsts +worth +worthier +worthies +worthiest +worthiness +worthy +wot +wotan +wound +wounded +wounder +wounding +wounds +wove +woven +wovoka +wow +wowed +wowing +wows +wozniak +wozzeck +wrack +wraith +wraiths +wrap +wraparound +wraparounds +wrapped +wrapper +wrappers +wrapping +wrappings +wraps +wrapt +wrath +wreak +wreaked +wreaking +wreaks +wreath +wreathe +wreathed +wreathes +wreathing +wreaths +wreck +wreckage +wrecked +wrecker +wreckers +wrecking +wrecks +wren +wrench +wrenched +wrenches +wrenching +wrens +wrest +wrested +wresting +wrests +wretch +wretched +wretcheder +wretchedest +wretchedness +wretches +wrier +wriest +wright +wring +wringer +wringers +wringing +wrings +wrist +wristband +wristbands +wrists +wristwatch +wristwatches +writ +write +writer +writers +writes +writhe +writhed +writhes +writhing +writing +writings +writs +written +wrong +wrongdoer +wrongdoers +wrongdoing +wrongdoings +wronged +wronger +wrongest +wrongheaded +wrongheadedness +wronging +wrongness +wrongs +wrote +wroth +wrought +wrung +wry +wryer +wryest +wryness +wuhan +wuss +wusses +wyatt +wyeth +wynn +wyoming +wyomingite +wyomingites +xanadu +xanthippe +xavier +xemacs +xenakis +xenia +xenon +xenophobia +xenophobic +xenophon +xerographic +xerography +xerox +xeroxes +xerxes +xhosa +xiaoping +ximenes +xingu +xiongnu +xmas +xmases +xuzhou +yacc +yacht +yachted +yachting +yachts +yachtsman +yachtsmen +yack +yacked +yacking +yacks +yahoo +yahoos +yahtzee +yahweh +yak +yakima +yakked +yakking +yaks +yakut +yakutsk +yam +yamagata +yamaha +yammer +yammered +yammering +yammers +yamoussoukro +yams +yang +yangon +yangtze +yank +yanked +yankee +yankees +yanking +yanks +yaobang +yaounde +yap +yapped +yapping +yaps +yaqui +yard +yardage +yardages +yardarm +yardarms +yards +yardstick +yardsticks +yarn +yarns +yataro +yates +yaw +yawed +yawing +yawn +yawned +yawning +yawns +yaws +yea +yeager +yeah +yeahs +year +yearbook +yearbooks +yearn +yearned +yearning +yearnings +yearns +years +yeas +yeast +yeastier +yeastiest +yeasts +yeasty +yeats +yekaterinburg +yemen +yemeni +yemenis +yen +yenisei +yens +yeoman +yeomen +yep +yeps +yerevan +yerkes +yes +yesenia +yeses +yeshiva +yeshivah +yeshivahs +yeshivas +yeshivot +yeshivoth +yessed +yessing +yest +yesterday +yesterdays +yesteryear +yet +yeti +yevtushenko +yew +yews +yiddish +yip +yipped +yippee +yipping +yips +ymir +yock +yocks +yoda +yoga +yoghourt +yoghourts +yoghurt +yoghurts +yogi +yogin +yogins +yogis +yogurt +yogurts +yoke +yoked +yokes +yoking +yoknapatawpha +yoko +yokohama +yon +yonder +yong +yonkers +yore +york +yorkie +yorkshire +yorktown +yoruba +yosemite +yossarian +you +young +younger +youngest +youngish +youngster +youngsters +youngstown +your +yours +yous +youth +youths +youtube +ypres +yttrium +yuan +yucatan +yucca +yuccas +yuck +yucked +yuckier +yuckiest +yucking +yucks +yucky +yuk +yukked +yukking +yukon +yuks +yum +yummier +yummiest +yummy +yunnan +yup +yuppie +yuppies +yuppy +yups +yuri +yves +yvette +yvonne +zachariah +zachary +zachery +zagreb +zaire +zairian +zambezi +zambia +zambian +zambians +zamboni +zamenhof +zamora +zane +zanier +zanies +zaniest +zaniness +zanuck +zany +zanzibar +zap +zapata +zaporozhye +zapotec +zappa +zapped +zapper +zappers +zapping +zaps +zara +zebedee +zebra +zebras +zebu +zebus +zechariah +zed +zedekiah +zedong +zeds +zeke +zen +zenger +zenith +zeniths +zeno +zens +zephaniah +zephyr +zephyrs +zephyrus +zero +zeroed +zeroes +zeroing +zeros +zest +zests +zeta +zeus +zhengzhou +zhivago +zhukov +zibo +ziggy +zigzag +zigzagged +zigzagging +zigzags +zimbabwe +zimbabwean +zimbabweans +zimmerman +zinc +zinced +zincing +zincked +zincking +zincs +zing +zinged +zinger +zingers +zinging +zings +zinnia +zinnias +zion +zionism +zionisms +zionist +zionists +zions +zip +zipped +zipper +zippered +zippering +zippers +zippier +zippiest +zipping +zippy +zips +zircon +zirconium +zircons +zit +zither +zithers +zits +zodiac +zodiacs +zoe +zomba +zombi +zombie +zombies +zombis +zone +zoned +zones +zoning +zonked +zoo +zoom +zoomed +zooming +zooms +zoos +zorn +zoroaster +zoroastrian +zoroastrianism +zoroastrianisms +zorro +zosma +zsigmondy +zucchini +zucchinis +zukor +zuni +zwieback +zworykin +zygote +zygotes +zyrtec +zyuganov diff --git a/extras/dict/swedish b/extras/dict/swedish new file mode 100644 index 0000000..a67f64f --- /dev/null +++ b/extras/dict/swedish @@ -0,0 +1,78 @@ +ann +backa +backas +backe +backes +bara +boden +bodens +bos +britt +bror +brors +dans +ebba +ester +fors +forsa +frans +fristad +fristads +grums +gryt +gryts +hamra +hamras +hans +horn +horns +japan +kaj +kajs +kap +kisa +kisas +kista +kistas +knut +kosta +kyrkby +kyrkbys +maj +majs +mats +mora +moras +nacka +nackas +niger +nye +nyes +per +rut +sankt +signe +skara +skog +skogs +skruv +sten +stens +stig +stigen +stigens +stigs +strand +sven +tages +tina +tom +torna +tornas +trosa +urban +vara +vika +viken +vikens +vis diff --git a/scripts/update-dict.sh b/scripts/update-dict.sh new file mode 100755 index 0000000..49a9188 --- /dev/null +++ b/scripts/update-dict.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# Updates the dictionary files defined in extras/dict.json. + +BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" + +EXTRAS_DIR=${BASE_DIR}/../extras +CONFIG=${EXTRAS_DIR}/dict.json + +for lang in $(jq -r 'keys[]' $CONFIG); do + + echo "- Generating: $lang" + + files=$(jq -r ".$lang | if type==\"array\" then .[] else . end" $CONFIG) + dict=$(grep -hs ^ $files | $BASE_DIR/generate-dict.sh > $EXTRAS_DIR/dict/$lang) +done + +echo "Done" From 18178da53a230b139c9c2f1ce466a7ec29f387b0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 14 Feb 2020 02:03:11 +0100 Subject: [PATCH 082/404] extras: adding CMake files. --- extras/CMakeLists.txt | 49 ++++++++++++++++++++++++++++++++++++++++ extras/debian_control.in | 8 +++++++ 2 files changed, 57 insertions(+) create mode 100644 extras/CMakeLists.txt create mode 100644 extras/debian_control.in diff --git a/extras/CMakeLists.txt b/extras/CMakeLists.txt new file mode 100644 index 0000000..7fa0383 --- /dev/null +++ b/extras/CMakeLists.txt @@ -0,0 +1,49 @@ +cmake_minimum_required(VERSION 3.4) + +# Project name and version +project(eosio-keygen-extras VERSION 0.1.0) + +# -------------------------------- +# Package info +# -------------------------------- +set( PACKAGE_NAME ${PROJECT_NAME} ) +set( PACKAGE_DESCRIPTION "Extra files for eosio-keygen" ) +set( PACKAGE_VERSION "${PROJECT_VERSION}" ) +set( PACKAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) +set( PACKAGE_MAINTAINER "Henrik Hautakoski ") + +# Debian specific +set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") +set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) +set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}.deb ) + +# -------------------------------- +# Debian package +# -------------------------------- +set( DEB_ROOT "debroot" ) +set( DEB_FULL_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${DEB_ROOT} ) +set( DEB_SHARE_DIR ${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME} ) + +configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) + +add_custom_target(deb_content + COMMAND ${CMAKE_COMMAND} -E copy_directory + dict + ${DEB_FULL_ROOT}/${DEB_SHARE_DIR}/dict + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +) + +add_custom_target(deb_extras + COMMENT "dpkg: ${PROJECT_NAME} (${PACKAGE_DEB_FILENAME})" + COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + DEPENDS deb_content +) + +# -------------------------------- +# Install target +# -------------------------------- +install( + DIRECTORY dict + DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} +) diff --git a/extras/debian_control.in b/extras/debian_control.in new file mode 100644 index 0000000..0d4d207 --- /dev/null +++ b/extras/debian_control.in @@ -0,0 +1,8 @@ +Package: @PACKAGE_NAME@ +Version: @PACKAGE_DEB_VERSION@ +Description: @PACKAGE_DESCRIPTION@ +Section: misc +Priority: optional +Architecture: all +Homepage: @PACKAGE_URL@ +Maintainer: @PACKAGE_MAINTAINER@ From fcbe784fc818dc4d0876921606faf852150aaceb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 14 Feb 2020 02:06:50 +0100 Subject: [PATCH 083/404] CMakeLists.txt: add option to build extras. --- CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d0195d1..8854383 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,7 @@ project(eosio-keygen VERSION 0.1.6) # Options option(USE_THREADS "Compile with support for threads (if available)." ON) option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) +option(EXTRAS "Include non essential (extra) files in the build. (only for *nix)" OFF) # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) @@ -119,3 +120,11 @@ if (UNIX) # Only include in bash environments. FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif (UNIX) + +# -------------------------------- +# Extras +# -------------------------------- + +if (UNIX AND EXTRAS) + add_subdirectory(extras) +endif() From 4e876b3cc2641e38bfc7656d4e00bf7e96cb6ead Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 14 Feb 2020 02:52:23 +0100 Subject: [PATCH 084/404] .github/workflows/ci.yml: upload build artifact --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 191ed13..f1dd50e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,3 +49,9 @@ jobs: - name: Build shell: bash run: cmake --build build + + - name: Upload artifact + uses: actions/upload-artifact@v1 + with: + name: ${{matrix.os}}_${{matrix.build-opts}}-build + path: build From 2511e7b767316fff84353764762022fbc1b5cf41 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 14 Feb 2020 05:22:55 +0100 Subject: [PATCH 085/404] Adding .github/workflows/package.yml --- .github/workflows/package.yml | 37 +++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/package.yml diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml new file mode 100644 index 0000000..a142da3 --- /dev/null +++ b/.github/workflows/package.yml @@ -0,0 +1,37 @@ +name: Package + +on: + release: + types: [ created ] + +jobs: + # Debian package for ubuntu. + ubuntu: + strategy: + matrix: + os: [ ubuntu-16.04, ubuntu-18.04 ] + name: ${{matrix.os}} + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v1 + + - name: Build + run: ./build.sh + + - name: Package + id: package + run: | + ./build/generate_deb.sh + FILE=$(ls build/*.deb | head -1) + echo "::set-output name=filename::$FILE" + echo "::set-output name=name::$(basename $FILE)" + + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_name: ${{ steps.package.outputs.name }} + asset_path: ${{ steps.package.outputs.filename }} + asset_content_type: application/x-deb From 34c24eb71008b6379ef05f16093e89f0032d809d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 14:25:45 +0100 Subject: [PATCH 086/404] Adding core/dictionary --- CMakeLists.txt | 1 + src/core/dictionary.cpp | 105 ++++++++++++++++++++++++++++++++++++++++ src/core/dictionary.h | 72 +++++++++++++++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 src/core/dictionary.cpp create mode 100644 src/core/dictionary.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 8854383..b38fe0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ include(GNUInstallDirs) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE + src/core/dictionary.cpp src/string.cpp src/base58.cpp src/WIF.cpp diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp new file mode 100644 index 0000000..eaa9c8b --- /dev/null +++ b/src/core/dictionary.cpp @@ -0,0 +1,105 @@ + +#include +#include +#include +#include "../string.h" +#include "dictionary.h" + +namespace eoskeygen { + +struct StringContains { + StringContains(const std::string& str, std::vector& pos) : m_str(str), m_pos(pos) {} + bool operator()(const std::string& w) { + for(size_t p = m_str.find(w); p != std::string::npos; p = m_str.find(w, p+1)) { + m_pos.push_back(p); + } + return !m_pos.empty(); + } + std::string m_str; + std::vector& m_pos; +}; + +bool Dictionary::loadFromFile(const std::string& filename) +{ + FILE *fd; + char buf[1024]; + + fd = fopen(filename.c_str(), "r"); + if (!fd) { + return false; + } + + // Clear before adding. + clear(); + + // Read each line and add to the dictionary. + while(fgets(buf, sizeof(buf), fd) != NULL) { + std::string word(buf); + add(trim(word)); + } + + fclose(fd); + return true; +} + +void Dictionary::add(const std::string& word) +{ + // Do not insert a empty string. + if (word.length()) { + m_words.insert(word); + } +} + +void Dictionary::add(const Dictionary& dictionary) +{ + std::set_union( + m_words.begin(), m_words.end(), + dictionary.m_words.begin(), dictionary.m_words.end(), + std::inserter(m_words, m_words.begin()) + ); +} + +void Dictionary::clear() +{ + m_words.clear(); +} + +bool Dictionary::contains(const std::string& word) const +{ + return m_words.find(word) != m_words.cend(); +} + +Dictionary::search_result_t Dictionary::search(const std::string& subject) const +{ + search_result_t res; + + std::vector pos; + StringContains pred(subject, pos); + + // Find all words. + for(auto it = std::find_if(m_words.begin(), m_words.end(), pred); + it != m_words.end(); + it = std::find_if(++it, m_words.end(), pred)) { + + // Go through all found positions. + for (auto it2 = pos.begin(); it2 != pos.end(); it2++) { + + // Insert + auto rit = res.find(*it2); + if (rit == res.end()) { + res.emplace(*it2, it->length()); + } + // Update length if it's longer then the previous we found. + else if (rit->second < it->length()) { + rit->second = it->length(); + } + } + + // Clear positions + pos.clear(); + } + + return res; +} + +} // namespace eoskeygen diff --git a/src/core/dictionary.h b/src/core/dictionary.h new file mode 100644 index 0000000..baa5f7a --- /dev/null +++ b/src/core/dictionary.h @@ -0,0 +1,72 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_DICTIONARY_H +#define EOSIOKEYGEN_DICTIONARY_H + +#include +#include +#include +#include + +namespace eoskeygen { + +class Dictionary +{ +public : + //typedef std::map< std::string, std::vector > search_result_t; + + // index = position in the search string. + // value = length of the word from this position. + typedef std::map< size_t, size_t > search_result_t; + +public : + + // Load words from file. + bool loadFromFile(const std::string& filename); + + // Add a word + void add(const std::string& word); + + // Add words from another dictionary. + void add(const Dictionary& dictionary); + + void clear(); + + // Returns true if word exists in the dictionary. + bool contains(const std::string& word) const; + + // Searches the subject for words defined in the dictionary. + // Returns a map with the word as key and a vector + // of each position the word was found. + search_result_t search(const std::string& subject) const; + +protected : + + // Words in the dictionary. + std::set m_words; +}; + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_DICTIONARY_H */ From 01fc8911a3961bd8a8b5a93688c5fda1d293e075 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 14:39:09 +0100 Subject: [PATCH 087/404] key_search: make _thr_proc() a method to KeySearch class. --- src/key_search.h | 2 ++ src/key_search_mt.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/key_search.h b/src/key_search.h index 78de4d6..f2810fb 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -54,6 +54,8 @@ public : protected : #ifdef HAVE_THREADS + void _thr_proc(); + void _search_mt(size_t n); #endif /* HAVE_THREADS */ diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index cc775c1..a5c0db2 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -41,7 +41,7 @@ std::size_t g_count; std::mutex g_count_mtx; // Thread process. -static void _thr_proc(const strlist_t& word_list) { +void KeySearch::_thr_proc() { struct ec_keypair pair; @@ -49,7 +49,7 @@ static void _thr_proc(const strlist_t& word_list) { struct key_result res; ec_generate_key(&pair); - if (key_contains_word(&pair, word_list, &res)) { + if (key_contains_word(&pair, m_words, &res)) { // Guard output with mutex, so we don't get // interrupted mid write and can write to g_count safely. @@ -86,11 +86,11 @@ void KeySearch::_search_mt(size_t n) // Launch them. for(std::size_t i = 0; i < t.size(); i++) { - t[i] = std::thread(_thr_proc, m_words); + t[i] = std::thread(&KeySearch::_thr_proc, this); } // Use main thread for 1 search - _thr_proc(m_words); + _thr_proc(); // Wait for all threads to compelete. for(std::size_t i = 0; i < t.size(); i++) { From f9aab4033e1d5344e7ac7bfc897915bb045c9da4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:11:52 +0100 Subject: [PATCH 088/404] key_search: adding addDictionary() --- src/key_search.cpp | 5 +++++ src/key_search.h | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/key_search.cpp b/src/key_search.cpp index 12a3a11..82b0cb5 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -43,6 +43,11 @@ void KeySearch::addList(const strlist_t& list) } } +void KeySearch::addDictionary(const Dictionary& dictionary) +{ + m_dict = dictionary; +} + const strlist_t& KeySearch::getList() { return m_words; diff --git a/src/key_search.h b/src/key_search.h index f2810fb..da26772 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -24,6 +24,7 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_H #define EOSIOKEYGEN_KEY_SEARCH_H +#include "core/dictionary.h" #include "string.h" namespace eoskeygen { @@ -37,6 +38,8 @@ public : // Add a list of words to search for. void addList(const strlist_t& list); + void addDictionary(const Dictionary& dictionary); + // get the list of words to search for. const strlist_t& getList(); @@ -65,6 +68,9 @@ protected : // List of words to search for. strlist_t m_words; + // Dictionary to use when we find a search result. + Dictionary m_dict; + #ifdef HAVE_THREADS // Number of threads to use. size_t m_threads; From 912ae836845e0f25e0dc40c2a2ec37e23ac15056 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:12:34 +0100 Subject: [PATCH 089/404] key_search_helpers: in key_search_result() pass a dictionary object and highlight words from it. --- src/key_search_helpers.cpp | 39 +++++++++++++++++++++++++++++--------- src/key_search_helpers.h | 4 +++- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index b6aad5b..cada86d 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -22,27 +22,48 @@ * SOFTWARE. */ #include +#include "core/dictionary.h" #include "WIF.h" #include "console.h" #include "key_search_helpers.h" namespace eoskeygen { -void key_search_result(const struct ec_keypair* key, const struct key_result* result) { +static size_t highlight(console::Color color, const std::string& str, size_t pos, size_t len) { + + std::cout << console::fg(color, console::bold) + << str.substr(pos, len) + << console::reset; + return len; +} + +void key_search_result(const struct ec_keypair* key, const struct key_result* result, const Dictionary& dict) { std::string pub = wif_pub_encode(key->pub); - std::string word = pub.substr(result->pos, result->len); + Dictionary::search_result_t dict_res = dict.search(pub); std::cout << "----" << std::endl; - std::cout << "Found: " << word << std::endl; + std::cout << "Found: " << pub.substr(result->pos, result->len) << std::endl; - std::cout << "Public: " - << pub.substr(0, result->pos) - << console::fg(console::red, console::bold) << word << console::reset - << pub.substr(result->pos + result->len) - << std::endl; + std::cout << "Public: EOS"; + for(size_t i = 3; i < pub.length(); ) { - std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; + if (i == result->pos) { + i += highlight(console::red, pub, result->pos, result->len); + continue; + } + + auto p = dict_res.find(i); + if (p != dict_res.end()) { + i += highlight(console::blue, pub, p->first, p->second); + continue; + } + + std::cout << pub[i++]; + } + + std::cout << std::endl + << "Private: " << wif_priv_encode(key->secret) << std::endl; } bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result) { diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index f3a6bd5..c8913bb 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -29,12 +29,14 @@ namespace eoskeygen { +class Dictionary; + struct key_result { size_t pos; // position where the word was found. size_t len; // the length of the word. }; -void key_search_result(const struct ec_keypair* key, const struct key_result* result); +void key_search_result(const struct ec_keypair* key, const struct key_result* result, const Dictionary& dict); // Check if any word in appears in 's public key. // returns true if a word was found (stored in ), false otherwise. From 0536b8948626cc9598c541a8b161dcaaf77c90a8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:14:23 +0100 Subject: [PATCH 090/404] key_search_mt.cpp: pass m_dict to key_search_result() --- src/key_search_mt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index a5c0db2..35fcbfe 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -64,7 +64,7 @@ void KeySearch::_thr_proc() { // Update count and print result. g_count++; - key_search_result(&pair, &res); + key_search_result(&pair, &res, m_dict); } } } From 757ed2956a9aa6cb83e8b3961641505e176e2645 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:14:40 +0100 Subject: [PATCH 091/404] key_search.cpp: pass m_dict to key_search_result() --- src/key_search.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 82b0cb5..a67209a 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -67,7 +67,7 @@ void KeySearch::_search_linear(size_t n) { struct key_result res; ec_generate_key(&pair); if (key_contains_word(&pair, m_words, &res)) { - key_search_result(&pair, &res); + key_search_result(&pair, &res, m_dict); count++; } } From ade4708b50c31b8dab3c6908b012beb579d3b1e9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:36:14 +0100 Subject: [PATCH 092/404] Adding config.h.in --- CMakeLists.txt | 4 ++++ src/config.h.in | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/config.h.in diff --git a/CMakeLists.txt b/CMakeLists.txt index b38fe0d..620e94a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,10 @@ if (USE_THREADS) endif (Threads_FOUND) endif (USE_THREADS) +# Project config file +configure_file(src/config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY) +include_directories(${PROJECT_BINARY_DIR}) + # Include OpenSSL headers include_directories( ${OPENSSL_INCLUDE_DIR} ) diff --git a/src/config.h.in b/src/config.h.in new file mode 100644 index 0000000..888d883 --- /dev/null +++ b/src/config.h.in @@ -0,0 +1,31 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef CONFIG_H +#define CONFIG_H + +// Paths +#define CONFIG_SHARE_PATH "@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" +#define CONFIG_SHARE_FULL_PATH "@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@" + +#endif /* CONFIG_H */ From 62626c14c01577f96b6622872b5b7abaa5a7b8b8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 15:39:40 +0100 Subject: [PATCH 093/404] main.cpp: add support for --dict and --lang flags. --- src/main.cpp | 46 +++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3e16602..c15cbfd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,8 @@ #endif /* HAVE_THREADS */ #include #include +#include "config.h" +#include "core/dictionary.h" #include "string.h" #include "WIF.h" #include "crypto/ec.h" @@ -39,10 +41,12 @@ bool option_l33t = false; int option_num_threads = std::thread::hardware_concurrency(); #endif /* HAVE_THREADS */ -void cmd_search(const eoskeygen::strlist_t& words, int count) { +void cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { eoskeygen::KeySearch ks; + ks.addDictionary(dict); + if (option_l33t) { for(std::size_t i = 0; i < words.size(); i++) { ks.addList(eoskeygen::l33twords(words[i])); @@ -72,7 +76,8 @@ void usage(const char *name) { #ifdef HAVE_THREADS << " | --threads=" #endif /* HAVE_THREADS */ - << " ] [ ]" + << " | --dict= ... " + << " | --lang= ... ] [ ]" << " | benchmark [ ]" << " ]" << std::endl << std::endl; @@ -97,6 +102,17 @@ void usage(const char *name) { << " --threads=: Use of parallel threads for searching." << std::endl << " Default is what the operating system recomend." #endif /* HAVE_THREADS */ + << std::endl << std::endl + << " --dict=: Use words found in (separated by newline) to" << std::endl + << " highlight words in the keys found (note that the words in this" << std::endl + << " file are not used for search. only for highlight output)." << std::endl + << " There can be more then one --dict flag. In that case contents" << std::endl + << " of all files are merged into one dictionary." << std::endl + << std::endl << std::endl + << " --lang=: Same as --dict but will use " << std::endl + << " to find a file in " << CONFIG_SHARE_FULL_PATH << "/dict." << std::endl + << " There can be more then one --lang flag. In that case contents" << std::endl + << " of all files are merged into one dictionary." << std::endl << std::endl; std::cout << " Benchmark: " << std::endl @@ -140,6 +156,7 @@ int main(int argc, char **argv) { int count = 10; eoskeygen::strlist_t words; + eoskeygen::Dictionary dict; while(p++ < argc - 1) { if (!strcmp(argv[p], "--l33t")) { @@ -159,6 +176,29 @@ int main(int argc, char **argv) { << " thread support. this option is ignored." << std::endl; #endif /* HAVE_THREADS */ } + // Dictionary. + else if (!memcmp(argv[p], "--dict=", 7)) { + eoskeygen::Dictionary d; + std::string filename(argv[p] + 7); + + if (d.loadFromFile(filename)) { + dict.add(d); + } else { + std::cerr << "Could not load dictionary from file: " << filename << std::endl; + } + } + // Language (dictionary, but we find the file in /dict/) + else if (!memcmp(argv[p], "--lang=", 7)) { + eoskeygen::Dictionary d; + std::string lang(argv[p] + 7); + std::string filename(std::string(CONFIG_SHARE_FULL_PATH) + "/dict" + lang); + + if (d.loadFromFile(filename)) { + dict.add(d); + } else { + std::cerr << "Could not load language " << lang << " (" << filename << ")" << std::endl; + } + } // Error out on any flag we don't support. else if (argv[p][0] == '-') { std::cerr << "Unrecognized flag: " << argv[p] << std::endl; @@ -184,7 +224,7 @@ int main(int argc, char **argv) { return 1; } - cmd_search(words, count); + cmd_search(words, dict, count); } // Benchmark else if (!strcmp(argv[p], "benchmark")) { From 62ba5b125923e7475cc49370f01ac639f0914a90 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 16:30:41 +0100 Subject: [PATCH 094/404] docs/eosio-keygen.1.in: adding documentation for --dict and --lang flags. --- docs/eosio-keygen.1.in | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/eosio-keygen.1.in b/docs/eosio-keygen.1.in index 960ef1c..d618429 100644 --- a/docs/eosio-keygen.1.in +++ b/docs/eosio-keygen.1.in @@ -16,6 +16,8 @@ EOS search .OP \--l33t .OP \--threads= +.OP \--dict= ... +.OP \--lang= ... .B word_list .OP count .YS @@ -56,6 +58,25 @@ Use .I of parallel threads for searching. Default is what the operating system recomends. .TP 20 +.B --dict= +Use words found in +.I +(separated by newline) to highlight words in the keys found (note that the words in this + file are not used for search. only for highlight output). There can be more then one +.B --dict +flag. In that case contents of all files are merged into one dictionary. +.TP 20 +.B --lang= +Same as +.B --dict +but will use +.I +to find a file in +.B @CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict. +There can be more then one +.B --lang +flag. In that case contents of all files are merged into one dictionary. +.TP 20 .B count Number of keys to search for (default is 10) .RE 1 From b03ad0b22d08e6fe65cdb6538b4e89560980c8d3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 17:15:25 +0100 Subject: [PATCH 095/404] CMake: define _CRT_SECURE_NO_WARNINGS for MSVC compiler. Otherwise build will fail if you use "non-secure" functions. like fopen() --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 620e94a..e77fa5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,8 @@ set( CMAKE_CXX_EXTENSIONS OFF ) if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wconversion -Wno-sign-conversion -Wextra" ) +elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + add_definitions( "-D_CRT_SECURE_NO_WARNINGS=1" ) endif() # Libraries From 0464986ae85afac18f5797e6397031a3123fa605 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 17:18:04 +0100 Subject: [PATCH 096/404] core/dictionary.cpp: need to include header. --- src/core/dictionary.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index eaa9c8b..69c9272 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -1,6 +1,7 @@ #include #include +#include #include #include "../string.h" #include "dictionary.h" From 833e5f1ae58bce4bddcf37347a8a16a74819416f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 18:50:49 +0100 Subject: [PATCH 097/404] README.md: Add gcc and g++ to ubuntu dependencies. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f8d964..8dee12a 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ You will need `openssl` development files (version 1.1 or later) to compile and **Ubuntu:** ```sh -$ apt-get install libssl-dev cmake +$ apt-get install gcc g++ cmake libssl-dev ``` **For other linux distributions:** From 7bae67ddbc5fad34f6fdcd7e70c1d66536feedda Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 18:51:18 +0100 Subject: [PATCH 098/404] README.md: Improve MacOS part abit. --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 8dee12a..67246fd 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,9 @@ Consult the manual for how to get these installed. **MacOS:** +You must have a compiler installed. This project is known to build with `Xcode 11.0` but other versions should work. + +You need to have opessl and cmake installed also, this can be done with this `brew` command: ```sh $ brew install openssl cmake ``` From 7ee53b749735021818c32b4ad0ebb60659048718 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 19:31:19 +0100 Subject: [PATCH 099/404] scripts/generate-dict.sh: should not pass "-d" to "uniq". --- scripts/generate-dict.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/generate-dict.sh b/scripts/generate-dict.sh index e0f2faf..934d19d 100755 --- a/scripts/generate-dict.sh +++ b/scripts/generate-dict.sh @@ -12,4 +12,4 @@ BASE58_ALPHABET=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz LC_CTYPE=C awk "! /[^${BASE58_ALPHABET}]/" < /dev/stdin 2> /dev/null \ | sed -r '/^.{,2}$/d' \ | tr '[:upper:]' '[:lower:]' \ - | sort | uniq -d + | sort | uniq From eeff86feee4635c92d319eb4e2e637d4c5e0b681 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 19:37:00 +0100 Subject: [PATCH 100/404] scripts/generate-dict.sh: Change the order of operations. Should remove <=2 length words first then convert to lowercase then remove non base58 lines. --- scripts/generate-dict.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/generate-dict.sh b/scripts/generate-dict.sh index 934d19d..6038206 100755 --- a/scripts/generate-dict.sh +++ b/scripts/generate-dict.sh @@ -5,11 +5,11 @@ BASE58_ALPHABET=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz -# 1. Remove any line that contains non base58 characters -# 2. Remove lines that are 2 or less characters long -# 3. Convert to lowercase +# 1. Remove lines that are 2 or less characters long +# 2. Convert to lowercase +# 3. Remove any line that contains non base58 characters # 4. Sort and remove duplicate lines. -LC_CTYPE=C awk "! /[^${BASE58_ALPHABET}]/" < /dev/stdin 2> /dev/null \ - | sed -r '/^.{,2}$/d' \ +LC_CTYPE=C sed -r '/^.{,2}$/d' < /dev/stdin 2> /dev/null \ | tr '[:upper:]' '[:lower:]' \ + | awk "! /[^${BASE58_ALPHABET}]/" \ | sort | uniq From 694b057d818da95b9420e33252b1d97caf29b008 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 19:37:41 +0100 Subject: [PATCH 101/404] scripts/update-dict.sh: add support for files with relative paths. --- scripts/update-dict.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scripts/update-dict.sh b/scripts/update-dict.sh index 49a9188..634a4f9 100755 --- a/scripts/update-dict.sh +++ b/scripts/update-dict.sh @@ -10,8 +10,16 @@ for lang in $(jq -r 'keys[]' $CONFIG); do echo "- Generating: $lang" - files=$(jq -r ".$lang | if type==\"array\" then .[] else . end" $CONFIG) - dict=$(grep -hs ^ $files | $BASE_DIR/generate-dict.sh > $EXTRAS_DIR/dict/$lang) + files=() + for f in $(jq -r ".$lang | if type==\"array\" then .[] else . end" $CONFIG); do + + if [ "${f:0:1}" != "/" ]; then + f="$EXTRAS_DIR/$f" + fi + files+=( "$f" ) + done + + grep -hs ^ ${files[@]} | $BASE_DIR/generate-dict.sh > $EXTRAS_DIR/dict/$lang done echo "Done" From 50e55270a03e14a7d2582478ba3c2c08a70a1cfd Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 19:38:12 +0100 Subject: [PATCH 102/404] Adding extras/english-custom --- extras/dict.json | 3 ++- extras/english-custom | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 extras/english-custom diff --git a/extras/dict.json b/extras/dict.json index 0381564..3316601 100644 --- a/extras/dict.json +++ b/extras/dict.json @@ -1,7 +1,8 @@ { "english": [ "/usr/share/dict/american-english", - "/usr/share/dict/british-english" + "/usr/share/dict/british-english", + "english-custom" ], "swedish": "/usr/share/dict/swedish" } diff --git a/extras/english-custom b/extras/english-custom new file mode 100644 index 0000000..4e12a49 --- /dev/null +++ b/extras/english-custom @@ -0,0 +1,8 @@ +bitcoin +bos +btc +dac +eos +eosio +swe +wax From e385e46a947d8543108d0416c4e357d0fcdc216e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 17 Feb 2020 19:38:42 +0100 Subject: [PATCH 103/404] extras: update dictionary files. --- extras/dict/english | 2276 +- extras/dict/swedish | 49619 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51492 insertions(+), 403 deletions(-) diff --git a/extras/dict/english b/extras/dict/english index 2497413..ff2ae7b 100644 --- a/extras/dict/english +++ b/extras/dict/english @@ -319,6 +319,7 @@ accountants accounted accounting accounts +accouterments accoutrements accra accredit @@ -336,6 +337,7 @@ accuracy accurate accurateness accursed +accurst accusation accusations accusative @@ -761,6 +763,7 @@ advocated advocates advocating adware +adz adze adzes aegean @@ -877,6 +880,7 @@ aftertaste aftertastes afterthought afterthoughts +afterward afterwards afterword afterwords @@ -904,6 +908,16 @@ agent agents ages aggie +aggrandise +aggrandised +aggrandisement +aggrandises +aggrandising +aggrandize +aggrandized +aggrandizement +aggrandizes +aggrandizing aggravate aggravated aggravates @@ -946,6 +960,14 @@ agnostics ago agog agonies +agonise +agonised +agonises +agonising +agonize +agonized +agonizes +agonizing agony agra agrarian @@ -1094,6 +1116,10 @@ ambushed ambushes ambushing amd +ameba +amebae +amebas +amebic ameer ameers amen @@ -1110,8 +1136,20 @@ amerasian america american americana +americanisation +americanisations +americanise +americanised +americanises +americanising americanism americanisms +americanization +americanizations +americanize +americanized +americanizes +americanizing americans americas amerind @@ -1162,6 +1200,18 @@ amorous amorousness amorphous amorphousness +amortisation +amortisations +amortise +amortised +amortises +amortising +amortization +amortizations +amortize +amortized +amortizes +amortizing amos amount amounted @@ -1181,6 +1231,8 @@ amphetamines amphibian amphibians amphibious +amphitheater +amphitheaters amphitheatre amphitheatres amps @@ -1221,6 +1273,10 @@ anaerobic anaesthesia anaesthetic anaesthetics +anaesthetise +anaesthetised +anaesthetises +anaesthetising anaesthetist anaesthetists anaesthetize @@ -1305,10 +1361,21 @@ andy anecdota anecdote anecdotes +anemia +anemic anemometer anemometers anemone anemones +anesthesia +anesthetic +anesthetics +anesthetist +anesthetists +anesthetize +anesthetized +anesthetizes +anesthetizing aneurism aneurisms aneurysm @@ -1430,11 +1497,19 @@ ant antacid antacids antaeus +antagonise +antagonised +antagonises +antagonising antagonism antagonisms antagonist antagonistic antagonists +antagonize +antagonized +antagonizes +antagonizing antananarivo antarctic antarctica @@ -1666,8 +1741,14 @@ appertain appertained appertaining appertains +appetiser +appetisers +appetising appetite appetites +appetizer +appetizers +appetizing appoint appointed appointee @@ -1816,11 +1897,15 @@ arbitration arbitrator arbitrators arbitron +arbor arboreta arboretum arboretums +arbors arborvitae arborvitaes +arbour +arbours arbutus arbutuses arc @@ -1880,6 +1965,10 @@ arctics arcturus arden ardent +ardor +ardors +ardour +ardours arduous arduousness are @@ -1973,7 +2062,22 @@ arminius armistice armistices armonk +armor +armored +armorer +armorers +armories +armoring +armors +armory armour +armoured +armourer +armourers +armouries +armouring +armours +armoury armpit armpits armrest @@ -2041,7 +2145,9 @@ arrowroot arrows arroyo arroyos +arse arsenic +arses arson arsonist arsonists @@ -2064,6 +2170,8 @@ artichokes artie artier artiest +artifact +artifacts artifice artificer artificers @@ -2094,6 +2202,7 @@ ascendancy ascendant ascendants ascended +ascendency ascendent ascendents ascending @@ -2377,6 +2486,10 @@ atmospheres atmospheric atom atomic +atomiser +atomisers +atomizer +atomizers atoms atone atoned @@ -2453,6 +2566,14 @@ attires attiring attitude attitudes +attitudinise +attitudinised +attitudinises +attitudinising +attitudinize +attitudinized +attitudinizes +attitudinizing attorney attorneys attract @@ -2582,6 +2703,12 @@ authenticity author authored authoring +authorisation +authorisations +authorise +authorised +authorises +authorising authoritarian authoritarianism authoritarians @@ -2589,6 +2716,12 @@ authoritative authoritativeness authorities authority +authorization +authorizations +authorize +authorized +authorizes +authorizing authors authorship autism @@ -2885,6 +3018,7 @@ backyard backyards bacon bacteria +bacterias bacterium bactria bad @@ -2906,6 +3040,8 @@ badmouthing badmouths badness baedeker +baeria +baeyer baez baffin bag @@ -3052,6 +3188,10 @@ banyans baobab baobabs baotou +baptise +baptised +baptises +baptising baptism baptisms baptist @@ -3061,6 +3201,10 @@ baptistery baptistries baptistry baptists +baptize +baptized +baptizes +baptizing bar barabbas barack @@ -3275,6 +3419,14 @@ bassoons bassos bast bastard +bastardise +bastardised +bastardises +bastardising +bastardize +bastardized +bastardizes +bastardizing bastards baste basted @@ -3607,6 +3759,8 @@ behave behaved behaves behaving +behavior +behaviour behead beheaded beheading @@ -3617,6 +3771,14 @@ behest behests behind behinds +behoove +behooved +behooves +behooving +behove +behoved +behoves +behoving behring beiderbecke beige @@ -3724,6 +3886,7 @@ bergerac bergman bergs bergson +beria beriberi bering berkshire @@ -3881,6 +4044,7 @@ bewitch bewitched bewitches bewitching +beyer beyond bhutan bhutto @@ -3980,6 +4144,7 @@ binge binged bingeing binges +binging bingo binned binning @@ -4414,6 +4579,7 @@ borrows borsch borscht boru +bos bosch bose bosh @@ -5088,6 +5254,7 @@ brynner bryon brzezinski bsd +btc btu buber buccaneer @@ -5283,6 +5450,8 @@ buries burka burkas burke +burkha +burkhas burks burma burmese @@ -5309,6 +5478,8 @@ burp burped burping burps +burqa +burqas burr burred burring @@ -5552,6 +5723,7 @@ caesareans caesarian caesarians caesars +caesium caesura caesurae caesuras @@ -5681,6 +5853,8 @@ candide candidness candied candies +candor +candour candy candying cane @@ -5723,6 +5897,18 @@ canoeist canoeists canoes canon +canonisation +canonisations +canonise +canonised +canonises +canonising +canonization +canonizations +canonize +canonized +canonizes +canonizing canons canopied canopies @@ -5876,6 +6062,12 @@ carborundum carboy carboys carbs +carburetor +carburetors +carburetter +carburetters +carburettor +carburettors carcass carcasses carcinogen @@ -6185,7 +6377,23 @@ catechises catechising catechism catechisms +catechize +catechized +catechizes +catechizing categories +categorisation +categorisations +categorise +categorised +categorises +categorising +categorization +categorizations +categorize +categorized +categorizes +categorizing category cater catered @@ -6249,6 +6457,14 @@ causeways causing caustic caustics +cauterise +cauterised +cauterises +cauterising +cauterize +cauterized +cauterizes +cauterizing caution cautionary cautioned @@ -6333,6 +6549,12 @@ centenarian centenarians centenaries centenary +center +centered +centering +centerpiece +centerpieces +centers centigrade centigram centigramme @@ -6340,12 +6562,22 @@ centigrammes centigrams centime centimes +centimeter +centimeters +centimetre +centimetres centipede centipedes +centre +centred +centrepiece +centrepieces +centres centrifuge centrifuged centrifuges centrifuging +centring centrist centrists cents @@ -6391,6 +6623,7 @@ cesarean cesareans cesarian cesarians +cesium cessation cessations cession @@ -6518,8 +6751,20 @@ chapter chapters char character +characterisation +characterisations +characterise +characterised +characterises +characterising characteristic characteristics +characterization +characterizations +characterize +characterized +characterizes +characterizing characters charade charades @@ -6647,8 +6892,14 @@ cheats chechen chechnya check +checkbook +checkbooks checked checker +checkerboard +checkerboards +checkered +checkering checkers checking checkmate @@ -6717,6 +6968,18 @@ cheney chengdu chennai cheops +cheque +chequebook +chequebooks +chequed +chequer +chequerboard +chequerboards +chequered +chequering +chequers +cheques +chequing cheri cherie cherish @@ -7073,6 +7336,8 @@ cid cider ciders cigar +cigaret +cigarets cigarette cigarettes cigars @@ -7340,8 +7605,12 @@ cognac cognacs cognate cognates +cognisance +cognisant cognition cognitive +cognizance +cognizant cognomen cognomens cognomina @@ -7707,6 +7976,16 @@ computations compute computed computer +computerisation +computerise +computerised +computerises +computerising +computerization +computerize +computerized +computerizes +computerizing computers computes computing @@ -8050,6 +8329,8 @@ conking conks connect connected +connecter +connecters connecticut connecting connection @@ -8064,6 +8345,8 @@ conned connemara conner connery +connexion +connexions connie conning connivance @@ -8487,6 +8770,7 @@ cooking cookout cookouts cooks +cooky coon coons coop @@ -8752,6 +9036,7 @@ cosigners cosigning cosigns cosine +cosiness cosmetic cosmetics cosmic @@ -8993,6 +9278,11 @@ cozen cozened cozening cozens +cozier +cozies +coziest +coziness +cozy crab crabbe crabbed @@ -9288,8 +9578,16 @@ criteria criterion criterions critic +criticise +criticised +criticises +criticising criticism criticisms +criticize +criticized +criticizes +criticizing critics critique critiqued @@ -9689,6 +9987,16 @@ custom customary customer customers +customisation +customise +customised +customises +customising +customization +customize +customized +customizes +customizing customs cut cutback @@ -9756,6 +10064,7 @@ dab dabbed dabbing dabs +dac dacca dacha dachas @@ -10343,6 +10652,10 @@ defectives defector defectors defects +defence +defenced +defences +defencing defend defendant defendants @@ -10351,6 +10664,10 @@ defender defenders defending defends +defense +defensed +defenses +defensing defensive defensiveness defer @@ -10437,6 +10754,16 @@ degrades degrading degree degrees +dehumanisation +dehumanise +dehumanised +dehumanises +dehumanising +dehumanization +dehumanize +dehumanized +dehumanizes +dehumanizing dehumidified dehumidifier dehumidifiers @@ -10475,7 +10802,20 @@ dejecting dejection dejects dejesus +demagnetisation +demagnetise +demagnetised +demagnetises +demagnetising +demagnetization +demagnetize +demagnetized +demagnetizes +demagnetizing +demagog demagogic +demagogry +demagogs demagogue demagoguery demagogues @@ -10493,6 +10833,8 @@ demavend demean demeaned demeaning +demeanor +demeanour demeans demented dementia @@ -10518,6 +10860,16 @@ democracies democracy democrat democratic +democratisation +democratise +democratised +democratises +democratising +democratization +democratize +democratized +democratizes +democratizing democrats democritus demoed @@ -10619,6 +10971,7 @@ dent dented dentifrice dentifrices +dentin dentine denting dentist @@ -10638,6 +10991,18 @@ deny denying deodorant deodorants +deodorise +deodorised +deodoriser +deodorisers +deodorises +deodorising +deodorize +deodorized +deodorizer +deodorizers +deodorizes +deodorizing deon depart departed @@ -10648,6 +11013,7 @@ departs departure departures depend +dependance dependant dependants depended @@ -10738,6 +11104,14 @@ deputed deputes deputies deputing +deputise +deputised +deputises +deputising +deputize +deputized +deputizes +deputizing deputy derange deranged @@ -10788,6 +11162,7 @@ descendant descendants descended descendent +descendents descender descending descends @@ -10817,6 +11192,16 @@ desegregated desegregates desegregating desegregation +desensitisation +desensitise +desensitised +desensitises +desensitising +desensitization +desensitize +desensitized +desensitizes +desensitizing desert deserted deserter @@ -11118,6 +11503,7 @@ diaphragms diaries diarist diarists +diarrhea diarrhoea diary diaspora @@ -11231,6 +11617,16 @@ digger diggers digging digit +digitisation +digitise +digitised +digitises +digitising +digitization +digitize +digitized +digitizes +digitizing digits dignified dignifies @@ -11634,6 +12030,14 @@ disengagement disengagements disengages disengaging +disfavor +disfavored +disfavoring +disfavors +disfavour +disfavoured +disfavouring +disfavours disfigure disfigured disfigurement @@ -11673,6 +12077,14 @@ dishes dishing dishonest dishonesty +dishonor +dishonored +dishonoring +dishonors +dishonour +dishonoured +dishonouring +dishonours dishpan dishpans dishrag @@ -11743,6 +12155,16 @@ disorder disordered disordering disorders +disorganisation +disorganise +disorganised +disorganises +disorganising +disorganization +disorganize +disorganized +disorganizes +disorganizing disorient disorientation disoriented @@ -12256,6 +12678,8 @@ donor donors donovan dons +donut +donuts doodad doodads doohickey @@ -12447,8 +12871,15 @@ draft drafted draftee draftees +draftier +draftiest +draftiness drafting drafts +draftsman +draftsmanship +draftsmen +drafty drag dragged dragging @@ -12478,8 +12909,20 @@ dramamine dramas dramatic dramatics +dramatisation +dramatisations +dramatise +dramatised +dramatises +dramatising dramatist dramatists +dramatization +dramatizations +dramatize +dramatized +dramatizes +dramatizing drambuie drams drank @@ -12491,6 +12934,17 @@ drapery drapes draping drastic +draught +draughted +draughtier +draughtiest +draughtiness +draughting +draughts +draughtsman +draughtsmanship +draughtsmen +draughty dravidian draw drawback @@ -12521,6 +12975,7 @@ dreamier dreamiest dreaming dreams +dreamt dreamy drearier dreariest @@ -13013,8 +13468,16 @@ econometric economic economics economies +economise +economised +economises +economising economist economists +economize +economized +economizes +economizing economy ecosystem ecosystems @@ -13039,6 +13502,7 @@ eddies eddington eddy eddying +edema eden edens edgar @@ -13152,6 +13616,7 @@ egging eggnog eggo eggs +egis ego egocentric egocentrics @@ -13341,11 +13806,27 @@ emotion emotions emotive empathetic +empathise +empathised +empathises +empathising +empathize +empathized +empathizes +empathizing empathy emperor emperors emphases emphasis +emphasise +emphasised +emphasises +emphasising +emphasize +emphasized +emphasizes +emphasizing emphatic emphysema empire @@ -13378,6 +13859,14 @@ enacting enactment enactments enacts +enamor +enamored +enamoring +enamors +enamour +enamoured +enamouring +enamours encamp encamped encamping @@ -13456,6 +13945,14 @@ endearing endearment endearments endears +endeavor +endeavored +endeavoring +endeavors +endeavour +endeavoured +endeavouring +endeavours ended endemic endemics @@ -13499,6 +13996,18 @@ enemies enemy energetic energies +energise +energised +energiser +energisers +energises +energising +energize +energized +energizer +energizers +energizes +energizing energy enervate enervated @@ -13760,11 +14269,17 @@ enzymes eocene eon eons +eos +eosio epcot ephesian ephesus ephraim epic +epicenter +epicenters +epicentre +epicentres epics epictetus epicure @@ -13793,6 +14308,14 @@ epithet epithets epitome epitomes +epitomise +epitomised +epitomises +epitomising +epitomize +epitomized +epitomizes +epitomizing epoch epochs epoxied @@ -13933,6 +14456,7 @@ erupting eruption eruptions erupts +ervin erwin erythrocyte erythrocytes @@ -13966,6 +14490,9 @@ escutcheon escutcheons eskimo eskimos +esophagi +esophagus +esophaguses esoteric esperanto esperanza @@ -14007,6 +14534,10 @@ ester esters estes esther +esthete +esthetes +esthetic +esthetics estimate estimated estimates @@ -14025,6 +14556,7 @@ estrangement estrangements estranges estranging +estrogen estuaries estuary eta @@ -14394,6 +14926,10 @@ exorcism exorcisms exorcist exorcists +exorcize +exorcized +exorcizes +exorcizing exotic exotics expand @@ -14543,6 +15079,14 @@ exquisite extant extemporaneous extempore +extemporise +extemporised +extemporises +extemporising +extemporize +extemporized +extemporizes +extemporizing extend extended extending @@ -14707,6 +15251,12 @@ factor factored factories factoring +factorisation +factorise +factorising +factorization +factorize +factorizing factors factory factotum @@ -14728,6 +15278,8 @@ fagging faggot faggots fagin +fagot +fagots fags fahd fahrenheit @@ -14800,6 +15352,14 @@ fanny fans fantasied fantasies +fantasise +fantasised +fantasises +fantasising +fantasize +fantasized +fantasizes +fantasizing fantastic fantasy fantasying @@ -14926,6 +15486,20 @@ faust faustian faustino faustus +favor +favored +favoring +favorite +favorites +favoritism +favors +favour +favoured +favouring +favourite +favourites +favouritism +favours fawkes fawn fawned @@ -14970,6 +15544,7 @@ featuring feb februaries february +feces fecund fecundity fed @@ -15068,6 +15643,8 @@ ferrying fervency fervent fervid +fervor +fervour fest fester festered @@ -15087,6 +15664,8 @@ fetched fetches fetching feted +fetich +fetiches fetid feting fetish @@ -15127,7 +15706,13 @@ fibbed fibber fibbers fibbing +fiber +fiberboard +fibers fibonacci +fibre +fibreboard +fibres fibroid fibrous fibs @@ -15420,6 +16005,7 @@ fodder fodders foe foes +foetid foetus foetuses fog @@ -15876,8 +16462,18 @@ franz frappes fraser frat +fraternisation +fraternise +fraternised +fraternises +fraternising fraternities fraternity +fraternization +fraternize +fraternized +fraternizes +fraternizing fratricide fratricides frats @@ -16245,6 +16841,10 @@ furnishes furnishing furnishings furniture +furor +furore +furores +furors furred furrier furriers @@ -16300,7 +16900,11 @@ futz futzed futzes futzing +fuze +fuzed +fuzes fuzhou +fuzing fuzz fuzzbuster fuzzed @@ -16344,8 +16948,11 @@ gaffs gag gagarin gage +gaged +gages gagged gagging +gaging gags gaia gaiety @@ -16517,6 +17124,7 @@ gasping gasps gassed gasser +gasses gassier gassiest gassing @@ -17012,6 +17620,8 @@ gog goiania going goings +goiter +goiters goitre goitres gomez @@ -17027,13 +17637,16 @@ gonged gonging gongs gonna +gonorrhea gonorrhoea goo goober goobers good +goodby goodbye goodbyes +goodbys goodie goodies goodman @@ -17196,6 +17809,8 @@ grammar grammarian grammarians grammars +gramme +grammes grammy gramophone grampians @@ -17312,6 +17927,13 @@ gravy gray graybeard graybeards +grayed +grayer +grayest +graying +grayish +grayness +grays graze grazed grazes @@ -17396,6 +18018,7 @@ greyhound greyhounds greying greyish +greyness greys grid gridiron @@ -17562,6 +18185,8 @@ grownups grows growth growths +groyne +groynes grub grubbed grubbier @@ -17859,6 +18484,7 @@ haemorrhage haemorrhaged haemorrhages haemorrhaging +haemorrhoid haemorrhoids hafiz hafnium @@ -18083,6 +18709,14 @@ harassment harbin harbinger harbingers +harbor +harbored +harboring +harbors +harbour +harboured +harbouring +harbours hard hardback hardbacks @@ -18142,6 +18776,16 @@ harmonics harmonies harmonious harmoniousness +harmonisation +harmonise +harmonised +harmonises +harmonising +harmonization +harmonize +harmonized +harmonizes +harmonizing harmony harms harness @@ -18335,6 +18979,7 @@ hazing hazings hazmat hazy +hbo head headache headaches @@ -18539,6 +19184,12 @@ hemispheres hemispheric hemmed hemming +hemorrhage +hemorrhaged +hemorrhages +hemorrhaging +hemorrhoid +hemorrhoids hemp hempen hems @@ -19052,8 +19703,20 @@ homiest hominess homing hominy +homoeopathic +homoeopathy homogeneity homogeneous +homogenisation +homogenise +homogenised +homogenises +homogenising +homogenization +homogenize +homogenized +homogenizes +homogenizing homograph homographs homonym @@ -19103,12 +19766,20 @@ honk honked honking honks +honor honoraria honorarium honorariums honorary +honored honorific honorifics +honoring +honors +honour +honoured +honouring +honours honshu hooch hood @@ -19150,6 +19821,8 @@ hooped hooper hooping hoops +hoorah +hoorahs hooray hoorayed hooraying @@ -19406,6 +20079,13 @@ humane humaneness humaner humanest +humanisation +humanise +humanised +humaniser +humanisers +humanises +humanising humanism humanist humanistic @@ -19415,6 +20095,13 @@ humanitarianism humanitarians humanities humanity +humanization +humanize +humanized +humanizer +humanizers +humanizes +humanizing humankind humanness humanoid @@ -19450,9 +20137,17 @@ hummock hummocks hummus humongous +humor +humored +humoring humorist humorists humorous +humors +humour +humoured +humouring +humours hump humpback humpbacked @@ -19573,6 +20268,14 @@ hyades hyaena hyaenas hybrid +hybridise +hybridised +hybridises +hybridising +hybridize +hybridized +hybridizes +hybridizing hybrids hyde hyderabad @@ -19645,9 +20348,17 @@ hypnoses hypnosis hypnotic hypnotics +hypnotise +hypnotised +hypnotises +hypnotising hypnotism hypnotist hypnotists +hypnotize +hypnotized +hypnotizes +hypnotizing hypo hypochondria hypochondriac @@ -19664,6 +20375,14 @@ hypotenuses hypothermia hypotheses hypothesis +hypothesise +hypothesised +hypothesises +hypothesising +hypothesize +hypothesized +hypothesizes +hypothesizing hysterectomies hysterectomy hysteresis @@ -19671,16 +20390,29 @@ hysteria hysteric hysterics hyundai +iaccoca +iago iamb iambic iambics iambs +ian +iapetus +ibadan +iberia +iberian ibex ibexes ibices ibis ibises +ibiza +ibm +ibo +ibsen ibuprofen +icahn +icarus ice iceberg icebergs @@ -19704,6 +20436,11 @@ icky icon icons icy +idaho +idahoan +idahoans +idahoes +idahos idea ideas identification @@ -19732,10 +20469,13 @@ idiot idiotic idiots ids +ieyasu iffier iffiest iffy ifs +ignacio +ignatius igneous ignite ignited @@ -19754,8 +20494,13 @@ ignore ignored ignores ignoring +igor iguana iguanas +iguassu +ike +ikea +ikhnaton ikon ikons image @@ -19785,6 +20530,7 @@ imbue imbued imbues imbuing +imhotep imitate imitated imitates @@ -19823,11 +20569,25 @@ immoderate immodest immodesty immune +immunisation +immunisations +immunise +immunised +immunises +immunising immunity +immunization +immunizations +immunize +immunized +immunizes +immunizing immure immured immures immuring +imodium +imogene imp impact impacted @@ -20023,6 +20783,8 @@ impute imputed imputes imputing +imus +ina inaccuracies inaccuracy inaccurate @@ -20064,6 +20826,7 @@ inbred inbreed inbreeding inbreeds +inca incandescence incandescent incantation @@ -20085,6 +20848,7 @@ incarnates incarnating incarnation incarnations +incas incautious incendiaries incendiary @@ -20104,6 +20868,7 @@ inched inches inching inchoate +inchon incidence incidences incident @@ -20248,6 +21013,12 @@ index indexed indexes indexing +india +indian +indiana +indianan +indianans +indians indicate indicated indicates @@ -20265,6 +21036,7 @@ indicting indictment indictments indicts +indies indifference indifferent indigence @@ -20277,6 +21049,7 @@ indignation indignities indignity indigo +indira indirect indirection indirectness @@ -20289,19 +21062,26 @@ indisposition indispositions indistinct indistinctness +indochina +indochinese indoctrinate indoctrinated indoctrinates indoctrinating indoctrination +indonesia +indonesian +indonesians indoor indoors +indore indorse indorsed indorsement indorsements indorses indorsing +indra induce induced inducement @@ -20322,10 +21102,12 @@ indue indued indues induing +indus industries industrious industriousness industry +indy inebriate inebriated inebriates @@ -20344,12 +21126,14 @@ inequity inert inertia inertness +ines inexact inexpedient inexpensive inexperience inexperienced inexpert +inez infamies infamous infamy @@ -20442,6 +21226,8 @@ infuses infusing infusion infusions +ing +inge ingenious ingenuity ingenuous @@ -20457,6 +21243,7 @@ ingrain ingrained ingraining ingrains +ingram ingrate ingrates ingratiate @@ -20466,8 +21253,10 @@ ingratiating ingratitude ingredient ingredients +ingres ingress ingresses +ingrid ingrown inhabit inhabitant @@ -20569,6 +21358,7 @@ innuendo innuendoes innuendos inoffensive +inonu inoperative inopportune inordinate @@ -20691,6 +21481,8 @@ inspire inspired inspires inspiring +instagram +instamatic instance instanced instances @@ -21066,6 +21858,9 @@ intuition intuitions intuitive intuits +inuit +inuits +inuktitut inundate inundated inundates @@ -21082,6 +21877,7 @@ invader invaders invades invading +invar invariant invasion invasions @@ -21160,32 +21956,78 @@ invoking inward inwards iodine +iodise +iodised +iodises +iodising +iodize +iodized +iodizes +iodizing ion +ionesco +ionian +ionic +ionics +ionisation +ionise +ionised +ioniser +ionisers +ionises +ionising +ionization +ionize +ionized ionizer ionizers +ionizes +ionizing ionosphere ionospheres ions iota iotas +iowa +iowan +iowans +iowas ipad ipecac ipecacs +iphigenia iphone ipod +iquitos +ira +iran +iranian +iranians +iraq +iraqi +iraqis irate irateness ire +irene iridescence iridescent iridium iris irises +irish +irisher +irishman +irishmen +irishwoman +irishwomen irk irked irking irks irksome +irkutsk +irma iron ironed ironic @@ -21195,11 +22037,14 @@ irons ironware ironwork irony +iroquoian +iroquois irradiate irradiated irradiates irradiating irradiation +irrawaddy irrespective irreverence irreverent @@ -21218,8 +22063,23 @@ irritation irritations irruption irruptions +irtish +irvin +irving +irwin +isaac +isaiah +iscariot +isfahan +isherwood +ishim +ishtar +isiah +isidro +isis ism isms +iso isobar isobars isometric @@ -21229,6 +22089,8 @@ isotope isotopes isotopic isotropic +issac +issachar issuance issue issued @@ -21237,6 +22099,9 @@ issuing isthmi isthmus isthmuses +isuzu +itaipu +itasca itch itched itches @@ -21246,6 +22111,16 @@ itchiness itching itchy item +itemisation +itemise +itemised +itemises +itemising +itemization +itemize +itemized +itemizes +itemizing items iterate iterated @@ -21256,16 +22131,31 @@ iterations iterative iterator iterators +ithaca +ithacan itinerant itinerants itineraries itinerary +ito its itunes +iva +ivan +ivanhoe +ives ivies ivories ivory ivy +iyar +izaak +izanagi +izanami +izhevsk +izmir +izod +izvestia jab jabbed jabber @@ -21481,6 +22371,14 @@ jennifer jennings jenny jensen +jeopardise +jeopardised +jeopardises +jeopardising +jeopardize +jeopardized +jeopardizes +jeopardizing jeopardy jephthah jeremiad @@ -22041,6 +22939,10 @@ keogh keokuk kept keratin +kerb +kerbed +kerbing +kerbs kerchief kerchiefs kerchieves @@ -22149,6 +23051,10 @@ kiddoes kiddos kiddy kidnap +kidnaped +kidnaper +kidnapers +kidnaping kidnapped kidnapper kidnappers @@ -22454,404 +23360,6 @@ kwanzaas kyoto kyrgyzstan kyushu -laban -labrador -labradors -lacey -lachesis -lacy -ladoga -ladonna -lafayette -lafitte -lagos -lagrange -lagrangian -lahore -laius -lajos -lakeisha -lakewood -lakisha -lakota -lakshmi -lamar -lamarck -lamaze -lamb -lambert -lamborghini -lambrusco -lamont -lana -lanai -lancashire -lancaster -lance -land -landon -landry -landsat -landsteiner -lane -lang -langerhans -langmuir -lanka -lanny -lansing -lanzhou -lao -laocoon -laos -laotian -laotians -lapp -lapps -lara -laramie -lardner -laredo -larousse -larry -lars -larsen -larson -las -lascaux -lassa -lassen -lassie -latasha -lateran -latin -latina -latiner -latino -latinos -latins -latisha -latonya -latoya -latrobe -latvia -latvian -latvians -laud -lauder -laue -laundromat -laura -laurasia -lauren -laurence -laurent -lauri -laurie -lavern -laverne -lavoisier -lavonne -lawanda -lawrence -lawson -layamon -lazaro -lazarus -lbj -lea -leach -leah -leakey -lean -leander -leann -leanna -leanne -lear -learjet -leary -leavenworth -lebanese -lebanon -lebesgue -leda -lederberg -lee -leeds -leeuwenhoek -leeward -left -legendre -leger -leghorn -lego -legree -lehman -leibniz -leicester -leiden -leif -leigh -leipzig -lemaitre -lemuria -len -lena -lenard -lenin -leningrad -leninism -leninist -lennon -lenny -leno -lenoir -lenora -lenore -lent -lenten -lents -leo -leon -leona -leonard -leonardo -leonid -leonidas -leonor -leos -lepidus -lepke -lepus -lerner -leroy -les -lesa -lesotho -lesseps -lessie -lester -lestrade -leta -letha -lethe -leticia -letitia -letterman -levant -levesque -levi -leviathan -levine -leviticus -levitt -levy -lew -lewinsky -lewis -lexington -lexus -lhasa -lhotse -libby -liberace -liberia -liberian -liberians -libra -libras -librium -libya -libyan -libyans -lichtenstein -lidia -lie -lieberman -liechtenstein -liege -lima -limbaugh -limburger -limoges -limousin -limpopo -lin -lina -lind -linda -lindbergh -lindsay -lindsey -lindy -linnaeus -linotype -linton -linus -linux -linwood -lipizzaner -lippi -lippmann -lipscomb -lipton -lisa -lisbon -lissajous -lister -listerine -liston -liszt -lithuania -lithuanian -lithuanians -litton -livia -livingston -livingstone -livonia -livy -liz -liza -lizzie -lizzy -loafer -loafers -lobachevsky -lochinvar -locke -lockean -lockheed -lockwood -lodge -lodz -loewe -loewi -loews -logan -lohengrin -loire -lois -loki -lombard -lombardi -lombardy -lome -lon -london -londoner -long -longstreet -lonnie -lopez -lora -loraine -lord -lords -loren -lorena -lorene -lorentz -lorenz -lorenzo -loretta -lori -lorie -lorna -lorraine -lorre -lorrie -los -lot -lothario -lott -lottie -lou -louie -louis -louisa -louise -louisiana -louisianan -louisianans -louisianian -louisianians -lourdes -louvre -love -lovecraft -lowe -lowenbrau -lowery -loyang -loyd -luanda -luann -lubavitcher -lubbock -lubumbashi -lucas -luce -lucia -lucian -luciano -lucien -lucifer -lucinda -lucio -lucite -lucius -lucknow -lucretia -lucretius -lucy -luddite -ludhiana -ludwig -lufthansa -luftwaffe -luger -lugosi -luigi -luis -luisa -luke -luna -lupe -lupus -luria -lusaka -lusitania -luther -lutheran -lutheranism -lutherans -luvs -luxembourg -luxembourger -luxembourgers -luz -luzon -lvov -lycra -lycurgus -lydia -lyman -lyme -lynch -lynda -lyndon -lynette -lynn -lynne -lynnette -lyon -lyons -lyra -lysenko -lysistrata -lyx macabre macadam macao @@ -22903,7 +23411,6 @@ mackinaw mackinaws mackintosh mackintoshes -macleish macon macro macrobiotic @@ -22988,7 +23495,17 @@ magnesia magnesium magnet magnetic +magnetisation +magnetise +magnetised +magnetises +magnetising magnetism +magnetization +magnetize +magnetized +magnetizes +magnetizing magneto magnetos magnetosphere @@ -23160,6 +23677,10 @@ mandy mane manes manet +maneuver +maneuvered +maneuvering +maneuvers manfred manga manganese @@ -23222,6 +23743,10 @@ mannikins manning mannish mannishness +manoeuvre +manoeuvred +manoeuvres +manoeuvring manor manors manpower @@ -23235,9 +23760,11 @@ mansion mansions manson mantegna +mantes mantis mantises mantissa +mantoes mantra mantras manufacture @@ -23595,6 +24122,7 @@ mate mated maternity mates +math mathematician mathematicians mathematics @@ -23691,6 +24219,16 @@ maxed maxes maxim maxima +maximisation +maximise +maximised +maximises +maximising +maximization +maximize +maximized +maximizes +maximizing maxims maximum maximums @@ -23745,14 +24283,14 @@ mcgovern mcgowan mcguffey mcguire +mci +mcintosh +mcintyre mckay mckee mckenzie mckinney mcknight -mclean -mcleod -mcluhan mcmahon mcnamara mcnaughton @@ -23764,7 +24302,9 @@ meade meadow meadows meagan +meager meagerness +meagre mean meander meandered @@ -23794,9 +24334,19 @@ mecca meccas mechanic mechanics +mechanisation +mechanise +mechanised +mechanises +mechanising mechanism mechanisms mechanistic +mechanization +mechanize +mechanized +mechanizes +mechanizing medan medea media @@ -23893,6 +24443,16 @@ memoranda memorandum memorandums memories +memorisation +memorise +memorised +memorises +memorising +memorization +memorize +memorized +memorizes +memorizing memory memos memphis @@ -23967,6 +24527,14 @@ mercedes mercenaries mercenary mercer +mercerise +mercerised +mercerises +mercerising +mercerize +mercerized +mercerizes +mercerizing merchandise merchandised merchandises @@ -24042,7 +24610,15 @@ meshed meshes meshing mesmer +mesmerise +mesmerised +mesmerises +mesmerising mesmerism +mesmerize +mesmerized +mesmerizes +mesmerizing mesopotamia mesozoic mesquite @@ -24083,6 +24659,14 @@ metaphors metaphysics metastases metastasis +metastasise +metastasised +metastasises +metastasising +metastasize +metastasized +metastasizes +metastasizing mete meted meteor @@ -24109,6 +24693,8 @@ methodists methods methought meting +metre +metres metric metrication metrics @@ -24172,6 +24758,8 @@ microfiche microfiches micrometer micrometers +micrometre +micrometres micron micronesia micronesian @@ -24313,18 +24901,39 @@ mingus mini miniature miniatures +miniaturisation +miniaturise +miniaturised +miniaturises +miniaturising miniaturist miniaturists +miniaturization +miniaturize +miniaturized +miniaturizes +miniaturizing minibike minibikes minibus minibuses +minibusses minicam minicams minicomputer minicomputers minim minima +minimisation +minimise +minimised +minimises +minimising +minimization +minimize +minimized +minimizes +minimizing minims minimum minimums @@ -24443,6 +25052,8 @@ misbehave misbehaved misbehaves misbehaving +misbehavior +misbehaviour miscarriage miscarriages miscarried @@ -24487,6 +25098,10 @@ miscues miscuing misdeed misdeeds +misdemeanor +misdemeanors +misdemeanour +misdemeanours misdiagnose misdiagnosed misdiagnoses @@ -24671,8 +25286,13 @@ misuse misused misuses misusing +mit mitch mite +miter +mitered +mitering +miters mites mitford mithra @@ -24683,6 +25303,10 @@ mitigates mitigating mitigation mitosis +mitre +mitred +mitres +mitring mitsubishi mitt mitten @@ -24748,11 +25372,21 @@ moderation moderator moderators modern +modernisation +modernise +modernised +modernises +modernising modernism modernist modernistic modernists modernity +modernization +modernize +modernized +modernizes +modernizing moderns modes modest @@ -24805,7 +25439,20 @@ moister moistest moistness moisture +moisturise +moisturised +moisturiser +moisturisers +moisturises +moisturising +moisturize +moisturized +moisturizer +moisturizers +moisturizes +moisturizing mojave +mom mombasa moment momentary @@ -24817,6 +25464,7 @@ momma mommas mommies mommy +moms mona monaco monarch @@ -24839,6 +25487,14 @@ monera monet monetarism monetary +monetise +monetised +monetises +monetising +monetize +monetized +monetizes +monetizing money moneybag moneybags @@ -25156,8 +25812,16 @@ motorcar motorcars motored motoring +motorise +motorised +motorises +motorising motorist motorists +motorize +motorized +motorizes +motorizing motorman motormen motormouth @@ -25328,6 +25992,7 @@ mummify mummifying mummy mumps +mums munch munched munches @@ -25420,6 +26085,8 @@ mussing mussorgsky mussy must +mustache +mustaches mustang mustangs mustard @@ -25650,9 +26317,11 @@ natty nature natures naugahyde +naught naughtier naughtiest naughtiness +naughts naughty nauru nausea @@ -25777,6 +26446,18 @@ negros nehemiah nehru neigh +neighbor +neighbored +neighborhood +neighborhoods +neighboring +neighbors +neighbour +neighboured +neighbourhood +neighbourhoods +neighbouring +neighbours neighed neighing neighs @@ -25835,9 +26516,11 @@ nether nethermost nets netscape +nett netted nettie netting +netts network networked networking @@ -26043,6 +26726,9 @@ nisei nissan nit nita +nite +niter +nites nitpick nitpicked nitpicker @@ -26053,6 +26739,7 @@ nitrate nitrated nitrates nitrating +nitre nitrogen nitrogenous nits @@ -26197,6 +26884,7 @@ nootka nope nor nora +norad norbert norberto nordic @@ -26268,6 +26956,14 @@ nostrums nosy not notaries +notarise +notarised +notarises +notarising +notarize +notarized +notarizes +notarizing notary notation notations @@ -26460,6 +27156,7 @@ nymphs oaf oafish oafs +oahu oak oaken oaks @@ -26474,9 +27171,14 @@ oases oasis oat oaten +oates oath oaths oats +oaxaca +obadiah +obama +obamacare obduracy obdurate obedience @@ -26484,6 +27186,7 @@ obedient obeisance obeisances obeisant +oberon obese obesity obey @@ -26596,10 +27299,12 @@ obvious obviousness ocarina ocarinas +occam occasion occasioned occasioning occasions +occident occupancy occupant occupants @@ -26617,22 +27322,31 @@ occurring occurs ocean oceangoing +oceania oceanic oceanographer oceanographers oceanographic oceanography oceans +oceanus +ocher +ochoa ochre +oct octagon octagons octane octave octaves +octavia +octavio octet octets octette octettes +october +octobers octogenarian octogenarians octopi @@ -26646,25 +27360,48 @@ oddity oddness odds ode +oder odes +odessa +odets +odin odious +odis odium +odom odometer odometers +odor odoriferous odorous +odors +odour +odours +odysseus odyssey odysseys +oedema +oedipus +oersted +oesophagi +oesophagus +oesophaguses +oestrogen off offbeat offbeats offed +offenbach +offence +offences offend offended offender offenders offending offends +offense +offenses offensive offensiveness offensives @@ -26677,6 +27414,7 @@ offertories offertory offhand office +officemax officer officers offices @@ -26706,26 +27444,49 @@ often oftener oftenest oftentimes +ogbomosho +ogden ogre ogres +ohio +ohioan +ohioans ohm ohms oho ohs +ohsa oink oinked oinking oinks ointment ointments +oise +ojibwa +ojibwas okay okayed okaying okays +oked +okeechobee +okefenokee +okhotsk +okinawa +oking okra okras +oks +oktoberfest +omaha +omahas +oman +omar +omayyad ombudsman ombudsmen +omdurman omega omegas omen @@ -26749,9 +27510,14 @@ omniscient omnivore omnivores omnivorous +omsk +onassis once oncoming one +onega +onegin +oneida oneness onerous ones @@ -26760,14 +27526,18 @@ ongoing onion onions onionskin +ono onomatopoeia onomatopoeic +onondaga onrush onrushes onrushing +onsager onset onsets onshore +ontario onto onus onuses @@ -26776,6 +27546,7 @@ onwards onyx onyxes oops +oort ooze oozed oozes @@ -26797,6 +27568,7 @@ openhanded opening openings openness +openoffice opens openwork opera @@ -26816,6 +27588,7 @@ operator operators operetta operettas +ophiuchus opiate opiates opine @@ -26828,6 +27601,7 @@ opinions opium opossum opossums +oppenheimer opponent opponents opportune @@ -26854,6 +27628,7 @@ oppressor oppressors opprobrious opprobrium +oprah opt opted optic @@ -26861,10 +27636,24 @@ optician opticians optics optima +optimisation +optimisations +optimise +optimised +optimiser +optimises +optimising optimism optimist optimistic optimists +optimization +optimizations +optimize +optimized +optimizer +optimizes +optimizing optimum optimums opting @@ -26878,6 +27667,8 @@ optometry opts opus opuses +ora +oran orange orangeade orangeades @@ -26886,6 +27677,7 @@ orangutan orangutang orangutangs orangutans +oranjestad orate orated orates @@ -26899,6 +27691,7 @@ oratorios orators oratory orb +orbison orbit orbited orbiting @@ -26935,18 +27728,41 @@ ordinary ordination ordinations ordnance +ordovician ordure ore oregano +oregon +oregonian +oregonians +oreo ores +orestes organ organdie +organdy organic organics +organisation +organisations +organise +organised +organiser +organisers +organises +organising organism organisms organist organists +organization +organizations +organize +organized +organizer +organizers +organizes +organizing organs orgasm orgasmic @@ -26976,6 +27792,12 @@ origination originator originators origins +orin +orinoco +orion +oriya +orizaba +orkney ornament ornamentation ornamented @@ -26993,6 +27815,10 @@ orphanages orphaned orphaning orphans +orpheus +orphic +orr +ortega orthodontia orthodontic orthodontics @@ -27008,8 +27834,25 @@ orthopaedic orthopaedics orthopaedist orthopaedists +orthopedic +orthopedics +orthopedist +orthopedists +ortiz +osage +osaka +osbert +osborn +osborne +oscar +oscars +osgood +oshawa +oshkosh osier osiers +osiris +osman osmosis osmotic osprey @@ -27025,19 +27868,34 @@ osteopath osteopaths osteopathy osteoporosis +ostracise +ostracised +ostracises +ostracising ostracism +ostracize +ostracized +ostracizes +ostracizing ostrich ostriches +ostrogoth other others otherwise otiose +otis +ottawa +ottawas otter otters +otto ottoman ottomans +ouagadougou ouch ought +ouija ounce ounces our @@ -27111,6 +27969,10 @@ outhouse outhouses outing outings +outmaneuver +outmaneuvered +outmaneuvering +outmaneuvers outmanoeuvre outmanoeuvred outmanoeuvres @@ -27325,6 +28187,14 @@ overeat overeaten overeating overeats +overemphasise +overemphasised +overemphasises +overemphasising +overemphasize +overemphasized +overemphasizes +overemphasizing overenthusiastic overestimate overestimated @@ -27519,6 +28389,7 @@ overwrites overwriting overwritten overwrought +ovid oviduct oviducts oviparous @@ -27527,6 +28398,8 @@ ovoids ovum owe owed +owen +owens owes owing own @@ -27544,6 +28417,22 @@ oxfords oxidation oxide oxides +oxidise +oxidised +oxidiser +oxidisers +oxidises +oxidising +oxidize +oxidized +oxidizer +oxidizers +oxidizes +oxidizing +oxnard +oxonian +oxus +oxycontin oxygen oxygenate oxygenated @@ -27555,7 +28444,11 @@ oxymoron oxymorons oyster oysters +ozark +ozarks ozone +ozymandias +ozzie paar pabst pace @@ -27611,6 +28504,10 @@ padres pads paean paeans +paediatric +paediatrician +paediatricians +paediatrics pagan paganini paganism @@ -27654,6 +28551,7 @@ paired pairing pairs pairwise +pajamas pakistan pakistani pakistanis @@ -27848,6 +28746,14 @@ parentage parented parentheses parenthesis +parenthesise +parenthesised +parenthesises +parenthesising +parenthesize +parenthesized +parenthesizes +parenthesizing parenthetic parenthood parenting @@ -28023,6 +28929,16 @@ pasternak pasterns pastes pasteur +pasteurisation +pasteurise +pasteurised +pasteurises +pasteurising +pasteurization +pasteurize +pasteurized +pasteurizes +pasteurizing pastiche pastiches pastier @@ -28083,6 +28999,7 @@ patients patina patinae patinas +patine patio patios patna @@ -28108,6 +29025,14 @@ patriots patron patronage patronages +patronise +patronised +patronises +patronising +patronize +patronized +patronizes +patronizing patrons patronymic patronymics @@ -28136,7 +29061,15 @@ paunchier paunchiest paunchy pauper +pauperise +pauperised +pauperises +pauperising pauperism +pauperize +pauperized +pauperizes +pauperizing paupers pause paused @@ -28228,7 +29161,9 @@ pecos pecs pectin pecuniary +pedagog pedagogic +pedagogs pedagogue pedagogues pedagogy @@ -28240,7 +29175,21 @@ pederast pederasts pederasty pedestrian +pedestrianise +pedestrianised +pedestrianises +pedestrianising +pedestrianize +pedestrianized +pedestrianizes +pedestrianizing pedestrians +pediatric +pediatrician +pediatricians +pediatrics +pediatrist +pediatrists pedicure pedicured pedicures @@ -29619,7 +30568,9 @@ pox poxes poznan practice +practiced practices +practicing practise practised practises @@ -29854,6 +30805,8 @@ prehistoric prehistory prejudge prejudged +prejudgement +prejudgements prejudges prejudging prejudgment @@ -30019,6 +30972,16 @@ pressure pressured pressures pressuring +pressurisation +pressurise +pressurised +pressurises +pressurising +pressurization +pressurize +pressurized +pressurizes +pressurizing prestige prestigious presto @@ -30049,12 +31012,16 @@ pretender pretenders pretending pretends +pretense +pretenses pretension pretensions pretentious pretentiousness +preterit preterite preterites +preterits pretext pretexts pretoria @@ -30093,6 +31060,8 @@ previewers previewing previews previous +prevue +prevues prewar prey preyed @@ -30170,9 +31139,21 @@ prioress prioresses priories priorities +prioritise +prioritised +prioritises +prioritising +prioritize +prioritized +prioritizes +prioritizing priority priors priory +prise +prised +prises +prising prism prismatic prisms @@ -30196,6 +31177,18 @@ privates privatest privation privations +privatisation +privatisations +privatise +privatised +privatises +privatising +privatization +privatizations +privatize +privatized +privatizes +privatizing privet privets privier @@ -30203,12 +31196,14 @@ privies priviest privy prize +prized prizefight prizefighter prizefighters prizefighting prizefights prizes +prizing pro proactive probate @@ -30355,6 +31350,10 @@ prognosticator prognosticators prognostics program +programed +programer +programers +programing programme programmed programmer @@ -30458,8 +31457,16 @@ proofreads proofs prop propaganda +propagandise +propagandised +propagandises +propagandising propagandist propagandists +propagandize +propagandized +propagandizes +propagandizing propagate propagated propagates @@ -31017,9 +32024,12 @@ pwning pwns pygmies pygmy +pyjamas pym pynchon pyongyang +pyorrhea +pyorrhoea pyotr pyramid pyramided @@ -31191,6 +32201,7 @@ questions quests queue queued +queueing queues queuing quezon @@ -31499,12 +32510,22 @@ ranches ranching rancid rancidity +rancor rancorous +rancour rand randi randier randiest random +randomise +randomised +randomises +randomising +randomize +randomized +randomizes +randomizing randomness randy rang @@ -31951,7 +32972,19 @@ reckoned reckoning reckonings reckons +recognisance +recognise +recognised +recogniser +recognises +recognising recognition +recognizance +recognize +recognized +recognizer +recognizes +recognizing recombination recombine recombined @@ -31985,6 +33018,14 @@ reconnect reconnected reconnecting reconnects +reconnoiter +reconnoitered +reconnoitering +reconnoiters +reconnoitre +reconnoitred +reconnoitres +reconnoitring reconquer reconquered reconquering @@ -32219,12 +33260,24 @@ reemerge reemerged reemerges reemerging +reemphasise +reemphasised +reemphasises +reemphasising +reemphasize +reemphasized +reemphasizes +reemphasizing reenact reenacted reenacting reenactment reenactments reenacts +reenforce +reenforced +reenforces +reenforcing reenter reentered reentering @@ -32740,6 +33793,18 @@ reordered reordering reorders reorg +reorganisation +reorganisations +reorganise +reorganised +reorganises +reorganising +reorganization +reorganizations +reorganize +reorganized +reorganizes +reorganizing reorged reorging reorgs @@ -32851,8 +33916,10 @@ reprinted reprinting reprints reprise +reprised reprises reprising +reprized reproach reproached reproaches @@ -32873,7 +33940,9 @@ reproductive reprogram reprogramed reprograming +reprogramme reprogrammed +reprogrammes reprogramming reprograms reproof @@ -33396,6 +34465,14 @@ reykjavik reyna rhapsodic rhapsodies +rhapsodise +rhapsodised +rhapsodises +rhapsodising +rhapsodize +rhapsodized +rhapsodizes +rhapsodizing rhapsody rhea rheas @@ -33545,7 +34622,11 @@ rigid rigidity rigidness rigoberto +rigor rigorous +rigors +rigour +rigours rigs rim rimbaud @@ -33797,6 +34878,7 @@ romanced romances romancing romanesque +romania romanian romanians romanies @@ -33805,9 +34887,17 @@ romanov romans romansh romantic +romanticise +romanticised +romanticises +romanticising romanticism romanticist romanticists +romanticize +romanticized +romanticizes +romanticizing romantics romany rome @@ -34015,6 +35105,14 @@ routes routine routines routing +routinise +routinised +routinises +routinising +routinize +routinized +routinizes +routinizing routs rove roved @@ -34047,6 +35145,14 @@ rub rubaiyat rubbed rubber +rubberise +rubberised +rubberises +rubberising +rubberize +rubberized +rubberizes +rubberizing rubbermaid rubberneck rubbernecked @@ -34148,6 +35254,14 @@ rummaging rummer rummest rummy +rumor +rumored +rumoring +rumors +rumour +rumoured +rumouring +rumours rump rumps rumpus @@ -34246,6 +35360,8 @@ saarinen saatchi sabbath sabbaths +saber +sabers sabik sabin sabina @@ -34470,6 +35586,14 @@ sanitarium sanitariums sanitary sanitation +sanitise +sanitised +sanitises +sanitising +sanitize +sanitized +sanitizes +sanitizing sanity sank sanka @@ -34582,8 +35706,16 @@ satinwoods satiny satire satires +satirise +satirised +satirises +satirising satirist satirists +satirize +satirized +satirizes +satirizing satisfaction satisfactions satisfactory @@ -34658,8 +35790,25 @@ saves saving savings savior +saviors saviour saviours +savor +savored +savorier +savories +savoriest +savoring +savors +savory +savour +savoured +savourier +savouries +savouriest +savouring +savours +savoury savoy savoyard savvied @@ -34803,6 +35952,13 @@ scent scented scenting scents +scepter +scepters +sceptic +scepticism +sceptics +sceptre +sceptres scheat schedar scheherazade @@ -35085,6 +36241,14 @@ scrunchie scrunchies scrunching scrunchy +scrutinise +scrutinised +scrutinises +scrutinising +scrutinize +scrutinized +scrutinizes +scrutinizing scrutiny scuba scubaed @@ -35409,11 +36573,21 @@ sense sensed senses sensing +sensitisation +sensitise +sensitised +sensitises +sensitising sensitive sensitiveness sensitives sensitivities sensitivity +sensitization +sensitize +sensitized +sensitizes +sensitizing sensor sensors sensory @@ -35455,6 +36629,8 @@ septets septette septettes septic +septicaemia +septicemia septuagenarian septuagenarians septuagint @@ -35520,6 +36696,14 @@ series serious seriousness sermon +sermonise +sermonised +sermonises +sermonising +sermonize +sermonized +sermonizes +sermonizing sermons serous serpens @@ -35680,6 +36864,8 @@ shaggy shags shah shahs +shaikh +shaikhs shaka shake shakedown @@ -36456,6 +37642,8 @@ sirius sirocco siroccos sirs +sirup +sirups sis sises sissier @@ -36525,6 +37713,9 @@ skating skeet skein skeins +skeptic +skepticism +skeptics sketch sketched sketches @@ -36676,10 +37867,12 @@ smeared smearing smears smetana +smidge smidgen smidgens smidgeon smidgeons +smidges smidgin smidgins smirch @@ -36927,7 +38120,9 @@ snowing snowman snowmen snows +snowshed snowshoe +snowshoed snowshoeing snowshoes snowstorm @@ -37048,6 +38243,7 @@ sojourn sojourned sojourning sojourns +somber sombre sombrero sombreros @@ -37421,7 +38617,11 @@ specks specs spectator spectators +specter +specters spectra +spectre +spectres spectroscope spectroscopes spectroscopic @@ -37535,6 +38735,8 @@ spiny spiraea spiraeas spire +spirea +spireas spires spirit spirited @@ -37939,6 +39141,16 @@ stanchion stanchions stand standard +standardisation +standardise +standardised +standardises +standardising +standardization +standardize +standardized +standardizes +standardizing standards standby standbys @@ -38239,6 +39451,14 @@ stiffs stigma stigmas stigmata +stigmatise +stigmatised +stigmatises +stigmatising +stigmatize +stigmatized +stigmatizes +stigmatizing stimson stine sting @@ -38862,6 +40082,16 @@ subsidiaries subsidiary subsidies subsiding +subsidisation +subsidise +subsidised +subsidises +subsidising +subsidization +subsidize +subsidized +subsidizes +subsidizing subsidy subsist subsisted @@ -38945,7 +40175,15 @@ succinct succincter succinctest succinctness +succor +succored +succoring +succors succotash +succour +succoured +succouring +succours succumb succumbed succumbing @@ -39067,6 +40305,14 @@ sumatra sumeria sumerian summaries +summarise +summarised +summarises +summarising +summarize +summarized +summarizes +summarizing summary summation summations @@ -39504,6 +40750,7 @@ swayed swaying sways swazi +swe swear swearer swearers @@ -39654,6 +40901,18 @@ symmetries symmetry sympathetic sympathies +sympathise +sympathised +sympathiser +sympathisers +sympathises +sympathising +sympathize +sympathized +sympathizer +sympathizers +sympathizes +sympathizing sympathy symphonic symphonies @@ -39676,6 +40935,18 @@ synch synched synches synching +synchronisation +synchronisations +synchronise +synchronised +synchronises +synchronising +synchronization +synchronizations +synchronize +synchronized +synchronizes +synchronizing synchronous synchs syncing @@ -39707,10 +40978,24 @@ syntactic syntax syntheses synthesis +synthesise +synthesised +synthesiser +synthesisers +synthesises +synthesising +synthesize +synthesized synthesizer synthesizers +synthesizes +synthesizing synthetic synthetics +synthetize +synthetized +synthetizes +synthetizing syphon syphoned syphoning @@ -39729,6 +41014,14 @@ syrups syrupy system systematic +systematise +systematised +systematises +systematising +systematize +systematized +systematizes +systematizing systemic systemics systems @@ -40214,6 +41507,14 @@ temping tempo temporaries temporary +temporise +temporised +temporises +temporising +temporize +temporized +temporizes +temporizing tempos temps tempt @@ -40251,6 +41552,18 @@ tenderfoot tenderfoots tenderhearted tendering +tenderise +tenderised +tenderiser +tenderisers +tenderises +tenderising +tenderize +tenderized +tenderizer +tenderizers +tenderizes +tenderizing tenderness tenders tending @@ -40363,9 +41676,17 @@ terrifying territories territory terror +terrorise +terrorised +terrorises +terrorising terrorism terrorist terrorists +terrorize +terrorized +terrorizes +terrorizing terrors terry terse @@ -40456,6 +41777,8 @@ thawing thaws the thea +theater +theaters theatre theatres thebes @@ -40491,8 +41814,16 @@ theoretic theoretician theoreticians theories +theorise +theorised +theorises +theorising theorist theorists +theorize +theorized +theorizes +theorizing theory theosophy therapeutic @@ -40825,6 +42156,8 @@ ticking ticks ticonderoga tics +tidbit +tidbits tide tided tides @@ -40906,8 +42239,10 @@ timing timings timmy timon +timor timorous timothy +timour timpani timpanist timpanists @@ -41347,6 +42682,8 @@ townsmen towpath towpaths tows +toxaemia +toxemia toxic toxicity toxin @@ -41617,6 +42954,14 @@ trauma traumas traumata traumatic +traumatise +traumatised +traumatises +traumatising +traumatize +traumatized +traumatizes +traumatizing traverse traversed traverses @@ -42007,6 +43352,10 @@ tuition tumid tummies tummy +tumor +tumors +tumour +tumours tums tun tuna @@ -42257,6 +43606,14 @@ typographic typography typos tyrannies +tyrannise +tyrannised +tyrannises +tyrannising +tyrannize +tyrannized +tyrannizes +tyrannizing tyrannosaur tyrannosaurs tyrannosaurus @@ -42267,6 +43624,7 @@ tyrant tyrants tyre tyree +tyres tyro tyroes tyrone @@ -42281,7 +43639,6 @@ ubiquitous ubiquity ubs ubuntu -ucla udder udders ufa @@ -42328,6 +43685,8 @@ unanimous unannounced unanswered unanticipated +unappetising +unappetizing unappreciated unappreciative unarmed @@ -42341,6 +43700,8 @@ unattended unattractive unattributed unauthenticated +unauthorised +unauthorized unaware unawares unbar @@ -42763,6 +44124,16 @@ uninterrupted uninvited uninviting union +unionisation +unionise +unionised +unionises +unionising +unionization +unionize +unionized +unionizes +unionizing unions unique uniqueness @@ -42835,6 +44206,8 @@ unoccupied unoffensive unopened unopposed +unorganised +unorganized unorthodox unpack unpacked @@ -42872,6 +44245,8 @@ unquoting unread unready unreasoning +unrecognised +unrecognized unreconstructed unrecorded unrefined @@ -42902,6 +44277,8 @@ unsatisfactory unsatisfied unsatisfying unsaturated +unsavory +unsavoury unsay unsaying unsays @@ -43058,6 +44435,10 @@ updater updates updating updike +updraft +updrafts +updraught +updraughts upend upended upending @@ -43140,7 +44521,17 @@ urban urbane urbaner urbanest +urbanisation +urbanise +urbanised +urbanises +urbanising urbanity +urbanization +urbanize +urbanized +urbanizes +urbanizing urchin urchins urdu @@ -43318,7 +44709,25 @@ vapid vapidity vapidness vaping +vapor +vaporisation +vaporise +vaporised +vaporiser +vaporisers +vaporises +vaporising +vaporization +vaporize +vaporized +vaporizer +vaporizers +vaporizes +vaporizing vaporous +vapors +vapour +vapours varanasi varese vargas @@ -43410,6 +44819,8 @@ veining veins vend vended +vender +venders vendetta vendettas vending @@ -43615,6 +45026,16 @@ vickie vicksburg vicky victim +victimisation +victimise +victimised +victimises +victimising +victimization +victimize +victimized +victimizes +victimizing victims victor victoria @@ -43659,7 +45080,9 @@ vignette vignetted vignettes vignetting +vigor vigorous +vigour vijayanagar vijayawada viking @@ -43822,6 +45245,7 @@ void voided voiding voids +voip vomit vomited vomiting @@ -43916,6 +45340,10 @@ wages wagged wagging waggish +waggon +waggoner +waggoners +waggons waging wagner wagnerian @@ -44261,6 +45689,14 @@ weathercock weathercocks weathered weathering +weatherise +weatherised +weatherises +weatherising +weatherize +weatherized +weatherizes +weatherizing weatherman weathermen weatherproof @@ -44394,6 +45830,14 @@ westbound western westerner westerners +westernise +westernised +westernises +westernising +westernize +westernized +westernizes +westernizing westernmost westerns westinghouse @@ -44525,6 +45969,8 @@ whisked whisker whiskered whiskers +whiskey +whiskeys whiskies whisking whisks @@ -44775,6 +46221,14 @@ wintergreen winterier winteriest wintering +winterise +winterised +winterises +winterising +winterize +winterized +winterizes +winterizing winters wintertime wintery @@ -44890,7 +46344,19 @@ woken woks woman womanhood +womanise +womanised +womaniser +womanisers +womanises womanish +womanising +womanize +womanized +womanizer +womanizers +womanizes +womanizing womankind womb wombat @@ -45046,6 +46512,10 @@ worsened worsening worsens worship +worshiped +worshiper +worshipers +worshiping worshipped worshipper worshippers diff --git a/extras/dict/swedish b/extras/dict/swedish index a67f64f..797ebed 100644 --- a/extras/dict/swedish +++ b/extras/dict/swedish @@ -1,78 +1,49697 @@ +abakus +abakusen +abakusens +abakuser +abakuserna +abakusernas +abakusers +abandon +abandonen +abbedissa +abbedissan +abbedissans +abbedissas +abbedissor +abbedissorna +abbedissornas +abbedissors +abborrar +abborrarna +abborrarnas +abborrars +abborre +abborren +abborrens +abborres +abbot +abbotar +abbotarna +abbotarnas +abbotars +abboten +abbotens +abbots +abbreviation +abbreviationen +abbreviationens +abbreviationer +abbreviationerna +abbreviationernas +abbreviationers +abbreviations +abbreviatur +abbreviaturen +abbreviaturens +abbreviaturer +abbreviaturerna +abbreviaturernas +abbreviaturers +abbreviaturs +abbreviera +abbrevierad +abbrevierade +abbrevierades +abbrevierar +abbrevieras +abbrevierat +abbrevierats +abbreviering +abbrevieringar +abbrevieringarna +abbrevieringarnas +abbrevieringars +abbrevieringen +abbrevieringens +abbrevierings +abc +abderit +abderiten +abderitens +abderiter +abderiterna +abderiternas +abderiters +abderits +abdikation +abdikationen +abdikationens +abdikationer +abdikationerna +abdikationernas +abdikationers +abdikations +abdomen +abdomina +aber +aberration +aberrationen +aberrationens +aberrationer +aberrationerna +aberrationernas +aberrationers +aberrations +abessinier +abessiniern +abessinierna +abessiniernas +abessinierns +abessiniers +abessinska +abessinskor +abessinskorna +abessinskornas +abessinskors +abisko +abiskos +abiturient +abiturienten +abiturientens +abiturienter +abiturienterna +abiturienternas +abiturienters +abiturients +abnorm +abnorma +abnormare +abnormast +abnormaste +abnormt +abonnemang +abonnemangen +abonnemangens +abonnemanget +abonnemangets +abonnemangs +abonnent +abonnenten +abonnentens +abonnenter +abonnenterna +abonnenternas +abonnenters +abonnents +abonnera +abonnerad +abonnerade +abonnerades +abonnerar +abonneras +abonnerat +abonnerats +abort +aborten +abortens +aborter +aborterna +aborternas +aborters +aborts +abraham +abrahams +abrakadabra +abrakadabrat +abrupt +abrupta +abruptare +abruptast +abruptaste +abscissa +abscissan +abscissans +abscissas +abscissor +abscissorna +abscissornas +abscissors +absid +absiden +absidens +absider +absiderna +absidernas +absiders +absids +absint +absinten +absintens +absinter +absinterna +absinternas +absinters +absints +absorbera +absorberad +absorberade +absorberades +absorberande +absorberandet +absorberandets +absorberar +absorberas +absorberat +absorberats +absorption +absorptionen +absorptionens +absorptioner +absorptionerna +absorptionernas +absorptioners +absorptions +abstinens +abstinensen +abstinensens +abstinenser +abstinenserna +abstinensernas +abstinensers +abstrahera +abstraherad +abstraherade +abstraherades +abstraherande +abstraherandet +abstraherandets +abstraherar +abstraheras +abstraherat +abstraherats +abstrakt +abstrakta +abstraktare +abstraktast +abstraktaste +abstraktion +abstraktionen +abstraktionens +abstraktioner +abstraktionerna +abstraktionernas +abstraktioners +abstraktions +abstrus +abstrusa +abstrust +absurd +absurda +absurdare +absurdast +absurdaste +absurditet +absurditeten +absurditetens +absurditeter +absurditeterna +absurditeternas +absurditeters +absurditets +absurdum +absurt +accent +accenten +accentens +accenter +accenterna +accenternas +accenters +accents +accentuera +accentuerad +accentuerade +accentuerades +accentuerande +accentuerandet +accentuerandets +accentuerar +accentueras +accentuerat +accentuerats +accentuering +accentueringar +accentueringarna +accentueringarnas +accentueringars +accentueringen +accentueringens +accentuerings +acceptans +acceptansen +acceptansens +acceptera +accepterad +accepterade +accepterades +accepterande +accepterandet +accepterandets +accepterar +accepteras +accepterat +accepterats +access +accessen +accessens +accesser +accesserna +accessernas +accessers +ack +acke +ackes +ackompanjemang +ackompanjemangen +ackompanjemangens +ackompanjemanget +ackompanjemangets +ackompanjemangs +ackompanjera +ackompanjerad +ackompanjerade +ackompanjerades +ackompanjerande +ackompanjerandet +ackompanjerandets +ackompanjerar +ackompanjeras +ackompanjerat +ackompanjerats +ackord +ackorden +ackordens +ackordet +ackordets +ackords +action +ada +adagio +adagion +adagiona +adagionas +adagions +adagios +adagiot +adagiots +adak +adaks +adam +adams +adapter +adaptera +adapterad +adapterade +adapterades +adapterande +adapterandet +adapterandets +adapterar +adapteras +adapterat +adapterats +adaptern +adapterns +adapters +adaption +adaptionen +adaptionens +adaptioner +adaptionerna +adaptionernas +adaptioners +adaptions +adaptiv +adaptiva +adaptivt +adas +addera +adderad +adderade +adderades +adderar +adderare +adderaren +adderarens +adderares +adderarna +adderarnas +adderas +adderat +adderats +addition +additionen +additionens +additioner +additionerna +additionernas +additioners +additions +additiv +additiva +additivt +adekvat +adekvata +adept +adepten +adeptens +adepter +adepterna +adepternas +adepters +adepts +aderton +adertonde +adjektiv +adjektiven +adjektivens +adjektivet +adjektivets +adjektivs +adjungera +adjungerad +adjungerade +adjungerades +adjungerar +adjungeras +adjungerat +adjungerats +adjunkt +adjunkten +adjunktens +adjunkter +adjunkterna +adjunkternas +adjunkters +adjutant +adjutanten +adjutantens +adjutanter +adjutanterna +adjutanternas +adjutanters +adjutants +administration +administrationen +administrationens +administrationer +administrationerna +administrationernas +administrationers +administrations +administrativ +administrativa +administrative +administrativt +administrera +administrerad +administrerade +administrerades +administrerar +administreras +administrerat +administrerats +adoptera +adopterad +adopterade +adopterades +adopterar +adopteras +adopterat +adopterats +adoption +adoptionen +adoptionens +adoptioner +adoptionerna +adoptionernas +adoptioners +adoptions +adoptivbarn +adoptivbarnen +adoptivbarnens +adoptivbarnet +adoptivbarnets +adoptivson +adoptivsonen +adoptivsonens +adoptivsons +adress +adressat +adressaten +adressatens +adressater +adressaterna +adressaternas +adressaters +adressats +adressbuss +adressbussar +adressbussarna +adressbussarnas +adressbussars +adressbussen +adressbussens +adressen +adressens +adresser +adressera +adresserad +adresserade +adresserades +adresserar +adresseras +adresserat +adresserats +adressering +adresseringen +adresseringens +adresserings +adresserna +adressernas +adressers +adressrymd +adressrymden +adressrymdens +adressrymder +adressrymderna +adressrymdernas +adressrymders +advent +adventet +adventets +advents +adverb +adverben +adverbens +adverbet +adverbets +adverbs +advokat +advokaten +advokatens +advokater +advokaterna +advokaternas +advokaters +advokats +advokatyr +advokatyren +advokatyrens +advokatyrer +advokatyrerna +advokatyrernas +advokatyrers +advokatyrs +affekt +affekten +affektens +affekter +affekterad +affekterade +affekterat +affekterna +affekternas +affekters +affekts +affin +affina +affint +affisch +affischen +affischens +affischer +affischera +affischerade +affischerades +affischerar +affischeras +affischerat +affischerats +affischerna +affischernas +affischers +affix +affixen +affixens +affixet +affixets +afghan +afghanen +afghanens +afghaner +afghanerna +afghanernas +afghaners +afghanistan +afghanistans +afghans +aforism +aforismen +aforismens +aforismer +aforismerna +aforismernas +aforismers +afrika +afrikan +afrikanen +afrikanens +afrikaner +afrikanerna +afrikanernas +afrikaners +afrikans +afrikansk +afrikanska +afrikanskan +afrikanskans +afrikanskas +afrikanske +afrikanskor +afrikanskorna +afrikanskornas +afrikanskors +afrikanskt +afrikas +aftnar +aftnarna +aftnarnas +aftnars +afton +aftonen +aftonens +aftons +aga +agad +agade +agades +agan +agans +agar +agas +agat +agata +agatas +agaten +agatens +agater +agaterna +agaternas +agaters +agaton +agatons +agats +agda +agdas +agen +agenda +agendan +agendans +agendas +agendor +agendorna +agendornas +agendors +agens +agent +agenten +agentens +agenter +agenterna +agenternas +agenters +agents +agentur +agenturen +agenturens +agenturer +agenturerna +agenturernas +agenturers +agenturs +agera +agerade +agerande +agerandet +agerandets +agerar +agerat +agg +agget +aggets +aggregat +aggregaten +aggregatens +aggregatet +aggregatets +aggregats +aggression +aggressionen +aggressionens +aggressioner +aggressionerna +aggressionernas +aggressioners +aggressions +aggressiv +aggressiva +aggressivare +aggressivas +aggressivast +aggressivaste +aggressive +aggressives +aggressivitet +aggressiviteten +aggressivitetens +aggressivitets +aggressivt +aggs +agitation +agitationen +agitationens +agitationer +agitationerna +agitationernas +agitationers +agitations +agitator +agitatorer +agitatorerna +agitatorernas +agitatorers +agitatorn +agitatorns +agitators +agitera +agiterade +agiterande +agiterar +agiterat +agn +agna +agnad +agnade +agnades +agnar +agnarna +agnarnas +agnars +agnas +agnat +agnats +agne +agnen +agnens +agnes +agnet +agneta +agnetas +agnets +agnosticism +agnosticismen +agnosticismens +agnosticisms +agnostiker +agnostikern +agnostikerna +agnostikernas +agnostikerns +agnostikers +agns +agoni +agonien +agoniens +agonis +agor +agorna +agornas +agors +agronom +agronomen +agronomens +agronomer +agronomerna +agronomernas +agronomers +agronoms +agunnaryd +agunnaryds +aids +aina +ainas +air +airen +airens +ajour +ajournera +ajournerad +ajournerade +ajournerades +ajournerar +ajourneras +ajournerat +ajournerats +akademi +akademien +akademiens +akademier +akademierna +akademiernas +akademiers +akademiker +akademikern +akademikerna +akademikernas +akademikerns +akademikers +akademin +akademins +akademis +akademisk +akademiska +akademiske +akademiskt +akribi +akribien +akribiens +akribin +akribins +akribis +akrobat +akrobaten +akrobatens +akrobater +akrobaterna +akrobaternas +akrobaters +akrobatisk +akrobatiska +akrobatiskt +akrobats +akt +akta +aktad +aktade +aktades +aktande +aktandet +aktandets +aktar +aktas +aktat +aktats +akten +aktens +akter +aktern +akterna +akternas +akterns +akters +aktersnurra +aktersnurran +aktersnurrans +aktersnurror +aktersnurrorna +aktersnurrornas +aktersnurrors +aktie +aktien +aktiens +aktier +aktierna +aktiernas +aktiers +akties +aktiesparande +aktiesparandet +aktiesparandets +aktion +aktionen +aktionens +aktioner +aktionerna +aktionernas +aktioners +aktions +aktiv +aktiva +aktivare +aktivas +aktivast +aktivaste +aktive +aktivera +aktiverad +aktiverade +aktiverades +aktiverar +aktiveras +aktiverat +aktiverats +aktivering +aktiveringen +aktiveringens +aktiverings +aktives +aktivitet +aktiviteten +aktivitetens +aktiviteter +aktiviteterna +aktiviteternas +aktiviteters +aktivitets +aktivt +aktning +aktningen +aktningens +aktnings +aktrar +aktrarna +aktrarnas +aktrars +aktris +aktrisen +aktrisens +aktriser +aktriserna +aktrisernas +aktrisers +akts +aktsam +aktsamma +aktsammare +aktsammas +aktsammast +aktsammaste +aktsamme +aktsammes +aktsamt +aktstycke +aktstyckena +aktstyckenas +aktstyckes +aktstycket +aktstyckets +akustik +akustiken +akustikens +akustiks +akustisk +akustiska +akustiskt +akut +akuta +akutare +akutast +akutaste +akuten +akutens +akvarier +akvarierna +akvariernas +akvariers +akvariet +akvariets +akvarium +akvedukt +akvedukten +akvedukter +akvedukterna +akvedukternas +akvedukters +amanda +amandas +amanuens +amanuensen +amanuensens +amanuenser +amanuenserna +amanuensernas +amanuensers +amason +amasonen +amasonens +amasoner +amasonerna +amasonernas +amasoners +amasons +ambassad +ambassaden +ambassadens +ambassader +ambassaderna +ambassadernas +ambassaders +ambassads +ambition +ambitionen +ambitionens +ambitioner +ambitionerna +ambitionernas +ambitioners +ambitions +ambra +ambradoft +ambradoften +ambradoftens +ambradofter +ambradofterna +ambradofternas +ambradofters +ambran +ambrans +ambrosius +amen +amerika +amerikan +amerikanare +amerikanaren +amerikanarens +amerikanares +amerikanarna +amerikanarnas +amerikanen +amerikanens +amerikaner +amerikanerna +amerikanernas +amerikaners +amerikans +amerikansk +amerikanska +amerikanskan +amerikanskans +amerikanskas +amerikanske +amerikanskes +amerikanskor +amerikanskorna +amerikanskornas +amerikanskors +amerikanskt +amerikas +ametist +ametisten +ametistens +ametister +ametisterna +ametisternas +ametisters +amfetamin +amfetaminen +amfetaminens +amfetaminer +amfetaminerna +amfetaminernas +amfetaminers +amfetaminet +amfetaminets +amfetamins +amma +ammad +ammade +ammades +amman +ammande +ammandet +ammandets +ammans +ammar +ammas +ammat +ammats +ammoniak +ammoniaken +ammoniakens +ammoniaks +ammor +ammorna +ammornas +ammors +ammunition +ammunitionen +ammunitionens +ammunitions +amok +amorf +amorfa +amorft +amortera +amorterade +amorterades +amorterar +amorteras +amorterat +amorterats +amortering +amorteringar +amorteringarna +amorteringarnas +amorteringars +amorteringen +amorteringens +amorterings +amper +ampere +amperen +amperens +amperer +ampererna +amperernas +amperers +amperes +ampert +ampra +amprare +amprast +ampraste +amputera +amputerad +amputerade +amputerades +amputerar +amputeras +amputerat +amputerats +amsterdam +amsterdams +ana +anad +anade +anades +anaforisk +anaforiska +anaforiskt +anakronism +anakronismen +anakronismens +anakronismer +anakronismerna +anakronismernas +anakronismers +anakronisms +anakronistisk +anakronistiska +anakronistiskt +anamma +anammad +anammade +anammades +anammande +anammandet +anammandets +anammar +anammas +anammat +anammats +anan +ananas +ananasen +ananasens +anande +anans +anar +anarki +anarkien +anarkiens +anarkin +anarkins +anarkism +anarkismen +anarkismens +anarkist +anarkisten +anarkistens +anarkister +anarkisterna +anarkisternas +anarkisters +anarkistisk +anarkistiska +anarkistiskt +anarkists +anas +anat +anatomi +anatomien +anatomiens +anatomin +anatomins +anatomisk +anatomiska +anatomiskt +anats +anbragt +anbringa +anbringad +anbringade +anbringades +anbringar +anbringas +anbringat +anbringats +anbud +anbuden +anbudens +anbudet +anbudets +anbuds +and +anda +andades +andakt +andakten +andaktens +andakter +andakterna +andakternas +andakters +andan +andans +andante +andantet +andantets +andar +andarna +andarnas +andars +andas +andats +ande +andefattig +andefattiga +andefattigt +andemening +andemeningen +andemeningens +anden +andens +anders +andersson +anderssons +anderstorp +anderstorps +andes +andetag +andetagen +andetagens +andetaget +andetagets +andetags +andning +andningar +andningarna +andningarnas +andningars +andningen +andningens +andnings +andningsorgan +andningsorganen +andningsorganens +andningsorganet +andningsorganets +andra +andras +andre +andreas +andres +ands +aneby +anebys +anekdot +anekdoten +anekdotens +anekdoter +anekdoterna +anekdoternas +anekdoters +anekdotisk +anekdotiska +anekdotiskt +anekdots +anemi +anemien +anemiens +anemin +anemins +anemisk +anemiska +anemiskt +anette +anettes +anfader +anfadern +anfaderns +anfaders +angav +angavs +ange +anger +angered +angereds +anges +angett +angetts +angick +angiva +angivande +angivare +angivaren +angivarens +angivares +angivarna +angivarnas +angivas +angiven +angiver +angiveri +angiverier +angiverierna +angiveriernas +angiveriers +angiveriet +angiveriets +angiveris +angivet +angivit +angivits +angivna +angivnas +angivne +angivnes +angivning +angivningar +angivningarna +angivningarnas +angivningars +angivningen +angivningens +angivnings +angjorde +angjordes +angjort +angjorts +angrep +angrepp +angreppen +angreppens +angreppet +angreppets +angrepps +angreps +angrip +angripa +angripare +angriparen +angriparens +angripares +angriparna +angriparnas +angripas +angripbar +angripbara +angripbart +angripen +angriper +angripes +angripet +angripit +angripits +angripna +angripne +angrips +anhang +anhangen +anhangens +anhanget +anhangets +anhangs +anhopning +anhopningar +anhopningarna +anhopningarnas +anhopningars +anhopningen +anhopningens +anhopnings +animation +animationen +animationens +animationer +animationerna +animationernas +animationers +animations +animera +animerad +animerade +animerades +animerande +animerandet +animerandets +animerar +animeras +animerat +animerats +aning +aningar +aningarna +aningarnas +aningars +aningen +aningens +anings +anis +anisen +anisens +anita +anitas +anka +ankan +ankans +ankare +ankaren +ankarens +ankares +ankaret +ankarets +ankarna +ankarnas +ankarsrum +ankarsrums +ankarsvik +ankarsviks +ankeborg +ankeborgs +anknuten +anknutet +anknutit +anknutits +anknutna +anknyt +anknyta +anknytas +anknyter +anknytning +anknytningar +anknytningarna +anknytningarnas +anknytningars +anknytningen +anknytningens +anknytnings +anknyts +ankom +ankomma +ankommen +ankommer +ankommet +ankommit +ankomna +ankomst +ankomsten +ankomstens +ankomster +ankomsterna +ankomsternas +ankomsters +ankor +ankorna +ankornas +ankors +anmaning +anmaningar +anmaningarna +anmaningarnas +anmaningars +anmaningen +anmaningens +anmanings +anmoda +anmodad +anmodade +anmodades +anmodan +anmodande +anmodanden +anmodandena +anmodandenas +anmodandens +anmodandes +anmodandet +anmodandets +anmodans +anmodar +anmodas +anmodat +anmodats ann +anna +annan +annandag +annandagar +annandagarna +annandagarnas +annandagars +annandagen +annandagens +annans +annanstans +annars +annas +annat +annats +anne +anneberg +annebergs +annektera +annekterade +annekterades +annekterar +annekteras +annekterat +annekterats +annektering +annekteringar +annekteringarna +annekteringarnas +annekteringars +annekteringen +annekteringens +annekterings +annerstad +annerstads +annes +annette +annettes +annie +annies +annika +annikas +anno +annons +annonsen +annonsens +annonser +annonsera +annonserad +annonserade +annonserades +annonserande +annonserandet +annonserandets +annonserar +annonseras +annonserat +annonserats +annonsering +annonseringar +annonseringarna +annonseringarnas +annonseringars +annonseringen +annonseringens +annonserings +annonserna +annonsernas +annonsers +annonskampanj +annonskampanjen +annonskampanjens +annonskampanjer +annonskampanjerna +annonskampanjernas +annonskampanjers +anns +anod +anoden +anodens +anoder +anoderna +anodernas +anoders +anods +anonym +anonyma +anonyme +anonymitet +anonymiteten +anonymitetens +anonymt +anor +anorak +anoraken +anorakens +anoraker +anorakerna +anorakernas +anorakers +anoraks +anordna +anordnad +anordnade +anordnades +anordnande +anordnandet +anordnandets +anordnar +anordnare +anordnaren +anordnarens +anordnares +anordnarna +anordnarnas +anordnas +anordnat +anordnats +anordning +anordningar +anordningarna +anordningarnas +anordningars +anordningen +anordningens +anordnings +anorna +anornas +anors +anpassa +anpassad +anpassade +anpassades +anpassande +anpassandet +anpassandets +anpassar +anpassas +anpassat +anpassats +anpassning +anpassningar +anpassningarna +anpassningarnas +anpassningars +anpassningen +anpassningens +anpassnings +anpassningsbar +anpassningsbara +anpassningsbarare +anpassningsbarast +anpassningsbaraste +anpassningsbart +anpassningsprocess +anpassningsprocessen +anpassningsprocessens +anpassningsprocesser +anpassningsprocesserna +anpassningsprocessernas +anpassningsprocessers +anred +anreda +anredas +anredde +anreddes +anreder +anreds +anrett +anretts +anrika +anrikad +anrikade +anrikades +anrikar +anrikas +anrikat +anrikats +anrikning +anrikningar +anrikningarna +anrikningarnas +anrikningars +anrikningen +anrikningens +anriknings +anrop +anropa +anropad +anropade +anropades +anropande +anropandet +anropandets +anropar +anropas +anropat +anropats +anropen +anropens +anropet +anropets +anrops +ansa +ansad +ansade +ansades +ansande +ansandet +ansandets +ansar +ansas +ansat +ansats +ansatsen +ansatsens +ansatser +ansatserna +ansatsernas +ansatsers +ansatt +ansatta +ansatte +ansattes +ansatts +anse +ansedd +ansedda +anseende +anseendet +anseendets +anser +anses +ansett +ansetts +ansgar +ansgars +ansikte +ansikten +ansiktena +ansiktenas +ansiktens +ansiktes +ansiktet +ansiktets +ansiktsuttryck +ansiktsuttrycken +ansiktsuttryckens +ansiktsuttrycket +ansiktsuttryckets +ansiktsuttrycks +ansjovis +ansjovisen +ansjovisens +anskaffa +anskaffad +anskaffade +anskaffades +anskaffande +anskaffandet +anskaffandets +anskaffar +anskaffas +anskaffat +anskaffats +anskaffning +anskaffningar +anskaffningarna +anskaffningarnas +anskaffningars +anskaffningen +anskaffningens +anskaffnings +anskri +anstod +anstorma +anstormad +anstormade +anstormades +anstormar +anstormas +anstormat +anstormats +anstormning +anstormningar +anstormningarna +anstormningarnas +anstormningars +anstormningen +anstormningens +anstormnings +ansvar +ansvara +ansvarade +ansvarades +ansvarar +ansvaras +ansvarat +ansvarats +ansvaret +ansvarets +ansvarig +ansvariga +ansvarigas +ansvarige +ansvariges +ansvarigs +ansvarigt +ansvars +ansvarsfri +ansvarsfria +ansvarsfrihet +ansvarsfriheten +ansvarsfrihetens +ansvarsfritt +ansvarsmedvetande +ansvarsmedvetandet +ansvarsmedvetandets +ansvarsmedveten +ansvarsmedvetet +ansvarsmedvetna +ansvarstagande +ansvarstagandet +ansvarstagandets +anta +antag +antaga +antagande +antaganden +antagandena +antagandenas +antagandens +antagandes +antagandet +antagandets +antagas +antagen +antager +antages +antaget +antagit +antagits +antagna +antagning +antagningar +antagningarna +antagningarnas +antagningars +antagningen +antagningens +antagnings +antagonism +antagonismen +antagonismens +antagonist +antagonisten +antagonistens +antagonister +antagonisterna +antagonisternas +antagonisters +antagonistisk +antagonistiska +antagonistiskt +antar +antarktis +antas +antasta +antastad +antastade +antastades +antastande +antastar +antastas +antastat +antastats +antecipera +anteciperad +anteciperade +anteciperades +anteciperande +anteciperandet +anteciperandets +anteciperar +anteciperas +anteciperat +anteciperats +anteckna +antecknad +antecknade +antecknades +antecknande +antecknandet +antecknandets +antecknar +antecknas +antecknat +antecknats +anteckning +anteckningar +anteckningarna +anteckningarnas +anteckningars +anteckningen +anteckningens +antecknings +anteckningsbok +anteckningsboken +anteckningsbokens +anteckningsboks +antenn +antennen +antennens +antenner +antennerna +antennernas +antenners +antenns +antibiotika +antibiotikan +antibiotikans +antibiotikas +antibiotikum +antik +antika +antiken +antikens +antikt +antikvariat +antikvariaten +antikvariatens +antikvariatet +antikvariatets +antikvarie +antikvarien +antikvariens +antikvarier +antikvarierna +antikvariernas +antikvariers +antikvarisk +antikvariska +antikvariskt +antikvitet +antikviteten +antikvitetens +antikviteter +antikviteterna +antikviteternas +antikviteters +antikvitets +antimateria +antimaterian +antimaterians +antingen +antipati +antipatien +antipatiens +antipatier +antipatierna +antipatiernas +antipatiers +antipatin +antipatins +antipatis +antipod +antipoden +antipodens +antipoder +antipoderna +antipodernas +antipoders +antipods +antisemit +antisemiten +antisemitens +antisemiter +antisemiterna +antisemiternas +antisemiters +antisemitisk +antisemitiska +antisemitiske +antisemitiskt +antisemitism +antisemitismen +antisemitismens +antog +antogs +anton +antonia +antonias +antons +antropometrisk +antropometriska +antropometriskt +antyd +antyda +antydan +antydande +antydandet +antydandets +antydans +antydas +antydd +antydda +antydde +antyddes +antyder +antydes +antydning +antydningar +antydningarna +antydningarnas +antydningars +antydningen +antydningens +antydnings +antyds +antytt +antytts +anus +anusen +anusens +anvisa +anvisad +anvisade +anvisades +anvisande +anvisandet +anvisandets +anvisar +anvisas +anvisat +anvisats +anvisning +anvisningar +anvisningarna +anvisningarnas +anvisningars +anvisningen +anvisningens +anvisnings +aorta +aortan +aortans +apa +apade +apades +apan +apans +apar +apart +aparta +apartheid +apas +apat +apati +apatien +apatiens +apatin +apatins +apatisk +apatiska +apatiske +apatiskt +apats +apbur +apburar +apburarna +apburarnas +apburars +apburen +apburens +apburs +aphus +aphusen +aphusens +aphuset +aphusets +apkonst +apkonsten +apkonstens +apkonster +apkonsterna +apkonsternas +apkonsters +apor +aporna +apornas +apors +aposteriorisk +aposterioriska +aposterioriskt +apostrof +apostrofen +apostrofens +apostrofer +apostrofera +apostroferad +apostroferade +apostroferades +apostroferande +apostroferandet +apostroferandets +apostroferar +apostroferas +apostroferat +apostroferats +apostroferna +apostrofernas +apostrofers +apotek +apotekare +apotekaren +apotekarens +apotekares +apotekarna +apotekarnas +apoteken +apotekens +apoteket +apotekets +apparat +apparaten +apparatens +apparater +apparaterna +apparaternas +apparaters +apparatur +apparaturen +apparaturens +apparaturer +apparaturerna +apparaturernas +apparaturers +appendix +appendixen +appendixens +appendixet +appendixets +approximation +approximationen +approximationens +approximationer +approximationerna +approximationernas +approximationers +approximations +approximativ +approximativa +approximativt +approximera +approximerade +approximerades +approximerar +approximeras +approximerat +approximerats +aprikos +aprikosen +aprikosens +aprikoser +aprikoserna +aprikosernas +aprikosers +apriorisk +aprioriska +aprioriskt +aptit +aptiten +aptitens +aptitretande +arab +arabemiraten +arabemiratens +araben +arabens +araber +araberna +arabernas +arabers +arabesk +arabesken +arabeskens +arabesker +arabeskerna +arabeskernas +arabeskers +arabisk +arabiska +arabiskan +arabiskans +arabiske +arabiskor +arabiskorna +arabiskornas +arabiskors +arabiskt +arabs +arbeta +arbetad +arbetade +arbetades +arbetande +arbetandet +arbetandets +arbetar +arbetare +arbetaren +arbetarens +arbetares +arbetarna +arbetarnas +arbetas +arbetat +arbetats +arbete +arbeten +arbetena +arbetenas +arbetens +arbetes +arbetet +arbetets +arbetsam +arbetsamma +arbetsammare +arbetsammas +arbetsammast +arbetsammaste +arbetsamme +arbetsammes +arbetsamt +arbetsbesparande +arbetsbesparandet +arbetsbesparandets +arbetsbord +arbetsborden +arbetsbordens +arbetsbordet +arbetsbordets +arbetsdag +arbetsdagar +arbetsdagarna +arbetsdagarnas +arbetsdagars +arbetsdagen +arbetsdagens +arbetsdags +arbetsgivaravgift +arbetsgivaravgiften +arbetsgivaravgiftens +arbetsgivaravgifter +arbetsgivaravgifterna +arbetsgivaravgifternas +arbetsgivaravgifters +arbetsgivaravgifts +arbetsgivare +arbetsgivaren +arbetsgivarens +arbetsgivares +arbetsgivarna +arbetsgivarnas +arbetsgrupp +arbetsgruppen +arbetsgruppens +arbetsgrupper +arbetsgrupperna +arbetsgruppernas +arbetsgruppers +arbetsgrupps +arbetsinsats +arbetsinsatsen +arbetsinsatsens +arbetskamrat +arbetskamraten +arbetskamratens +arbetskamrater +arbetskamraterna +arbetskamraternas +arbetskamraters +arbetskraft +arbetskraften +arbetskraftens +arbetskrafts +arbetsmarknad +arbetsmarknaden +arbetsmarknadens +arbetsmarknads +arbetsmarknadsminister +arbetsmarknadsministern +arbetsmarknadsministerns +arbetsmarknadsministers +arbetsmarknadsministrar +arbetsmarknadsministrarna +arbetsmarknadsministrarnas +arbetsmarknadsministrars +arbetsredskap +arbetsredskapen +arbetsredskapens +arbetsro +arbetsron +arbetsrons +arbetsros +arbetsrum +arbetsrummen +arbetsrummens +arbetsrummet +arbetsrummets +arbetssituation +arbetssituationen +arbetssituationens +arbetssituations +arbetsskada +arbetsskadan +arbetsskadans +arbetsskador +arbetsskadorna +arbetsskadornas +arbetsskadors +arbetstagare +arbetstagaren +arbetstagarens +arbetstagares +arbetstagarna +arbetstagarnas +arbetstid +arbetstiden +arbetstidens +arbetstider +arbetstiderna +arbetstidernas +arbetstiders +arbetstids +arbetsuppgift +arbetsuppgiften +arbetsuppgiftens +arbetsuppgifter +arbetsuppgifterna +arbetsuppgifternas +arbetsuppgifters +arboga +arbogas +area +arean +areans +aren +arena +arenan +arenans +arenor +arenorna +arenornas +arenors +arens +areor +areorna +areornas +areors +aret +arets +arg +arga +argare +argas +argast +argaste +arge +argentina +argentinare +argentinaren +argentinarens +argentinares +argentinarna +argentinarnas +argentinas +argentinsk +argentinska +argentinskan +argentinskans +argentinskas +argentinske +argentinskor +argentinskorna +argentinskornas +argentinskors +argentinskt +arges +argsint +argsinta +argsinte +argt +argument +argumentation +argumentationen +argumentationens +argumentations +argumenten +argumentens +argumentera +argumenterad +argumenterade +argumenterades +argumenterande +argumenterandet +argumenterandets +argumenterar +argumenteras +argumenterat +argumenterats +argumentering +argumenteringen +argumenteringens +argumenterings +argumentet +argumentets +arguments +aria +arian +arians +arias +arier +ariern +arierna +ariernas +arierns +arior +ariorna +ariornas +ariors +arisk +ariska +ariskt +aristokrat +aristokraten +aristokratens +aristokrater +aristokraterna +aristokraternas +aristokraters +aristokrati +aristokratien +aristokratiens +aristokratier +aristokratierna +aristokratiernas +aristokratiers +aristokratin +aristokratins +aristokratis +aristokratisk +aristokratiska +aristokratiske +aristokratiskt +aristokrats +aritmetik +aritmetiken +aritmetikens +aritmetisk +aritmetiska +aritmetiskt +ark +arkad +arkaden +arkadens +arkader +arkaderna +arkadernas +arkaders +arkaisk +arkaiska +arkaiskt +arkaism +arkaismen +arkaismens +arken +arkens +arket +arkets +arketyp +arketypen +arketypens +arketyper +arketyperna +arketypernas +arketypers +arketypisk +arketypiska +arketypiskt +arkitekt +arkitekten +arkitektens +arkitekter +arkitekterna +arkitekternas +arkitekters +arkitektonisk +arkitektoniska +arkitektoniskt +arkitekts +arkitektur +arkitekturen +arkitekturens +arkitekturer +arkitekturerna +arkitekturernas +arkitekturers +arkitekturs +arkiv +arkiven +arkivens +arkivera +arkiverad +arkiverade +arkiverades +arkiverande +arkiverandet +arkiverandets +arkiverar +arkiveras +arkiverat +arkiverats +arkivering +arkiveringen +arkiveringens +arkivet +arkivets +arks +arktisk +arktiska +arktiskt +arm +arma +armada +armadan +armadans +armador +armadorna +armadornas +armadors +armar +armarna +armarnas +armars +armatur +armaturen +armaturens +armaturer +armaturerna +armaturernas +armaturers +armband +armbanden +armbandens +armbandet +armbandets +armbands +armbandsur +armbandsuren +armbandsurens +armbandsuret +armbandsurets +arme +armen +armenien +armeniens +armenier +armeniern +armenierna +armeniernas +armenierns +armenisk +armeniska +armeniske +armeniskt +armens +armera +armerade +armerades +armerar +armeras +armerat +armod +armodet +armodets +armods +armring +armringar +armringarna +armringarnas +armringars +armringen +armringens +armrings +arms +armt +arne +arnemark +arnemarks +arnes +arom +aromatisk +aromatiska +aromatiskt +aromen +aromens +aromer +aromerna +aromernas +aromers +aroms +aronsson +aronssons +arrangemang +arrangemangen +arrangemangens +arrangemanget +arrangemangets +arrangemangs +arrangera +arrangerad +arrangerade +arrangerades +arrangerande +arrangerandet +arrangerandets +arrangerar +arrangeras +arrangerat +arrangerats +arrendator +arrendatorer +arrendatorerna +arrendatorernas +arrendatorers +arrendatorn +arrendatorns +arrendators +arrende +arrendera +arrenderad +arrenderade +arrenderades +arrenderande +arrenderandet +arrenderandets +arrenderar +arrenderas +arrenderat +arrenderats +arrendes +arrendet +arrendets +arrest +arresten +arrestens +arrester +arrestera +arresterad +arresterade +arresterades +arresterande +arresterandet +arresterandets +arresterar +arresteras +arresterat +arresterats +arrestering +arresteringar +arresteringarna +arresteringarnas +arresteringars +arresteringen +arresteringens +arresterings +arresterna +arresternas +arresters +arrogans +arrogansen +arrogant +arroganta +ars +arsenik +arseniken +arsenikens +art +arta +artad +artade +artades +artar +artat +artats +artefakt +artefakten +artefaktens +artefakter +artefakterna +artefakternas +artefakters +arten +artens +arter +arterna +arternas +arters +artig +artiga +artigare +artigast +artigaste +artige +artighet +artigheten +artighetens +artigheter +artigheterna +artigheternas +artigheters +artighets +artigt +artist +artisten +artistens +artister +artisterna +artisternas +artisters +artists +arton +artonde +artonhundra +artontusen +arts +artur +arturs +arv +arven +arvens +arvet +arvets +arvid +arvids +arvidsjaur +arvidsjaurs +arvidsson +arvidssons +arvika +arvikas +arvingar +arvingarna +arvingarnas +arvingars +arvinge +arvingen +arvingens +arvinges +arvode +arvoden +arvodena +arvodenas +arvodens +arvodes +arvodet +arvodets +arvs +arvsmassa +arvsmassan +arvsmassans +arvsmassas +asagud +asagudar +asagudarna +asagudarnas +asagudars +asaguden +asagudens +asar +asarna +asarnas +asars +asarum +asarums +asatro +asatron +asatrons +asbest +asbesten +asbestens +asbests +asen +asens +aset +asets +asiat +asiaten +asiatens +asiater +asiaterna +asiaternas +asiaters +asiatisk +asiatiska +asiatiske +asiatiskt +asien +asiens +ask +aska +askad +askade +askades +askan +askans +askar +askarna +askarnas +askars +askas +askat +askats +asken +askens +askersund +askersunds +asket +asketen +asketens +asketer +asketerna +asketernas +asketers +asketisk +asketiska +asketiske +asketiskt +askets +askfat +askfaten +askfatens +askfatet +askfatets +askfats +askim +askims +asmundtorp +asmundtorps +asp +aspabruk +aspabruks +aspar +asparna +asparnas +aspars +aspekt +aspekten +aspektens +aspekter +aspekterna +aspekternas +aspekters +aspen +aspens +aspirant +aspiranten +aspirantens +aspiranter +aspiranterna +aspiranternas +aspiranters +aspiration +aspirationen +aspirationens +aspirationer +aspirationerna +aspirationernas +aspirationers +aspirations +aspirera +aspirerad +aspirerade +aspirerades +aspirerande +aspirerandet +aspirerandets +aspirerar +aspireras +aspirerat +aspirerats +assessor +assessorn +assessorns +assistans +assistansen +assistansens +assistanser +assistanserna +assistansernas +assistansers +assistent +assistenten +assistentens +assistenter +assistenterna +assistenternas +assistenters +assistera +assisterad +assisterade +assisterades +assisterar +assisteras +assisterat +assisterats +association +associationen +associationens +associationer +associationerna +associationernas +associationers +associations +associativ +associativa +associativt +associera +associerad +associerade +associerades +associerande +associerandet +associerandets +associerar +associeras +associerat +associerats +assyrier +assyriern +assyrierna +assyriernas +assyrierns +assyriers +assyrisk +assyriska +assyriske +assyriskt +asta +astas +aster +asterisk +asterisken +asteriskens +asterisker +asteriskerna +asteriskernas +asteriskers +astern +asterns +astma +astman +astmans +astmatiker +astmatikern +astmatikerna +astmatikernas +astmatikerns +astmatikers +astra +astrar +astrarna +astrarnas +astrars +astras +astrid +astrids +astrofysik +astrofysiken +astrofysikens +astronaut +astronauten +astronautens +astronauter +astronauterna +astronauternas +astronauters +astronom +astronomen +astronomens +astronomer +astronomerna +astronomernas +astronomers +astronomi +astronomien +astronomiens +astronomin +astronomins +astronomisk +astronomiska +astronomiskt +astronoms +asymmetrisk +asymmetriska +asymmetriskt +asymptotisk +asymptotiska +asymptotiskt +asynkron +asynkrona +asynkront +ateism +ateismen +ateismens +ateist +ateisten +ateistens +ateister +ateisterna +ateisternas +ateisters +ateistisk +ateistiska +ateistiske +ateistiskt +ateists +aten +atens +atom +atombomb +atombomben +atombombens +atombomber +atombomberna +atombombernas +atombombers +atombombs +atomen +atomens +atomer +atomerna +atomernas +atomers +atomfysik +atomfysiken +atomfysikens +atoni +atonien +atoniens +atonin +atonins +att +attack +attacken +attackens +attacker +attackera +attackerad +attackerade +attackerades +attackerande +attackerandet +attackerandets +attackerar +attackeras +attackerat +attackerats +attackerna +attackernas +attackers +attacks +attentat +attentaten +attentatens +attentatet +attentatets +attentats +attest +attesten +attestens +attester +attestera +attesterad +attesterade +attesterar +attesterat +attesterna +attesternas +attesters +attityd +attityden +attitydens +attityder +attityderna +attitydernas +attityders +attityds +attrahera +attraherad +attraherade +attraherades +attraherande +attraherandet +attraherandets +attraherar +attraheras +attraherat +attraherats +attraktion +attraktionen +attraktionens +attraktioner +attraktionerna +attraktionernas +attraktioners +attraktions +attraktiv +attraktiva +attraktivare +attraktivast +attraktivaste +attraktive +attraktivt +attrapp +attrappen +attrappens +attrapper +attrapperna +attrappernas +attrappers +attribut +attributen +attributens +attributet +attributets +atypisk +atypiska +atypiskt +audiens +audiensen +audiensens +audienser +audienserna +audiensernas +audiensers +auditorier +auditorierna +auditoriernas +auditoriers +auditoriet +auditoriets +auditorium +august +augusti +augustis +augusts +auktion +auktionen +auktionens +auktioner +auktionera +auktionerade +auktionerades +auktionerar +auktioneras +auktionerat +auktionerats +auktionerna +auktionernas +auktioners +auktions +auktorisera +auktoriserad +auktoriserade +auktoriserades +auktoriserar +auktoriseras +auktoriserat +auktoriserats +auktoritativ +auktoritativa +auktoritativt +auktoritet +auktoriteten +auktoritetens +auktoriteter +auktoriteterna +auktoriteternas +auktoriteters +auktoritets +aura +auran +aurans +auras +aurora +auroras +autenticitet +autenticiteten +autenticitetens +autentisk +autentiska +autentiskt +autistisk +autistiska +autistiskt +automat +automaten +automatens +automater +automaterna +automaternas +automaters +automatik +automatiken +automatikens +automation +automationen +automationens +automations +automatisera +automatiserad +automatiserade +automatiserades +automatiserar +automatiseras +automatiserat +automatiserats +automatisering +automatiseringar +automatiseringarna +automatiseringarnas +automatiseringars +automatiseringen +automatiseringens +automatiserings +automatisk +automatiska +automatiskt +automats +autonom +autonoma +autonomi +autonomien +autonomiens +autonomin +autonomins +autonomis +autonomt +autostrada +autostradan +autostradans +autostrador +autostradorna +autostradornas +autostradors +avancemang +avancemangen +avancemangens +avancemanget +avancemangets +avancera +avancerad +avancerade +avancerades +avancerande +avancerandet +avancerandets +avancerar +avanceras +avancerat +avancerats +avart +avarten +avartens +avarter +avarterna +avarternas +avarters +avbida +avbidade +avbidan +avbidans +avbidar +avbidas +avbidat +avbrott +avbrotten +avbrottens +avbrottet +avbrottets +avbrotts +avbruten +avbrutet +avbrutit +avbrutits +avbrutna +avbryt +avbryta +avbrytande +avbrytas +avbryter +avbrytes +avbryts +avbytare +avbytaren +avbytarens +avbytares +avbytarna +avbytarnas +avdankad +avdankade +avdankat +avdrag +avdragen +avdragens +avdraget +avdragets +avdragna +avdrags +avdramatisera +avdramatiserad +avdramatiserade +avdramatiserades +avdramatiserar +avdramatiseras +avdramatiserat +avdramatiserats +avdunsta +avdunstad +avdunstade +avdunstades +avdunstande +avdunstandet +avdunstandets +avdunstar +avdunstas +avdunstat +avdunstats +avdunstning +avdunstningar +avdunstningarna +avdunstningarnas +avdunstningars +avdunstningen +avdunstningens +avdunstnings +ave +aven +avena +avenas +avens +aveny +avenyer +avenyerna +avenyernas +avenyers +avenyn +avenyns +avenys +aversion +aversionen +aversionens +aversioner +aversionerna +aversionernas +aversioners +avesta +avestas +avet +avets +avfatta +avfattad +avfattade +avfattades +avfattar +avfattas +avfattat +avfattats +avfyra +avfyrad +avfyrade +avfyrades +avfyrande +avfyrandet +avfyrandets +avfyrar +avfyras +avfyrat +avfyrats +avgas +avgasen +avgasens +avgaser +avgaserna +avgasernas +avgasers +avgav +avgavs +avge +avger +avges +avgett +avgetts +avgick +avgift +avgifta +avgiftad +avgiftade +avgiftades +avgiftar +avgiftas +avgiftat +avgiftats +avgiften +avgiftens +avgifter +avgifterna +avgifternas +avgifters +avgiftning +avgiftningar +avgiftningarna +avgiftningarnas +avgiftningars +avgiftningen +avgiftningens +avgiftnings +avgifts +avgiftsfri +avgiftsfria +avgiftsfritt +avgiva +avgivande +avgivas +avgiven +avgivet +avgivit +avgivna +avgjord +avgjorda +avgjorde +avgjordes +avgjort +avgjorts +avgjut +avgjuta +avgjutas +avgjuter +avgjutit +avgjutits +avgjuts +avgnagd +avgnagda +avgnagt +avgrund +avgrunden +avgrundens +avgrunder +avgrunderna +avgrundernas +avgrunders +avgrunds +avgrundsdjup +avgrundsdjupa +avgrundsdjupt +avgud +avguda +avgudad +avgudade +avgudades +avgudadyrkan +avgudadyrkans +avgudadyrkare +avgudadyrkaren +avgudadyrkarens +avgudadyrkares +avgudadyrkarna +avgudadyrkarnas +avgudande +avgudandet +avgudandets +avgudar +avgudarna +avgudarnas +avgudars +avgudas +avgudat +avgudats +avguden +avgudens +avguderi +avguderiet +avguderiets +avgudisk +avgudiska +avgudiskt +avguds +avhopp +avhoppad +avhoppade +avhoppare +avhopparen +avhopparens +avhoppares +avhopparna +avhopparnas +avhoppat +avhoppen +avhoppens +avhoppet +avhoppets +avhugga +avhuggen +avhugger +avhugget +avhuggit +avhuggits +avhuggna +avhuggs +avi +aviat +aviaten +aviatens +aviater +aviaterna +aviaternas +aviaters +aviatik +aviatiken +aviatikens +aviats +avier +avierna +aviernas +aviers +avig +aviga +avigan +avigsida +avigsidan +avigsidans +avigsidas +avigsidor +avigsidorna +avigsidornas +avigsidors +avigt +avin +avins +avis +avisera +aviserad +aviserade +aviserades +aviserar +aviseras +aviserat +aviserats +avisering +aviseringar +aviseringarna +aviseringarnas +aviseringars +aviseringen +aviseringens +aviserings +avkasta +avkastad +avkastade +avkastades +avkastar +avkastas +avkastat +avkastats +avkastning +avkastningar +avkastningarna +avkastningarnas +avkastningars +avkastningen +avkastningens +avkastnings +avkoda +avkodad +avkodade +avkodades +avkodar +avkodare +avkodaren +avkodarens +avkodares +avkodarna +avkodarnas +avkodas +avkodat +avkodats +avkodning +avkodningen +avkodningens +avkodnings +avkomma +avkomman +avkommans +avkommas +avkommor +avkommorna +avkommornas +avkommors +avkrok +avkrokar +avkrokarna +avkrokarnas +avkrokars +avkroken +avkrokens +avkunna +avkunnad +avkunnade +avkunnades +avkunnande +avkunnandet +avkunnandets +avkunnar +avkunnas +avkunnat +avkunnats +avmattning +avmattningen +avmattningens +avmattnings +avnjut +avnjuta +avnjutas +avnjuten +avnjuter +avnjutes +avnjutet +avnjutit +avnjutits +avnjutna +avnjuts +avog +avoga +avoge +avoghet +avogheten +avoghetens +avoghets +avogt +avpassa +avpassad +avpassade +avpassades +avpassar +avpassas +avpassat +avpassats +avrapportera +avrapporterad +avrapporterade +avrapporterades +avrapporterande +avrapporterandet +avrapporterandets +avrapporterar +avrapporteras +avrapporterat +avrapporterats +avreagera +avreagerade +avreagerande +avreagerar +avreagerat +avregistrera +avregistrerad +avregistrerade +avregistrerades +avregistrerar +avregistreras +avregistrerat +avregistrerats +avres +avresa +avresan +avresans +avresas +avresedag +avresedagar +avresedagarna +avresedagarnas +avresedagars +avresedagen +avresedagens +avresedags +avreser +avresor +avresorna +avresornas +avresors +avrest +avreste +avrunda +avrundad +avrundade +avrundades +avrundar +avrundas +avrundat +avrundats +avrundning +avrundningar +avrundningarna +avrundningarnas +avrundningars +avrundningen +avrundningens +avrundnings +avsade +avsagt +avsaknad +avsaknaden +avsaknadens +avsats +avsatsen +avsatsens +avsatser +avsatserna +avsatsernas +avsatsers +avsatt +avsatta +avse +avsedd +avsedda +avseende +avseenden +avseendena +avseendenas +avseendens +avseendet +avseendets +avser +avses +avsett +avsetts +avsides +avsikt +avsikten +avsiktens +avsikter +avsikterna +avsikternas +avsikters +avskaffa +avskaffad +avskaffade +avskaffades +avskaffande +avskaffandet +avskaffandets +avskaffar +avskaffas +avskaffat +avskaffats +avskar +avskars +avsked +avskeda +avskedad +avskedade +avskedades +avskedande +avskedandet +avskedandets +avskedar +avskedas +avskedat +avskedats +avskeden +avskedens +avskedet +avskedets +avskeds +avskedsfest +avskedsfesten +avskedsfestens +avskedsfester +avskedsfesterna +avskedsfesternas +avskedsfesters +avskrev +avskrevs +avskrift +avskriften +avskriftens +avskrifter +avskrifterna +avskrifternas +avskrifters +avskrifts +avskriva +avskrivas +avskriven +avskriver +avskrivet +avskrivit +avskrivits +avskrivna +avskrivning +avskrivningar +avskrivningarna +avskrivningarnas +avskrivningars +avskrivningen +avskrivningens +avskrivnings +avskrivningstid +avskrivningstiden +avskrivningstidens +avskrivningstider +avskrivningstiderna +avskrivningstidernas +avskrivningstiders +avskrivningstids +avskrivs +avskum +avskummen +avskummens +avskummet +avskummets +avskums +avskuren +avskuret +avskurit +avskurits +avskurna +avsky +avskydd +avskydda +avskydde +avskyddes +avskyn +avskyns +avskyr +avskys +avskytt +avskytts +avsmak +avsmaka +avsmakade +avsmakades +avsmakande +avsmakar +avsmakas +avsmakat +avsmakats +avsmaken +avsmakens +avsnitt +avsnitten +avsnittens +avsnittet +avsnittets +avsnitts +avsomna +avsomnad +avsomnade +avsomnades +avsomnande +avsomnandet +avsomnandets +avsomnar +avsomnat +avsomnats +avspisa +avspisad +avspisade +avspisades +avspisande +avspisandet +avspisandets +avspisar +avspisas +avspisat +avspisats +avstamp +avstampen +avstampens +avstampet +avstampets +avstamps +avstanna +avstannad +avstannade +avstannande +avstannar +avstannat +avstava +avstavad +avstavade +avstavades +avstavande +avstavandet +avstavandets +avstavar +avstavas +avstavat +avstavats +avstavning +avstavningar +avstavningarna +avstavningarnas +avstavningars +avstavningen +avstavningens +avstavnings +avsteg +avstegen +avstegens +avsteget +avstegets +avstegs +avstickare +avstickaren +avstickarens +avstickares +avstickarna +avstickarnas +avstigning +avstigningar +avstigningarna +avstigningarnas +avstigningars +avstigningen +avstigningens +avstignings +avstod +avstyr +avstyra +avstyrande +avstyrandet +avstyrandets +avstyras +avstyrd +avstyrde +avstyrdes +avstyrk +avstyrka +avstyrker +avstyrkt +avstyrkte +avstyrs +avstyrt +avstyrts +avsvimma +avsvimmad +avsvimmade +avsvimmades +avsvimmande +avsvimmandet +avsvimmandets +avsvimmar +avsvimmas +avsvimmat +avsvimmats +avsvor +avsvurit +avsyna +avsynad +avsynade +avsynades +avsynande +avsynandet +avsynandets +avsynar +avsynas +avsynat +avsynats +avsyning +avsyningar +avsyningarna +avsyningarnas +avsyningars +avsyningen +avsyningens +avsynings +avta +avtaga +avtappning +avtappningar +avtappningarna +avtappningarnas +avtappningars +avtappningen +avtappningens +avtappnings +avtar +avteckna +avtecknad +avtecknade +avtecknades +avtecknande +avtecknandet +avtecknandets +avtecknar +avtecknas +avtecknat +avtecknats +avtog +avtrubba +avtrubbad +avtrubbade +avtrubbades +avtrubbar +avtrubbas +avtrubbat +avtrubbats +avtrubbning +avtrubbningar +avtrubbningarna +avtrubbningarnas +avtrubbningars +avtrubbningen +avtrubbningens +avtrubbnings +avtryck +avtrycka +avtryckare +avtryckaren +avtryckarens +avtryckares +avtryckarna +avtryckarnas +avtrycken +avtryckens +avtrycker +avtrycket +avtryckets +avtrycks +avtryckt +avtryckte +avtrycktes +avtryckts +avtvinga +avtvingade +avtvingades +avtvingar +avtvingas +avtvingat +avtvingats +avund +avundades +avundas +avundats +avunden +avundens +avunds +avundsam +avundsamma +avundsamt +avundsjuk +avundsjuka +avundsjukan +avundsjukans +avundsjukas +avundsjuke +avundsjukes +avundsjukt +avvakta +avvaktad +avvaktade +avvaktades +avvaktan +avvaktande +avvaktandet +avvaktandets +avvaktans +avvaktar +avvaktas +avvaktat +avvaktats +avvara +avvarade +avvarades +avvarar +avvaras +avvarat +avvarats +avvek +avveks +avverka +avverkad +avverkade +avverkades +avverkande +avverkandet +avverkandets +avverkar +avverkas +avverkat +avverkats +avverkning +avverkningar +avverkningarna +avverkningarnas +avverkningars +avverkningen +avverkningens +avverknings +avverkningsbar +avverkningsbara +avverkningsbart +avvika +avvikande +avvikandes +avvikandet +avvikandets +avvikare +avvikaren +avvikarens +avvikares +avvikarna +avvikarnas +avviker +avvikit +avvisa +avvisad +avvisade +avvisades +avvisande +avvisandet +avvisandets +avvisar +avvisas +avvisat +avvisats +avvisning +avvisningar +avvisningarna +avvisningarnas +avvisningars +avvisningen +avvisningens +avvisnings +avyttra +avyttrad +avyttrade +avyttrades +avyttrar +avyttras +avyttrat +avyttrats +avyttring +avyttringar +avyttringarna +avyttringarnas +avyttringars +avyttringen +avyttringens +avyttrings +axen +axens +axet +axets +axiom +axiomatisk +axiomatiska +axiomatiskt +axiomen +axiomens +axiomet +axiomets +axioms +azerbajdzjan +azerbajdzjans +babian +babianen +babianens +babianer +babianerna +babianernas +babianers +babians +baby +babyn +babyns +back backa +backad +backade +backades +backande +backar +backarna +backarnas +backars +backaryd +backaryds backas +backat +backats backe +backen +backens backes +backstuga +backstugan +backstugans +backstugas +backstugor +backstugorna +backstugornas +backstugors +backus +bacon +bad +bada +badad +badade +badades +badande +badandet +badandets +badar +badas +badat +badats +badda +baddade +baddades +baddar +baddare +baddaren +baddarens +baddares +baddarna +baddarnas +baddas +baddat +baddats +baden +badens +badet +badets +badhus +badhusen +badhusens +badhuset +badhusets +badkar +badkaren +badkarens +badkaret +badkarets +badkars +badminton +badort +badorten +badortens +badorter +badorterna +badorternas +badorters +badorts +badrock +badrockar +badrockarna +badrockarnas +badrockars +badrocken +badrockens +badrum +badrummen +badrummens +badrummet +badrummets +badrums +bads +badstrand +badstranden +badstrandens +badvatten +badvattnet +badvattnets +bagage +bagaget +bagagets +bagageutrymme +bagageutrymmen +bagageutrymmena +bagageutrymmenas +bagageutrymmens +bagageutrymmet +bagageutrymmets +bagare +bagaren +bagarens +bagares +bagarmossen +bagarmossens +bagarna +bagarnas +bageri +bagerier +bagerierna +bageriernas +bageriers +bageriet +bageriets +baggar +baggarna +baggarnas +baggars +bagge +baggen +baggens +bagges +bahamas +bahr +bahrain +bahrains +bahrs +bajonett +bajonetten +bajonettens +bajonetter +bajonetterna +bajonetternas +bajonetters +bajs +bajsa +bajsade +bajsande +bajsar +bajsat +bajset +bajsets +bak +baka +bakad +bakade +bakades +bakar +bakas +bakat +bakats +bakbord +bakborden +bakbordens +bakbordet +bakbordets +bakbords +bakdantare +bakdantaren +bakdantarens +bakdantares +bakdantarna +bakdantarnas +bakduk +bakdukar +bakdukarna +bakdukarnas +bakdukars +bakduken +bakdukens +bakduks +baken +bakens +bakerst +bakersta +baket +bakets +bakficka +bakfickan +bakfickans +bakfickor +bakfickorna +bakfickornas +bakfickors +bakfoten +bakgata +bakgatan +bakgatans +bakgator +bakgatorna +bakgatornas +bakgators +bakgrund +bakgrunden +bakgrundens +bakgrunder +bakgrunderna +bakgrundernas +bakgrunders +bakgrunds +baki +bakkropp +bakkroppar +bakkropparna +bakkropparnas +bakkroppars +bakkroppen +bakkroppens +bakkropps +bakning +bakningen +bakningens +bakom +bakre +bakruta +bakrutan +bakrutans +bakrutor +bakrutorna +bakrutornas +bakrutors +baks +baksida +baksidan +baksidans +baksidas +baksidor +baksidorna +baksidornas +baksidors +baktankar +baktankarna +baktankarnas +baktankars +baktanke +baktanken +baktankens +bakterie +bakterien +bakteriens +bakterier +bakterierna +bakteriernas +bakteriers +bakteries +bakut +ban +bana +banad +banade +banades +banan +bananen +bananens +bananer +bananerna +bananernas +bananers +banans +banar +banas +banat +banats +banbrytande +banbrytare +banbrytaren +banbrytarens +banbrytares +banbrytarna +banbrytarnas +band +banda +bandad +bandade +bandades +bandage +bandagen +bandagens +bandaget +bandagets +bandar +bandas +bandat +bandats +bandbredd +bandbredden +bandbreddens +banden +bandens +bandet +bandets +bandhagen +bandhagens +bandit +banditen +banditens +banditer +banditerna +banditernas +banditers +bandits +bandning +bandningen +bandningens +bands +bandy +bandyn +bandyns +bane +baneman +banemannen +banemannens +banemans +banen +banens +baner +baneren +banerens +baneret +banerets +baners +bank +banka +bankad +bankade +bankades +bankande +bankandet +bankandets +bankar +bankarna +bankarnas +bankars +bankas +bankat +bankats +banken +bankens +banker +bankerna +bankernas +bankers +bankeryd +bankeryds +bankett +banketten +bankettens +banketter +banketterna +banketternas +banketters +bankgiro +bankgiroen +bankgiroens +bankgiros +bankir +bankiren +bankirens +bankirer +bankirerna +bankirernas +bankirers +bankirs +bankkonto +bankkontos +banko +bankomat +bankomaten +bankomatens +bankomater +bankomaterna +bankomaternas +bankomaters +bankrutt +bankrutta +banks +bann +banna +bannad +bannade +bannades +bannar +bannas +bannat +bannats +bannet +bannets +bannor +bannorna +bannornas +bannors +banor +banorna +banornas +banors +banta +bantad +bantade +bantades +bantar +bantas +bantat +bantats +bantning +bantningen +bantningens +bantnings +bantu +bantuer +bantuerna +bantuernas +bantuers +bantun +bantuns +bantus +baptist +baptisten +baptistens +baptister +baptisterna +baptisternas +baptisters +bar bara +barack +baracken +barackens +baracker +barackerna +barackernas +barackers +baracks +barare +baras +barast +baraste +barbados +barbar +barbaren +barbarens +barbarer +barbarerna +barbarernas +barbarers +barbari +barbarien +barbariens +barbariet +barbariets +barbarisk +barbariska +barbariskt +barbars +barbent +barbenta +barberare +barberaren +barberarens +barberares +barberarna +barberarnas +barbro +barbros +bardisk +bardiskar +bardiskarna +bardiskarnas +bardiskars +bardisken +bardiskens +baren +barens +barer +barerna +barernas +barers +barfota +bark +barka +barkad +barkade +barkar +barkarna +barkarnas +barkars +barkat +barkbit +barkbitar +barkbitarna +barkbitarnas +barkbitars +barkbiten +barkbitens +barkbits +barken +barkens +barker +barkerna +barkernas +barkers +barks +barm +barmar +barmarna +barmarnas +barmars +barmen +barmens +barms +barn +barnbarn +barnbarnen +barnbarnens +barnbarnet +barnbarnets +barnbarns +barnbidrag +barnbidragen +barnbidragens +barnbidraget +barnbidragets +barnbidrags +barnbok +barnboken +barnbokens +barnboks +barndom +barndomen +barndomens +barndoms +barnen +barnens +barnet +barnets +barnmorska +barnmorskan +barnmorskans +barnmorskor +barnmorskorna +barnmorskornas +barnmorskors +barnomsorg +barnomsorgen +barnomsorgens +barnomsorgs +barnpassning +barnpassningen +barnpassningens +barnpiga +barnpigan +barnpigans +barnpigas +barnpigor +barnpigorna +barnpigornas +barnpigors +barnprogram +barnprogrammen +barnprogrammens +barnprogrammet +barnprogrammets +barnprograms +barnprostitution +barnprostitutionen +barnprostitutionens +barnprostitutions +barns +barnsben +barnvagn +barnvagnen +barnvagnens +barnvagns +barock +barocka +barockare +barockast +barockaste +barocken +barockens +barockt +barometer +barometern +barometerns +barometers +barometrar +barometrarna +barometrarnas +barometrars +baron +baronen +baronens +baroner +baronerna +baronernas +baroners +barr +barren +barrens +barret +barrets +barrikad +barrikaden +barrikadens +barrikader +barrikadera +barrikaderad +barrikaderade +barrikaderades +barrikaderar +barrikaderas +barrikaderat +barrikaderats +barrikaderna +barrikadernas +barrikaders +barrikads +barrs +bars +barsk +barska +barskas +barske +barskes +barskrapa +barskrapad +barskrapade +barskrapades +barskrapar +barskrapat +barskrapats +barskt +bart +bartender +bartendern +bartenderns +bartenders +bartendrar +bartendrarna +bartendrarnas +bartendrars +baryton +barytonen +barytonens +barytoner +barytonerna +barytonernas +barytoners +bas +basa +basade +basar +basaren +basarens +basarer +basarerna +basarernas +basarers +basarna +basarnas +basars +basat +basen +basens +baser +basera +baserad +baserade +baserades +baserar +baseras +baserat +baserats +baserna +basernas +basers +basis +basisk +basiska +basiskt +basist +basisten +basistens +basister +basisterna +basisternas +basisters +basker +baskern +baskerna +baskernas +baskerns +baskers +basket +basketen +basketens +baskets +baskisk +baskiska +baskiskan +baskiskans +baskiskt +baskrar +baskrarna +baskrarnas +baskrars +basta +bastade +bastant +bastanta +bastantare +bastantast +bastantaste +bastar +bastard +bastarden +bastardens +bastarder +bastarderna +bastardernas +bastarders +bastat +bastu +bastun +bastuns +bastur +basturna +basturnas +basturs +bastus +basun +basunen +basunens +basuner +basunera +basunerade +basunerades +basunerar +basuneras +basunerat +basunerats +basunerna +basunernas +basuners +batik +batiken +batikens +batong +batongen +batongens +batonger +batongerna +batongernas +batongers +batteri +batterier +batterierna +batteriernas +batteriers +batteriet +batteriets +bautasten +bautastenar +bautastenarna +bautastenarnas +bautastenars +bautastenen +bautastenens +baxna +baxnade +baxnar +baxnat +bayersk +bayerska +bayerske +bayerskt +beakta +beaktad +beaktade +beaktades +beaktande +beaktandet +beaktandets +beaktar +beaktas +beaktat +beaktats +bearbeta +bearbetad +bearbetade +bearbetades +bearbetande +bearbetandet +bearbetandets +bearbetar +bearbetas +bearbetat +bearbetats +bearbetning +bearbetningar +bearbetningarna +bearbetningarnas +bearbetningars +bearbetningen +bearbetningens +bearbetnings +bebis +bebisar +bebisarna +bebisarnas +bebisars +bebisen +bebisens +bebo +bebodd +bebodda +bebodde +beboddes +bebor +bebos +bebott +bebotts +bebygg +bebygga +bebyggas +bebyggd +bebyggda +bebyggde +bebyggdes +bebygger +bebyggs +bebyggt +bebyggts +beck +becket +beckets +bedarra +bedarrade +bedarrar +bedarrat +bedd +bedda +beddingestrand +beddingestrands +bedja +bedjande +bedjandet +bedjandets +bedra +bedraga +bedragare +bedragaren +bedragarens +bedragares +bedragarna +bedragarnas +bedragas +bedragen +bedraget +bedragit +bedragits +bedragna +bedragnas +bedragne +bedragnes +bedrar +bedras +bedrev +bedrevs +bedrift +bedriften +bedriftens +bedrifter +bedrifterna +bedrifternas +bedrifters +bedriv +bedriva +bedrivas +bedriver +bedrives +bedrivit +bedrivits +bedrivs +bedrog +bedrogs +beduin +beduinen +beduinens +beduiner +beduinerna +beduinernas +beduiners +beduins +bedyra +bedyrad +bedyrade +bedyrades +bedyrande +bedyranden +bedyrandena +bedyrandenas +bedyrandens +bedyrandes +bedyrandet +bedyrandets +bedyrar +bedyrat +bedyrats +befann +befanns +befara +befarad +befarade +befarades +befarar +befaras +befarat +befarats +befatta +befattad +befattade +befattades +befattar +befattas +befattat +befattats +befattning +befattningar +befattningarna +befattningarnas +befattningars +befattningen +befattningens +befattnings +befattningshavare +befattningshavaren +befattningshavarens +befattningshavares +befattningshavarna +befattningshavarnas +befinna +befinnas +befinner +befinnes +befinns +befogad +befogade +befogat +befogenhet +befogenheten +befogenhetens +befogenheter +befogenheterna +befogenheternas +befogenheters +befogenhets +befordra +befordrad +befordrade +befordrades +befordran +befordrande +befordrar +befordras +befordrat +befordrats +befria +befriad +befriade +befriades +befriande +befriandet +befriandets +befriar +befriare +befriaren +befriarens +befriares +befriarna +befriarnas +befrias +befriat +befriats +befrukta +befruktad +befruktade +befruktades +befruktande +befruktar +befruktas +befruktat +befruktats +befruktning +befruktningar +befruktningarna +befruktningarnas +befruktningars +befruktningen +befruktningens +befruktnings +befunna +befunnen +befunnet +befunnit +befunnits +begabba +begabbade +begabbades +begabbande +begabbandet +begabbandets +begabbar +begabbas +begabbat +begabbats +begabberi +begabberier +begabberierna +begabberiernas +begabberiers +begabberiet +begabberiets +begagna +begagnad +begagnade +begagnades +begagnande +begagnandet +begagnandets +begagnar +begagnas +begagnat +begagnats +begav +bege +beger +begett +begick +begicks +begiva +begivas +begiven +begivenhet +begivenheten +begivenhetens +begivenheter +begivenheterna +begivenheternas +begivenheters +begivenhets +begivet +begivit +begivna +begjuten +begjutet +begjutna +begrav +begrava +begravas +begravd +begravda +begravde +begravdes +begraven +begraver +begraves +begravet +begravit +begravits +begravna +begravning +begravningar +begravningarna +begravningarnas +begravningars +begravningen +begravningens +begravnings +begravningsbok +begravningsboken +begravningsbokens +begravs +begravt +begravts +begrep +begrepp +begreppen +begreppens +begreppet +begreppets +begrepps +begreppsapparat +begreppsapparaten +begreppsapparatens +begreppsapparater +begreppsapparaterna +begreppsapparaternas +begreppsapparaters +begreppsapparats +begrip +begripa +begripas +begriper +begripit +begrips +begrov +begrovs +begrunda +begrundade +begrundan +begrundande +begrundandet +begrundandets +begrundar +begrundat +begynn +begynna +begynnande +begynner +begynt +begynte +begyntes +behag +behaga +behagad +behagade +behagades +behagar +behagas +behagat +behagats +behagen +behagens +behaget +behagets +behags +behaviorism +behaviorismen +behaviorismens +behov +behoven +behovens +behovet +behovets +behovs +beiga +beige +beigt +beivra +beivrad +beivrade +beivrades +beivrar +beivras +beivrat +beivrats +bejaka +bejakade +bejakades +bejakande +bejakar +bejakas +bejakat +bejakats +bekant +bekanta +bekantade +bekantades +bekantar +bekantare +bekantas +bekantast +bekantaste +bekantat +bekantats +bekantskap +bekantskapen +bekantskapens +bekantskaper +bekantskaperna +bekantskapernas +bekantskapers +bekantskaps +bekom +bekomma +bekommer +bekommit +bekosta +bekostad +bekostade +bekostades +bekostar +bekostas +bekostat +bekostats +bekostnad +bekransa +bekransade +bekransades +bekransar +bekransas +bekransat +bekransats +bekymmer +bekymmers +bekymmersam +bekymmersamma +bekymmersamt +bekymra +bekymrad +bekymrade +bekymrades +bekymrar +bekymras +bekymrat +bekymrats +bekymren +bekymrens +bekymret +bekymrets +bemanna +bemannad +bemannade +bemannades +bemannar +bemannas +bemannat +bemannats +bemanning +bemanningar +bemanningarna +bemanningarnas +bemanningars +bemanningen +bemanningens +bemannings +bemyndiga +bemyndigad +bemyndigade +bemyndigades +bemyndigande +bemyndigandet +bemyndigandets +bemyndigar +bemyndigas +bemyndigat +bemyndigats +ben +bena +benade +benan +benans +benar +benas +benat +benen +benens +benet +benets +bengt +bengts +bengtsfors +benig +beniga +benigt +benin +benins +benor +benorna +benornas +benors +bens +bensin +bensinen +bensinens +bensinkostnad +bensinkostnaden +bensinkostnadens +bensinkostnader +bensinkostnaderna +bensinkostnadernas +bensinkostnaders +bensinmack +bensinmackar +bensinmackarna +bensinmackarnas +bensinmackars +bensinmacken +bensinmackens +bensinmacks +benstomme +benstommen +benstommens +benstommes +beordra +beordrad +beordrade +beordrades +beordrar +beordras +beordrat +beordrats +bepryd +bepryda +beprydas +beprydde +bepryddes +bepryder +bepryds +beprytt +beprytts +ber +beramad +beramade +beramat +bered +bereda +beredande +beredandet +beredandets +beredare +beredaren +beredarens +beredares +beredarna +beredarnas +beredas +beredd +beredda +beredde +bereddes +bereder +beredes +beredning +beredningar +beredningarna +beredningarnas +beredningars +beredningen +beredningens +berednings +bereds +beredskap +beredskapen +beredskapens +beredskaps +berest +beresta +berett +beretts +berg +berga +bergas +bergby +bergbys +bergeforsen +bergeforsens +bergen +bergens +berget +bergets +bergfast +bergfasta +berghem +berghems +bergig +bergiga +bergigare +bergigast +bergigaste +bergigt +bergkvara +bergkvaras +bergmassiv +bergmassiven +bergmassivens +bergmassivet +bergmassivets +bergs +bergsbygd +bergsbygden +bergsbygdens +bergshamra +bergshamras +bergskedja +bergskedjan +bergskedjans +bergskedjor +bergskedjorna +bergskedjornas +bergskedjors +bergspredikan +bergssida +bergssidan +bergssidans +bergssidor +bergssidorna +bergssidornas +bergssidors +bergstopp +bergstoppar +bergstopparna +bergstopparnas +bergstoppars +bergstoppen +bergstoppens +bergstopps +bergvik +bergviks +berika +berikad +berikade +berikades +berikande +berikar +berikas +berikat +berikats +berit +berits +bernhard +bernhards +bero +berodde +beroende +beroendet +beroendets +beror +berott +bert +berta +bertas +berts +berusa +berusad +berusade +berusades +berusande +berusar +berusas +berusat +berusats +berusning +berusningar +berusningarna +berusningarnas +berusningars +berusningen +berusningens +beryktad +beryktade +beryktat +besanna +besannad +besannade +besannades +besannar +besannas +besannat +besannats +besatt +besatta +besatte +besattes +besatthet +besattheten +besatthetens +besatthets +besatts +bese +besegra +besegrad +besegrade +besegrades +besegrar +besegrare +besegraren +besegrarens +besegrares +besegrarna +besegrarnas +besegras +besegrat +besegrats +beser +beses +besikta +besiktad +besiktade +besiktades +besiktar +besiktas +besiktat +besiktats +besiktiga +besiktigad +besiktigade +besiktigades +besiktigande +besiktigas +besiktigat +besiktigats +besiktning +besiktningar +besiktningarna +besiktningarnas +besiktningars +besiktningen +besiktningens +besiktnings +besinna +besinnad +besinnade +besinnades +besinnande +besinnandet +besinnandets +besinnar +besinnas +besinnat +besinnats +besinning +besinningen +besinningens +besinnings +besitta +besitter +besittning +besittningar +besittningarna +besittningarnas +besittningars +besittningen +besittningens +besittnings +besjunga +besk +beska +beskaffad +beskaffade +beskaffat +beskaffenhet +beskaffenheten +beskaffenhetens +beskaffenhets +beskare +beskast +beskaste +beskatta +beskattad +beskattade +beskattades +beskattar +beskattas +beskattat +beskattats +beskattning +beskattningar +beskattningarna +beskattningarnas +beskattningars +beskattningen +beskattningens +beskattnings +besked +beskeden +beskedens +beskedet +beskedets +beskeds +beskickning +beskickningen +beskickningens +beskicknings +beskjut +beskjuta +beskjutas +beskjuter +beskjutit +beskjutits +beskjuts +beskow +beskows +beskrev +beskrevs +beskriv +beskriva +beskrivande +beskrivandet +beskrivandets +beskrivas +beskriven +beskriver +beskrives +beskrivet +beskrivit +beskrivits +beskrivna +beskrivning +beskrivningar +beskrivningarna +beskrivningarnas +beskrivningars +beskrivningen +beskrivningens +beskrivnings +beskrivs +beskt +beskurit +beskurits +beskydd +beskydda +beskyddad +beskyddade +beskyddades +beskyddar +beskyddare +beskyddaren +beskyddarens +beskyddares +beskyddarinna +beskyddarinnan +beskyddarinnans +beskyddarinnas +beskyddarna +beskyddarnas +beskyddas +beskyddat +beskyddats +beskyddet +beskyddets +besmyckad +besmyckade +besmyckat +bespara +besparad +besparade +besparades +besparande +besparar +besparas +besparat +besparats +besparing +besparingar +besparingarna +besparingarnas +besparingars +besparingen +besparingens +besparings +bespisa +bespisad +bespisade +bespisades +bespisar +bespisat +bespisats +bespisning +bespisningar +bespisningarna +bespisningarnas +bespisningars +bespisningen +bespisningens +bespotta +bespottad +bespottade +bespottades +bespottar +bespottas +bespottat +bespottats +bespruta +besprutad +besprutade +besprutades +besprutar +besprutas +besprutat +besprutats +besprutning +besprutningar +besprutningarna +besprutningarnas +besprutningars +besprutningen +besprutningens +besserwisser +besserwissern +besserwisserns +best +bestar +bestarna +bestarnas +bestars +besteg +besten +bestens +bestick +besticka +besticken +bestickens +besticker +besticket +bestickets +besticks +bestiga +bestigas +bestiger +bestigit +bestigning +bestigningen +bestigningens +bestod +bestods +bestorma +bestormad +bestormade +bestormades +bestormar +bestormas +bestormat +bestormats +bestraffa +bestraffad +bestraffade +bestraffades +bestraffande +bestraffandet +bestraffandets +bestraffar +bestraffas +bestraffat +bestraffats +bestraffning +bestraffningar +bestraffningarna +bestraffningarnas +bestraffningars +bestraffningen +bestraffningens +bestraffnings +bestred +bestreds +bestrid +bestrida +bestridas +bestrider +bestrides +bestridit +bestridits +bestrids +bestrykes +bestycka +bestyckad +bestyckade +bestyckades +bestyckar +bestyckas +bestyckat +bestyckats +bestyckning +bestyckningar +bestyckningarna +bestyckningarnas +bestyckningars +bestyckningen +bestyckningens +bestycknings +bestyr +bestyra +bestyras +bestyrde +bestyrdes +bestyrk +bestyrka +bestyrkas +bestyrker +bestyrks +bestyrkt +bestyrkta +bestyrkte +bestyrktes +bestyrkts +bestyrs +bestyrt +bestyrts +besutten +besuttet +besuttit +besuttna +besuttnas +besuttne +besuttnes +besvara +besvarad +besvarade +besvarades +besvarar +besvaras +besvarat +besvarats +besviken +besvikenhet +besvikenheten +besvikenhetens +besviket +besvikna +besvikne +bet +beta +betacka +betackade +betackar +betackat +betad +betade +betades +betagen +betaget +betagit +betagna +betan +betande +betandet +betandets +betans +betar +betarna +betarnas +betars +betas +betat +betats +bete +beteckna +betecknad +betecknade +betecknades +betecknande +betecknandet +betecknandets +betecknar +betecknas +betecknat +betecknats +beteckning +beteckningar +beteckningarna +beteckningarnas +beteckningars +beteckningen +beteckningens +betecknings +betedde +beteende +beteenden +beteendena +beteendenas +beteendens +beteendes +beteendet +beteendets +beten +betena +betenas +betens +beter +betes +betesmark +betesmarker +betesmarkerna +betesmarkernas +betesmarkers +betet +betets +betett +betinga +betingad +betingade +betingades +betingar +betingas +betingat +betingats +betog +betona +betonad +betonade +betonades +betonande +betonandet +betonandets +betonar +betonas +betonat +betonats +betong +betongen +betongens +betongs +betoning +betoningar +betoningarna +betoningarnas +betoningars +betoningen +betoningens +betonings +betor +betorna +betornas +betors +betrakta +betraktad +betraktade +betraktades +betraktande +betraktandet +betraktandets +betraktar +betraktare +betraktaren +betraktarens +betraktares +betraktarna +betraktarnas +betraktas +betraktat +betraktats +betro +betrodd +betrodda +betrodde +betroddes +betror +betros +betrott +betrotts +betryck +betrycka +betryckas +betrycker +betrycket +betryckets +betrycks +betryckt +betryckta +betryckte +betrycktes +betryckts +betryggad +betryggade +betryggande +betryggat +bets +bett +betten +bettens +bettet +bettets +bettna +bettnas +betts +betunga +betungad +betungade +betungande +betungar +betungas +betungat +betvinga +betvingad +betvingade +betvingades +betvingar +betvingare +betvingaren +betvingarens +betvingares +betvingarna +betvingarnas +betvingas +betvingat +betvingats +betyd +betyda +betydande +betydas +betydde +betyddes +betydenhet +betydenheten +betydenhetens +betydenhets +betyder +betyds +betyg +betyga +betygade +betygar +betygat +betygen +betygens +betyget +betygets +betygsatte +betygsattes +betygsatts +betytt +betytts +beundra +beundrad +beundrade +beundrades +beundran +beundrande +beundrar +beundrare +beundraren +beundrarens +beundrares +beundrarna +beundrarnas +beundras +beundrat +beundrats +bevaka +bevakad +bevakade +bevakades +bevakande +bevakandet +bevakandets +bevakar +bevakare +bevakaren +bevakarens +bevakares +bevakarna +bevakarnas +bevakas +bevakat +bevakats +bevakning +bevakningar +bevakningarna +bevakningarnas +bevakningars +bevakningen +bevakningens +bevaknings +bevandra +bevandrad +bevandrade +bevandrades +bevandrande +bevandrandet +bevandrandets +bevandrar +bevandras +bevandrat +bevandrats +bevara +bevarad +bevarade +bevarades +bevarande +bevarandet +bevarandets +bevarar +bevaras +bevarat +bevarats +bevare +bevars +beveka +bevekande +bevekandet +bevekandets +bevekas +beveker +beveks +bevekt +bevekte +bevektes +bevekts +bevingad +bevingade +bevingat +bevis +bevisa +bevisad +bevisade +bevisades +bevisande +bevisandet +bevisandets +bevisar +bevisas +bevisat +bevisats +bevisen +bevisens +beviset +bevisets +bevisning +bevisningen +bevisningens +bevista +bevistad +bevistade +bevistades +bevistande +bevistandet +bevistandets +bevistar +bevistas +bevistat +bevistats +bevittna +bevittnad +bevittnade +bevittnades +bevittnande +bevittnandet +bevittnandets +bevittnar +bevittnas +bevittnat +bevittnats +bevuxit +bhutan +bhutans +bibringa +bibringade +bibringades +bibringar +bibringas +bibringat +bibringats +bida +bidade +bidande +bidar +bidat +bidde +bidra +bidrag +bidraga +bidragande +bidragen +bidragens +bidraget +bidragets +bidragit +bidrags +bidragsgivare +bidragsgivaren +bidragsgivarens +bidragsgivares +bidragsgivarna +bidragsgivarnas +bidragstagare +bidragstagaren +bidragstagarens +bidragstagares +bidragstagarna +bidragstagarnas +bidrar +bidrog +bieffekt +bieffekten +bieffektens +bieffekter +bieffekterna +bieffekternas +bieffekters +bien +biens +biet +biets +biff +biffar +biffarna +biffarnas +biffars +biffen +biffens +biffs +bifigur +bifiguren +bifigurens +bifigurer +bifigurerna +bifigurernas +bifigurers +bifigurs +bifoga +bifogad +bifogade +bifogades +bifogande +bifogandet +bifogandets +bifogar +bifogas +bifogat +bifogats +bigott +bigotta +bihang +bihangen +bihangens +bihanget +bihangets +bihangs +bihustru +bihustrun +bihustruns +bihustrur +bihustrurna +bihustrurnas +bihustrurs +bihustrus +bikt +bikta +biktade +biktar +biktat +bikten +biktens +bikter +bikterna +bikternas +bikters +bikts +bikupa +bikupan +bikupans +bikupas +bikupor +bikuporna +bikupornas +bikupors +bin +bina +binas +bind +binda +bindan +bindande +bindandet +bindandets +bindans +bindas +binder +bindestreck +bindestrecken +bindestreckens +bindestrecket +bindestreckets +bindestrecks +bindning +bindningar +bindningarna +bindningarnas +bindningars +bindningen +bindningens +bindnings +bindor +bindorna +bindornas +bindors +binds +bingar +bingarna +bingarnas +bingars +binge +bingen +bingens +binges +bingo +bingon +bingons +bins +bio +biocid +biociden +biocidens +biocider +biociderna +biocidernas +biociders +biocids +biograf +biografen +biografens +biografer +biograferna +biografernas +biografers +biografi +biografier +biografierna +biografiernas +biografiers +biografin +biografins +biografis +biografs +biokemi +biokemin +biokemins +biokemisk +biokemiska +biokemiskt +biomedicinsk +biomedicinska +biomedicinskt +bion +bions +biotop +biotopen +biotopens +biotoper +biotoperna +biotopernas +biotopers +biprodukt +biprodukter +biprodukterna +biprodukternas +biprodukters +birger +birgers +birgit +birgits +birgitta +birgittas +birmingham +birminghams +bis +bisak +bisaken +bisakens +bisaker +bisakerna +bisakernas +bisakers +bisaks +bisarr +bisarra +bisarrare +bisarrast +bisarraste +bisarre +bisarrt +bisats +bisatsen +bisatsens +bisatser +bisatserna +bisatsernas +bisatsers +bisittare +bisittaren +bisittarens +bisittares +bisittarna +bisittarnas +biskop +biskopar +biskoparna +biskoparnas +biskopars +biskopen +biskopens +biskops +bismak +bismaken +bismakens +bismaker +bismakerna +bismakernas +bismakers +bismaks +bissau +bister +bistert +bistick +bisticken +bistickens +bisticket +bistickets +bisticks +bistod +bistods +bistra +bistrare +bistrast +bistraste +bistre +bistres +bistro +bistroer +bistroerna +bistroernas +bistroers +bistron +bistrons +bit +bita +bitande +bitandet +bitandets +bitar +bitarna +bitarnas +bitars +bitas +biten +bitens +biter +bitet +bitit +bitits +bitna +bits +bitsk +bitska +bitskare +bitskast +bitskaste +bitskt +bitter +bitterhet +bitterheten +bitterhetens +bittersta +bittert +bitti +bittida +bittra +bittrare +bittrast +bittraste +bitvis +bivax +bivaxet +bivaxets +biverkning +biverkningar +biverkningarna +biverkningarnas +biverkningars +biverkningen +biverkningens +biverknings +bjerre +bjerres +bjud +bjuda +bjudande +bjudandet +bjudandets +bjudas +bjuden +bjuder +bjudes +bjudet +bjudit +bjudits +bjudna +bjudning +bjudningar +bjudningarna +bjudningarnas +bjudningars +bjudningen +bjudningens +bjudnings +bjuds +bjuv +bjuvs +bock +bocka +bockade +bockades +bockar +bockarna +bockarnas +bockars +bockas +bockat +bockats +bocken +bockens +bocks +bod +boda +bodafors +bodar +bodarna +bodarnas +bodars +bodas +bodde boden bodens +boen +boende +boendes +boendet +boendets +boens +boer +boerna +boernas +boers +boet +boets +bofast +bofasta +bofink +bofinkar +bofinkarna +bofinkarnas +bofinkars +bofinken +bofinkens +bofinks +bofors +bog +bogar +bogarna +bogarnas +bogars +bogen +bogens +bograngen +bograngens +bogs +bogsera +bogserad +bogserade +bogserades +bogserar +bogseras +bogserat +bogserats +bohag +bohagen +bohagens +bohaget +bohagets +bohem +bohemen +bohemens +bohemer +bohemerna +bohemernas +bohemers +bohems +bohus +boj +boja +bojan +bojans +bojar +bojaren +bojarens +bojarer +bojarerna +bojarernas +bojarers +bojarna +bojarnas +bojars +bojas +bojen +bojens +bojkott +bojkotta +bojkottad +bojkottade +bojkottades +bojkottar +bojkottas +bojkottat +bojkottats +bojkotten +bojkottens +bojkotter +bojkotterna +bojkotternas +bojkotters +bojkotts +bojor +bojorna +bojornas +bojors +bojs +bok +boka +bokad +bokade +bokades +bokar +bokas +bokat +bokats +bokauktion +bokauktionen +bokauktionens +bokauktions +boken +bokens +bokform +bokning +bokningar +bokningarna +bokningarnas +bokningars +bokningen +bokningens +boknings +bokrea +bokrean +bokreans +boks +bokstav +bokstaven +bokstavens +bokstavera +bokstaverad +bokstaverade +bokstaverades +bokstaverar +bokstaveras +bokstaverat +bokstaverats +bokstavs +bokstavsordning +bokstavsordningen +bokstavsordningens +boktryckare +boktryckaren +boktryckarens +boktryckares +boktryckarna +boktryckarnas +bom +bomb +bomba +bombad +bombade +bombades +bombar +bombardera +bombarderad +bombarderade +bombarderades +bombarderar +bombarderas +bombarderat +bombarderats +bombare +bombaren +bombarens +bombares +bombarna +bombarnas +bombastisk +bombastiska +bombastiskt +bombat +bombats +bomben +bombens +bomber +bomberna +bombernas +bombers +bombning +bombningar +bombningarna +bombningarnas +bombningars +bombningen +bombningens +bombnings +bombs +bomma +bommade +bommar +bommarna +bommarnas +bommars +bommat +bommen +bommens +bon +bona +bonad +bonade +bonaden +bonadens +bonader +bonaderna +bonadernas +bonaders +bonades +bonar +bonas +bonat +bonats +bonde +bonden +bondens +bondepraktikan +bondepraktikans +bondes +bondgosse +bondgossen +bondgossens +bondhustru +bondhustrun +bondhustruns +bondpojkar +bondpojkarna +bondpojkarnas +bondpojkars +bondpojke +bondpojken +bondpojkens +boning +boningar +boningarna +boningarnas +boningars +boningen +boningens +bonings +boningshus +boningshusen +boningshusens +bonnier +bonniers +bons +bonus +bonusen +bonusens +boom +boomen +boomens +bor +bord +borda +bordade +bordades +bordar +bordas +bordat +bordats +borde +borden +bordens +bordet +bordets +bords +bordskant +bordskanten +bordskantens +bordskanter +bordskanterna +bordskanternas +bordskanters +boren +borensberg +borensbergs +boret +borg +borga +borgade +borgar +borgare +borgaren +borgarens +borgares +borgarna +borgarnas +borgars +borgat +borgen +borgens +borgensman +borgensmannen +borgensmannens +borgensmans +borghamn +borghamns +borgs +borgstena +borgstenas +borna +borne +borr +borra +borrad +borrade +borrades +borrande +borrandet +borrandets +borrar +borrare +borraren +borrarens +borrares +borrarna +borrarnas +borras +borrat +borrats +borrby +borrbys +borren +borrens +borret +borrets +borrning +borrningar +borrningarna +borrningarnas +borrningars +borrningen +borrningens +borst +borstad +borstade +borstades +borstar +borstarna +borstarnas +borstars +borstas +borstat +borste +borsten +borstens +borstes +bort +borta +bortamatch +bortamatchen +bortamatchens +bortamatcher +bortamatcherna +bortamatchernas +bortamatchers +bortdriven +bortdrivet +bortdrivna +bortemot +bortersta +bortfara +bortgick +bortkommen +bortkommet +bortkomna +bortkomne +bortom +bortre +bortrest +bortresta +bortse +bortser +bortses +bortsett +bortsetts +bortskym +bortskymd +bortskymde +bortskymma +bortskymmer +bortskymt +borttaga +borttagande +borttagandet +borttagandets +borttages +borttappa +borttappad +borttappade +borttappades +borttappar +borttappat +borttappats bos +bosatt +bosatta +bosatte +boskap +boskapen +boskapens +boskaps +boskapsdjur +boskapsdjuren +boskapsdjurens +boskapspest +bosnien +bosniens +bosnier +bosnierna +bosniernas +bosniers +bossanova +bossanovan +bossanovans +bosse +bosses +bostad +bostaden +bostadens +bostads +bostadshus +bostadshusen +bostadshusens +bostadshuset +bostadshusets +bot +bota +botad +botade +botades +botande +botanik +botaniken +botanikens +botaniker +botanikern +botanikerna +botanikernas +botanikerns +botanikers +botanisk +botaniska +botaniskt +botanist +botanisten +botanistens +botar +botas +botat +botats +boten +botens +botpredikan +botsmark +botsmarks +botswana +botswanas +bott +botten +bottennapp +bottennappen +bottennappens +bottennappet +bottennappets +bottenskrap +bottna +bottnade +bottnande +bottnar +bottnarna +bottnarnas +bottnars +bottnaryd +bottnaryds +bottnat +bottnen +bottnens +bottniska +bouppteckning +bouppteckningar +bouppteckningarna +bouppteckningarnas +bouppteckningars +bouppteckningen +bouppteckningens +boupptecknings +bouquet +bouqueten +bouquetens +bourgeoisie +bourgeoisien +bourgeoisiens +bourgogne +bourgognen +bourgognens +bourgogner +bourgognerna +bourgognernas +bourgogners +bov +bovar +bovarna +bovarnas +bovars +boven +bovens +bovs +box +boxa +boxad +boxade +boxades +boxar +boxare +boxaren +boxarens +boxares +boxarna +boxarnas +boxars +boxas +boxat +boxats +boxen +boxens +boxer +boxern +boxerns +boxers +boxning +boxningen +boxningens +boxnings +boxrar +boxrarna +boxrarnas +boxrars +bra +bracka +brackan +brackans +brackor +brackorna +brackornas +brackors +brackvatten +brackvattnet +brackvattnets +bragd +bragden +bragdens +bragder +bragderik +bragderika +bragderikt +bragderna +bragdernas +bragders +bragt +bragte +brak +braka +brakade +brakades +brakande +brakandet +brakandets +brakar +brakas +brakat +brakats +braken +brakens +braket +brakets +brand +branden +brandens +brandmur +brandmurar +brandmurarna +brandmurarnas +brandmurars +brandmuren +brandmurens +brandstorp +brandstorps +brann +bransch +branschen +branschens +branscher +branscherna +branschernas +branschers +brant +branta +brantare +brantast +brantaste +branten +brantens +branter +branterna +branternas +branters +brantevik +branteviks +brasa +brasan +brasans +brasor +brasorna +brasornas +brasors +brast +brastad +brastads +bravad +bravaden +bravadens +bravader +bravaderna +bravadernas +bravaders +bravo +bravur +bravuren +bravurens +bre +bred +breda +bredare +bredared +bredareds +bredaryd +bredaryds +bredas +bredast +bredaste +bredbent +bredbenta +bredbyn +bredbyns +bredd +bredda +breddad +breddade +breddades +breddande +breddandet +breddandets +breddar +breddas +breddat +breddats +bredde +bredden +breddens +bredder +bredderna +breddernas +bredders +breddes +breddning +breddningar +breddningarna +breddningarnas +breddningars +breddningen +breddningens +breddnings +breder +breds +bredvid +brer +brett +bretts +brev +breven +brevens +brevet +brevets +brevpapper +brevpappers +brevpappret +brevpapprets +brevporto +brevportot +brevportots +bricka +brickan +brickans +brickor +brickorna +brickornas +brickors +bridge +bridgen +bridgens +bridreaktor +bridreaktorer +bridreaktorerna +bridreaktorernas +bridreaktorers +bridreaktorn +bridreaktorns +brigad +brigaden +brigadens +brigader +brigaderna +brigadernas +brigaders +brigads +brigg +briggar +briggarna +briggarnas +briggars +briggen +briggens +bringa +bringad +bringade +bringades +bringar +bringare +bringaren +bringarens +bringares +bringarna +bringarnas +bringas +bringat +bringats +brink +brinkar +brinkarna +brinkarnas +brinkars +brinken +brinkens +brinna +brinnande +brinnandes +brinnandet +brinnandets +brinner +bris +brisen +brisens +brisera +briserad +briserade +briserades +briserar +briserat +briserats +brist +brista +bristande +bristen +bristens +brister +bristerna +bristernas +bristers +bristning +bristningar +bristningarna +bristningarnas +bristningars +bristningen +bristningens +bristnings +bristsjukdom +bristsjukdomar +bristsjukdomarna +bristsjukdomarnas +bristsjukdomars +bristsjukdomen +bristsjukdomens +brita +britas +brits +britsar +britsarna +britsarnas +britsars +britsen +britsens britt +britta +brittas +britten +brittens +britter +britterna +britternas +britters +brittisk +brittiska +brittiske +brittiskt +britts +bro +broar +broarna +broarnas +broars +broaryd +broaryds +broberg +brobergs +broby +brobyggare +brobyggaren +brobyggarens +brobyggares +brobyggarna +brobyggarnas +brobys +brodd +broddar +broddarna +broddarnas +broddars +brodden +broddens +broddetorp +broddetorps +broder +brodera +broderad +broderade +broderades +broderar +broderas +broderat +broderats +broderi +broderier +broderierna +broderiernas +broderiers +brodern +broderns +broders +brokad +brokaden +brokadens +brokader +brokaderna +brokadernas +brokaders +brokig +brokiga +brokigare +brokigast +brokigaste +brokigt +brom +bromen +bromens +bromma +brommas +broms +bromsa +bromsad +bromsade +bromsades +bromsanordning +bromsanordningar +bromsanordningarna +bromsanordningarnas +bromsanordningars +bromsanordningen +bromsanordningens +bromsanordnings +bromsar +bromsarna +bromsarnas +bromsars +bromsas +bromsat +bromsats +bromsen +bromsens +bron +bronkit +bronkiten +bronkitens +bronkiter +bronkiterna +bronkiternas +bronkiters +brons +bronsen +bronsens +bronset +bronsets bror brors +brosch +broschen +broschens +broscher +broscherna +broschernas +broschers +broschyr +broschyren +broschyrens +broschyrer +broschyrerna +broschyrernas +broschyrers +broschyrs +brosk +brosken +broskens +brosket +broskets +brott +brotta +brottad +brottade +brottades +brottar +brottare +brottaren +brottarens +brottares +brottarna +brottarnas +brottas +brottat +brottats +brottby +brottbys +brotten +brottens +brottet +brottets +brottning +brottningen +brottningens +brottsorganisation +brottsorganisationen +brottsorganisationens +brottsorganisations +brottstycke +brottstyckena +brottstyckenas +brottstyckes +brottstycket +brottstyckets +brottyta +brottytan +brottytans +brottytas +brottytor +brottytorna +brottytornas +brottytors +brud +brudar +brudarna +brudarnas +brudars +bruden +brudens +brudgum +brudgummar +brudgummarna +brudgummarnas +brudgummars +brudgummen +brudgummens +brudgums +brudpar +brudparen +brudparens +brudparet +brudparets +bruds +bruk +bruka +brukad +brukade +brukades +brukar +brukare +brukaren +brukarens +brukares +brukarna +brukarnas +brukas +brukat +brukats +bruken +brukens +bruket +brukets +bruks +bruksanvisning +bruksanvisningar +bruksanvisningarna +bruksanvisningarnas +bruksanvisningars +bruksanvisningen +bruksanvisningens +bruksanvisnings +brumma +brummade +brummande +brummandet +brummandets +brummar +brummat +brun +bruna +brunare +brunast +brunaste +brunett +brunetten +brunettens +brunetter +brunetterna +brunetternas +brunetters +brunn +brunnar +brunnarna +brunnarnas +brunnars +brunnen +brunnens +brunnit +brunns +brunskog +brunskogs +brunst +brunsten +brunstens +brunstig +brunstiga +brunstigt +brunt +brus +brusa +brusade +brusande +brusandet +brusandets +brusar +brusat +brusen +brusens +bruset +brusets +brusten +brustet +brustit +brustna +bruten +brutet +brutit +brutits +brutna +brutto +bruttoinkomst +bruttoinkomsten +bruttoinkomstens +bruttoinkomster +bruttoinkomsterna +bruttoinkomsternas +bruttoinkomsters +bruttot +bruttots +bry +brydd +brydda +brydde +bryddes +bryderi +bryderier +bryderierna +bryderiernas +bryderiers +bryderiet +bryderiets +bryet +bryets +brygd +brygden +brygdens +brygder +brygderna +brygdernas +brygders +brygg +brygga +bryggan +bryggans +bryggare +bryggaren +bryggarens +bryggares +bryggarna +bryggarnas +bryggas +bryggde +bryggdes +brygger +bryggeri +bryggerier +bryggerierna +bryggeriernas +bryggeriers +bryggeriet +bryggeriets +bryggor +bryggorna +bryggornas +bryggors +bryggs +bryggt +bryggts +bryn +bryna +brynas +brynen +brynens +bryner +brynet +brynets +brynja +brynjan +brynjans +brynjor +brynjorna +brynjornas +brynjors +bryns +brynt +brynta +brynte +bryntes +brynts +bryr +brys +brysk +bryska +bryskare +bryskast +bryskaste +bryske +bryskt +bryt +bryta +brytande +brytandet +brytandets +brytare +brytaren +brytarens +brytares +brytarna +brytarnas +brytas +bryter +brytes +brytning +brytningar +brytningarna +brytningarnas +brytningars +brytningen +brytningens +brytnings +brytningstid +brytningstiden +brytningstidens +brytningstider +brytningstiderna +brytningstidernas +brytningstiders +brytpunkt +brytpunkten +brytpunktens +brytpunkter +brytpunkterna +brytpunkternas +brytpunkters +bryts +brytt +brytts +bua +buade +buades +buande +buar +buas +buat +buats +bud +buddhism +buddhismen +buddhismens +buddhist +buddhisten +buddhistens +buddhister +buddhisterna +buddhisternas +buddhisters +buddhistisk +buddhistiska +buddhistiskt +buddist +buddisten +buddistens +buddister +buddisterna +buddisternas +buddisters +buddistisk +buddistiska +buddistiskt +buden +budens +budet +budets +budget +budgetar +budgetarna +budgetarnas +budgetars +budgeten +budgetens +budgetera +budgeterad +budgeterade +budgeterades +budgeterar +budgeteras +budgeterat +budgeterats +budgetering +budgivning +budgivningen +budgivningens +budord +budorden +budordens +buds +budskap +budskapen +budskapens +budskapet +budskapets +budskaps +buffer +buffert +buffertar +buffertarna +buffertarnas +buffertars +bufferten +buffertens +buffra +buga +bugade +bugades +bugande +bugandet +bugandets +bugar +bugas +bugat +bugats +bugg +bugga +buggade +buggades +buggar +buggarna +buggarnas +buggars +buggas +buggat +buggats +buggen +buggens +buk +bukar +bukarna +bukarnas +bukars +buken +bukens +bukett +buketten +bukettens +buketter +buketterna +buketternas +buketters +bukhinna +bukhinnan +bukhinnans +bukhinnor +bukhinnorna +bukhinnornas +bukhinnors +bukt +bukta +buktade +buktar +buktat +bukten +buktens +bukter +bukterna +bukternas +bukters +buktig +buktiga +buktigt +bunden +bundet +bundit +bundits +bundna +bundne +bunkar +bunkarna +bunkarnas +bunkars +bunke +bunken +bunkens +bunker +bunkern +bunkerns +bunkers +bunkrar +bunkrarna +bunkrarnas +bunkrars +bunt +bunta +buntade +buntades +buntar +buntarna +buntarnas +buntars +buntas +buntat +buntats +bunten +buntens +bur +bura +burad +burade +burades +burar +burarna +burarnas +burars +buras +burat +burats +burdus +burdusa +burdust +buren +burens +buret +burgsvik +burgsviks +burit +burits +burk +burkar +burkarna +burkarnas +burkars +burken +burkens +burma +burmas +burna +burs +burseryd +burseryds +burundi +burundis +bus +busa +busade +busar +busarna +busarnas +busars +busat +buse +busen +busens +buset +busets +busig +busiga +busigt +buskar +buskarna +buskarnas +buskars +buske +busken +buskens +buskes +buskig +buskiga +buskigt +buss +bussar +bussarna +bussarnas +bussars +bussen +bussens +bussig +bussiga +bussigare +bussigaste +bussige +bussigt +butik +butiken +butikens +butiker +butikerna +butikernas +butikers +butiks +butter +buttert +buttig +buttiga +buttigt +buttra +buttrare +buttrast +buttraste +buttre +byar +byarna +byarnas +byars +bybo +bybon +bybons +bybor +byborna +bybornas +bybors +bybos +bygd +bygden +bygdens +bygder +bygderna +bygdernas +bygders +bygg +bygga +byggande +byggandet +byggandets +byggas +byggd +byggda +byggde +byggdes +bygge +byggen +byggena +byggenas +byggens +bygger +bygget +byggets +byggnad +byggnaden +byggnadens +byggnader +byggnaderna +byggnadernas +byggnaders +byggnads +byggning +byggningen +byggningens +byggs +byggsats +byggsatsen +byggsatsens +byggsatser +byggsatserna +byggsatsernas +byggsatsers +byggt +byggts +byk +byken +bykens +byket +bykets +byn +byns +bys +byske +byskes +byst +bysten +bystens +byster +bysterna +bysternas +bysters +byt +byta +bytare +bytaren +bytarens +bytares +bytarna +bytarnas +bytas +byte +byten +bytena +bytenas +bytens +byter +bytes +bytet +bytets +byts +bytt +bytta +byttan +byttans +bytte +byttes +byttor +byttorna +byttornas +byttors +bytts +byxa +byxan +byxans +byxor +byxorna +byxornas +byxors +caesar +caesars +cafeteria +cafeterian +cafeterians +cafeterior +cafeteriorna +cafeteriornas +cafeteriors +cambodja +cambodjas +cambridge +cambridges +campa +campade +campar +campare +camparen +camparens +campares +camparna +camparnas +campat +camping +campingen +campingens +campings +canada +canadas +cancan +cancer +cancern +cancerns +cancerogena +cancersjuk +cancersjuka +cancersjukt +cannabis +cannabisen +cannabisens +capita +carin +carina +carinas +carins +carmen +carmens +carte +catharina +catharinas +ceder +cederborg +cederborgs +cedern +cederns +cedrar +cedrarna +cedrarnas +cedrars +cement +cementen +cementens +cementera +cementerad +cementerade +cementerades +cementerar +cementeras +cementerat +cementerats +censor +censorer +censorerna +censorernas +censorers +censorn +censorns +censors +censur +censuren +censurens +censurera +censurerad +censurerade +censurerades +censurerande +censurerar +censurerat +censurerats +center +centern +centerns +centerpartist +centerpartisten +centerpartistens +centerpartister +centerpartisterna +centerpartisternas +centerpartisters +centerpartistisk +centerpartistiska +centerpartistiske +centerpartistiskt +centimeter +centimetern +centimeterns +centimeters +centimetrar +centimetrarna +centimetrarnas +centimetrars +centra +centrar +centrarna +centrarnas +centrars +centrer +centrera +centrerad +centrerade +centrerades +centrerar +centreras +centrerat +centrerats +centrering +centreringen +centreringens +centrerings +centrerna +centrernas +centrers +centret +centrets +centrifug +centrifugen +centrifugens +centrifuger +centrifugerna +centrifugernas +centrifugers +centrum +centrumet +centrumets +centrums +cerat +ceratet +ceratets +ceremoni +ceremonien +ceremoniens +ceremonier +ceremonierna +ceremoniernas +ceremoniers +ceremonin +ceremonins +ceremonis +certifikat +certifikaten +certifikatens +certifikatet +certifikatets +certifikats +champagne +champagnen +champagnens +champinjon +champinjonen +champinjonens +champinjoner +champinjonerna +champinjonernas +champinjoners +champinjons +champion +championat +championaten +championatens +championatet +championatets +chans +chansa +chansade +chansar +chansat +chansen +chansens +chanser +chanserna +chansernas +chansers +chansning +chansningar +chansningarna +chansningarnas +chansningars +chansningen +chansningens +chansnings +charad +charaden +charadens +charader +charaderna +charadernas +charaders +charkuteri +charkuterier +charkuterierna +charkuteriernas +charkuteriers +charkuteriet +charkuteriets +charm +charma +charmade +charmades +charmar +charmas +charmat +charmats +charmen +charmens +charmera +charmerad +charmerade +charmerades +charmerande +charmerar +charmeras +charmerat +charmerats +charmig +charmiga +charmigare +charmigast +charmigaste +charmige +charmigt +charmoffensiv +charmoffensiven +charmoffensivens +charmoffensiver +charmoffensiverna +charmoffensivernas +charmoffensivers +charter +chartern +charterns +chartra +chartrade +chartrades +chartrar +chartras +chartrat +chartrats +chassi +chassit +chassits +chauvinism +chauvinismen +chauvinismens +chauvinist +chauvinisten +chauvinistens +chauvinister +chauvinisterna +chauvinisternas +chauvinisters +chauvinistisk +chauvinistiska +chauvinistiske +chauvinistiskt +chauvinists +check +checka +checkade +checkar +checkarna +checkarnas +checkars +checkat +checken +checkens +checker +checkerna +checkernas +checkers +chef +chefen +chefens +chefer +cheferna +chefernas +chefers +chefs +chic +chica +chicago +chicagos +chicare +chicast +chicaste +chick +chicka +chickare +chickast +chickaste +chickt +chict +chiffer +chiffren +chiffrens +chiffret +chiffrets +chips +chipsen +chipsens +chock +chocka +chockad +chockade +chockades +chockar +chockas +chockat +chockats +chocken +chockens +chocker +chockera +chockerad +chockerade +chockerades +chockerande +chockerar +chockeras +chockerat +chockerats +chockerna +chockernas +chockers +christer +christers +christian +christians +christina +christinas +christine +christines +ciceron +ciceronen +ciceronens +ciceroner +ciceronerna +ciceronernas +ciceroners +cider +cidern +ciderns +cigarett +cigaretten +cigarettens +cigaretter +cigaretterna +cigaretternas +cigaretters +cigaretts +cigarr +cigarren +cigarrens +cigarrer +cigarrerna +cigarrernas +cigarrers +cigarrs +cirka +cirkus +cirkusar +cirkusarna +cirkusarnas +cirkusars +cirkusen +cirkusens +citat +citaten +citatens +citatet +citatets +citation +citationen +citationens +citationer +citationerna +citationernas +citationers +citations +citationstecken +citera +citerad +citerade +citerades +citerar +citeras +citerat +citerats +citron +citronen +citronens +citroner +citronerna +citronernas +citroners +cittra +cittran +cittrans +cittras +city +coach +coacha +coachade +coachades +coachar +coachas +coachat +coachats +coachen +coachens +coacher +coacherna +coachernas +coachers +cockpit +cockpiten +cockpitens +cockpits +comeback +comorerna +comorernas +conny +connys +conrad +conrads +container +containern +containerns +containers +containrar +containrarna +containrarnas +containrars +coping +copyright +cortison +cortisonet +cortisonets +cortisonspruta +cortisonsprutan +cortisonsprutans +cortisonsprutor +cortisonsprutorna +cortisonsprutornas +cortisonsprutors +costa +cowboy +cowboyen +cowboyens +cowboys +crescendo +crescendon +crescendona +crescendonas +crescendons +crescendos +crescendot +crescendots +cricket +cuba +cubas +cup +cupen +cupens +cuper +cuperna +cupernas +cupers +curry +curryn +curryns +curt +curts +cyan +cybernetik +cybernetiken +cybernetikens +cyniker +cynikern +cynikerna +cynikernas +cynikerns +cynikers +cynisk +cyniska +cyniske +cyniskt +cynism +cynismen +cynismens +cypern +cyperns +cypress +cypressen +cypressens +cypresser +cypresserna +cypressernas +cypressers +cysta +cystan +cystans +cystas +dadaism +dadaismen +dadaismens +dadaist +dadaisten +dadaistens +dadaister +dadaisterna +dadaisternas +dadaisters +dadaists +dag +daga +dagades +dagar +dagarna +dagarnas +dagars +dagas +dagats +dagbok +dagboken +dagbokens +dagboks +dagdrivare +dagdrivaren +dagdrivarens +dagdrivares +dagdrivarna +dagdrivarnas +dagdriveri +dagdriveriet +dagdriveriets +dagen +dagens +dager +dagern +dagerns +dagg +daggen +daggens +daggig +daggiga +daggigt +daggmask +daggmaskar +daggmaskarna +daggmaskarnas +daggmaskars +daggmasken +daggmaskens +daghem +daghemmen +daghemmens +daghemmet +daghemmets +daghems +dagis +dagisen +dagisens +dagiset +dagisets +dagmamma +dagmamman +dagmammans +dagmammas +dagmammor +dagmammorna +dagmammornas +dagmammors +dagmar +dagmars +dagning +dagningen +dagningens +dagnings +dagny +dagnys +dagordning +dagordningar +dagordningarna +dagordningarnas +dagordningars +dagordningen +dagordningens +dagordnings +dagrar +dagrarna +dagrarnas +dagrars +dags +dagspenning +dagspenningar +dagspenningarna +dagspenningarnas +dagspenningars +dagspenningen +dagspenningens +dagspennings +dagspress +dagspressen +dagspressens +dagstidning +dagstidningar +dagstidningarna +dagstidningarnas +dagstidningars +dagstidningen +dagstidningens +dagstidnings +dagsverke +dagsverken +dagsverkena +dagsverkenas +dagsverkens +dagsverkes +dagsverket +dagsverkets +dagtid +dam +damask +damasken +damaskens +damasker +damaskerna +damaskernas +damaskers +damast +damasten +damastens +damaster +damasterna +damasternas +damasters +damen +damens +damer +damerna +damernas +damers +damm +damma +dammad +dammade +dammades +dammande +dammandet +dammandets +dammar +dammas +dammat +dammats +dammet +dammets +dammig +dammiga +dammigare +dammigast +dammigaste +dammigt +dammsuga +dammsugare +dammsugaren +dammsugarens +dammsugares +dammsugarna +dammsugarnas +dammsugas +dammsugen +dammsuger +dammsuget +dammsugit +dammsugits +dammsugna +damp +dan +dana +danade +danades +danar +danas +danat +danats +danderyd +danderyds +dandy +dandyn +dandyns +dandys +dank +danka +dankade +dankar +dankat +danmark +danmarks +dannike +dannikes dans +dansa +dansade +dansades +dansande +dansandet +dansandets +dansant +dansanta +dansar +dansare +dansaren +dansarens +dansares +dansarna +dansarnas +dansas +dansat +dansats +dansen +dansens +danser +danserna +dansernas +dansers +danshak +danshaken +danshakens +dansk +danska +danskan +danskans +danskar +danskarna +danskarnas +danskars +danske +dansken +danskens +danskt +darr +darra +darrade +darrades +darrande +darrandet +darrandets +darrar +darras +darrat +darrats +darret +darrets +darrig +darriga +darrigare +darrigast +darrigaste +darrigt +darrning +darrningar +darrningarna +darrningarnas +darrningars +darrningen +darrningens +darrnings +dart +darten +dartens +darwinism +darwinismen +darwinismens +darwinistisk +darwinistiska +darwinistiskt +dass +dassen +dassens +dasset +dassets +data +databas +databasen +databasens +databaser +databaserna +databasernas +databasers +databuss +databussen +databussens +datainspektion +datainspektionen +datainspektionens +datainspektions +datakommunikation +datakommunikationen +datakommunikationens +datakommunikations +datamaskin +datamaskinen +datamaskinens +datamaskiner +datamaskinerna +datamaskinernas +datamaskiners +datan +datans +datas +datasystem +datasystemet +datasystemets +datera +daterad +daterade +daterades +daterar +dateras +daterat +daterats +dativ +dativen +dativens +dativer +dativerna +dativernas +dativers +dato +dator +datorer +datorerna +datorernas +datorers +datorisera +datoriserad +datoriserade +datoriserades +datoriserar +datoriseras +datoriserat +datoriserats +datorisering +datoriseringar +datoriseringarna +datoriseringarnas +datoriseringars +datoriseringen +datoriseringens +datoriserings +datorn +datorns +datorprogram +datorprogrammen +datorprogrammens +datorprogrammet +datorprogrammets +datorprograms +datorrum +datorrummen +datorrummens +datorrummet +datorrummets +dators +datorsystem +datorsystemen +datorsystemens +datorsystemet +datorsystemets +datorteknik +datortekniken +datorteknikens +datortekniker +datorteknikerna +datorteknikernas +datorteknikers +datum +datumen +datumens +datumet +datumets +david +davids +debatt +debatten +debattens +debatter +debattera +debatterad +debatterade +debatterades +debatterar +debatteras +debatterat +debatterats +debatterna +debatternas +debatters +debet +debitera +debiterad +debiterade +debiterades +debiterar +debiteras +debiterat +debiterats +debitering +debiteringar +debiteringarna +debiteringarnas +debiteringars +debiteringen +debiteringens +debiterings +debut +debutant +debutanten +debutantens +debutanter +debutanterna +debutanternas +debutanters +debuten +debutens +debuter +debutera +debuterade +debuterar +debuterat +debuterna +debuternas +debuters +debuts +december +decembers +decennier +decennierna +decenniernas +decenniers +decenniet +decenniets +decennium +decenniums +dechiffrera +dechiffrerade +dechiffrerades +dechiffrerar +dechiffreras +dechiffrerat +dechiffrerats +decimeter +decimetern +decimeterns +decimeters +decimetrar +decimetrarna +decimetrarnas +decimetrars +deckare +deckaren +deckarens +deckares +deckarna +deckarnas +dedicera +dedicerad +dedicerade +dedicerades +dedicerar +dediceras +dedicerat +dedicerats +dediciera +dedicierad +dedicierade +dedicierades +dedicierar +dedicieras +dedicierat +dedicierats +dedikation +dedikationen +dedikationens +dedikationer +dedikationerna +dedikationernas +dedikationers +dedikations +deduktion +deduktionen +deduktionens +deduktions +deduktiv +deduktiva +deduktivt +defaitism +defaitismen +defaitismens +defekt +defekta +defekten +defektens +defekter +defekterna +defekternas +defekters +defensiv +defensiva +defensiven +defensivens +defensivt +definiera +definierad +definierade +definierades +definierande +definierar +definieras +definierat +definierats +definition +definitionen +definitionens +definitioner +definitionerna +definitionernas +definitioners +definitions +definitiv +definitiva +definitivare +definitivast +definitivaste +definitivt +deformation +deformationen +deformationens +deformationer +deformationerna +deformationernas +deformationers +deformations +deformera +deformerad +deformerade +deformerades +deformerar +deformeras +deformerat +deformerats +deg +degar +degarna +degarnas +degars +degeberga +degebergas +degen +degeneration +degenerationen +degenerationens +degenerations +degenererad +degenererade +degenererat +degens +degerfors +degerhamn +degerhamns +degig +degiga +degigt +degradera +degraderade +degraderades +degraderar +degraderas +degraderat +degraderats +degradering +degraderingar +degraderingarna +degraderingarnas +degraderingars +degraderingen +degraderingens +degraderings +deje +dejes +dekad +dekaden +dekadens +dekadent +dekadenta +dekader +dekaderna +dekadernas +dekaders +dekanus +dekor +dekoration +dekorationen +dekorationens +dekorationer +dekorationerna +dekorationernas +dekorationers +dekorations +dekorativ +dekorativa +dekorativt +dekoren +dekorens +dekorer +dekorera +dekorerad +dekorerade +dekorerades +dekorerande +dekorerar +dekoreras +dekorerat +dekorerats +dekorerna +dekorernas +dekorers +dekrement +dekrementet +dekrementets +dekrements +dekret +dekreten +dekretens +dekretet +dekretets +dem +demagog +demagogen +demagogens +demagoger +demagogerna +demagogernas +demagogers +demagogi +demagogin +demagogins +demagogisk +demagogiska +demagogiske +demagogiskt +demaskera +demaskerad +demaskerade +demaskerades +demaskerar +demaskeras +demaskerat +demaskerats +demens +dement +dementa +dementera +dementerad +dementerade +dementerades +dementerar +dementeras +dementerat +dementerats +dementi +dementier +dementierna +dementiernas +dementiers +dementin +dementins +demograf +demografen +demografens +demografer +demograferna +demografernas +demografers +demografi +demografin +demografins +demografisk +demografiska +demografiskt +demokrat +demokraten +demokratens +demokrater +demokraterna +demokraternas +demokraters +demokrati +demokratier +demokratierna +demokratiernas +demokratiers +demokratin +demokratins +demokratis +demokratisera +demokratiserad +demokratiserade +demokratiserades +demokratiserar +demokratiseras +demokratiserat +demokratiserats +demokratisering +demokratiseringar +demokratiseringarna +demokratiseringarnas +demokratiseringars +demokratiseringen +demokratiseringens +demokratiserings +demokratisk +demokratiska +demokratiske +demokratiskt +demon +demonen +demonens +demoner +demonerna +demonernas +demoners +demonisk +demoniska +demoniske +demoniskt +demonstrant +demonstranten +demonstrantens +demonstranter +demonstranterna +demonstranternas +demonstranters +demonstrants +demonstration +demonstrationen +demonstrationens +demonstrationer +demonstrationerna +demonstrationernas +demonstrationers +demonstrations +demonstrativ +demonstrativa +demonstrativt +demonstrera +demonstrerad +demonstrerade +demonstrerades +demonstrerande +demonstrerar +demonstreras +demonstrerat +demonstrerats +demontera +demonterade +demonterades +demonterar +demonteras +demonterat +demonterats +den +denna +dennas +denne +dennes +densamma +densammas +densamme +densammes +densitet +densiteten +densitetens +deodorant +deodoranten +deodorantens +deodoranter +deodoranterna +deodoranternas +deodoranters +departement +departementen +departementens +departementet +departementets +departements +depesch +depeschen +depeschens +depescher +depescherna +depeschernas +depeschers +deponera +deponerad +deponerade +deponerades +deponerar +deponeras +deponerat +deponerats +deportation +deportationen +deportationens +deportationer +deportationerna +deportationernas +deportationers +deportations +deportera +deporterad +deporterade +deporterades +deporterar +deporteras +deporterat +deporterats +deportering +deporteringar +deporteringarna +deporteringarnas +deporteringars +deporteringen +deporteringens +deporterings +depraverad +depraverade +depraverat +depression +depressionen +depressionens +depressioner +depressionerna +depressionernas +depressioners +depressions +depressiv +depressiva +depressivt +deprimerad +deprimerade +deprimerande +deprimerat +deputerade +deras +derby +derbymatch +derbymatchen +derbymatcher +derbymatcherna +derbyn +derbyns +derbyt +derbyts +derivat +derivata +derivatan +derivatans +derivaten +derivatens +derivatet +derivatets +derivation +derivationen +derivationer +derivationerna +derivationernas +derivationers +derivations +derivator +derivatorna +derivatornas +derivators +derivera +deriverad +deriverade +deriverades +deriverar +deriveras +deriverat +deriverats +derivering +deriveringar +deriveringarna +deriveringarnas +deriveringars +deriveringen +deriveringens +deriverings +desamma +desarmera +desarmerad +desarmerade +desarmerades +desarmerar +desarmeras +desarmerat +desarmerats +desert +deserten +desertens +deserter +deserterna +deserternas +deserters +design +designa +designad +designade +designades +designar +designat +designats +designen +designens +designer +designern +designerna +designernas +designerns +designers +desinficera +desinficerad +desinficerade +desinficerades +desinficerar +desinficeras +desinficerat +desinficerats +desinformation +desinformationen +desinformationens +deskriptiv +deskriptiva +deskriptivt +desorienterad +desorienterade +desorienterat +desperat +desperata +desperatare +desperatast +desperataste +desperate +desperation +desperationen +desperationens +desperations +despot +despoten +despotens +despoter +despoterna +despoternas +despoters +despotism +despotismen +despotismens +despots +dess +dessa +dessas +dessutom +destination +destinationen +destinationens +destinationer +destinationerna +destinationernas +destinationers +destinations +destinera +destinerad +destinerade +destinerades +destinerar +destinerat +destinerats +desto +destruktion +destruktionen +destruktionens +destruktions +destruktiv +destruktiva +destruktivare +destruktivast +destruktivaste +destruktive +destruktivitet +destruktiviteten +destruktivitetens +destruktivitets +destruktivt +det +detektera +detekterad +detekterade +detekterades +detekterar +detekteras +detekterat +detekterats +detektion +detektionen +detektionens +detektions +detektiv +detektiven +detektivens +detektiver +detektiverna +detektivernas +detektivers +detektor +detektorer +detektorerna +detektorernas +detektorers +detektorn +detektorns +detektors +determinerad +determinerade +determinerat +determinism +determinismen +determinismens +determinist +deterministen +deterministens +determinister +deterministerna +deterministernas +deterministers +deterministisk +deterministiska +deterministiskt +detonera +detonerade +detonerar +detonerat +detsamma +detta +devis +devisen +devisens +deviser +deviserna +devisernas +devisers +dia +diabetes +diabetiker +diabetikern +diabetikerna +diabetikernas +diabetikerns +diabetikers +diad +diade +diadem +diademen +diademens +diademet +diademets +diades +diagnos +diagnosen +diagnosens +diagnoser +diagnoserna +diagnosernas +diagnosers +diagnostik +diagnostiken +diagnostikens +diagnostisera +diagnostiserad +diagnostiserade +diagnostiserades +diagnostiserar +diagnostiseras +diagnostiserat +diagnostiserats +diagnostisk +diagnostiska +diagnostiskt +diagram +diagrammen +diagrammens +diagrammet +diagrammets +diakon +diakonen +diakonens +diakoner +diakonerna +diakonernas +diakoners +diakoni +diakonin +diakonins +diakonissa +diakonissan +diakonissans +diakonissor +diakonissorna +diakonissornas +diakonissors +diakritisk +diakritiska +diakroniskt +diamant +diamanten +diamantens +diamanter +diamanterna +diamanternas +diamanters +diameter +diametern +diameterns +diametrar +diametrarna +diametrarnas +diametrars +diande +diandet +diandets +diar +diarier +diarierna +diariernas +diariers +diariet +diariets +diarium +dias +diat +diats +diavisning +diavisningar +diavisningarna +diavisningarnas +diavisningars +diavisningen +diavisningens +diavisnings +diet +dieten +dietens +dieter +dieterna +dieternas +dieters +differens +differensen +differensens +differenser +differenserna +differensernas +differensers +differentiera +differentierad +differentierade +differentierades +differentierande +differentierandet +differentierandets +differentierar +differentieras +differentierat +differentierats +diffundera +diffunderade +diffunderar +diffunderat +diffus +diffusa +diffusare +diffusast +diffusaste +diffusion +diffusionen +diffusionens +diffusioner +diffusionerna +diffusionernas +diffusioners +diffust +diftong +diftongen +diftongens +diftonger +diftongerna +diftongernas +diftongers +dig +diger +digert +digna +dignade +dignande +dignandet +dignandets +dignar +dignat +dignitet +digniteten +dignitetens +digniteter +digniteterna +digniteternas +digniteters +digra +digrare +digrast +digraste +dika +dikade +dikades +dikar +dikas +dikat +dikats +dike +diken +dikena +dikenas +dikens +dikes +diket +dikets +dikotom +dikotoma +dikotomi +dikotomier +dikotomierna +dikotomiernas +dikotomiers +dikotomin +dikotomins +dikotomt +dikt +dikta +diktad +diktade +diktades +diktamen +diktande +diktandet +diktandets +diktar +diktare +diktaren +diktarens +diktares +diktarna +diktarnas +diktas +diktat +diktator +diktatorer +diktatorerna +diktatorernas +diktatorers +diktatorisk +diktatoriska +diktatoriske +diktatoriskt +diktatorn +diktatorns +diktators +diktats +diktatur +diktaturen +diktaturens +diktaturer +diktaturerna +diktaturernas +diktaturers +diktaturs +dikten +diktens +dikter +diktera +dikterad +dikterade +dikterades +dikterande +dikterar +dikteras +dikterat +dikterats +dikterna +dikternas +dikters +diktning +diktningar +diktningarna +diktningarnas +diktningars +diktningen +diktningens +diktnings +dikts +dimension +dimensionen +dimensionens +dimensioner +dimensionerna +dimensionernas +dimensioners +dimma +dimman +dimmans +dimmas +dimmig +dimmiga +dimmigare +dimmigast +dimmigaste +dimmigt +dimmor +dimmorna +dimmornas +dimmors +dimpa +dimper +din +dina +dines +dinosaurie +dinosaurien +dinosauriens +dinosaurier +dinosaurierna +dinosauriernas +dinosauriers +diod +dioden +diodens +dioder +dioderna +diodernas +dioders +diogenes +dioxid +dioxiden +dioxidens +dioxider +dioxiderna +dioxidernas +dioxiders +direkt +direkta +direktare +direktast +direktaste +direkten +direktion +direktionen +direktionens +direktions +direktiv +direktiven +direktivens +direktivet +direktivets +direktkontakt +dirigent +dirigenten +dirigentens +dirigenter +dirigenterna +dirigenternas +dirigenters +dirigents +dirigera +dirigerad +dirigerade +dirigerades +dirigerar +dirigeras +dirigerat +dirigerats +dis +disen +disens +diser +diserna +disernas +disers +diset +disets +disharmonisk +disharmoniska +disharmoniskt +disig +disiga +disigare +disigast +disigaste +disigt +disjunktiv +disjunktiva +disjunktivt +disk +diska +diskad +diskade +diskades +diskant +diskanten +diskantens +diskar +diskare +diskaren +diskarens +diskares +diskarna +diskarnas +diskars +diskas +diskat +diskats +disken +diskens +diskett +disketten +diskettenhet +diskettenheten +diskettenhetens +diskettenheter +diskettenheterna +diskettenheternas +diskettenheters +diskettenhets +diskettens +disketter +disketterna +disketternas +disketters +disketts +diskho +diskhoar +diskhoarna +diskhoarnas +diskhoars +diskhon +diskhons +diskjockey +diskjockeyn +diskjockeyns +diskjockeys +diskning +diskningar +diskningarna +diskningarnas +diskningars +diskningen +diskningens +disknings +diskonto +diskonton +diskontons +diskontot +diskontots +diskotek +diskoteken +diskotekens +diskoteket +diskotekets +diskrepans +diskrepansen +diskrepansens +diskrepanser +diskrepanserna +diskrepansernas +diskrepansers +diskret +diskreta +diskretare +diskretast +diskretaste +diskretion +diskretionen +diskretionens +diskretions +diskriminant +diskriminanten +diskriminantens +diskriminanter +diskriminanterna +diskriminanternas +diskriminanters +diskriminants +diskriminera +diskriminerad +diskriminerade +diskriminerades +diskriminerande +diskriminerar +diskrimineras +diskriminerat +diskriminerats +diskriminering +diskrimineringar +diskrimineringarna +diskrimineringarnas +diskrimineringars +diskrimineringen +diskrimineringens +diskriminerings +disktrasa +disktrasan +disktrasans +disktrasas +diskurs +diskursen +diskursens +diskurser +diskurserna +diskursernas +diskursers +diskus +diskusar +diskusarna +diskusarnas +diskusars +diskusen +diskusens +diskussion +diskussionen +diskussionens +diskussioner +diskussionerna +diskussionernas +diskussioners +diskussionspartner +diskutera +diskuterad +diskuterade +diskuterades +diskuterande +diskuterar +diskuteras +diskuterat +diskuterats +disparat +disparata +dispens +dispensen +dispensens +dispenser +dispenserna +dispensernas +dispensers +disponent +disponenten +disponentens +disponenter +disponenterna +disponenternas +disponenters +disponera +disponerad +disponerade +disponerades +disponerar +disponeras +disponerat +disponerats +disposition +dispositionen +dispositionens +dispositioner +dispositionerna +dispositionernas +dispositioners +dispositions +disproportion +disproportionen +disproportionens +disproportions +disputera +disputerad +disputerade +disputerar +disputerat +dispyt +dispyten +dispytens +dispyter +dispyterna +dispyternas +dispyters +dissekera +dissekerad +dissekerade +dissekerades +dissekerar +dissekeras +dissekerat +dissekerats +dissident +dissidenten +dissidentens +dissidenter +dissidenterna +dissidenternas +dissidenters +dissonans +dissonansen +dissonansens +dissonanser +dissonanserna +dissonansernas +dissonansers +dissonant +dissonanta +distans +distansen +distansens +distanser +distansera +distanserad +distanserade +distanserades +distanserar +distanserat +distanserats +distanserna +distansernas +distansers +distingerad +distingerade +distingerat +distinkt +distinkta +distinktare +distinktast +distinktaste +distinktion +distinktionen +distinktionens +distinktioner +distinktionerna +distinktionernas +distinktioners +distinktions +distorsion +distorsionen +distorsionens +distortion +distortionen +distortionens +distortioner +distortionerna +distortionernas +distortioners +distortions +distrahera +distraherad +distraherade +distraherades +distraherande +distraherar +distraheras +distraherat +distraherats +distraktion +distraktionen +distraktionens +distraktioner +distraktionerna +distraktionernas +distraktioners +distraktions +distribuera +distribuerad +distribuerade +distribuerades +distribuerar +distribueras +distribuerat +distribuerats +distribution +distributionen +distributionens +distributioner +distributionerna +distributionernas +distributioners +distributions +distrikt +distrikten +distriktens +distriktet +distriktets +distrikts +dit +ditin +dito +ditopp +ditsatt +ditsatta +ditt +ditupp +ditut +diva +divan +divanen +divanens +divaner +divanerna +divanernas +divaners +divans +divas +divergens +divergensen +divergensens +divergenser +divergenserna +divergensernas +divergensers +divergent +divergenta +divergera +divergerade +divergerande +divergerar +divergerat +diverse +diversearbetare +diversearbetaren +diversearbetarens +diversearbetares +diversearbetarna +diversearbetarnas +dividera +dividerad +dividerade +dividerades +dividerande +dividerar +divideras +dividerat +dividerats +division +divisionen +divisionens +divisioner +divisionerna +divisionernas +divisioners +divisions +divor +divorna +divornas +divors +djibouti +djiboutis +djonk +djonken +djonkens +djonker +djonkerna +djonkernas +djonkers +djonks +djup +djupa +djupare +djupast +djupaste +djupdykning +djupdykningar +djupdykningarna +djupdykningarnas +djupdykningars +djupdykningen +djupdykningens +djupen +djupens +djupet +djupets +djupfryst +djupfrysta +djupsinnig +djupsinniga +djupsinnigare +djupsinnigast +djupsinnigaste +djupsinnige +djupsinnigt +djupsinninghet +djupsinningheten +djupsinninghetens +djupsinningheter +djupsinningheterna +djupsinningheternas +djupsinningheters +djupsinninghets +djupt +djur +djura +djuras +djuren +djurens +djuret +djurets +djurfarm +djurfarmar +djurfarmarna +djurfarmarnas +djurfarmars +djurfarmen +djurfarmens +djurfarms +djurhamn +djurhamns +djurisk +djuriska +djuriskt +djurs +docent +docenten +docentens +docenter +docenterna +docenternas +docenters +dock +docka +dockad +dockade +dockades +dockan +dockans +dockar +dockas +dockat +dockats +dockor +dockorna +dockornas +dockors +docksta +dockstas +doft +dofta +doftade +doftande +doftar +doftat +doften +doftens +dofter +dofterna +dofternas +dofters +dofts +dog +dogm +dogmatiker +dogmatikern +dogmatikerna +dogmatikernas +dogmatikerns +dogmatikers +dogmatisk +dogmatiska +dogmatiskare +dogmatiskast +dogmatiskaste +dogmatiskt +dogmatism +dogmatismen +dogmatismens +dogmen +dogmens +dogmer +dogmerna +dogmernas +dogmers +dok +doken +dokens +doket +dokets +doktor +doktorand +doktoranden +doktorandens +doktorander +doktoranderna +doktorandernas +doktoranders +doktorands +doktorer +doktorera +doktorerade +doktorerar +doktorerat +doktorerna +doktorernas +doktorers +doktorn +doktorns +doktors +doktorspromotion +doktorspromotionen +doktorspromotionens +doktorspromotions +doktrin +doktrinen +doktrinens +doktriner +doktrinerna +doktrinernas +doktriners +dokument +dokumentation +dokumentationen +dokumentationens +dokumentationer +dokumentationerna +dokumentationernas +dokumentationers +dokumentations +dokumenten +dokumentens +dokumentera +dokumenterad +dokumenterade +dokumenterades +dokumenterar +dokumenterat +dokumenterats +dokumentet +dokumentets +dom +domar +domare +domaren +domarens +domares +domarna +domarnas +domars +domarvishet +domarvisheten +domarvishetens +domarvishets +domedag +domedagen +domedagens +domedags +domen +domens +dominans +dominansen +dominansens +dominant +dominanta +dominantare +dominantast +dominantaste +dominanten +dominantens +dominanter +dominanterna +dominanternas +dominanters +dominera +dominerad +dominerade +dominerades +dominerande +dominerar +domineras +dominerat +dominerats +dominikanska +domino +domkyrka +domkyrkan +domkyrkans +domkyrkas +domkyrkor +domkyrkorna +domkyrkornas +domkyrkors +domna +domnad +domnade +domnades +domnande +domnandet +domnandets +domnar +domnas +domnat +domnats +domptera +dompterad +dompterade +dompterades +dompterar +dompteras +dompterat +dompterats +doms +don +dona +donade +donar +donat +donation +donationen +donationens +donationer +donationerna +donationernas +donationers +donations +donator +donatorer +donatorerna +donatorernas +donatorers +donatorn +donatorns +donen +donens +donera +donerad +donerade +donerades +donerar +doneras +donerat +donerats +donet +donets +dop +dopa +dopad +dopade +dopades +dopar +dopas +dopat +dopats +dopen +dopens +dopet +dopets +doping +dopingen +dopingens +dopp +doppa +doppad +doppade +doppades +doppar +doppas +doppat +doppats +doppen +doppens +doppet +doppets +dorotea +doroteas +dorsk +dorska +dorskare +dorskast +dorskaste +dorskt +dos +dosa +dosan +dosans +dosas +dosen +dosens +doser +dosera +doserad +doserade +doserades +doserar +doseras +doserat +doserats +dosering +doseringar +doseringarna +doseringarnas +doseringars +doseringen +doseringens +doserings +doserna +dosernas +dosers +dosor +dosorna +dosornas +dosors +dotter +dottern +dotterns +dotters +dotterson +dottersonen +dottersonens +dottersons +dov +dova +dovare +dovast +dovaste +dovt +dra +drabant +drabanten +drabantens +drabanter +drabanterna +drabanternas +drabanters +drabba +drabbad +drabbade +drabbades +drabbar +drabbas +drabbat +drabbats +drabbning +drabbningar +drabbningarna +drabbningarnas +drabbningars +drabbningen +drabbningens +drabbnings +drack +dracks +drag +draga +dragare +dragaren +dragarens +dragares +dragarna +dragarnas +dragas +dragen +dragens +drager +draget +dragets +dragg +dragget +draggets +dragig +dragiga +dragigare +dragigast +dragigaste +dragigt +dragit +dragits +dragna +dragning +dragningar +dragningarna +dragningarnas +dragningars +dragningen +dragningens +dragnings +dragningskraft +dragningskraften +dragningskraftens +dragningskrafts +dragon +dragonen +dragonens +dragoner +dragonerna +dragonernas +dragoners +drags +drakar +drakarna +drakarnas +drakars +drake +draken +drakens +drakes +dram +drama +dramas +dramat +dramatik +dramatiken +dramatikens +dramatiker +dramatikern +dramatikerna +dramatikernas +dramatikerns +dramatikers +dramatisera +dramatiserad +dramatiserade +dramatiserades +dramatiserar +dramatiseras +dramatiserat +dramatiserats +dramatisk +dramatiska +dramatiskare +dramatiskast +dramatiskaste +dramatiskt +dramats +dramaturg +dramaturgen +dramaturgens +dramaturger +dramaturgerna +dramaturgernas +dramaturgers +dramaturgi +dramaturgin +dramaturgins +dramaturgs +dramer +dramerna +dramernas +dramers +drapa +drapan +drapans +drapera +draperad +draperade +draperades +draperar +draperas +draperat +draperats +draperi +draperier +draperierna +draperiernas +draperiers +draperiet +draperiets +drapor +draporna +drapornas +drapors +drar +dras +drastisk +drastiska +drastiskt +dreja +drejad +drejade +drejades +drejar +drejat +drejats +dress +dressar +dressarna +dressarnas +dressars +dressen +dressens +dresser +dressera +dresserad +dresserade +dresserades +dresserar +dresseras +dresserat +dresserats +dresserna +dressernas +dressers +dressing +dressingar +dressingarna +dressingarnas +dressingars +dressingen +dressingens +dressings +dressyr +dressyren +dressyrens +drev +dreven +drevens +drevet +drevets +drevs +drick +dricka +drickande +drickas +drickbart +dricker +dricks +dricksen +dricksens +dricksvatten +dricksvattens +dricksvattnet +dricksvattnets +drift +driften +driftens +drifter +drifterna +drifternas +drifters +driftig +driftiga +driftigare +driftigast +driftigaste +driftige +driftighet +driftigheten +driftighetens +driftighets +driftigt +drifts +drink +drinkar +drinkare +drinkaren +drinkarens +drinkares +drinkarna +drinkarnas +drinkars +drinken +drinkens +drinks +drista +dristade +dristar +dristat +dristig +dristiga +dristige +dristighet +dristigheten +dristighetens +dristighets +dristigt +driv +driva +drivan +drivande +drivandet +drivandets +drivans +drivas +driven +driver +drives +drivet +drivhus +drivhusen +drivhusens +drivit +drivits +drivkraft +drivkraften +drivkraftens +drivkrafter +drivkrafterna +drivkrafternas +drivkrafters +drivna +drivor +drivorna +drivornas +drivors +drivrem +drivremmar +drivremmarna +drivremmarnas +drivremmars +drivremmen +drivremmens +drivrems +drivs +drivved +drivveden +drivvedens +drog +drogen +drogens +droger +drogerna +drogernas +drogers +drogs +dropp +droppa +droppad +droppade +droppades +droppar +dropparna +dropparnas +droppars +droppas +droppat +droppats +droppe +droppen +droppens +droppet +droppets +dropps +droska +droskan +droskans +droskas +droskor +droskorna +droskornas +droskors +drott +drottar +drottarna +drottarnas +drottars +drotten +drottens +drottning +drottningar +drottningarna +drottningarnas +drottningars +drottningen +drottningens +drottnings +drucken +drucket +druckit +druckits +druckna +drucknare +drucknast +drucknaste +druckne +drunkna +drunknad +drunknade +drunknades +drunknande +drunknandet +drunknandets +drunknar +drunknas +drunknat +drunknats +drunkning +drunkningar +drunkningarna +drunkningarnas +drunkningars +drunkningen +drunkningens +drunknings +drupit +druva +druvan +druvans +druvas +druvor +druvorna +druvornas +druvors +dryck +drycken +dryckens +drycker +dryckerna +dryckernas +dryckers +dryckeskanna +dryckeskannan +dryckeskannans +dryckeskannas +dryckesoffer +dryckesvisa +dryckesvisan +dryckesvisans +dryckesvisas +drycks +dryfta +dryftad +dryftade +dryftades +dryftar +dryftas +dryftat +dryftats +dryg +dryga +drygade +drygades +drygar +drygare +drygas +drygast +drygaste +drygat +drygats +drygt +drypa +drypande +drypandet +drypandets +dryper +drypt +dua +duade +duar +duat +dubb +dubba +dubbad +dubbade +dubbades +dubbar +dubbarna +dubbarnas +dubbars +dubbas +dubbat +dubbats +dubben +dubbens +ducka +duckade +duckar +duckat +duenna +duennan +duennans +duennas +duennor +duennorna +duennornas +duennors +duett +duetten +duettens +duetter +duetterna +duetternas +duetters +duetts +duga +dugde +duger +dugg +dugga +duggade +duggande +duggandet +duggandets +duggar +duggat +duggregn +duggregnen +duggregnens +duggregnet +duggregnets +duggregns +dugt +duk +duka +dukad +dukade +dukades +dukande +dukandet +dukandets +dukar +dukarna +dukarnas +dukars +dukas +dukat +dukaten +dukatens +dukater +dukaterna +dukaternas +dukaters +dukats +duken +dukens +duktig +duktiga +duktigare +duktigast +duktigaste +duktige +duktigt +dum +dumbom +dumbommar +dumbommarna +dumbommarnas +dumbommars +dumbommen +dumbommens +dumboms +dumdristig +dumdristiga +dumdristige +dumdristigt +dumhet +dumheten +dumhetens +dumheter +dumheterna +dumheternas +dumheters +dumhets +dumma +dummade +dummar +dummare +dummast +dummaste +dummat +dumme +dumpa +dumpade +dumpades +dumpar +dumpas +dumpat +dumpats +dumpning +dumpningar +dumpningarna +dumpningarnas +dumpningars +dumpningen +dumpningens +dumpnings +dumsnut +dumsnutar +dumsnutarna +dumsnutarnas +dumsnutars +dumsnuten +dumsnutens +dumt +dun +dunder +dundra +dundrade +dundrar +dundrat +dundren +dundrens +dundret +dundrets +dunen +dunens +dunet +dunets +dungar +dungarna +dungarnas +dungars +dunge +dungen +dungens +dunk +dunka +dunkad +dunkade +dunkades +dunkar +dunkarna +dunkarnas +dunkars +dunkas +dunkat +dunkats +dunken +dunkens +duns +dunsa +dunsade +dunsar +dunsarna +dunsarnas +dunsars +dunsat +dunsen +dunsens +dunst +dunsta +dunstade +dunstar +dunstat +dunsten +dunstens +dunster +dunsterna +dunsternas +dunsters +duo +duon +duons +dupera +duperad +duperade +duperades +duperar +duperas +duperat +duperats +dur +dus +dusch +duscha +duschad +duschade +duschades +duschar +duscharna +duscharnas +duschars +duschas +duschat +duschats +duschen +duschens +dussin +dussinen +dussinens +dussinet +dussinets +dussins +dust +dusten +dustens +duster +dusterna +dusternas +dusters +duva +duvan +duvans +duvas +duved +duveds +duven +duvet +duvna +duvor +duvorna +duvornas +duvors +dyft +dygd +dygden +dygdens +dygder +dygderna +dygdernas +dygders +dygdig +dygdiga +dygdigare +dygdigast +dygdigaste +dygdige +dygdigt +dygn +dygnen +dygnens +dygnet +dygnets +dygns +dyk +dyka +dykare +dykaren +dykarens +dykares +dykarna +dykarnas +dyker +dykning +dykningar +dykningarna +dykningarnas +dykningars +dykningen +dykningens +dyknings +dykt +dykte +dyn +dyna +dynamik +dynamiken +dynamikens +dynamisk +dynamiska +dynamiske +dynamiskt +dynamit +dynamiten +dynamitens +dynamo +dynamon +dynamons +dynamor +dynamorna +dynamornas +dynamors +dynan +dynans +dynasti +dynastier +dynastierna +dynastiernas +dynastiers +dynastin +dynastins +dynastis +dynen +dynens +dyner +dynerna +dynernas +dyners +dynga +dyngan +dyngans +dyning +dyningar +dyningarna +dyningarnas +dyningars +dyningen +dyningens +dynings +dynor +dynorna +dynornas +dynors +dyns +dyr +dyra +dyrare +dyrast +dyraste +dyrbar +dyrbara +dyrbarare +dyrbarast +dyrbaraste +dyrbart +dyre +dyrgrip +dyrgripar +dyrgriparna +dyrgriparnas +dyrgripars +dyrgripen +dyrgripens +dyrgrips +dyrk +dyrka +dyrkad +dyrkade +dyrkades +dyrkan +dyrkande +dyrkandet +dyrkandets +dyrkar +dyrkarna +dyrkarnas +dyrkars +dyrkas +dyrkat +dyrkats +dyrken +dyrkens +dyrks +dyrt +dyster +dystert +dystopi +dystopier +dystopierna +dystopiernas +dystopiers +dystopin +dystopins +dystopis +dystra +dystrare +dystrast +dystraste +dystre +ebb ebba +ebbade +ebbar +ebbas +ebbat +ecuador +ecuadors +edane +edanes +edberg +edbergs +edda +eddan +eddans +eden +edens +eder +ederna +edernas +eders +edert +edet +edets +edit +editera +editerad +editerade +editerades +editerar +editeras +editerat +editerats +edith +ediths +edition +editionen +editionens +editions +editor +editorer +editorerna +editorernas +editorers +editorn +editorns +editors +edits +edman +edmans +edra +eds +edsbro +edsbros +edsbruk +edsbruks +edsbyn +edsbyns +edsvuren +edsvuret +edsvurna +edvard +edvards +edvin +edvins +effekt +effekten +effektens +effekter +effekterna +effekternas +effekters +effektiv +effektiva +effektivare +effektivast +effektivaste +effektivisera +effektiviserad +effektiviserade +effektiviserades +effektiviserande +effektiviserar +effektiviseras +effektiviserat +effektiviserats +effektivisering +effektiviseringar +effektiviseringarna +effektiviseringarnas +effektiviseringars +effektiviseringen +effektiviseringens +effektiviserings +effektiviseringskrav +effektiviseringskraven +effektiviseringskravens +effektivitet +effektiviteten +effektivitetens +effektivitets +effektivt +effektuera +effektuerad +effektuerade +effektuerades +effektuerar +effektueras +effektuerat +effektuerats +efter +efterapa +efterapade +efterapar +efterapare +efteraparen +efteraparens +efterapares +efteraparna +efteraparnas +efterapat +efterapning +efterapningar +efterapningarna +efterapningarnas +efterapningars +efterapningen +efterapningens +efterapnings +efterforska +efterforskade +efterforskar +efterforskat +efterforskning +efterforskningar +efterforskningarna +efterforskningarnas +efterforskningars +efterforskningen +efterforskningens +efterforsknings +eftergift +eftergiften +eftergiftens +eftergifter +eftergifterna +eftergifternas +eftergifters +eftergifts +eftergivenhet +eftergivenheten +eftergivenhetens +eftergivenhets +efterhand +efterkom +efterkomma +efterkommande +efterkommas +efterkommer +efterkommes +efterkommit +efterkommits +efterkoms +efterkonstruktion +efterkonstruktionen +efterkonstruktionens +efterkonstruktioner +efterkonstruktionerna +efterkonstruktionernas +efterkonstruktioners +efterkonstruktions +efterkrigstid +efterkrigstiden +efterkrigstidens +efterkrigstids +eftermiddag +eftermiddagar +eftermiddagarna +eftermiddagarnas +eftermiddagars +eftermiddagen +eftermiddagens +eftermiddags +efternamn +efternamnen +efternamnens +efternamnet +efternamnets +efternamns +eftersatt +eftersatta +efterskicka +efterskickad +efterskickade +efterskickades +efterskickar +efterskickas +efterskickat +efterskickats +efterskott +efterskotts +efterskrift +efterskriften +efterskriftens +efterskrifts +eftersmak +eftersmaken +eftersmakens +eftersom +eftertanke +eftertanken +eftertankens +eftertrakta +eftertraktad +eftertraktade +eftertraktades +eftertraktar +eftertraktas +eftertraktat +eftertraktats +eftertryck +eftertrycket +eftertryckets +eftertrycks +egen +egenart +egenartad +egenartade +egenartat +egendom +egendomar +egendomarna +egendomarnas +egendomars +egendomen +egendomens +egendoms +egenhet +egenheten +egenhetens +egenheter +egenheterna +egenheternas +egenheters +egenhets +egennamn +egennamnen +egennamnens +egennamnet +egennamnets +egennytta +egennyttan +egennyttans +egennyttas +egensinnig +egensinniga +egensinnigare +egensinnigast +egensinnigaste +egensinnige +egensinnigt +egenskap +egenskapen +egenskapens +egenskaper +egenskaperna +egenskapernas +egenskapers +eget +egg +egga +eggad +eggade +eggades +eggande +eggar +eggarna +eggarnas +eggars +eggas +eggat +eggats +eggen +eggens +egna +ego +egocentricitet +egocentriciteten +egocentricitetens +egoism +egoismen +egoismens +egoist +egoisten +egoistens +egoister +egoisterna +egoisternas +egoisters +egoistisk +egoistiska +egoistiskt +egot +egots +egypten +egyptens +egyptier +egyptiern +egyptierna +egyptiernas +egyptierns +egyptiers +egyptisk +egyptiska +egyptiske +egyptiskt +ehuru +einar +einars +ejder +ejdern +ejderns +ejdrar +ejdrarna +ejdrarnas +ejdrars +eka +ekade +ekan +ekans +ekar +ekarna +ekarnas +ekars +ekat +ekberg +ekbergs +ekeby +ekebys +eken +ekens +eket +ekets +ekfat +ekfaten +ekfatens +ekfatet +ekfatets +ekfats +ekipage +ekipagen +ekipagens +ekipaget +ekipagets +ekivok +ekivoka +ekivokt +ekmark +ekmarks +eko +ekon +ekona +ekonas +ekonom +ekonomen +ekonomens +ekonomer +ekonomerna +ekonomernas +ekonomers +ekonomi +ekonomier +ekonomierna +ekonomiernas +ekonomiers +ekonomin +ekonomins +ekonomis +ekonomisering +ekonomiseringen +ekonomiseringens +ekonomiserings +ekonomisk +ekonomiska +ekonomiske +ekonomiskt +ekonoms +ekons +ekonyhet +ekonyheten +ekonyhetens +ekonyheter +ekonyheterna +ekonyheternas +ekonyheters +ekor +ekorna +ekornas +ekorrar +ekorrarna +ekorrarnas +ekorrars +ekorrbo +ekorrboen +ekorrboens +ekorrboet +ekorrboets +ekorre +ekorren +ekorrens +ekorres +ekors +ekos +ekosystem +ekosystemen +ekosystemens +ekosystemet +ekosystemets +ekot +ekots +eks +eksem +eksemen +eksemens +eksemet +eksemets +ekumenik +ekumeniken +ekumenikens +ekumenisk +ekumeniska +ekumeniskt +ekvation +ekvationen +ekvationens +ekvationer +ekvationerna +ekvationernas +ekvationers +ekvations +ekvator +ekvatorn +ekvatorns +emancipation +emancipationen +emancipationens +emancipations +emanera +emanerade +emanerande +emanerar +emanerat +embargo +embargon +embargona +embargonas +embargons +embargot +embargots +embarkera +embarkerad +embarkerade +embarkerades +embarkerar +embarkerat +embarkerats +embryo +embryon +embryons +embryot +embryots +emedan +emfas +emfasen +emfasens +emfatisk +emfatiska +emfatiskt +emigrant +emigranten +emigrantens +emigranter +emigranterna +emigranternas +emigranters +emigrants +emigration +emigrationen +emigrationens +emigrations +emigrera +emigrerade +emigrerar +emigrerat +eminens +eminensen +eminensens +eminenser +eminenserna +eminensernas +eminensers +eminent +eminenta +eminente +emission +emissionen +emissionens +emissioner +emissionerna +emissionernas +emissioners +emittera +emitterad +emitterade +emitterades +emitterar +emitteras +emitterat +emitterats +emma +emmaboda +emmabodas +emmas +emot +emotion +emotionen +emotionens +emotioner +emotionerna +emotionernas +emotioners +emotse +emotsedd +emotsedda +emotser +emotses +emotsett +emotsetts +emottaga +emottagen +emottager +emottaget +emottagna +empati +empatin +empatins +empatisk +empatiska +empatiskt +empiri +empirin +empirins +empirisk +empiriska +empiriskt +empirism +empirismen +empirismens +emu +emuer +emuerna +emuernas +emuers +emun +emuns +ena +enad +enade +enades +enahanda +enande +enar +enare +enaren +enarens +enares +enarmad +enarmade +enarmat +enarna +enarnas +enars +enas +enat +enats +enbart +enbent +enbenta +enda +endast +ende +endera +endiv +endiven +endivens +endiver +endiverna +endivernas +endivers +endokrin +endokrina +endokrint +ene +enea +enebyberg +enebybergs +enen +enens +energi +energin +energins +energirik +energirika +energirikt +energisk +energiska +energiske +energiskt +enervera +enerverad +enerverade +enerverades +enerverande +enerverar +enerveras +enerverat +enerverats +eneryda +enerydas +enes +enformig +enformiga +enformigare +enformigast +enformigaste +enformighet +enformigheten +enformighetens +enformigt +engagemang +engagemangen +engagemangens +engagemanget +engagemangets +engagemangs +engagera +engagerad +engagerade +engagerades +engagerande +engagerar +engageras +engagerat +engagerats +enhet +enheten +enhetens +enheter +enheterna +enheternas +enheters +enhets +enig +eniga +enighet +enigheten +enighetens +enighets +enigt +enkom +enkrona +enkronan +enkronans +enkronor +enkronorna +enkronornas +enkronors +enorm +enorma +enormare +enormast +enormaste +enormt +enrum +ens +ensak +ensam +ensamhet +ensamheten +ensamhetens +ensamma +ensammare +ensammas +ensammast +ensammaste +ensamme +ensammes +ensamt +ensamvandring +ensamvandringar +ensamvandringarna +ensamvandringarnas +ensamvandringars +ensamvandringen +ensamvandringens +ensamvandrings +ense +ensidig +ensidiga +ensidigt +enskede +enskedes +enskog +enskogar +enskogarna +enskogarnas +enskogars +enskogen +enskogens +enstaberga +enstabergas +enstaka +enstavig +enstaviga +enstavigt +entonig +entoniga +entonigt +entrecote +entrecoten +entrecotens +entrecoter +entrecoterna +entrecoternas +entrecoters +entreprenad +entreprenaden +entreprenadens +entreprenader +entreprenaderna +entreprenadernas +entreprenaders +entropi +entropin +entropins +entusiasm +entusiasmen +entusiasmens +entusiasmera +entusiasmerad +entusiasmerade +entusiasmerades +entusiasmerande +entusiasmerar +entusiasmeras +entusiasmerat +entusiasmerats +entusiast +entusiasten +entusiastens +entusiaster +entusiasterna +entusiasternas +entusiasters +entusiastisk +entusiastiska +entusiastiskare +entusiastiskast +entusiastiskaste +entusiastiske +entusiastiskt +entydig +entydiga +entydigare +entydigast +entydigaste +entydigt +envar +enveten +envetet +envetna +envetne +envig +envigen +envigens +enviget +envigets +enviken +envikens +envis +envisa +envisades +envisare +envisas +envisast +envisaste +envisats +envise +envises +envishet +envisheten +envishetens +envishets +envist +enzym +enzymen +enzymens +enzymer +enzymerna +enzymernas +enzymers +enzymet +enzymets +eon +eonen +eonens +eoner +eonerna +eonernas +eoners +epidemi +epidemien +epidemiens +epidemier +epidemierna +epidemiernas +epidemiers +epidemin +epidemins +epidemis +epidemisk +epidemiska +epidemiskt +epigram +epigrammer +epigrammerna +epigrammernas +epigrammers +epik +epiken +epikens +epiker +epikern +epikerna +epikernas +epikerns +epikers +episk +episka +episkt +episod +episoden +episodens +episoder +episoderna +episodernas +episoders +epitaf +epitafer +epitaferna +epitafernas +epitafers +epitafet +epitafets +epitet +epiteten +epitetens +epitetet +epitetets +epok +epoken +epokens +epoker +epokerna +epokernas +epokers +epoks +epos +eposen +eposens +eposet +eposets +era +eran +erans +eras +erbjud +erbjuda +erbjudande +erbjudanden +erbjudandena +erbjudandenas +erbjudandens +erbjudandet +erbjudandets +erbjudas +erbjuden +erbjuder +erbjudes +erbjudet +erbjudit +erbjudits +erbjudna +erbjuds +eremit +eremiten +eremitens +eremiter +eremiterna +eremiternas +eremiters +eremits +erfar +erfara +erfaras +erfaren +erfarenhet +erfarenheten +erfarenhetens +erfarenheter +erfarenheterna +erfarenheternas +erfarenheters +erfaret +erfarit +erfarna +erfarnare +erfarnast +erfarnaste +erfarne +erfor +erfordra +erfordrad +erfordrade +erfordrades +erfordrar +erfordras +erfordrat +erfordrats +ergonom +ergonomen +ergonomens +ergonomer +ergonomerna +ergonomernas +ergonomers +ergonomi +ergonomin +ergonomins +ergonomisk +ergonomiska +ergonomiskt +ergonoms +eric +erics +ericsson +ericssons +erik +erika +erikas +eriks +eriksgata +eriksgatan +eriksgatans +eriksgatas +eriksson +erikssons +eringsboda +eringsbodas +erinra +erinrad +erinrade +erinrades +erinran +erinrande +erinrar +erinras +erinrat +erinrats +eritrea +eritreas +ernst +ernsts +erodera +eroderad +eroderade +eroderades +eroderar +eroderas +eroderat +eroderats +erogen +erogena +erogent +erosion +erosionen +erosionens +erotik +erotiken +erotikens +erotisk +erotiska +erotiskt +ers +ersatt +ersatta +ersatte +ersattes +ersatts +ersmark +ersmarks +ert +ertappa +ertappad +ertappade +ertappades +ertappande +ertappandet +ertappandets +ertappar +ertappas +ertappat +ertappats +escher +eschers +eskort +eskorten +eskortens +eskorter +eskortera +eskorterad +eskorterade +eskorterades +eskorterar +eskorteras +eskorterat +eskorterats +eskorterna +eskorternas +eskorters +esoterisk +esoteriska +esoteriskt +esperanto +espresso +espresson +espressons +ess +essay +essayen +essayens +essayer +essayerna +essayernas +essayers +esse +essen +essens +essensen +essensens +essenser +essenserna +essensernas +essensers +esset +essets +est +esten +estens ester +esterna +esters +estet +esteten +estetens +esteter +esteterna +esteternas +esteters +estetik +estetiken +estetikens +estetiker +estetikern +estetikerna +estetikernas +estetikerns +estetikers +estetisk +estetiska +estetiskt +estnisk +estniska +estniske +estniskt +estrad +estraden +estradens +estrader +estraderna +estradernas +estraders +estrads +etage +etagen +etagens +etager +etagerna +etagernas +etagers +etaget +etagets +etapp +etappen +etappens +etapper +etapperna +etappernas +etappers +etcetera +eten +etenen +etenens +etenet +etenets +eter +eterisk +eteriska +eteriskt +etermedia +etermedias +etermedier +etermedierna +etermediernas +etermediers +etern +eterns +etik +etiken +etikens +etiker +etikern +etikerna +etikernas +etikerns +etikers +etikett +etiketten +etikettens +etiketter +etikettera +etiketterade +etiketterar +etiketterat +etiketterna +etiketternas +etiketters +etiketts +etiopien +etiopiens +etiopier +etiopiern +etiopierna +etiopiernas +etiopierns +etiopiers +etiopisk +etiopiska +etiopiskt +etisk +etiska +etiskt +etnisk +etniska +etniskt +etsa +etsad +etsade +etsades +etsar +etsas +etsat +etsats +etsning +etsningar +etsningarna +etsningarnas +etsningars +etsningen +etsningens +etsnings +ett +etta +ettan +ettans +ettas +ettdera +etter +ettor +ettorna +ettornas +ettors +ettrig +ettriga +ettrigare +ettrigast +ettrigaste +ettrige +ettrigt +ettusen +etui +etuien +etuiens +etuier +etuierna +etuiernas +etuiers +etuiet +etuiets +etyd +etyden +etydens +etyder +etyderna +etydernas +etyders +eufemism +eufemismen +eufemismens +eufemismer +eufemismerna +eufemismernas +eufemismers +eufori +euforin +euforins +euforisk +euforiska +euforiskt +europa +europas +europeisk +europeiska +europeiske +europeiskt +eva +evad +evakuera +evakuerad +evakuerade +evakuerades +evakuerar +evakueras +evakuerat +evakuerats +evakuering +evakueringar +evakueringarna +evakueringarnas +evakueringars +evakueringen +evakueringens +evakuerings +evas +evenemang +evenemangen +evenemangens +evenemanget +evenemangets +evenemangs +evert +everts +evidens +evidensen +evidensens +evig +eviga +evige +evighet +evigheten +evighetens +evigheter +evigheterna +evigheternas +evigheters +evigt +evy +evys +exakt +exakta +exaktare +exaktast +exaktaste +exakthet +exaktheten +exakthetens +exakthets +examen +examens +examensarbete +examensarbetet +examensarbetets +examensuppsats +examensuppsatsen +examensuppsatsens +examensuppsatser +examensuppsatserna +examensuppsatsernas +examensuppsatsers +examina +examination +examinationen +examinationens +examinationer +examinationerna +examinationernas +examinationers +examinations +examinator +examinatorer +examinatorerna +examinatorernas +examinatorers +examinatorn +examinatorns +examinators +examinera +examinerad +examinerade +examinerades +examinerar +examineras +examinerat +examinerats +excentrisk +excentriska +excentriske +excentriskt +excitera +exciterad +exciterade +exciterades +exciterar +exciteras +exciterat +exciterats +exeget +exegeten +exegetens +exegeter +exegeterna +exegeternas +exegeters +exekutiv +exekutiva +exekutivt +exekvera +exekverad +exekverade +exekverades +exekverar +exekveras +exekverat +exekverats +exekverbar +exekverbara +exekverbart +exekvering +exekveringar +exekveringarna +exekveringarnas +exekveringars +exekveringen +exekveringens +exekverings +exercis +exercisen +exercisens +exerciser +exerciserna +exercisernas +exercisers +exhibitionism +exhibitionismen +exhibitionismens +exhibitionist +exhibitionisten +exhibitionistens +exhibitionister +exhibitionisterna +exhibitionisternas +exhibitionisters +existens +existensen +existensens +existenser +existenserna +existensernas +existensers +existensminimum +existera +existerade +existerades +existerande +existerandet +existerandets +existerar +existeras +existerat +existerats +exkursion +exkursionen +exkursionens +exkursioner +exkursionerna +exkursionernas +exkursioners +exotisk +exotiska +exotiskt +expandera +expanderad +expanderade +expanderades +expanderar +expanderat +expanderats +expansion +expansionen +expansionens +expansionistisk +expansionistiska +expansionistiskt +expansiv +expansiva +expansivt +expediera +expedierad +expedierade +expedierades +expedierar +expedieras +expedierat +expedierats +expedit +expediten +expeditens +expediter +expediterna +expediternas +expediters +expedition +expeditionen +expeditionens +expeditioner +expeditionerna +expeditionernas +expeditioners +expeditions +experiment +experimenten +experimentens +experimentera +experimenterade +experimenterades +experimenterande +experimenterar +experimenteras +experimenterat +experimenterats +experimentet +experimentets +expert +experten +expertens +experter +experterna +experternas +experters +expertis +expertisen +expertisens +experts +exponent +exponenten +exponentens +exponenter +exponenterna +exponenternas +exponenters +exponentiera +exponentierad +exponentierade +exponentierades +exponentierar +exponentieras +exponentierat +exponentierats +exponents +exponera +exponerad +exponerade +exponerades +exponerar +exponeras +exponerat +exponerats +exponering +exponeringar +exponeringarna +exponeringarnas +exponeringars +exponeringen +exponeringens +exponerings +export +exporten +exportens +exportera +exporterad +exporterade +exporterades +exporterar +exporteras +exporterat +exporterats +exports +express +expressen +expressens +expresser +expresserna +expressernas +expressers +expressfart +expressionism +expressionismen +expressionismens +expressionist +expressionisten +expressionistens +expressionister +expressionisterna +expressionisternas +expressionisters +expressionistisk +expressionistiska +expressionistiskt +expressiv +expressiva +expressivt +expropriation +expropriationen +expropriationens +expropriationer +expropriationerna +expropriationernas +expropriationers +expropriations +expropriera +exproprierade +exproprierades +exproprierar +exproprieras +exproprierat +exproprierats +expropriering +exproprieringen +exproprieringens +exproprierings +extas +extasen +extasens +extatisk +extatiska +extatiskt +extern +externa +externt +extra +extrahera +extraherad +extraherade +extraherades +extraherar +extraherat +extraherats +extrapris +extrapriser +extrapriserna +extraprisernas +extraprisers +extrapriset +extraprisets +extravagans +extravagansen +extravagansens +extravaganser +extravaganserna +extravagansernas +extravagansers +extravagant +extravaganta +extrem +extrema +extremare +extremast +extremaste +extremism +extremismen +extremismens +extremist +extremisten +extremistens +extremister +extremisterna +extremisternas +extremisters +extremistisk +extremistiska +extremistiskt +extremt +extrovert +extroverta +fabricera +fabricerade +fabricerades +fabricerar +fabriceras +fabricerat +fabricerats +fabrik +fabrikant +fabrikanten +fabrikantens +fabrikanter +fabrikanterna +fabrikanternas +fabrikanters +fabrikants +fabrikat +fabrikaten +fabrikatens +fabrikatet +fabrikatets +fabrikation +fabrikationen +fabrikationens +fabrikations +fabriken +fabrikens +fabriker +fabrikerna +fabrikernas +fabrikers +fabriks +fabriksny +fabriksnya +fabriksnytt +facit +fack +facken +fackens +facket +fackets +fackman +fackmannen +fackmannens +fackmans +facks +facto +fadd +fadda +fadder +faddern +fadderns +fadders +faddrar +faddrarna +faddrarnas +faddrars +fader +fadern +faderns +faders +fager +fagersanna +fagersannas +fagersta +fagerstas +fagert +fagervik +fagerviks +faggorna +fagott +fagotten +fagottens +fagotter +fagotterna +fagotternas +fagotters +fagra +fagrare +fagrast +fagraste +fagre +fahrenheit +fairway +fairwayen +fairwayens +fakir +fakiren +fakirens +fakirer +fakirerna +fakirernas +fakirers +fakta +faktisk +faktiska +faktiskt +faktor +faktorer +faktorerna +faktorernas +faktorers +faktoriet +faktorn +faktorns +faktors +faktum +faktumet +faktumets +faktura +fakturan +fakturans +fakturera +fakturerad +fakturerade +fakturerades +fakturerar +faktureras +fakturerat +fakturerats +fakturering +faktureringar +faktureringarna +faktureringarnas +faktureringars +faktureringen +faktureringens +fakturerings +fakturor +fakturorna +fakturornas +fakturors +famn +famna +famnade +famnades +famnar +famnarna +famnarnas +famnars +famnas +famnat +famnats +famnen +famnens +famntag +famntagen +famntagens +famntaget +famntagets +famntags +fana +fanan +fanans +fanas +fanatiker +fanatikern +fanatikerna +fanatikernas +fanatikerns +fanatikers +fanatisk +fanatiska +fanatiske +fanatiskt +fanatism +fanatismen +fanatismens +fanerogam +fanerogamen +fanerogamens +fanerogamer +fanerogamerna +fanerogamernas +fanerogamers +fanfar +fanfaren +fanfarens +fanfarer +fanfarerna +fanfarernas +fanfarers +fanjunkare +fanjunkaren +fanjunkarens +fanjunkares +fanjunkarna +fanjunkarnas +fann +fanns +fanor +fanorna +fanornas +fanors +fantasi +fantasien +fantasiens +fantasier +fantasierna +fantasiernas +fantasiers +fantasin +fantasins +fantasis +fantast +fantasten +fantastens +fantaster +fantasterna +fantasternas +fantasters +fantastisk +fantastiska +fantastiske +fantastiskt +fantisera +fantiserad +fantiserade +fantiserades +fantiserande +fantiserandet +fantiserandets +fantiserar +fantiseras +fantiserat +fantiserats +fantom +fantomen +fantomens +fantomer +fantomerna +fantomernas +fantomers +fantoms +far +fara +faran +farande +farandet +farandets +farans +farao +faraon +faraoner +faraonerna +faraonernas +faraoners +faraons +faraos +faras +farbroder +farbrodern +farbroderns +farbroders +farbror +farbrorn +farbrorns +farbrors +farfader +farfadern +farfaderns +farfaders +farfar +farfars +farfarsfar +farfarsfars +farit +farkost +farkosten +farkostens +farkoster +farkosterna +farkosternas +farkosters +farm +farmaceutisk +farmaceutiska +farmaceutiskt +farmar +farmarna +farmarnas +farmars +farmen +farmens +farmor +farmorn +farmorns +farmors +farms +faror +farorna +farornas +farors +fars +farsot +farsoten +farsotens +farsoter +farsoterna +farsoternas +farsoters +farsta +farstas +farstu +farstun +farstuns +farstus +fart +farten +fartens +farter +farterna +farternas +farters +fartyg +fartygen +fartygens +fartyget +fartygets +fartygs +fas +fasa +fasad +fasade +fasaden +fasadens +fasader +fasaderna +fasadernas +fasaders +fasan +fasanen +fasanens +fasaner +fasanerna +fasanernas +fasaners +fasans +fasar +fasat +fascination +fascinationen +fascinationens +fascinations +fascinera +fascinerad +fascinerade +fascinerades +fascinerande +fascinerandet +fascinerandets +fascinerar +fascineras +fascinerat +fascinerats +fascism +fascismen +fascismens +fascist +fascisten +fascistens +fascister +fascisterna +fascisternas +fascisters +fascistisk +fascistiska +fascistiskt +fasen +fasens +faser +faserna +fasernas +fasers +fason +fasonen +fasonens +fasoner +fasonerna +fasonernas +fasoners +fasor +fasorna +fasornas +fasors +fast +fasta +fastade +fastades +fastan +fastande +fastandet +fastandets +fastans +fastar +fastare +fastas +fastast +fastaste +fastat +fastats +fastbunden +fastbundet +fastbundna +faster +fastern +fasterns +fasters +fasthet +fastheten +fasthetens +fasthets +fastighet +fastigheten +fastighetens +fastigheter +fastigheterna +fastigheternas +fastigheters +fastighets +fastmer +fastmonterad +fastmonterade +fastmonterat +fastna +fastnade +fastnades +fastnar +fastnas +fastnat +fastnats +fastor +fastorna +fastornas +fastors +fastrar +fastrarna +fastrarnas +fastrars +fastsatta +fastskruvad +fastskruvade +fastskruvat +fastspikad +fastspikade +fastspikat +faststucken +faststucket +faststuckna +fasttaga +fat +faten +fatens +fatet +fatets +fatt +fatta +fattad +fattade +fattades +fattar +fattas +fattat +fattats +fattbar +fattbara +fattbart +fattig +fattiga +fattigare +fattigas +fattigast +fattigaste +fattigdom +fattigdomen +fattigdomens +fattigdoms +fattige +fattiges +fattigt +fattning +fattningar +fattningarna +fattningarnas +fattningars +fattningen +fattningens +fattnings +faun +fauna +faunan +faunans +faunas +faunen +faunens +fauner +faunerna +faunernas +fauners +faunor +faunorna +faunornas +faunors +fauns +favorisera +favoriserad +favoriserade +favoriserades +favoriserande +favoriserar +favoriseras +favoriserat +favoriserats +favorit +favoriten +favoritens +favoriter +favoriterna +favoriternas +favoriters +favorits +feber +febern +feberns +februari +februaris +federation +federationen +federationens +federationer +federationerna +federationernas +federationers +federations +feedback +feer +feerna +feernas +feers +feg +fega +fegare +fegast +fegaste +fege +fegen +fegens +feghet +fegheten +feghetens +fegis +fegisar +fegisarna +fegisarnas +fegisars +fegisen +fegisens +fegt +feja +fejad +fejade +fejades +fejar +fejas +fejat +fejats +fejd +fejden +fejdens +fejder +fejderna +fejdernas +fejders +fejka +fejkade +fejkar +fejkat +fem +femhundra +feminin +feminina +feminint +femininum +femininumer +femininumerna +femininumernas +femininumers +femininumet +femininumets +feminism +feminismen +feminismens +feminist +feministen +feministens +feminister +feministerna +feministernas +feministers +feministisk +feministiska +feministiskt +femma +femman +femmans +femmas +femmor +femmorna +femmornas +femmors +femte +femti +femtio +femtioen +femtioett +femtiofem +femtiofyra +femtionde +femtionio +femtiosex +femtiosju +femtiotre +femton +femtonde +femtonhundra +femtontusen +femtusen +fen +fena +fenan +fenans +fenas +fengersfors +fenomen +fenomenen +fenomenens +fenomenet +fenomenets +fenor +fenorna +fenornas +fenors +fens +ferie +ferien +feriens +ferier +ferierna +feriernas +feriers +fernissa +fernissan +fernissans +ferrari +ferrarin +ferrarins +ferraris +fest +festa +festade +festades +festande +festandet +festandets +festar +festas +festat +festats +festen +festens +fester +festerna +festernas +festers +fet +feta +fetare +fetast +fetaste +fete +fetisch +fetischen +fetischens +fetischer +fetischerna +fetischernas +fetischers +fetischism +fetischismen +fetischismens +fetma +fetman +fetmans +fetmas +fett +fetter +fetterna +fetternas +fetters +fettet +fettets +fiasko +fiaskon +fiaskona +fiaskonas +fiaskons +fiaskos +fiaskot +fiaskots +fiber +fibern +fiberns +fibers +fibrer +fibrerna +fibrernas +fibrers +fick +ficka +fickan +fickans +fickas +fickor +fickorna +fickornas +fickors +ficks +fiction +fiende +fiendefarkost +fiendefarkosten +fiendefarkostens +fiendefarkoster +fiendefarkosterna +fiendefarkosternas +fiendefarkosters +fienden +fiendens +fiender +fienderna +fiendernas +fienders +fiendes +fiendskap +fiendskapen +fiendskapens +fiffig +fiffiga +fiffigare +fiffigast +fiffigaste +fiffige +fiffigt +figur +figurativ +figurativa +figurativt +figuren +figurens +figurer +figurera +figurerad +figurerade +figurerades +figurerar +figureras +figurerat +figurerats +figurerna +figurernas +figurers +figurs +fika +fikade +fikar +fikat +fikon +fikonen +fikonens +fikonet +fikonets +fikons +fiktion +fiktionen +fiktionens +fiktions +fiktiv +fiktiva +fiktivt +fikus +fikusar +fikusarna +fikusarnas +fikusars +fikusen +fikusens +fimp +fimpa +fimpad +fimpade +fimpades +fimpar +fimparna +fimparnas +fimpars +fimpas +fimpat +fimpats +fimpen +fimpens +fimps +fin +fina +finans +finanschef +finanschefen +finanschefens +finanschefer +finanscheferna +finanschefernas +finanschefers +finanser +finanserna +finansernas +finansers +finansiera +finansierad +finansierade +finansierades +finansierar +finansieras +finansierat +finansierats +finansiering +finansieringen +finansieringens +finansminister +finansministern +finansministerns +finansministers +finansministrar +finansministrarna +finansministrarnas +finansministrars +finare +finast +finaste +fine +finess +finessen +finessens +finesser +finesserna +finessernas +finessers +finfin +finfina +finfine +finfint +finge +finger +fingera +fingerad +fingerade +fingerades +fingerar +fingeras +fingerat +fingerats +fingeravtryck +fingeravtrycken +fingeravtryckens +fingeravtrycket +fingeravtryckets +fingeravtrycks +fingern +fingerns +fingers +fingertopp +fingertoppar +fingertopparna +fingertopparnas +fingertoppars +fingertoppen +fingertoppens +fingertopps +fingra +fingrade +fingrande +fingrar +fingrarna +fingrarnas +fingrars +fingrat +fingren +fingrens +fingret +fingrets +finhacka +finhackad +finhackade +finhackades +finhackar +finhackas +finhackat +finhackats +finish +finishen +finishens +finit +finita +finja +finjas +fink +finka +finkade +finkamma +finkammad +finkammade +finkammades +finkammande +finkammandet +finkammandets +finkammar +finkammas +finkammat +finkammats +finkar +finkarna +finkarnas +finkars +finkat +finken +finkens +finmaskig +finmaskiga +finmaskigare +finmaskigast +finmaskigaste +finmaskigt +finn +finna +finnande +finnandet +finnandets +finnar +finnarna +finnarnas +finnars +finnas +finne +finnen +finnens +finner +finnes +finnig +finniga +finnigt +finns +finputsa +finputsad +finputsade +finputsades +finputsar +finputsas +finputsat +finputsats +finsk +finska +finskan +finskans +finske +finskor +finskorna +finskornas +finskors +finskt +finsmakare +finsmakaren +finsmakarens +finsmakares +finsmakarna +finsmakarnas +finsnickeri +fint +finten +fintens +finter +finterna +finternas +finters +fints +fira +firad +firade +firades +firande +firandet +firandets +firar +firare +firaren +firarens +firares +firarna +firarnas +firas +firat +firats +firma +firmament +firmamentet +firmamentets +firmaments +firman +firmans +firmas +firmatecknare +firmatecknaren +firmatecknarens +firmatecknares +firmatecknarna +firmatecknarnas +firmor +firmorna +firmornas +firmors +fisk +fiska +fiskade +fiskades +fiskar +fiskare +fiskaren +fiskarens +fiskares +fiskarna +fiskarnas +fiskars +fiskas +fiskat +fiskats +fiskbit +fiskbitar +fiskbitarna +fiskbitarnas +fiskbitars +fiskbiten +fiskbitens +fiske +fisken +fiskens +fiskeri +fiskerier +fiskerierna +fiskeriernas +fiskeriers +fiskeriet +fiskeriets +fisket +fiskets +fiskgjusar +fiskgjusarna +fiskgjusarnas +fiskgjusars +fiskgjuse +fiskgjusen +fiskgjusens +fission +fissionen +fissionens +fissioner +fissionerna +fissionernas +fissioners +fix +fixa +fixad +fixade +fixades +fixar +fixare +fixaren +fixarens +fixares +fixarna +fixarnas +fixas +fixat +fixats +fixera +fixerad +fixerade +fixerades +fixerande +fixerandet +fixerandets +fixerar +fixeras +fixerat +fixerats +fixering +fixeringar +fixeringarna +fixeringarnas +fixeringars +fixeringen +fixeringens +fixerings +fixpunkt +fixpunkten +fixpunktens +fixt +fjant +fjanta +fjantade +fjantar +fjantarna +fjantarnas +fjantars +fjantat +fjanten +fjantens +fjantig +fjantiga +fjantigare +fjantigast +fjantigaste +fjantigt +fjor +fjord +fjordar +fjordarna +fjordarnas +fjordars +fjorden +fjordens +fjorton +fjortonde +fjortonhundra +fjortontusen +fjugesta +fjugestas +fjun +fjunen +fjunens +fjunet +fjunets +fjuns +fniss +fnissa +fnissade +fnissar +fnissat +fnisset +fnissets +fnitter +fnittra +fnittrade +fnittrar +fnittrat +fnittret +fnittrets +fnoskig +fnoskiga +fnoskigare +fnoskigast +fnoskigaste +fnoskigt +fnysa +fnyser +fnyst +fnyste +focka +fockade +fockades +fockar +fockas +fockat +fockats +foder +fodra +fodrad +fodrade +fodrades +fodrar +fodras +fodrat +fodrats +fodren +fodrens +fodret +fodrets +fog +foga +fogad +fogade +fogades +fogar +fogarna +fogarnas +fogars +fogas +fogat +fogats +fogdar +fogdarna +fogdarnas +fogdars +fogde +fogden +fogdens +fogen +fogens +fogning +fogningar +fogningarna +fogningarnas +fogningars +fogningen +fogningens +fognings +fogsvans +fogsvansar +fogsvansarna +fogsvansarnas +fogsvansars +fogsvansen +fogsvansens +fokus +fokusen +fokusens +fokusera +fokuserad +fokuserade +fokuserades +fokuserande +fokuserandet +fokuserandets +fokuserar +fokuseras +fokuserat +fokuserats +fokusering +fokuseringen +fokuseringens +fokuserings +fokuset +fokusets +fond +fonden +fondens +fonder +fonderna +fondernas +fonders +fonem +fonemen +fonemens +fonemet +fonemets +fonetik +fonetisk +fonetiska +fonetiskt +font +fonten +fontens +fonter +fonterna +fonternas +fonters +for +fora +foran +forans +foras +forcera +forcerad +forcerade +forcerades +forcerar +forcerat +forcerats +ford +fordom +fordomdags +fordon +fordonen +fordonens +fordonet +fordonets +fordons +fordra +fordrade +fordrades +fordran +fordrande +fordrandet +fordrandets +fordrar +fordras +fordrat +fordrats +fordring +fordringar +fordringarna +fordringarnas +fordringars +fordringen +fordringens +fordrings +form +forma +formad +formade +formades +formar +formas +format +formaten +formatens +formatera +formaterad +formaterade +formaterades +formaterar +formateras +formaterat +formaterats +formatering +formateringar +formateringarna +formateringarnas +formateringars +formateringen +formateringens +formaterings +formatet +formatets +formation +formationen +formationens +formationer +formationerna +formationernas +formationers +formations +formats +formattera +formatterad +formatterade +formatterades +formatterar +formatterat +formatterats +formen +formens +former +formera +formerad +formerade +formerades +formerar +formeras +formerat +formerats +formerna +formernas +formers +formgav +formgavs +formge +formger +formges +formgett +formgetts +formgivit +formgivning +formgivningen +formgivningens +formgivnings +forms +forn +forna +fornas +forne +fornes +fornnordisk +fornnordiska +fornnordiskt +fornt +forntid +forntida +forntiden +forntidens +forntids +foror +fororna +forornas +forors fors forsa +forsade +forsar +forsarna +forsarnas +forsars +forsas +forsat +forsbacka +forsbackas +forsen +forsens +forserum +forserums +forshaga +forshagas +forsheda +forshedas +forska +forskade +forskades +forskande +forskandet +forskandets +forskar +forskare +forskaren +forskarens +forskares +forskarna +forskarnas +forskas +forskat +forskats +forskning +forskningar +forskningarna +forskningarnas +forskningars +forskningen +forskningens +forsknings +forsman +forsmans +forsvik +forsviks +fort +fortare +fortast +fortfar +fortfara +fortfarande +fortfor +fortgick +fortran +fortsatt +fortsatta +fortsatte +fortskred +fortskrida +fortskrider +fortskridit +forum +forumet +forumets +forums +forward +forwardar +forwardarna +forwardarnas +forwardars +forwarden +forwardens +forwards +fosfat +fosfaten +fosfatens +fosfater +fosfaterna +fosfaternas +fosfaters +fosfor +fosforn +fosforns +foster +fosterbror +fosterdotter +fosterfader +fosterfadern +fosterfaderns +fosterjord +fosterjorden +fosterjordens +fosterson +fostersyster +fostersysters +fostra +fostrad +fostrade +fostrades +fostran +fostrar +fostrare +fostraren +fostrarens +fostrares +fostrarna +fostrarnas +fostras +fostrat +fostrats +fostren +fostrens +fostret +fostrets +fot +fotboja +fotbojan +fotbojans +fotbojor +fotbojorna +fotbojornas +fotbojors +foten +fotens +fotnot +fotnoten +fotnotens +fotnoter +fotnoterna +fotnoternas +fotnoters +fotnots +foto +fotogen +fotogenet +fotogenets +fotograf +fotografen +fotografens +fotografer +fotografera +fotograferad +fotograferade +fotograferades +fotograferar +fotograferas +fotograferat +fotograferats +fotografering +fotograferingar +fotograferingarna +fotograferingarnas +fotograferingars +fotograferingen +fotograferingens +fotograferings +fotograferna +fotografernas +fotografers +fotografi +fotografier +fotografierna +fotografiernas +fotografiers +fotografiet +fotografiets +fotografisk +fotografiska +fotografiskt +fotokopia +fotokopian +fotokopians +fotokopias +fotokopiera +fotokopierad +fotokopierade +fotokopierades +fotokopierar +fotokopierat +fotokopierats +fotokopior +fotokopiorna +fotokopiornas +fotokopiors +foton +fotona +fotonas +fotonen +fotonens +fotoner +fotonerna +fotonernas +fotoners +fotons +fotos +fotostatkopiering +fotostatkopieringen +fotostatkopieringens +fotot +fotots +fots +fotsid +fotsida +fotsitt +fotsteg +fotstegen +fotstegens +fotsteget +fotstegets +foxtrot +foxtroten +foxtrotens +foxtroter +foxtroterna +foxtroternas +foxtroters +foxtrots +frack +frackar +frackarna +frackarnas +frackars +fracken +frackens +fradga +fradgan +fradgans +fragment +fragmentarisk +fragmentariska +fragmentariskt +fragmenten +fragmentens +fragmentering +fragmenteringen +fragmenteringens +fragmenterings +fragmentet +fragmentets +frakt +frakta +fraktad +fraktade +fraktades +fraktar +fraktas +fraktat +fraktats +frakten +fraktens +frakter +frakterna +frakternas +frakters +fraktion +fraktionen +fraktionens +fraktioner +fraktionerna +fraktionernas +fraktioners +fraktions +frakts +fram +frambars +frambesvuren +frambesvuret +frambesvurit +frambesvurna +frambragte +frambringa +frambringad +frambringade +frambringades +frambringande +frambringandet +frambringandets +frambringar +frambringas +frambringat +frambringats +frambrutit +frambryta +frambryter +framburet +framemot +framfart +framfarten +framfartens +framfusig +framfusiga +framfusigare +framfusigast +framfusigaste +framfusige +framfusigt +framgent +framgick +framkasta +framkastad +framkastade +framkastades +framkastar +framkastas +framkastat +framkastats +framkom +framkomma +framkommer +framkommit +framkomst +framkomsten +framkomstens +frammana +frammanad +frammanade +frammanades +frammanar +frammanas +frammanat +frammanats +framme +framom +framsade +framsagd +framsagda +framsagt +framsida +framsidan +framsidans +framsidas +framsidor +framsidorna +framsidornas +framsidors +framskjutande +framskjuten +framskjutet +framskjutna +framskred +framskrida +framskriden +framskrider +framskridet +framskridit +framskridna +framskymta +framskymtade +framskymtades +framskymtar +framskymtas +framskymtat +framskymtats +framsprungen +framsprunget +framsprungna +framstamma +framstammad +framstammade +framstammades +framstammar +framstammas +framstammat +framstammats +framsteg +framstegen +framstegens +framsteget +framstegets +framstegs +framstod +framstormande +framstupa +framsynt +framsynta +framtagande +framtagandet +framtagandets +framtid +framtida +framtiden +framtidens +framtids +framtoning +framtoningen +framtoningens +framtonings +framtvinga +framtvingad +framtvingade +framtvingades +framtvingande +framtvingandet +framtvingandets +framtvingar +framtvingas +framtvingat +framtvingats +franc +francen +francens +franchising +franchisingen +franchisingens +frank +franka +frankera +frankerad +frankerade +frankerades +frankerar +frankeras +frankerat +frankerats +frankrike +frankrikes +frankt frans +fransar +fransarna +fransarnas +fransars +fransen +fransens +fransk +franska +franskan +franskans +franskas +franske +franskt +fransman +fransmannen +fransmannens +fransmans +fransyska +fransyskan +fransyskans +fransyskor +fransyskorna +fransyskornas +fransyskors +frappera +frapperad +frapperade +frapperades +frapperande +frapperar +frapperas +frapperat +frapperats +fras +frasa +frasade +frasande +frasandet +frasandets +frasar +frasat +frasen +frasens +fraser +frasering +fraseringen +fraseringens +fraserings +fraserna +frasernas +frasers +fred +freda +fredad +fredade +fredades +fredag +fredagar +fredagarna +fredagarnas +fredagars +fredagen +fredagens +fredags +fredar +fredas +fredat +fredats +freden +fredens +fredrik +fredrika +fredrikas +fredriks +fredriksberg +fredriksbergs +freds +fredsdomare +fredsdomaren +fredsdomarens +fredsdomares +fredsdomarna +fredsdomarnas +fredstid +fredstiden +fredstidens +fregatt +fregatten +fregattens +fregatter +fregatterna +fregatternas +fregatters +freja +frejas +frejdad +frejdade +frejdat +frejdig +frejdiga +frejdigt +frekvens +frekvensen +frekvensens +frekvenser +frekvenserna +frekvensernas +frekvensers +frekvent +frekventa +frekventare +frekventast +frekventaste +frekventera +frekventerad +frekventerade +frekventerar +frekventerat +frenesi +frenesien +frenesiens +frenesin +frenesins +frenetisk +frenetiska +frenetiskt +freon +freonen +freonens +freoner +freonerna +freonernas +freoners +freonet +freonets +frescati +fresk +fresken +freskens +fresker +freskerna +freskernas +freskers +fresta +frestad +frestade +frestades +frestande +frestar +frestare +frestaren +frestarens +frestares +frestarna +frestarnas +frestas +frestat +frestats +fresterska +fresterskan +fresterskans +fresterskor +fresterskorna +fresterskornas +fresterskors +freud +freudianism +freudianismen +freudianismens +freudiansk +freudianska +freudianske +freudianskt +freuds +fri +fria +friade +friades +friar +friare +friaren +friarens +friares +friarna +friarnas +frias +friat +friats +frid +frida +fridas +friden +fridens +frids +fridsam +fridsamma +fridsammare +fridsammast +fridsammaste +fridsamt +fridsfurste +fridsfursten +fridsfurstens +frie +frieri +frierier +frierierna +frieriernas +frieriers +frieriet +frieriets +frieris +frigav +frigavs +frige +friger +friges +frigett +frigetts +frigid +frigida +frigiven +frigivet +frigivit +frigivits +frigivna +frigivnas +frigivne +frigivnes +frigivning +frigivningar +frigivningarna +frigivningarnas +frigivningars +frigivningen +frigivningens +frigivnings +frigjordhet +frigjordheten +frigjordhetens +frigjordhets +frigjort +frihet +friheten +frihetens +friheter +friheterna +friheternas +friheters +frihets +friidrott +friidrottare +friidrottaren +friidrottarens +friidrottares +friidrottarna +friidrottarnas +friidrotten +friidrottens +friidrotts +frikostig +frikostiga +frikostigare +frikostigast +frikostigaste +frikostigt +friktion +friktionen +friktionens +friktions +frimodig +frimodiga +frimodighet +frimodigheten +frimodighetens +frimodighets +frimodigt +frinnaryd +frinnaryds +fripassagerare +fripassageraren +fripassagerarens +fripassagerares +fripassagerarna +fripassagerarnas +fris +frisen +frisens +friser +frisera +friserade +friserades +friserar +friseras +friserat +friserats +friserna +frisernas +frisers +frisinthet +frisintheten +frisinthetens +frisinthets +frisk +friska +friskad +friskade +friskades +friskar +friskare +friskas +friskast +friskaste +friskat +friskats +friske +friskes +friskt +frist fristad +fristaden +fristadens fristads +fristen +fristens +frister +fristerna +fristernas +fristers +frisyr +frisyren +frisyrens +frisyrer +frisyrerna +frisyrernas +frisyrers +frisyrs +fritera +friterad +friterade +friterades +friterar +friteras +friterat +friterats +fritid +fritiden +fritidens +fritids +fritjof +fritjofs +fritt +froda +frodad +frodade +frodades +frodar +frodas +frodat +frodats +frodig +frodiga +frodigt +from +fromhet +fromheten +fromhetens +fromma +frommare +frommas +frommast +frommaste +fromme +frommes +fromt +frondera +fronderade +fronderar +fronderas +fronderat +front +fronten +frontens +fronter +fronterna +fronternas +fronters +frossa +frossad +frossade +frossades +frossan +frossande +frossandet +frossandets +frossans +frossar +frossare +frossaren +frossarens +frossares +frossarna +frossarnas +frossas +frossat +frossats +frossor +frossorna +frossornas +frossors +frost +frosten +frostens +frostig +frostiga +frostigare +frostigast +frostigaste +frostigt +fru +fruar +fruarna +fruarnas +fruars +frukost +frukostar +frukostarna +frukostarnas +frukostars +frukosten +frukostens +frukosts +frukt +frukta +fruktad +fruktade +fruktades +fruktan +fruktande +fruktandet +fruktandets +fruktans +fruktar +fruktas +fruktat +fruktats +fruktbar +fruktbara +fruktbarhet +fruktbarheten +fruktbarhetens +fruktbart +frukten +fruktens +frukter +frukterna +frukternas +frukters +frukts +frun +fruns +fruntimmer +fruntimmers +fruntimren +fruntimrens +fruntimret +fruntimrets +frus +frusen +fruset +frusit +frusna +frusta +frustade +frustande +frustar +frustat +frustration +frustrationen +frustrationens +frustrationer +frustrationerna +frustrationernas +frustrationers +frustrations +frustrera +frustrerad +frustrerade +frustrerades +frustrerande +frustrerar +frustreras +frustrerat +frustrerats +frys +frysa +frysar +frysarna +frysarnas +frysars +frysas +frysen +frysens +fryser +fryst +fryste +frystes +frysts +fuga +fugan +fugans +fugas +fugor +fugorna +fugornas +fugors +fukt +fukta +fuktad +fuktade +fuktades +fuktar +fuktat +fuktats +fukten +fuktens +fuktig +fuktiga +fuktigare +fuktigast +fuktigaste +fuktighet +fuktigheten +fuktighetens +fuktighets +fuktigt +fukts +fundament +fundamenten +fundamentens +fundamentet +fundamentets +fundaments +fundera +funderade +funderades +funderande +funderandet +funderandets +funderar +funderare +funderaren +funderarens +funderares +funderarna +funderarnas +funderas +funderat +funderats +fundering +funderingar +funderingarna +funderingarnas +funderingars +funderingen +funderingens +funderings +fundersam +fundersamhet +fundersamheten +fundersamhetens +fundersamhets +fundersamma +fundersamt +fungera +fungerade +fungerades +fungerande +fungerandet +fungerandets +fungerar +fungeras +fungerat +fungerats +funka +funkade +funkar +funkat +funktion +funktionen +funktionens +funktioner +funktionerna +funktionernas +funktioners +funktions +funna +funnen +funnes +funnet +funnit +funnits +funtad +funtade +funtat +fur +fura +furan +furans +furas +furie +furien +furiens +furier +furierna +furiernas +furiers +furies +furir +furiren +furirens +furirer +furirerna +furirernas +furirers +furor +furorna +furornas +furors +furstar +furstarna +furstarnas +furstars +furste +fursten +furstens +furstes +furu +furuskog +furuskogen +furuskogens +furusund +furusunds +furuvik +furuviks +fusion +fusionen +fusionens +fusioner +fusionerna +fusionernas +fusioners +fusions +fusk +fuska +fuskade +fuskades +fuskar +fuskare +fuskaren +fuskarens +fuskares +fuskarna +fuskarnas +fuskas +fuskat +fuskats +fusket +fuskets +futtig +futtiga +futtigare +futtigast +futtigaste +futtigt +futurism +futurismen +futurismens +futurist +futuristen +futuristens +futurister +futuristerna +futuristernas +futuristers +futuristisk +futuristiska +futuristiskt +futurum +fynd +fynda +fyndade +fyndar +fyndat +fynden +fyndens +fyndet +fyndets +fyndig +fyndiga +fyndigare +fyndigast +fyndigaste +fyndigheterna +fyndigt +fynds +fyr +fyra +fyrade +fyrades +fyrahundra +fyran +fyrans +fyrar +fyrarna +fyrarnas +fyrars +fyras +fyrat +fyrats +fyratusen +fyrbent +fyrbenta +fyrbente +fyren +fyrens +fyrfotad +fyrfotade +fyrfotat +fyrk +fyrkant +fyrkanten +fyrkantens +fyrkanter +fyrkanterna +fyrkanternas +fyrkanters +fyrkantig +fyrkantiga +fyrkantigt +fyrkar +fyrkarna +fyrkarnas +fyrkars +fyrken +fyrkens +fyror +fyrorna +fyrornas +fyrors +fyrsiffrig +fyrsiffriga +fyrsiffrigt +fyrti +fyrtio +fyrtioen +fyrtioett +fyrtiofem +fyrtiofyra +fyrtionde +fyrtionio +fyrtiosex +fyrtiosju +fyrtiotre +fyrverkeri +fyrverkerier +fyrverkerierna +fyrverkeriernas +fyrverkeriers +fyrverkeriet +fyrverkeriets +fyrverkeris +fysik +fysiken +fysikens +fysiker +fysikern +fysikerna +fysikernas +fysikerns +fysikers +fysionomi +fysionomier +fysionomierna +fysionomiernas +fysionomiers +fysionomin +fysionomins +fysisk +fysiska +fysiskt +gabon +gabons +gadd +gadda +gaddade +gaddar +gaddarna +gaddarnas +gaddars +gaddat +gadden +gaddens +gage +gager +gagerna +gagernas +gagers +gaget +gagets +gaggig +gaggiga +gaggigare +gaggigast +gaggigaste +gaggigt +gagn +gagna +gagnad +gagnade +gagnades +gagnar +gagnas +gagnat +gagnats +gagnef +gagnefs +gagnet +gagnets +gagnrik +gagnrika +gagnrikt +gam +gamar +gamarna +gamarnas +gamars +gambia +gambias +gambit +gambitar +gambitarna +gambitarnas +gambitars +gambiten +gambitens +gamen +gamens +gamma +gammafunktion +gammafunktionen +gammafunktionens +gammafunktioner +gammafunktionerna +gammafunktionernas +gammafunktioners +gammafunktions +gamman +gangster +gangstern +gangsterns +gangsters +gangstrar +gangstrarna +gangstrarnas +gangstrars +ganska +gap +gapa +gapade +gapades +gapande +gapandet +gapandets +gapar +gapas +gapat +gapats +gapen +gapens +gapet +gapets +gapskratt +gapskratten +gapskrattens +gapskrattet +gapskrattets +gapskratts +garage +garagen +garagens +garaget +garagets +garant +garanten +garantens +garanter +garantera +garanterad +garanterade +garanterades +garanterande +garanterandet +garanterandets +garanterar +garanteras +garanterat +garanterats +garanterna +garanternas +garanters +garanti +garantier +garantierna +garantiernas +garantiers +garantin +garantins +garantis +gard +garde +garden +gardena +gardenas +gardens +gardera +garderad +garderade +garderades +garderar +garderas +garderat +garderats +garderob +garderoben +garderobens +garderober +garderoberna +garderobernas +garderobers +gardes +gardet +gardets +gardin +gardinen +gardinens +gardiner +gardinerna +gardinernas +gardiners +gardins +garn +garnen +garnens +garnera +garnerad +garnerade +garnerades +garnerar +garneras +garnerat +garnerats +garnering +garneringar +garneringarna +garneringarnas +garneringars +garneringen +garneringens +garnerings +garnet +garnets +garnison +garnisonen +garnisonens +garnisoner +garnisonerna +garnisonernas +garnisoners +garnityr +garnityren +garnityrens +garnityret +garnityrets +garpenberg +garpenbergs +garphyttan +garphyttans +garva +garvad +garvade +garvades +garvar +garvare +garvaren +garvarens +garvares +garvarna +garvarnas +garvas +garvat +garvats +gas +gasa +gasad +gasade +gasades +gasar +gasas +gasat +gasats +gasen +gasens +gaser +gaserna +gasernas +gasers +gask +gaskar +gaskarna +gaskarnas +gaskars +gasken +gaskens +gaskognisk +gaskogniska +gaskogniskt +gassa +gassade +gassande +gassar +gassat +gast +gasta +gastade +gastar +gastarna +gastarnas +gastars +gastat +gasten +gastens +gastronomisk +gastronomiska +gastronomiskt +gata +gatan +gatans +gator +gatorna +gatornas +gators +gatsopare +gatsoparen +gatsoparens +gatsopares +gatsoparna +gatsoparnas +gatsten +gatstenar +gatstenarna +gatstenarnas +gatstenars +gatstenen +gatstenens +gatstens +gatuadress +gatubarn +gatubarnen +gatubarnens +gatubarns +gatunummer +gatunummers +gatunumren +gatunumrens +gatunumret +gatunumrets +gav +gavott +gavotten +gavottens +gavotter +gavotterna +gavotternas +gavotters +gavs +gay +gebit +gebiten +gebitens +gebitet +gebitets +gedigen +gediget +gedigna +gem +gemak +gemaken +gemakens +gemaket +gemakets +gemen +gemena +gemene +gemener +gemenerna +gemenernas +gemeners +gemens +gemensam +gemensamma +gemensammma +gemensamt +gemenskap +gemenskapen +gemenskapens +gemenskaps +gement +gemet +gemets +gemyt +gemytet +gemytets +gemyts +gen +gena +genade +genant +genanta +genantare +genantast +genantaste +genar +genarp +genarps +genast +genat +gendarm +gendarmen +gendarmens +gendarmer +gendarmerna +gendarmernas +gendarmers +gendarms +genen +genens +gener +genera +generad +generade +generades +generar +generas +generat +generation +generationen +generationens +generationer +generationerna +generationernas +generationers +generations +generationsskifte +generator +generatorer +generatorerna +generatorernas +generatorers +generatorn +generatorns +generators +generats +generera +genererad +genererade +genererades +genererar +genererat +genererats +generering +genereringen +genereringens +genererings +generna +genernas +generositet +generositeten +generositetens +geners +genes +genesen +genesens +genetik +genetiken +genetikens +genetiker +genetikerna +genetikernas +genetikers +genetisk +genetiska +genetiskt +genevad +genevads +genever +genevern +geneverns +geni +genien +geniens +genier +genierna +geniernas +geniers +geniet +geniets +genitiv +genitiven +genitivens +genius +genom +genomarbetad +genomarbetade +genomarbetat +genomborra +genomborrad +genomborrade +genomborrades +genomborrar +genomborras +genomborrat +genomborrats +genombrott +genombrotten +genombrottens +genombrottet +genombrottets +genombrotts +genombruten +genombrutet +genombrutna +genomdrev +genomdrevs +genomdriva +genomdrivande +genomdrivas +genomdriven +genomdriver +genomdrivet +genomdrivit +genomdrivits +genomdrivna +genomfarit +genomfart +genomfarten +genomfartens +genomfor +genomfors +genomforska +genomforskad +genomforskade +genomforskades +genomforskar +genomforskat +genomforskats +genomgick +genomgicks +genomgripande +genomkokt +genomkokta +genomsnitt +genomsnitten +genomsnittens +genomsnittet +genomsnittets +genomsnitts +genomstungen +genomstunget +genomstungna +genomsyra +genomsyrad +genomsyrade +genomsyrades +genomsyrar +genomsyras +genomsyrat +genomsyrats +genre +genren +genrens +genrer +genrerna +genrernas +genrers +genres +gens +genskjuten +genskjutet +genskjutna +gensvar +gensvaren +gensvarens +gensvaret +gensvarets +genteknik +gentekniken +genteknikens +gentemot +genuin +genuina +genuint +genus +geodet +geodeten +geodetens +geodeter +geodeterna +geodeternas +geodeters +geofysik +geofysiken +geofysikens +geofysiker +geofysikerna +geofysikernas +geofysikers +geograf +geografen +geografens +geografer +geograferna +geografernas +geografers +geografi +geografin +geografins +geografisk +geografiska +geografiskt +geometri +geometrin +geometrins +geometrisk +geometriska +geometriskt +georg +georgien +georgiens +georgier +georgierna +georgiernas +georgiers +georgisk +georgiska +georgiske +georgiskt +georgs +geovetenskap +geovetenskapen +geovetenskapens +geovetenskaps +gepard +geparden +gepardens +geparder +geparderna +gepardernas +geparders +gepards +ger +gerd +gerda +gerdas +gerds +gerhard +gerhards +german +germanen +germanens +germaner +germanerna +germanernas +germaners +germans +germansk +germanska +germanske +germanskt +gert +gertrud +gertruds +gerts +ges +gest +gesten +gestens +gester +gesterna +gesternas +gesters +gestik +gestiken +gestikens +get +getabock +getabockar +getabockarna +getabockarnas +getabockars +getabocken +getabockens +getabocks +geten +getens +geting +getingar +getingarna +getingarnas +getingars +getinge +getingen +getingens +getinges +getings +gett +getter +getterna +getternas +getters +getto +getton +gettona +gettonas +gettons +gettos +gettot +gettots +getts +ghana +ghanas +gick +gicks +gift +gifta +giftas +giftbesprutning +giftbesprutningar +giftbesprutningarna +giftbesprutningarnas +giftbesprutningars +giftbesprutningen +giftbesprutningens +giftbesprutnings +gifte +giften +giftens +gifter +giftes +giftet +giftets +giftig +giftiga +giftigare +giftigast +giftigaste +giftigt +gifts +gigant +giganten +gigantens +giganter +giganterna +giganternas +giganters +gigantisk +gigantiska +gigantiskt +gigants +gikt +gikten +giktens +gimo +gimos +gin +ginge +ginst +ginsten +ginstens +ginster +ginsterna +ginsternas +ginsters +gipsa +gipsad +gipsade +gipsades +gipsar +gipsas +gipsat +gipsats +gipyr +gipyren +gipyrens +gir +gira +girade +giraff +giraffen +giraffens +giraffer +girafferna +giraffernas +giraffers +giraffs +girar +girarna +girarnas +girars +girat +giren +girens +girera +girerade +girerar +girerat +girering +gireringar +gireringarna +gireringarnas +gireringars +gireringen +gireringens +girerings +girig +giriga +girigare +girigas +girigast +girigaste +girige +giriges +girighet +girigheten +girighetens +girigt +giro +gironummer +gironummers +gironumren +gironumrens +gironumret +gironumrets +girot +girots +gissa +gissade +gissar +gissat +gissning +gissningar +gissningarna +gissningarnas +gissningars +gissningen +gissningens +gissnings +gissningsvis +gitarr +gitarren +gitarrens +gitarrer +gitarrerna +gitarrernas +gitarrers +giv +giva +givakt +givande +givare +givaren +givarens +givares +givarna +givarnas +givas +give +given +giver +gives +givet +givetvis +givit +givits +givna +gjord +gjorda +gjorde +gjordes +gjort +gjorts +gjut +gjuta +gjutas +gjuten +gjuter +gjutes +gjutet +gjutit +gjutits +gjutna +gjuts +gnabbades +gnabbas +gnabbats +gnaga +gnagare +gnagaren +gnagarens +gnagares +gnagarna +gnagarnas +gnagde +gnager +gnagt +gnarp +gnarps +gned +gneds +gnesta +gnestas +gnid +gnida +gnidas +gnider +gnidit +gnidits +gnids +gnista +gnistan +gnistans +gnistor +gnistorna +gnistornas +gnistors +gnistra +gnistrade +gnistrande +gnistrandet +gnistrandets +gnistrar +gnistrat +gno +gnodde +gnoddes +gnom +gnomen +gnomens +gnomer +gnomerna +gnomernas +gnomers +gnoms +gnor +gnos +gnott +gnotts +gnu +gnuer +gnuerna +gnuernas +gnuers +gnugga +gnuggad +gnuggade +gnuggades +gnuggar +gnuggas +gnuggat +gnuggats +gnun +gnuns +gnus +gnutta +gnuttan +gnuttans +gnuttas +gnuttor +gnuttorna +gnuttornas +gnuttors +gny +gnydde +gnyddes +gnyende +gnyr +gnys +gnytt +gnytts +god +goda +godan +godare +godas +godast +godaste +godbit +godbitar +godbitarna +godbitarnas +godbitars +godbiten +godbitens +godbits +goddag +gode +godes +godhet +godheten +godhetens +godhets +goding +godingar +godingarna +godingarnas +godingars +godingen +godingens +godings +godis +godiset +godisets +godmorgon +godnatt +godo +gods +godsen +godsens +godset +godsets +godsint +godsinta +godta +godtagbar +godtagbara +godtagbart +godtagit +godtagits +godtar +godtas +godtog +godtogs +godtycke +gom +gommar +gommarna +gommarnas +gommars +gommen +gommens +gordisk +gordiska +gordiskt +gorma +gormade +gormades +gormande +gormandet +gormandets +gormar +gormare +gormaren +gormarens +gormares +gormarna +gormarnas +gormas +gormat +gormats +gossar +gossarna +gossarnas +gossars +gosse +gossen +gossens +gosses +got +goter +goterna +goternas +goters +gotik +gotiken +gotikens +gotisk +gotiska +gotiskt +gott +gotta +gottade +gottar +gottat +grabb +grabba +grabbade +grabbar +grabbarna +grabbarnas +grabbars +grabbat +grabben +grabbens +grabbs +grace +gracen +gracens +gracer +gracerna +gracernas +gracers +grad +gradbeteckning +gradbeteckningar +gradbeteckningarna +gradbeteckningarnas +gradbeteckningars +gradbeteckningen +gradbeteckningens +gradbetecknings +graden +gradens +grader +gradera +graderad +graderade +graderades +graderar +graderat +graderats +gradering +graderingar +graderingarna +graderingarnas +graderingars +graderingen +graderingens +graderings +graderna +gradernas +graders +grads +gradvis +graf +grafen +grafens +grafer +graferna +grafernas +grafers +grafik +grafiken +grafikens +grafiker +grafikern +grafikerna +grafikernas +grafikerns +grafikers +grafisk +grafiska +grafiskt +grafit +grafiten +grafitens +gram +grammatik +grammatiken +grammatikens +grammatisk +grammatiska +grammatiskt +grammen +grammens +grammet +grammets +grammofon +grammofonen +grammofonens +grammofoner +grammofonerna +grammofonernas +grammofoners +grammofons +grammofonskiva +grammofonskivan +grammofonskivans +grammofonskivas +grams +gramse +gran +granar +granarna +granarnas +granars +granat +granaten +granatens +granater +granaterna +granaternas +granaters +grand +grandet +grandets +grandios +grandiosa +grandiosare +grandiosast +grandiosaste +grandiost +granen +granens +graninge +graninges +granit +graniten +granitens +grann +granna +grannar +grannare +grannarna +grannarnas +grannars +grannast +grannaste +granne +grannen +grannens +grannes +grannskap +grannskapet +grannskapets +grannstaten +grannstatens +granska +granskad +granskade +granskades +granskande +granskandet +granskandets +granskar +granskare +granskaren +granskarens +granskares +granskarna +granskarnas +granskas +granskat +granskats +granskning +granskningar +granskningarna +granskningarnas +granskningars +granskningen +granskningens +gransknings +grant +grassera +grasserade +grasserande +grasserar +grasserat +gratis +grattis +grav +grava +gravad +gravade +gravar +gravarna +gravarnas +gravars +gravat +graven +gravens +gravera +graverad +graverade +graverades +graverar +graveras +graverat +graverats +gravid +gravida +graviditet +graviditeten +graviditetens +graviditeter +graviditeterna +graviditeternas +graviditeters +graviditets +gravitation +gravitationen +gravitationens +gravitations +gravs +gravsten +gravstenar +gravstenarna +gravstenarnas +gravstenars +gravstenen +gravstenens +gravt +gravyr +gravyren +gravyrens +gravyrer +gravyrerna +gravyrernas +gravyrers +gravyrs +grebbestad +grebbestads +gregoriansk +gregorianska +gregorianskt +greja +grejad +grejade +grejades +grejar +grejas +grejat +grejats +grek +greken +grekens +greker +grekerna +grekernas +grekers +grekisk +grekiska +grekiskan +grekiskans +grekiske +grekiskor +grekiskorna +grekiskornas +grekiskors +grekiskt +gren +grena +grenada +grenadas +grenade +grenar +grenarna +grenarnas +grenars +grenat +grenen +grenens +grens +grep +grepar +greparna +greparnas +grepars +grepe +grepen +grepens +grepp +greppa +greppade +greppar +greppat +greppbar +greppbara +greppbart +greppen +greppens +greppet +greppets +grepps +greps +greta +gretas +grevar +grevarna +grevarnas +grevars +greve +greven +grevens +greves +grevinna +grevinnan +grevinnans +grevinnas +grevinnor +grevinnorna +grevinnornas +grevinnors +grift +griften +griftens +grifter +grifterna +grifternas +grifters +grifts +grimas +grimasen +grimasens +grimaser +grimasera +grimaserade +grimaserande +grimaserar +grimaserat +grimaserna +grimasernas +grimasers +grimma +grimman +grimmans +grimmas +grimmor +grimmorna +grimmornas +grimmors +grimstorp +grimstorps +grin +grina +grinade +grinades +grinande +grinandet +grinandets +grinar +grinas +grinat +grinats +grind +grindar +grindarna +grindarnas +grindars +grinden +grindens +grinet +grinets +grinig +griniga +grinigare +grinigast +grinigaste +grinigt +grip +gripa +gripande +gripanden +gripandena +gripandenas +gripandens +gripandes +gripandet +gripandets +gripare +griparen +griparens +gripares +griparna +griparnas +gripas +gripen +griper +gripes +gripet +gripit +gripits +gripna +grips +gris +grisar +grisarna +grisarnas +grisars +grisen +grisens +gro +grobian +grobianen +grobianens +grobianer +grobianerna +grobianernas +grobianers +grobians +groda +grodan +grodans +grodd +groddar +groddarna +groddarnas +groddars +grodde +grodden +groddens +groddes +grodor +grodorna +grodornas +grodors +groende +grogg +groggar +groggarna +groggarnas +groggars +groggen +groggens +grogrund +grogrunden +grogrundens +grogrunder +grogrunderna +grogrundernas +grogrunders +grop +gropar +groparna +groparnas +gropars +gropen +gropens +gropig +gropiga +gropigare +gropigast +gropigaste +gropigt +gror +gros +gross +grosset +grossets +grossist +grossisten +grossistens +grossister +grossisterna +grossisternas +grossisters +grotesk +groteska +groteskare +groteskast +groteskaste +groteskt +grott +grotta +grottan +grottans +grottor +grottorna +grottornas +grottors +grotts +grov +grova +grove +grovkornig +grovkorniga +grovkornigare +grovkornigast +grovkornigaste +grovkornigt +grovt grums +grumset +grumsets +grund +grunda +grundad +grundade +grundades +grundande +grundandet +grundandets +grundar +grundare +grundaren +grundarens +grundares +grundarna +grundarnas +grundas +grundast +grundaste +grundat +grundats +grundbok +grundboken +grundbokens +grunden +grundens +grunder +grunderna +grundernas +grunders +grundet +grundets +grundmurad +grundmurade +grundmurat +grundritning +grundritningar +grundritningarna +grundritningarnas +grundritningars +grundritningen +grundritningens +grundritnings +grundsats +grundsatsen +grundsatsens +grundsatser +grundsatserna +grundsatsernas +grundsatsers +grundstomme +grundstommen +grundstommens +grundsund +grundsunds +grundtext +grundtexter +grundtexterna +grundtexternas +grundtexters +grundtrygghet +grundtryggheten +grundtrygghetens +grundtrygghets +grunna +grunnade +grunnar +grunnat +grunt +grupp +grupparbete +grupparbeten +grupparbetena +grupparbetenas +grupparbetens +grupparbetes +grupparbetet +grupparbetets +gruppen +gruppens +grupper +gruppera +grupperad +grupperade +grupperades +grupperar +grupperas +grupperat +grupperats +gruppering +grupperingar +grupperingarna +grupperingarnas +grupperingars +grupperingen +grupperingens +grupperings +grupperna +gruppernas +gruppers +grupprabatt +grupprabatter +grupprabatterna +grupprabatternas +grupprabatters +grupps +gruppvis +grus +grusa +grusad +grusade +grusades +grusande +grusandet +grusandets +grusar +grusas +grusat +grusats +grusen +grusens +gruset +grusets +grustag +grustagen +grustagens +grustaget +grustagets +grustags +gruva +gruvade +gruvan +gruvans +gruvar +gruvas +gruvat +gruvor +gruvorna +gruvornas +gruvors +gry +grycksbo +grycksbos +grydde +gryddes +gryende +grym +grymhet +grymheten +grymhetens +grymheter +grymheterna +grymheternas +grymheters +grymhets +grymma +grymmare +grymmas +grymmast +grymmaste +grymme +grymmes +grymt +grymta +grymtade +grymtades +grymtande +grymtandet +grymtandets +grymtar +grymtas +grymtat +grymtats +grymtning +grymtningar +grymtningarna +grymtningarnas +grymtningars +grymtningen +grymtningens +grymtnings +gryn +grynen +grynens +grynet +grynets +grynig +gryniga +grynigare +grynigast +grynigaste +grynigt +gryning +gryningar +gryningarna +gryningarnas +gryningars +gryningen +gryningens +grynings +gryns +gryr +grys gryt +gryta +grytan +grytans +grytas +grytbit +grytbitar +grytbitarna +grytbitarnas +grytbitars +grytbiten +grytbitens +gryten +grytens +grytet +grytets +grythyttan +grythyttans +grytor +grytorna +grytornas +grytors gryts +grytt +grytts +gubbar +gubbarna +gubbarnas +gubbars +gubbe +gubben +gubbens +gubbes +gud +gudaboning +gudaboningar +gudaboningarna +gudaboningarnas +gudaboningars +gudaboningen +gudaboningens +gudabonings +gudagod +gudagoda +gudagott +gudar +gudarna +gudarnas +gudars +guden +gudens +gudfruktig +gudfruktiga +gudfruktigt +gudhem +gudhems +gudinna +gudinnan +gudinnans +gudinnor +gudinnorna +gudinnornas +gudinnors +gudmundsson +gudmundssons +gudom +gudomen +gudomens +gudrun +gudruns +guds +gudsfruktan +gudsfruktans +guida +guidade +guidar +guidat +guide +guiden +guidens +guider +guiderna +guidernas +guiders +guinea +guineas +gumma +gumman +gummans +gummas +gummi +gummin +gummins +gummisnodd +gummisnoddar +gummisnoddarna +gummisnoddarnas +gummisnoddars +gummisnodden +gummisnoddens +gummit +gummits +gummor +gummorna +gummornas +gummors +gump +gumpar +gumparna +gumparnas +gumpars +gumpen +gumpens +gun +gunborg +gunborgs +gunga +gungad +gungade +gungades +gungan +gungande +gungandet +gungandets +gungans +gungar +gungas +gungat +gungats +gungor +gungorna +gungornas +gungors +gunnar +gunnarn +gunnarns +gunnars +gunnarsbyn +gunnarsbyns +gunnarskog +gunnarskogs +gunnebo +gunnebos +guns +gunst +gunsten +gunstens +gunstig +gunstiga +gunstigt +gunvor +gunvors +gupp +guppet +guppets +gurka +gurkan +gurkans +gurkas +gurkmeja +gurkmejan +gurkmejans +gurkor +gurkorna +gurkornas +gurkors +guru +guruer +guruerna +guruernas +guruers +gurun +guruns +gurus +gustaf +gustafs +gustav +gustavian +gustavianen +gustavianens +gustavianer +gustavianerna +gustavianernas +gustavianers +gustavians +gustaviansk +gustavianska +gustavianskt +gustavs +gustavsberg +gustavsbergs +gustavsfors +gustavsson +gustavssons +gusum +gusums +guvernant +guvernanten +guvernantens +guvernanter +guvernanterna +guvernanternas +guvernanters +guvernants +guyana +guyanas +gymnasier +gymnasierna +gymnasiernas +gymnasiers +gymnasiet +gymnasiets +gymnasist +gymnasisten +gymnasistens +gymnasister +gymnasisterna +gymnasisternas +gymnasisters +gymnasium +gymnasiums +gymnast +gymnasten +gymnastens +gymnaster +gymnasterna +gymnasternas +gymnasters +gymnastik +gymnastiken +gymnastikens +gymnasts +gynna +gynnad +gynnade +gynnades +gynnar +gynnare +gynnaren +gynnarens +gynnares +gynnarna +gynnarnas +gynnas +gynnat +gynnats +gynnsam +gynnsamma +gynnsammare +gynnsammast +gynnsammaste +gynnsamt +gysinge +gysinges +gytter +gytters +gyttja +gyttjan +gyttjans +gyttjas +gyttorp +gyttorps +gyttren +gyttrens +gyttret +gyttrets +habo +habos +hack +hacka +hackad +hackade +hackades +hackan +hackans +hackar +hackas +hackat +hackats +hacken +hackens +hacket +hackets +hackig +hackiga +hackigt +hackor +hackorna +hackornas +hackors +hackspett +hackspettar +hackspettarna +hackspettarnas +hackspettars +hackspetten +hackspettens +hackspetts +hade +haffa +haffad +haffade +haffades +haffar +haffas +haffat +haffats +hafs +hafset +hafsets +hafsig +hafsiga +hafsigare +hafsigast +hafsigaste +hafsigt +haft +hagar +hagarna +hagarnas +hagars +hage +hagen +hagens +hages +hagfors +hagmark +hagmarken +hagmarkens +hagmarker +hagmarkerna +hagmarkernas +hagmarkers +hagmarks +hagtorn +hagtornar +hagtornarna +hagtornarnas +hagtornars +hagtornen +hagtornens +hagtorns +haiti +haitis +haj +haja +hajade +hajar +hajarna +hajarnas +hajars +hajat +hajen +hajens +hajom +hajoms +hajs +haka +hakad +hakade +hakades +hakan +hakans +hakar +hakarna +hakarnas +hakars +hakas +hakat +hakats +hake +haken +hakens +hakes +hakkas +hakkors +hakkorsen +hakkorsens +hakkorset +hakkorsets +hakor +hakorna +hakornas +hakors +hakparentes +hakparentesen +hakparentesens +hakparenteser +hakparenteserna +hakparentesernas +hakparentesers +hambraeus +hamburg +hamburgare +hamburgaren +hamburgarens +hamburgares +hamburgarna +hamburgarnas +hamburgerrestaurang +hamburgerrestaurangen +hamburgerrestaurangens +hamburgs +hamburgsund +hamburgsunds +hammar +hammarby +hammarbys +hammare +hammaren +hammarens +hammares +hammars +hammarstrand +hammarstrands +hammock +hammockar +hammockarna +hammockarnas +hammockars +hammocken +hammockens +hammocks +hamn +hamna +hamnade +hamnar +hamnarna +hamnarnas +hamnars +hamnat +hamneda +hamnedas +hamnen +hamnens +hamns +hampa +hampan +hampans hamra +hamrade +hamrades +hamrar hamras +hamrat +hamrats +hamster +hamstern +hamsterns +hamstra +hamstrade +hamstrar +hamstrarna +hamstrarnas +hamstrars +hamstrat +han +hanar +hanarna +hanarnas +hanars +hanaskog +hanaskogs +hand +handa +handarbete +handarbeten +handarbetena +handarbetenas +handarbetens +handarbetes +handarbetet +handarbetets +handboja +handbojan +handbojans +handbojas +handbojor +handbojorna +handbojornas +handbojors +handbok +handboken +handbokens +handboks +handdriven +handdrivet +handdrivna +handduk +handdukar +handdukarna +handdukarnas +handdukars +handduken +handdukens +handduks +handen +handens +handfast +handfasta +handfat +handfaten +handfatens +handfatet +handfatets +handfats +handgranat +handgranaten +handgranatens +handgranater +handgranaterna +handgranaternas +handgranaters +handgranats +handgrepp +handgreppen +handgreppens +handgreppet +handgreppets +handgrepps +handha +handhar +handhas +handikapp +handikappad +handikappade +handikappades +handikappat +handikappen +handikappens +handikappet +handikappets +handikapps +handjur +handjuren +handjurens +handjuret +handjurets +handjurs +hands +handskades +handskar +handskarna +handskarnas +handskars +handskas +handskats +handske +handsken +handskens +handskes +handskrift +handskriften +handskriftens +handskrifter +handskrifterna +handskrifternas +handskrifters +handskrifts +handskriven +handskrivet +handskrivna +handtag +handtagen +handtagens +handtaget +handtagets +handtags +hane +hanen +hanens +hanes +hangar +hangaren +hangarens +hangarer +hangarerna +hangarernas +hangarers +hangars +haninge +haninges +hanka +hankade +hankar +hankat +hankontakt +hankontakten +hankontaktens +hankontakter +hankontakterna +hankontakternas +hankontakters +hankontakts +hann +hanna +hannar +hannarna +hannarnas +hannars +hannas +hanne +hannen +hannens +hannes +hanns +hanrej +hanrejen +hanrejens +hanrejs hans +hansson +hanssons +hantera +hanterad +hanterade +hanterades +hanterande +hanterandet +hanterandets +hanterar +hanterare +hanteraren +hanterarens +hanterares +hanterarna +hanterarnas +hanteras +hanterat +hanterats +hantering +hanteringar +hanteringarna +hanteringarnas +hanteringars +hanteringen +hanteringens +hanterings +hantverk +hantverkare +hantverkaren +hantverkarens +hantverkares +hantverkarna +hantverkarnas +hantverken +hantverkens +hantverket +hantverkets +hantverks +haparanda +haparandas +happening +happeningar +happeningarna +happeningarnas +happeningars +happeningen +happeningens +happenings +har +harads +harakiri +harakirin +harakirins +harakirit +harakirits +harang +harangen +harangens +haranger +harangerna +harangernas +harangers +harangs +harar +hararna +hararnas +harars +harbo +harbos +hare +harem +haremet +haremets +harems +haren +harens +hares +harestad +harestads +hargshamn +hargshamns +harm +harma +harmad +harmade +harmades +harmar +harmas +harmat +harmats +harmen +harmens +harmoni +harmonier +harmoniera +harmonierade +harmonierar +harmonierat +harmonierna +harmoniernas +harmoniers +harmonin +harmonins +harmonis +harmonisera +harmoniserade +harmoniserar +harmoniserat +harmonisk +harmoniska +harmoniske +harmoniskt +harms +harmsen +harmset +harmsna +harnesk +harnesken +harneskens +harnesket +harneskets +harnesks +harpa +harpan +harpans +harpas +harpor +harporna +harpornas +harpors +harriet +harriets +harry +harrys +hart +harts +hartser +hartserna +hartsernas +hartsers +hartset +hartsets +harv +harva +harvade +harvar +harvard +harvarna +harvarnas +harvars +harvat +harven +harvens +harvs +hasa +hasade +hasande +hasar +hasard +hasarden +hasardens +hasat +hasch +haschen +haschens +haschet +haschets +haschisch +haschischen +haschischens +haschischet +haschischets +hasor +hasorna +hasornas +hasp +haspar +hasparna +hasparnas +haspars +haspen +haspens +hasse +hasses +hast +hasta +hastad +hastade +hastades +hastande +hastandet +hastandets +hastar +hastas +hastat +hastats +hastig +hastiga +hastigare +hastigast +hastigaste +hastige +hastighet +hastigheten +hastighetens +hastigheter +hastigheterna +hastigheternas +hastigheters +hastigt +hastverk +hastverken +hastverkens +hastverket +hastverkets +hastverks +hat +hata +hatad +hatade +hatades +hatande +hatar +hatare +hataren +hatarens +hatares +hatarna +hatarnas +hatas +hatat +hatats +hatet +hatets +hatisk +hatiska +hatiskt +hatt +hatta +hattade +hattar +hattarna +hattarnas +hattars +hattat +hatten +hattens +hatts +haussa +haussade +haussades +haussar +haussas +haussat +haussats +hausse +haussen +haussens +hav +hava +havande +havdhem +havdhems +haven +havens +haverera +havererade +havererar +havererat +haveri +haverier +haverierna +haveriernas +haveriers +haveriet +haveriets +haveris +havet +havets +havre +havren +havrens +havres +havs +havsbad +havsbaden +havsbadens +havsbadet +havsbadets +havsbotten +havsbottnar +havsbottnarna +havsbottnarnas +havsbottnars +havsbottnen +havsbottnens +havstenssund +havstenssunds +havsvatten +havsvattnet +havsvattnets +havsyta +havsytan +havsytans +heat +heaten +heatens +heatet +heatets +heberg +hebergs +hebreisk +hebreiska +hebreiskan +hebreiskans +hebreiske +hebreiskt +heby +hebys +hed +hedar +hedared +hedareds +hedarna +hedarnas +hedars +hede +hedekas +hedemora +hedemoras +heden +hedens +heder +hedern +hederns +heders +hedersam +hedersamma +hedersammare +hedersammast +hedersammaste +hedersamt +hedersman +hedersmannen +hedersmannens +hedersmans +hedes +hedesunda +hedesundas +hedet +hedna +hedning +hedningar +hedningarna +hedningarnas +hedningars +hedningen +hedningens +hednings +hednisk +hedniska +hedniskt +hedonism +hedonismen +hedonismens +hedra +hedrad +hedrade +hedrades +hedrande +hedrandet +hedrandets +hedrar +hedras +hedrat +hedrats +heds +hegemoni +hegemonien +hegemoniens +hegemonin +hegemonins +hej +heja +hejad +hejade +hejades +hejar +hejas +hejat +hejats +hejd +hejda +hejdad +hejdade +hejdades +hejdar +hejdas +hejdat +hejdats +hejduk +hejdukar +hejdukarna +hejdukarnas +hejdukars +hejduken +hejdukens +hejduks +hejsan +hektar +hektaren +hektarens +hektaret +hektarets +hektisk +hektiska +hektiskt +hekto +hekton +hektona +hektonas +hektons +hektos +hektot +hektots +hem +hemavan +hemavans +hemby +hembygd +hembygden +hembygdens +hembygds +hembyn +hembyns +hembys +hemgift +hemgiften +hemgiftens +hemgifts +hemgjord +hemgjorda +hemgjort +hemkommen +hemkommet +hemkomna +hemkomne +hemkomst +hemkomsten +hemkomstens +hemkomster +hemkomsterna +hemkomsternas +hemkomsters +hemma +hemmabruk +hemmafru +hemmafruar +hemmafruarna +hemmafruarnas +hemmafruars +hemmafrun +hemmafruns +hemmafrus +hemmagjord +hemmagjorda +hemmagjort +hemmamarknad +hemmamarknaden +hemmamarknadens +hemmamarknader +hemmamarknaderna +hemmamarknadernas +hemmamarknaders +hemmamatch +hemmamatchen +hemmamatchens +hemmamatcher +hemmamatcherna +hemmamatchernas +hemmamatchers +hemman +hemmanen +hemmanens +hemmanet +hemmanets +hemmans +hemmastadd +hemmastadda +hemmastatt +hemmen +hemmens +hemmet +hemmets +hemmingsmark +hemmingsmarks +hemort +hemorten +hemortens +hemorts +hemresa +hemresan +hemresans +hemresas +hemresor +hemresorna +hemresornas +hemresors +hems +hemse +hemses +hemsk +hemska +hemskare +hemskast +hemskaste +hemskickad +hemskickade +hemskickat +hemskt +hemstad +hemstaden +hemstadens +hemstads +henne +hennes +henning +hennings +henrik +henriks +henriksson +henrikssons +henry +henrys +hepatit +hepatiten +hepatitens +hepatiter +hepatiterna +hepatiternas +hepatiters +hepatits +herbarier +herbarierna +herbariernas +herbariers +herbariet +herbariets +herbarium +herbert +herberts +hercegovina +hercegovinas +herdar +herdarna +herdarnas +herdars +herde +herden +herdens +herdes +herdinna +herdinnan +herdinnans +herdinnas +herdinnor +herdinnorna +herdinnornas +herdinnors +hermafrodit +hermafroditen +hermafroditens +hermafroditer +hermafroditerna +hermafroditernas +hermafroditers +hermafrodits +hermetisk +hermetiska +hermetiskt +heroer +heroerna +heroernas +heroers +heroin +heroinet +heroinets +heroinist +heroinisten +heroinistens +heroins +heroisk +heroiska +heroiske +heroiskt +heroism +heroismen +heroismens +herpes +herr +herrar +herrarna +herrarnas +herrars +herre +herren +herrens +herres +hertig +hertigar +hertigarna +hertigarnas +hertigars +hertigen +hertigens +hertigs +hertz +hes +hesa +hesare +hesast +hesaste +hesperisk +hesperiska +hesperiskt +hest +hestra +hestras +het +heta +hetare +hetast +hetaste +hetat +heter +heterogen +heterogena +heterogent +hets +hetsa +hetsad +hetsade +hetsades +hetsar +hetsare +hetsaren +hetsarens +hetsares +hetsarna +hetsarnas +hetsas +hetsat +hetsats +hetsen +hetsens +hetsig +hetsiga +hetsigare +hetsigas +hetsigast +hetsigaste +hetsige +hetsiges +hetsigt +hett +hetta +hettade +hettan +hettans +hettar +hettas +hettat +hette +hexaeder +hexaedern +hexaederns +hexaeders +hexaedrar +hexaedrarna +hexaedrarnas +hexaedrars +hexagon +hexagonen +hexagonens +hexagoner +hexagonerna +hexagonernas +hexagoners +hexagons +hexameter +hexametern +hexameterns +hicka +hickade +hickan +hickande +hickandet +hickandets +hickans +hickar +hickat +hickning +hickningar +hickningarna +hickningarnas +hickningars +hickningen +hickningens +hicknings +hierarki +hierarkien +hierarkiens +hierarkier +hierarkierna +hierarkiernas +hierarkiers +hierarkin +hierarkins +hierarkisk +hierarkiska +hierarkiskt +hind +hindar +hindarna +hindarnas +hindars +hinden +hindens +hinder +hinders +hindra +hindrad +hindrade +hindrades +hindrande +hindrandet +hindrandets +hindrar +hindras +hindrat +hindrats +hindren +hindrens +hindret +hindrets +hinds +hindu +hinduen +hinduens +hinduer +hinduerna +hinduernas +hinduers +hinduism +hinduismen +hinduismens +hindun +hinduns +hindus +hingst +hingstar +hingstarna +hingstarnas +hingstars +hingsten +hingstens +hingsts +hink +hinkar +hinkarna +hinkarnas +hinkars +hinken +hinkens +hinks +hinna +hinnan +hinnans +hinnas +hinner +hinnor +hinnorna +hinnornas +hinnors +hinns +hipp +hippa +hippie +hippien +hippiens +hippies +hippt +hirs +hirsen +hirsens +hisings +hisna +hisnade +hisnades +hisnande +hisnar +hisnas +hisnat +hisnats +hiss +hissa +hissad +hissade +hissades +hissar +hissarna +hissarnas +hissars +hissas +hissat +hissats +hissen +hissens +histogram +histogrammen +histogrammens +histogrammet +histogrammets +histograms +historia +historian +historians +historias +historien +historiens +historier +historierna +historiernas +historiers +historik +historiken +historikens +historiker +historikern +historikerna +historikernas +historikerns +historikers +historiks +historisk +historiska +historiske +historiskt +hit +hitin +hitkommen +hitkommet +hitkomna +hitta +hittad +hittade +hittades +hittar +hittas +hittat +hittats +hittebarn +hittebarnen +hittebarnens +hittebarnet +hittebarnets +hittebarns +hittegods +hittegodset +hittegodsets +hiva +hivad +hivade +hivades +hivar +hivat +hivats +hjo +hjon +hjonen +hjonens +hjonet +hjonets +hjons +hjord +hjordar +hjordarna +hjordarnas +hjordars +hjorden +hjordens +hjords +hjort +hjortar +hjortarna +hjortarnas +hjortars +hjorted +hjorteds +hjorten +hjortens +hjortkvarn +hjortkvarns +hjortron +hjortronen +hjortronens +hjortronet +hjortronets +hjorts +hjos +hoar +hoarna +hoarnas +hoars +hobby +hobbyn +hobbyns +hoby +hobys +hockey +hockeyn +hockeyns +hofors +hojta +hojtade +hojtades +hojtande +hojtar +hojtas +hojtat +hojtats +hok +hoks +homogen +homogena +homogenare +homogenast +homogenaste +homogenitet +homogeniteten +homogenitetens +homogenitets +homogent +hon +hona +honan +honans +honas +honduras +honkontakt +honkontakten +honkontaktens +honkontakter +honkontakterna +honkontakternas +honkontakters +honkontakts +honom +honor +honorar +honoraren +honorarens +honoraret +honorarets +honorars +honorna +honornas +honors +hons +honung +honungen +honungens +honungs +hop +hopa +hopad +hopade +hopades +hopar +hoparna +hoparnas +hopars +hopas +hopat +hopats +hopen +hopens +hopfogad +hopfogade +hopfogat +hopknipen +hopknipet +hopknipna +hopknuten +hopknutet +hopknutna +hopkok +hopkoket +hopkokets +hopkrupen +hopkrupet +hopkrupna +hopkrupne +hopp +hoppa +hoppade +hoppades +hoppar +hoppare +hopparen +hopparens +hoppares +hopparna +hopparnas +hoppas +hoppat +hoppats +hoppen +hoppens +hoppet +hoppets +hoppjerka +hoppjerkan +hoppjerkans +hoppjerkor +hoppjerkorna +hoppjerkornas +hoppjerkors +hopps +hoppsan +hopsjunken +hopsjunket +hopsjunkna +hopsydd +hopsydda +hopsytt +hoptagning +hoptagningar +hoptagningarna +hoptagningarnas +hoptagningars +hoptagningen +hoptagningens +hoptagnings +hor +hord +horda +hordas +horden +hordens +horder +horderna +hordernas +horders +hords +horet +horets +horisont +horisonten +horisontens +horisonter +horisonterna +horisonternas +horisonters +horisonts +hormon +hormoner +hormonerna +hormonernas +hormoners +hormonet +hormonets +hormons horn +hornen +hornens +hornet +hornets +horney +hornmyr +hornmyrs horns +horoskop +horoskopen +horoskopens +horoskopet +horoskopets +horoskops +horred +horreds +hos +hosta +hostade +hostan +hostande +hostans +hostar +hostas +hostat +hostmedicin +hostmedicinen +hostmedicinens +hostning +hostningar +hostningarna +hostningarnas +hostningars +hostningen +hostningens +hostnings +hot +hota +hotad +hotade +hotades +hotande +hotandet +hotandets +hotar +hotas +hotat +hotats +hoten +hotens +hotet +hotets +hoting +hotings +hots +hottentott +hottentotten +hottentottens +hottentotter +hottentotterna +hottentotternas +hottentotters +hottentotts +hov +hova +hovar +hovarna +hovarnas +hovars +hovas +hoven +hovens +hovet +hovets +hovmantorp +hovmantorps +hovs +hovsam +hovsamma +hovsammare +hovsammast +hovsammaste +hovsamt +hud +hudar +hudarna +hudarnas +hudars +huddinge +huddinges +huddungeby +huddungebys +huden +hudens +huds +hug +hugad +hugade +hugat +hugen +hugens +hugg +hugga +huggare +huggaren +huggarens +huggares +huggarna +huggarnas +huggen +huggens +hugger +hugget +huggets +huggit +huggits +huggna +huggorm +huggormar +huggormarna +huggormarnas +huggormars +huggormen +huggormens +huggorms +huggs +hugnad +hugnaden +hugnadens +hugo +hugos +hugskott +hugskotten +hugskottens +hugskottet +hugskottets +hugskotts +huj +huk +huka +hukad +hukade +hukades +hukande +hukandet +hukandets +hukar +hukas +hukat +hukats +hum +human +humana +humanare +humanast +humanaste +humane +humaniora +humanisera +humaniserad +humaniserade +humaniserades +humaniserar +humaniseras +humaniserat +humaniserats +humanism +humanismen +humanismens +humanist +humanisten +humanistens +humanister +humanisterna +humanisternas +humanisters +humanistisk +humanistiska +humanistiskt +humanitet +humaniteten +humanitetens +humanitets +humant +humbug +humbugar +humbugarna +humbugarnas +humbugars +humbugen +humbugens +humbugs +humma +hummade +hummande +hummandet +hummandets +hummar +hummat +hummer +hummern +hummerns +humor +humorist +humoristen +humoristens +humorister +humoristerna +humoristernas +humoristers +humoristisk +humoristiska +humoristiskt +humorn +humorns +humors +humrar +humrarna +humrarnas +humrars +hund +hundar +hundarna +hundarnas +hundars +hunden +hundens +hundra +hundrade +hundraprocentig +hundraprocentiga +hundraprocentigt +hunds +hunger +hungern +hungerns +hungers +hungra +hungrade +hungrande +hungrar +hungrat +hungrig +hungriga +hungrigare +hungrigast +hungrigaste +hungrige +hungrigt +hunna +hunnebostrand +hunnebostrands +hunnen +hunnet +hunnit +hunnits +hunsa +hunsad +hunsade +hunsades +hunsar +hunsas +hunsat +hunsats +hur +hurdan +hurra +hurrade +hurrades +hurrande +hurrandet +hurrandets +hurrar +hurras +hurrat +hurrats +hurtig +hurtiga +hurtigt +hurts +hurtsar +hurtsarna +hurtsarnas +hurtsars +hurtsen +hurtsens +huru +hurudan +hurudana +hurusom +huruvida +hus +husar +husaren +husarens +husarer +husarerna +husarernas +husarers +husbonde +husbonden +husbondens +husbondes +husby +husbys +husdjur +husdjuren +husdjurens +husdjuret +husdjurets +husdjurs +huse +husen +husens +husera +huserade +huserar +huserat +huset +husets +huskvarna +huskvarnas +husmanskost +husmanskosten +husmanskostens +husmoder +husmodern +husmoderns +husmoders +husrannsakan +husrannsakans +husrum +hussar +hussarna +hussarnas +hussars +husse +hussen +hussens +husses +hustru +hustrun +hustruns +hustrur +hustrurna +hustrurnas +hustrurs +hustrus +husum +husums +husvagn +husvagnar +husvagnarna +husvagnarnas +husvagnars +husvagnen +husvagnens +husvagns +hut +huta +hutade +hutar +hutat +huttra +huttrade +huttrades +huttrande +huttrar +huttras +huttrat +huttrats +huv +huva +huvan +huvans +huvar +huvarna +huvarnas +huvars +huvas +huven +huvens +huvor +huvorna +huvornas +huvors +huvud +huvudansvarig +huvudansvariga +huvudansvarigt +huvuden +huvudena +huvudenas +huvudens +huvudet +huvudets +huvuds +huvudsak +huvudsaken +huvudsakens +huvudsaker +huvudsakerna +huvudsakernas +huvudsakers +huvudstad +huvudstaden +huvudstadens +huvudstads +huvudstupa +hybrid +hybriden +hybridens +hybrider +hybriderna +hybridernas +hybriders +hybrids +hybris +hydda +hyddan +hyddans +hyddas +hyddor +hyddorna +hyddornas +hyddors +hydra +hydran +hydrans +hydras +hydrofon +hydrofonen +hydrofonens +hydrofoner +hydrofonerna +hydrofonernas +hydrofoners +hydror +hydrorna +hydrornas +hydrors +hyena +hyenan +hyenans +hyenas +hyenor +hyenorna +hyenornas +hyenors +hyfs +hyfsa +hyfsad +hyfsade +hyfsades +hyfsar +hyfsas +hyfsat +hyfsats +hygge +hyggen +hyggena +hyggenas +hyggens +hygges +hygget +hyggets +hygien +hygienen +hygienens +hygiens +hygrometer +hygrometern +hygrometerns +hygrometers +hygrometrar +hygrometrarna +hygrometrarnas +hygrometrars +hymen +hymens +hymn +hymnen +hymnens +hymner +hymnerna +hymnernas +hymners +hymns +hyn +hynda +hyndan +hyndans +hyndas +hyndor +hyndorna +hyndornas +hyndors +hyns +hypnos +hypnosen +hypnosens +hypnotisera +hypnotiserad +hypnotiserade +hypnotiserades +hypnotiserande +hypnotiserar +hypnotiseras +hypnotiserat +hypnotiserats +hypnotisk +hypnotiska +hypnotiskt +hypokondriker +hypokondrikern +hypokondrikerna +hypokondrikernas +hypokondrikerns +hypokondrikers +hypokondrisk +hypokondriska +hypokondriskt +hypotes +hypotesen +hypotesens +hypoteser +hypoteserna +hypotesernas +hypotesers +hypotetisk +hypotetiska +hypotetiske +hypotetiskt +hyr +hyra +hyran +hyrans +hyras +hyrd +hyrda +hyrde +hyrdes +hyres +hyreshus +hyreshusen +hyreshusens +hyreshuset +hyreshusets +hyror +hyrorna +hyrornas +hyrors +hyrs +hyrt +hyrts +hys +hysa +hysas +hysch +hyser +hyses +hyss +hyssen +hyssens +hysset +hyssets +hyssna +hyssnas +hyst +hysta +hyste +hysteri +hysteriet +hysteriets +hysterin +hysterins +hysterisk +hysteriska +hysteriske +hysteriskt +hystes +hysts +hytt +hytta +hytten +hyttens +hytter +hytterna +hytternas +hytters +hytts +iaktta +iakttaga +iakttagande +iakttagandet +iakttagandets +iakttagare +iakttagaren +iakttagarens +iakttagares +iakttagarna +iakttagarnas +iakttagas +iakttagen +iakttages +iakttaget +iakttagit +iakttagits +iakttagna +iakttar +iakttas +iakttog +iakttogs +ian +ians +ibb +ibbs +ibidem +icing +icingen +icingens +icke +ida +idag +idar +idarna +idarnas +idars +idas +iddes +ide +idegran +idegranar +idegranarna +idegranarnas +idegranars +idegranen +idegranens +idegrans +iden +idens +identifiera +identifierad +identifierade +identifierades +identifierar +identifierare +identifieraren +identifierarens +identifierares +identifierarna +identifierarnas +identifieras +identifierat +identifierats +identifiering +identifieringar +identifieringarna +identifieringarnas +identifieringars +identifieringen +identifieringens +identifierings +identifikation +identifikationen +identifikationens +identifikationer +identifikationerna +identifikationernas +identifikationers +identifikations +identisk +identiska +identiskt +identitet +identiteten +identitetens +identiteter +identiteterna +identiteternas +identiteters +identitets +ides +idet +idets +idiom +idiomatisk +idiomatiska +idiomatiskt +idiomen +idiomens +idiomet +idiomets +idioms +idiosynkrasi +idiosynkrasier +idiosynkrasierna +idiosynkrasiernas +idiosynkrasiers +idiosynkrasin +idiosynkrasins +idiosynkrasis +idiot +idioten +idiotens +idioter +idioterna +idioternas +idioters +idioti +idiotien +idiotiens +idiotier +idiotierna +idiotiernas +idiotiers +idiotin +idiotins +idiotisk +idiotiska +idiotiskare +idiotiskast +idiotiskaste +idiotiskt +idiots +idka +idkad +idkade +idkades +idkande +idkandet +idkandets +idkar +idkare +idkaren +idkarens +idkares +idkarna +idkarnas +idkas +idkat +idkats +idkerberget +idkerbergets +idog +idoga +idogare +idogast +idogaste +idoge +idogt +idre +idres +idrott +idrotta +idrottade +idrottar +idrottare +idrottaren +idrottarens +idrottares +idrottarna +idrottarnas +idrottat +idrotten +idrottens +idrotter +idrotterna +idrotternas +idrotters +idrotts +ids +ifatt +ifred +igen +igenkorkad +igenkorkade +igenkorkat +igenom +iggesund +iggesunds +ignorans +ignoransen +ignoransens +ignorant +ignoranten +ignorantens +ignoranter +ignoranterna +ignoranternas +ignoranters +ignorera +ignorerad +ignorerade +ignorerades +ignorerar +ignoreras +ignorerat +ignorerats +ihop +ikapp +ikast +ikea +ikeas +ikon +ikonen +ikonens +ikoner +ikonerna +ikonernas +ikoners +ikons +ikraft +ikring +image +imagen +imagens +imitation +imitationen +imitationens +imitationer +imitationerna +imitationernas +imitationers +imitations +imitera +imiterad +imiterade +imiterades +imiterande +imiterar +imiteras +imiterat +imiterats +imma +immade +imman +immande +immanent +immanenta +immans +immar +immas +immat +immigrant +immigranten +immigrantens +immigranter +immigranterna +immigranternas +immigranters +immigrants +immigration +immigrationen +immigrationens +immigrations +immun +immuna +immunitet +immuniteten +immunitetens +immunitets +immunt +imorgon +impedans +impedansen +impedansens +imperativ +imperativa +imperativen +imperativens +imperativer +imperativerna +imperativernas +imperativers +imperativet +imperativets +imperativt +imperfekt +imperfektet +imperfektets +imperier +imperierna +imperiernas +imperiers +imperiet +imperiets +imperium +imperiums +imponera +imponerad +imponerade +imponerades +imponerande +imponerar +imponeras +imponerat +imponerats +import +importen +importens +importer +importera +importerad +importerade +importerades +importerande +importerar +importerat +importerats +importerna +importernas +importers +impotens +impotensen +impotensens +impotent +impotenta +impotente +improduktiv +improduktiva +improduktivt +improvisation +improvisationen +improvisationens +improvisationer +improvisationerna +improvisationernas +improvisationers +improvisations +improvisera +improviserad +improviserade +improviserades +improviserande +improviserar +improviseras +improviserat +improviserats +inackordering +inackorderingar +inackorderingarna +inackorderingarnas +inackorderingars +inackorderingen +inackorderingens +inackorderings +inaktiv +inaktiva +inaktivare +inaktivast +inaktivaste +inaktivitet +inaktiviteten +inaktivitetens +inaktivitets +inaktivt +inandades +inandas +inandats +inarbeta +inarbetad +inarbetade +inarbetades +inarbetar +inarbetas +inarbetat +inarbetats +inatt +inbaka +inbakad +inbakade +inbakades +inbakar +inbakas +inbakat +inbakats +inbegrep +inbegreps +inbegripa +inbegripande +inbegripas +inbegripen +inbegriper +inbegripet +inbegripit +inbegripits +inbegripna +inbegrips +inbesparad +inbesparade +inbesparat +inbesparing +inbesparingar +inbesparingarna +inbesparingarnas +inbesparingars +inbesparingen +inbesparingens +inbesparings +inbiten +inbitet +inbitna +inbitne +inbjud +inbjuda +inbjudan +inbjudande +inbjudare +inbjudaren +inbjudarens +inbjudares +inbjudarna +inbjudarnas +inbjudas +inbjuden +inbjuder +inbjudes +inbjudet +inbjudit +inbjudits +inbjudna +inbjudnas +inbjudne +inbjudnes +inbjudning +inbjudningar +inbjudningarna +inbjudningarnas +inbjudningars +inbjudningen +inbjudningens +inbjudnings +inbjuds +inbokad +inbokade +inbokat +inbringa +inbringad +inbringade +inbringades +inbringande +inbringar +inbringat +inbringats +inbromsning +inbromsningar +inbromsningarna +inbromsningarnas +inbromsningars +inbromsningen +inbromsningens +inbromsnings +inbrott +inbrotten +inbrottens +inbrottet +inbrottets +inbrotts +inbrutit +inbrutits +inbryt +inbryta +inbrytande +inbrytandet +inbrytandets +inbrytas +inbryter +inbrytning +inbrytningar +inbrytningarna +inbrytningarnas +inbrytningars +inbrytningen +inbrytningens +inbrytnings +inbryts +inbunden +inbundet +inbundna +inbundnare +inbundnast +inbundne +inburad +inburade +inburat +inbygg +inbygga +inbyggas +inbyggd +inbyggda +inbyggde +inbyggdes +inbygger +inbyggnad +inbyggnaden +inbyggnadens +inbyggs +inbyggt +inbyggts +inbyte +inbyten +inbytena +inbytenas +inbytens +inbytes +inbytet +inbytets +incest +incesten +incestens +incident +incidenten +incidentens +incidenter +incidenterna +incidenternas +incidenters +incitament +incitamenten +incitamentens +incitamentet +incitamentets +incitaments +indata +indatan +indatans +indatas +indefinit +indefinita +indentera +indenterad +indenterade +indenterades +indenterar +indenteras +indenterat +indenterats +indentering +indenteringar +indenteringarna +indenteringarnas +indenteringars +indenteringen +indenteringens +indenterings +independent +independenten +independentens +independenter +independenterna +independenternas +independenters +indeterministisk +indeterministiska +indeterministiskt +index +indexen +indexens +indexet +indexets +indian +indianen +indianens +indianer +indianerna +indianernas +indianers +indicier +indicierna +indiciernas +indiciers +indiciet +indiciets +indicium +indien +indiens +indier +indiern +indierna +indiernas +indierns +indiers +indifferens +indifferensen +indifferensens +indifferent +indifferenta +indignation +indignationen +indignationens +indignationer +indignationerna +indignationernas +indignationers +indignations +indignera +indignerad +indignerade +indignerades +indignerar +indigneras +indignerat +indignerats +indigo +indigon +indigons +indikation +indikationen +indikationens +indikationer +indikationerna +indikationernas +indikationers +indikations +indikativ +indikativa +indikativen +indikativens +indikativer +indikativerna +indikativernas +indikativers +indikativt +indikator +indikatorer +indikatorerna +indikatorernas +indikatorers +indikatorn +indikatorns +indikators +indikera +indikerade +indikerades +indikerande +indikerandet +indikerandets +indikerar +indikeras +indikerat +indikerats +indikering +indikeringar +indikeringarna +indikeringarnas +indikeringars +indikeringen +indikeringens +indikerings +indirekt +indirekta +indirektare +indirektast +indirektaste +indisk +indiska +indiskan +indiskans +indiskas +indiske +indiskor +indiskorna +indiskornas +indiskors +indiskret +indiskreta +indiskt +individ +individen +individens +individer +individerna +individernas +individers +individs +indoeuropeisk +indoeuropeiska +indoeuropeiskt +indokina +indoktrinera +indoktrinerad +indoktrinerade +indoktrinerades +indoktrinerar +indoktrineras +indoktrinerat +indoktrinerats +indoktrinering +indoktrineringen +indoktrineringens +indoktrinerings +indonesien +indonesiens +indonesisk +indonesiska +indonesiske +indonesiskt +indraga +indragande +indragas +indragen +indrages +indraget +indragit +indragits +indragna +indragning +indragningar +indragningarna +indragningarnas +indragningars +indragningen +indragningens +indragnings +indrivning +indrivningar +indrivningarna +indrivningarnas +indrivningars +indrivningen +indrivningens +indrivnings +indrog +indrogs +induktans +induktansen +induktansens +induktanser +induktanserna +induktansernas +induktansers +induktion +induktionen +induktionens +induktioner +induktionerna +induktionernas +induktioners +induktions +industri +industrien +industriens +industrier +industrierna +industriernas +industriers +industrin +industrins +industris +industrisemester +industrisemestern +industrisemesterns +ineffektiv +ineffektiva +ineffektive +ineffektivitet +ineffektiviteten +ineffektivitetens +ineffektivt +inexakt +inexakta +infam +infama +infamt +infann +infanteri +infanteriet +infanteriets +infarkt +infarkten +infarktens +infarkter +infarkterna +infarkternas +infarkters +infarkts +infart +infarten +infartens +infarter +infarterna +infarternas +infarters +infatta +infattad +infattade +infattades +infattar +infattas +infattat +infattats +infektera +infekterad +infekterade +infekterades +infekterar +infekteras +infekterat +infekterats +infektion +infektionen +infektionens +infektioner +infektionerna +infektionernas +infektioners +infektions +infektionssjukdom +infektionssjukdomar +infektionssjukdomarna +infektionssjukdomarnas +infektionssjukdomars +infektionssjukdomen +infektionssjukdomens +inferno +infernon +infernons +infernos +infernot +infernots +infetta +infettad +infettade +infettades +infettar +infettas +infettat +infettats +infinitiv +infinitiven +infinitivens +infinitiver +infinitiverna +infinitivernas +infinitivers +infinna +infinnas +infinner +infoga +infogad +infogade +infogades +infogande +infogandet +infogandets +infogar +infogas +infogat +infogats +infordra +infordrad +infordrade +infordrades +infordrar +infordras +infordrat +infordrats +information +informationen +informationens +informationer +informationerna +informationernas +informationers +informations +informationskampanj +informationskampanjen +informationskampanjens +informationskampanjer +informationskampanjerna +informationskampanjernas +informationskampanjers +informativ +informativa +informativt +informera +informerad +informerade +informerades +informerande +informerar +informeras +informerat +informerats +infrastruktur +infrastrukturen +infrastrukturens +infrastrukturer +infrastrukturerna +infrastrukturernas +infrastrukturers +infria +infriad +infriade +infriades +infriande +infriar +infrias +infriat +infriats +infrusen +infruset +infrusna +infunnit +infusion +infusionen +infusionens +infusioner +infusionerna +infusionernas +infusioners +infusions +inga +ingas +ingatorp +ingatorps +ingav +ingavs +inge +ingeborg +ingeborgs +ingemar +ingemars +ingen +ingendera +ingenderas +ingens +ingenstans +ingenting +inger +ingers +inges +inget +ingetdera +ingett +ingetts +ingick +ingicks +ingift +ingifta +inginge +ingivit +ingjut +ingjuta +ingjutas +ingjuten +ingjuter +ingjutet +ingjutit +ingjutits +ingjutna +ingjuts +ingrediens +ingrediensen +ingrediensens +ingredienser +ingredienserna +ingrediensernas +ingrediensers +ingrep +ingrepp +ingreppen +ingreppens +ingreppet +ingreppets +ingress +ingressen +ingressens +ingresser +ingresserna +ingressernas +ingressers +ingrid +ingrids +ingrip +ingripa +ingripande +ingripanden +ingripandena +ingripandenas +ingripandens +ingripandes +ingripandet +ingripandets +ingripas +ingriper +ingripit +ingrodd +ingrodda +ingrott +ingvar +ingvars +inhemsk +inhemska +inhemske +inhemskt +inhopp +inhoppare +inhopparen +inhopparens +inhoppares +inhopparna +inhopparnas +inhoppen +inhoppens +inhoppet +inhoppets +inhuman +inhumana +inhumant +inhyrd +inhyrda +inhyrde +inhyrt +inhys +inhysa +inhysas +inhyser +inhyses +inhyst +inhyste +inhystes +inhysts +initiation +initiationen +initiationens +initiationer +initiationerna +initiationernas +initiationers +initiations +initiationsrit +initiationsriten +initiationsritens +initiationsriter +initiationsriterna +initiationsriternas +initiationsriters +initiationsrits +initiativ +initiativen +initiativens +initiativet +initiativets +initiativs +initiativtagare +initiativtagaren +initiativtagarens +initiativtagares +initiativtagarna +initiativtagarnas +initiera +initierad +initierade +initierades +initierande +initierar +initieras +initierat +initierats +initiering +initieringar +initieringarna +initieringarnas +initieringars +initieringen +initieringens +initierings +injektion +injektionen +injektionens +injektioner +injektionerna +injektionernas +injektioners +injektions +injicera +injicerad +injicerade +injicerades +injicerande +injicerar +injiceras +injicerat +injicerats +injicering +injiceringar +injiceringarna +injiceringarnas +injiceringars +injiceringen +injiceringens +injicerings +inka +inkan +inkans +inkarnation +inkarnationen +inkarnationens +inkarnationer +inkarnationerna +inkarnationernas +inkarnationers +inkarnations +inkas +inkassering +inkasseringen +inkasseringens +inkasserings +inkast +inkasta +inkastad +inkastade +inkastades +inkastar +inkastas +inkastat +inkastats +inkasten +inkastens +inkastet +inkastets +inkodning +inkodningar +inkodningarna +inkodningarnas +inkodningars +inkodningen +inkodningens +inkodnings +inkom +inkomma +inkommande +inkommen +inkommer +inkommet +inkommit +inkomna +inkompetens +inkompetensen +inkompetensens +inkompetent +inkompetenta +inkomst +inkomstbringande +inkomsten +inkomstens +inkomster +inkomsterna +inkomsternas +inkomsters +inkomsts +inkomsttagare +inkomsttagaren +inkomsttagarens +inkomsttagares +inkomsttagarna +inkomsttagarnas +inkonsekvens +inkonsekvensen +inkonsekvensens +inkonsekvenser +inkonsekvenserna +inkonsekvensernas +inkonsekvensers +inkonsekvent +inkonsekventa +inkonsistens +inkonsistenser +inkonsistenserna +inkonsistensernas +inkonsistensers +inkonsistent +inkonsistenta +inkontinens +inkontinensen +inkontinensens +inkontinent +inkontinenta +inkorporera +inkorporerad +inkorporerade +inkorporerades +inkorporerar +inkorporeras +inkorporerat +inkorporerats +inkorrekt +inkorrekta +inkrement +inkrementet +inkrementets +inkrements +inkvartering +inkvarteringar +inkvarteringarna +inkvarteringarnas +inkvarteringars +inkvarteringen +inkvarteringens +inkvarterings +inkvisition +inkvisitionen +inkvisitionens +inkvisitions +inmata +inmatad +inmatade +inmatades +inmatande +inmatar +inmatas +inmatat +inmatats +inmatning +inmatningar +inmatningarna +inmatningarnas +inmatningars +inmatningen +inmatningens +inmatnings +inmundiga +inmundigad +inmundigade +inmundigades +inmundigande +inmundigandet +inmundigandets +inmundigar +inmundigas +inmundigat +inmundigats +inmura +inmurad +inmurade +inmurar +inmurat +inmuta +inmutad +inmutade +inmutat +inmutning +inmutningar +inmutningarna +inmutningarnas +inmutningars +inmutningen +inmutningens +inmutnings +innan +innanhav +innanhaven +innanhavens +innanhavet +innanhavets +inne +innebar +innebo +innebodde +inneboddes +inneboende +innebor +innebos +innebott +innebotts +inneburit +innefatta +innefattad +innefattade +innefattades +innefattande +innefattar +innefattas +innefattat +innefattats +inneha +innehade +innehades +innehaft +innehafts +innehar +innehas +innehav +innehavare +innehavaren +innehavarens +innehavares +innehavarna +innehavarnas +innehaven +innehavens +innehavet +innehavets +innehavs +innekrets +innekretsar +innekretsarna +innekretsarnas +innekretsars +innekretsen +innekretsens +inner +innerficka +innerfickan +innerfickans +innerfickor +innerfickorna +innerfickornas +innerfickors +innern +innerns +innerst +innersta +innerstad +innerstaden +innerstadens +innerstads +innevarande +innovation +innovationen +innovationens +innovationer +innovationerna +innovationernas +innovationers +innovations +inom +inombords +inombordsmotor +inombordsmotorer +inombordsmotorerna +inombordsmotorernas +inombordsmotorers +inombordsmotorn +inombordsmotorns +inomhus +inomhusbruk +inopererad +inopererade +inopererat +inordna +inordnad +inordnade +inordnades +inordnande +inordnar +inordnas +inordnat +inordnats +inordning +inordningen +inordningens +inordnings +inpacka +inpackad +inpackade +inpackades +inpackar +inpackas +inpackat +inpackats +inpassad +inpassade +inpassat +inpassering +inpasseringen +inpasseringens +inpasserings +inpiskad +inpiskade +inpiskat +inrama +inramad +inramade +inramades +inramar +inramas +inramat +inramats +inramning +inramningar +inramningarna +inramningarnas +inramningars +inramningen +inramningens +inramnings +inrangera +inrangerad +inrangerade +inrangerades +inrangerar +inrangeras +inrangerat +inrangerats +inrapportera +inrapporterad +inrapporterade +inrapporterades +inrapporterar +inrapporteras +inrapporterat +inrapporterats +inrar +inrarna +inrarnas +inrars +inre +inred +inreda +inredande +inredandet +inredandets +inredare +inredaren +inredarens +inredares +inredarna +inredarnas +inredas +inredd +inredda +inredde +inreddes +inreder +inredning +inredningar +inredningarna +inredningarnas +inredningars +inredningen +inredningens +inrednings +inreds +inregistrerad +inregistrerade +inregistrerat +inregistrering +inregistreringen +inregistreringens +inregistrerings +inresa +inresan +inresans +inresor +inresorna +inresornas +inresors +inrett +inretts +inrikes +inrikesminister +inrikesministern +inrikesministerns +inrikesministers +inrikesministrar +inrikesministrarna +inrikesministrarnas +inrikesministrars +inrikta +inriktad +inriktade +inriktades +inriktar +inriktas +inriktat +inriktats +inriktning +inriktningar +inriktningarna +inriktningarnas +inriktningars +inriktningen +inriktningens +inriktnings +inrista +inristad +inristade +inristades +inristar +inristas +inristat +inristats +inrop +inropa +inropad +inropade +inropades +inropande +inropandet +inropandets +inropar +inropare +inroparen +inroparens +inropares +inroparna +inroparnas +inropas +inropat +inropats +inropen +inropens +inropet +inropets +inrotad +inrotade +inrotat +inrusande +inrutad +inrutade +inrutat +inrym +inrymd +inrymda +inrymde +inrymdes +inrymma +inrymmande +inrymmandet +inrymmandets +inrymmas +inrymmer +inrymmes +inryms +inrymt +inrymts +insats +insatsen +insatsens +insatser +insatserna +insatsernas +insatsers +insatt +insatta +insatte +insattes +inse +insedd +insedda +inseende +insekt +insekten +insektens +insekter +insekterna +insekternas +insekters +insekts +insemination +inseminationen +inseminationens +inseminationer +inseminationerna +inseminationernas +inseminationers +inseminations +inser +inses +insett +insetts +insida +insidan +insidans +insidas +insider +insidern +insiderns +insiders +insides +insidor +insidorna +insidornas +insidors +insikt +insikten +insiktens +insikter +insikterna +insikternas +insikters +insikts +insinuant +insinuanta +insinuation +insinuationen +insinuationens +insinuationer +insinuationerna +insinuationernas +insinuationers +insinuations +insinuera +insinuerad +insinuerade +insinuerades +insinuerar +insinueras +insinuerat +insinuerats +insistera +insisterade +insisterades +insisterar +insisteras +insisterat +insisterats +insjuken +insjuket +insjukna +insjuknad +insjuknade +insjuknande +insjuknanden +insjuknandena +insjuknandenas +insjuknandens +insjuknandet +insjuknandets +insjuknar +insjuknat +inskickad +inskickade +inskickat +inskifta +inskiftad +inskiftade +inskiftades +inskiftar +inskiftas +inskiftat +inskiftats +inskjuta +inskjuten +inskjuter +inskjutet +inskjutit +inskjutna +inskrev +inskrevs +inskrift +inskriften +inskriftens +inskrifter +inskrifterna +inskrifternas +inskrifters +inskription +inskriptionen +inskriptionens +inskriptioner +inskriptionerna +inskriptionernas +inskriptioners +inskriptions +inskriva +inskrivare +inskrivaren +inskrivarens +inskrivares +inskrivarna +inskrivarnas +inskrivas +inskriven +inskriver +inskrivet +inskrivit +inskrivits +inskrivna +inskrivning +inskrivningar +inskrivningarna +inskrivningarnas +inskrivningars +inskrivningen +inskrivningens +inskrivnings +inskrivs +insmickrande +insomnad +insomnade +insomnat +insortering +insorteringen +insorteringens +insorterings +inspektera +inspekterad +inspekterade +inspekterades +inspekterande +inspekterar +inspekteras +inspekterat +inspekterats +inspektion +inspektionen +inspektionens +inspektioner +inspektionerna +inspektionernas +inspektioners +inspektions +inspiration +inspirationen +inspirationens +inspirations +inspirera +inspirerad +inspirerade +inspirerades +inspirerande +inspirerar +inspireras +inspirerat +inspirerats +insprirerad +insprirerade +insprirerat +insprutare +insprutaren +insprutarens +insprutares +insprutarna +insprutarnas +insprutning +insprutningar +insprutningarna +insprutningarnas +insprutningars +insprutningen +insprutningens +insprutnings +instans +instansen +instansens +instanser +instanserna +instansernas +instansers +insteg +insteget +instegets +instifta +instiftad +instiftade +instiftades +instiftande +instiftar +instiftare +instiftaren +instiftarens +instiftares +instiftarna +instiftarnas +instiftas +instiftat +instiftats +instinkt +instinkten +instinktens +instinkter +instinkterna +instinkternas +instinkters +instinktiv +instinktiva +instinktivt +instinkts +institut +instituten +institutens +institutet +institutets +institution +institutionen +institutionens +institutioner +institutionerna +institutionernas +institutioners +institutions +instituts +instoppad +instoppade +instoppat +instorma +instormade +instormande +instormar +instormat +instruera +instruerad +instruerade +instruerades +instruerar +instrueras +instruerat +instruerats +instruktion +instruktionen +instruktionens +instruktioner +instruktionerna +instruktionernas +instruktioners +instruktions +instruktionsbok +instruktionsboken +instruktionsbokens +instruktionsboks +instruktiv +instruktiva +instruktivt +instrument +instrumenten +instrumentens +instrumentering +instrumenteringar +instrumenteringarna +instrumenteringarnas +instrumenteringars +instrumenteringen +instrumenteringens +instrumenterings +instrumentet +instrumentets +instruments +insup +insupa +insupas +insuper +insupit +insupits +insups +insvep +insvepa +insvepas +insveper +insveps +insvept +insvepte +insveptes +insvepts +insydd +insydda +insyn +insynen +insynens +insytt +inta +intag +intaga +intagande +intagandet +intagandets +intagas +intagen +intager +intages +intaget +intagets +intagit +intagits +intagna +intagnas +intagne +intagnes +intagning +intagningar +intagningarna +intagningarnas +intagningars +intagningen +intagningens +intagnings +intakt +intakta +intar +intas +inte +inteckna +intecknad +intecknade +intecknades +intecknande +intecknandet +intecknandets +intecknar +intecknas +intecknat +intecknats +inteckning +inteckningar +inteckningarna +inteckningarnas +inteckningars +inteckningen +inteckningens +intecknings +integrand +integranden +integrandens +integrander +integranderna +integrandernas +integranders +integration +integrationen +integrationens +integrations +integrera +integrerad +integrerade +integrerades +integrerande +integrerar +integreras +integrerat +integrerats +integrering +integreringen +integreringens +integrerings +integritet +integriteten +integritetens +intendent +intendenten +intendentens +intendenter +intendenterna +intendenternas +intendenters +intendents +intensifiera +intensifierad +intensifierade +intensifierades +intensifierar +intensifieras +intensifierat +intensifierats +intensitet +intensiteten +intensitetens +intensiv +intensiva +intensivare +intensivast +intensivaste +intensive +intensiven +intensivens +intensivt +intention +intentionen +intentionens +intentioner +intentionerna +intentionernas +intentioners +intentions +interaktion +interaktionen +interaktionens +interaktions +interaktiv +interaktiva +interaktivt +interferens +interferensen +interferensens +interferenser +interferenserna +interferensernas +interferensers +interjektion +interjektionen +interjektionens +interjektioner +interjektionerna +interjektionernas +interjektioners +interjektions +intermezzo +intermezzon +intermezzona +intermezzonas +intermezzons +intermezzos +intermezzot +intermezzots +intermittent +intern +interna +internat +internaten +internatens +internatet +internatets +internen +internens +interner +internera +internerad +internerade +internerades +internerar +interneras +internerat +internerats +internerna +internernas +interners +internnummmer +internt +interpretation +interpretationen +interpretationens +interpretationer +interpretationerna +interpretationernas +interpretationers +interpretations +interpretator +interpretatorn +interpretatorns +interpretators +interpunktion +interpunktionen +interpunktionens +interpunktions +intervenera +intervenerade +intervenerande +intervenerar +intervenerat +intervention +interventionen +interventionens +interventioner +interventionerna +interventionernas +interventioners +interventions +intervju +intervjua +intervjuad +intervjuade +intervjuades +intervjuande +intervjuandet +intervjuandets +intervjuar +intervjuare +intervjuaren +intervjuarens +intervjuares +intervjuarna +intervjuarnas +intervjuas +intervjuat +intervjuats +intervjuer +intervjuerna +intervjuernas +intervjuers +intervjun +intervjuns +intervjus +intet +intig +intiga +intighet +intigheten +intighetens +intigt +intim +intima +intimare +intimast +intimaste +intime +intimitet +intimiteten +intimitetens +intimiteter +intimiteterna +intimiteternas +intimiteters +intimt +intog +intogs +intonation +intonationen +intonationens +intonationer +intonationerna +intonationernas +intonationers +intonations +intorka +intorkad +intorkade +intorkades +intorkar +intorkas +intorkat +intorkats +intransitiv +intransitiva +intransitivt +intressant +intressanta +intressantare +intressantast +intressantaste +intressante +intresse +intressen +intressena +intressenas +intressens +intressent +intressenten +intressentens +intressenter +intressenterna +intressenternas +intressenters +intressera +intresserad +intresserade +intresserades +intresserar +intresseras +intresserat +intresserats +intresses +intresset +intressets +intrig +intrigant +intriganta +intrigen +intrigens +intriger +intrigera +intrigerade +intrigerades +intrigerande +intrigerandet +intrigerandets +intrigerar +intrigeras +intrigerat +intrigerats +intrigerna +intrigernas +intrigers +intrikat +intrikata +intrikatare +intrikatast +intrikataste +introducera +introducerad +introducerade +introducerades +introducerande +introducerandet +introducerandets +introducerar +introduceras +introducerat +introducerats +introduktion +introduktionen +introduktionens +introduktioner +introduktionerna +introduktionernas +introduktioners +introduktions +introspektion +introspektionen +introspektionens +introspektions +introvert +introverta +intryck +intrycken +intryckens +intrycket +intryckets +intrycks +intryckt +intryckta +intuition +intuitionen +intuitionens +intuitions +intuitiv +intuitiva +intuitivare +intuitivast +intuitivaste +intuitivt +intyg +intyga +intygad +intygade +intygades +intygande +intygandet +intygandets +intygar +intygas +intygat +intygats +intygen +intygens +intyget +intygets +intygs +inunder +inuti +invadera +invaderad +invaderade +invaderades +invaderande +invaderar +invaderas +invaderat +invaderats +invagga +invaggad +invaggade +invaggades +invaggande +invaggandet +invaggandets +invaggar +invaggas +invaggat +invaggats +invand +invanda +invandra +invandrad +invandrade +invandrades +invandrande +invandrandet +invandrandets +invandrar +invandrare +invandraren +invandrarens +invandrares +invandrarminister +invandrarministern +invandrarministerns +invandrarministers +invandrarministrar +invandrarministrarna +invandrarministrarnas +invandrarministrars +invandrarna +invandrarnas +invandras +invandrat +invandrats +invandring +invandringen +invandringens +invandrings +invant +invariant +invarianta +invasion +invasionen +invasionens +invasioner +invasionerna +invasionernas +invasioners +invasions +invektiv +invektiven +invektivens +invektivet +invektivets +inventarier +inventarierna +inventariernas +inventariers +inventariet +inventariets +inventarium +inventera +inventerad +inventerade +inventerades +inventerar +inventeras +inventerat +inventerats +inventering +inventeringar +inventeringarna +inventeringarnas +inventeringars +inventeringen +inventeringens +inventerings +inverka +inverkad +inverkade +inverkades +inverkan +inverkande +inverkandet +inverkandets +inverkar +inverkas +inverkat +inverkats +inverkning +inverkningar +inverkningarna +inverkningarnas +inverkningars +invers +inversen +inversens +inverser +inverserna +inversernas +inversers +inversion +inversionen +inversionens +inversions +invertera +inverterad +inverterade +inverterades +inverterande +inverterandet +inverterandets +inverterar +inverterare +inverteraren +inverterarens +inverterares +inverterarna +inverterarnas +inverteras +inverterat +inverterats +investera +investerad +investerade +investerades +investerar +investeras +investerat +investerats +investering +investeringar +investeringarna +investeringarnas +investeringars +investeringen +investeringens +investerings +invid +invig +inviga +invigande +invigandet +invigandets +invigas +invigd +invigda +invigdas +invigde +invigdes +inviger +inviges +invigning +invigningar +invigningarna +invigningarnas +invigningars +invigningen +invigningens +invignings +invigs +invigt +invigts +invit +invitation +invitationen +invitationens +invitationer +invitationerna +invitationernas +invitationers +invitations +inviten +invitens +inviter +inviterna +inviternas +inviters +invokation +invokationen +invokationens +invokations +inympa +inympad +inympade +inympades +inympas +inympat +inympats +iordning +irak +irakier +irakiern +irakierna +irakiernas +irakierns +irakiers +irakisk +irakiska +irakiske +irakiskt +iraks +iran +iranier +iraniern +iranierna +iraniernas +iranierns +iraniers +irans +iransk +iranska +iranske +iranskt +irene +irenes +irisk +iriska +iriskt +ironi +ironier +ironierna +ironiernas +ironiers +ironin +ironins +ironisera +ironiserade +ironiserades +ironiserande +ironiserar +ironiseras +ironiserat +ironiserats +ironisk +ironiska +ironiske +ironiskt +irra +irrade +irrades +irrande +irrandet +irrandets +irrar +irras +irrat +irrats +irritation +irritationen +irritationens +irritations +irritera +irriterad +irriterade +irriterades +irriterande +irriterandet +irriterandets +irriterar +irriteras +irriterat +irriterats +isa +isacsson +isacssons +isad +isade +isades +isaksson +isakssons +isande +isandet +isandets +isar +isarna +isarnas +isars +isas +isat +isats +isatt +isatta +isberg +isbergen +isbergens +isberget +isbergets +isbergs +isbit +isbitar +isbitarna +isbitarnas +isbitars +isbiten +isbitens +isbits +isbrytare +isbrytaren +isbrytarens +isbrytares +isbrytarna +isbrytarnas +iscensatt +iscensatta +iscensatte +iscensattes +iscensatts +isen +isens +ishav +ishaven +ishavens +ishavet +ishavets +ishavs +ishockey +ishockeyn +ishockeyns +ishockeys +isig +isiga +isigt +ism +ismen +ismens +ismer +ismerna +ismernas +ismers +isotop +isotopen +isotopens +isotoper +isotoperna +isotopernas +isotopers +isotops +isstycke +isstycken +isstyckena +isstyckenas +isstyckens +isstycket +isstyckets +istapp +istappar +istapparna +istapparnas +istappars +istappen +istappens +ister +istid +istiden +istidens +istider +istiderna +istidernas +istiders +istids +istret +istrets +isvatten +isvattnet +isvattnets +isynnerhet +iteration +iterationen +iterationens +iterationer +iterationerna +iterationernas +iterationers +iterations +iterativ +iterativa +iterativt +itts +itu +ity +ivan +ivans +ivar +ivars +iver +ivern +iverns +ivers +ivra +ivrade +ivrades +ivrar +ivrare +ivraren +ivrarens +ivrares +ivrarna +ivrarnas +ivras +ivrat +ivrats +ivrig +ivriga +ivrigare +ivrigas +ivrigast +ivrigaste +ivrige +ivriges +ivrigt +jack +jacka +jackan +jackans +jackas +jacken +jackens +jacket +jackets +jackor +jackorna +jackornas +jackors +jacob +jacobs +jag +jaga +jagad +jagade +jagades +jagande +jagandet +jagandets +jagar +jagare +jagaren +jagarens +jagares +jagarna +jagarnas +jagas +jagat +jagats +jaget +jagets +jaguar +jaguaren +jaguarens +jaguarer +jaguarerna +jaguarernas +jaguarers +jaha +jak +jaka +jakade +jakades +jakande +jakandet +jakandets +jakar +jakarna +jakarnas +jakars +jakas +jakat +jakats +jaken +jakens +jakob +jakobs +jakobsberg +jakobsbergs +jakt +jakten +jaktens +jakter +jakterna +jakternas +jakters +jaktstyrka +jaktstyrkan +jaktstyrkans +jaktstyrkor +jaktstyrkorna +jaktstyrkornas +jaktstyrkors +jama +jamade +jamaica +jamaicas +jamande +jamar +jamat +jan +janne +jannes +janos +jans +januari +januaris japan +japanen +japanens +japaner +japanerna +japanernas +japaners +japans +japansk +japanska +japanskan +japanskans +japanske +japanskor +japanskorna +japanskornas +japanskors +japanskt +jargong +jargongen +jargongens +jargonger +jargongerna +jargongernas +jargongers +jargongs +jasmin +jasminen +jasminens +jasminer +jasminerna +jasminernas +jasminers +jaspis +jaspisar +jaspisarna +jaspisarnas +jaspisars +jaspisen +jaspisens +javisst +jazz +jazzen +jazzens +jeanette +jeanettes +jeans +jeansen +jeansens +jeep +jeepar +jeeparna +jeeparnas +jeepars +jeepen +jeepens +jeeps +jehu +jenny +jennys +jens +jernberg +jernbergs +jesper +jessica +jessicas +jesu +jesuit +jesuiten +jesuitens +jesuiter +jesuiterna +jesuiternas +jesuiters +jesus +jetmotor +jetmotorer +jetmotorerna +jetmotorernas +jetmotorers +jetmotorn +jetmotorns +jiddisch +jiddischen +jiddischens +jimmy +jimmys +jippo +jippon +jippons +jippos +jippot +jippots +joachim +joachims +joakim +joakims +jobb +jobba +jobbade +jobbar +jobbare +jobbaren +jobbarens +jobbares +jobbarna +jobbarnas +jobbat +jobben +jobbens +jobbet +jobbets +jobbig +jobbiga +jobbigare +jobbigast +jobbigaste +jobbigt +jobbs +jockey +jockeyn +jockeyns +jockeys +jod +joden +jodens +jogga +joggade +joggande +joggar +joggare +joggaren +joggarens +joggares +joggarna +joggarnas +joggat +joggning +joggningen +joggningens +joggnings +johan +johanna +johannas +johannes +johanneshov +johanneshovs +johannesson +johannessons +johannishus +johannisson +johannissons +johans +johansson +john +johns +jojo +jojon +jojons +jojor +jojorna +jojornas +jojors +joker +jokern +jokerns +jokers +jokkmokk +jokkmokks +jokrar +jokrarna +jokrarnas +jokrars +jon +jonas +jonasson +jonassons +jonen +jonens +joner +jonerna +jonernas +joners +jones +jonisera +joniserade +joniserande +joniserar +joniserat +jonny +jonnys +jons +jonsered +jonsereds +jonsson +jonssons +jonstorp +jonstorps +jord +jorda +jordad +jordade +jordades +jordagods +jordanien +jordaniens +jordansk +jordanska +jordanske +jordanskt +jordar +jordarna +jordarnas +jordars +jordas +jordat +jordats +jordbruk +jordbrukare +jordbrukaren +jordbrukarens +jordbrukares +jordbrukarna +jordbrukarnas +jordbruket +jordbrukets +jordbruks +jordbruksbygd +jordbruksbygder +jordbruksbygderna +jordbruksbygdernas +jordbruksbygders +jorden +jordens +jordgubbar +jordgubbarna +jordgubbarnas +jordgubbars +jordgubbe +jordgubben +jordgubbens +jordgubbes +jordisk +jordiska +jordiske +jordiskt +jordrike +jordriket +jordrikets +jords +jordyta +jordytan +jordytans +josef +josefin +josefina +josefinas +josefins +josefs +jour +jouren +jourens +jourer +jourerna +jourernas +jourers +jourhavande +jovisst +judakonung +judakonungar +judakonungarna +judakonungarnas +judakonungars +judakonungen +judakonungens +judar +judarna +judarnas +judars +jude +judekristen +judekristet +judekristna +juden +judendom +judendomen +judendomens +judendoms +judens +judes +judinna +judinnan +judinnans +judinnas +judinnor +judinnorna +judinnornas +judinnors +judisk +judiska +judiske +judiskt +judit +judits +judo +juice +juicen +juicens +juicer +juicerna +juicernas +juicers +jukebox +jukeboxar +jukeboxarna +jukeboxarnas +jukeboxars +jukeboxen +jukeboxens +jumbo +jumbon +jumbons +jumper +jumpern +jumperns +jumpers +jumprar +jumprarna +jumprarnas +jumprars +jungfru +jungfrun +jungfruns +jungfrur +jungfrurna +jungfrurnas +jungfrurs +jungfrus +jungman +juni +junior +junioren +juniorens +juniorer +juniorerna +juniorernas +juniorers +juniors +junis +junker +junkern +junkerns +junkrar +junkrarna +junkrars +junosuando +junosuandos +junta +juntan +juntans +juntor +juntorna +juntornas +juntors +juoksengi +juoksengis +jupiter +jupiters +juridik +juridiken +juridikens +juridisk +juridiska +juridiske +juridiskt +jurisdiktion +jurisdiktionen +jurisdiktionens +jurisdiktions +jurist +juristen +juristens +jurister +juristerna +juristernas +juristers +jurists +jury +juryer +juryerna +juryernas +juryers +juryn +juryns +jurys +just +justera +justerad +justerade +justerades +justerar +justeras +justerat +justerats +justering +justeringar +justeringarna +justeringarnas +justeringars +justeringen +justeringens +justerings +justeringsman +justeringsmannen +justeringsmannens +justeringsmans +justitiedepartement +justitiedepartementen +justitiedepartementens +justitiedepartementet +justitiedepartementets +justitiedepartements +justitieminister +justitieministern +justitieministerns +justitieministers +justitieministrar +justitieministrarna +justitieministrarnas +justitieministrars +kabin +kabinen +kabinens +kabiner +kabinerna +kabinernas +kabiners +kabinett +kabinetter +kabinetterna +kabinetternas +kabinetters +kabinettet +kabinettets +kabinetts +kabyss +kabyssen +kabyssens +kabysser +kabysserna +kabyssernas +kabyssers +kadaver +kadavren +kadavrens +kadavret +kadavrets +kadens +kadensen +kadensens +kadenser +kadenserna +kadensernas +kadensers +kader +kadern +kaderns +kadett +kadetten +kadettens +kadetter +kadetterna +kadetternas +kadetters +kadrar +kadrarna +kadrarnans +kadrars +kadrer +kadrerna +kadrernas +kadrers +kaffe +kafferast +kafferasten +kafferastens +kafferaster +kafferasterna +kafferasternas +kafferasters +kafferasts +kaffes +kaffet +kaffets kaj +kaja +kajak +kajaken +kajakens +kajaker +kajakerna +kajakernas +kajakers +kajan +kajans +kajas +kajen +kajens +kajer +kajerna +kajernas +kajers +kajor +kajorna +kajornas +kajors kajs +kajsa +kajsas +kajuta +kajutan +kajutans +kajutas +kajutor +kajutorna +kajutornas +kajutors +kaka +kakadu +kakaduer +kakaduerna +kakaduernas +kakaduers +kakadun +kakaduns +kakadus +kakan +kakans +kakao +kakofoni +kakofonier +kakofonierna +kakofoniernas +kakofoniers +kakofonin +kakofonins +kakor +kakorna +kakornas +kakors +kaktus +kaktusar +kaktusarna +kaktusarnas +kaktusars +kaktusen +kaktusens +kam +kambrisk +kambriska +kambriskt +kamera +kameran +kamerans +kameror +kamerorna +kamerornas +kamerors +kamerun +kameruns +kamfer +kamfern +kamferns +kamfers +kamin +kaminen +kaminens +kaminer +kaminerna +kaminernas +kaminers +kamins +kamma +kammad +kammade +kammades +kammar +kammare +kammaren +kammarens +kammares +kammarna +kammarnas +kammars +kammarskrivare +kammarskrivaren +kammarskrivarens +kammarskrivares +kammarskrivarna +kammarskrivarnas +kammas +kammat +kammats +kammen +kammens +kamp +kampanj +kampanjen +kampanjens +kampanjer +kampanjerna +kampanjernas +kampanjers +kampen +kampens +kamper +kampera +kamperade +kamperande +kamperar +kamperat +kamperna +kampernas +kampers +kampsport +kampsporten +kampsportens +kampsporter +kampsporterna +kampsporternas +kampsporters +kamrar +kamrarna +kamrarnas +kamrars +kamrat +kamraten +kamratens +kamrater +kamraterna +kamraternas +kamraters +kamrats +kamratskap +kamratskapet +kamratskapets +kamratskaps +kamrer +kamreren +kamrerens +kamrerer +kamrererna +kamrerernas +kamrerers +kamrern +kamrerns +kamrers +kams +kan +kana +kanada +kanadas +kanade +kanadensare +kanadensaren +kanadensarens +kanadensares +kanadensarna +kanadensarnas +kanadensisk +kanadensiska +kanadensiskan +kanadensiskans +kanadensiske +kanadensiskor +kanadensiskorna +kanadensiskornas +kanadensiskors +kanadensiskt +kananeisk +kananeiska +kananeiskt +kanar +kanat +kandidat +kandidaten +kandidatens +kandidater +kandidaterna +kandidaternas +kandidaters +kandidats +kandidatur +kandidaturen +kandidaturens +kandidaturer +kandidaturerna +kandidaturernas +kandidaturers +kandidera +kandiderade +kandiderar +kandiderat +kangos +kanin +kaninen +kaninens +kaniner +kaninerna +kaninernas +kaniners +kanins +kanna +kannan +kannans +kannor +kannorna +kannornas +kannors +kanon +kanonad +kanonaden +kanonadens +kanonader +kanonaderna +kanonadernas +kanonaders +kanonen +kanonens +kanoner +kanonerna +kanonernas +kanoners +kanonisk +kanoniska +kanoniskt +kanons +kanot +kanoten +kanotens +kanoter +kanoterna +kanoternas +kanoters +kanots +kanske +kant +kanta +kantad +kantade +kantades +kantar +kantas +kantat +kantaten +kantatens +kantater +kantaterna +kantaternas +kantaters +kantats +kanten +kantens +kanter +kanterna +kanternas +kanters +kantig +kantiga +kantigare +kantigast +kantigaste +kantigt +kanton +kantonen +kantonens +kantoner +kantonerna +kantonernas +kantoners +kantor +kantorn +kantorns +kantors +kantra +kantrade +kantrande +kantrar +kantrat +kaos +kaoset +kaosets +kaotisk +kaotiska +kaotiskt kap +kapa +kapacitans +kapacitet +kapaciteten +kapacitetens +kapaciteter +kapaciteterna +kapaciteternas +kapaciteters +kapad +kapade +kapades +kapar +kapare +kaparen +kaparens +kapares +kaparna +kaparnas +kapas +kapat +kapats +kapen +kapens +kapet +kapets +kapning +kapningar +kapningarna +kapningarnas +kapningars +kapningen +kapningens +kapnings +kapp +kappa +kappan +kappans +kappor +kapporna +kappornas +kappors +kapsejsa +kapsejsad +kapsejsade +kapsejsar +kapsejsat +kapten +kaptenen +kaptenens +kaptener +kaptenerna +kaptenernas +kapteners +kaptens +kaputt +kaputta +kar +karaff +karaffen +karaffens +karaffer +karafferna +karaffernas +karaffers +karaffs +karakterisera +karakteriserad +karakteriserade +karakteriserades +karakteriserande +karakteriserandet +karakteriserandets +karakteriserar +karakteriseras +karakteriserat +karakteriserats +karakterisering +karakteriseringar +karakteriseringarna +karakteriseringarnas +karakteriseringars +karakteriseringen +karakteriseringens +karakteriserings +karakteristik +karakteristika +karakteristiken +karakteristikens +karakteristiker +karakteristikerna +karakteristikernas +karakteristikers +karakteristiks +karakteristisk +karakteristiska +karakteristiskt +karat +karate +karaten +karatens +karats +karda +kardad +kardade +kardades +kardande +kardandet +kardandets +kardar +kardas +kardat +kardats +kardborrar +kardborrarna +kardborrarnas +kardborrars +kardborre +kardborren +kardborrens +kardemumma +kardemumman +kardemummans +kardemummas +karen +karens +karensdag +karensdagar +karensdagarna +karensdagarnas +karensdagars +karensdagen +karensdagens +karensdags +karensen +karensens +karenstid +karenstiden +karenstidens +karesuando +karesuandos +karet +karets +karg +karga +kargare +kargast +kargaste +kargt +karikatyr +karikatyren +karikatyrens +karikatyrer +karikatyrerna +karikatyrernas +karikatyrers +karikatyrs +karikera +karikerad +karikerade +karikerande +karikerar +karikerat +karikerats +karin +karins +karisma +karisman +karismans +karm +karma +karman +karmans +karmar +karmarna +karmarnas +karmars +karmas +karmen +karmens +karms +kaross +karossen +karossens +karosser +karosserna +karossernas +karossers +karott +karotten +karottens +karotter +karotternas +karp +karpar +karparna +karparnas +karpars +karpen +karpens +karps +kars +karsk +karska +karskade +karskar +karskare +karskas +karskast +karskaste +karskat +karske +karskes +karskt +kart +karta +kartan +kartans +kartering +karteringen +karteringens +karterings +kartesisk +kartesiska +kartesiskt +kartong +kartongen +kartongens +kartonger +kartongerna +kartongernas +kartongers +kartongs +kartor +kartorna +kartornas +kartors +kartotek +kartoteken +kartotekens +kartoteket +kartotekets +kartoteks +kartskiss +kartskissen +kartskissens +kartskisser +kartskisserna +kartskissernas +kartskissers +karttecken +kartteckens +karttecknen +karttecknens +karttecknet +karttecknets +karungi +karungis +karup +karups +karva +karvad +karvade +karvades +karvar +karvas +karvat +karvats +kasern +kasernen +kasernens +kaserner +kasernerna +kasernernas +kaserners +kaskad +kaskaden +kaskadens +kaskader +kaskaderna +kaskadernas +kaskaders +kassa +kassan +kassans +kassar +kassarna +kassarnas +kassars +kasse +kassen +kassens +kassera +kasserad +kasserade +kasserades +kasserar +kasseras +kasserat +kasserats +kassett +kassetten +kassettens +kassetter +kassetterna +kassetternas +kassetters +kassor +kassorna +kassornas +kassors +kast +kasta +kastad +kastade +kastades +kastanj +kastanjen +kastanjens +kastanjer +kastanjerna +kastanjernas +kastanjers +kastar +kastare +kastaren +kastarens +kastares +kastarna +kastarnas +kastas +kastat +kastats +kasten +kastens +kaster +kasterna +kasternas +kasters +kastet +kastets +kastrat +kastraten +kastratens +kastrater +kastraterna +kastraternas +kastraters +kastrera +kastrerad +kastrerade +kastrerades +kastrerar +kastreras +kastrerat +kastrerats +kastrering +kastreringar +kastreringarna +kastreringarnas +kastreringars +kastreringen +kastreringens +kastrerings +kasus +katakomb +katakomben +katakombens +katakomber +katakomberna +katakombernas +katakombers +katarina +katarinas +katarr +katarren +katarrens +katarrer +katarrerna +katarrernas +katarrers +katastrof +katastrofen +katastrofens +katastrofer +katastroferna +katastrofernas +katastrofers +katastrofs +kateder +katedern +katederns +kateders +katedrar +katedrarna +katedrarnas +katedrars +kategori +kategorien +kategoriens +kategorier +kategorierna +kategoriernas +kategoriers +kategorin +kategorins +kategoris +kategorisera +kategoriserad +kategoriserade +kategoriserades +kategoriserar +kategoriseras +kategoriserat +kategoriserats +kategorisering +kategoriseringar +kategoriseringarna +kategoriseringarnas +kategoriseringars +kategoriseringen +kategoriseringens +kategoriserings +kategorisk +kategoriska +kategoriskt +katekes +katekesen +katekesens +katekeser +katekeserna +katekesernas +katekesers +kateter +katetern +kateterns +katetrar +katetrarna +katetrarnas +katetrars +katrin +katt +kattarp +kattarps +kattegatt +kattegatts +katten +kattens +katter +katterna +katternas +katters +katts +kautschuk +kautschuken +kautschukens +kavaj +kavajen +kavajens +kavajer +kavajerna +kavajernas +kavajers +kavajs +kaviar +kaviarn +kaviarns +kaxig +kaxiga +kaxigare +kaxigast +kaxigaste +kaxige +kaxigt +kazachstan +kazachstans +kebab +kedja +kedjad +kedjade +kedjades +kedjan +kedjans +kedjar +kedjas +kedjat +kedjats +kedjereaktion +kedjereaktionen +kedjereaktionens +kedjereaktioner +kedjereaktionerna +kedjereaktionernas +kedjereaktioners +kedjereaktions +kedjor +kedjorna +kedjornas +kedjors +kejsare +kejsaren +kejsarens +kejsares +kejsarinna +kejsarinnan +kejsarinnans +kejsarinnor +kejsarinnorna +kejsarinnornas +kejsarinnors +kejsarna +kejsarnas +kemi +kemin +kemins +kemisk +kemiska +kemiskt +kemist +kemisten +kemistens +kemister +kemisterna +kemisternas +kemisters +kemists +kenneth +kenneths +kenny +kennys +kent +kents +kenya +kenyas +keps +kepsar +kepsarna +kepsarnas +kepsars +kepsen +kepsens +keramik +keramiken +keramikens +keramiker +keramikern +keramikerna +keramikernas +keramikerns +keramikers +keramisk +keramiska +keramiskt +kerstin +kerstins +kerub +keruben +kerubens +keruber +keruberna +kerubernas +kerubers +keso +keson +kesons +ketchup +ketchupen +ketchupens +kex +kexen +kexens +kexet +kexets +khmer +khmeren +khmerens +khmerer +khmererna +khmerernas +khmerers +kibbutz +kibbutzen +kibbutzens +kibbutzer +kibbutzerna +kibbutzernas +kibbutzers +kid +kiden +kidens +kidet +kidets +kidnappa +kidnappad +kidnappade +kidnappades +kidnappande +kidnappar +kidnappare +kidnapparen +kidnapparens +kidnappares +kidnapparna +kidnapparnas +kidnappas +kidnappat +kidnappats +kidnappning +kidnappningar +kidnappningarna +kidnappningarnas +kidnappningars +kidnappningen +kidnappningens +kidnappnings +kika +kikade +kikande +kikar +kikare +kikaren +kikarens +kikares +kikarna +kikarnas +kikat +kikna +kiknade +kiknande +kiknar +kiknat +kim +kimono +kimonon +kimonons +kimonor +kimonorna +kimonornas +kimonors +kimonos +kims +kimstad +kimstads +kina +kinas +kind +kinden +kindens +kinder +kinderna +kindernas +kinders +kindknota +kindknotan +kindknotans +kindknotor +kindknotorna +kindknotornas +kindknotors +kines +kinesen +kinesens +kineser +kineserna +kinesernas +kinesers +kinesisk +kinesiska +kinesiskan +kinesiskans +kinesiskas +kinesiskor +kinesiskorna +kinesiskornas +kinesiskors +kinesiskt +kinetisk +kinetiska +kinetiskt +kinkig +kinkiga +kinkigare +kinkigast +kinkigaste +kinkigt +kinna +kinnared +kinnareds +kinnarp +kinnarps +kinnarumma +kinnarummas +kinnas +kiosk +kiosken +kioskens +kiosker +kioskerna +kioskernas +kioskers +kiosks +kirgizistan +kiruna +kirunas +kirurg +kirurgen +kirurgens +kirurger +kirurgerna +kirurgernas +kirurgers +kirurgi +kirurgin +kirurgins +kirurgisk +kirurgiska +kirurgiskt +kirurgs kisa +kisade +kisades +kisande +kisandet +kisandets +kisar kisas +kisat +kisats +kiss +kissa +kissad +kissade +kissades +kissande +kissandet +kissandets +kissar +kissas +kissat +kissats +kisset +kissets kista +kistan +kistans kistas +kistor +kistorna +kistornas +kistors +kitt +kittet +kittets +kiv +kiva +kivade +kivades +kivar +kivas +kivat +kivats +kivet +kivets +kivik +kiviks +kiwi +kiwifrukt +kiwifrukten +kiwifruktens +kiwifrukter +kiwifrukterna +kiwifrukternas +kiwifrukters +kiwifrukts +knacka +knackade +knackades +knackande +knackar +knackas +knackat +knackats +knackig +knackiga +knackigt +knackning +knackningar +knackningarna +knackningarnas +knackningars +knackningen +knackningens +knacknings +knak +knaka +knakade +knakar +knakat +knaket +knakets +knaper +knapert +knapp +knappa +knappar +knappare +knapparna +knapparnas +knappars +knappast +knappaste +knappen +knappens +knapphet +knappheten +knapphetens +knapphets +knapps +knappt +knapra +knaprade +knaprande +knaprar +knaprat +knaprig +knapriga +knaprigt +knark +knarka +knarkade +knarkande +knarkandet +knarkandets +knarkar +knarkare +knarkaren +knarkarens +knarkares +knarkarna +knarkarnas +knarkat +knarket +knarkets +knarks +knarr +knarra +knarrade +knarrades +knarrande +knarrandet +knarrandets +knarrar +knarrarna +knarrarnas +knarrars +knarras +knarrat +knarrats +knarret +knarrets +knasig +knasiga +knasigare +knasigast +knasigaste +knasigt +knaster +knastra +knastrade +knastrades +knastrande +knastrar +knastras +knastrat +knastrats +knastret +knastrets +knastrig +knastriga +knastrigt +knattar +knattarna +knattarnas +knattars +knatte +knatten +knattens +knekt +knektar +knektarna +knektarnas +knektars +knekten +knektens +knekts +knep +knepen +knepens +knepet +knepets +knepig +knepiga +knepigare +knepigast +knepigaste +knepige +knepigt +kneps +knip +knipa +knipan +knipans +knipas +knipen +kniper +knipet +knipets +knipit +knipits +knipna +knipor +kniporna +knipornas +knipors +knippa +knippan +knippans +knippas +knippe +knippen +knippens +knippes +knippet +knippets +knippor +knipporna +knippornas +knippors +knips +knipsa +knipsade +knipsades +knipsar +knipsas +knipsat +knipsats +kniv +knivar +knivarna +knivarnas +knivars +kniven +knivens +knivhugga +knivhuggas +knivhugger +knivhuggit +knivhuggits +knivig +kniviga +knivigare +knivigast +knivigaste +knivigt +knivs +knivsta +knivstas +knock +knocka +knockad +knockade +knockades +knockar +knockarna +knockarnas +knockars +knockas +knockat +knockats +knocken +knockens +knog +knogar +knogarna +knogarnas +knogars +knoge +knogen +knogens +knoges +knoget +knogets +knop +knopar +knoparna +knoparnas +knopars +knopen +knopens +knopp +knoppades +knoppar +knopparna +knopparnas +knoppars +knoppas +knoppats +knoppen +knoppens +knoppningstid +knoppningstider +knoppningstiderna +knoppningstidernas +knoppningstiders +knopps +knops +knorr +knorra +knorrade +knorrande +knorrandet +knorrandets +knorrar +knorrarna +knorrarnas +knorrars +knorrat +knorren +knorrens +knot +knota +knotade +knotan +knotans +knotar +knotat +knotet +knotets +knotig +knotiga +knotigt +knotor +knotorna +knotornas +knotors +knott +knotten +knottens +knottet +knottets +knottra +knottrade +knottrades +knottrar +knottras +knottrat +knottrats +knowhow +knubbig +knubbiga +knubbigt +knuff +knuffa +knuffad +knuffade +knuffades +knuffar +knuffarna +knuffarnas +knuffars +knuffas +knuffat +knuffats +knuffen +knuffens knut +knutar +knutarna +knutarnas +knutars +knutby +knutbys +knuten +knutens +knutet +knutit +knutits +knutna +knuts +knuttar +knuttarna +knuttarnas +knuttars +knutte +knutten +knuttens +knuttes +knyck +knycka +knyckande +knyckar +knyckarna +knyckarnas +knyckars +knyckas +knycken +knyckens +knycker +knyckig +knyckiga +knyckigt +knycks +knyckt +knyckta +knyckte +knycktes +knyckts +knyst +knysta +knystade +knystar +knystarna +knystarnas +knystars +knystat +knysten +knystens +knyt +knyta +knytande +knytas +knyte +knyten +knytena +knytenas +knytens +knyter +knytes +knytet +knytets +knyts +kobbar +kobbarna +kobbarnas +kobbars +kobbe +kobben +kobbens +kobbes +kobra +kobran +kobrans +kobras +kobror +kobrorna +kobrornas +kobrors +kock +kockar +kockarna +kockarnas +kockars +kocken +kockens +kocks +kockums +kod +koda +kodad +kodade +kodades +kodar +kodas +kodat +kodats +kode +koden +kodens +koder +koderna +kodernas +koders +kodes +kodex +kodexar +kodexarna +kodexarnas +kodexars +kodexen +kodexens +kodning +kodningen +kodningens +koefficient +koefficienten +koefficientens +koefficienter +koefficienterna +koefficienternas +koefficienters +koefficients +koffein +koffeinet +koffeinets +koffert +koffertar +koffertarna +koffertarnas +koffertars +kofferten +koffertens +kofferts +kofot +kofotar +kofotarna +kofotarnas +kofotars +kofoten +kofotens +kofots +kofta +koftan +koftans +koftas +koftor +koftorna +koftornas +koftors +koger +kogerna +kogernas +kogers +kognition +kognitionen +kognitionens +kognitions +kognitiv +kognitiva +kognitivt +kogren +kogrens +kogret +kogrets +kohage +kohagen +kohagens +kohort +kohorten +kohortens +kohorter +kohorterna +kohorternas +kohorters +kohorts +koj +koja +kojan +kojans +kojas +kojen +kojens +kojer +kojerna +kojernas +kojers +kojor +kojorna +kojornas +kojors +kojs +kok +koka +kokad +kokade +kokades +kokain +kokainet +kokainets +kokar +kokare +kokaren +kokarens +kokares +kokarna +kokarnas +kokas +kokat +kokats +koken +kokens +koket +kokets +kokettera +koketterade +koketterar +koketterat +koketteri +koketterier +koketterierna +koketteriernas +koketteriers +koketteriet +koketteriets +kokning +kokningen +kokningens +kokong +kokongen +kokongens +kokonger +kokongerna +kokongernas +kokongers +kokos +kokosen +kokosens +kokott +kokotten +kokottens +kokotter +kokotterna +kokotternas +kokotters +kokotts +kokpunkt +kokpunkten +kokpunktens +koks +kokt +kokta +kokte +kom +koma +koman +komans +komas +kombattant +kombattanten +kombattantens +kombattanter +kombattanterna +kombattanternas +kombattanters +kombination +kombinationen +kombinationens +kombinationer +kombinationerna +kombinationernas +kombinationers +kombinations +kombinatorisk +kombinatoriska +kombinatoriskt +kombinera +kombinerad +kombinerade +kombinerades +kombinerar +kombineras +kombinerat +kombinerats +komedi +komedier +komedierna +komediernas +komediers +komedin +komedins +komedis +komet +kometen +kometens +kometer +kometerna +kometernas +kometers +komets +komfort +komforten +komfortens +komik +komiken +komikens +komiker +komikern +komikerna +komikerns +komisk +komiska +komiskt +komma +komman +kommande +kommando +kommandobrygga +kommandobryggan +kommandobryggans +kommandobryggas +kommandobryggor +kommandobryggorna +kommandobryggornas +kommandobryggors +kommandon +kommandona +kommandonas +kommandons +kommandot +kommandots +kommans +kommas +kommat +kommatecken +kommateckens +kommatecknen +kommatecknens +kommatecknet +kommatecknets +kommatera +kommaterad +kommaterade +kommaterades +kommaterar +kommateras +kommaterat +kommaterats +kommatering +kommateringen +kommateringens +kommats +kommen +kommendera +kommenderad +kommenderade +kommenderades +kommenderande +kommenderar +kommenderas +kommenderat +kommenderats +kommentar +kommentaren +kommentarens +kommentarer +kommentarerna +kommentarernas +kommentarers +kommentator +kommentatorer +kommentatorerna +kommentatorernas +kommentatorers +kommentatorn +kommentatorns +kommentators +kommentera +kommenterad +kommenterade +kommenterades +kommenterande +kommenterandet +kommenterandets +kommenterar +kommenteras +kommenterat +kommenterats +kommer +kommers +kommersen +kommersens +kommet +kommissariat +kommissariatet +kommissariatets +kommissarie +kommissarien +kommissariens +kommissarier +kommissarierna +kommissariernas +kommissariers +kommissaries +kommission +kommissionen +kommissionens +kommissioner +kommissionerna +kommissionernas +kommissioners +kommissions +kommit +kommun +kommunen +kommunens +kommuner +kommunerna +kommunernas +kommuners +kommunicera +kommunicerade +kommunicerande +kommunicerar +kommunicerat +kommunikation +kommunikationen +kommunikationens +kommunikationer +kommunikationerna +kommunikationernas +kommunikationers +kommunikations +kommunikativ +kommunikativa +kommunikativt +kommunism +kommunismen +kommunismens +kommunist +kommunisten +kommunistens +kommunister +kommunisterna +kommunisternas +kommunisters +kommunistisk +kommunistiska +kommunistiske +kommunistiskt +kommunists +kommuns +kommutativ +kommutativa +kommutativt +komna +kompakt +kompakta +kompaktare +kompaktast +kompaktaste +kompaktifiera +kompaktifierade +kompaktifierades +kompaktifierar +kompaktifieras +kompaktifierat +kompaktifierats +kompani +kompanier +kompanierna +kompaniernas +kompaniers +kompaniet +kompaniets +kompanis +kompanjon +kompanjonen +kompanjonens +kompanjoner +kompanjonerna +kompanjonernas +kompanjoners +kompanjons +kompanjonskap +kompanjonskapet +kompanjonskapets +komparativ +komparativa +komparativt +kompass +kompassen +kompassens +kompasser +kompasserna +kompassernas +kompassers +kompendier +kompendierna +kompendiernas +kompendiers +kompendiet +kompendiets +kompendium +kompensation +kompensationen +kompensationens +kompensationer +kompensationerna +kompensationernas +kompensationers +kompensations +kompensera +kompenserad +kompenserade +kompenserades +kompenserande +kompenserar +kompenseras +kompenserat +kompenserats +kompensering +kompenseringar +kompenseringarna +kompenseringarnas +kompenseringars +kompenseringen +kompenseringens +kompenserings +kompetens +kompetensen +kompetensens +kompetenser +kompetenserna +kompetensernas +kompetensers +kompetent +kompetenta +kompetentare +kompetentast +kompetentaste +kompetente +kompis +kompisar +kompisarna +kompisarnas +kompisars +kompisen +kompisens +komponent +komponenten +komponentens +komponenter +komponenterna +komponenternas +komponenters +komponents +komponera +komponerad +komponerade +komponerades +komponerande +komponerandet +komponerandets +komponerar +komponeras +komponerat +komponerats +komposition +kompositionen +kompositionens +kompositioner +kompositionerna +kompositionernas +kompositioners +kompositions +kompost +komposten +kompostens +komposter +kompostera +komposterade +komposterar +komposterna +komposternas +komposters +kompott +kompotten +kompottens +kompotter +kompotterna +kompotternas +kompotters +kompression +kompressionen +kompressionens +kompressor +kompressorer +kompressorerna +kompressorernas +kompressorers +kompressorn +kompressorns +komprimerad +komprimerade +komprimerades +komprimerar +komprimeras +komprimerat +komprimerats +komprimering +komprimeringen +komprimeringens +komprimerings +kompromettera +komprometterad +komprometterade +komprometterades +komprometterande +komprometterandet +komprometterandets +komprometterar +komprometteras +komprometterat +komprometterats +kompromiss +kompromissa +kompromissade +kompromissades +kompromissande +kompromissandet +kompromissandets +kompromissar +kompromissas +kompromissat +kompromissats +kompromissen +kompromissens +kompromisser +kompromisserna +kompromissernas +kompromissers +kon +koncentrat +koncentraten +koncentratens +koncentratet +koncentratets +koncentration +koncentrationen +koncentrationens +koncentrations +koncentrator +koncentratorn +koncentratorns +koncentrera +koncentrerad +koncentrerade +koncentrerades +koncentrerande +koncentrerandet +koncentrerandets +koncentrerar +koncentreras +koncentrerat +koncentrerats +koncept +koncepten +konceptens +koncepter +koncepterna +koncepternas +koncepters +konceptet +konceptets +koncern +koncernen +koncernens +koncerner +koncernerna +koncernernas +koncerners +koncerns +koncession +koncessionen +koncessionens +koncessioner +koncessionerna +koncessionernas +koncessioners +koncessions +koncis +koncisa +koncisare +koncisast +koncisaste +koncist +kondens +kondensation +kondensationen +kondensationens +kondensations +kondensator +kondensatorer +kondensatorerna +kondensatorernas +kondensatorers +kondensen +kondensens +kondenset +kondensets +kondition +konditionen +konditionens +konditions +kondom +kondomen +kondomens +kondomer +kondomerna +kondomernas +kondomers +kondoms +konen +konens +koner +konerna +konernas +koners +konfekt +konfekten +konfektens +konfektion +konfektionen +konfektionens +konfektions +konfekts +konferencier +konferencierer +konferenciererna +konferencierernas +konferencierers +konferenciern +konferencierns +konferenciers +konferens +konferensen +konferensens +konferenser +konferenserna +konferensernas +konferensers +konferensrum +konferensrummen +konferensrummens +konferensrummet +konferensrummets +konferensrums +konferera +konfererade +konfererades +konfererar +konfereras +konfererat +konfererats +konfiguration +konfigurationen +konfigurationens +konfigurationer +konfigurationerna +konfigurationernas +konfigurationers +konfigurations +konfigurera +konfigurerad +konfigurerade +konfigurerades +konfigurerar +konfigureras +konfigurerat +konfigurerats +konfigurering +konfigureringen +konfigureringens +konfigurerings +konfirmation +konfirmationen +konfirmationens +konfirmationer +konfirmationerna +konfirmationernas +konfirmationers +konfirmations +konfirmera +konfirmerad +konfirmerade +konfirmerades +konfirmerar +konfirmeras +konfirmerat +konfirmerats +konfiskation +konfiskationen +konfiskationens +konfiskationer +konfiskationerna +konfiskationernas +konfiskationers +konfiskations +konfiskera +konfiskerad +konfiskerade +konfiskerades +konfiskerar +konfiskeras +konfiskerat +konfiskerats +konfiskering +konfiskeringen +konfiskeringens +konfiskerings +konformism +konformismen +konformismens +konformistisk +konformistiska +konformistiske +konformistiskt +konformitet +konformiteten +konformitetens +konformitets +konfrontation +konfrontationen +konfrontationens +konfrontationer +konfrontationerna +konfrontationernas +konfrontationers +konfrontations +konfrontera +konfronterad +konfronterade +konfronterades +konfronterar +konfronteras +konfronterat +konfronterats +konfundera +konfunderad +konfunderade +konfunderades +konfunderande +konfunderar +konfunderas +konfunderat +konfunderats +konga +kongas +kongo +kongos +kongress +kongressen +kongressens +kongresser +kongresserna +kongressernas +kongressers +kongruens +kongruensen +kongruensens +kongruent +kongruenta +konjak +konjaken +konjakens +konjaks +konjugera +konjugerad +konjugerade +konjugerades +konjugerar +konjugeras +konjugerat +konjugerats +konjunktion +konjunktionen +konjunktionens +konjunktioner +konjunktionerna +konjunktionernas +konjunktioners +konjunktions +konjunktiv +konjunktiven +konjunktivens +konjunktiver +konjunktiverna +konjunktivernas +konjunktivers +konjunktur +konjunkturen +konjunkturens +konjunkturer +konjunkturerna +konjunkturernas +konjunkturers +konjunkturs +konkatenera +konkatenerade +konkatenerades +konkatenerar +konkateneras +konkatenerat +konkatenerats +konkav +konkava +konkavt +konkordans +konkordansen +konkordansens +konkordanser +konkordanserna +konkordansernas +konkordansers +konkret +konkreta +konkretare +konkretast +konkretaste +konkretisera +konkretiserad +konkretiserade +konkretiserades +konkretiserar +konkretiseras +konkretiserat +konkretiserats +konkurrens +konkurrensen +konkurrensens +konkurrent +konkurrenten +konkurrentens +konkurrenter +konkurrenterna +konkurrenternas +konkurrenters +konkurrera +konkurrerade +konkurrerades +konkurrerande +konkurrerar +konkurreras +konkurrerat +konkurrerats +konkurs +konkursbo +konkursboen +konkursboens +konkursboet +konkursboets +konkursbon +konkursbona +konkursbonas +konkursbons +konkursbos +konkursen +konkursens +konkurser +konkurserna +konkursernas +konkursers +kons +konsekutiv +konsekutiva +konsekutivt +konsekvens +konsekvensen +konsekvensens +konsekvenser +konsekvenserna +konsekvensernas +konsekvensers +konsekvent +konsekventa +konsekventare +konsekventast +konsekventaste +konsekvente +konsert +konserten +konsertens +konserter +konserterna +konserternas +konserters +konsertprogram +konsertprogrammen +konsertprogrammens +konsertprogrammet +konsertprogrammets +konsertprograms +konserv +konservatism +konservatismen +konservatismens +konservativ +konservativa +konservativare +konservativas +konservativast +konservativaste +konservative +konservatives +konservativt +konservator +konservatorn +konservatorns +konservators +konservburk +konservburkar +konservburkarna +konservburkarnas +konservburkars +konservburken +konservburkens +konservburks +konserven +konservens +konserver +konservera +konserverad +konserverade +konserverades +konserverande +konserverar +konserveras +konserverat +konserverats +konservering +konserveringar +konserveringarna +konserveringarnas +konserveringars +konserveringen +konserveringens +konserverings +konserverna +konservernas +konservers +konsistens +konsistensen +konsistensens +konsistent +konsistenta +konsonans +konsonansen +konsonansens +konsonanser +konsonanserna +konsonansernas +konsonansers +konsonant +konsonanten +konsonantens +konsonanter +konsonanterna +konsonanternas +konsonanters +konsortier +konsortierna +konsortiernas +konsortiers +konsortiet +konsortiets +konsortium +konspiration +konspirationen +konspirationens +konspirationer +konspirationerna +konspirationernas +konspirationers +konspirations +konspirationsteori +konspirationsteorien +konspirationsteoriens +konspirationsteorier +konspirationsteorierna +konspirationsteoriernas +konspirationsteoriers +konspiratorisk +konspiratoriska +konspiratoriskt +konspirera +konspirerade +konspirerande +konspirerar +konspirerat +konst +konstant +konstanta +konstanten +konstantens +konstanter +konstanterna +konstanternas +konstanters +konstatera +konstaterad +konstaterade +konstaterades +konstaterande +konstateranden +konstaterandena +konstaterandenas +konstaterandens +konstaterandes +konstaterandet +konstaterandets +konstaterar +konstateras +konstaterat +konstaterats +konstbevattning +konstbevattningen +konstbevattningens +konstbevattnings +konsten +konstens +konster +konsterna +konsternas +konsters +konstgjord +konstgjorda +konstgjort +konstig +konstiga +konstigare +konstigast +konstigaste +konstige +konstighet +konstigheten +konstighetens +konstigheter +konstigheterna +konstigheternas +konstigheters +konstigt +konstituera +konstituerad +konstituerade +konstituerades +konstituerande +konstituerar +konstitueras +konstituerat +konstituerats +konstitution +konstitutionen +konstitutionens +konstitutioner +konstitutionerna +konstitutionernas +konstitutioners +konstitutions +konstra +konstrade +konstrande +konstrar +konstrat +konstruera +konstruerad +konstruerade +konstruerades +konstruerande +konstruerandet +konstruerandets +konstruerar +konstrueras +konstruerat +konstruerats +konstruktion +konstruktionen +konstruktionens +konstruktioner +konstruktionerna +konstruktionernas +konstruktioners +konstruktions +konstruktiv +konstruktiva +konstruktivism +konstruktivismen +konstruktivismens +konstruktivist +konstruktivisten +konstruktivistens +konstruktivister +konstruktivisterna +konstruktivisternas +konstruktivisters +konstruktivists +konstruktivt +konststycke +konststycken +konststyckena +konststyckenas +konststyckens +konststyckes +konststycket +konststyckets +konstverk +konstverken +konstverkens +konstverket +konstverkets +konstverks +konsument +konsumenten +konsumentens +konsumenter +konsumenterna +konsumenternas +konsumenters +konsumentprisindex +konsumera +konsumerad +konsumerade +konsumerades +konsumerar +konsumeras +konsumerat +konsumerats +konsumtion +konsumtionen +konsumtionens +konsumtions +kontakt +kontakta +kontaktad +kontaktade +kontaktades +kontaktar +kontaktas +kontaktat +kontaktats +kontakten +kontaktens +kontakter +kontakterna +kontakternas +kontakters +kontant +kontanta +kontanter +kontanterna +kontanternas +kontanters +kontenta +kontentan +kontentans +kontext +kontexten +kontextens +kontexter +kontexterna +kontexternas +kontexters +kontinent +kontinenten +kontinentens +kontinenter +kontinenterna +kontinenternas +kontinenters +kontinents +kontingent +kontingenten +kontingentens +kontingenter +kontingenterna +kontingenternas +kontingenters +kontinuitet +kontinuiteten +kontinuitetens +konto +kontokort +kontokorten +kontokortens +kontokortet +kontokortets +kontokorts +konton +kontona +kontonas +kontons +kontor +kontoren +kontorens +kontoret +kontorets +kontorist +kontoristen +kontoristens +kontorister +kontoristerna +kontoristernas +kontoristers +kontors +kontot +kontots +kontra +kontrade +kontrades +kontradiktion +kontradiktionen +kontradiktionens +kontradiktioner +kontradiktionerna +kontradiktionernas +kontradiktioners +kontradiktions +kontrahent +kontrahenten +kontrahentens +kontrahenter +kontrahenterna +kontrahenternas +kontrahenters +kontrakt +kontrakten +kontraktens +kontraktera +kontrakterad +kontrakterade +kontrakterades +kontrakterar +kontrakteras +kontrakterat +kontrakterats +kontraktet +kontraktets +kontraktion +kontraktionen +kontraktionens +kontraktioner +kontraktionerna +kontraktionernas +kontraktioners +kontraktions +kontrakts +kontrande +kontrar +kontrast +kontrasten +kontrastens +kontraster +kontrastera +kontrasterad +kontrasterade +kontrasterades +kontrasterande +kontrasterar +kontrasteras +kontrasterat +kontrasterats +kontrasterna +kontrasternas +kontrasters +kontrat +kontrats +kontring +kontringar +kontringarna +kontringarnas +kontringars +kontringen +kontringens +kontrings +kontrovers +kontroversen +kontroversens +kontroverser +kontroverserna +kontroversernas +kontroversers +kontur +konturen +konturens +konturer +konturerna +konturernas +konturers +konung +konungar +konungarike +konungarikena +konungarikenas +konungariket +konungarikets +konungarna +konungarnas +konungars +konungason +konungasonen +konungasonens +konungen +konungens +konungs +konvenans +konvenansen +konvenansens +konvent +konventen +konventens +konventet +konventets +konvention +konventionen +konventionens +konventioner +konventionerna +konventionernas +konventioners +konventions +konvents +konvergens +konvergensen +konvergensens +konvergent +konvergenta +konvergera +konvergerade +konvergerande +konvergerar +konvergerat +konversation +konversationen +konversationens +konversationer +konversationerna +konversationernas +konversationers +konversations +konversera +konverserad +konverserade +konverserades +konverserande +konverserar +konverseras +konverserat +konverserats +konverter +konvertera +konverterad +konverterade +konverterades +konverterar +konverteras +konverterat +konverterats +konvertering +konverteringar +konverteringarna +konverteringarnas +konverteringars +konverteringen +konverteringens +konverterings +konvertern +konverterns +konvertrar +konvertrarna +konvertrarnas +konvertrars +konvex +konvexa +konvext +konvoj +konvojen +konvojens +konvojer +konvojerna +konvojernas +konvojers +kooperation +kooperationen +kooperationens +kooperations +kooperativ +kooperativa +kooperativt +koordinat +koordinaten +koordinatens +koordinater +koordinaterna +koordinaternas +koordinaters +koordination +koordinationen +koordinationens +koordinations +koordinera +koordinerad +koordinerade +koordinerades +koordinerande +koordinerar +koordineras +koordinerat +koordinerats +kopia +kopian +kopians +kopiator +kopiatorer +kopiatorerna +kopiatorernas +kopiatorers +kopiatorn +kopiatorns +kopiera +kopierad +kopierade +kopierades +kopierar +kopierat +kopierats +kopiering +kopieringen +kopieringens +kopierings +kopieringsapparat +kopieringsapparaten +kopieringsapparatens +kopieringsapparater +kopieringsapparaterna +kopieringsapparaternas +kopieringsapparaters +kopieringsmaskin +kopieringsmaskinen +kopieringsmaskinens +kopieringsmaskiner +kopieringsmaskinerna +kopieringsmaskinernas +kopieringsmaskiners +kopieringsutrustning +kopieringsutrustningen +kopieringsutrustningens +kopieringsutrustnings +kopior +kopiorna +kopiornas +kopiors +kopist +kopisten +kopistens +kopp +koppar +kopparberg +kopparbergs +kopparen +kopparens +kopparn +kopparna +kopparnas +kopparns +kopparorm +kopparormar +kopparormarna +kopparormarnas +kopparormars +kopparormen +kopparormens +koppars +kopparstick +kopparsticket +kopparstickets +koppen +koppens +koppom +koppoms +koppor +kopporna +koppornas +koppors +koptisk +koptiska +koptiskt +kor +kora +korad +korade +korades +koranen +koranens +korar +koras +korat +korats +korda +kordan +kordans +kordas +korea +korean +koreanen +koreanens +koreaner +koreanerna +koreanernas +koreaners +koreansk +koreanska +koreanskan +koreanskans +koreanskas +koreanskor +koreanskorna +koreanskornas +koreanskors +koreanskt +koreas +koreograf +koreografi +koret +korets +korg +korgar +korgarna +korgarnas +korgars +korgen +korgens +korgs +korint +korinten +korintens +korinter +korinterna +korinternas +korinters +korist +koristen +koristens +korister +koristerna +koristernas +koristers +kork +korka +korkad +korkade +korkades +korkar +korkarna +korkarnas +korkars +korkas +korkat +korkats +korkek +korkekar +korkekarna +korkekarnas +korkekars +korkeken +korkekens +korken +korkens +korn +korna +kornas +kornen +kornens +kornet +kornets +kornett +kornetten +kornettens +kornetter +kornetterna +kornetternas +kornetters +kornig +korniga +kornigare +kornigast +kornigaste +kornigt +kornknarr +kornknarrar +kornknarrarna +kornknarrarnas +kornknarrars +kornknarren +kornknarrens +kornknarrs +korp +korpar +korparna +korparnas +korpars +korpen +korpens +korporation +korporationen +korporationens +korporationer +korporationerna +korporationernas +korporationers +korporations +korporativ +korporativa +korporativism +korporativismen +korporativismens +korporativt +korrekt +korrekta +korrektare +korrektast +korrektaste +korrekte +korrekthet +korrektheten +korrekthetens +korrekthets +korrektion +korrektionen +korrektionens +korrektioner +korrektionerna +korrektionernas +korrektioners +korrektions +korrektiv +korrektiven +korrektivens +korrektivet +korrektivets +korrektur +korrekturen +korrekturens +korrekturet +korrekturets +korrekturs +korrespondens +korrespondensen +korrespondensens +korrespondenser +korrespondenserna +korrespondensernas +korrespondensers +korrespondent +korrespondenten +korrespondentens +korrespondenter +korrespondenterna +korrespondenternas +korrespondenters +korrespondera +korresponderade +korresponderande +korresponderar +korresponderat +korridor +korridoren +korridorens +korridorer +korridorerna +korridorernas +korridorers +korrigera +korrigerad +korrigerade +korrigerades +korrigerande +korrigerar +korrigeras +korrigerat +korrigerats +korrigering +korrigeringar +korrigeringarna +korrigeringarnas +korrigeringars +korrigeringen +korrigeringens +korrigerings +korrosion +korrosionen +korrosionens +korrugerad +korrugerade +korrugerat +korrumpera +korrumperad +korrumperade +korrumperades +korrumperande +korrumperar +korrumperas +korrumperat +korrumperats +korrupt +korrupta +korrupte +korruption +korruptionen +korruptionens +korruptions +kors +korsa +korsad +korsade +korsades +korsande +korsar +korsas +korsat +korsats +korsberga +korsbergas +korsen +korsens +korset +korsets +korsett +korsetten +korsettens +korsetter +korsetterna +korsetternas +korsetters +korsfarare +korsfararen +korsfararens +korsfarares +korsfararna +korsfararnas +korsikansk +korsikanska +korsikanskt +korskrogen +korskrogens +korsning +korsningar +korsningarna +korsningarnas +korsningars +korsningen +korsningens +korsnings +korsord +korsordet +korsordets +korsvis +kort +korta +kortade +kortades +kortar +kortare +kortas +kortast +kortaste +kortat +kortats +korte +korten +kortens +kortet +kortets +kortfattad +kortfattade +kortfattat +korthet +kortsiktig +kortsiktiga +kortsiktigare +kortsiktigast +kortsiktigaste +kortsiktigt +kortsynt +kortsynta +kortsynthet +kortsyntheten +kortsynthetens +kortsynthets +kortvarig +kortvariga +kortvarigare +kortvarigast +kortvarigaste +kortvarigt +korus +korv +korvar +korvarna +korvarnas +korvars +korven +korvens +korvstoppning +korvstoppningen +korvstoppningens +korvstoppnings +kos +kosa +kosack +kosacken +kosackens +kosacker +kosackerna +kosackernas +kosackers +kosan +kosans +kosmetik +kosmetika +kosmetiken +kosmetikens +kosmetisk +kosmetiska +kosmetiskt +kosmisk +kosmiska +kosmiskt +kosmonaut +kosmonauten +kosmonautens +kosmonauter +kosmonauterna +kosmonauternas +kosmonauters +kosmos +kossa +kossan +kossans +kossor +kossorna +kossornas +kossors +kost kosta +kostade +kostar +kostas +kostat +kosten +kostens +kostnad +kostnaden +kostnadens +kostnader +kostnaderna +kostnadernas +kostnaders +kostnads +kostnadsfri +kostnadsfria +kostnadsfritt +kostsam +kostsamma +kostsammare +kostsammast +kostsammaste +kostsamt +kostym +kostymen +kostymens +kostymer +kostymerna +kostymernas +kostymers +kota +kotan +kotans +kotas +kotor +kotorna +kotornas +kotors +kottar +kottarna +kottarnas +kottars +kotte +kotten +kottens +kotteri +kotteriet +kotteriets +kottes +krabba +krabban +krabbans +krabbor +krabborna +krabbornas +krabbors +krafs +krafsa +krafsade +krafsades +krafsar +krafsas +krafsat +krafsats +krafset +krafsets +kraft +kraften +kraftens +krafter +krafterna +krafternas +krafters +kraftig +kraftiga +kraftigare +kraftigast +kraftigaste +kraftige +kraftigt +krafttag +kraftverk +kraftverken +kraftverkens +kraftverket +kraftverkets +kraftverks +kraftyttring +kraftyttringar +kraftyttringarna +kraftyttringarnas +kraftyttringars +kraftyttringen +kraftyttringens +kraftyttrings +kragar +kragarna +kragarnas +kragars +krage +kragen +kragens +krages +krake +kram +krama +kramad +kramade +kramades +kramar +kramarna +kramarnas +kramars +kramas +kramat +kramats +kramen +kramens +kramfors +kramp +krampaktig +krampaktiga +krampaktigt +krampen +krampens +kramper +kramperna +krampernas +krampers +krams +kran +kranar +kranarna +kranarnas +kranars +kranen +kranens +kranier +kranierna +kraniernas +kraniers +kraniet +kraniets +kranium +krank +kranka +krankhet +krankheten +krankhetens +krankhets +krankt +krans +kransa +kransad +kransade +kransades +kransar +kransarna +kransarnas +kransars +kransas +kransat +kransats +kransen +kransens +kras +krasch +krascha +kraschad +kraschade +kraschades +kraschar +kraschas +kraschat +kraschats +kraschen +kraschens +krascher +krascherna +kraschernas +kraschers +krass +krassa +krassare +krassast +krassaste +krasse +krassen +krassens +krasst +krater +kratern +kraterns +kratrar +kratrarna +kratrarnas +kratrars +kratta +krattad +krattade +krattades +krattan +krattande +krattans +krattar +krattas +krattat +krattats +krattor +krattorna +krattornas +krattors +krav +kraven +kravens +kravet +kravets +kravs +kreation +kreationen +kreationens +kreationer +kreationerna +kreationernas +kreationers +kreations +kreativ +kreativa +kreativare +kreativast +kreativaste +kreativitet +kreativiteten +kreativitetens +kreativt +kreatur +kreaturen +kreaturens +kreaturet +kreaturets +kredit +krediten +kreditens +krediter +krediterna +krediternas +krediters +kreditkonto +kreditkontot +kreditkontots +kreditkort +kreditkorten +kreditkortens +kreditkortet +kreditkortets +kreditkorts +krematorier +krematorierna +krematoriernas +krematoriers +krematoriet +krematoriets +krematorium +kreti +kretin +kretinen +kretinens +kretiner +kretinerna +kretinernas +kretiners +krets +kretsa +kretsade +kretsar +kretsarna +kretsarnas +kretsars +kretsat +kretsen +kretsens +kricket +krig +kriga +krigade +krigades +krigar +krigare +krigaren +krigarens +krigares +krigarna +krigarnas +krigas +krigat +krigats +krigen +krigens +kriget +krigets +krigisk +krigiska +krigiskt +krigs +krigsgud +krigsgudar +krigsgudarna +krigsgudarnas +krigsgudars +krigsguden +krigsgudens +krigskamrat +krigskamraten +krigskamratens +krigskamrater +krigskamraterna +krigskamraternas +krigskamraters +krigsmakt +krigsmakten +krigsmaktens +krigsmakts +krigsman +krigsmans +krigstid +krigstiden +krigstidens +krigstider +krigstiderna +krigstidernas +krigstiders +krigstids +kring +kringgick +kringgicks +kringresande +kringsmygande +kris +krisen +krisens +kriser +kriserna +krisernas +krisers +krispunkt +krispunkter +krispunkterna +krispunkternas +krispunkters +kristen +kristendom +kristendomen +kristendomens +kristenhet +kristenheten +kristenhetens +krister +kristers +kristet +kristi +kristian +kristianstad +kristianstads +kristineberg +kristinebergs +kristinehamn +kristinehamns +kristna +kristnas +kristne +kristnes +kristoffer +kristoffers +kristoffersson +kristofferssons +kristus +krita +kritan +kritans +kritas +kriterier +kriterierna +kriteriernas +kriteriers +kriteriet +kriteriets +kriterium +kritik +kritiken +kritikens +kritiker +kritikern +kritikerna +kritikernas +kritikerns +kritikers +kritisera +kritiserad +kritiserade +kritiserades +kritiserar +kritiseras +kritiserat +kritiserats +kritisk +kritiska +kritiskt +kritor +kritorna +kritornas +kritors +kroat +kroaten +kroatens +kroater +kroaterna +kroaternas +kroaters +kroatien +kroatiens +kroatisk +kroatiska +kroatiskt +krock +krocka +krockade +krockar +krockarna +krockarnas +krockars +krockat +krocken +krockens +krocket +krocks +krog +krogar +krogarna +krogarnas +krogars +krogen +krogens +krogs +krok +krokar +krokarna +krokarnas +krokars +krokben +krokbent +krokbenta +kroken +krokens +kroki +krokier +krokierna +krokiernas +krokiers +krokig +krokiga +krokigare +krokigast +krokigaste +krokigt +krokin +krokins +krokom +krokoms +krokus +krokusar +krokusarna +krokusarnas +krokusars +krokusen +krokusens +krom +kromen +kromens +kromet +kromets +kromosom +kromosomen +kromosomens +kromosomer +kromosomerna +kromosomernas +kromosomers +krona +kronan +kronans +kronas +kroniker +kronikern +kronikerna +kronikernas +kronikerns +kronikers +kronisk +kroniska +kroniskt +kronoberg +kronobergs +kronofogdar +kronofogdarna +kronofogdarnas +kronofogdars +kronofogde +kronofogden +kronofogdens +kronofogdes +kronokusk +kronometer +kronometern +kronometerns +kronometrar +kronometrarna +kronometrarnas +kronometrars +kronor +kronorna +kronornas +kronors +kronprins +kronprinsar +kronprinsarna +kronprinsarnas +kronprinsars +kronprinsen +kronprinsens +kropp +kroppar +kropparna +kropparnas +kroppars +kroppen +kroppens +kropps +kroppshydda +kroppshyddan +kroppshyddans +kroppshyddas +kroppsvisitation +kroppsvisitationen +kroppsvisitationens +kroppsvisitations +kroppsvisitera +kroppsvisiterad +kroppsvisiterade +kroppsvisiterades +kroppsvisiterar +kroppsvisiterat +kroppsvisiterats +kross +krossa +krossad +krossade +krossades +krossande +krossar +krossas +krossat +krossats +krossen +krossens +krosset +krossets +krubba +krubban +krubbans +krubbas +krubbor +krubborna +krubbornas +krubbors +kruka +krukan +krukans +krukas +krukmakare +krukmakaren +krukmakarens +krukmakares +krukmakarna +krukmakarnas +krukor +krukorna +krukornas +krukors +krum +krumbukta +krumbuktade +krumbuktar +krumbuktat +krumma +krumt +krupen +krupet +krupit +krupits +krupna +krupp +kruppen +kruppens +krus +krusa +krusade +krusar +krusas +krusat +krusen +krusens +kruset +krusets +krusig +krusiga +krusigt +krusning +krusningar +krusningarna +krusningarnas +krusningars +krusningen +krusningens +krusnings +krut +krutet +krutets +krux +kruxen +kruxens +kruxet +kruxets +kry +krya +kryade +kryar +kryare +kryast +kryaste +kryat +krycka +kryckan +kryckans +kryckor +kryckorna +kryckornas +kryckors +krydda +kryddad +kryddade +kryddades +kryddan +kryddans +kryddar +kryddas +kryddat +kryddats +kryddor +kryddorna +kryddornas +kryddors +kryddpeppar +krymp +krympa +krympande +krympas +krymper +krympning +krympningar +krympningarna +krympningarnas +krympningars +krympningen +krympningens +krympnings +krymps +krympt +krympta +krympte +krymptes +krympts +kryp +krypa +krypande +krypandet +krypandets +krypas +krypen +krypens +kryper +krypet +krypets +krypning +krypningen +krypningens +krypnings +kryps +krypta +kryptan +kryptans +kryptera +krypterad +krypterade +krypterades +krypterar +krypteras +krypterat +krypterats +kryptering +krypteringen +krypteringens +krypterings +kryptisk +kryptiska +kryptiskt +kryptor +kryptorna +kryptornas +kryptors +kryss +kryssa +kryssad +kryssade +kryssades +kryssar +kryssare +kryssaren +kryssarens +kryssares +kryssarna +kryssarnas +kryssas +kryssat +kryssats +kryssen +kryssens +krysset +kryssets +krysta +krystade +krystades +krystande +krystar +krystas +krystat +krystats +krytt +kub +kuba +kuban +kubanen +kubanens +kubaner +kubanerna +kubanernas +kubaners +kubansk +kubanska +kubanskan +kubanskans +kubanskas +kubanske +kubanskt +kubas +kuben +kubens +kuber +kuberna +kubernas +kubers +kubik +kubikmeter +kubiks +kubisk +kubiska +kubiskt +kubism +kubismen +kubismens +kuddar +kuddarna +kuddarnas +kuddars +kudde +kudden +kuddens +kuddes +kufisk +kufiska +kufiskt +kugga +kuggad +kuggade +kuggades +kuggande +kuggar +kuggarna +kuggarnas +kuggars +kuggas +kuggat +kuggats +kugge +kuggen +kuggens +kummin +kumpan +kumpanen +kumpanens +kumpaner +kumpanerna +kumpanernas +kumpaners +kund +kunde +kunden +kundens +kunder +kunderna +kundernas +kunders +kunds +kung +kungahus +kungahusen +kungahusens +kungahuset +kungahusets +kungar +kungarike +kungarikena +kungarikenas +kungariket +kungarikets +kungarna +kungarnas +kungars +kungen +kungens +kungjord +kungjorda +kungjorde +kungjordes +kungjort +kungjorts +kungs +kungsbacka +kungsbackas +kungshamn +kungshamns +kungsord +kunna +kunnande +kunnandet +kunnandets +kunnat +kunnig +kunniga +kunnigare +kunnigast +kunnigaste +kunnige +kunnigt +kunskap +kunskapen +kunskapens +kunskaper +kunskaperna +kunskapernas +kunskapers +kunskaps +kunskapsbas +kunskapsbasen +kunskapsbasens +kupa +kupad +kupade +kupades +kupan +kupande +kupans +kupar +kupas +kupat +kupats +kupering +kuperingar +kuperingarna +kuperingarnas +kuperingars +kuperingen +kuperingens +kuperings +kupong +kupongen +kupongens +kuponger +kupongerna +kupongernas +kupongers +kupongs +kupor +kuporna +kupornas +kupors +kupp +kuppen +kuppens +kupper +kupperna +kuppernas +kuppers +kur +kura +kurade +kurage +kuragers +kuraget +kurant +kuranta +kurar +kurarna +kurarnas +kurars +kurat +kurator +kuratorer +kuratorerna +kuratorernas +kuratorers +kuratorn +kuratorns +kurators +kurd +kurden +kurdens +kurder +kurderna +kurdernas +kurders +kurdisk +kurdiska +kurdiske +kurdiskt +kuren +kurens +kurer +kurera +kurerad +kurerade +kurerades +kurerar +kureras +kurerat +kurerats +kurerna +kurernas +kurers +kuriosa +kuriositet +kuriositeten +kuriositetens +kuriositeter +kuriositeterna +kuriositeternas +kuriositeters +kuriosum +kurir +kuriren +kurirens +kurirer +kurirerna +kurirernas +kurirers +kurirs +kurs +kursen +kursens +kurser +kurserna +kursernas +kursers +kursiv +kursiva +kursivera +kursiverad +kursiverade +kursiverades +kursiverar +kursiveras +kursiverat +kursiverats +kursivering +kursiveringar +kursiveringarna +kursiveringarnas +kursiveringars +kursiveringen +kursiveringens +kursiverings +kursivt +kurt +kurts +kurva +kurvan +kurvans +kurvig +kurviga +kurvigare +kurvigast +kurvigaste +kurvigt +kurvor +kurvorna +kurvornas +kurvors +kurvritare +kurvritaren +kurvritarens +kurvritares +kurvritarna +kurvritarnas +kurvskrivare +kurvskrivaren +kurvskrivarens +kurvskrivares +kurvskrivarna +kurvskrivarnas +kuscha +kuschad +kuschade +kuschades +kuschar +kuschas +kuschat +kuschats +kusin +kusinen +kusinens +kusiner +kusinerna +kusinernas +kusiners +kusins +kusk +kuskar +kuskarna +kuskarnas +kuskars +kusken +kuskens +kusmark +kusmarks +kust +kusten +kustens +kuster +kusterna +kusternas +kusters +kuta +kutade +kutar +kutat +kuttra +kuttrade +kuttrar +kuttrat +kutym +kutymen +kutymens +kutymer +kutymerna +kutymernas +kutymers +kuva +kuvad +kuvade +kuvades +kuvar +kuvas +kuvat +kuvats +kuvert +kuverten +kuvertens +kuvertet +kuvertets +kuwait +kuwaits +kvad +kvadda +kvaddad +kvaddade +kvaddades +kvaddar +kvaddas +kvaddat +kvaddats +kvadrat +kvadraten +kvadratens +kvadrater +kvadraterna +kvadraternas +kvadraters +kvadratisk +kvadratiska +kvadratiskt +kvadratmeter +kvadratmetern +kvadratmeterns +kvadratmeters +kvadratmetrar +kvadratmetrarna +kvadratmetrarnas +kvadratmetrars +kvadratur +kvadraturen +kvadraturens +kvantfysik +kvantfysiken +kvantfysikens +kvantifiera +kvantifierad +kvantifierade +kvantifierades +kvantifierande +kvantifierar +kvantifieras +kvantifierat +kvantifierats +kvantifiering +kvantifieringar +kvantifieringarna +kvantifieringarnas +kvantifieringars +kvantifieringen +kvantifieringens +kvantifierings +kvantitativ +kvantitativa +kvantitativt +kvantitet +kvantiteten +kvantitetens +kvantiteter +kvantiteterna +kvantiteternas +kvantiteters +kvantmekanik +kvantmekaniken +kvantmekanikens +kvantum +kvar +kvark +kvarka +kvarkan +kvarkans +kvarkar +kvarkarna +kvarkarnas +kvarkars +kvarken +kvarkens +kvarn +kvarnar +kvarnarna +kvarnarnas +kvarnars +kvarnen +kvarnens +kvarnsten +kvarnstenar +kvarnstenarna +kvarnstenarnas +kvarnstenars +kvarnstenen +kvarnstenens +kvarskatt +kvarskatten +kvarskattens +kvarskatter +kvarskatterna +kvarskatternas +kvarskatters +kvarstad +kvarstaden +kvarstadens +kvarstader +kvarstaderna +kvarstadernas +kvarstaders +kvarstads +kvarstanna +kvarstannade +kvarstannande +kvarstannar +kvarstannat +kvarstod +kvart +kvartar +kvartarna +kvartarnas +kvartars +kvarten +kvartens +kvarter +kvarteren +kvarterens +kvarteret +kvarterets +kvartett +kvartetten +kvartettens +kvartetter +kvartetterna +kvartetternas +kvartetters +kvarvara +kvarvarande +kvast +kvastar +kvastarna +kvastarnas +kvastars +kvasten +kvastens +kvav +kvava +kvavt +kved +kvedar +kvedarna +kvedarnas +kvedars +kveden +kvedens +kveder +kvederna +kvedernas +kveders +kvick +kvicka +kvickare +kvickast +kvickaste +kvicke +kvickhet +kvickheten +kvickhetens +kvickheter +kvickheterna +kvickheternas +kvickheters +kvickhets +kvickna +kvicknade +kvicknar +kvicknat +kvicksund +kvicksunds +kvickt +kvid +kvida +kvidande +kvidandet +kvidandets +kvider +kvidinge +kvidinges +kvidit +kviga +kvigan +kvigans +kvigor +kvigorna +kvigornas +kvigors +kvikkjokk +kvikkjokks +kvinna +kvinnan +kvinnans +kvinnas +kvinnodominerad +kvinnodominerade +kvinnodominerat +kvinnor +kvinnorna +kvinnornas +kvinnors +kvinnosakskvinna +kvinnosakskvinnan +kvinnosakskvinnans +kvinnosakskvinnor +kvinnosakskvinnorna +kvinnosakskvinnornas +kvinnosakskvinnors +kvinnotycke +kvint +kvinten +kvintens +kvinter +kvinterna +kvinternas +kvinters +kvist +kvista +kvistade +kvistades +kvistar +kvistarna +kvistarnas +kvistars +kvistas +kvistat +kvistats +kvisten +kvistens +kvistig +kvistiga +kvistigt +kvistning +kvistningar +kvistningarna +kvistningarnas +kvistningars +kvistningen +kvistningens +kvistnings +kvists +kvitt +kvitta +kvittade +kvittades +kvittar +kvittas +kvittat +kvittats +kvitten +kvittens +kvittensen +kvittensens +kvittenser +kvittenserna +kvittensernas +kvittensers +kvitter +kvittera +kvitterad +kvitterade +kvitterades +kvitterar +kvitteras +kvitterat +kvitterats +kvitto +kvitton +kvittona +kvittonas +kvittons +kvittot +kvittots +kvittra +kvittrade +kvittrades +kvittrande +kvittrandet +kvittrandets +kvittrar +kvittras +kvittrat +kvittrats +kvittret +kvittrets +kvot +kvoten +kvotens +kvoter +kvotera +kvoterade +kvoterar +kvoterat +kvotering +kvoteringar +kvoteringarna +kvoteringarnas +kvoteringars +kvoteringen +kvoteringens +kvoterings +kvoterna +kvoternas +kvoters +kyffe +kyffen +kyffena +kyffenas +kyffens +kyffet +kyffets +kynne +kynnen +kynnena +kynnenas +kynnens +kynnet +kynnets +kypare +kyparen +kyparens +kypares +kyparna +kyparnas +kyrka +kyrkan +kyrkans +kyrkas +kyrkbokens kyrkby +kyrkbyar +kyrkbyarna +kyrkbyarnas +kyrkbyars +kyrkbyn +kyrkbyns kyrkbys +kyrkesund +kyrkesunds +kyrkoherde +kyrkoherden +kyrkoherdens +kyrkor +kyrkorna +kyrkornas +kyrkors +kyrktorn +kyrktornet +kyrktornets +kyrkvaktare +kyrkvaktaren +kyrkvaktarens +kyrkvaktares +kyrkvaktarna +kyrkvaktarnas +kysk +kyska +kyskhet +kyskheten +kyskhetens +kyskhets +kyskt +kyss +kyssa +kyssar +kyssarna +kyssarnas +kyssars +kyssas +kyssen +kyssens +kysser +kysst +kyssta +kysste +kysstes +kyssts +madagaskar +madagaskars +madam +madame +madammen +madammens +madammer +madammerna +madammernas +madammers +madonna +madonnan +madonnans +madonnor +madonnorna +madonnornas +madonnors +madrass +madrassen +madrassens +madrasser +madrasserna +madrassernas +madrassers +maestro +maestron +maestrons +maestros +maffia +maffian +maffians +maffias +magar +magarna +magarnas +magars +magasin +magasinen +magasinens +magasinet +magasinets +magasins +mage +magen +magens +mager +magert +magi +magien +magiens +magiker +magikern +magikerna +magikernas +magikerns +magikers +magin +magins +magisk +magiska +magiskt +magister +magistern +magisterns +magisters +magistrar +magistrarna +magistrarnas +magistrars +magnet +magnetband +magnetbanden +magnetbandens +magnetbandet +magnetbandets +magnetbands +magneten +magnetens +magneter +magneterna +magneternas +magneters +magnetisera +magnetiserad +magnetiserade +magnetiserades +magnetiserar +magnetiseras +magnetiserat +magnetiserats +magnetisk +magnetiska +magnetiskt +magnetism +magnetismen +magnetismens +magnifik +magnifika +magnifikare +magnifikast +magnifikaste +magnifikt +magnitud +magnituden +magnitudens +magnituder +magnituderna +magnitudernas +magnituders +magnus +magpumpning +magpumpningar +magpumpningarna +magpumpningarnas +magpumpningars +magpumpningen +magpumpningens +magpumpnings +magra +magrare +magrast +magraste +magstark +magstarka +magstarkt +magtrakten +mahogny maj +maja +majas +majken +majkens +major +majoren +majorens +majorer +majorerna +majorernas +majorers +majoritet +majoriteten +majoritetens +majoriteter +majoriteterna +majoriteternas +majoriteters +majors majs +majsen +majsens +maka +makaber +makabert +makabra +makad +makade +makades +makan +makande +makandet +makandets +makans +makar +makarna +makarnas +makaroner +makaronerna +makaronernas +makaroners +makaroni +makaronin +makaronins +makars +makas +makat +makats +make +makedonien +makedoniens +maken +makens +makes +makro +makrokosmos +makron +makrona +makronas +makrons +makrot +makrots +makt +maktberusad +maktberusade +maktberusat +makten +maktens +makter +makterna +makternas +makters +maktfaktor +maktfaktorn +maktfaktorns +maktfaktors +makthavande +makthavare +makthavaren +makthavarens +makthavares +makthavarna +makthavarnas +maktkamp +maktkampen +maktkampens +maktposition +maktpositionen +maktpositionens +maktpositioner +maktpositionerna +maktpositionernas +maktpositioners +maktpositions +mamma +mamman +mammans +mammas +man +mana +manad +manade +manades +management +manande +manandet +manandets +manar +manas +manat +manats +mandat +mandaten +mandatens +mandatet +mandatets +mandats +mandom +mandomen +mandomens +manen +manens +maner +maneren +manerens +maneret +manerets +maners +mangrant +mangskog +mangskogs +manhaftig +manhaftiga +manhaftighet +manhaftigheten +manhaftighetens +manhaftighets +manhaftigt +manifest +manifesta +manifestation +manifestationen +manifestationens +manifestationer +manifestationerna +manifestationernas +manifestationers +manifestations +manifesten +manifestens +manifestera +manifesterad +manifesterade +manifesterades +manifesterar +manifesteras +manifesterat +manifesterats +manifestet +manifestets +manikyr +manikyren +manikyrens +maning +maningar +maningarna +maningarnas +maningars +maningen +maningens +manings +maningsrop +manke +mankemang +mankemanget +mankemangets +manken +mankens +manna +mannaminne +mannan +mannans +mannas +mannen +mannens +mans +manschauvinist +manschauvinisten +manschauvinistens +manschauvinister +manschauvinisterna +manschauvinisternas +manschauvinisters +manschett +manschetten +manschettens +manschetter +manschetterna +manschetternas +manschetters +manschetts +manskap +manskapet +manskapets +mantorp +mantorps +manus +manusen +manusens +manuset +manusets +manuskript +manuskripten +manuskriptens +manuskriptet +manuskriptets +mapp +mappar +mapparna +mapparnas +mappars +mappen +mappens +marcus +margareta +margaretas +margaretha +margarethas +margarin +margarinen +margarinens +margarinet +margarinets +margit +margits +margot +margots +maria +marianne +mariannes +marias +marie +mariefred +mariefreds +maries +mariestad +mariestads +marin +marina +marint +marionett +marionetten +marionettens +marionetter +marionetterna +marionetternas +marionetters +marita +maritas +mark +markant +markanta +markaryd +markaryds +marken +markens +marker +markera +markerad +markerade +markerades +markerar +markerat +markerats +markering +markeringar +markeringarna +markeringarnas +markeringars +markeringen +markeringens +markerings +markerna +markernas +markers +markis +markisen +markisens +markiser +markiserna +markisernas +markisers +marknad +marknaden +marknadens +marknader +marknaderna +marknadernas +marknaders +marknads +marks +markus +marmaverken +marmaverkens +marmor +marmorn +marmorns +marockan +marockanen +marockanens +marockaner +marockanerna +marockanernas +marockaners +marocko +marockos +mars +marsch +marschen +marschens +marscher +marschera +marscherad +marscherade +marscherades +marscherande +marscherandet +marscherandets +marscherar +marscheras +marscherat +marscherats +marscherna +marschernas +marschers +marschvisa +marschvisan +marschvisans +marschvisas +marstrand +marstrands +marta +martas +martin +martina +martinas +martins +martyr +martyren +martyrens +martyrer +martyrerna +martyrernas +martyrers +marxism +marxismen +marxismens +marxist +marxisten +marxistens +marxistisk +marxistiska +marxistiskt +mary +marys +mas +masar +masarna +masarnas +masars +masen +masens +mask +maska +maskan +maskans +maskar +maskarna +maskarnas +maskars +masken +maskens +masker +maskera +maskerad +maskerade +maskerades +maskerar +maskeras +maskerat +maskerats +maskering +maskeringar +maskeringarna +maskeringarnas +maskeringars +maskeringen +maskeringens +maskerings +maskerna +maskernas +maskers +maskin +maskinen +maskinens +maskiner +maskineri +maskineriet +maskineriets +maskinerna +maskinernas +maskiners +maskinrum +maskinrummet +maskinrummets +maskopi +maskor +maskorna +maskornas +maskors +maskros +maskrosen +maskrosens +masochistisk +masochistiska +masochistiskt +massa +massachusetts +massaker +massakern +massakerns +massakrer +massakrera +massakrerad +massakrerade +massakrerades +massakrerar +massakrerat +massakrerats +massakrerna +massakrernas +massakrers +massan +massans +massgrav +massgravar +massgravarna +massgravarnas +massgravars +massgraven +massgravens +massiv +massiva +massivare +massivast +massivaste +massivt +massmedia +massmedias +massmedier +massmedierna +massmediernas +massmediers +massmediet +massmediets +massmedium +massor +massorna +massornas +massors +massproducerad +massproducerade +massproducerat +massproduktion +massproduktionen +massproduktionens +massproduktions +massvis +mast +masten +mastens +master +masterna +masternas +masters +mastodont +mastodonten +mastodontens +mastodonter +mastodonterna +mastodonternas +mastodonters +mastodontformat +mastodontprojekt +masturbation +masturbationen +masturbationens +masturbations +masur +mat +mata +matad +matade +matades +matar +matare +mataren +matarens +matares +matarna +matarnas +matas +matat +matats +matbord +matbordet +matbordets +matbords +match +matcha +matchade +matchar +matchat +matchen +matchens +matcher +matcherna +matchernas +matchers +matematik +matematiken +matematikens +matematiker +matematikern +matematikerna +matematikernas +matematikerns +matematikers +matematikprofessor +matematikprofessorer +matematikprofessorerna +matematikprofessorernas +matematikprofessorers +matematikprofessorn +matematikprofessorns +matematikprofessors +matematisk +matematiska +matematiskt +maten +matens +materia +materian +materians +materien +materiens +matfors +mathiss +mathissen +mathissens +matning +matningar +matningarna +matningarnas +matningars +matningen +matningens +matnings +matnyttighet +matnyttigheten +matnyttighetens +matnyttigheter +matnyttigheterna +matnyttigheternas +matnyttigheters +matnyttighets +matris +matrisen +matrisens +matriser +matriserna +matrisernas +matrisers +matros +matrosen +matrosens +matroser +matroserna +matrosernas +matrosers mats +matservering +matserveringar +matserveringarna +matserveringarnas +matserveringars +matserveringen +matserveringens +matserverings +matsked +matskedar +matskedarna +matskedarnas +matskedars +matskeden +matskedens +matskeds +matt +matta +mattad +mattade +mattan +mattans +mattare +mattast +mattaste +mattat +mattias +mattisudden +mattisuddens +mattmar +mattmars +mattor +mattorna +mattornas +mattors +maud +mauds +mauretanien +mauretaniens +mauritius +max +maxim +maximen +maximens +maximer +maximera +maximerad +maximerade +maximerades +maximerar +maximeras +maximerat +maximerats +maximerna +maximernas +maximers +maximum +mazarin +mazarinen +mazarinens +mazariner +mazarinerna +mazarinernas +mazariners +mazarins +med +medan +medarbetare +medarbetaren +medarbetarens +medarbetares +medarbetarna +medarbetarnas +medborgare +medborgaren +medborgarens +medborgares +medborgarna +medborgarnas +medfaren +medfaret +medfarna +medgav +medge +medger +medges +medgiva +medgivande +medgivandet +medgivandets +medgiven +medgivet +medgivna +medhavd +medhavda +medhavt +media +median +medicin +medicine +medicinen +medicinens +mediciner +medicinering +medicineringen +medicineringens +medicinerna +medicinernas +mediciners +medicins +medicinsk +medicinska +medicinskt +medier +medierna +mediernas +mediers +mediet +mediets +medioker +mediokert +mediokra +meditation +meditationen +meditationens +meditations +meditativ +meditativa +meditativt +meditera +mediterade +mediterar +mediterat +medium +medpassagerare +medpassageraren +medpassagerarens +medpassagerares +medpassagerarna +medpassagerarnas +medrycka +medryckande +medryckandet +medryckandets +medryckas +medrycker +medrycks +medryckt +medryckte +medrycktes +medryckts +medtagas +medtagen +medtages +medtaget +medtagna +medurs +medverka +medverkade +medverkan +medverkande +medverkandet +medverkandets +medverkar +medverkat +medvetande +medvetandet +medvetandets +medveten +medvetenhet +medvetenheten +medvetenhetens +medvetenhets +medvetet +medvetna +medvind +medvinden +medvindens +medvinds +mefitisk +mefitiska +mefitiskt +meja +mejad +mejade +mejades +mejar +mejat +mejats +mejeri +mejerier +mejerierna +mejeriernas +mejeriers +mejeriet +mejeriets +mejerist +mejeristen +mejeristens +mejerister +mejeristerna +mejeristernas +mejeristers +mekanik +mekaniken +mekanikens +mekaniker +mekanikern +mekanikerna +mekanikernas +mekanikerns +mekanikers +mekanisera +mekaniserad +mekaniserade +mekaniserades +mekaniserar +mekaniserat +mekaniserats +mekanisering +mekaniseringen +mekaniseringens +mekaniserings +mekanisk +mekaniska +mekaniskt +mekanism +mekanismen +mekanismens +mekanismer +mekanismerna +mekanismernas +mekanismers +mekanisms +memoar +memoarer +memoarerna +memoarernas +memoarers +memoranda +memorandum +memorera +memorerade +memorerar +memorerat +men +mena +menad +menade +menades +menande +menandet +menandets +menar +menas +menat +menats +mened +menedare +menedaren +menedarens +menedares +menedarna +menedarnas +meneden +menedens +meneder +menederna +menedernas +meneders +menig +meniga +menige +menighet +menigheten +menighetens +menigt +mening +meningar +meningarna +meningarnas +meningars +meningen +meningens +menings +meningsutbyte +meningsutbyten +meningsutbytens +ment +menuett +menuetten +menuettens +menuetter +menuetterna +menuetternas +menuetters +menuetts +meny +menyer +menyerna +menyernas +menyers +menyn +menyns +menys +mer +mera +meridian +meridianen +meridianens +meridianer +meridianerna +meridianernas +meridianers +meridians +merit +meriten +meritens +meriter +meritera +meriterad +meriterade +meriterades +meriterande +meriterar +meriterat +meriterats +meriterna +meriternas +meriters +merits +merkurius +meromorf +meromorfa +meromorft +merpart +merparten +merpartens +mesig +mesiga +mesigt +mest +mesta +meta +metad +metade +metades +metafor +metaforen +metaforens +metaforer +metaforerna +metaforernas +metaforers +metaforisk +metaforiska +metaforiskt +metafors +metafysik +metafysiken +metafysikens +metafysisk +metafysiska +metafysiskt +metamorfos +metamorfosen +metamorfosens +metamorfoser +metamorfoserna +metamorfosernas +metamorfosers +metande +metandet +metandets +metar +metas +metat +metats +meteor +meteoren +meteorens +meteorer +meteorerna +meteorernas +meteorers +meteorit +meteoriten +meteoritens +meteoriter +meteoriterna +meteoriternas +meteoriters +meteorits +meter +metern +meterns +meters +metod +metoden +metodens +metoder +metoderna +metodernas +metoders +metodik +metodiken +metodikens +metodisk +metodiska +metodiskt +metods +metrar +metrarna +metrarnas +metrars +metrostation +metrostationen +metrostationens +metrostationer +metrostationerna +metrostationernas +metrostationers +metrostations +mexico +mexicos +mexikan +mexikanen +mexikanens +mexikaner +mexikanerna +mexikanernas +mexikaners +mexikanska +mexikanskan +mexikanskans +mexikanskas +mexikanskor +mexikanskorna +mexikanskornas +mexikanskors +mexiko +mexikos +middag +middagar +middagarna +middagarnas +middagars +middagen +middagens +middags +middagsbord +middagsborden +middagsbordens +middagsbordet +middagsbordets +middagsbords +middagsdisk +middagsdisken +middagsdiskens +middagsrast +middagsrasten +middagsrastens +middagsraster +middagsrasterna +middagsrasternas +middagsrasters +middagsrasts +middagsrest +middagsresten +middagsrestens +middagsrester +middagsresterna +middagsresternas +middagsresters +middagstid +middagstiden +middagstidens +midja +midjan +midjans +midjor +midjorna +midjornas +midjors +midnatt +midnatten +midnattens +midnatts +midnattstid +midnattstiden +midnattstidens +midnattstimma +midnattstimman +midnattstimmans +midsommar +midsommaren +midsommarens +midvinternatt +midvinternatten +midvinternattens +mig +mikrofon +mikrofonen +mikrofonens +mikrofoner +mikrofonerna +mikrofonernas +mikrofoners +mikrofons +mikrokosmos +mikroskop +mikroskopen +mikroskopens +mikroskopet +mikroskopets +mikroskops +mimosa +mimosan +mimosans +mimosas +min +mina +mindes +mindre +minen +minens +miner +minera +minerad +minerade +minerades +minerar +mineras +minerat +minerats +minerna +minernas +miners +miniatyr +miniatyren +miniatyrens +miniatyrer +miniatyrerna +miniatyrernas +miniatyrers +miniatyrs +minidator +minidatorer +minidatorerna +minidatorernas +minidatorers +minidatorn +minidatorns +minidators +minima +minimera +minimerad +minimerade +minimerades +minimerar +minimeras +minimerat +minimerats +minimering +minimeringen +minimeringens +minimum +minimumen +minimumens +minimumet +minimumets +minimums +minister +ministerier +ministerierna +ministeriernas +ministeriers +ministeriet +ministeriets +ministerium +ministern +ministerns +ministers +ministrar +ministrarna +ministrarnas +ministrars +mink +minkar +minkarna +minkarnas +minkars +minken +minkens +minks +minnas +minne +minnen +minnena +minnenas +minnens +minnes +minnesanteckning +minnesanteckningar +minnesanteckningarna +minnesanteckningarnas +minnesanteckningars +minnesanteckningen +minnesanteckningens +minnesantecknings +minnesgod +minnesgoda +minnesgott +minnesstarka +minnet +minnets +minns +minoritet +minoriteten +minoritetens +minoriteter +minoriteterna +minoriteternas +minoriteters +minoritets +minoritetsregering +minoritetsregeringar +minoritetsregeringarna +minoritetsregeringarnas +minoritetsregeringars +minoritetsregeringen +minoritetsregeringens +minoritetsregerings +mins +minsann +minska +minskad +minskade +minskades +minskande +minskandet +minskandets +minskar +minskas +minskat +minskats +minskning +minskningar +minskningarna +minskningarnas +minskningars +minskningen +minskningens +minsknings +minst +minsta +minstas +minste +minstes +minus +minusgrad +minusgraden +minusgradens +minusgrader +minusgraderna +minusgradernas +minusgraders +minusgrads +minustecken +minusteckens +minustecknen +minustecknens +minustecknet +minustecknets +minut +minuten +minutens +minuter +minuterna +minuternas +minuters +minuts +miss +missa +missad +missade +missades +missakta +missaktad +missaktade +missaktades +missaktar +missaktas +missaktat +missaktats +missaktning +missaktningen +missaktningens +missaktnings +missande +missandet +missandets +missanpassning +missanpassningen +missanpassningens +missanpassnings +missar +missarna +missarnas +missars +missas +missat +missats +missbruk +missbruka +missbrukad +missbrukade +missbrukades +missbrukar +missbrukare +missbrukaren +missbrukarens +missbrukares +missbrukarna +missbrukarnas +missbrukas +missbrukat +missbrukats +missbruket +missbrukets +missbruks +missen +missens +missgrepp +missgreppen +missgreppens +missgreppet +missgreppets +missgrepps +misshaga +misshagade +misshagar +misshagat +mission +missionen +missionens +missioner +missionerna +missionernas +missioners +missions +missmod +missmodet +missmodets +missmods +missta +misstag +misstagen +misstagens +misstaget +misstagets +misstagit +misstags +misstankar +misstankarna +misstankarnas +misstankars +misstanke +misstanken +misstankens +misstankes +misstog +misstro +misstrodd +misstrodda +misstrodde +misstroddes +misstror +misstros +misstrott +misstrotts +missuppfatta +missuppfattad +missuppfattade +missuppfattades +missuppfattar +missuppfattas +missuppfattat +missuppfattats +missuppfattning +missuppfattningar +missuppfattningarna +missuppfattningarnas +missuppfattningars +missuppfattningen +missuppfattningens +missuppfattnings +missvisning +missvisningar +missvisningarna +missvisningarnas +missvisningars +missvisningen +missvisningens +missvisnings +mist +mista +mistas +mistat +miste +mister +mistes +mists +mitt +mittbena +mittbenan +mittbenans +mittbenor +mittbenorna +mittbenornas +mittbenors +mittemot +mitten +mittens +mittpunkt +mittpunkten +mittpunktens +mittpunkter +mittpunkterna +mittpunkternas +mittpunkters +mittpunkts +mjuk +mjuka +mjukare +mjukas +mjukast +mjukaste +mjuke +mjukes +mjukna +mjuknade +mjuknar +mjuknat +mjukt +mjukvara +mjukvaran +mjukvarans +mjukvaras +moar +moarna +moarnas +moars +mobba +mobbad +mobbade +mobbades +mobbar +mobbas +mobbat +mobbats +mod +mode +modem +modemen +modemens +modemet +modemets +modems +moder +moderat +moderata +moderbundenhet +moderbundenheten +moderbundenhetens +moderbundenhets +modern +moderna +modernare +modernas +modernast +modernaste +moderne +modernes +modernisera +moderniserad +moderniserade +moderniserades +moderniserar +moderniseras +moderniserat +moderniserats +modernisering +moderniseringar +moderniseringarna +moderniseringarnas +moderniseringars +moderniseringen +moderniseringens +moderniserings +modernism +modernismen +modernismens +modernitet +moderniteten +modernitetens +moderniteter +moderniteterna +moderniteternas +moderniteters +modernitets +moderns +modernt +moders +modet +modets +modifiera +modifierad +modifierade +modifierades +modifierar +modifieras +modifierat +modifierats +modifiering +modifieringar +modifieringarna +modifieringarnas +modifieringars +modifieringen +modifieringens +modifierings +modifikation +modifikationen +modifikationens +modifikationer +modifikationerna +modifikationernas +modifikationers +modifikations +modig +modiga +modigare +modigast +modigaste +modigt +mods +mogen +moget +mogna +mognad +mognaden +mognadens +mognads +mognare +mognast +mognaste +moheda +mohedas +mojna +mojnade +mojnar +mojnat +moment +momenten +momentens +momentet +momentets +moments +moms +momsen +momsens +mon +mona +monaco +monacos +monark +monarken +monarkens +monarker +monarkerna +monarkernas +monarkers +monarki +monarkier +monarkierna +monarkiernas +monarkiers +monarkin +monarkins +monarkis +monarks +monas +monica +monicas +monika +monikas +monistisk +monistiska +monistiskt +monitor +monitorer +monitorerna +monitorernas +monitorers +monitorn +monitorns +monitors +monoton +monotona +monotonare +monotonast +monotonaste +monotoni +monotonin +monotonins +monotonis +monotont +mons +monster +monsterna +monsternas +monsters +monstren +monstrens +monstret +monstrets +montage +montagen +montagens +montaget +montagets +monter +montera +monterad +monterade +monterades +monterar +monteras +monterat +monterats +montering +monteringen +monteringens +monterings +montern +monterns +monters +montrar +montrarna +montrarnas +montrars +monument +monumenten +monumentens +monumentet +monumentets +monuments +mor mora +moran +morans moras +morasen +morasens +moraset +morasets +morbroder +morbrodern +morbroderns +morbroders +morbror +morbrorn +morbrorns +morbrors +mord +mordbrand +mordbranden +mordbrandens +mordbrands +morden +mordens +mordet +mordets +mordisk +mordiska +mordiskt +mords +moren +morens +morer +morerna +morernas +morers +morfar +morfars +morgnar +morgnarna +morgnarnas +morgnars +morgon +morgondag +morgondagen +morgondagens +morgonen +morgonens +morgonkonversation +morgonkonversationen +morgonkonversationens +morgonkonversationer +morgonkonversationerna +morgonkonversationernas +morgonkonversationers +morgonkonversations +morgonrodnad +morgonrodnaden +morgonrodnadens +morgonrodnader +morgonrodnaderna +morgonrodnadernas +morgonrodnaders +morgonrodnads +morgons +morgonstund +morgonstunden +morgonstundens +mormor +mormors +mormorsmor +mormorsmors +morna +mornade +mornar +mornat +morot +moroten +morotens +morots +mors +morse +morsk +morska +morskare +morskas +morskast +morskaste +morske +morskes +morskt +mos +moset +mosets +moskovit +moskoviten +moskovitens +moskoviter +moskoviterna +moskoviternas +moskoviters +moskovitisk +moskovitiska +moskovitiskt +moskva +moskvas +mossa +mossan +mossans +mossar +mossarna +mossarnas +mossars +mosse +mossen +mossens +mosses +mossig +mossiga +mossigt +mossor +mossorna +mossornas +mossors +moster +mostern +mosterns +mosters +mostrar +mostrarna +mostrarnas +mostrars +mot +mota +motad +motade +motades +motar +motarbeta +motarbetad +motarbetade +motarbetades +motarbetar +motarbetas +motarbetat +motarbetats +motas +motat +motats +motbevisa +motbevisad +motbevisade +motbevisades +motbevisar +motbevisat +motbevisats +motbjudande +motbok +motboken +motbokens +motboks +motdrag +motdragen +motdragens +motdraget +motdragets +motdrags +motion +motionen +motionens +motioner +motionera +motionerade +motionerar +motionerat +motionerna +motionernas +motioners +motions +motiv +motivation +motivationen +motivationens +motivations +motiven +motivens +motivera +motiverad +motiverade +motiverades +motiverar +motiveras +motiverat +motiverats +motivering +motiveringar +motiveringarna +motiveringarnas +motiveringars +motiveringen +motiveringens +motiverings +motivet +motivets +motivs +motocross +motocrossen +motocrossens +motor +motorer +motorerna +motorernas +motorers +motorik +motoriken +motorikens +motoriks +motorn +motorns +motors +motpart +motsagt +motsats +motsatsen +motsatsens +motsatser +motsatserna +motsatsernas +motsatsers +motsatt +motsatta +motser +motstod +motstods +motstridig +motstridiga +motstridigt +motsvara +motsvarad +motsvarade +motsvarades +motsvarande +motsvarandet +motsvarandets +motsvarar +motsvaras +motsvarat +motsvarats +motsvarighet +motsvarigheten +motsvarighetens +motsvarigheter +motsvarigheterna +motsvarigheternas +motsvarigheters +motta +mottaga +mottagare +mottagaren +mottagarens +mottagares +mottagarna +mottagarnas +mottagas +mottagen +mottager +mottages +mottaget +mottagit +mottagits +mottagna +mottagning +mottagningen +mottagningens +mottagnings +motto +mottog +mottogs +motton +mottons +mottos +mottot +mottots +moturs +motverka +motverkad +motverkade +motverkades +motverkande +motverkandet +motverkandets +motverkar +motverkas +motverkat +motverkats +motvikt +motvind +motvinden +motvindens +motvinds +muddra +muddrad +muddrade +muddrades +muddrar +muddras +muddrat +muddrats +muff +muffar +muffarna +muffarnas +muffars +muffen +muffens +muffs +mugg +muggar +muggarna +muggarnas +muggars +muggen +muggens +muggs +mumsa +mumsade +mumsades +mumsande +mumsandet +mumsandets +mumsar +mumsas +mumsat +mumsats +mun +mund +mungipa +mungipan +mungipans +mungipas +mungipor +mungiporna +mungipornas +mungipors +munhuggas +munin +munins +munk +munka +munkar +munkarna +munkarnas +munkars +munkas +munken +munkens +munkfors +munks +munnar +munnarna +munnarnas +munnars +munnen +munnens +muns +munter +munters +muntert +muntra +muntrade +muntrades +muntrar +muntrare +muntras +muntrast +muntraste +muntrat +muntrats +munvighet +munvigheten +munvighetens +munvighets +mur +mura +murad +murade +murades +murar +murare +muraren +murarens +murares +murarna +murarnas +murars +muras +murat +murats +murbruk +murbruken +murbrukens +murbruket +murbrukets +murbruks +muren +murens +murjek +murjeks +murken +murket +murkna +murknade +murknades +murknande +murknandet +murknandets +murknar +murknare +murknas +murknast +murknaste +murknat +murknats +murs +mus +musch +muschen +muschens +muscher +muscherna +muschernas +muschers +museer +museerna +museernas +museers +museet +museets +musen +musens +museum +musik +musikdramatik +musikdramatiken +musikdramatikens +musiken +musikens +musiker +musikerna +musikernas +musikers +musikform +musikformen +musikformens +musikformer +musikformerna +musikformernas +musikformers +musikgenre +musikgenren +musikgenrens +musikinstrument +musikinstrumenten +musikinstrumentens +musikinstrumentet +musikinstrumentets +musikinstruments +musiks +musiksmak +musiksmaken +musiksmakens +musiksmaks +musikstycke +musikstycken +musikstyckena +musikstyckenas +musikstyckens +musikstyckes +musikstycket +musikstyckets +must +mustasch +mustaschen +mustaschens +mustascher +mustascherna +mustaschernas +mustaschers +musten +mustens +mustig +mustiga +mustigt +mutation +mutationen +mutationens +mutationer +mutationerna +mutationernas +mutationers +mutations +muterad +muterade +muterat +mutter +muttra +muttrade +muttrar +muttrat +mycken +mycket +myckna +mygg +mygga +myggan +myggans +myggen +myggens +mygget +myggets +myggor +myggorna +myggornas +myggors +myggs +myndig +myndiga +myndighet +myndigheten +myndighetens +myndigheter +myndigheterna +myndigheternas +myndigheters +myndighets +myndighetsstat +myndigt +mynna +mynnade +mynnar +mynnat +mynning +mynningar +mynningarna +mynningarnas +mynningars +mynningen +mynningens +mynnings +mynt +mynta +myntad +myntade +myntades +myntar +myntas +myntat +myntats +myntet +myntets +myr +myra +myran +myrans +myrar +myrarna +myrarnas +myrars +myren +myrens +myror +myrorna +myrornas +myrors +myrra +myrran +myrrans +myrras +myrstack +myrstackar +myrstackarna +myrstackarnas +myrstackars +myrstacken +myrstackens +myrten +myrtenkrans +mys +mysa +myser +mysig +mysiga +mysigare +mysigast +mysigaste +mysigt +mysko +myst +myste +mysterier +mysterierna +mysteriernas +mysteriers +mysteriet +mysteriets +mysterium +mystik +mystiken +mystikens +mystiker +mystikern +mystikerna +mystikernas +mystikerns +mystikers +mystisk +mystiska +mystiskt +myt +myten +mytens +myter +myteri +myteriet +myteriets +myterna +myternas +myters +mytomspunna +mytomspunnen +mytomspunnet nacka +nackad +nackade +nackades +nackar nackas +nackat +nackats +nacke +nacken +nackens +nackskinn +nackskinnet +nackskinnets +nadja +nadjas +naiv +naiva +naivare +naivas +naivast +naivaste +naive +naives +naivism +naivismen +naivismens +naivitet +naiviteten +naivitetens +naivt +najad +najader +najaderna +najadernas +najaders +naken +nakenhet +nakenheten +nakenhetens +nakenhets +naket +nakna +nakne +nakterhus +nakterhuset +nakterhusets +namn +namna +namnad +namnade +namnades +namnar +namnas +namnat +namnats +namnen +namnet +namnets +namngav +namnge +namnkunnig +namnkunniga +namnkunnigare +namnkunnigast +namnkunnigaste +namnkunnigt +namns +namnsdag +namnsdagen +namnsdagens +namnsdags +namnteckning +namnteckningar +namnteckningarna +namnteckningarnas +namnteckningars +namnteckningen +namnteckningens +namntecknings +nancy +nancys +napp +nappa +nappad +nappade +nappades +nappar +napparna +napparnas +nappars +nappas +nappat +nappats +nappen +nappens +nappet +nappets +napps +narkoman +narkomanen +narkomanens +narkomaner +narkomanerna +narkomanernas +narkomaners +narkomans +narkotika +narkotikan +narkotikans +narkotikas +narkotikum +narkotisk +narkotiska +narkotiskt +narr +narrar +narrarna +narrarnas +narrars +narren +narrens +narv +narven +narvens +narvs +nasare +nasaren +nasarens +nasares +nasarna +nasarnas +nation +nationen +nationens +nationer +nationerna +nationernas +nationers +nations +nativiteten +nativitetens +nativitetskurva +nativitetskurvan +nativitetskurvans +natrium +natt +nattavaara +nattavaaraby +nattavaarabys +nattavaaras +nattduksbord +nattduksborden +nattduksbordens +nattduksbordet +nattduksbordets +natten +nattens +nattetid +natthuva +natthuvan +natthuvans +nattvakt +nattvakten +nattvaktens +nattvakter +nattvakterna +nattvakternas +nattvakters +nattvard +nattvarden +nattvardens +nattyxne +natur +naturen +naturens +naturer +naturerna +naturernas +naturers +naturgeografin +naturhistorisk +naturhistoriska +naturhistoriskt +naturtrogen +naturtroget +naturtrogna +naturvetare +naturvetaren +naturvetarens +naturvetares +naturvetarna +naturvetarnas +naturvetenskap +naturvetenskapen +naturvetenskapens +naturvetenskaper +naturvetenskaperna +naturvetenskapernas +naturvetenskapers +naturvetenskaps +navigation +navigationen +navigationens +navigations +navigera +navigerad +navigerade +navigerades +navigerar +navigeras +navigerat +navigerats +nazism +nazismen +nazismens +nazist +nazisten +nazistens +nazister +nazisterna +nazisternas +nazisters +nazistisk +nazistiska +nazistiskt +ned +nedan +nedborrad +nedborrade +nedborrat +nedbruten +nedbrutet +nedbrutna +nedbrytning +nedbrytningen +nedbrytningens +nedbrytnings +nedbrytningsprocess +nedbrytningsprocesser +nedbrytningsprocesserna +nedbrytningsprocessernas +nedbrytningsprocessers +neddraga +neddragning +neddragningar +neddragningarna +neddragningarnas +neddragningars +neddragningen +neddragningens +neddragnings +neder +nederst +nedersta +nedfryst +nedfrysta +nedgjord +nedgjorda +nedgjort +nedom +nedre +nedsatt +nedsatta +nedskrev +nedskriva +nedskriver +nedskrivit +nedstiga +nedstigande +nedstigandet +nedstigandets +nedstiger +nedtaga +nedtager +nedtecknad +nedtecknade +nedtecknat +nedtona +nedtonad +nedtonade +nedtonades +nedtonar +nedtonas +nedtonat +nedtonats +nedtoning +nedtoningen +nedtoningens +nedtonings +nedtrampad +nedtrampade +nedtrampat +nedtryckt +nedtryckta +nedtvinga +nedtvingad +nedtvingade +nedtvingades +nedtvingar +nedtvingas +nedtvingat +nedtvingats +neg +negation +negationen +negationens +negations +negativ +negativa +negativism +negativismen +negativismens +negativt +neger +negera +negerad +negerade +negerades +negerar +negeras +negerat +negerats +negern +negerns +negers +negrer +negrerna +negrernas +negrers +nej +nejd +nejden +nejdens +nejder +nejders +neka +nekad +nekade +nekades +nekar +nekas +nekat +nekats +nektar +nektarn +nektarns +neofobi +neon +neptunus +ner +nerdragen +nerdraget +nerdragna +nere +neri +nersjunken +nersjunket +nersjunkna +nerv +nerven +nervens +nerver +nerverna +nervernas +nervers +nervid +nervositet +nervositeten +nervositetens +nervsystem +nervsystemet +nervsystemets +nesa +nesan +nesans +netto +nettot +nettots +neuros +neurosen +neurosens +neuroser +neuroserna +neurosernas +neurosers +neurotiker +neurotikern +neurotikerna +neurotikernas +neurotikerns +neurotikers +neurotisk +neurotiska +neurotiskt +neutron +neutronen +neutronens +neutroner +neutronerna +neutronernas +neutroners +new +nia +nian +nians +nicaragua +nicaraguas +nick +nicka +nickade +nickar +nickarna +nickarnas +nickars +nickat +nicken +nickens +nickning +nickningar +nickningarna +nickningarnas +nickningars +nickningen +nickningens +nicknings +nidvisa +nidvisan +nidvisans +nidvisas +niga niger +nigeria +nigerias +nigers +nina +ninas +nio +niohundra +nionde +nior +niorna +niornas +niors +niotusen +nipper +nisch +nischen +nischens +nischer +nischerna +nischernas +nischers +nissafors +nisse +nisses +nit +nita +nitad +nitade +nitades +nitar +nitarna +nitarnas +nitars +nitas +nitat +nitats +niten +nitens +nitisk +nitiska +nitiskt +nitrat +nitratet +nitratets +nitti +nittio +nittioen +nittioett +nittiofem +nittiofyra +nittionde +nittionio +nittiosex +nittiosju +nittiotre +nitton +nittonde +nittonhundra +nittontusen +nittorp +nittorps +njurar +njurarna +njurarnas +njurars +njure +njuren +njurens +njursvikt +njurunda +njurundas +njut +njuta +njutas +njutbar +njutbara +njutbart +njuter +njutit +njutits +njutning +njutningar +njutningarna +njutningarnas +njutningars +njutningen +njutningens +njutnings +njuts +noak +noaks +nod +noden +nodens +noder +noderna +nodernas +noders +nods +nog +noga +noggrann +noggranna +noggrannare +noggrannas +noggrannast +noggrannaste +noggranne +noggrannes +noggrannhet +noggrannheten +noggrannhetens +noggrannhets +noggrant +nokia +nokias +nomad +nomader +nomaderna +nomadernas +nomaders +nominera +nominerad +nominerade +nominerades +nominerar +nomineras +nominerat +nominerats +nominering +nomineringar +nomineringarna +nomineringarnas +nomineringars +nomineringen +nomineringens +nominerings +nonsens +nora +noras +norberg +norbergs +nord +nordan +nordanvind +nordanvinden +nordanvindens +nordbo +nordbon +nordbons +nordbor +nordborna +nordbornas +nordbors +norden +nordens +nordin +nordins +nordisk +nordiska +nordiskt +nordkorea +nordkoreas +nordkoster +nordkosters +nordmarkshyttan +nordmarkshyttans +nordost +norge +norges +norm +normen +normens +normer +normera +normerad +normerade +normerades +normerar +normeras +normerat +normerats +normering +normeringen +normeringens +normerna +normernas +normers +normgrupp +normgruppen +normgruppens +norna +nornan +nornans +nornas +nornor +nornorna +nornornas +nornors +norr +norra +norrahammar +norrahammars +norrfors +norrman +norrmannen +norrmannens +norrmans +norrsken +norrskenet +norrskenets +norrskens +norrsundet +norrsundets +norrut +norsborg +norsborgs +norsk +norska +norskt +norstetds +nos +nosen +nosens +nossebro +nossebros +not +nota +notariat +notarie +notarier +notarierna +notariernas +notariers +notarius +notation +notationen +notationens +notations +noten +notens +noter +notera +noterad +noterade +noterades +noterar +noterat +noterats +notering +noteringar +noteringarna +noteringarnas +noteringars +noteringen +noteringens +noterings +noterna +noternas +noters +notifikation +notifikationen +notifikationens +notifikations +notis +notisen +notisens +notiser +notiserna +notisernas +notisers +notorisk +notoriska +notoriskt +nots +nova +novan +novans +novas +november +novembers +novis +novisen +novisens +noviser +noviserna +novisernas +novisers +nubb +nuet +nuets +numer +numera +numerisk +numeriska +numeriskt +nummer +nummerordning +nummerordningen +nummerordningens +nummerordnings +nummers +numren +numrens +numrera +numrerad +numrerade +numrerades +numrerar +numreras +numrerat +numrerats +numrering +numreringen +numreringens +numret +numrets +numro +nunna +nunnan +nunnans +nunnor +nunnorna +nunnornas +nunnors +nupit +nupits +nutid +nutida +nutiden +nutidens +nuvarande +nya +nyans +nyansen +nyansens +nyanser +nyansera +nyanserad +nyanserade +nyanserades +nyanserar +nyanseras +nyanserat +nyanserats +nyanserna +nyansernas +nyansers +nyanskaffning +nyanskaffningar +nyanskaffningarna +nyanskaffningarnas +nyanskaffningars +nyanskaffningen +nyanskaffningens +nyanskaffnings +nyare +nyas +nyast +nyaste +nybakad +nybakade +nybakat +nyberg +nybergs +nyborg +nyborgs +nybro +nybros +nybyggare +nybyggaren +nybyggarens +nybyggares +nybyggarna +nybyggarnas +nybyggd +nybyggda +nybyggnad +nybyggnaden +nybyggnadens +nybyggt +nyck +nycken +nyckens +nycker +nyckerna +nyckernas +nyckers +nydiskad +nydiskade +nydiskat nye nyes +nyfiken +nyfikenhet +nyfikenheten +nyfikenhetens +nyfiket +nyfikna +nyfiknare +nyfiknast +nyfiknaste +nygift +nygifta +nygiftas +nygifte +nygiftes +nyhammar +nyhammars +nyhet +nyheten +nyhetens +nyheter +nyheterna +nyheternas +nyheters +nyhets +nyhetsprogram +nyhetsprogrammen +nyhetsprogrammens +nyhetsprogrammet +nyhetsprogrammets +nyhetsprograms +nyhetsrapportering +nyhetsrapporteringen +nyhetsrapporteringens +nyhetsrapporterings +nyinstiftad +nyinstiftade +nyinstiftat +nykommen +nykommet +nykomna +nykroppa +nykroppas +nykter +nykterist +nykteristen +nykteristens +nyktert +nyktra +nyktrade +nyktrar +nyktrare +nyktrast +nyktraste +nyktrat +nykvarn +nykvarns +nymf +nymfen +nymfens +nymfer +nymferna +nymfernas +nymfers +nymfs +nymodig +nymodiga +nymodigare +nymodigas +nymodigast +nymodigaste +nymodige +nymodiges +nymodighet +nymodigheten +nymodighetens +nymodigheter +nymodigheterna +nymodigheternas +nymodigheters +nymodighets +nymodigt +nyordning +nyordningar +nyordningarna +nyordningarnas +nyordningars +nyordningen +nyordningens +nyordnings +nyp +nypa +nypan +nypans +nypas +nyper +nypor +nyporna +nypornas +nypors +nypris +nyps +nyqvist +nyqvists +nyregistrera +nyregistrerad +nyregistrerade +nyregistrerades +nyregistrerar +nyregistreras +nyregistrerat +nyregistrerats +nyrekrytering +nyrekryteringar +nyrekryteringarna +nyrekryteringarnas +nyrekryteringars +nyrekryteringen +nyrekryteringens +nyrekryterings +nys +nysa +nysas +nyser +nyskapa +nyskapade +nyskapades +nyskapande +nyskapandet +nyskapandets +nyskapar +nyskapas +nyskapat +nyskapats +nyskick +nyskriven +nyskrivet +nyskrivna +nyss +nyst +nysta +nystade +nystar +nystartad +nystartade +nystartat +nystat +nyste +nystes +nysts +nytt +nytta +nyttan +nyttans +nyttig +nyttiga +nyttigare +nyttigas +nyttigast +nyttigaste +nyttige +nyttiges +nyttighet +nyttigheten +nyttighetens +nyttighets +nyttigt +nyttja +nyttjad +nyttjade +nyttjades +nyttjande +nyttjandet +nyttjandets +nyttjar +nyttjas +nyttjat +nyttjats +nyutgiven +nyutgivet +nyutgivna +nyutkommen +nyutkommet +nyutkomna +nyvaknande +oadresserad +oadresserade +oadresserat +oaktat +oaktsamhet +oaktsamheten +oaktsamhetens +oaktsamhets +oanad +oanade +oanat +oansvarig +oansvariga +oansvarigare +oansvarigas +oansvarigast +oansvarigaste +oansvarige +oansvariges +oansvarigt +oas +oasen +oasens +oaser +oaserna +oasernas +oasers +oavbruten +oavbrutet +oavbrutna +oavgjord +oavgjorda +oavgjort +oavkortad +oavkortade +oavkortat +oavsedd +oavsedda +oavsett +obduktion +obduktionen +obduktionens +obduktioner +obduktionerna +obduktionernas +obduktioners +obduktions +obearbetad +obearbetade +obearbetat +obebodd +obebodda +obebott +obedd +obedda +obefogad +obefogade +obefogat +obehag +obehagen +obehagens +obehaget +obehagets +obehags +obehindrad +obehindrade +obehindrat +obekant +obekanta +obekantare +obekantas +obekantast +obekantaste +obekante +obekantes +obekymrad +obekymrade +obekymrat +obemannad +obemannade +obemannat +oberoende +obesmittad +obesmittade +obesmittat +obett +obevakad +obevakade +obevakat +obevandrad +obevandrade +obevandrat +objekt +objekten +objektens +objektiv +objektiva +objektivare +objektivast +objektivaste +objektivism +objektivismen +objektivismens +objektivitet +objektiviteten +objektivitetens +objektivt +objuden +objudet +objudna +objudne +oboe +oboen +oboens +oboer +oboerna +oboernas +oboers +obrukbar +obrukbara +obrukbart +obruten +obrutet +obrutna +observant +observanta +observantare +observantast +observantaste +observation +observationen +observationens +observationer +observationerna +observationernas +observationers +observations +observatorier +observatorierna +observatoriernas +observatoriers +observatoriet +observatoriets +observatorium +observera +observerad +observerade +observerades +observerar +observeras +observerat +observerats +obskyr +obskyra +obskyrt +obstinat +obstinata +obunden +obundet +obundna +ocean +oceanen +oceanens +oceaner +oceanerna +oceanernas +oceaners +ocensurerad +ocensurerade +ocensurerat +och +ock +ocker +ockrare +ockraren +ockrarens +ockrares +ockrarna +ockrarnas +ockupation +ockupationen +ockupationens +ockupations +ockupera +ockuperad +ockuperade +ockuperades +ockuperar +ockuperas +ockuperat +ockuperats +odaterad +odaterade +odaterat +odds +oddsen +oddsens +oddset +oddsets +ode +odefinierad +odefinierade +odefinierat +odefinierbar +odefinierbara +odefinierbart +odemokratisk +odemokratiska +odemokratiskt +oden +odens +odensbacken +odensbackens +odense +odenses +odifferentierad +odifferentierade +odifferentierat +odjur +odjuret +odjurets +odokumenterad +odokumenterade +odokumenterat +oegennyttig +oegennyttiga +oegennyttigt +oengagerad +oengagerade +oengagerat +oenig +oeniga +oenighet +oenigheten +oenighetens +oenighets +oenigt +oense +oerfaren +oerfarenhet +oerfarenheten +oerfarenhetens +oerfarenhets +oerfaret +oerfarna +ofattbar +ofattbara +ofattbart +offensiv +offensiven +offensivens +offensiver +offensiverna +offensivernas +offensivers +offer +offers +offert +offerten +offertens +offerter +offerterna +offerternas +offerters +officer +officerare +officeraren +officerarens +officerares +officerarna +officerarnas +officeren +officerens +officers +officrar +officrarna +officrarnas +officrars +offra +offrad +offrade +offrades +offrar +offras +offrat +offrats +offren +offrens +offret +offrets +ofin +ofina +ofint +ofog +oformaterad +oformaterade +oformaterat +oformatterad +oformatterade +oformatterat +ofrihet +ofriheten +ofrihetens +ofrihets +ofruktbar +ofruktbara +ofruktbart +ofta +oftare +oftast +ogenerad +ogenerade +ogenerat +ogift +ogifta +ogiftas +ogjord +ogjorda +ogjort +ograderad +ograderade +ograderat +ograverad +ograverade +ograverat +ogripbar +ogripbara +ogripbart +ogrundad +ogrundade +ogrundat +ogudaktig +ogudaktiga +ogudaktigas +ogudaktige +ogudaktiges +ogudaktighet +ogudaktigheten +ogudaktighetens +ogudaktigt +ogynnsam +ogynnsamma +ogynnsammare +ogynnsammast +ogynnsammaste +ogynnsamt +ohejdbar +ohejdbara +ohejdbart +ohyfsad +ohyfsade +ohyfsat +ohygienisk +ohygieniska +ohygieniskt +oidentifierad +oidentifierade +oidentifierat +oinitierad +oinitierade +oinitierat +oinsatt +oinsatta +oinspirerad +oinspirerade +oinspirerat +oinsprirerad +oinsprirerade +oinsprirerat +ointressant +ointressanta +ointresse +ointresserad +ointresserade +ointresserat +oinvigd +oinvigda +oinvigt +oja +ojade +ojar +ojat +oken +okens +oket +okets +okritisk +okritiska +okritiskt +okryddad +okryddade +okryddat +oktagon +oktagoner +oktagonerna +oktagonernas +oktagoners +oktav +oktaven +oktavens +oktaver +oktaverna +oktavernas +oktavers +oktett +oktetten +oktettens +oktetter +oktetterna +oktetternas +oktetters +oktober +oktobers +okunnig +okunniga +okunnigare +okunnigast +okunnigaste +okunnighet +okunnigheten +okunnighetens +okunnighets +okunnigt +okunskap +okynne +okynnet +okynnets +omak +omaka +oman +omans +omarbeta +omarbetad +omarbetade +omarbetades +omarbetar +omarbetas +omarbetat +omarbetats +omarbetning +omarbetningar +omarbetningarna +omarbetningarnas +omarbetningars +omarbetningen +omarbetningens +omarbetnings +ombads +ombedd +ombedda +ombedes +ombeds +ombett +ombonad +ombonade +ombonat +ombord +ombud +ombuden +ombudens +ombudet +ombudets +ombuds +ombudsman +ombudsmannen +ombudsmannens +ombudsmans +ombunden +ombundet +ombundna +ombyggd +ombyggda +ombyggnad +ombyggnaden +ombyggnadens +ombyggnads +ombyggt +ombyte +ombytes +ombytet +ombytets +ombytt +ombytta +omdefiniera +omdefinierad +omdefinierade +omdefinierades +omdefinierar +omdefinieras +omdefinierat +omdefinierats +omdirigera +omdirigerad +omdirigerade +omdirigerades +omdirigerar +omdirigeras +omdirigerat +omdirigerats +omdirigering +omdirigeringar +omdirigeringarna +omdirigeringarnas +omdirigeringars +omdirigeringen +omdirigeringens +omdirigerings +omdiskuterad +omdiskuterade +omdiskuterat +omdisponera +omdisponerad +omdisponerade +omdisponerades +omdisponerar +omdisponeras +omdisponerat +omdisponerats +omdisposition +omdispositionen +omdispositionens +omdispositions +omedveten +omedvetet +omedvetna +omega +omen +omfamna +omfamnad +omfamnade +omfamnades +omfamnar +omfamnas +omfamnat +omfamnats +omfatta +omfattad +omfattade +omfattades +omfattande +omfattandet +omfattandets +omfattar +omfattas +omfattat +omfattats +omfattning +omfattningar +omfattningarna +omfattningarnas +omfattningars +omfattningen +omfattningens +omfattnings +omforma +omformad +omformade +omformades +omformandet +omformar +omformas +omformat +omformatera +omformaterad +omformaterade +omformaterades +omformaterar +omformaterat +omformaterats +omformatering +omformateringar +omformateringarna +omformateringarnas +omformateringars +omformateringen +omformateringens +omformaterings +omformats +omgav +omgavs +omge +omger +omges +omgift +omgifta +omgiva +omgivas +omgiven +omgivet +omgivna +omgivning +omgivningar +omgivningarna +omgivningarnas +omgivningars +omgivningen +omgivningens +omgivnings +omgjord +omgjorda +omgjort +omgripande +omigen +omkast +omkasta +omkastad +omkastade +omkastat +omkoda +omkodad +omkodade +omkodades +omkodar +omkodas +omkodat +omkodats +omkom +omkomma +omkommer +omkommit +omkonfigurering +omkonfigureringar +omkonfigureringarna +omkonfigureringarnas +omkonfigureringars +omkonfigureringen +omkonfigureringens +omkonfigurerings +omkostnad +omkostnaden +omkostnadens +omkostnader +omkostnaderna +omkostnadernas +omkostnaders +omkostnads +omkrets +omkretsen +omkretsens +omkring +omnejd +omnipotens +omnipotent +omnipotenta +omnumrering +omnumreringar +omnumreringarna +omnumreringarnas +omnumreringars +omnumreringen +omnumreringens +omnumrerings +omodern +omoderna +omodernt +omogen +omoget +omogna +omognare +omognast +omognaste +omonterad +omonterade +omonterat +omorganisation +omorganisationen +omorganisationens +omorganisations +omorganisera +omorganiserad +omorganiserade +omorganiserades +omorganiserar +omorganiseras +omorganiserat +omorganiserats +omotiverad +omotiverade +omotiverat +omprioritera +omprioriterad +omprioriterade +omprioriterades +omprioriterar +omprioriteras +omprioriterat +omprioriterats +omredigera +omredigerad +omredigerade +omredigerades +omredigerar +omredigeras +omredigerat +omredigerats +omregistrering +omregistreringen +omregistreringens +omregistrerings +omsatt +omsatte +omsider +omskakande +omskapa +omskapad +omskapade +omskapades +omskapar +omskapas +omskapat +omskapats +omskrev +omskriva +omskrivas +omskriven +omskriver +omskrivet +omskrivit +omskrivna +omskrivning +omskrivningar +omskrivningarna +omskrivningarnas +omskrivningars +omskrivningen +omskrivningens +omskrivnings +omskruten +omskrutet +omskrutna +omskuren +omskuret +omskurna +omsorg +omsorgen +omsorgens +omsorger +omsorgerna +omsorgernas +omsorgers +omsorgs +omstart +omstarten +omstartens +omstarter +omstarterna +omstarternas +omstarters +omstarts +omstrukturera +omstrukturerad +omstrukturerade +omstrukturerades +omstrukturerande +omstrukturerandet +omstrukturerandets +omstrukturerar +omstrukturerat +omstrukturerats +omsvep +omtanke +omtyckt +omtyckta +omtydning +omtydningar +omtydningarna +omtydningarnas +omtydningars +omtydningen +omtydningens +omtydnings +ond +onda +ondas +onde +ondes +ondo +ondsint +ondsinta +ondska +ondskan +ondskans +onjutbar +onjutbara +onjutbart +onsdag +onsdagar +onsdagarna +onsdagarnas +onsdagars +onsdagen +onsdagens +onsdags +ont +onyanserad +onyanserade +onyanserat +onykter +onyktert +onyktra +onyttig +onyttiga +onyttigas +onyttigt +onyx +onyxar +onyxarna +onyxarnas +onyxars +onyxen +onyxens +oomskuren +oomskuret +oomskurna +oordning +oordningen +oordningens +oordnings +opak +opaka +opakt +opartisk +opartiska +opartiskt +opassande +opera +operan +operand +operanden +operandens +operander +operanderna +operandernas +operanders +operands +operans +operas +operation +operationen +operationens +operationer +operationerna +operationernas +operationers +operations +operativ +operativa +operativsystem +operativsystemen +operativsystemens +operativsystemet +operativsystemets +operativsystems +operativt +operator +operatorn +operatorns +operators +operaverk +operaverken +operaverkens +operaverket +operaverkets +operaverks +operera +opererad +opererade +opererades +opererar +opererat +opererats +operor +operorna +operornas +operors +opinion +opinionen +opinionens +opinioner +opinionerna +opinionernas +opinioners +opinions +opp +opponent +opponenten +opponentens +opponenter +opponenterna +opponenternas +opponenters +opponents +opponera +opponerad +opponerade +opponerades +opponerande +opponerandet +opponerandets +opponerar +opponeras +opponerat +opponerats +opportun +opportuna +opportunare +opportunas +opportunast +opportunaste +opportune +opportunes +opportunt +opposition +oppositionen +oppositionens +oppositions +opraktisk +opraktiska +opraktiskt +optik +optiken +optikens +optimera +optimerad +optimerade +optimerades +optimerande +optimerandet +optimerandets +optimerar +optimeras +optimerat +optimerats +optimering +optimeringen +optimeringens +optimerings +optimism +optimismen +optimismens +optimist +optimisten +optimistens +optimister +optimisterna +optimisternas +optimisters +optimistisk +optimistiska +optimistiskt +option +optionen +optionens +optioner +optionerna +optionernas +optioners +options +optisk +optiska +optiskt +opus +orakad +orakade +orakat +orange +ord +orda +ordade +ordades +ordar +ordas +ordat +ordats +ordbok +ordboken +ordbokens +ordboks +ordbrytning +ordbrytningar +ordbrytningarna +ordbrytningarnas +ordbrytningars +ordbrytningen +ordbrytningens +ordbrytnings +orden +ordens +order +ordermottagare +ordermottagaren +ordermottagarens +ordermottagares +ordermottagarna +ordermottagarnas +ordermottagning +ordermottagningen +ordermottagningens +ordern +orderna +ordernas +orderns +orders +ordet +ordets +ordfattig +ordfattiga +ordfattigt +ordinarie +ordinera +ordinerad +ordinerade +ordinerades +ordinerar +ordineras +ordinerat +ordinerats +ordna +ordnad +ordnade +ordnades +ordnande +ordnandet +ordnandets +ordnar +ordnas +ordnat +ordnats +ordning +ordningar +ordningarna +ordningarnas +ordningars +ordningen +ordningens +ordnings +ordningsvakt +ordningsvakten +ordningsvaktens +ordningsvakter +ordningsvakterna +ordningsvakternas +ordningsvakters +ordningsvakts +ords +ordvits +ordvitsar +ordvitsarna +ordvitsarnas +ordvitsars +ordvitsen +ordvitsens +oreda +oredan +oredans +oredas +oredigerad +oredigerade +oredigerat +oren +orena +orene +orent +orera +orerade +orerar +orerat +orering +oreringen +oreringens +orerings +oreserverad +oreserverade +oreserverat +oret +organ +organen +organens +organet +organets +organisation +organisationen +organisationens +organisationer +organisationerna +organisationernas +organisationers +organisations +organisationsteori +organisationsteorin +organisationsteorins +organisatorisk +organisatoriska +organisatoriskt +organisera +organiserad +organiserade +organiserades +organiserar +organiseras +organiserat +organiserats +organisk +organiska +organiskt +organism +organismen +organismens +organismer +organismerna +organismernas +organismers +organisms +organist +organisten +organistens +organister +organisterna +organisternas +organisters +organists +organs +orgasm +orgasmen +orgasmens +orgasmer +orgasmerna +orgasmernas +orgasmers +orientera +orienterad +orienterade +orienterades +orienterar +orienterat +orienterats +origo +oriktig +oriktiga +oriktigt +orimmad +orimmade +orimmat +ork +orka +orkade +orkan +orkanen +orkanens +orkaner +orkanerna +orkanernas +orkaners +orkans +orkar +orkas +orkat +orken +orkens +orkester +orkestern +orkesterns +orkestrar +orkestrarna +orkestrarnas +orkestrars +orm +ormar +ormarna +ormarnas +ormars +ormaryd +ormaryds +ormbett +ormbetten +ormbettens +ormbettet +ormbettets +ormbetts +ormbunkar +ormbunkarna +ormbunkarnas +ormbunkars +ormbunke +ormbunken +ormbunkens +ormen +ormens +orms +orna +oro +oroa +oroad +oroade +oroades +oroande +oroar +oroas +oroat +oroats +oron +orons +orosmoment +orosmomentet +orosmomentets +orosmoments +orrar +orrarna +orrarnas +orrars +orre +orrefors +orren +orrens +orres +orsa +orsak +orsaka +orsakad +orsakade +orsakades +orsakande +orsakandet +orsakandets +orsakar +orsakas +orsakat +orsakats +orsaken +orsakens +orsaker +orsakerna +orsakernas +orsakers +orsaks +orsakskedja +orsakskedjan +orsakskedjans +orsakskedjor +orsakskedjorna +orsakskedjornas +orsakskedjors +orsas +ort +orten +ortens +orter +orterna +orternas +orters +ortograf +ortografen +ortografens +ortografer +ortograferna +ortografernas +ortografers +ortografi +ortografien +ortografiens +ortografier +ortografierna +ortografiernas +ortografiers +ortografin +ortografins +ortografisk +ortografiska +ortografiskt +ortografs +ortoped +ortopeden +ortopedens +ortopeder +ortopederna +ortopedernas +ortopeders +ortopedisk +ortopediska +ortopediskt +ortopeds +orts +orvar +orvars +osagd +osagda +osagt +osams +osann +osanna +osant +osby +osbys +oscar +oscars +osedd +osedda +osett +oskadad +oskadade +oskadat +oskadd +oskadda +oskar +oskars +oskarshamn +oskarshamns +oskatt +oskattbar +oskattbara +oskattbart +oskiftad +oskiftade +oskiftat +oskodd +oskodda +oskotsk +oskotska +oskotskt +oskott +oskriven +oskrivet +oskrivna +oskyddad +oskyddade +oskyddat +osorterad +osorterade +osorterat +oss +ost +ostadig +ostadiga +ostadigt +osten +ostens +ostron +ostronen +ostronens +ostronet +ostronets +ostrons +ostrukturerad +ostrukturerade +ostrukturerat +osund +osunda +osunt +osvensk +osvenska +osvenskt +osympatisk +osympatiska +osympatiskare +osympatiskast +osympatiskaste +osympatiske +osympatiskt +osyrad +osyrade +osyrat +osystematiserad +osystematiserade +osystematiserat +otack +otacksam +otacksamhet +otacksamheten +otacksamhetens +otacksamhets +otacksamma +otacksammare +otacksammast +otacksammaste +otacksamt +otid +otro +otrogen +otroget +otrogna +otrogne +otrohet +otroheten +otrohetens +otrohets +otron +otrons +otros +otrygg +otrygga +otrygghet +otryggheten +otrygghetens +otrygghets +otryggt +otto +ottos +otukt +otukten +otuktens +otukts +otur +oturen +oturens +oturs +otvagen +otvaget +otvagna +otvetydig +otvetydiga +otvetydigt +otvungen +otvunget +otvungna +otyg +otygen +otygens +otyget +otygets +outbyggd +outbyggda +outbyggt +outforskad +outforskade +outforskat +ovan +ovana +ovane +ovanjords +ovansida +ovansidan +ovansidans +ovansidas +ovant +ovarsam +ovarsamhet +ovarsamheten +ovarsamhetens +ovarsamma +ovarsammare +ovarsammast +ovarsammaste +ovarsamt +ove +oves +ovetande +ovett +ovidkommande +oviken +ovikens +oviktig +oviktiga +oviktigt +ovis +ovisa +oviss +ovissa +ovisshet +ovissheten +ovisshetens +ovisst +ovist +oxar +oxarna +oxarnas +oxars +oxe +oxen +oxens +oxes +oxford +oxfords +oxid +oxidation +oxidationen +oxidationens +oxidations +oxiden +oxidens +oxider +oxidera +oxiderad +oxiderade +oxiderades +oxiderar +oxideras +oxiderat +oxiderats +oxiderna +oxidernas +oxiders +oxie +oxies +oxvagn +oxvagnar +oxvagnarna +oxvagnarnas +oxvagnars +oxvagnen +oxvagnens +pacifistisk +pacifistiska +pacifistiskt +pack +packa +packad +packade +packades +packande +packandet +packandets +packar +packas +packat +packats +packe +packen +packens +packning +packningar +packningarna +packningarnas +packningars +packningen +packningens +packnings +padda +paddan +paddans +paddor +paddorna +paddornas +paddors +paff +paffa +paffare +paffas +paffast +paffaste +paffe +paffes +pafft +page +pagen +pagens +pager +pagerna +pagernas +pagers +paginering +pagineringen +pagineringens +paginerings +paket +paketen +paketens +paketet +paketets +pakistan +pakistans +pakt +pakten +paktens +pakter +pakterna +pakternas +pakters +pakts +pamp +pampar +pamparna +pamparnas +pampars +pampen +pampens +pampig +pampiga +pampigare +pampigast +pampigaste +pampighet +pampigheten +pampighetens +pampigt +pamps +panama +panamas +panik +paniken +panikens +paniks +panna +pannan +pannans +pannkaka +pannkakan +pannkakans +pannkakas +pannkakor +pannkakorna +pannkakornas +pannkakors +pannor +pannorna +pannornas +pannors +pannrum +pannrummen +pannrummens +pannrummet +pannrummets +pansar +pansaren +pansarens +pansaret +pansarets +pansarna +pansarnas +pansarvagn +pansarvagnar +pansarvagnarna +pansarvagnarnas +pansarvagnars +pansarvagnen +pansarvagnens +pansarvagns +pant +panta +pantad +pantade +pantades +pantar +pantas +pantat +pantats +panten +pantens +pantning +pantningen +pantningens +pantnings +papaya +papayan +papayans +papayor +papayorna +papayornas +papayors +papegoja +papegojan +papegojans +papegojor +papegojorna +papegojornas +papegojors +papp +pappa +pappan +pappans +pappen +pappens +papper +papperen +papperens +papperet +papperets +pappers +pappersark +pappersarken +pappersarkens +pappersarket +pappersarkets +pappersbunt +pappersbuntar +pappersbuntarna +pappersbuntarnas +pappersbuntars +pappersbunten +pappersbuntens +papperskorg +papperskorgar +papperskorgarna +papperskorgarnas +papperskorgars +papperskorgen +papperskorgens +papperstiger +papperstigern +papperstigerns +papperstigrar +papperstigrarna +papperstigrarnas +papperstigrars +pappet +pappets +pappor +papporna +pappornas +pappors +pappret +papprets +paprika +paprikan +paprikans +paprikor +paprikorna +paprikornas +paprikors +papua +papyrus +par +para +parad +parade +paraden +paradens +parader +paraderna +paradernas +paraders +parades +paradigm +paradis +paradiset +paradisets +paradox +paradoxen +paradoxens +paradoxer +paradoxerna +paradoxernas +paradoxers +parads +parafrasera +parafraserad +parafraserade +parafraserades +parafraserar +parafraseras +parafraserat +parafraserats +paragraf +paragrafen +paragrafens +paragrafer +paragraferna +paragrafernas +paragrafers +paraguay +paraguays +parameter +parametern +parameterns +parameters +parametrar +parametrarna +parametrarnas +parametrars +parametrisera +parametriserad +parametriserade +parametriserades +parametriserar +parametriseras +parametriserat +parametriserats +paranoia +paranoian +paranoians +paranoias +paranoid +paranoida +paranoidare +paranoidast +paranoidaste +parant +paranta +parar +paras +parasit +parat +parats +paren +parens +parentes +parentesen +parentesens +parenteser +parenteserna +parentesernas +parentesers +parentetisk +parentetiska +parentetiskt +parera +parerad +parerade +parerades +parerande +parerandet +parerandets +parerar +pareras +parerat +parerats +paret +parets +paris +paritet +pariteten +paritetens +park +parken +parkens +parker +parkera +parkerad +parkerade +parkerades +parkerar +parkeras +parkerat +parkerats +parkering +parkeringar +parkeringarna +parkeringarnas +parkeringars +parkeringen +parkeringens +parkerings +parkeringsautomat +parkeringsautomaten +parkeringsautomatens +parkeringsautomater +parkeringsautomaterna +parkeringsautomaternas +parkeringsautomaters +parkeringsautomats +parkeringshus +parkeringshusen +parkeringshusens +parkeringshuset +parkeringshusets +parkerna +parkernas +parkers +parning +parningen +parningens +parodi +parodier +parodierna +parodiernas +parodiers +parodin +parodins +parodis +pars +part +parten +partens +parter +parterna +parternas +parters +parti +particip +partier +partierna +partiernas +partiers +partiet +partiets +partisk +partiska +partiskt +partition +partitionen +partitionens +partitioner +partitionerna +partitionernas +partitioners +partitions +partitur +partituren +partiturens +partituret +partiturets +partner +partnern +partnerns +partners +party +partyt +partyts +parvis +pascha +paschan +paschans +paschas +pass +passa +passad +passade +passades +passage +passagen +passagens +passagerare +passageraren +passagerarens +passagerares +passagerarna +passagerarnas +passande +passandet +passandets +passar +passas +passat +passats +passen +passens +passera +passerad +passerade +passerades +passerande +passerandet +passerandets +passerar +passeras +passerat +passerats +passering +passeringar +passeringarna +passeringarnas +passeringars +passeringen +passeringens +passerings +passet +passets +passform +passion +passionen +passionens +passionerad +passionerade +passionerat +passiv +passiva +passivare +passivast +passivaste +passivisera +passiviserad +passiviserade +passiviserades +passiviserar +passiviseras +passiviserat +passiviserats +passivitet +passiviteten +passivitetens +passivt +passning +passningar +passningarna +passningarnas +passningars +passningen +passningens +passnings +passus +pasta +pastan +pastans +pastej +pastejen +pastejens +pastejer +pastejerna +pastejernas +pastejers +pastisch +pastor +pastorer +pastorerna +pastorernas +pastorers +pastorn +pastorns +pastors +pastorsexpedition +pastorsexpeditionen +pastorsexpeditionens +pastorsexpeditioner +pastorsexpeditionerna +pastorsexpeditionernas +pastorsexpeditioners +pastorsexpeditions +patent +patenten +patentens +patentet +patentets +patents +paternoster +patetisk +patetiska +patetiskt +patient +patienten +patientens +patienter +patienterna +patienternas +patienters +patina +patos +patrik +patriks +patriot +patrioten +patriotens +patrioter +patrioterna +patrioternas +patrioters +patriotisk +patriotiska +patriotiskt +patronat +paus +pausen +pausens +pauser +pauserna +pausernas +pausers +pedagog +pedagogen +pedagogens +pedagoger +pedagogerna +pedagogernas +pedagogers +pedagogik +pedagogiken +pedagogikens +pedagogisk +pedagogiska +pedagogiskt +pedagogs +pedant +pedanten +pedantens +pedanter +pedanteri +pedanterna +pedanternas +pedanters +pedantisk +pedantiska +pedantiskt +pedants +pehr +pehrs +peka +pekade +pekar +pekare +pekaren +pekarens +pekares +pekarna +pekarnas +pekas +pekat +pekfinger +pekfingret +pekfingrets +pekpinnar +pekpinnarna +pekpinnarnas +pekpinnars +pekpinne +pekpinnen +pekpinnens +penetrera +penetrerad +penetrerade +penetrerades +penetrerar +penetreras +penetrerat +penetrerats +peng +pengar +pengarna +pengarnas +pengars +pengen +pengens +pengs +penna +pennan +pennans +penndrag +penning +penningar +penningarna +penningarnas +penningars +penningen +penningens +penningkista +penningkistan +penningkistans +penningkistor +penningkistorna +penningkistornas +penningkistors +pennings +penningskrin +penningstinna +pennor +pennorna +pennornas +pennors +pension +pensionat +pensionaten +pensionatens +pensionatet +pensionatets +pensionen +pensionens +pensioner +pensionera +pensionerad +pensionerade +pensionerades +pensionerar +pensioneras +pensionerat +pensionerats +pensionerna +pensionernas +pensioners +pensions +pentagon +pentagons +pentry +pep +peppa +peppad +peppade +peppades +peppar +pepparkaka +pepparkakan +pepparkakans +pepparkakor +pepparkakorna +pepparkakornas +pepparkakors +peppas +peppat +peppats +peps per +perception +perceptionen +perceptionens +perceptions +perestrojka +perestrojkan +perestrojkans +perestrojkas +perfekt +perfekta +perforera +perforerad +perforerade +perforerades +perforerar +perforeras +perforerat +perforerats +perforering +perforeringar +perforeringarna +perforeringarnas +perforeringars +perforeringen +perforeringens +perforerings +pergament +pergamenten +pergamentens +pergamentet +pergamentets +perifer +perifera +periferi +periferier +periferierna +periferiernas +periferiers +periferin +periferins +perifert +period +perioden +periodens +perioder +perioderna +periodernas +perioders +periodicitet +periodiciteten +periodicitetens +periodvis +permanent +permanenta +permission +permissionen +permissionens +permutation +permutationen +permutationens +permutationer +permutationerna +permutationernas +permutationers +permutations +permutera +permuterad +permuterade +permuterades +permuterar +permuteras +permuterat +permuterats +perrong +perrongen +perrongens +perronger +perrongerna +perrongernas +perrongers +pers +persisk +persiska +persiskt +person +personbeskrivning +personbeskrivningar +personbeskrivningarna +personbeskrivningarnas +personbeskrivningars +personbeskrivningen +personbeskrivningens +personbeskrivnings +persondator +persondatorer +persondatorerna +persondatorernas +persondatorers +persondatorn +persondatorns +personen +personens +personer +personerna +personernas +personers +personifiera +personifierad +personifierade +personifierades +personifierar +personifierat +personifierats +personkonto +personkrets +personkretsen +personkretsens +personnummer +personnummers +personnumren +personnumrens +personnumret +personnumrets +persons +personteckning +personteckningar +personteckningarna +personteckningarnas +personteckningars +personteckningen +personteckningens +persontecknings +personuppgift +personuppgifter +personuppgifterna +personuppgifternas +personuppgifters +perspektiv +perspektiven +perspektivens +perspektivet +perspektivets +perspektivs +persson +perssons +perstorp +perstorps +peru +peruk +peruken +perukens +peruker +perukerna +perukernas +perukers +peruks +perus +pervers +perversa +perverst +perverterad +perverterade +perverterat +pessimism +pessimismen +pessimismens +pessimist +pessimisten +pessimistens +pessimister +pessimisterna +pessimisternas +pessimisters +pessimistisk +pessimistiska +pessimistiskare +pessimistiskast +pessimistiskaste +pessimistiskt +pest +pestdrabbad +pestdrabbade +pestdrabbat +pesten +pestens +peta +petad +petade +petades +petar +petas +petat +petats +peter +peters +petig +petiga +petigt +petita +petitess +petitessen +petitessens +petitesser +petitesserna +petitessernas +petitessers +petitum +petra +petras +pettersson +petterssons +pia +pianist +pianisten +pianistens +pianister +pianisterna +pianisternas +pianisters +piano +pias +pick +pierre +pierres +pietet +piga +pigan +pigans +pigg +pigga +piggt +pigment +pigor +pigorna +pigornas +pigors +pik +pikar +pikarna +pikarnas +pikars +piken +pikens +pin +pina +pinad +pinade +pinades +pinande +pinandet +pinandets +pinar +pinas +pinat +pinats +pingst +pingstdag +pingstdagen +pingstdagens +pingvin +pingvinen +pingvinens +pingviner +pingvinerna +pingvinernas +pingviners +pingvins +pinnar +pinnarna +pinnarnas +pinnars +pinne +pinnen +pinnens +pinnes +pinsam +pinsamhet +pinsamheten +pinsamhetens +pinsamma +pinsammare +pinsammast +pinsammaste +pinsamt +pip +pipa +pipan +pipans +pipas +piper +pipig +pipiga +pipigt +pipit +pipits +pipor +piporna +pipornas +pipors +pips +pirat +piraten +piratens +pirater +piraterna +piraternas +piraters +piratkopiering +piratkopieringen +piratkopieringens +piratkopierings +pirats +piska +piskad +piskade +piskades +piskan +piskans +piskar +piskas +piskat +piskats +piskor +piskorna +piskornas +piskors +pissoar +pissoaren +pissoarens +pittoresk +pittoreska +pittoreskt +pizza +pizzan +pizzans +pizzeria +pizzerian +pizzerians +pizzerior +pizzeriorna +pizzeriornas +pizzeriors +pizzor +pizzorna +pizzornas +pizzors +pjosk +pocka +pockade +pockades +pockande +pockandet +pockandets +pockar +pockas +pockat +pockats +podier +podierna +podiernas +podiers +podiet +podiets +podium +poem +poemen +poemens +poemet +poemets +poems +poesi +poesin +poesins +poet +poeten +poetens +poeter +poeterna +poeternas +poeters +poetisk +poetiska +poetiskt +pojkar +pojkarna +pojkarnas +pojkars +pojke +pojken +pojkens +pojkes +pompa +pompan +pompans +pompas +ponera +ponerade +ponerar +ponerat +pontus +pop +popcorn +popcornen +popcornens +popcornet +popcornets +popcorns +poppig +poppiga +poppigt +poppis +porjus +pornograf +pornografen +pornografens +pornografi +pornografin +pornografins +pornografis +porr +porren +porrens +port +portar +portarna +portarnas +portars +porten +portens +portion +portionen +portionens +portioner +portionerna +portionernas +portioners +portions +porto +portot +portots +ports +portugis +portugisen +portugisens +portugiser +portugiserna +portugisernas +portugisers +portvakt +portvaktare +portvaktaren +portvaktarens +portvaktares +portvaktarna +portvaktarnas +portvakten +portvaktens +portvakter +portvakterna +portvakternas +portvakters +posera +poserade +poserades +poserande +poserandet +poserandets +poserar +poseras +poserat +poserats +position +positionen +positionens +positioner +positionerna +positionernas +positioners +positions +positiv +positiva +positivare +positivas +positivast +positivaste +positive +positives +positivt +post +posta +postadress +posten +postens +poster +postera +posterad +posterade +posterar +posterat +posterna +posternas +posters +postgiro +postgirokonto +postgirokontot +postgirokontots +postgironummer +postgirot +postgirots +postman +postmodern +postmoderna +postmodernt +postning +postningen +postningens +postnings +postnumret +postorder +potatis +potatisar +potatisarna +potatisarnas +potatisars +potatisen +potatisens +potatissoppa +potatissoppan +potatissoppans +potatissoppor +potatissopporna +potatissoppornas +potatissoppors +potens +potensen +potensens +potenser +potenserna +potensernas +potensers +potentat +potentater +potentaterna +potentaternas +potentaters +pott +potta +pottan +pottans +pottas +potten +pottens +potter +potterna +potternas +potters +pottor +pottorna +pottornas +pottors +prag +pragmatisk +pragmatiska +pragmatiskt +prags +prakt +prakten +praktens +praktik +praktikant +praktikanten +praktikantens +praktikanter +praktikanterna +praktikanternas +praktikanters +praktikants +praktiken +praktikens +praktiker +praktikerna +praktikernas +praktikers +praktiks +praktisera +praktiserad +praktiserade +praktiserades +praktiserande +praktiserandet +praktiserandets +praktiserar +praktiserat +praktiserats +praktisk +praktiska +praktiskt +prat +prata +pratad +pratade +pratades +pratande +pratandet +pratandets +pratar +pratas +pratat +pratats +pratet +pratets +pratig +pratiga +pratigt +pratstund +pratstunden +pratstundens +pratstunder +pratstunderna +pratstundernas +pratstunders +praxis +precis +precisa +precisare +precisast +precisaste +precisera +preciserad +preciserade +preciserades +preciserande +preciserandet +preciserandets +preciserar +preciseras +preciserat +preciserats +precisering +preciseringar +preciseringarna +preciseringarnas +preciseringars +preciseringen +preciseringens +preciserings +precision +precisionen +precisionens +precisions +precist +predika +predikad +predikade +predikades +predikan +predikande +predikandet +predikandets +predikans +predikant +predikanten +predikantens +predikanter +predikanterna +predikanternas +predikanters +predikants +predikar +predikare +predikaren +predikarens +predikares +predikarna +predikarnas +predikas +predikat +predikats +prefekt +prefekten +prefektens +prefekter +prefekterna +prefekternas +prefekters +prefekts +preferens +preferensen +preferensens +preferenser +preferenserna +preferensernas +preferensers +prefix +prefixen +prefixens +prefixet +prefixets +pregnant +pregnanta +pregnantare +pregnantast +pregnantaste +prejudikat +prejudikaten +prejudikatens +prejudikatet +prejudikatets +premie +premien +premiens +premier +premiera +premierad +premierade +premierades +premierar +premieras +premierat +premierats +premierna +premiernas +premiers +premiss +premissen +premissens +premisser +premisserna +premissernas +premissers +prentice +prenumeration +prenumerationen +prenumerationens +prenumerationer +prenumerationerna +prenumerationernas +prenumerationers +prenumerations +preparand +preparanden +preparandens +preparander +preparanderna +preparandernas +preparanders +preparat +preparaten +preparatens +preparatet +preparatets +preparera +preparerad +preparerade +preparerades +preparerande +preparerandet +preparerandets +preparerar +prepareras +preparerat +preparerats +preposition +prepositionen +prepositionens +prepositioner +prepositionerna +prepositionernas +prepositioners +prepositions +presenning +presenningar +presenningarna +presenningarnas +presenningars +presenningen +presenningens +presennings +presens +present +presentation +presentationen +presentationens +presentationer +presentationerna +presentationernas +presentationers +presentations +presenten +presentens +presenter +presentera +presenterad +presenterade +presenterades +presenterar +presenteras +presenterat +presenterats +presenterna +presenternas +presenters +presentkort +presentkorten +presentkortens +presentkortet +presentkortets +presentkorts +presents +president +presidenten +presidentens +presidenter +presidenterna +presidenternas +presidenters +presidents +press +pressa +pressad +pressade +pressades +pressar +pressas +pressat +pressats +pressen +pressens +presstopp +presstoppen +presstoppens +presstoppet +presstoppets +presstopps +prestanda +prestandan +prestandans +prestandas +prestation +prestationen +prestationens +prestationer +prestationerna +prestationernas +prestationers +prestations +prestera +presterade +presterar +presterat +prestige +prestigen +prestigens +presumtiv +presumtiva +presumtivt +pretention +pretentionen +pretentionens +pretentioner +pretentionerna +pretentionernas +pretentioners +pretentions +preussisk +preussiska +preussiskt +preventiv +preventiva +preventivt +prick +pricka +prickad +prickade +prickades +prickande +prickandet +prickandets +prickar +prickarna +prickarnas +prickars +prickas +prickat +prickats +pricken +prickens +prickfri +prickfria +prickfritt +prickig +prickiga +prickigare +prickigast +prickigaste +prickigt +pricks +prima +primfaktor +primfaktorer +primfaktorerna +primfaktorernas +primfaktorers +primfaktorn +primfaktorns +primfaktors +primitiv +primitiva +primitivare +primitivast +primitivaste +primitivt +princip +principen +principens +principer +principerna +principernas +principers +prins +prinsar +prinsarna +prinsarnas +prinsars +prinsen +prinsens +prinsessa +prinsessan +prinsessans +prinsessor +prinsessorna +prinsessornas +prinsessors +priori +prioritera +prioriterad +prioriterade +prioriterades +prioriterar +prioriteras +prioriterat +prioriterats +prioritering +prioriteringar +prioriteringarna +prioriteringarnas +prioriteringars +prioriteringen +prioriteringens +prioriterings +prioritet +prioriteten +prioritetens +pris +prisa +prisad +prisade +prisades +prisande +prisandet +prisandets +prisar +prisas +prisat +prisats +prisen +prisens +priser +priserna +prisernas +prisers +priset +prisets +prisgiva +priskrig +priskrigen +priskrigens +priskriget +priskrigets +priskrigs +prisma +prisman +prismans +prismas +prismor +prismorna +prismornas +prismors +prisnominerad +prisnominerade +prisnominerat +pristagare +pristagaren +pristagarens +pristagares +pristagarna +pristagarnas +privat +privata +privategendom +privatperson +procedur +proceduren +procedurens +procedurer +procedurerna +procedurernas +procedurers +procent +procenten +procentens +procentsats +procentsatsen +procentsatsens +procentsatser +procentsatserna +procentsatsernas +procentsatsers +process +processa +processad +processade +processades +processande +processandet +processandets +processar +processas +processat +processats +processen +processens +processer +processerna +processernas +processers +procession +processionen +processionens +processioner +processionerna +processionernas +processioners +processions +processor +processorer +processorerna +processorernas +processorers +processorn +processorns +processors +producent +producenten +producentens +producenter +producenterna +producenternas +producenters +producera +producerad +producerade +producerades +producerar +producerat +producerats +produkt +produkten +produktens +produkter +produkterna +produkternas +produkters +produktion +produktionen +produktionens +produktioner +produktionerna +produktionernas +produktioners +produktions +produktionsstyrningssystem +produktionsstyrningssystemen +produktionsstyrningssystemens +produktionsstyrningssystemet +produktionsstyrningssystemets +produktiv +produktiva +produktivare +produktivas +produktivast +produktivaste +produktive +produktives +produktivitet +produktiviteten +produktivitetens +produktivt +produkts +profan +profana +profant +professor +professorer +professorerna +professorernas +professorers +professorn +professorns +professors +professur +professuren +professurens +professurer +professurerna +professurernas +professurers +professurs +profet +profeten +profetens +profeter +profetera +profeterad +profeterade +profeterades +profeterande +profeterandet +profeterandets +profeterar +profeteras +profeterat +profeterats +profeterna +profeternas +profeters +profetia +profetian +profetians +profetior +profetiorna +profetiornas +profetiors +profetisk +profetiska +profetiskt +profetissa +profetissan +profetissans +profetissas +profetissor +profets +proffsig +proffsiga +proffsigt +profit +profiten +profitens +prognos +prognosen +prognosens +prognoser +prognoserna +prognosernas +prognosers +prognostisera +prognostiserad +prognostiserade +prognostiserades +prognostiserar +prognostiserat +prognostiserats +program +programansvarig +programbok +programboken +programbokens +programkod +programkoden +programkodens +programmen +programmens +programmera +programmerad +programmerade +programmerades +programmerande +programmerandet +programmerandets +programmerar +programmerare +programmeraren +programmerarens +programmerares +programmerarna +programmerarnas +programmeras +programmerat +programmerats +programmerbar +programmerbara +programmerbart +programmering +programmeringen +programmeringens +programmerings +programmet +programmets +programpunkt +programpunkten +programpunktens +programpunkter +programpunkterna +programpunkternas +programpunkters +programs +programvara +programvaran +programvarans +programvaror +programvarorna +programvarornas +programvarors +progressiv +progressiva +progressivare +progressivast +progressivaste +progressivt +projekt +projektarbete +projektarbeten +projektarbetena +projektarbetenas +projektarbetens +projektarbetes +projektarbetet +projektarbetets +projekten +projektens +projektet +projektets +projektion +projektionen +projektionens +projektioner +projektionerna +projektionernas +projektioners +projektions +projektor +projektorer +projektorerna +projektorernas +projektorers +projektorn +projektorns +projekts +promemoria +promemorian +promemorians +promenad +promenaden +promenadens +promenader +promenaderna +promenadernas +promenaders +promenera +promenerade +promenerar +promenerat +prompt +pronomen +propaganda +propagandaministerier +propagandaministerierna +propagandaministeriernas +propagandaministeriers +propagandaministeriet +propagandaministeriets +propagandaministerium +propagandan +propagandans +propagandas +propagera +propagerade +propagerande +propagerar +propagerat +propexus +proportion +proportionen +proportionens +proportioner +proportionerna +proportionernas +proportioners +proportions +proposition +propositionen +propositionens +propositioner +propositionerna +propositionernas +propositioners +propositions +propp +proppa +proppad +proppade +proppades +proppande +proppandet +proppandets +proppar +propparna +propparnas +proppars +proppas +proppat +proppats +proppen +proppens +propps +prosa +prosaisk +prosaiska +prosaiskt +prosan +prosans +prosas +prosit +prost +prosten +prostens +proster +prosterna +prosternas +prosters +prostituera +prostituerad +prostituerade +prostituerades +prostituerar +prostituerat +prostituerats +prosts +protes +protesen +protesens +proteser +proteserna +protesernas +protesers +protest +protestaktion +protestaktionen +protestaktionens +protestaktioner +protestaktionerna +protestaktionernas +protestaktioners +protestaktions +protesten +protestens +protester +protestera +protesterade +protesterar +protesterat +protesterna +protesternas +protesters +protests +prototyp +prototypen +prototypens +prototyper +prototyperna +prototypernas +prototypers +prototyps +proust +prousts +prov +prova +provad +provade +provades +provande +provandet +provandets +provar +provas +provat +provats +proven +provens +prover +proverna +provernas +provers +provet +provets +proviantera +provianterade +provianterande +provianterandet +provianterandets +provianterar +provianterat +provins +provinsen +provinsens +provinser +provinserna +provinsernas +provinsers +provision +provisionen +provisionens +provisioner +provisionerna +provisionernas +provisioners +provisions +provisorisk +provisoriska +provisoriskt +provning +provningar +provningarna +provningarnas +provningars +provningen +provningens +provnings +provocera +provocerad +provocerade +provocerades +provocerande +provocerandet +provocerandets +provocerar +provoceras +provocerat +provocerats +provokation +provokationen +provokationens +provokationer +provokationerna +provokationernas +provokationers +provokations +provs +provsmakning +provsmakningar +provsmakningarna +provsmakningarnas +provsmakningars +provsmakningen +provsmakningens +provsmaknings +prunka +prunkade +prunkande +prunkandet +prunkandets +prunkar +prunkat +prut +pruta +prutade +prutar +prutas +prutat +prutning +prutningar +prutningarna +prutningarnas +prutningars +prutningen +prutningens +prutnings +pryd +pryda +prydande +prydandet +prydandets +prydas +prydd +prydda +prydde +pryddes +pryder +prydnad +prydnaden +prydnadens +prydnader +prydnaderna +prydnadernas +prydnaders +prydnads +pryds +prytt +prytts +pseudonym +pseudonymen +pseudonymens +pseudonymer +pseudonymerna +pseudonymernas +pseudonymers +pseudonyms +psyke +psykena +psykenas +psyket +psykets +psykiater +psykiatri +psykiatrin +psykiatrins +psykiatris +psykiatrisk +psykiatriska +psykiatriskt +psykisk +psykiska +psykiskt +psykodynamisk +psykodynamiska +psykodynamiskt +psykometriker +psykos +psykosen +psykosens +psykoser +psykoserna +psykosernas +psykosers +psykotekniker +psykoteknisk +psykotekniska +psykotekniskt +psykoterapeut +psykoterapeutisk +psykoterapeutiska +psykoterapeutiskt +psykoterapi +psykotisk +psykotiska +psykotiske +psykotiskt +pub +pubar +pubarna +pubarnas +pubars +puben +pubens +pubertet +puberteten +pubertetens +pubs +puder +pudra +pudrad +pudrade +pudrades +pudrar +pudras +pudrat +pudrats +puff +puffa +puffade +puffar +puffat +puka +pukan +pukans +pukor +pukorna +pukornas +pukors +pump +pumpa +pumpar +pumparna +pumparnas +pumpars +pumpas +pumpen +pumpens +pund +punden +pundens +pundet +pundets +pung +pungar +pungarna +pungarnas +pungars +pungen +pungens +punk +punkare +punkaren +punkarens +punkares +punkarna +punkarnas +punken +punkens +punkt +punkten +punktens +punkter +punktera +punkterad +punkterade +punkterades +punkterar +punkterat +punkterats +punkterna +punkternas +punkters +punsch +punschen +punschens +puppa +puppan +puppans +puppor +pupporna +puppornas +puppors +pur +pura +purgatorium +purism +purismen +purismens +puritan +puritanen +puritanens +puritaner +puritanerna +puritanernas +puritaners +puritansk +puritanska +puritanskt +purpra +purprad +purprade +purprades +purprar +purpras +purprat +purprats +purpur +purpurn +purpurns +purra +purrade +purrar +purrat +purt +puss +pussen +pussens +pust +pusta +pustade +pustar +pustat +puta +putade +putar +putat +putsa +putsad +putsade +putsades +putsande +putsandet +putsandets +putsar +putsas +putsat +putsats +putsning +putsningen +putsningens +putsnings +puttra +puttrade +puttrar +puttrat +pyjamas +pyjamasen +pyjamasens +pynta +pyntad +pyntade +pyntades +pyntar +pyntas +pyntat +pyntats +pyramid +pyramiden +pyramidens +pyramider +pyramiderna +pyramidernas +pyramiders +pyramids +pyre +pyret +pyrets +pys +pysa +pyser +pyst +pyste +pyton +pyts +pytsar +pytsarna +pytsarnas +pytsars +pytsen +pytsens +pyttipanna +pyttipannan +pyttipannans +pyttipannas +qatar +qatars +rabarber +rabarbern +rabarberns +rabarbers +rabatt +rabatten +rabattens +rabatter +rabatterna +rabatternas +rabatters +rabatts +rabbi +rabiat +rabiata +rack +rad +rada +radade +radades +radar +radas +radat +radats +radband +radbanden +radbandens +radbandet +radbandets +raden +radens +rader +radera +raderad +raderade +raderades +raderar +raderas +raderat +raderats +raderingstangent +raderingstangenten +raderingstangentens +raderingstangenter +raderingstangenterna +raderingstangenternas +raderingstangenters +raderna +radernas +raders +radhus +radhusen +radhusens +radhuset +radhusets +radian +radianen +radianens +radianer +radianerna +radianernas +radianers +radie +radien +radiens +radier +radierna +radiernas +radiers +radio +radioaktiv +radioaktiva +radioaktivt +radioapparat +radioapparaten +radioapparatens +radioapparater +radioapparaterna +radioapparaternas +radioapparaters +radioapparats +radion +radions +radioprogram +radioserie +radioserien +radioseriens +radiostation +radiostationen +radiostationens +radiostationer +radiostationerna +radiostationernas +radiostationers +radiostations +radium +radvis +radvisa +raffinera +raffinerad +raffinerade +raffinerades +raffinerar +raffineras +raffinerat +raffinerats +ragg +raggig +raggiga +raggigt +ragnar +ragnars +rak +raka +rakad +rakade +rakapparat +rakapparaten +rakapparatens +rakapparater +rakapparaterna +rakapparaternas +rakapparaters +rakar +rakare +rakast +rakaste +rakat +raket +raketen +raketens +raketer +raketerna +raketernas +raketers +raketuppskjutning +raketuppskjutningar +raketuppskjutningarna +raketuppskjutningarnas +raketuppskjutningars +raketuppskjutningen +raketuppskjutningens +raketuppskjutnings +rakna +raknade +raknar +raknat +rakt +ram +rama +ramade +ramar +ramas +ramaskri +ramat +ramen +ramens +ramp +rampen +rampens +ramper +ramperna +rampernas +rampers +ramsa +ramsan +ramsans +ramsas +ramsberg +ramsbergs +ramverk +ramverket +ramverkets +ramvik +ramviks +rand +randa +randad +randade +randades +randar +randas +randat +randats +randen +randens +randig +randiga +randigt +randijaur +randijaurs +rang +rangordna +rangordnad +rangordnade +rangordnades +rangordnar +rangordnas +rangordnat +rangordnats +rangordning +rangordningar +rangordningarna +rangordningarnas +rangordningars +rangordningen +rangordningens +rangordnings +rank +ranka +rankad +rankade +rankades +rankande +rankandet +rankandets +rankar +rankare +rankas +rankast +rankaste +rankat +rankats +rankt +rann +rannsaka +rannsakad +rannsakade +rannsakades +rannsakande +rannsakandet +rannsakandets +rannsakar +rannsakas +rannsakat +rannsakats +rannsakning +rannsakningar +rannsakningarna +rannsakningarnas +rannsakningars +rannsakningen +rannsakningens +rannsaknings +ranson +ransonen +ransonens +ransoner +ransonera +ransonerad +ransonerade +ransonerades +ransonerande +ransonerandet +ransonerandets +ransonerar +ransoneras +ransonerat +ransonerats +ransonering +ransoneringar +ransoneringarna +ransoneringarnas +ransoneringars +ransoneringen +ransoneringens +ransonerings +ransonerna +ransonernas +ransoners +ransons +ransta +ranstas +rapp +rappen +rappens +rappet +rappets +rapport +rapporten +rapportens +rapporter +rapportera +rapporterad +rapporterade +rapporterades +rapporterande +rapporterandet +rapporterandets +rapporterar +rapporteras +rapporterat +rapporterats +rapportering +rapporteringar +rapporteringarna +rapporteringarnas +rapporteringars +rapporteringen +rapporteringens +rapporterings +rapporterna +rapporternas +rapporters +rapports +rapportskrivning +rapportskrivningen +rapportskrivningens +rapportskrivnings +raps +rapsbagge +rar +rara +rarare +rarast +raraste +raritet +rariteten +raritetens +rart +ras +rasa +rasad +rasade +rasades +rasande +rasandes +rasandet +rasandets +rasar +rasas +rasat +rasats +rasen +rasens +raser +rasera +raserad +raserade +raserades +raserar +raseras +raserat +raserats +raseri +raserna +rasernas +rasers +rashygien +rask +raska +raskade +raskar +raskare +raskas +raskast +raskaste +raskat +raske +raskes +rasket +raskets +raskt +raspa +raspade +raspar +raspat +rast +rasta +rastad +rastade +rastades +rastar +rastas +rastat +rastats +raster +rasterna +rasternas +rasters +ratt +rattar +rattarna +rattarnas +rattars +ratten +rattens +rattonykterhet +rattonykterheten +rattonykterhetens +rattonykterhets +rauk +raukar +raukarna +raukarnas +raukars +rauken +raukens +ravin +raviner +ravinerna +ravinernas +raviners +razzia +razzian +razzians +razzias +razzior +razziorna +razziornas +razziors +rea +reagera +reagerade +reagerades +reagerande +reagerandet +reagerandets +reagerar +reageras +reagerat +reagerats +reaktion +reaktionen +reaktionens +reaktioner +reaktionerna +reaktionernas +reaktioners +reaktions +reaktor +reaktorn +reaktorns +reaktors +rean +reans +reas +rebecka +rebeckas +recensent +recensenten +recensentens +recensenter +recensenterna +recensenternas +recensenters +recensera +recenserad +recenserade +recenserades +recenserandet +recenserandets +recenserar +recenseras +recenserat +recenserats +recension +recensionen +recensionens +recensioner +recensionerna +recensionernas +recensioners +recept +recepten +receptens +receptet +receptets +reception +receptionen +receptionens +receptioner +receptionerna +receptionernas +receptioners +receptions +receptor +receptorn +receptorns +receptors +recepts +recessiv +recessiva +recessivt +recitera +reciterad +reciterade +reciterades +reciterar +reciteras +reciterat +reciterats +red +reda +redaktion +redaktionen +redaktionens +redaktioner +redaktionerna +redaktionernas +redaktioners +redaktions +redan +redas +redd +redda +redde +reddes +rede +reden +redens +reder +rederi +rederien +rederiens +rederiet +rederiets +redet +redets +redig +rediga +redigera +redigerad +redigerade +redigerades +redigerar +redigerare +redigeraren +redigerarens +redigerares +redigerarna +redigerarnas +redigeras +redigerat +redigerats +redigering +redigeringen +redigeringens +redigerings +redigt +redo +redogjorde +redovisa +redovisad +redovisade +redovisades +redovisar +redovisas +redovisat +redovisats +redovisning +redovisningar +redovisningarna +redovisningarnas +redovisningars +redovisningen +redovisningens +redovisnings +redovisningsdatum +redovisningsdatumen +redovisningsdatumens +redovisningsdatumet +redovisningsdatumets +redovisningssystem +redovisningssystemen +redovisningssystemens +redovisningssystemet +redovisningssystemets +redovisningsuppgift +redovisningsuppgifter +redovisningsuppgifterna +redovisningsuppgifternas +redovisningsuppgifters +reds +redskap +redskapen +redskapens +redskapet +redskapets +redskaps +reducera +reducerad +reducerade +reducerades +reducerande +reducerandet +reducerandets +reducerar +reduceras +reducerat +reducerats +reducering +reduceringar +reduceringarna +reduceringarnas +reduceringars +reduceringen +reduceringens +reducerings +reduktion +reduktionen +reduktionens +reduktioner +reduktionerna +reduktionernas +reduktioners +reduktionism +reduktionismen +reduktionismens +reduktions +redundans +redundant +redundanta +redutt +redutten +reduttens +redutter +redutterna +redutternas +redutters +redutts +referat +referaten +referatens +referatet +referatets +referens +referensen +referensens +referenser +referenserna +referensernas +referensers +referensram +referensramar +referensramarna +referensramarnas +referensramars +referera +refererad +refererade +refererades +refererande +refererar +refereras +refererat +refererats +reform +reformarbete +reformarbetet +reformarbetets +reformation +reformationen +reformationens +reformationer +reformationerna +reformationernas +reformationers +reformations +reformen +reformens +reformer +reformera +reformerad +reformerade +reformerades +reformerar +reformeras +reformerat +reformerats +reformering +reformeringar +reformeringarna +reformeringarnas +reformeringars +reformeringen +reformeringens +reformerings +reformerna +reformernas +reformers +reforms +refug +refugen +refugens +refuger +refugerna +refugernas +refugers +regemente +regementen +regementena +regementenas +regementens +regementes +regementet +regementets +regent +regenten +regentens +regenter +regenterna +regenternas +regenters +regents +regera +regerad +regerade +regerades +regerar +regeras +regerat +regerats +regering +regeringar +regeringarna +regeringarnas +regeringars +regeringen +regeringens +regerings +regi +regim +regimen +regimens +regimer +regimerna +regimernas +regimers +regims +region +regionen +regionens +regioner +regionerna +regionernas +regioners +regions +regissera +regisserad +regisserade +regisserades +regisserar +regisseras +regisserat +regisserats +register +registerpost +registerposten +registerpostens +registeruppdatering +registeruppdateringar +registeruppdateringarna +registeruppdateringarnas +registeruppdateringars +registeruppdateringen +registeruppdateringens +registeruppdaterings +registren +registrens +registrera +registrerad +registrerade +registrerades +registrerande +registrerandet +registrerandets +registrerar +registrerare +registreraren +registrerarens +registrerares +registrerarna +registrerarnas +registreras +registrerat +registrerats +registrering +registreringen +registreringens +registret +registrets +regn +regna +regnade +regnar +regnat +regndroppar +regndropparna +regndropparnas +regndroppars +regndroppe +regndroppen +regndroppens +regnen +regnens +regnet +regnets +regnrock +regnrockar +regnrockarna +regnrockarnas +regnrockars +regnrocken +regnrockens +regnrocks +regression +reinkarnation +reinkarnationen +reinkarnationens +reinkarnationer +reinkarnationerna +reinkarnationernas +reinkarnationers +reinkarnations +rejmyre +rejmyres +rekarne +rekarnes +rekommendation +rekommendationen +rekommendationens +rekommendationer +rekommendationerna +rekommendationernas +rekommendationers +rekommendations +rekommendera +rekommenderad +rekommenderade +rekommenderades +rekommenderar +rekommenderas +rekommenderat +rekommenderats +rekommenera +rekommenerad +rekommenerade +rekommenerades +rekommenerar +rekommeneras +rekommenerat +rekommenerats +rekonstruera +rekonstruerad +rekonstruerade +rekonstruerades +rekonstruerande +rekonstruerandet +rekonstruerandets +rekonstruerar +rekonstrueras +rekonstruerat +rekonstruerats +rekonstruktion +rekonstruktionen +rekonstruktionens +rekonstruktioner +rekonstruktionerna +rekonstruktionernas +rekonstruktioners +rekonstruktions +rekord +rekorden +rekordens +rekordet +rekordets +rekords +rekordtid +rekreation +rekreationen +rekreationens +rekreations +rekreationsresa +rekreationsresan +rekreationsresans +rekreationsresas +rekryt +rekryten +rekrytens +rekryter +rekrytera +rekryterad +rekryterade +rekryterades +rekryterar +rekryteras +rekryterat +rekryterats +rekrytering +rekryteringen +rekryteringens +rekryterings +rekryterna +rekryternas +rekryters +rekryts +rektor +rektorer +rektorerna +rektorernas +rektorers +rektorn +rektorns +rektors +rekursion +rekursionen +rekursionens +rekursiv +rekursiva +rekursivt +rekvirera +rekvirerad +rekvirerade +rekvirerades +rekvirerande +rekvirerandet +rekvirerandets +rekvirerar +rekvireras +rekvirerat +rekvirerats +rekvisita +rekvisitan +rekvisitans +rekvisitas +rekvisition +rekvisitionen +rekvisitionens +rekvisitioner +rekvisitionerna +rekvisitionernas +rekvisitioners +rekvisitions +rem +remiss +remissen +remissens +remisser +remisserna +remissernas +remissers +remissvar +remissvaren +remissvarens +remissvaret +remissvarets +remittera +remitterad +remitterade +remitterades +remitterar +remitterat +remitterats +remittering +remitteringen +remitteringens +remitterings +remmar +remmarna +remmarnas +remmars +remsa +remsan +remsans +remsas +ren +rena +renade +renades +renande +renandet +renandets +renar +renare +renarna +renarnas +renars +renas +renast +renaste +renat +renats +renen +renens +rengjort +renhet +renheten +renhetens +renhets +rening +reningar +reningarna +reningarnas +reningars +reningen +reningens +renings +reningsbad +reningsbaden +reningsbadens +reningsbadet +reningsbadets +reningsverk +renovera +renoverad +renoverade +renoverades +renoverande +renoverandet +renoverandets +renoverar +renoveras +renoverat +renoverats +rensa +rensad +rensade +rensades +rensande +rensandet +rensandets +rensar +rensas +rensat +rensats +renskrev +renskrevs +renskriv +renskriva +renskrivas +renskriver +renskrivit +renskrivits +renskrivs +rensning +rensningen +rensningens +rensnings +rent +rentav +rentvagit +reor +reorna +reornas +reors +rep +repa +repad +repade +repades +repande +repandet +repandets +repar +reparation +reparationen +reparationens +reparationer +reparationerna +reparationernas +reparationers +reparations +reparera +reparerad +reparerade +reparerades +reparerande +reparerandet +reparerandets +reparerar +repareras +reparerat +reparerats +repas +repat +repats +repen +repens +repertoar +repertoaren +repertoarens +repertoarer +repertoarerna +repertoarernas +repertoarers +repet +repetera +repeterad +repeterade +repeterades +repeterande +repeterandet +repeterandets +repeterar +repeteras +repeterat +repeterats +repetition +repetitionen +repetitionens +repetitioner +repetitionerna +repetitionernas +repetitioners +repetitions +repetitiv +repetitiva +repetitivt +repets +reportage +reporter +representant +representanten +representantens +representanter +representanterna +representanternas +representanters +representants +representation +representationen +representationens +representationer +representationerna +representationernas +representationers +representations +representativ +representativa +representativitet +representativiteten +representativitetens +representativt +representera +representerad +representerade +representerades +representerar +representeras +representerat +representerats +repris +reprisen +reprisens +repriser +repriserna +reprisernas +reprisers +reproducera +reproducerad +reproducerade +reproducerades +reproducerar +reproduceras +reproducerat +reproducerats +reproduktion +reproduktionen +reproduktionens +reproduktioner +reproduktionerna +reproduktionernas +reproduktioners +reproduktions +reps +res +resa +resan +resande +resandet +resandets +resans +resas +reseanteckning +reseanteckningar +reseanteckningarna +reseanteckningarnas +reseanteckningars +reseanteckningen +reseanteckningens +reseantecknings +reseavdrag +resebokning +resebokningar +resebokningarna +resebokningarnas +resebokningars +resebokningen +resebokningens +reseboknings +resebransch +resebranschen +resebranschens +resekostnad +resekostnaden +resekostnadens +resekostnader +resekostnaderna +resekostnadernas +resekostnaders +resekostnads +resen +reser +reserv +reservat +reservaten +reservatens +reservatet +reservatets +reservation +reservationen +reservationens +reservationer +reservationerna +reservationernas +reservationers +reservations +reserven +reservens +reserver +reservera +reserverad +reserverade +reserverades +reserverar +reserveras +reserverat +reserverats +reserverna +reservernas +reservers +reservoar +reservoaren +reservoarens +reservoarer +reservoarerna +reservoarernas +reservoarers +reservoarpenna +reservoarpennan +reservoarpennans +reservoarpennor +reservoarpennorna +reservoarpennornas +reservoarpennors +reset +resets +residens +residensen +residensens +residenset +residensets +resident +residenta +residue +resignation +resignationen +resignationens +resignations +resignera +resignerad +resignerade +resignerar +resignerat +reskontra +reskontran +reskontrans +reskontror +reskontrorna +reskontrornas +reskontrors +reskost +reskosten +reskostens +reson +resonemang +resonemangen +resonemangens +resonemanget +resonemangets +resonemangs +resonera +resonerade +resonerades +resonerar +resoneras +resonerat +resonerats +resor +resorna +resornas +resors +respekt +respektera +respekterad +respekterade +respekterades +respekterar +respekteras +respekterat +respekterats +respektive +respit +respiten +respitens +respons +responsen +responsens +rest +restaurang +restaurangen +restaurangens +restauranger +restaurangerna +restaurangernas +restaurangers +restaurangs +restaurera +restaurerad +restaurerade +restaurerades +restaurerar +restaureras +restaurerat +restaurerats +reste +resten +restens +rester +resterande +resterna +resternas +resters +restes +restid +restiden +restidens +restresa +restresan +restresans +restresas +restresor +restresorna +restresornas +restresors +restriktion +restriktionen +restriktionens +restriktioner +restriktionerna +restriktionernas +restriktioners +restriktions +restriktiv +restriktiva +restriktivare +restriktivast +restriktivaste +restriktivt +rests +resurs +resursen +resursens +resurser +resurserna +resursernas +resursers +reta +retad +retade +retades +retar +retas +retat +retats +retina +retinan +retinans +retirera +retirerade +retirerar +retirerat +retorik +retorisk +retoriska +retoriskt +retroaktiv +retroaktiva +retroaktivt +rett +retts +retur +returnera +returnerad +returnerade +returnerades +returnerar +returnerat +returnerats +retuschera +retuscherad +retuscherade +retuscherades +retuscherar +retuscheras +retuscherat +retuscherats +rev +reva +revade +revan +revans +revar +revat +revers +reversen +reversens +reverser +reverserna +reversernas +reversers +revidera +reviderad +reviderade +reviderades +reviderar +revideras +reviderat +reviderats +revidering +revideringar +revideringarna +revideringarnas +revideringars +revideringen +revideringens +reviderings +revir +revision +revisionen +revisionens +revisor +revisorer +revisorerna +revisorernas +revisorers +revisorn +revisorns +revisors +revor +revorna +revornas +revors +revs +revy +revyer +revyerna +revyernas +revyers +revyn +revyns +rhen +rhens +ribba +ribban +ribbans +ribbas +ribbor +ribborna +ribbornas +ribbors +rica +richard +richards +rickard +rickards +rid +rida +ridande +ridas +riddare +riddaren +riddarens +riddares +riddarhus +riddarhusen +riddarhusens +riddarhuset +riddarhusets +riddarhyttan +riddarhyttans +riddarna +riddarnas +ridderskap +ridderskapet +ridderskapets +ridderskaps +rider +ridit +ridits +rids +rigga +riggad +riggade +riggades +riggar +riggas +riggat +riggats +rigid +rigida +rik +rika +rikard +rikards +rikare +rikas +rikast +rikaste +rike +rikedom +rikedomar +rikedomarna +rikedomarnas +rikedomars +rikedomen +rikedomens +riken +rikena +rikenas +rikens +rikes +riket +rikets +rikoschett +rikoschetten +rikoschettens +rikoschetter +rikoschetterna +rikoschetternas +rikoschetters +riksdag +riksdagen +riksdagens +riksdags +riksdagsdebatt +riksdagsdebatten +riksdagsdebattens +riksdagsdebatter +riksdagsdebatterna +riksdagsdebatternas +riksdagsdebatters +riksdagsdebatts +riksdagsman +riksdagsmannen +riksdagsmannens +riksdagsmans +riksdagsparti +riksmuseets +riksomfattande +riksteater +riksteatern +riksteaterns +rikt +rikta +riktad +riktade +riktades +riktar +riktas +riktat +riktats +riktig +riktiga +riktigare +riktigast +riktigaste +riktighet +riktigheten +riktighetens +riktigt +riktning +riktningar +riktningarna +riktningarnas +riktningars +riktningen +riktningens +riktnings +rim +rimbo +rimbos +rimforsa +rimforsas +rimma +rimmad +rimmade +rimmades +rimmar +rimmat +rimmats +rimmen +rimmens +rimmet +rimmets +rimsmed +rimsmeden +rimsmedens +ring +ringa +ringakta +ringaktad +ringaktade +ringaktades +ringaktar +ringaktas +ringaktat +ringaktats +ringar +ringare +ringaren +ringarens +ringarna +ringarnas +ringars +ringarum +ringarums +ringas +ringast +ringaste +ringde +ringdes +ringduva +ringduvan +ringduvans +ringduvas +ringe +ringen +ringens +ringer +ringes +ringhet +ringheten +ringhetens +ringhets +ringning +ringningar +ringningarna +ringningarnas +ringningars +ringningen +ringningens +ringnings +rings +ringt +ringts +rinkaby +rinkabys +rinna +rinnande +rinnandet +rinnandets +rinner +ripa +ripan +ripans +ripas +ripost +ris +risen +risens +riset +risets +risgryn +risgryns +risig +risiga +risigare +risigast +risigaste +risigt +risk +risken +riskens +risker +riskera +riskerad +riskerade +riskerades +riskerar +riskerat +riskerats +riskerna +riskernas +riskers +riskgrupp +riskgruppen +riskgruppens +riskgrupper +riskgrupperna +riskgruppernas +riskgruppers +riskgrupps +risks +rispa +rispad +rispade +rispades +rispar +rispas +rispat +rispats +rist +rista +ristad +ristade +ristades +ristar +ristas +ristat +ristats +riste +rister +ristes +rists +rit +rita +ritad +ritade +ritades +ritar +ritas +ritat +ritats +riten +ritens +riter +riterna +riternas +riters +ritning +ritningar +ritningarna +ritningarnas +ritningars +ritningen +ritningens +ritnings +rits +ritt +ritten +rittens +ritter +ritterna +ritternas +ritters +riv +riva +rivas +riven +river +rivet +rivieran +rivierans +rivit +rivits +rivna +rivs +roa +road +roade +roades +roande +roar +roas +roat +roats +robert +roberts +robertsfors +robin +robins +robot +robotar +robotarna +robotarnas +robotars +roboten +robotens +robots +robust +robusta +robustare +robustast +robustaste +rock +rockar +rockarna +rockarnas +rockars +rocken +rockens +rockig +rockiga +rockigare +rockigast +rockigaste +rockigt +rockkonsert +rockkonserten +rockkonsertens +rockkonserter +rockkonserterna +rockkonserternas +rockkonserters +rockkonserts +rockmusik +rockmusiken +rockmusikens +rockneby +rocknebys +rocksvarvare +rocksvarvaren +rocksvarvarens +rocksvarvares +rocksvarvarna +rocksvarvarnas +rodd +rodda +roddare +roddaren +roddarens +roddares +roddarna +roddarnas +rodde +roddes +roder +rodna +rodnad +rodnade +rodnades +rodnande +rodnandet +rodnandets +rodnar +rodnas +rodnat +rodnats +rodret +rodrets +rofferi +roger +rogers +rom +roman +romanen +romanens +romaner +romanerna +romanernas +romaners +romans +romansk +romanska +romanskt +romantik +romantiken +romantikens +romantisera +romantiserad +romantiserade +romantiserades +romantiserar +romantiseras +romantiserat +romantiserats +romantisk +romantiska +romantiske +romantiskt +romare +romaren +romarens +romares +romarna +romarnas +romersk +romerska +romerskt +rond +ronneby +ronnebys +ronny +ronnys +rop +ropa +ropad +ropade +ropades +ropande +ropandet +ropandets +ropar +ropas +ropat +ropats +ropen +ropens +ropet +ropets +rops +ror +ros +rosa +rosander +rosanders +rosen +rosenfors +rosenknopp +rosenknoppar +rosenknopparna +rosenknopparnas +rosenknoppars +rosenknoppen +rosenknoppens +rosens +rosersberg +rosersbergs +rosig +rosiga +rosigt +rosmarin +rosor +rosorna +rosornas +rosors +rospigg +rost +rosta +rostad +rostade +rostades +rostande +rostandet +rostandets +rostar +rostas +rostat +rostats +rostbiff +rostfri +rostfria +rostfritt +rostig +rostiga +rostigt +rostock +rostocks +rosvik +rosviks +rot +rota +rotad +rotade +rotades +rotar +rotas +rotat +rotation +rotationen +rotationens +rotations +rotats +rotborste +roten +rotens +rotera +roterad +roterade +roterades +roterar +roteras +roterat +roterats +rotkonsonant +rotkonsonanten +rotkonsonantens +rotkonsonanter +rotkonsonanterna +rotkonsonanternas +rotkonsonanters +rots +rott +rottne +rottneros +rottnes +rotts +rov +rovdjur +rovdjuren +rovdjurens +rovdjuret +rovdjurets +rovdjurs +rovdrift +rovdriften +rovdriftens +rovdrifts +rovet +rovets +rubb +rubba +rubbad +rubbade +rubbades +rubbande +rubbandet +rubbandets +rubbar +rubbas +rubbat +rubbats +rubbet +rubbets +rubin +rubricera +rubricerad +rubricerade +rubricerades +rubricerar +rubriceras +rubricerat +rubricerats +rubricering +rubriceringen +rubriceringens +rubricerings +rubrik +rubriken +rubrikens +rubriker +rubrikerna +rubrikernas +rubrikers +rucka +ruckade +ruckades +ruckar +ruckas +ruckat +ruckats +ruda +rudas +rudiment +rugby +ruin +ruinen +ruinens +ruiner +ruinera +ruinerad +ruinerade +ruinerades +ruinerar +ruineras +ruinerat +ruinerats +ruinerna +ruinernas +ruiners +rum +rummen +rummens +rummet +rummets +rumstemperatur +runa +runan +runans +rund +runda +rundad +rundade +rundades +rundar +rundare +rundas +rundast +rundaste +rundat +rundats +rundvik +rundviks +rune +runes +runnit +runor +runorna +runornas +runors +runsten +runstenar +runstenarna +runstenarnas +runstenars +runstenen +runstenens +runt +runtom +runtomkring +rus +rusa +rusade +rusades +rusande +rusar +rusas +rusat +rusats +rusch +ruschen +ruschens +rusen +rusens +ruset +rusets +rusig +rusiga +rusigt +ruska +ruskad +ruskade +ruskades +ruskar +ruskas +ruskat +ruskats +ruskig +ruskiga +ruskigt +rusningstid +russin +russinen +russinens +russinet +russinets +russins +rusta +rustad +rustade +rustades +rustar +rustas +rustat +rustats +rustik +rustning +rustningar +rustningarna +rustningarnas +rustningars +rustningen +rustningens +rustnings rut +ruta +rutan +rutans +rutin +rutinen +rutinens +rutiner +rutinerad +rutinerade +rutinerat +rutinerna +rutinernas +rutiners +rutit +rutits +rutor +rutorna +rutornas +rutors +ruts +rutscha +rutschade +rutschar +rutschat +rutt +rutten +ruttens +rutter +rutterna +rutternas +rutters +ruttet +ruttna +ruttnade +ruttnar +ruttnat +rutts +ruva +ruvade +ruvades +ruvar +ruvas +ruvat +ruvats +rwanda +rwandas +rybs +ryck +rycka +ryckas +rycken +ryckens +rycker +ryckig +ryckiga +ryckigt +ryckning +ryckningar +ryckningarna +ryckningarnas +ryckningars +ryckningen +ryckningens +rycknings +rycks +ryckt +ryckte +rycktes +ryckts +ryd +ryds +rygg +rygga +ryggade +ryggar +ryggarna +ryggarnas +ryggars +ryggat +ryggen +ryggens +rygginstitut +rygginstitutet +rygginstitutets +ryggrad +ryggraden +ryggradens +ryggrader +ryggraderna +ryggradernas +ryggraders +ryggrads +ryggs +ryk +ryka +rykande +rykandet +rykandets +rykas +ryker +ryks +rykt +ryktas +ryktbar +ryktbara +ryktbart +rykte +rykten +ryktena +ryktenas +ryktens +ryktes +ryktesspridning +ryktesspridningen +ryktesspridningens +ryktesspridnings +ryktet +ryktets +rykts +rym +rymd +rymdbas +rymdbasen +rymdbasens +rymdbaser +rymdbaserna +rymdbasernas +rymdbasers +rymde +rymden +rymdens +rymder +rymderna +rymdernas +rymders +rymdes +rymdfarare +rymdfararen +rymdfararens +rymdfarares +rymdfararna +rymdfararnas +rymdfarkost +rymdfarkosten +rymdfarkostens +rymdfarkoster +rymdfarkosterna +rymdfarkosternas +rymdfarkosters +rymdimperier +rymdimperierna +rymdimperiernas +rymdimperiers +rymdimperiet +rymdimperiets +rymdimperium +rymdprojekt +rymdprojektet +rymdprojektets +rymdresa +rymdresan +rymdresans +rymdresor +rymdresorna +rymdresornas +rymdresors +rymdsatsning +rymdsatsningar +rymdsatsningarna +rymdsatsningarnas +rymdsatsningars +rymdsatsningen +rymdsatsningens +rymdsatsnings +rymdskepp +rymdskeppen +rymdskeppens +rymdskeppet +rymdskeppets +rymdsond +rymdsonden +rymdsondens +rymdsonder +rymdsonderna +rymdsondernas +rymdsonders +rymdstation +rymdstationen +rymdstationens +rymdstationer +rymdstationerna +rymdstationernas +rymdstationers +rymdstations +rymma +rymmande +rymmandet +rymmandets +rymmas +rymmer +ryms +rymt +rymts +rynka +rynkad +rynkade +rynkades +rynkan +rynkande +rynkandet +rynkandets +rynkans +rynkar +rynkas +rynkat +rynkats +rynkor +rynkorna +rynkornas +rynkors +rys +rysa +rysande +rysandet +rysandets +rysare +rysaren +rysarens +rysares +rysarna +rysarnas +ryser +rysk +ryska +ryske +ryskt +rysning +rysningar +rysningarna +rysningarnas +rysningars +rysningen +rysningens +rysnings +ryss +ryssar +ryssarna +ryssarnas +ryssars +ryssby +ryssbys +ryssen +ryssens +ryst +ryste +ryt +ryta +rytande +rytandet +rytandets +rytas +ryter +rytm +rytmen +rytmens +rytmer +rytmerna +rytmernas +rytmers +rytms +ryts +ryttare +ryttaren +ryttarens +ryttares +ryttarna +ryttarnas +rytteri +saab +saabs +sabbat +sabbaten +sabbatens +sabbats +sabbatsdag +sabbatsdagen +sabbatsdagens +sabbatsfirande +sabbatsfirandet +sabbatsfirandets +sabotage +sabotera +saboterad +saboterade +saboterades +saboterar +saboteras +saboterat +saboterats +sade +sades +sadist +sadisten +sadistens +sadister +sadisterna +sadisternas +sadisters +sadomasochism +sadomasochismen +sadomasochismens +sadomasochistisk +sadomasochistiska +sadomasochistiskt +safir +safiren +safirens +safirer +safirerna +safirernas +safirers +safirs +saft +safta +saftade +saftar +saftat +saften +saftens +safter +safterna +safternas +safters +saftig +saftiga +saftigare +saftigast +saftigaste +saftigt +saga +sagan +sagans +sagas +sagd +sagda +sagde +sagesman +sagoaktig +sagoaktiga +sagoaktigare +sagoaktigast +sagoaktigaste +sagoaktigt +sagofigur +sagofiguren +sagofigurens +sagofigurer +sagofigurerna +sagofigurernas +sagofigurers +sagor +sagorna +sagornas +sagors +sagt +sagts +sak +saken +sakens +saker +sakerna +sakernas +sakers +sakkunnig +sakkunniga +sakkunnigt +sakna +saknad +saknade +saknaden +saknadens +saknades +saknar +saknas +saknat +saknats +sakrament +sakramenten +sakramentens +sakramentet +sakramentets +saks +sakta +saktad +saktade +saktades +saktar +saktas +saktat +saktats +saktmod +saktmodig +saktmodiga +saktmodigt +sakuppgift +sakuppgiften +sakuppgiftens +sakuppgifter +sakuppgifterna +sakuppgifternas +sakuppgifters +samarbeta +samarbetade +samarbetar +samarbetat +samarbete +samarbetet +samarbetets +samarit +samariten +samaritens +samariter +samariterna +samariternas +samariters +samaritisk +samaritiska +samaritiskt +samband +sambanden +sambandens +sambandet +sambandets +sambo +sambon +sambons +sambos +same +samen +samens +samer +samerna +samernas +samers +samfund +samfunden +samfundens +samfundet +samfundets +samma +samman +sammanbinder +sammanbiten +sammanbitet +sammanbitna +sammanboende +sammanbrott +sammanbrotten +sammanbrottens +sammanbrottet +sammanbrottets +sammandrag +sammandragen +sammandragens +sammandraget +sammandragets +sammandragna +sammandragning +sammandragningar +sammandragningarna +sammandragningarnas +sammandragningars +sammandragningen +sammandragningens +sammandragnings +sammanfatta +sammanfattad +sammanfattade +sammanfattades +sammanfattande +sammanfattandet +sammanfattandets +sammanfattar +sammanfattas +sammanfattat +sammanfattats +sammanfattning +sammanfattningar +sammanfattningarna +sammanfattningarnas +sammanfattningars +sammanfattningen +sammanfattningens +sammanfattnings +sammanfattningsvis +sammanfoga +sammanfogad +sammanfogade +sammanfogades +sammanfogande +sammanfogandet +sammanfogandets +sammanfogar +sammanfogas +sammanfogat +sammanfogats +sammanhang +sammanhangen +sammanhangens +sammanhanget +sammanhangets +sammankomst +sammankomsten +sammankomstens +sammankomster +sammankomsterna +sammankomsternas +sammankomsters +sammansatt +sammansatta +sammansvetsad +sammansvetsade +sammansvetsat +sammansvuren +sammansvuret +sammansvurna +sammantagen +sammantaget +sammantagna +samme +sammet +sammeten +sammetens +sammetsrock +sammetsrocken +sammetsrockens +samordna +samordnad +samordnade +samordnades +samordnar +samordnare +samordnaren +samordnarens +samordnares +samordnarna +samordnarnas +samordnas +samordnat +samordnats +samordning +samordningar +samordningarna +samordningarnas +samordningars +samordningen +samordningens +samordnings +samordningsansvar +samordningsansvaren +samordningsansvarens +samordningsansvaret +samordningsansvarets +sams +samsades +samsas +samt +samtid +samtida +samtiden +samtidens +samtidig +samtidiga +samtidigt +samtids +samtyck +samtycka +samtyckas +samtycke +samtycker +samtycket +samtyckets +samtycks +samtyckt +samtyckte +samtycktes +samtyckts +samvaro +samvaron +samvarons +samverka +samverkade +samverkan +samverkande +samverkar +samverkat +samvete +samveten +samvetena +samvetenas +samvetens +samvetes +samvetet +samvetets +sanatorier +sanatorierna +sanatoriernas +sanatoriers +sanatoriet +sanatoriets +sanatorium +sand +sandared +sandareds +sandarne +sandarnes +sandby +sandbys +sanden +sandens +sandhamn +sandhamns +sandhem +sandhems +sandra +sandras +sandstrand +sandstranden +sandstrandens +sandstrands +sandviken +sandvikens +sangis +sank +sanka sankt +sankta +sankte +sanktion +sanktionen +sanktionens +sanktioner +sanktionera +sanktionerad +sanktionerade +sanktionerades +sanktionerar +sanktioneras +sanktionerat +sanktionerats +sanktionerna +sanktionernas +sanktioners +sanktions +sankts +sann +sanna +sannare +sannast +sannaste +sanning +sanningar +sanningarna +sanningarnas +sanningars +sanningen +sanningens +sannings +sans +sansad +sansade +sansat +sant +sara +sarajevo +sarajevos +saras +sarga +sargad +sargade +sargades +sargande +sargandet +sargandets +sargar +sargas +sargat +sargats +sas +satan +satanist +satanisten +satanistens +satanister +satanisterna +satanisternas +satanisters +satin +satir +satiren +satirens +satirer +satirerna +satirernas +satirers +satirisk +satiriska +satiriskt +satirs +satisfiera +satisfierad +satisfierade +satisfierades +satisfierar +satisfieras +satisfierat +satisfierats +sats +satsa +satsad +satsade +satsades +satsar +satsat +satsats +satsen +satsens +satser +satserna +satsernas +satsers +satsning +satsningar +satsningarna +satsningarnas +satsningars +satsningen +satsningens +satsnings +satt +satta +satte +sattes +satts +sattyg +saturnus +saudiarabien +saudiarabiens +sav +save +saven +savens +sax +saxa +saxade +saxar +saxarna +saxarnas +saxars +saxat +saxen +saxens +saxofon +saxofonen +saxofonens +saxofoner +saxofonerna +saxofonernas +saxofoners +saxofons +scania +scanias +scen +scenario +scenarion +scenarions +scenariot +scenariots +scenen +scenens +scener +sceneri +sceneriet +sceneriets +scenerna +scenernas +sceners +scenisk +sceniska +sceniskt +schack +schah +schahen +schahens +schaher +schaherna +schahernas +schahers +schaktmassor +schema +scheman +schemans +schemat +schematisk +schematiska +schematiskt +schemats +schimpans +schimpansen +schimpansens +schimpanser +schimpanserna +schimpansernas +schimpansers +schism +schismen +schismens +schizofren +schizofrena +schizofreni +schizofrent +schweiz +science +scout +scouter +scouterna +scouternas +scouters +sed +sedan +sedd +sedda +seden +sedens +seder +sedermera +sederna +sedernas +seders +sediment +sedimentet +sedimentets +seds +seende +seendet +seendets +sefir +sefiren +sefirens +sefiret +sefirets +sefyr +sefyren +sefyrens +sefyret +sefyrets +seg +sega +segare +segast +segaste +seger +segergudinna +segergudinnan +segergudinnans +segerherre +segerherren +segerherrens +segerkrans +segerkransen +segerkransens +segern +segerns +segersta +segerstas +segerviss +segervissa +segervisst +segment +segmenten +segmentens +segmentera +segmenterad +segmenterade +segmenterades +segmenterar +segmenteras +segmenterat +segmenterats +segmentering +segmenteringar +segmenteringarna +segmenteringarnas +segmenteringars +segmenteringen +segmenteringens +segmenterings +segmentet +segmentets +segmon +segmons +segna +segnade +segnar +segnat +segra +segrade +segrande +segrandet +segrandets +segrar +segrare +segraren +segrarens +segrares +segrarna +segrarnas +segrars +segrat +segregera +segregerad +segregerade +segregerades +segregerar +segregeras +segregerat +segregerats +segt +sej +sejar +sejarna +sejarnas +sejars +sejen +sejens +sejour +sejouren +sejourens +sejourer +sejourerna +sejourernas +sejourers +sekret +sekretariat +sekretariaten +sekretariatens +sekretariatet +sekretariatets +sekreterare +sekreteraren +sekreterarens +sekreterares +sekreterarna +sekreterarnas +sekretess +sekretessen +sekretessens +sekretet +sekretets +sekt +sekten +sektens +sekter +sekterna +sekternas +sekters +sektion +sektionen +sektionens +sektioner +sektionerna +sektionernas +sektioners +sektions +sektor +sektorer +sektorerna +sektorernas +sektorers +sektorn +sektorns +sektors +sekts +sekund +sekunden +sekundens +sekunder +sekunderna +sekundernas +sekunders +sekvens +sekvensen +sekvensens +sekvenser +sekvenserna +sekvensernas +sekvensers +semafor +semaforen +semaforens +semaforer +semaforerna +semaforernas +semaforers +semantik +semantiken +semantikens +semantisk +semantiska +semantiskt +semester +semestern +semesterns +semesters +semestra +semestrar +semestrarna +semestrarnas +semestrars +seminarier +seminarierna +seminariernas +seminariers +seminarierum +seminariet +seminariets +seminarium +semitism +semitismen +semitismens +sen +sena +senan +senans +senap +senapen +senapens +senaps +senapskorn +senare +senast +senaste +senat +senaten +senatens +senator +senatorn +senatorns +senators +sene +senig +seniga +senigt +senior +senioren +seniorens +seniorer +seniorerna +seniorernas +seniorers +senkommen +senkommet +senkomna +sennan +sennans +senor +senorna +senornas +senors +sensation +sensationen +sensationens +sensationer +sensationerna +sensationernas +sensationers +sensations +sent +sentida +separat +separata +separera +separerad +separerade +separerades +separerar +separeras +separerat +separerats +september +septembers +ser +seraf +serafen +serafens +serafer +seraferna +serafernas +serafers +serenad +serenaden +serenadens +serenader +serenaderna +serenadernas +serenaders +sergeant +sergeanten +sergeantens +sergeanter +sergeanterna +sergeanternas +sergeanters +serie +seriefigur +seriefiguren +seriefigurens +seriefigurer +seriefigurerna +seriefigurernas +seriefigurers +seriefigurs +serien +seriens +serier +serierna +seriernas +seriers +series +serietecknare +serietecknaren +serietecknarens +serietecknares +serietecknarna +serietecknarnas +serietidning +serietidningar +serietidningarna +serietidningarnas +serietidningars +serietidningen +serietidningens +serietidnings +serva +servade +servar +servarna +servarnas +servars +servat +serve +serven +servens +servera +serverad +serverade +serverades +serverar +serveras +serverat +serverats +serveringsfat +service +servicen +servicens +ses +session +sessionen +sessionens +sessioner +sessionerna +sessionernas +sessioners +set +sett +setts +sex +sexa +sexan +sexans +sexdrega +sexdregas +sexhundra +sexig +sexiga +sexigt +sexti +sextio +sextioen +sextioett +sextiofem +sextiofyra +sextionde +sextionio +sextiosex +sextiosju +sextiotre +sexton +sextonde +sextonhundra +sextontusen +sextusen +sfinx +sfinxen +sfinxens +sheriff +sheriffen +sheriffens +shoppa +shoppade +shoppar +shoppat +shopping +shoppingen +shoppingens +shoppings +show +sia +siade +siades +siande +siandet +siandets +siar +siare +siaren +siarens +siares +siarna +siarnas +sias +siat +siats +sibirien +sibiriens +sic +sid +sida +sidan +sidans +sidas +siden +sidnummer +sidnumrering +sidnumreringar +sidnumreringarna +sidnumreringarnas +sidnumreringars +sidnumreringen +sidnumreringens +sidnumrerings +sidoeffekt +sidoeffekter +sidoeffekterna +sidoeffekternas +sidoeffekters +sidor +sidorna +sidornas +sidors +sierra +siffra +siffran +siffrans +siffror +siffrorna +siffrornas +siffrors +sig +signa +signad +signade +signades +signar +signas +signat +signats +signatur +signaturen +signaturens +signaturer +signaturerna +signaturernas +signaturers +signaturs signe +signera +signerad +signerade +signerades +signerar +signeras +signerat +signerats +signes +signifikans +signifikant +signifikanta +signifikativ +signifikativa +signifikativt +sigrid +sigrids +sigtuna +sigtunas +sigurd +sigurds +sigvard +sigvards +sik +sikar +sikarna +sikarnas +sikars +siken +sikens +sikfors +siks +sikt +sikta +siktad +siktade +siktades +siktar +siktas +siktat +siktats +sikte +sikten +siktena +siktenas +siktens +siktes +siktet +siktets +siktning +siktningen +siktningens +siktnings +simma +simmade +simmar +simmare +simmaren +simmarens +simmares +simmarna +simmarnas +simmat +simon +simons +simrishamn +simrishamns +sin +sina +sinade +sinande +sinandet +sinandets +sinar +sinat +singapore +singapores +sinka +sinkad +sinkade +sinkades +sinkar +sinkas +sinkat +sinkats +sinnad +sinnade +sinnat +sinne +sinnen +sinnena +sinnenas +sinnens +sinnes +sinnesfrid +sinnesfriden +sinnesfridens +sinnesrubbad +sinnesrubbade +sinnesrubbat +sinnessjuk +sinnessjuka +sinnessjukan +sinnessjukans +sinnessjukas +sinnessjukhus +sinnessjukhusen +sinnessjukhusens +sinnessjukhuset +sinnessjukhusets +sinnessjukt +sinnessvaghet +sinnessvagheten +sinnessvaghetens +sinnessvaghets +sinnet +sinnets +sinnrik +sinnrika +sinnrikt +sinom +sippa +sippan +sippans +sippor +sipporna +sippornas +sippors +sippra +sipprade +sipprar +sipprat +sir +sira +sirade +sirap +sirapen +sirapens +sirar +sirat +siraten +siratens +sirater +siraterna +siraternas +siraters +siren +sirenen +sirenens +sirener +sirenerna +sirenernas +sireners +sirens +siret +sirets +siri +siris +sist +sista +sistas +siste +sistes +sistone +sits +sitsar +sitsarna +sitsarnas +sitsars +sitsen +sitsens +sitt +sitta +sittande +sittandet +sittandets +sitter +sittning +sittningar +sittningarna +sittningarnas +sittningars +sittningen +sittningens +sittnings +situation +situationen +situationens +situationer +situationerna +situationernas +situationers +situations +situationskomik +siv +sivert +siverts +sivs +sixten +sixtens +sjok +sju +sjua +sjuan +sjuans +sjuarmad +sjuarmade +sjuarmat +sjuda +sjuder +sjudit +sjuhundra +sjuk +sjuka +sjukare +sjukas +sjukast +sjukaste +sjukbidrag +sjukdom +sjukdomar +sjukdomarna +sjukdomarnas +sjukdomars +sjukdomen +sjukdomens +sjukdoms +sjuke +sjukes +sjukhus +sjukhusen +sjukhusens +sjukhuset +sjukhusets +sjukkassa +sjukkassan +sjukkassans +sjukkassor +sjukkassorna +sjukkassornas +sjukkassors +sjukna +sjuknade +sjuknar +sjuknat +sjukpeng +sjukpengen +sjukpengens +sjukpenning +sjukpenningen +sjukpenningens +sjukpennings +sjukskrev +sjukskrevs +sjukskriv +sjukskriva +sjukskrivas +sjukskriven +sjukskriver +sjukskrivet +sjukskrivit +sjukskrivits +sjukskrivna +sjukskrivnas +sjukskrivne +sjukskrivnes +sjukskrivning +sjukskrivningar +sjukskrivningarna +sjukskrivningarnas +sjukskrivningars +sjukskrivningen +sjukskrivningens +sjukskrivnings +sjukskrivningsgrad +sjukskrivningsgraden +sjukskrivningsgradens +sjukskrivs +sjuksyster +sjukt +sjunde +sjung +sjunga +sjungande +sjungandet +sjungandets +sjungen +sjunger +sjunges +sjunget +sjungit +sjungits +sjungna +sjunka +sjunkande +sjunkandet +sjunkandets +sjunken +sjunker +sjunket +sjunkit +sjunkna +sjuntorp +sjuntorps +sjuor +sjuorna +sjuornas +sjuors +sjutti +sjuttio +sjuttioen +sjuttioett +sjuttiofem +sjuttiofyra +sjuttionde +sjuttionio +sjuttiosex +sjuttiosju +sjuttiotre +sjutton +sjuttonde +sjuttonhundra +sjuttontusen +sjutusen +ska +skada +skadad +skadade +skadades +skadan +skadande +skadandet +skadandets +skadans +skadar +skadas +skadat +skadats +skadedjur +skadedjuren +skadedjurens +skadedjuret +skadedjurets +skadeinsekt +skadeinsekten +skadeinsektens +skadeinsekter +skadeinsekterna +skadeinsekternas +skadeinsekters +skadesjukdom +skadesjukdomar +skadesjukdomarna +skadesjukdomarnas +skadesjukdomars +skadesjukdomen +skadesjukdomens +skador +skadorna +skadornas +skadors +skaffa +skaffad +skaffade +skaffades +skaffar +skaffas +skaffat +skaffats +skafferi +skafferier +skafferierna +skafferiernas +skafferiers +skaft +skaften +skaftens +skaftet +skaftets +skagersvik +skagersviks +skaka +skakad +skakade +skakades +skakande +skakar +skakas +skakat +skakats +skakning +skakningar +skakningarna +skakningarnas +skakningars +skakningen +skakningens +skaknings +skam +skammen +skammens +skamsen +skamset +skamsna +skandia +skandias +skandinav +skandinavien +skandinaviens +skans +skansen +skansens +skapa +skapad +skapade +skapades +skapande +skapandet +skapandets +skapar +skapare +skaparen +skaparens +skapares +skaparna +skaparnas +skapas +skapat +skapats +skar skara +skaran +skarans +skaras +skaror +skarorna +skarornas +skarors +skarp +skarpa +skarpare +skarpast +skarpaste +skarpe +skarpsinnighet +skarpsinnigheten +skarpsinnighetens +skarpsinnigheter +skarpsinnigheterna +skarpsinnigheternas +skarpsinnigheters +skarpsinnighets +skarpt +skarv +skarvar +skarvarna +skarvarnas +skarvars +skarven +skarvens +skarvning +skarvningar +skarvningarna +skarvningarnas +skarvningars +skarvningen +skarvningens +skarvnings +skarvs +skata +skatan +skatans +skatas +skatbo +skatbon +skatbons +skatt +skatta +skattad +skattade +skattades +skattar +skattas +skattat +skattats +skatteavdrag +skatteavdragen +skatteavdragens +skatteavdraget +skatteavdragets +skatteavdrags +skattefri +skattefria +skattefritt +skattefusk +skattefusket +skattefuskets +skattemyndighet +skattemyndigheten +skattemyndighetens +skattemyndigheter +skattemyndigheterna +skattemyndigheternas +skattemyndigheters +skattemyndighets +skatten +skattens +skattepenning +skattepenningen +skattepenningens +skattepennings +skatter +skatterna +skatternas +skatters +skattesats +skattesatsen +skattesatsens +skattesatser +skattesatserna +skattesatsernas +skattesatsers +skattesmitare +skattesmitaren +skattesmitarens +skattesmitares +skattesmitarna +skattesmitarnas +skattkammare +skattkammaren +skattkammarens +skattkammares +skattkammarna +skattkammarnas +skattmas +skattning +skattningar +skattningarna +skattningarnas +skattningars +skattningen +skattningens +skattnings +skattskrev +skattskriva +skattskrivas +skattskriver +skattskrivit +skattskrivning +skattskrivningen +skattskrivningens +skattskrivnings +skava +skavde +skaver +skavt +ske +skebobruk +skebobruks +sked +skedar +skedarna +skedarnas +skedars +skedd +skedda +skedde +skede +skeden +skedena +skedenas +skedens +skedet +skedets +skedvi +skedvis +skee +skeende +skeenden +skeendens +skeendet +skeendets +skees +sken +skena +skenan +skenande +skenandet +skenandets +skenans +skenbar +skenbara +skenbart +skene +skenes +skenet +skenets +skenor +skenorna +skenornas +skenors +skepnad +skepnaden +skepnadens +skepnader +skepnaderna +skepnadernas +skepnaders +skepnads +skepp +skeppa +skeppad +skeppade +skeppades +skeppar +skeppare +skepparen +skepparens +skeppares +skepparna +skepparnas +skeppas +skeppat +skeppats +skeppen +skeppens +skeppet +skeppets +skepps +skeppsbrott +skepsis +skeptisk +skeptiska +skeptiskt +sker +sket +sketch +sketchen +sketchens +sketcher +sketcherna +sketchernas +sketchers +skets +skett +skev +skeva +skevt +skick +skicka +skickad +skickade +skickades +skickar +skickas +skickat +skickats +skicket +skickets +skida +skidan +skidans +skidas +skidor +skidorna +skidornas +skidors +skidresa +skidresan +skidresans +skidresor +skidresorna +skidresornas +skidresors +skift +skifta +skiftad +skiftade +skiftades +skiftande +skiftandet +skiftandets +skiftar +skiftas +skiftat +skiftats +skifte +skiften +skiftens +skiftes +skiftet +skiftets +skiftning +skiftningar +skiftningarna +skiftningarnas +skiftningars +skiftningen +skiftningens +skiftnings +skikt +skiktad +skiktade +skiktat +skikten +skiktens +skiktet +skiktets +skimmer +skimra +skimrade +skimrande +skimrandet +skimrandets +skimrar +skimrat +skimret +skimrets +skin +skina +skinande +skinandet +skinandets +skiner +skingra +skingrad +skingrade +skingrades +skingrar +skingras +skingrat +skingrats +skinka +skinkan +skinkans +skinkor +skinkorna +skinkornas +skinkors +skinn +skinnbyxa +skinnbyxan +skinnbyxans +skinnbyxor +skinnbyxorna +skinnbyxornas +skinnbyxors +skinnet +skinnets +skinnskatteberg +skinnskattebergs +skippa +skippad +skippade +skippades +skippar +skippas +skippat +skippats +skir +skira +skirt +skiss +skissa +skissad +skissade +skissades +skissar +skissartad +skissartade +skissartat +skissas +skissat +skissats +skissen +skissens +skisser +skissera +skisserad +skisserade +skisserades +skisserar +skisseras +skisserat +skisserats +skisserna +skissernas +skissers +skit +skita +skitar +skitarna +skitarnas +skitars +skitas +skitbra +skiten +skitens +skiter +skitig +skitiga +skitigt +skitit +skitits +skitprat +skits +skiva +skivan +skivans +skivarp +skivarps +skivminne +skivminnena +skivminnenas +skivminnes +skivminnet +skivminnets +skivor +skivorna +skivornas +skivors +skjorta +skjortan +skjortans +skjortas +skjortor +skjortorna +skjortornas +skjortors +skjut +skjuta +skjutas +skjuten +skjuter +skjutet +skjutit +skjutits +skjutna +skjutning +skjutningar +skjutningarna +skjutningarnas +skjutningars +skjutningen +skjutningens +skjutnings +skjuts +skjutsa +skjutsad +skjutsade +skjutsades +skjutsar +skjutsas +skjutsat +skjutsats +sko +skock +skocka +skockade +skockades +skockar +skockarna +skockarnas +skockars +skockas +skockat +skockats +skocken +skockens +skodd +skodda +skodde skog +skogar +skogarna +skogarnas +skogars +skogen +skogens skogs +skogsbevuxen +skogsbevuxet +skogsbevuxna +skogsbrukets +skogsdungar +skogsdungarna +skogsdungarnas +skogsdungars +skogsdunge +skogsdungen +skogsdungens +skogstorp +skogstorps +skogsvandring +skogsvandringar +skogsvandringarna +skogsvandringarnas +skogsvandringars +skogsvandringen +skogsvandringens +skogsvandrings +skoj +skojig +skojiga +skojigare +skojigast +skojigaste +skojigt +skomakare +skomakaren +skomakarens +skomakares +skomakarna +skomakarnas +skon +skona +skonad +skonade +skonades +skonar +skonat +skonats +skons +skopa +skopan +skopans +skopas +skopor +skoporna +skopornas +skopors +skor +skorna +skornas +skorpa +skorpan +skorpans +skorpas +skorped +skorpeds +skorpion +skorpionen +skorpionens +skorpioner +skorpionerna +skorpionernas +skorpioners +skorpions +skorpor +skorporna +skorpornas +skorpors +skors +skorsten +skorstenar +skorstenarna +skorstenarnas +skorstenars +skorstenen +skorstenens +skos +skotsk +skotska +skotskt +skott +skottar +skottarna +skottarnas +skottars +skotte +skotten +skottens +skottes +skottet +skottets +skottning +skottningen +skottningens +skottorp +skottorps +skrank +skranket +skrankets +skrapa +skrapade +skrapades +skrapande +skrapandet +skrapandets +skrapar +skrapas +skrapat +skrapats +skratt +skratta +skrattade +skrattades +skrattande +skrattandet +skrattandets +skrattar +skrattas +skrattat +skrattats +skratten +skrattens +skrattet +skrattets +skrattretande +skratts +skred +skrek +skreks +skrev +skreva +skrevan +skrevans +skrevet +skrevets +skrevor +skrevorna +skrevornas +skrevors +skrevs +skri +skria +skriade +skriades +skriande +skriandet +skriandets +skriar +skrias +skriat +skriats +skribent +skribenten +skribentens +skribenter +skribenterna +skribenternas +skribenters +skribents +skrida +skrider +skridit +skridsko +skridskon +skridskons +skridskor +skridskorna +skridskornas +skridskors +skrift +skriften +skriftens +skrifter +skrifterna +skrifternas +skrifters +skrifts +skrik +skrika +skriker +skrin +skrinen +skrinens +skrinet +skrinets +skrins +skriv +skriva +skrivande +skrivandet +skrivandets +skrivare +skrivaren +skrivarens +skrivares +skrivarhastighet +skrivarhastigheten +skrivarhastighetens +skrivarna +skrivarnas +skrivas +skrivbord +skrivborden +skrivbordens +skrivbordet +skrivbordets +skrivbords +skriven +skriver +skriveri +skriverier +skriverierna +skriveriernas +skriveriers +skrives +skrivet +skrivit +skrivits +skrivkramp +skrivmaskin +skrivmaskinen +skrivmaskinens +skrivmaskiner +skrivmaskinerna +skrivmaskinernas +skrivmaskiners +skrivmaskins +skrivna +skrivning +skrivningar +skrivningarna +skrivningarnas +skrivningars +skrivningen +skrivningens +skrivnings +skrivs +skrock +skrocka +skrockade +skrockar +skrockat +skrocket +skrockets +skrot +skrotet +skrotets +skrov +skrovet +skrovets +skrubb +skrubben +skrubbens +skrud +skruden +skrudens +skrumpen +skrumpet +skrumpna +skrutit +skrutits skruv +skruva +skruvad +skruvade +skruvades +skruvar +skruvarna +skruvarnas +skruvars +skruvas +skruvat +skruvats +skruven +skruvens +skruvs +skrymma +skrymmade +skrymmar +skrymmat +skrymtaktig +skrymtaktiga +skrymtaktigt +skrymtare +skrymtaren +skrymtarens +skrymtares +skrymtarna +skrymtarnas +skrymteri +skryt +skryta +skrytas +skryter +skryts +skuffa +skuffad +skuffade +skuffades +skuffar +skuffas +skuffat +skuffats +skugga +skuggad +skuggade +skuggades +skuggan +skuggans +skuggar +skuggas +skuggat +skuggats +skuggor +skuggorna +skuggornas +skuggors +skuggrik +skuggrika +skuggrikt +skum +skumma +skummade +skummades +skummande +skummandet +skummandets +skummar +skummas +skummat +skummats +skummet +skummets +skummig +skummiga +skummigt +skumpa +skumpade +skumpande +skumpandet +skumpandets +skumpar +skumpat +skumt +skur +skura +skurad +skurade +skurades +skurar +skurarna +skurarnas +skurars +skurat +skurats +skuren +skurens +skuret +skurit +skurk +skurkar +skurkarna +skurkarnas +skurkars +skurken +skurkens +skurks +skurna +skurs +skurup +skurups +skurvis +skuta +skutan +skutans +skutor +skutorna +skutornas +skutors +skutta +skuttade +skuttar +skuttat +skvadron +skvadronen +skvadronens +skvadroner +skvadronerna +skvadronernas +skvadroners +skvatt +sky +skyar +skyarna +skyarnas +skyars +skydd +skydda +skyddad +skyddade +skyddades +skyddande +skyddandet +skyddandets +skyddar +skyddas +skyddat +skyddats +skydde +skydden +skyddens +skyddes +skyddet +skyddets +skydds +skyddsutrustning +skyddsutrustningen +skyddsutrustningens +skyddsutrustnings +skygd +skygdet +skygdets +skygg +skygga +skyggare +skyggast +skyggaste +skyggt +skym +skymd +skymda +skymde +skymdes +skymf +skymfa +skymfad +skymfade +skymfades +skymfar +skymfas +skymfat +skymfats +skymma +skymmande +skymmandet +skymmandets +skymmas +skymmer +skymning +skymningar +skymningarna +skymningarnas +skymningars +skymningen +skymningens +skymnings +skyms +skymt +skymta +skymtade +skymtades +skymtar +skymtas +skymtat +skymtats +skymten +skymtens +skymts +skymundan +skyn +skynda +skyndade +skyndades +skyndande +skyndandet +skyndandets +skyndar +skyndaren +skyndas +skyndat +skyndats +skyndsam +skyndsamma +skyndsammare +skyndsammast +skyndsammaste +skyndsamt +skynke +skyns +skyr +skys +skyskrapa +skyskrapan +skyskrapans +skyskrapas +skytt +skyttar +skyttarna +skyttarnas +skyttars +skytte +skytten +skyttens +skyttorp +skyttorps +skytts +smack +smacka +smackade +smackar +smackat +smak +smaka +smakad +smakade +smakades +smakar +smakat +smakats +smaken +smakens +smaker +smakerna +smakernas +smakers +smakriktning +smakriktningar +smakriktningarna +smakriktningarnas +smakriktningars +smaksak +smaksatt +smaksatta +smaksensation +smaksensationen +smaksensationens +smaksensationer +smaksensationerna +smaksensationernas +smaksensationers +smaksensations +smart +smarta +smaskens +smaskig +smaskiga +smaskigare +smaskigast +smaskigaste +smaskigt +smatter +smattra +smattrade +smattrades +smattrande +smattrandet +smattrandets +smattrar +smattras +smattrat +smattrats +smed +smeden +smedens +smeder +smederna +smedernas +smeders +smedja +smedjan +smedjans +smedjebacken +smedjebackens +smedjor +smedjorna +smedjornas +smedjors +smedstorp +smedstorps +smek +smeka +smekande +smekandet +smekandets +smekas +smeker +smeknamn +smeknamnet +smeknamnets +smekning +smekningar +smekningarna +smekningarnas +smekningars +smekningen +smekningens +smeknings +smeks +smeksamhet +smeksamheten +smeksamhetens +smeksamhets +smekt +smekte +smektes +smekts +smet +smeta +smetad +smetade +smetades +smetar +smetat +smetats +smetig +smetiga +smetigt +smets +smicker +smickra +smickrad +smickrade +smickrades +smickrar +smickras +smickrat +smickrats +smickret +smickrets +smida +smidande +smidandet +smidandets +smidare +smidaren +smidarens +smidares +smidarna +smidarnas +smidas +smidd +smidda +smidde +smiddes +smide +smiden +smidens +smider +smideskonst +smidet +smidets +smidig +smidiga +smidigare +smidigast +smidigaste +smidighet +smidigheten +smidighetens +smidighets +smidigt +smink +sminka +sminkad +sminkade +sminkades +sminkar +sminkas +sminkat +sminkats +sminket +sminkets +sminkning +sminkningen +sminkningens +sminknings +sminks +smit +smita +smitare +smitaren +smitarens +smitares +smitarna +smitarnas +smitas +smiter +smitit +smitits +smits +smitt +smitta +smittad +smittade +smittades +smittar +smittat +smittats +smittorisk +smittorisken +smittoriskens +smitts +smittsam +smittsamma +smittsammare +smittsammast +smittsammaste +smittsamt +smog +smoking +smokingar +smokingarna +smokingarnas +smokingars +smokingen +smokingens +smokings +smord +smorda +smorde +smordes +smort +smorts +smugit +smurf +smurfar +smurfarna +smurfarnas +smurfars +smurfen +smurfens +smuts +smutsa +smutsade +smutsar +smutsat +smutsig +smutsiga +smutsigare +smutsigast +smutsigaste +smutsigt +smutskastning +smutskastningen +smutskastningens +smycka +smyckad +smyckade +smyckades +smyckar +smyckas +smyckat +smyckats +smycke +smycken +smyckens +smyg +smyga +smygande +smygandet +smygandets +smygehamn +smygehamns +smyger +snabb +snabba +snabbade +snabbar +snabbare +snabbas +snabbast +snabbaste +snabbat +snabbe +snabbes +snabbhet +snabbheten +snabbhetens +snabbhets +snabbt +snabbvisit +snack +snacka +snackade +snackades +snackande +snackandet +snackandets +snackar +snackas +snackat +snackats +snacket +snackets +snappa +snappade +snappar +snappat +snaps +snar +snara +snaran +snarans +snarare +snarast +snaraste +snarka +snarkade +snarkar +snarkat +snaror +snarorna +snarornas +snarors +snart +snaskig +snaskiga +snaskigare +snaskigast +snaskigaste +snaskigt +snatta +snattade +snattar +snattat +snava +snavade +snavar +snavat +sned +sneda +snedare +snedast +snedaste +snedda +sneddade +sneddande +sneddandet +sneddandets +sneddar +sneddat +snedstreck +snedvridning +snedvridningar +snedvridningarna +snedvridningarnas +snedvridningars +snedvridningen +snedvridningens +snedvridnings +snesudden +snesuddens +snett +snickare +snickaren +snickarens +snickares +snickarna +snickarnas +snickeri +snickra +snickrad +snickrade +snickrades +snickrar +snickras +snickrat +snickrats +snida +snidade +snidades +snidar +snidas +snidat +snidats +sniken +sniket +snikna +snitt +snittet +snittets +sno +snobberi +snobbism +snobbismen +snobbismens +snodd +snodda +snodde +snoddes +snok +snoka +snokade +snokades +snokar +snokarna +snokarnas +snokars +snokas +snokat +snokats +snoken +snokens +snopen +snopet +snopna +snor +snoret +snorets +snorkig +snorkiga +snorkigare +snorkigast +snorkigaste +snorkigt +snos +snott +snotts +snudda +snuddade +snuddar +snuddat +snurr +snurra +snurrad +snurrade +snurrades +snurrande +snurrandet +snurrandets +snurrar +snurras +snurrat +snurrats +snus +snuset +snusets +snut +snutar +snutarna +snutarnas +snutars +snuten +snutens +snutit +snutits +snutt +snuttar +snuttarna +snuttarnas +snuttars +snutten +snuttens +snuva +snuvad +snuvade +snuvan +snuvans +snuvas +snuvat +snuvor +snuvorna +snuvornas +snuvors +snyfta +snyftade +snyftades +snyftande +snyftandet +snyftandets +snyftar +snyftare +snyftaren +snyftarens +snyftares +snyftarna +snyftarnas +snyftas +snyftat +snyftats +snyftning +snyftningar +snyftningarna +snyftningarnas +snyftningars +snyftningen +snyftningens +snyftnings +snygg +snygga +snyggare +snyggast +snyggaste +snyggt +snyt +snyta +snytas +snytbagge +snyter +snyts +sober +sobert +sobra +societet +societeten +societetens +societeter +societeterna +societeternas +societeters +socioekonomisk +socioekonomiska +socioekonomiskt +socka +sockan +sockans +socken +socker +sockerbit +sockerbitar +sockerbitarna +sockerbitarnas +sockerbitars +sockerbiten +sockerbitens +sockerkaka +sockerkakan +sockerkakans +sockerkakas +socknen +socknens +sockor +sockorna +sockornas +sockors +soffa +soffan +soffans +soffas +soffor +sofforna +soffornas +soffors +sofia +sofias +sofie +sofies +sofistikerad +sofistikerade +sofistikerat +soja +sojan +sojans +sojas +som +somatisk +somatiska +somatiskt +sommar +sommararbete +sommararbetet +sommararbetets +sommardag +sommardagar +sommardagarna +sommardagarnas +sommardagars +sommardagen +sommardagens +sommardags +sommaren +sommarens +sommarnatt +sommarnatten +sommarnattens +sommarstuga +sommarstugan +sommarstugans +sommarstugas +sommarstugor +sommarstugorna +sommarstugornas +sommarstugors +sommartid +sommartiden +sommartidens +sommartids +sommarvarm +sommarvarma +sommarvarmt +sommen +sommens +somna +somnad +somnade +somnades +somnande +somnandet +somnandets +somnar +somnat +somnats +somrar +somrarna +somrarnas +somrars +somras +somt +son +sona +sonad +sonade +sonades +sonar +sonas +sonat +sonats +sond +sondera +sonderad +sonderade +sonderades +sonderar +sonderas +sonderat +sonderats +sondotter +sondottern +sondotterns +sonen +sonens +sonhustru +sonhustrun +sonhustruns +sonika +sonja +sonjas +sons +sonson +sonsonen +sonsonens +sonsons +sopa +sopad +sopade +sopades +sopan +sopans +sopar +sopas +sopat +sopats +sopberg +sophink +sopmaja +sopmajan +sopmajans +sopmajor +sopmajorna +sopmajornas +sopmajors +sopor +soporna +sopornas +sopors +soppa +soppan +soppans +soppas +soppero +sopperos +sopran +sopranen +sopranens +sopraner +sopranerna +sopranernas +sopraners +sopstation +sopstationen +sopstationens +sopstations +soptipp +soptippar +soptipparna +soptipparnas +soptippars +soptippen +soptippens +sorg +sorgebud +sorgebudet +sorgebudets +sorgedag +sorgedagar +sorgedagarna +sorgedagarnas +sorgedagars +sorgedagen +sorgedagens +sorgen +sorgens +sorger +sorgerna +sorgernas +sorgers +sorgfri +sorgfria +sorgfritt +sorgsen +sorgset +sorgsna +sorgsne +sork +sorkar +sorkarna +sorkarnas +sorkars +sorken +sorkens +sort +sorten +sortens +sorter +sortera +sorterad +sorterade +sorterades +sorterar +sorteras +sorterat +sorterats +sortering +sorteringen +sorteringens +sorterings +sorterna +sorternas +sorters +sorti +sortien +sortiens +sortiment +sortimenten +sortimentens +sortimentet +sortimentets +sortin +sortins +sorts +sorunda +sorundas +sot +sotare +sotaren +sotarens +sotares +sotarna +sotarnas +sotig +sotiga +sotigt +souvenir +souveniren +souvenirens +souvenirer +souvenirerna +souvenirernas +souvenirers +sov +sova +sovande +sovandet +sovandets +sover +sovit +sovjet +sovjetisk +sovjetiska +sovjetiskt +sovjets +sovra +sovrade +sovrades +sovrar +sovras +sovrat +sovrats +sovrum +sovrummen +sovrummens +sovrummet +sovrummets +sovrums +sovvagn +sovvagnar +sovvagnarna +sovvagnarnas +sovvagnars +sovvagnen +sovvagnens +sovvagns +spad +spadar +spadarna +spadarnas +spadars +spade +spaden +spadens +spader +spaderna +spadernas +spaders +spades +spads +spagetti +spaghetti +spak +spakar +spakarna +spakarnas +spakars +spaken +spakens +spana +spanade +spanades +spanande +spanandet +spanandets +spanar +spanare +spanaren +spanarens +spanares +spanarna +spanarnas +spanas +spanat +spanats +spanien +spaniens +spaning +spaningar +spaningarna +spaningarnas +spaningars +spaningen +spaningens +spanings +spanjor +spanjoren +spanjorens +spanjorer +spanjorerna +spanjorernas +spanjorers +spanjors +spann +spannet +spannets +spanns +spansk +spanska +spanskan +spanskans +spanskt +spara +sparad +sparade +sparades +sparande +sparar +sparare +spararen +spararens +sparares +spararna +spararnas +sparas +sparat +sparats +sparbeting +sparbetingen +sparbetingens +sparbetings +spargris +spark +sparka +sparkad +sparkade +sparkades +sparkande +sparkandet +sparkandets +sparkar +sparkarna +sparkarnas +sparkars +sparkas +sparkat +sparkats +sparken +sparkens +sparra +sparrad +sparrade +sparrades +sparrar +sparrat +sparrats +sparsam +sparsamma +sparsammare +sparsammast +sparsammaste +sparsamt +spartansk +spartanska +spartanskt +sparv +sparvar +sparvarna +sparvarnas +sparvars +sparven +sparvens +spatt +spe +specificera +specificerad +specificerade +specificerades +specificerande +specificerandet +specificerandets +specificerar +specificeras +specificerat +specificerats +specifik +specifika +specifikation +specifikationen +specifikationens +specifikationer +specifikationerna +specifikationernas +specifikationers +specifikations +specifikt +speditionsfirma +speditionsfirman +speditionsfirmans +speditionsfirmor +speditionsfirmorna +speditionsfirmornas +speditionsfirmors +speja +spejade +spejande +spejandet +spejandets +spejar +spejare +spejaren +spejarens +spejares +spejarna +spejarnas +spejat +spektrum +spenar +spenarna +spenarnas +spenars +spendera +spenderad +spenderade +spenderades +spenderar +spenderas +spenderat +spenderats +spene +spenen +spenens +sperma +sperman +spermans +spermas +spets +spetsa +spetsad +spetsade +spetsades +spetsar +spetsarna +spetsarnas +spetsars +spetsat +spetsats +spetsen +spetsens +spetsfundighet +spetsfundigheten +spetsfundighetens +spetsfundigheter +spetsfundigheterna +spetsfundigheternas +spetsfundigheters +spetsfundighets +spetsig +spetsiga +spetsigare +spetsigast +spetsigaste +spetsigt +spex +spigg +spiggar +spiggarna +spiggarnas +spiggars +spiggen +spiggens +spik +spika +spikar +spikarna +spikarnas +spikars +spiken +spikens +spikrak +spikraka +spikrakt +spinn +spinna +spinner +spinnerska +spinnerskan +spinnerskans +spinnerskor +spinnerskorna +spinnerskornas +spinnerskors +spion +spionage +spionaget +spionagets +spionen +spionens +spioner +spionera +spionerad +spionerade +spionerades +spionerar +spioneras +spionerat +spionerats +spionerna +spionernas +spioners +spira +spirade +spiran +spirande +spirandet +spirandets +spirans +spirar +spirat +spiror +spirorna +spirornas +spirors +spis +spisa +spisade +spisades +spisar +spisas +spisat +spisats +spisen +spisens +spjut +spjuten +spjutens +spjutet +spjutets +sponsra +sponsrad +sponsrade +sponsrades +sponsrar +sponsras +sponsrat +sponsrats +spontan +spontana +spontanare +spontanast +spontanaste +spontant +sporadisk +sporadiska +sporadiskt +spord +sporde +spordes +sporra +sporrad +sporrade +sporrades +sporrande +sporrandet +sporrandets +sporrar +sporras +sporrat +sporrats +sporre +sport +sporten +sportens +sporter +sporterna +sporternas +sporters +sports +spotsk +spotska +spotskhet +spotskheten +spotskhetens +spotskhets +spotskt +spott +spotta +spottade +spottades +spottar +spottas +spottat +spottats +spottstyver +sprack +spraka +sprakade +sprakande +sprakandet +sprakandets +sprakar +sprakat +sprang +spratt +spratten +sprattens +spray +spred +spreds +spreja +spricka +sprickan +sprickans +sprickas +sprid +sprida +spridande +spridandet +spridandets +spridas +spridd +spridda +spridde +spriddes +sprider +sprides +spridning +spridningar +spridningarna +spridningarnas +spridningars +spridningen +spridningens +spridnings +sprids +spring +springa +springan +springande +springandet +springandets +springans +springare +springaren +springarens +springares +springarna +springarnas +springbrunn +springbrunnar +springbrunnarna +springbrunnarnas +springbrunnars +springbrunnen +springbrunnens +springer +springor +springorna +springornas +springors +sprint +sprintar +sprintarna +sprintarnas +sprintars +sprinten +sprintens +sprit +spriten +spritens +spritt +spritta +sprittande +sprittandet +sprittandets +spritter +spritts +sprucken +sprucket +spruckit +spruckna +sprund +sprundet +sprundets +sprungen +sprunget +sprungit +sprungna +spruta +sprutade +sprutan +sprutande +sprutandet +sprutandets +sprutans +sprutar +sprutas +sprutat +sprutor +sprutorna +sprutornas +sprutors +spunnit +spurt +spy +spydde +spyddes +spyr +spys +spytt +spytts +sri +stab +staben +stabens +stack +stacka +stackare +stackaren +stackarens +stackares +stackarna +stackarnas +stackars +stacken +stackens +stacks +stad +stadd +stadda +staden +stadens +stadga +stadgad +stadgade +stadgades +stadgan +stadgar +stadgarna +stadgarnas +stadgars +stadgas +stadgat +stadgats +stadier +stadierna +stadiernas +stadiers +stadiet +stadiets +stadig +stadiga +stadigare +stadigast +stadigaste +stadigt +stadigvarande +stadium +stads +stadshus +stadsmur +stadsmuren +stadsmurens +stadsport +stadsportar +stadsportarna +stadsportarnas +stadsportars +stadsporten +stadsportens +stadsteater +stadsteatern +stadsteaterns +stadsvakt +stadsvakten +stadsvaktens +stafett +stafetten +stafettens +staffan +staffans +staffanstorp +staffanstorps +stagnera +stagnerad +stagnerade +stagnerar +stagnerat +stakar +stakarna +stakarnas +stakars +stake +staken +stakens +stakes +staket +staketen +staketens +staketet +staketets +stam +stamfader +stamfadern +stamfaderns +stamfaders +stamma +stammade +stammande +stammandet +stammandets +stammar +stammarna +stammarnas +stammars +stammat +stammen +stammens +stammis +stammisar +stammisarna +stammisarnas +stammisars +stammisen +stammisens +stampa +stampade +stampande +stampandet +stampandets +stampar +stampat +stams +standar +standard +standarden +standardens +standarder +standarderna +standardernas +standarders +standardformat +standardformaten +standardformatens +standardformatet +standardformatets +standardisera +standardiserad +standardiserade +standardiserades +standardiserar +standardiserat +standardiserats +standardisering +standardiseringen +standardiseringens +standardiserings +standaren +standarens +standaret +standarets +stank +stanna +stannade +stannades +stannande +stannandet +stannandets +stannar +stannas +stannat +stannats +stansa +stansad +stansade +stansades +stansar +stansas +stansat +stansats +stansning +stansningar +stansningarna +stansningarnas +stansningars +stansningen +stansningens +stansnings +starar +stararna +stararnas +starars +stare +staren +starens +stares +stark +starka +starkare +starkast +starkaste +starke +starkhet +starkheten +starkhetens +starkhets +starkt +start +starta +startad +startade +startades +startande +startandet +startandets +startar +startas +startat +startats +starten +startens +startpunkt +startpunkten +startpunktens +startraket +startraketen +startraketens +startraketer +startraketerna +startraketernas +startraketers +startrakets +startskott +startskotten +startskottens +startskottet +startskottets +starttid +starttiden +starttidens +stat +statare +stataren +statarens +statares +statarna +statarnas +staten +statens +stater +staterna +staternas +staters +station +stationen +stationens +stationer +stationerna +stationernas +stationers +stations +statisk +statiska +statiskt +statist +statisten +statistens +statister +statisterna +statisternas +statisters +statistik +statistiken +statistikens +statistiker +statistikerna +statistikernas +statistikers +statistikprogram +statistikprogrammen +statistikprogrammens +statistikprogrammet +statistikprogrammets +statistikprograms +statistisk +statistiska +statistiskt +stativ +stativen +stativens +stativet +stativets +stats +statsbidrag +statsbidragen +statsbidragens +statsbidraget +statsbidragets +statsfiende +statsfienden +statsfiendens +statsfiender +statsfienderna +statsfiendernas +statsfienders +statsmakt +statsmakten +statsmaktens +statsmakter +statsmakterna +statsmakternas +statsmakters +statsman +statsmannen +statsmannens +statsmans +statsminister +statsministern +statsministerns +statsministers +statsministrar +statsministrarna +statsministrarnas +statsministrars +statssekreterare +statssekreteraren +statssekreterarens +statssekreterares +statssekreterarna +statssekreterarnas +statt +status +staty +statyer +statyerna +statyernas +statyers +statyn +statyns +stav +stava +stavade +stavar +stavarna +stavarnas +stavars +stavas +stavat +staven +stavens +stavning +stavningar +stavningarna +stavningarnas +stavningars +stavningen +stavningens +stavnings +stavsudda +stavsuddas +stefan +stefans +steg +stega +stegade +stegades +stegar +stegas +stegat +stegats +stege +stegen +stegens +steget +stegets +stegning +stegningar +stegningarna +stegningarnas +stegningars +stegningen +stegningens +stegnings +stegra +stegrade +stegrades +stegrande +stegrandet +stegrandets +stegrar +stegras +stegrat +stegrats +stegvis +stehag +stehags +stek +steka +stekande +stekandet +stekandets +stekar +stekarna +stekarnas +stekars +stekas +steken +stekens +steker +stekpanna +stekpannan +stekpannans +stekpannas +stekpannor +stekpannorna +stekpannornas +stekpannors +steks +stekt +stekte +stektes +stekts sten +stena +stenad +stenade +stenades +stenansikte +stenansikten +stenansiktens +stenar +stenarna +stenarnas +stenars +stenas +stenat +stenats +stenbock +stenbocken +stenbockens +stenbocks +stenen +stenens +stenget +stengeten +stengetens +stengrund +stengrunden +stengrundens +stenhamra +stenhamras +stenhuggare +stenhuggaren +stenhuggarens +stenhuggares +stenhuggarna +stenhuggarnas +stenig +steniga +stenigt +stenograf stens +stenstorp +stenstorps +stentrappa +stentrappan +stentrappans +stentrappor +stentrapporna +stentrappornas +stentrappors +stenungsund +stenungsunds +stenur +stereo +stereon +stereons +stereoskop +stereoskopen +stereoskopens +stereoskopet +stereoskopets +stereoskops +stereotyp +stereotypa +stereotypt +stick +sticka +stickande +stickandet +stickandets +sticken +stickens +sticker +sticket +stickets +stickning +stickningar +stickningarna +stickningarnas +stickningars +stickningen +stickningens +sticknings +stift +stifta +stiftad +stiftade +stiftades +stiftar +stiftas +stiftat +stiftats +stiften +stiftens +stiftet +stiftets +stifts stig +stiga +stigande +stigar +stigarna +stigarnas +stigars stigen stigens +stiger +stiget +stigit +stigmata +stigmatisering +stigmatiseringen +stigmatiseringens +stigmatiserings +stigna stigs +stigtomta +stigtomtas +stim +stimma +stimmade +stimmar +stimmat +stina +stinas +sting +stinga +stingen +stingens +stings +stinka +stinkande +stinkandet +stinkandets +stinker +stipendier +stipendierna +stipendiernas +stipendiers +stipendiet +stipendiets +stipendium +stirra +stirrade +stirrades +stirrande +stirrandet +stirrandets +stirrar +stirras +stirrat +stirrats +stoby +stobys +stock +stocka +stockar +stockarna +stockarnas +stockars +stockaryd +stockaryds +stockas +stocken +stockens +stocksund +stocksunds +stod +stoden +stodens +stoder +stoderna +stodernas +stoders +stoff +stoffet +stoffets +stoft +stoftet +stoftets +stoj +stoja +stojade +stojades +stojande +stojandet +stojandets +stojar +stojas +stojat +stojats +stokastisk +stokastiska +stokastiskt +stommar +stommarna +stommarnas +stommars +stomme +stommen +stommens +stop +stopet +stopets +stopp +stoppa +stoppade +stoppades +stoppande +stoppandet +stoppandets +stoppar +stoppas +stoppat +stoppats +stor +stora +storartad +storartade +storartat +storas +storbritannien +storbritanniens +stordator +store +storebro +storebror +storebros +stores +storfors +storhet +storheten +storhetens +storheter +storheterna +storheternas +storheters +storhets +stork +storkar +storkarna +storkarnas +storkars +storken +storkens +storkna +storknade +storknar +storknat +storm +storma +stormad +stormade +stormades +stormakt +stormakten +stormaktens +stormakter +stormakterna +stormakternas +stormakters +stormakts +storman +stormande +stormannen +stormannens +stormans +stormar +stormare +stormaren +stormarens +stormares +stormarknad +stormarknaden +stormarknadens +stormarknader +stormarknaderna +stormarknadernas +stormarknaders +stormarknads +stormarna +stormarnas +stormars +stormas +stormat +stormats +stormen +stormens +stormig +stormiga +stormigt +stormning +stormningar +stormningarna +stormningarnas +stormningars +stormningen +stormningens +stormnings +storms +stormvind +stormvindar +stormvindarna +stormvindarnas +stormvindars +stormvinden +stormvindens +storsint +storsinta +storspov +storspovar +storspovarna +storspovarnas +storspovars +storspoven +storspovens +storstad +storstaden +storstadens +storstads +storstadsregion +storstadsregionen +storstadsregionens +storstadsregioner +storstadsregionerna +storstadsregionernas +storstadsregioners +storstuga +storstugan +storstugans +storstugor +storstugorna +storstugornas +storstugors +storsund +storsunds +stort +storting +stortinget +stortingets +stortings +storuman +storumans +storverk +storverken +storverkens +storverket +storverkets +storverks +storvik +storviks +storvreta +storvretas +storvuxen +storvuxet +storvuxna +storvuxnas +storvuxne +storvuxnes +story +storyn +storyns +straff +straffa +straffad +straffade +straffades +straffande +straffandet +straffandets +straffar +straffarbete +straffarbeten +straffarbetena +straffarbetenas +straffarbetens +straffarbetet +straffarbetets +straffas +straffat +straffats +straffbar +straffbara +straffbart +straffen +straffens +straffet +straffets +stram +strama +stramade +stramades +stramar +stramare +stramas +stramast +stramat +stramats +stramhet +stramheten +stramhetens +stramhets +stramt strand +stranda +strandad +strandade +strandades +strandar +strandat +strandats +stranden +strandens +strandkant +strandkanten +strandkantens +strands +strandsatt +strandsatta +strapats +strapatsen +strapatsens +strapatser +strapatserna +strapatsernas +strapatsers +strateg +strategen +strategens +strateger +strategerna +strategernas +strategers +strategi +strategier +strategierna +strategiernas +strategiers +strategin +strategins +strategisk +strategiska +strategiskt +strax +straxt +streck +strecka +streckad +streckade +streckades +streckar +streckat +streckats +strecken +streckens +strecket +streckets +stred +strejk +strejka +strejkade +strejkades +strejkande +strejkandet +strejkandets +strejkar +strejkas +strejkat +strejkats +strejken +strejkens +strejker +strejkerna +strejkernas +strejkers +stress +stressa +stressad +stressade +stressades +stressande +stressandet +stressandets +stressar +stressas +stressat +stressats +stressen +stressens +stressfaktor +stressfaktorn +stressfaktorns +stressig +stressiga +stressigt +streta +stretade +stretar +stretat +strid +strida +stridande +stridandet +stridandets +stridare +stridast +stridaste +stridbar +stridbara +stridbart +striden +stridens +strider +striderna +stridernas +striders +stridit +strids +stridskamrat +stridskamraten +stridskamratens +stridskamrater +stridskamraterna +stridskamraternas +stridskamraters +strikt +strikta +striktare +striktast +striktaste +strimma +strimmad +strimmade +strimmades +strimman +strimmans +strimmar +strimmat +strimmats +strimmor +strimmorna +strimmornas +strimmors +strindberg +strindbergs +stringent +stringenta +stringentare +stringentast +stringentaste +stritt +strof +strofen +strofens +strofer +stroferna +strofernas +strofers +stropp +struken +struket +strukit +strukna +struktur +strukturen +strukturens +strukturera +strukturerad +strukturerade +strukturerades +strukturerande +strukturerandet +strukturerandets +strukturerar +strukturerat +strukturerats +strukturering +struktureringar +struktureringarna +struktureringarnas +struktureringars +struktureringen +struktureringens +strukturerings +strumpa +strumpan +strumpans +strumpor +strumporna +strumpornas +strumpors +strunt +strunta +struntade +struntar +struntat +struntprat +strupar +struparna +struparnas +strupars +strupe +strupen +strupens +strut +struts +strutsar +strutsarna +strutsarnas +strutsars +strutsen +strutsens +stryk +stryka +strykande +strykandet +strykandets +stryker +strykes +strykning +strykningar +strykningarna +strykningarnas +strykningars +strykningen +strykningens +stryknings +stryp +stubb +stubbar +stubbarna +stubbarnas +stubbars +stubbe +stubben +stubbens +stubbes +stubbig +stubbiga +stubbigt +stubin +stuckit +student +studenten +studentens +studenter +studenterna +studenternas +studenters +studera +studerade +studerades +studerande +studerandet +studerandets +studerar +studeras +studerat +studerats +studie +studieintyg +studieintyget +studieintygets +studien +studiens +studier +studierektor +studierektorn +studierektorns +studierektors +studierna +studiernas +studiers +studies +studiet +studiets +studio +studion +studions +studium +studs +studsa +studsade +studsades +studsande +studsandet +studsandets +studsar +studsas +studsat +studsats +studsen +studsens +stuga +stugan +stugans +stugas +stugby +stugbyar +stugbyarna +stugbyarnas +stugbyars +stugor +stugorna +stugornas +stugors +stugun +stuguns +stukturera +stukturerade +stukturerades +stukturerande +stukturerandet +stukturerandets +stukturerar +stuktureras +stukturerat +stukturerats +stum +stumma +stumme +stump +stumpar +stumparna +stumparnas +stumpars +stumpen +stumpens +stumt +stund +stunda +stundade +stundande +stundar +stundat +stunden +stundens +stunder +stunderna +stundernas +stunders +stundom +stunds +stungen +stunget +stungna +stup +stupa +stupade +stupades +stupande +stupandet +stupandets +stupar +stupas +stupat +stupats +stupen +stupens +stupet +stupets +stupid +sture +sturefors +stures +stursk +sturska +sturskt +sturup +sturups +stut +stutar +stutarna +stutarnas +stutars +stuten +stutens +stuva +stuvad +stuvade +stuvades +stuvar +stuvas +stuvat +stuvats +styck +stycka +styckad +styckade +styckades +styckar +styckas +styckat +styckats +stycke +styckebruk +styckebruks +stycken +styckena +styckenas +styckens +styckes +stycket +styckets +styckvis +stygg +stygga +styggt +stygn +stygnen +stygnens +stygnet +stygnets +stympa +stympad +stympade +stympades +stympar +stympas +stympat +stympats +styr +styra +styrande +styrandet +styrandets +styras +styrd +styrda +styrde +styrdes +styre +styrena +styrenas +styrenhet +styrenheten +styrenhetens +styrenheter +styrenheterna +styrenheternas +styrenheters +styret +styrets +styrk +styrka +styrkan +styrkans +styrkas +styrker +styrks +styrkt +styrkta +styrkte +styrktes +styrkts +styrmotor +styrmotorer +styrmotorerna +styrmotorernas +styrmotorers +styrning +styrningar +styrningarna +styrningarnas +styrningars +styrningen +styrningens +styrnings +styrs +styrt +styrts +styv +styva +styvare +styvast +styvaste +styver +styvern +styverns +styvnad +styvnade +styvnat +styvt +subjekt +subjektiv +subjektiva +subjektivitet +subjektiviteten +subjektivitetens +subjektivt +substans +substansen +substansens +substanser +substanserna +substansernas +substansers +substantiv +substantiven +substantivens +substantivet +substantivets +substitut +substituten +substitutens +substitutet +substitutets +substitution +substitutionen +substitutionens +substitutioner +substitutionerna +substitutionernas +substitutioners +substitutions +subtrahera +subtraherad +subtraherade +subtraherades +subtraherar +subtraheras +subtraherat +subtraherats +subtraktion +subtraktionen +subtraktionens +subtraktioner +subtraktionerna +subtraktionernas +subtraktioners +subtraktions +subventionera +subventionerad +subventionerade +subventionerades +subventionerar +subventioneras +subventionerat +subventionerats +successiv +successiva +successivt +suck +sucka +suckade +suckades +suckande +suckandet +suckandets +suckar +suckarna +suckarnas +suckars +suckas +suckat +suckats +sucken +suckens +sudan +sudans +sudda +suddade +suddades +suddar +suddas +suddat +suddats +suddig +suddiga +suddigare +suddigast +suddigaste +suddigt +suffix +suffixen +suffixens +suffixet +suffixets +sug +suga +sugande +sugandet +sugandets +sugas +suger +suget +sugets +suggerera +suggererade +suggererades +suggererande +suggererandet +suggererandets +suggererar +suggereras +suggererat +suggererats +suggestion +suggestionen +suggestionens +suggestioner +suggestionerna +suggestionernas +suggestioners +suggestions +suggestiv +suggestiva +suggestivt +sugit +sugits +sugs +sukta +suktade +suktar +suktat +summa +summan +summans +summarisk +summariska +summariskt +summation +summationen +summationens +summations +summera +summerad +summerade +summerades +summerar +summeras +summerat +summerats +summering +summeringen +summeringens +summor +summorna +summornas +summors +sump +sumpar +sumparna +sumparnas +sumpars +sumpen +sumpens +sund +sunda +sundare +sundast +sundaste +sundborn +sundborns +sundby +sundbyberg +sundbybergs +sundbys +sunden +sundens +sunderbyn +sunderbyns +sundet +sundets +sundsbruk +sundsbruks +sune +sunes +sunne +sunnemo +sunnemos +sunnes +sunt +sup +supa +supar +suparna +suparnas +supars +supas +supen +supens +super +superb +superba +superbt +superdator +superdatorn +superdatorns +superego +superegot +superegots +superintendent +superintendenten +superintendentens +supernova +supernovan +supernovans +supernovas +supit +supits +supporter +sups +sur +sura +surahammar +surahammars +surare +surast +suraste +surdeg +surdegar +surdegarna +surdegarnas +surdegars +surdegen +surdegens +surdegs +surinam +surinams +surna +surnad +surnade +surnades +surnar +surnat +surnats +surr +surra +surrad +surrade +surrades +surrar +surras +surrat +surrats +surren +surrens +surret +surrets +surrogat +surrogaten +surrogatens +surrogatet +surrogatets +surt +surte +surtes +sus +susa +susade +susande +susandet +susandets +susanne +susannes +susar +susat +susen +susens +suset +susets +susning +susningar +susningarna +susningarnas +susningars +susningen +susningens +susnings +suspekt +suspekta +suspendera +suspenderad +suspenderade +suspenderades +suspenderar +suspenderas +suspenderat +suspenderats +suttit +svacka +svackan +svackans +svackas +svackor +svackorna +svackornas +svackors +svag +svaga +svagare +svagas +svagast +svagaste +svagdricka +svagdrickan +svagdrickans +svagdrickas +svage +svages +svaghet +svagheten +svaghetens +svagt +svaj +svaja +svajade +svajande +svajandet +svajandets +svajar +svajat +svamp +svampar +svamparna +svamparnas +svampars +svampen +svampens +svan +svanar +svanarna +svanarnas +svanars +svanavattnet +svanavattnets +svanen +svanens +svanesund +svanesunds +svanor +svanorna +svanornas +svans +svansa +svansar +svansarna +svansarnas +svansars +svansen +svansens +svanskog +svanskogs +svante +svantes +svappavaara +svappavaaras +svar +svara +svarade +svarades +svarar +svarare +svararen +svararens +svarares +svararna +svararnas +svaras +svarat +svarats +svaren +svarens +svaret +svarets +svars +svarsporto +svart +svarta +svartare +svartas +svartast +svartaste +svarte +svartes +svartkonst +svartmuskig +svartmuskiga +svartmuskigt +svartna +svartnade +svartnar +svartnat +svartsjuk +svartsjuka +svartsjukan +svartsjukans +svartsjukas +svartsjuke +svartsjukt +svartvit +svartvita +svartvitt +svarv +svarva +svarvad +svarvade +svarvades +svarvar +svarvas +svarvat +svarvats +svea +svears +sveas +sved +svedde +svedjebruk +sveg +svegs +svek +sveken +svekens +sveket +svekets sven +svenner +svennerna +svennernas +svens +svensbyn +svensbyns +svensk +svenska +svenskan +svenskans +svenskar +svenskars +svenske +svensken +svenskens +svenskes +svenskor +svenskorna +svenskornas +svenskors +svenskt +svensson +svenssons +svenstavik +svenstaviks +svep +svepa +sveper +svepning +svepningar +svepningarna +svepningarnas +svepningars +svepningen +svepningens +svepnings +sveps +svepte +sverige +sveriges +sverre +sverres +svetsa +svetsad +svetsade +svetsades +svetsar +svetsas +svetsat +svetsats +svetsning +svetsningar +svetsningarna +svetsningarnas +svetsningars +svetsningen +svetsningens +svetsnings +svett +svetta +svettad +svettade +svettades +svettar +svettas +svettat +svettats +svettdroppar +svettdropparna +svettdropparnas +svettdroppars +svettdroppe +svettdroppen +svettdroppens +svettdrypande +svetten +svettens +svettig +svettiga +svettigt +svid +svida +svidande +svidandet +svidandets +svider +svidit +svika +sviken +sviker +sviket +svikit +svikna +svikta +sviktade +sviktande +sviktandet +sviktandets +sviktar +sviktat +svimma +svimmade +svimmar +svimmat +svimning +svimningar +svimningarna +svimningarnas +svimningars +svimningen +svimningens +svimnings +svin +svinaherde +svinaherden +svinaherdens +svinen +svinens +svinet +svinets +svinga +svingad +svingade +svingades +svingar +svingas +svingat +svingats +svinhjord +svinhjorden +svinhjordens +svinn +svinnet +svinnets +svit +sviten +svitens +sviter +sviterna +sviternas +sviters +svor +svunna +svunnen +svunnet +svunnit +svurit +syd +sydafrika +sydafrikas +sydd +sydda +sydde +syddes +sydkorea +sydkoreas +sydkoster +sydkosters +sydost +sydsverige +syfta +syftade +syftades +syftande +syftandet +syftandets +syftar +syftas +syftat +syftats +syfte +syften +syftena +syftenas +syftens +syftet +syftets +syftning +syftningar +syftningarna +syftningarnas +syftningars +syftningen +syftningens +syftnings +symaskin +symaskiner +symaskinerna +symaskinernas +symaskiners +symbios +symbiosen +symbiosens +symbioser +symbioserna +symbiosernas +symbiosers +symfoni +symfonisk +symfoniska +symfoniskt +symmetri +symmetrisk +symmetriska +symmetriskt +sympati +sympatier +sympatierna +sympatiernas +sympatiers +sympatin +sympatins +sympatisera +sympatiserade +sympatiserar +sympatiserat +sympatisk +sympatiska +sympatiskt +symposier +symposierna +symposiernas +symposiers +symposiet +symposiets +symposium +symptom +symptomatisk +symptomatiska +symptomatiskt +symptomen +symptomens +syn +syna +synad +synade +synades +synagoga +synagogan +synagogans +synagogas +synagogor +synagogorna +synagogornas +synagogors +synar +synas +synat +synats +synbar +synbara +synbart +synd +synda +syndabock +syndade +syndades +syndar +syndare +syndaren +syndarens +syndares +syndarna +syndarnas +syndas +syndat +syndats +synden +syndens +synder +synderna +syndernas +synders +synderska +synderskan +synderskans +synderskas +syndig +syndiga +syndigt +syndrom +syndromen +syndromens +syndromet +syndromets +syne +synen +synens +syner +synerna +synernas +syners +synes +synkron +synkrona +synkronisator +synkronisatorn +synkronisatorns +synkronisators +synkronisera +synkroniserad +synkroniserade +synkroniserades +synkroniserar +synkroniseras +synkroniserat +synkroniserats +synkronism +synkronismen +synkronismens +synkront +synnerhet +synonym +synonyma +synonymt +synopsis +synpunkt +synpunkten +synpunktens +synpunkter +synpunkterna +synpunkternas +synpunkters +synrand +synranden +synrandens +syns +syntax +syntaxen +syntaxens +syntes +syntesen +syntesens +synteser +synteserna +syntesernas +syntesers +syntetisering +syntetiseringen +syntetiseringens +syntetiserings +syntetisk +syntetiska +syntetiskt +synts +syr +syra +syrad +syrade +syran +syrans +syrat +syre +syrebrist +syrebristen +syrebristens +syren +syrenen +syrenens +syrener +syrenerna +syrenernas +syreners +syrens +syres +syret +syrets +syrien +syriens +syriska +syriskan +syriskans +syriskor +syriskorna +syriskornas +syriskors +syror +syrorna +syrornas +syrors +syrsa +syrsan +syrsans +syrsas +syrsor +syrsorna +syrsornas +syrsors +syrtut +syrtuten +syrtutens +sys +syskon +syskonen +syskonens +syskonet +syskonets +syskons +system +systematik +systematisera +systematiserad +systematiserade +systematiserades +systematiserar +systematiseras +systematiserat +systematiserats +systematisering +systematiseringen +systematiseringens +systematiserings +systematisk +systematiska +systematiskt +systemen +systemens +systemerare +systemeraren +systemerarens +systemerares +systemerarna +systemerarnas +systemet +systemets +systems +syster +systern +systerns +systers +systrar +systrarna +systrarnas +systrars +sytt +sytts +tabbe +taberg +tabergs +tabu +tabun +tabuns +tabut +tabuts +tack +tacka +tackad +tackade +tackades +tackande +tackandet +tackandets +tackar +tackas +tackat +tackats +tacken +tackoffer +tacksam +tacksamhet +tacksamheten +tacksamhetens +tacksamhets +tacksamma +tacksammare +tacksammast +tacksammaste +tacksamt +tadzjikistan +tadzjikistans +tafatt +tafatta +tag +taga +tagande +tagandet +tagandets +tagare +tagaren +tagarens +tagares +tagarna +tagarnas +tagas +tage +tagen +tager tages +taget +tagets +tagg +taggen +taggens +taggig +taggiga +taggigt +tagit +tagits +tagna +tagning +tagningar +tagningarna +tagningarnas +tagningars +tagningen +tagningens +tagnings +taiwan +taiwans +tak +taken +takens +taket +takets +takt +takten +taktens +takterrass +takterrassen +takterrassens +takterrasser +takterrasserna +takterrassernas +takterrassers +taktfast +taktfasta +taktik +taktiken +taktikens +taktisk +taktiska +taktiskt +tam +tama +tamare +tamast +tamp +tampades +tampas +tampats +tamt +tand +tandad +tandade +tandat +tandem +tandemen +tandemens +tandemet +tandemets +tandems +tanden +tandens +tandpetare +tandpetaren +tandpetarens +tandpetares +tandpetarna +tandpetarnas +tandrad +tandraden +tandradens +tandrader +tandraderna +tandradernas +tandraders +tandsbyn +tandsbyns +tangent +tangentbord +tangentborden +tangentbordens +tangentbordet +tangentbordets +tangentbords +tangenten +tangentens +tangenter +tangenterna +tangenternas +tangenters +tangera +tangerad +tangerade +tangerades +tangerar +tangerat +tangerats +tank +tanka +tankar +tankarna +tankarnas +tankars +tanke +tanken +tankens +tankes +tankspridd +tankspridda +tankspritt +tankstreck +tant +tanten +tantens +tanter +tanterna +tanternas +tanters +tanumshede +tanumshedes +tanzania +tanzanias +tanzanisk +tanzaniska +tanzaniskt +tapet +tapeten +tapetens +tapeter +tapeterna +tapeternas +tapeters +tapir +tapiren +tapirens +tapirer +tapirerna +tapirernas +tapirers +tapirs +tapp +tappa +tappad +tappade +tappades +tappande +tappandet +tappandets +tappar +tappas +tappat +tappats +tapper +tapperhet +tapperheten +tapperhetens +tapperhets +tappert +tappning +tappningar +tappningarna +tappningarnas +tappningars +tappningen +tappningens +tappnings +tappra +tapprare +tappras +tapprast +tappraste +tappre +tappres +tappt +tapto +tar +tariff +tariffen +tariffens +tariffer +tarifferna +tariffernas +tariffers +tarm +tarmar +tarmarna +tarmarnas +tarmars +tarmen +tarmens +tarva +tarvade +tarvar +tarvas +tarvat +tarzan +tarzans +tas +taskig +taskiga +taskigare +taskigast +taskigaste +taskigt +tassa +tassade +tassar +tassat +tatuera +tatuerad +tatuerade +tatuerades +tatuerar +tatueras +tatuerat +tatuerats +tatuering +tatueringar +tatueringarna +tatueringarnas +tatueringars +tatueringen +tatueringens +tatuerings +tax +taxa +taxan +taxans +taxar +taxarna +taxarnas +taxars +taxeinformation +taxeinformationen +taxeinformationens +taxeinformations +taxen +taxens +taxera +taxerad +taxerade +taxerades +taxerar +taxerare +taxeraren +taxerarens +taxerares +taxerarna +taxerarnas +taxeras +taxerat +taxerats +taxi +taxin +taxins +taxonomi +taxonomin +taxonomins +taxor +taxorna +taxornas +taxors +tchad +tchads +team +teater +teatern +teaterns +teatrar +teatrarna +teatrarnas +teatrars +tecken +teckens +teckenvis +teckna +tecknad +tecknade +tecknades +tecknande +tecknandet +tecknandets +tecknar +tecknare +tecknaren +tecknarens +tecknares +tecknarna +tecknarnas +tecknas +tecknat +tecknats +tecknen +tecknens +tecknet +tecknets +teckning +teckningar +teckningarna +teckningarnas +teckningars +teckningen +teckningens +tecknings +teckomatorp +teckomatorps +tedde +teer +teerna +teernas +teers +teet +teets +tefat +tefaten +tefatens +tefatet +tefatets +teg +tegar +tegarna +tegarnas +tegars +tegen +tegens +tejp +tejpa +tejpad +tejpade +tejpades +tejpar +tejpas +tejpat +tejpats +teknik +tekniken +teknikens +tekniker +teknikern +teknikerns +teknisk +tekniska +tekniskt +teknokratisk +teknokratiska +teknokratiskt +tema +teman +temans +temas +temat +tematisk +tematiska +tematiskt +temats +temperament +temperamenten +temperamentens +temperamentet +temperamentets +temperaments +temperatur +temperaturen +temperaturens +temperaturer +temperaturerna +temperaturernas +temperaturers +temperaturs +tempo +tempon +tempons +tempot +tempots +ten +tenar +tenarna +tenarnas +tenars +tendens +tendensen +tendensens +tendenser +tendenserna +tendensernas +tendensers +tendera +tenderade +tenderar +tenderat +tenen +tenens +tenn +tennet +tennets +tennis +tennisen +tennisens +tenns +tentamen +tentamens +tentamina +teorem +teoremen +teoremens +teoremet +teoremets +teorems +teoretiker +teoretikern +teoretikerna +teoretikernas +teoretikerns +teoretikers +teoretisk +teoretiska +teoretiskt +teori +teorier +teorierna +teoriernas +teoriers +teorin +teorins +teoris +teosof +teosofen +teosofens +teosofer +teosoferna +teosofernas +teosofers +teosofs +ter +terapeutisk +terapeutiska +terapeutiskt +terapi +terapier +terapierna +terapiernas +terapiers +terapin +terapins +terapis +teresia +teresias +term +termen +termens +termer +termerna +termernas +termers +termin +terminator +terminatorer +terminatorerna +terminatorernas +terminatorers +terminatorn +terminatorns +terminators +terminen +terminens +terminer +terminerna +terminernas +terminers +termins +termit +termiten +termitens +termiter +termiterna +termiternas +termiters +termits +termometer +termometern +termometerns +termometers +termometrar +termometrarna +termometrarnas +termometrars +termostat +termostaten +termostatens +termostater +termostaterna +termostaternas +termostaters +termostats +terms +terrass +terrassen +terrassens +terrasser +terrasserna +terrassernas +terrassers +territorier +territorierna +territoriernas +territoriers +territoriet +territoriets +territorium +terror +terrorist +terroristen +terroristens +terrorister +terroristerna +terroristernas +terroristers +terrorn +terrorns +terrors +tes +tesen +tesens +teser +teserna +tesernas +tesers +tesked +teskedar +teskedarna +teskedarnas +teskedars +teskeden +teskedens +teskeds +test +testa +testad +testade +testades +testamente +testamenten +testamentena +testamentenas +testamentens +testamentera +testamenterad +testamenterade +testamenterades +testamenterar +testamenteras +testamenterat +testamenterats +testamentes +testamentet +testamentets +testar +testare +testaren +testarens +testares +testarna +testarnas +testas +testat +testats +testen +testens +tester +testerna +testernas +testers +testning +testningar +testningarna +testningarnas +testningars +testningen +testningens +testnings +tet +tets +tett +texas +text +texta +textad +textade +textades +textar +textas +textat +textats +texten +textens +texter +texterna +texternas +texters +therese +thereses +thomas +thorsson +thorssons +tia +tian +tians +tias +tibro +tibros +ticka +tickade +tickar +tickat +tid +tidan +tidans +tiden +tidens +tider +tiderna +tidernas +tiders +tidevarv +tidevarven +tidevarvens +tidevarvet +tidevarvets +tidig +tidiga +tidigare +tidigast +tidigaste +tidigt +tidning +tidningar +tidningarna +tidningarnas +tidningars +tidningen +tidningens +tidnings +tidpunkt +tidpunkten +tidpunktens +tidpunkter +tidpunkterna +tidpunkternas +tidpunkters +tidpunkts +tids +tidsbrist +tidsbristen +tidsbristens +tidskrift +tidskriften +tidskriftens +tidskrifter +tidskrifterna +tidskrifternas +tidskrifters +tidskrifts +tidsperiod +tidsperioden +tidsperiodens +tidtagning +tidtagningar +tidtagningarna +tidtagningarnas +tidtagningars +tidtagningen +tidtagningens +tidtagnings +tidvis +tierp +tierps +tig +tiga +tigande +tigandes +tigandet +tigandets +tiger +tigern +tigerns +tigers +tigg +tigga +tiggare +tiggaren +tiggarens +tiggares +tiggarna +tiggarnas +tiggas +tiggde +tiggdes +tigger +tiggeri +tiggs +tiggt +tiggts +tigit +tigrar +tigrarna +tigrarnas +tigrars +tik +tikar +tikarna +tikarnas +tikars +tiken +tikens +tim +tima +timade +timar +timat +timkostnad +timkostnaden +timkostnadens +timkostnader +timkostnaderna +timkostnadernas +timkostnaders +timkostnads +timma +timmar +timmarna +timmarnas +timmars +timme +timmen +timmens +timmer +timmerman +timmermannen +timmermannens +timmernabben +timmernabbens +timmers +timmes +timra +timrade +timrar +timrat +timret +timrets +tims tina +tinade +tinar +tinas +tinat +tindra +tindrade +tindrar +tindrat +ting +tingen +tingens +tingest +tingestar +tingestarna +tingestarnas +tingestars +tingesten +tingestens +tinget +tingets +tingsryd +tingsryds +tinktur +tinnar +tinnarna +tinnarnas +tinnars +tinne +tinnen +tinnens +tinnes +tinning +tinningar +tinningarna +tinningarnas +tinningars +tinningen +tinningens +tinnings +tio +tiomannagrupp +tiomannagruppen +tiomannagruppens +tionde +tiopotens +tiopotensen +tiopotensens +tiopotenser +tiopotenserna +tiopotensernas +tiopotensers +tior +tiorna +tiornas +tiors +tiotusen +tippa +tippad +tippade +tippades +tippar +tippas +tippat +tippats +tips +tipsa +tipsad +tipsade +tipsades +tipsar +tipsas +tipsat +tipsats +tipsen +tipsens +tipset +tipsets +tisdag +tisdagar +tisdagarna +tisdagarnas +tisdagars +tisdagen +tisdagens +tisdags +titan +titt +titta +tittade +tittades +tittande +tittandes +tittandet +tittandets +tittar +tittare +tittaren +tittarens +tittares +tittarna +tittarnas +tittas +tittat +tittats +titten +tittens +tittut +tived +tiveds +tjabb +tjabba +tjabbade +tjabbar +tjabbat +tjabbet +tjabbets +tjabbig +tjabbiga +tjabbigt +tjack +tjacka +tjackade +tjackar +tjackat +tjacket +tjackets +tjafs +tjafsa +tjafsade +tjafsar +tjafsat +tjafset +tjafsets +tjafsig +tjafsiga +tjafsighet +tjafsigheten +tjafsighetens +tjafsighets +tjafsigt +tjat +tjata +tjatade +tjatar +tjatas +tjatat +tjatet +tjatets +tjatig +tjatiga +tjatighet +tjatigheten +tjatighetens +tjatighets +tjatigt +tjatter +tjattra +tjattrade +tjattrar +tjattrat +tjattret +tjattrets +tjattrig +tjattriga +tjattrigt +tjeckien +tjeckiens +tjej +tjejen +tjejens +tjejer +tjejerna +tjejernas +tjejers +tjejs +tjoa +tjoade +tjoar +tjoat +tjock +tjocka +tjockare +tjockas +tjockast +tjockaste +tjocke +tjockes +tjockna +tjocknade +tjocknar +tjocknat +tjockt +tjog +tjoget +tjogets +tjugo +tjugoen +tjugoett +tjugofem +tjugofyra +tjugohundra +tjugonde +tjugondedag +tjugondedagen +tjugondedagens +tjugonio +tjugosex +tjugosju +tjugotre +tjugotusen +tjugu +tjur +tjura +tjurade +tjurar +tjurarna +tjurarnas +tjurars +tjurat +tjuren +tjurens +tjusa +tjusad +tjusade +tjusades +tjusande +tjusandet +tjusandets +tjusar +tjusas +tjusat +tjusats +tjusig +tjusiga +tjusigt +tjusning +tjusningen +tjusningens +tjut +tjuta +tjutas +tjuter +tjutit +tjutits +tjuts +tjuv +tjuvar +tjuvarna +tjuvarnas +tjuvars +tjuven +tjuvens +tjuveri +tjuvnad +tjuvnaden +tjuvnadens +tjuvnader +tjuvnaderna +tjuvnadernas +tjuvnaders +tjuvs +tjuvskytt +tjuvskytten +tjuvskyttens +tobago +tobagos +tobak +tobaken +tobakens +tobaks +tobias +tobo +tobos +tocken +tofs +tofsar +tofsarna +tofsarnas +tofsars +tofsen +tofsens +tofsvipa +tofsvipan +tofsvipans +tofsvipas +tog +toga +togan +togans +togas +togs +tok +token +tokens +tokeri +tokerier +tokerierna +tokeriernas +tokeriers +tokeriet +tokeriets +tokig +tokiga +tokigare +tokigast +tokigaste +tokighet +tokigheten +tokighetens +tokigheter +tokigheterna +tokigheternas +tokigheters +tokighets +tokigt tom +tomas +tomat +tomaten +tomatens +tomater +tomaterna +tomaternas +tomaters +tomhet +tomheten +tomhetens +tomma +tommare +tommarp +tommarps +tommast +tommaste +tommy +tommys +tomrum +tomrummet +tomrummets +toms +tomt +tomtar +tomtarna +tomtarnas +tomtars +tomte +tomteboda +tomtebodas +tomten +tomtens +tomter +tomterna +tomternas +tomters +tomtes +tomts +ton +tona +tonade +tonades +tonar +tonart +tonarten +tonartens +tonarter +tonarterna +tonarternas +tonarters +tonas +tonat +tonats +tonen +tonens +toner +tonerna +tonernas +toners +tongivande +tonnet +tonnets +tons +tonsur +tonsuren +tonsurens +tonsurer +tonsurerna +tonsurernas +tonsurers +tonsurs +tonvikt +tonvikten +tonviktens +tony +tonys +topp +toppa +toppade +toppar +topparna +topparnas +toppars +toppat +toppen +toppens +toppig +toppiga +toppigt +topps +tord +torde +tordes +tords +tore +torekov +torekovs +tores +torestorp +torestorps +torftig +torftiga +torftigare +torftigast +torftigaste +torftiges +torftighet +torftigheten +torftighetens +torftighets +torftigt +torg +torgen +torgens +torget +torgets +torgs +torhamn +torhamns +torka +torkad +torkade +torkades +torkan +torkans +torkar +torkas +torkat +torkats +tormestorp +tormestorps +torn torna +tornade +tornades +tornar tornas +tornat +tornats +torne +tornen +tornens +tornet +tornets +torp +torpare +torparen +torparens +torpares +torparna +torparnas +torped +torpeden +torpedens +torpeder +torpederna +torpedernas +torpeders +torpeds +torpen +torpens +torpet +torpets +torps +torpsbruk +torpsbruks +torpshammar +torpshammars +torr +torra +torrare +torrast +torraste +torrt +torsby +torsbys +torsdag +torsdagar +torsdagarna +torsdagarnas +torsdagars +torsdagen +torsdagens +torsdags +torsk +torskar +torskarna +torskarnas +torskars +torsken +torskens +torsten +torstens +tortyr +tortyren +tortyrens +tortyrs +torup +torups +torv +torva +torvan +torvans +torvas +torvbrytning +torvbrytningen +torvbrytningens +torvbrytnings +torven +torvens +torvs +totebo +totebos +tovig +toviga +tovigt +toxisk +toxiska +toxiskt +tradition +traditionen +traditionens +traditioner +traditionerna +traditionernas +traditioners +traditions +trafik +trafikant +trafikanten +trafikantens +trafikanter +trafikanterna +trafikanternas +trafikanters +trafikants +trafiken +trafikens +trafikera +trafikerad +trafikerade +trafikerades +trafikerar +trafikeras +trafikerat +trafikerats +trafikstockning +trafikstockningar +trafikstockningarna +trafikstockningarnas +trafikstockningars +trafikstockningen +trafikstockningens +trafikstocknings +tragedi +tragedier +tragedierna +tragediernas +tragediers +tragedin +tragedins +tragedis +tragik +tragiken +tragikens +tragikomisk +tragikomiska +tragikomiskt +tragiks +tragisk +tragiska +tragiskt +trakt +trakta +traktade +traktades +traktamente +traktamenten +traktamentens +traktar +traktas +traktat +traktatet +traktatets +traktats +trakten +traktens +trakter +traktera +trakterad +trakterade +trakterades +trakterar +trakteras +trakterat +trakterats +trakterna +trakternas +trakters +traktor +traktorer +traktorerna +traktorernas +traktorers +traktorn +traktorns +traktors +tramp +trampa +trampad +trampade +trampades +trampande +trampandet +trampandets +trampar +trampas +trampat +trampats +trampet +trampets +tramps +trams +tramsa +tramsade +tramsar +tramsat +tramset +tramsets +tranemo +tranemos +transaktion +transaktionen +transaktionens +transaktioner +transaktionerna +transaktionernas +transaktioners +transaktions +transfer +transferering +transfereringar +transfereringarna +transfereringarnas +transfereringars +transfereringen +transfereringens +transfererings +transfern +transferns +transfers +transform +transformation +transformationen +transformationens +transformationer +transformationerna +transformationernas +transformationers +transformations +transformator +transformatorn +transformatorns +transformators +transformen +transformens +transformer +transformera +transformerad +transformerade +transformerades +transformerande +transformerandet +transformerandets +transformerar +transformerat +transformerats +transformerna +transformernas +transformers +transforms +transistor +transistorn +transistorns +transistors +transkribera +transkriberad +transkriberade +transkriberades +transkriberar +transkriberare +transkriberaren +transkriberarens +transkriberares +transkriberarna +transkriberarnas +transkriberat +transkriberats +transkribering +transkriberingar +transkriberingarna +transkriberingarnas +transkriberingars +transkriberingen +transkriberingens +transkriberings +transkription +transkriptionen +transkriptionens +transkriptioner +transkriptionerna +transkriptionernas +transkriptioners +transkriptions +transmission +transmitter +transmittera +transmitterad +transmitterade +transmitterades +transmitterar +transmitteras +transmitterat +transmitterats +transparent +transparenta +transponera +transponerad +transponerade +transponerades +transponerar +transponeras +transponerat +transponerats +transponering +transponeringen +transponeringens +transponeringer +transponeringerna +transponeringernas +transponeringers +transponerings +transport +transporten +transportens +transporter +transportera +transporterad +transporterade +transporterades +transporterar +transporterat +transporterats +transporterna +transporternas +transporters +transports +transtrand +transtrands +trapets +trapetsen +trapetsens +trapetser +trapetserna +trapetsernas +trapetsers +trappa +trappan +trappans +trappas +trappavsats +trappavsatsen +trappavsatsens +trappavsatser +trappavsatserna +trappavsatsernas +trappavsatsers +trappor +trapporna +trappornas +trappors +trappsteg +trappstegen +trappstegens +trappsteget +trappstegets +trappstegs +traryd +traryds +trasa +trasan +trasans +trashank +trashankar +trashankarna +trashankarnas +trashankars +trashanken +trashankens +trasig +trasiga +trasigare +trasigast +trasigaste +trasigt +traska +traskade +traskar +traskat +trasor +trasorna +trasornas +trasors +trast +trasten +trastens +tratt +trauma +trauman +traumans +traumas +traumatisk +traumatiska +traumatiskt +trav +trava +travade +travades +travande +travandet +travandets +travar +travas +travat +travats +trave +traven +travens +travestera +travesterad +travesterade +travesterades +travesterar +travesteras +travesterat +travesterats +travestering +travesteringar +travesteringarna +travesteringarnas +travesteringars +travesteringen +travesteringens +travesterings +travesti +tre +trea +trean +treans +treas +tredje +tredska +tredskade +tredskades +tredskar +tredskas +tredskat +tredskats +treenig +treeniga +treenighet +treenigheten +treenighetens +treenighets +treenigt +trefot +treggehanda +trehundra +trekanten +trekantens +trend +trendbrott +trendbrotten +trendbrottens +trendbrottet +trendbrottets +trendbrotts +trenden +trendens +trender +trenderna +trendernas +trenders +trends +trenne +trensum +trensums +tresiffrig +tresiffriga +tresiffrigt +tretti +trettio +trettioen +trettioett +trettiofem +trettiofyra +trettionde +trettionio +trettiosex +trettiosju +trettiotre +tretton +trettonde +trettonhundra +trettontusen +tretusen +treva +trevade +trevades +trevande +trevandet +trevandets +trevar +trevare +trevaren +trevarens +trevares +trevarna +trevarnas +trevas +trevat +trevats +trevnad +trick +tricken +trickens +tricket +trickets +trigonometrisk +trigonometriska +trigonometriskt +trim +trimeter +trimetern +trimeterns +trimetrar +trimetrarna +trimetrarnas +trimetrars +trimma +trimmad +trimmade +trimmades +trimmande +trimmandet +trimmandets +trimmar +trimmas +trimmat +trimmats +trimning +trimningar +trimningarna +trimningarnas +trimningars +trimningen +trimningens +trimnings +trind +trinda +trinidad +trinidads +trint +trio +tripp +trist +trista +tristare +tristast +tristaste +tristess +triumf +triumfen +triumfens +triumfer +triumfera +triumferad +triumferade +triumferades +triumferar +triumferas +triumferat +triumferats +triumferna +triumfernas +triumfers +triumfs +trivas +trivdes +trivs +trivsam +trivsamma +trivsammare +trivsammast +trivsammaste +trivsamt +trivts +trixa +trixade +trixades +trixar +trixas +trixat +trixats +trixig +trixiga +trixigt +tro +trodd +trodda +trodde +troddes +troende +troendet +troendets +trofast +trofasta +trofaste +trofasthet +trofastheten +trofasthetens +trofasthets +trogen +troget +trogna +trognare +trognast +trognaste +trogne +trohet +troheten +trohetens +trohetsbrott +tron +trona +tronade +tronar +tronat +tronen +tronens +troner +tronerna +tronernas +troners +trons +trop +tropen +tropens +troper +troperna +tropernas +tropers +tropik +tropiken +tropikens +tropiker +tropikerna +tropikernas +tropikers +tropisk +tropiska +tropiskt +tropp +troppar +tropparna +tropparnas +troppars +troppen +troppens +tror +tros trosa +trosan +trosans +trosas +trosor +trosorna +trosornas +trosors +tross +trossen +trossens +trosskusk +trosskusken +trosskuskens +trosvittne +trosvittnen +trosvittnens +trots +trotsa +trotsade +trotsades +trotsande +trotsandet +trotsandets +trotsar +trotsas +trotsat +trotsats +trotsen +trotsens +trotset +trotsets +trotsig +trotsiga +trotsigare +trotsigast +trotsigaste +trotsige +trotsigt +trott +trottoar +trottoaren +trottoarens +trottoarer +trottoarerna +trottoarernas +trottoarers +trotts +trubadur +trubaduren +trubadurens +truck +truckar +truckarna +truckarnas +truckars +trucken +truckens +truga +trugad +trugade +trugades +trugar +trugas +trugat +trugats +truism +truismen +truismens +truismer +truismerna +truismernas +truismers +trumf +trumfa +trumfad +trumfade +trumfades +trumfar +trumfas +trumfat +trumfats +trumhinna +trumhinnan +trumhinnans +trumhinnor +trumhinnorna +trumhinnornas +trumhinnors +trumma +trummade +trumman +trummans +trummar +trummat +trummor +trummorna +trummornas +trummors +trumpen +trumpet +trumpeten +trumpetens +trumpeter +trumpeterna +trumpeternas +trumpeters +trumpna +trumpnare +trumpnast +trumpnaste +trumpne +trunkera +trunkerad +trunkerade +trunkerades +trunkerar +trunkeras +trunkerat +trunkerats +trupp +truppen +truppens +trupper +trupperna +truppernas +truppers +trupps +trust +trusten +trustens +truster +trusterna +trusternas +trusters +trut +trutar +trutarna +trutarnas +trutars +truten +trutens +trutit +trutits +truts +tryck +trycka +tryckande +tryckandet +tryckandets +tryckas +trycken +tryckens +trycker +tryckeri +tryckeriet +tryckeriets +trycket +tryckets +tryckning +tryckningar +tryckningarna +tryckningarnas +tryckningars +tryckningen +tryckningens +trycknings +tryckpress +tryckpressar +tryckpressarna +tryckpressarnas +tryckpressars +tryckpressen +tryckpressens +trycks +trycksak +trycksaker +trycksakerna +trycksakernas +trycksakers +tryckt +tryckta +tryckte +trycktes +tryckts +trygg +trygga +tryggad +tryggade +tryggades +tryggar +tryggare +tryggas +tryggast +tryggaste +tryggat +tryggats +trygge +trygges +trygghet +tryggheten +trygghetens +tryggt +tryne +tryt +tryta +trytas +tryter +tryts +tub +tuba +tuban +tubans +tubas +tuben +tubens +tuber +tuberna +tubernas +tubers +tubor +tuborna +tubornas +tubors +tubs +tuff +tuffa +tuffade +tuffar +tuffat +tufft +tugga +tuggad +tuggade +tuggades +tuggar +tuggas +tuggat +tuggats +tuggbuss +tuggbussar +tuggbussarna +tuggbussarnas +tuggbussars +tuggbussen +tuggbussens +tukt +tukta +tuktan +tuktig +tuktiga +tuktigare +tuktigast +tuktigaste +tuktigt +tum +tumba +tumbas +tumma +tummad +tummade +tummades +tummar +tummarna +tummarnas +tummars +tummat +tummats +tumme +tummen +tummens +tums +tumsbredd +tumstock +tun +tung +tunga +tungan +tungans +tungas +tungor +tungorna +tungornas +tungors +tungsint +tungsinta +tungsintas +tungsinte +tungsintes +tungt +tunisien +tunisiens +tunn +tunna +tunnan +tunnans +tunnare +tunnast +tunnaste +tunnor +tunnorna +tunnornas +tunnors +tuns +tunt +tupp +tuppar +tupparna +tupparnas +tuppars +tuppen +tuppens +tur +turades +turas +turats +turbin +turbinen +turbinens +turbiner +turbinerna +turbinernas +turbiners +turbins +turbo +ture +turen +turens +turer +turerna +turernas +turers +tures +turing +turings +turism +turismen +turismens +turist +turisten +turistens +turister +turisterna +turisternas +turisters +turk +turken +turkens +turkiet +turkiets +turkisk +turkiska +turkiskt +turkmenistan +turkmenistans +turnera +turnerade +turnerar +turnerat +turs +tursam +tursamma +tursammare +tursammast +tursammaste +tursamt +turturduva +turturduvan +turturduvans +turturduvor +turturduvorna +turturduvornas +turturduvors +tusan +tusch +tusen +tusende +tusenfoting +tusenfotingar +tusenfotingarna +tusenfotingarnas +tusenfotingars +tusenfotingen +tusenfotingens +tusenfotings +tuss +tussar +tussarna +tussarnas +tussars +tussen +tussens +tuta +tutad +tutade +tutades +tutande +tutandet +tutandets +tutar +tutas +tutat +tutats +tutning +tutningar +tutningarna +tutningarnas +tutningars +tutningen +tutningens +tutnings +tuva +tuvan +tuvans +tuvor +tuvorna +tuvornas +tuvors +tvagit +tvang +tvangs +tveka +tvekade +tvekan +tvekar +tvekat +tveksam +tveksamhet +tveksamheten +tveksamhetens +tveksamheter +tveksamheterna +tveksamheternas +tveksamheters +tveksamhets +tveksamma +tveksammare +tveksammast +tveksammaste +tveksamt +tvenne +tvetydig +tvetydiga +tvetydighet +tvetydigheten +tvetydighetens +tvetydigheter +tvetydigheterna +tvetydigheternas +tvetydigheters +tvetydighets +tvetydigt +tvi +tvina +tvinade +tvinades +tvinar +tvinas +tvinat +tvinats +tving +tvinga +tvingad +tvingade +tvingades +tvingande +tvingandet +tvingandets +tvingar +tvingas +tvingat +tvingats +tvings +tvinna +tvinnad +tvinnade +tvinnades +tvinnar +tvinnas +tvinnat +tvinnats +tvinsjuk +tvinsjuka +tvinsjukt +tvist +tvista +tvistade +tvistar +tvistat +tvisten +tvistens +tvister +tvisterna +tvisternas +tvisters +tvungen +tvunget +tvungit +tvungits +tvungna +tyck +tycka +tyckande +tyckandet +tyckandets +tyckas +tycke +tycker +tyckes +tycket +tyckets +tycks +tyckt +tyckte +tycktes +tyckts +tyd +tyda +tydas +tydd +tydda +tydde +tyddes +tyder +tydning +tydningen +tydningens +tydnings +tyds +tyg +tygen +tygens +tyger +tygerna +tygernas +tygers +tyget +tygets +tyna +tynade +tynande +tynandet +tynandets +tynar +tynat +tyng +tynga +tyngas +tyngd +tyngda +tyngde +tyngden +tyngdens +tyngder +tyngderna +tyngdernas +tyngders +tyngdes +tyngdkraft +tyngdkraften +tyngdkraftens +tyngdkrafts +tyngdpunkt +tyngdpunkten +tyngdpunktens +tyngdpunkter +tyngdpunkterna +tyngdpunkternas +tyngdpunkters +tyngdpunkts +tynger +tynges +tyngre +tyngs +tyngst +tyngsta +tyngt +tyngts +typ +typen +typens +typer +typerna +typernas +typers +typisk +typiska +typiske +typiskt +typografi +typografin +typografins +typografisk +typografiska +typografiskt +typsatt +typsatta +typsnitt +typsnitten +typsnittens +typsnittet +typsnittets +typsnitts +tyr +tyrann +tyrannen +tyrannens +tyranner +tyrannerna +tyrannernas +tyranners +tyrannisk +tyranniska +tyranniske +tyranniskt +tyranns +tyre +tyringe +tyringes +tysk +tyska +tyskan +tyskans +tyskar +tyskarna +tyskarnas +tyskars +tysken +tyskens +tyskor +tyskorna +tyskornas +tyskors +tyskt +tyst +tysta +tystad +tystade +tystades +tystar +tystare +tystas +tystast +tystaste +tystat +tystats +tystberga +tystbergas +tyste +tysthet +tystheten +tysthetens +tysthets +tystna +tystnad +tystnade +tystnaden +tystnadens +tystnads +tystnande +tystnandet +tystnandets +tystnar +tystnat +tytt +tytts +udd +udda +uddar +uddarna +uddarnas +uddars +udde +uddebo +uddebos +udden +uddens +uddvass +uddvassa +uddvasst +uganda +ugandas +ugn +ugnar +ugnarna +ugnarnas +ugnars +ugnen +ugnens +ugns +ukraina +ukrainas +umgicks +undan +undanskymd +undanskymda +undanskymt +undanta +undantag +undantaget +undantagets +undantar +under +underbar +underbara +underbarare +underbarast +underbaraste +underbart +underbygg +underbygga +underbyggande +underbyggandet +underbyggandets +underbyggas +underbyggd +underbyggde +underbyggdes +underbygger +underbyggs +underbyggt +underbyggts +underfund +underfundig +underfundiga +underfundigt +undergick +undergiven +undergivenhet +undergivenheten +undergivenhetens +undergivenhets +undergivet +undergivna +undergrupp +undergruppen +undergruppens +undergrupper +undergrupperna +undergruppernas +undergruppers +undergrupps +underhuggare +underhuggaren +underhuggarens +underhuggares +underhuggarna +underhuggarnas +underjord +underjorden +underjordens +underjordisk +underjordiska +underjordiskt +underjords +underkant +underkasta +underkastad +underkastade +underkastades +underkastar +underkastas +underkastat +underkastats +underkuva +underkuvad +underkuvade +underkuvades +underkuvar +underkuvas +underkuvat +underkuvats +undermedveten +undermedvetet +undermedvetna +underminera +underminerad +underminerade +underminerades +underminerar +undermineras +underminerat +underminerats +underordna +underordnad +underordnade +underordnades +underordnads +underordnar +underordnas +underordnat +underordnats +undersida +undersidan +undersidans +undersidas +undersidor +undersidorna +undersidornas +undersidors +underskatta +underskattad +underskattade +underskattades +underskattande +underskattandet +underskattandets +underskattar +underskattas +underskattat +underskattats +underskott +underskotten +underskottens +underskottet +underskottets +underskotts +underskred +underskreds +underskrid +underskrida +underskridas +underskrider +underskridit +underskridits +underskrids +underskrift +underskriften +underskriftens +underskrifter +underskrifterna +underskrifternas +underskrifters +underskrifts +understa +understiga +understigande +understod +understrukit +understryka +understrykning +understrykningar +understrykningarna +understrykningarnas +understrykningars +understrykningen +understrykningens +understryknings +understundom +underteckna +undertecknad +undertecknade +undertecknades +undertecknads +undertecknande +undertecknandet +undertecknandets +undertecknar +undertecknare +undertecknaren +undertecknarens +undertecknares +undertecknarna +undertecknarnas +undertecknas +undertecknat +undertecknats +undertext +undertexten +undertextens +undertexter +undertexterna +undertexternas +undertexters +undertexts +underton +undertryck +undertrycka +undertryckas +undertrycker +undertrycks +undertryckt +undertryckta +undertryckte +undertrycktes +undertryckts +underverk +undervisa +undervisad +undervisade +undervisades +undervisande +undervisandet +undervisandets +undervisar +undervisas +undervisat +undervisats +undervisning +undervisningen +undervisningens +undervisnings +undfick +undgick +undgicks +undkom +undkomma +undkommer +undkommit +undra +undrad +undrade +undrades +undran +undrande +undrandet +undrandets +undrar +undras +undrat +undrats +undre +undret +undrets +undrom +undroms +undvara +undvarade +undvarades +undvarar +undvaras +undvarat +undvarats +undvek +undvik +undvika +undvikande +undvikandet +undvikandets +undvikas +undviker +undvikits +ung +unga +ungar +ungarna +ungarnas +ungars +ungas +ungdom +ungdomar +ungdomarna +ungdomarnas +ungdomars +ungdomen +ungdomens +ungdoms +unge +ungen +ungens +ungern +ungerns +ungersk +ungerska +ungerskt +ungersven +unges +ungt +uniform +uniformen +uniformens +uniformer +uniformerna +uniformernas +uniformers +uniforms +unik +unika +unikt +union +unionen +unionens +unioner +unionerna +unionernas +unioners +unions +universitet +universiteten +universitetens +universitetet +universitetets +universitets +universum +universums +unix +unken +unket +unkna +unna +unnad +unnade +unnades +unnar +unnaryd +unnaryds +unnas +unnat +unnats +uno +unos +uns +upp +uppackad +uppackade +uppackat +uppackning +uppackningar +uppackningarna +uppackningarnas +uppackningars +uppackningen +uppackningens +uppacknings +uppamma +uppammad +uppammade +uppammades +uppammande +uppammandet +uppammandets +uppammar +uppammas +uppammat +uppammats +uppassa +uppassad +uppassade +uppassades +uppassande +uppassandet +uppassandets +uppassar +uppassas +uppassat +uppassats +uppbar +uppbjud +uppbjuda +uppbjudas +uppbjuder +uppbjudit +uppbjudits +uppbjuds +uppbrott +uppbrotten +uppbrottens +uppbrottet +uppbrottets +uppbrotts +uppbrutit +uppbrutits +uppbryt +uppbryta +uppbrytas +uppbryter +uppbryts +uppburen +uppburet +uppburit +uppburna +uppbygga +uppbyggande +uppbyggandet +uppbyggandets +uppbyggas +uppbyggd +uppbyggda +uppbyggde +uppbyggdes +uppbygger +uppbyggnad +uppbyggnaden +uppbyggnadens +uppbyggs +uppbyggt +uppbyggts +uppdatera +uppdaterad +uppdaterade +uppdaterades +uppdaterar +uppdateras +uppdaterat +uppdaterats +uppdatering +uppdateringar +uppdateringarna +uppdateringarnas +uppdateringars +uppdateringen +uppdateringens +uppdaterings +uppdrag +uppdragen +uppdragens +uppdraget +uppdragets +uppdrags +uppdragsgivare +uppdragsgivaren +uppdragsgivarens +uppdragsgivares +uppdragsgivarna +uppdragsgivarnas +uppdrogs +uppdyker +uppe +uppegga +uppeggad +uppeggade +uppeggades +uppeggande +uppeggandet +uppeggandets +uppeggar +uppeggas +uppeggat +uppeggats +uppenbar +uppenbara +uppenbarad +uppenbarade +uppenbarades +uppenbarande +uppenbarandet +uppenbarandets +uppenbarar +uppenbaras +uppenbarat +uppenbarats +uppenbart +uppfann +uppfatta +uppfattad +uppfattade +uppfattades +uppfattar +uppfattas +uppfattat +uppfattats +uppfattning +uppfattningar +uppfattningarna +uppfattningarnas +uppfattningars +uppfattningen +uppfattningens +uppfattnings +uppfinna +uppfinnare +uppfinnaren +uppfinnarens +uppfinnares +uppfinnarna +uppfinnarnas +uppfinner +uppfinning +uppfinningar +uppfinningarna +uppfinningarnas +uppfinningars +uppfinningen +uppfinningens +uppfinnings +uppfinningsrik +uppfinningsrika +uppfinningsrikedom +uppfinningsrikt +uppfordra +uppfordrade +uppfordran +uppfordrande +uppfordrar +uppfordrat +uppfostra +uppfostrad +uppfostrade +uppfostrades +uppfostran +uppfostrar +uppfostras +uppfostrat +uppfostrats +uppfriska +uppfriskad +uppfriskade +uppfriskades +uppfriskande +uppfriskar +uppfriskas +uppfriskat +uppfriskats +uppfunna +uppfunnen +uppfunnet +uppfunnit +uppgav +uppgavs +uppge +uppger +uppges +uppgick +uppgift +uppgiften +uppgiftens +uppgifter +uppgifterna +uppgifternas +uppgifters +uppgivas +uppgiven +uppgivenhet +uppgivenheten +uppgivenhetens +uppgivenhets +uppgiver +uppgivet +uppgivit +uppgivits +uppgivna +uppgradering +uppgraderingar +uppgraderingarna +uppgraderingarnas +uppgraderingars +uppgraderingen +uppgraderingens +uppgraderings +upphetsa +upphetsad +upphetsade +upphetsades +upphetsande +upphetsandet +upphetsandets +upphetsar +upphetsas +upphetsat +upphetsats +upphitta +upphittad +upphittade +upphittades +upphittar +upphittas +upphittat +upphittats +upphov +upphoven +upphovens +upphovet +upphovets +upphovs +upphovsman +upphovsmannen +upphovsmannens +upphovsmans +uppkastad +uppkastade +uppkastat +uppkom +uppkomma +uppkommen +uppkommer +uppkommet +uppkommit +uppkomna +uppkomst +uppkomsten +uppkomstens +uppkrupen +uppkrupet +uppkrupna +uppmana +uppmanad +uppmanade +uppmanades +uppmanar +uppmanas +uppmanat +uppmanats +uppmaning +uppmaningar +uppmaningarna +uppmaningarnas +uppmaningars +uppmaningen +uppmaningens +uppmanings +uppmuntra +uppmuntrad +uppmuntrade +uppmuntrades +uppmuntran +uppmuntrande +uppmuntrandet +uppmuntrandets +uppmuntrar +uppmuntras +uppmuntrat +uppmuntrats +uppoffra +uppoffrad +uppoffrade +uppoffrades +uppoffrar +uppoffras +uppoffrat +uppoffrats +uppoffring +uppoffringar +uppoffringarna +uppoffringarnas +uppoffringars +uppoffringen +uppoffringens +uppoffrings +upprada +uppradade +uppradades +uppradar +uppradas +uppradat +uppradats +upprepa +upprepad +upprepade +upprepades +upprepande +upprepandet +upprepandets +upprepar +upprepas +upprepat +upprepats +upprepning +upprepningar +upprepningarna +upprepningarnas +upprepningars +upprepningen +upprepningens +upprepnings +uppres +uppresa +uppresas +uppreser +upprest +uppreste +upprestes +upprests +uppriktig +uppriktiga +uppriktigare +uppriktigast +uppriktigaste +uppriktighet +uppriktigheten +uppriktighetens +uppriktigheter +uppriktigheterna +uppriktigheternas +uppriktigheters +uppriktighets +uppriktigt +uppringd +uppringda +uppringning +uppringningar +uppringningarna +uppringningarnas +uppringningars +uppringningen +uppringningens +uppringnings +uppringt +uppriven +upprivet +upprivna +upprop +uppropa +uppropad +uppropade +uppropades +uppropande +uppropandet +uppropandets +uppropar +uppropas +uppropat +uppropats +uppropen +uppropens +uppropet +uppropets +upprops +uppror +upproren +upprorens +upprorisk +upproriska +upproriskt +upprors +upprusta +upprustad +upprustade +upprustades +upprustar +upprustas +upprustat +upprustats +upprustning +upprustningar +upprustningarna +upprustningarnas +upprustningars +upprustningen +upprustningens +upprustnings +uppsats +uppsatsen +uppsatsens +uppsatser +uppsatserna +uppsatsernas +uppsatsers +uppsatt +uppsatta +uppsattas +uppsatte +uppsattes +uppseende +uppskaka +uppskakad +uppskakade +uppskakades +uppskakar +uppskakas +uppskakat +uppskakats +uppskatta +uppskattad +uppskattade +uppskattades +uppskattande +uppskattandet +uppskattandets +uppskattar +uppskattas +uppskattat +uppskattats +uppskattning +uppskattningar +uppskattningarna +uppskattningarnas +uppskattningars +uppskattningen +uppskattningens +uppskattnings +uppskattningsvis +uppskjut +uppskjuta +uppskjutas +uppskjuten +uppskjuter +uppskjutet +uppskjutit +uppskjutits +uppskjutna +uppskjutning +uppskjutningar +uppskjutningarna +uppskjutningarnas +uppskjutningars +uppskjutningen +uppskjutningens +uppskjutnings +uppskjuts +uppskov +uppskovet +uppskovets +uppskuren +uppskuret +uppskurna +uppsnappad +uppsnappade +uppsnappat +uppspira +uppspirade +uppspirar +uppspirat +uppstart +uppstartning +uppstartningar +uppstartningarna +uppstartningarnas +uppstartningars +uppstartningen +uppstartningens +uppstartnings +uppsteg +uppstickande +uppstiga +uppstiger +uppstod +uppsyn +uppta +upptaga +upptagas +upptagen +upptagenhet +upptagenheten +upptagenhetens +upptages +upptaget +upptagit +upptagna +upptagne +upptagning +upptagningar +upptagningarna +upptagningarnas +upptagningars +upptagningen +upptagningens +upptagnings +upptakt +upptar +upptas +uppteckna +upptecknad +upptecknade +upptecknades +upptecknande +upptecknandet +upptecknandets +upptecknar +upptecknas +upptecknat +upptecknats +uppteckning +uppteckningar +uppteckningarna +uppteckningarnas +uppteckningars +uppteckningen +uppteckningens +upptecknings +upptorna +upptornade +upptornades +upptornar +upptornas +upptornat +upptornats +upptryckt +upptryckta +uppvaknande +uppvaknandet +uppvaknandets +uppvakta +uppvaktad +uppvaktade +uppvaktades +uppvaktande +uppvaktandet +uppvaktandets +uppvaktar +uppvaktare +uppvaktaren +uppvaktarens +uppvaktares +uppvaktarna +uppvaktarnas +uppvaktas +uppvaktat +uppvaktats +uppvaktning +uppvaktningar +uppvaktningarna +uppvaktningarnas +uppvaktningars +uppvaktningen +uppvaktningens +uppvaktnings +uppvisa +uppvisad +uppvisade +uppvisades +uppvisande +uppvisandet +uppvisandets +uppvisar +uppvisas +uppvisat +uppvisats +uran +uranus +urarta +urartade +urartar +urartat +urartning +urartningen +urartningens +urartnings urban +urbana +urbaniserad +urbaniserade +urbaniserat +urbanisering +urbaniseringen +urbaniseringens +urbaniserings +urbans +urbant +urberg +urberget +urbergets +uren +urens +uret +urets +urin +urkramning +urkramningen +urkramningens +urkramnings +urminnes +urmoder +urmodig +urmodiga +urmodigt +urna +urnan +urnans +urnor +urnorna +urnornas +urnors +urs +ursinnig +ursinniga +ursinnigt +urskog +urskogar +urskogarna +urskogarnas +urskogars +urskogen +urskogens +urskrift +ursprung +ursprunget +ursprungets +ursviken +ursvikens +urtid +urtiden +urtidens +uruguay +uruguays +urverk +usa +usch +utagera +utagerade +utagerande +utagerar +utagerat +utan +utandades +utandas +utandats +utannonsera +utannonserad +utannonserade +utannonserades +utannonserande +utannonserandet +utannonserandets +utannonserar +utannonseras +utannonserat +utannonserats +utanverk +utarbeta +utarbetad +utarbetade +utarbetades +utarbetande +utarbetandet +utarbetandets +utarbetar +utarbetas +utarbetat +utarbetats +utarma +utarmad +utarmade +utarmar +utarmat +utav +utbad +utbads +utbedja +utbjud +utbjuda +utbjudas +utbjuden +utbjuder +utbjudet +utbjudit +utbjudits +utbjudna +utbjuds +utbrast +utbred +utbreda +utbredas +utbredd +utbredda +utbredde +utbreddes +utbreder +utbredning +utbredningar +utbredningarna +utbredningarnas +utbredningars +utbredningen +utbredningens +utbrednings +utbreds +utbrett +utbretts +utbrista +utbrister +utbrott +utbrotten +utbrottens +utbrottet +utbrottets +utbrotts +utbrustit +utbrutit +utbrutits +utbryt +utbryta +utbrytas +utbryter +utbrytning +utbrytningar +utbrytningarna +utbrytningarnas +utbrytningars +utbrytningen +utbrytningens +utbrytnings +utbryts +utbud +utbuden +utbudens +utbudet +utbudets +utbuds +utbyggande +utbyggandet +utbyggandets +utbyggbar +utbyggbara +utbyggbart +utbyggd +utbyggda +utbyggnad +utbyggt +utbyt +utbyta +utbytas +utbyte +utbytet +utbytets +utbytt +utbytta +utdata +utdatan +utdatans +utdatas +utdrag +utdraga +utdragas +utdragen +utdragens +utdrages +utdraget +utdragets +utdrags +utdriven +utdrivet +utdrivna +utdrog +ute +utefter +utenhet +utenheten +utenhetens +utenheter +utenheterna +utenheternas +utenheters +utenhets +utexaminera +utexaminerad +utexaminerade +utexaminerades +utexaminerar +utexamineras +utexaminerat +utexaminerats +utfattig +utfattiga +utfattigt +utfiskning +utfiskningen +utfiskningens +utfisknings +utfodra +utfodrad +utfodrade +utfodrades +utfodrar +utfodras +utfodrat +utfodrats +utforma +utformad +utformade +utformades +utformar +utformas +utformat +utformats +utformning +utformningen +utformningens +utformnings +utforska +utforskad +utforskade +utforskades +utforskar +utforskat +utforskats +utgav +utgavs +utge +utger +utgett +utgick +utgift +utgifter +utgifterna +utgifternas +utgifters +utgiva +utgivare +utgivaren +utgivarens +utgivares +utgivarna +utgivarnas +utgivas +utgiven +utgivet +utgivits +utgivna +utgivning +utgivningen +utgivningens +utgivnings +utgjorde +utgjut +utgjuta +utgjutas +utgjuten +utgjuter +utgjutet +utgjutit +utgjutits +utgjutna +utgjuts +uthuggen +uthugget +uthuggna +uthus +uthusen +uthusens +uthuset +uthusets +uthyr +uthyra +uthyras +uthyrde +uthyrdes +uthyres +uthyrning +uthyrningen +uthyrningens +uthyrnings +uthyrs +uthyrt +uthyrts +uti +utkant +utkanten +utkantens +utkanter +utkanterna +utkanternas +utkanters +utkast +utkastad +utkastade +utkastat +utkasten +utkastens +utkastet +utkastets +utkasts +utkik +utkiks +utkom +utkomma +utkommande +utkommen +utkommer +utkommet +utkommit +utkomna +utkomst +utkonkurrera +utkonkurrerad +utkonkurrerade +utkonkurrerades +utkonkurrerar +utkonkurreras +utkonkurrerat +utkonkurrerats +utkora +utkorad +utkorade +utkorades +utkorar +utkoras +utkorat +utkorats +utmana +utmanad +utmanade +utmanades +utmanar +utmanas +utmanat +utmanats +utmaning +utmaningar +utmaningarna +utmaningarnas +utmaningars +utmaningen +utmaningens +utmanings +utmatningsenhet +utmatningsenheten +utmatningsenhetens +utmatningsenheter +utmatningsenheterna +utmatningsenheternas +utmatningsenheters +utmatningsenhets +utmattad +utmattade +utmattat +utmed +utmynna +utmynnade +utmynnande +utmynnandet +utmynnandets +utmynnar +utmynnat +utnyttja +utnyttjad +utnyttjade +utnyttjades +utnyttjande +utnyttjandet +utnyttjandets +utnyttjar +utnyttjas +utnyttjat +utnyttjats +utom +utomhus +utopi +utpeka +utpekad +utpekade +utpekades +utpekar +utpekas +utpekat +utpekats +utpost +utprickad +utprickade +utprickat +utpris +utprova +utprovad +utprovade +utprovades +utprovar +utprovas +utprovat +utprovats +utrangerad +utrangerade +utrangerat +utred +utreda +utredande +utredandet +utredandets +utredare +utredaren +utredarens +utredares +utredarna +utredarnas +utredas +utredd +utredda +utredde +utreddes +utreder +utredning +utredningar +utredningarna +utredningarnas +utredningars +utredningen +utredningens +utrednings +utredningsenhet +utredningsenheten +utredningsenhetens +utredningsenheter +utredningsenheterna +utredningsenheternas +utredningsenheters +utreds +utrensad +utrensade +utrensat +utrett +utretts +utrikes +utrikesminister +utrikesministern +utrikesministerns +utrikesministers +utrikesministrar +utrikesministrarna +utrikesministrarnas +utrikesministrars +utrop +utropa +utropad +utropade +utropades +utropande +utropandet +utropandets +utropar +utropare +utroparen +utroparens +utropares +utroparna +utroparnas +utropas +utropat +utropats +utropen +utropens +utropet +utropets +utrops +utropstecken +utrota +utrotad +utrotade +utrotades +utrotar +utrotas +utrotat +utrotats +utrotning +utrotningar +utrotningarna +utrotningarnas +utrotningars +utrotningen +utrotningens +utrotnings +utrotningshotad +utrotningshotade +utrotningshotat +utrusande +utrusta +utrustad +utrustade +utrustades +utrustar +utrustas +utrustat +utrustats +utrustning +utrustningar +utrustningarna +utrustningarnas +utrustningars +utrustningen +utrustningens +utrustnings +utryckning +utryckningar +utryckningarna +utryckningarnas +utryckningars +utryckningen +utryckningens +utrycknings +utrym +utrymd +utrymde +utrymdes +utrymma +utrymmande +utrymmandet +utrymmandets +utrymmas +utrymme +utrymmen +utrymmena +utrymmenas +utrymmens +utrymmer +utrymmes +utrymmet +utrymmets +utryms +utrymt +utrymts +utsaga +utsagan +utsagans +utsagas +utsago +utsagor +utsagorna +utsagornas +utsagors +utsatt +utsatta +utse +utsedd +utsedda +utseende +utseendet +utseendets +utser +utses +utsett +utsetts +utsida +utsidan +utsidans +utsidas +utsidor +utsidorna +utsidornas +utsidors +utsikt +utsikten +utsiktens +utsikter +utsikterna +utsikternas +utsikters +utsira +utsirad +utsirade +utsirades +utsirar +utsiras +utsirat +utsirats +utskick +utskicken +utskickens +utskicket +utskickets +utskicks +utskifta +utskiftad +utskiftade +utskiftades +utskiftar +utskiftas +utskiftat +utskiftats +utskott +utskotten +utskottens +utskottet +utskottets +utskotts +utskrev +utskrevs +utskrift +utskriften +utskriftens +utskrifter +utskrifterna +utskrifternas +utskrifters +utskrifts +utskriv +utskriva +utskrivas +utskriven +utskriver +utskrives +utskrivet +utskrivit +utskrivits +utskrivna +utskrivning +utskrivningar +utskrivningarna +utskrivningarnas +utskrivningars +utskrivningen +utskrivningens +utskrivnings +utskrivs +utsmycka +utsmyckad +utsmyckade +utsmyckades +utsmyckar +utsmyckas +utsmyckat +utsmyckats +utsmyckning +utsmyckningar +utsmyckningarna +utsmyckningarnas +utsmyckningars +utsmyckningen +utsmyckningens +utsmycknings +utspred +utspreds +utsprida +utspridas +utspridd +utspridda +utspridde +utspriddes +utspritt +utspritts +utstod +utstyra +utstyras +utstyrd +utstyrda +utstyrde +utstyrdes +utstyrs +utstyrt +utstyrts +utsuga +utsugning +utsugningen +utsugningens +utsugnings +uttag +uttagen +uttagens +uttages +uttaget +uttagets +uttagna +uttags +utter +uttern +utterns +utters +uttesta +uttestad +uttestade +uttestades +uttestar +uttestas +uttestat +uttestats +uttestning +uttestningar +uttestningarna +uttestningarnas +uttestningars +uttestningen +uttestningens +uttestnings +uttorka +uttorkad +uttorkade +uttorkades +uttorkar +uttorkas +uttorkat +uttorkats +uttorkning +uttorkningen +uttorkningens +uttorknings +uttran +uttrans +uttrar +uttrarna +uttrarnas +uttrars +uttryck +uttrycka +uttryckas +uttrycken +uttryckens +uttrycker +uttrycket +uttryckets +uttrycks +uttryckt +uttryckte +uttrycktes +uttryckts +uttyd +uttyda +uttydas +uttydd +uttydda +uttydde +uttyddes +uttyder +uttyds +uttytt +uttytts +utvandra +utvandrad +utvandrade +utvandrades +utvandrande +utvandrandet +utvandrandets +utvandrar +utvandras +utvandrat +utvandrats +utvandring +utvandringen +utvandringens +utvandrings +utverka +utverkad +utverkade +utverkades +utverkar +utverkas +utverkat +utverkats +utvidga +utvidgad +utvidgade +utvidgades +utvidgande +utvidgandet +utvidgandets +utvidgar +utvidgas +utvidgat +utvidgats +utvidgning +utvidgningar +utvidgningarna +utvidgningarnas +utvidgningars +utvidgningen +utvidgningens +utvidgnings +utvinna +utvinnas +utvinner +utvinning +utvinningen +utvinningens +utvinnings +utvisa +utvisad +utvisade +utvisades +utvisande +utvisandet +utvisandets +utvisar +utvisas +utvisat +utvisats +uvar +uvarna +uvarnas +uvars +uven +uvens +uzbekistan +uzbekistans +vacker +vackert +vackra +vackrare +vackras +vackrast +vackraste +vackre +vackres +vad +vada +vadade +vadan +vadar +vadat +vaden +vadens +vadet +vadets +vads +vadstena +vadstenas +vag +vagga +vaggad +vaggade +vaggades +vaggan +vaggande +vaggandet +vaggandets +vaggans +vaggar +vaggas +vaggat +vaggats +vaggeryd +vaggeryds +vaggor +vaggorna +vaggornas +vaggors +vaggvisa +vaggvisan +vaggvisans +vaggvisas +vaggvisor +vaggvisorna +vaggvisornas +vaggvisors +vagn +vagnar +vagnarna +vagnarnas +vagnars +vagnen +vagnens +vagns +vaja +vajade +vajar +vajat +vak +vaka +vakad +vakade +vakades +vakande +vakandet +vakandets +vakant +vakanta +vakar +vakas +vakat +vakats +vaken +vaket +vakna +vaknad +vaknade +vaknades +vaknande +vaknandet +vaknandets +vaknar +vaknas +vaknat +vaknats +vaksam +vaksamhet +vaksamheten +vaksamhetens +vaksamma +vaksammare +vaksammast +vaksammaste +vaksamt +vakt +vakta +vaktad +vaktade +vaktades +vaktande +vaktandet +vaktandets +vaktar +vaktare +vaktaren +vaktarens +vaktares +vaktarna +vaktarnas +vaktas +vaktat +vaktats +vakten +vaktens +vakter +vakterna +vakternas +vakters +vaktmanskap +vakuum +van +vana +vanan +vanans +vanartig +vanartiga +vanartigt +vanas +vande +vandra +vandrad +vandrade +vandrades +vandrande +vandrandet +vandrandets +vandrar +vandrare +vandraren +vandrarens +vandrares +vandrarna +vandrarnas +vandras +vandrat +vandrats +vandrerska +vandrerskan +vandrerskans +vandrerskas +vandring +vandringar +vandringarna +vandringarnas +vandringars +vandringen +vandringens +vandrings +vanesak +vank +vanka +vankade +vankar +vankas +vankat +vankats +vankiva +vankivas +vanmakt +vann +vanor +vanorna +vanornas +vanors +vanprydnad +vansbro +vansbros +vansinnighet +vansinnigheten +vansinnighetens +vansinnigheter +vansinnigheterna +vansinnigheternas +vansinnigheters +vant +vantar +vantarna +vantarnas +vantars +vante +vanten +vantens +vantes +vantrivas +vantrivdes +vantrivs +vantrivts +vanvettig +vanvettiga +vanvettigt +vapen +vapens +vapnen +vapnens +vapnet +vapnets +var vara +varade +varaktig +varaktiga +varaktighet +varaktigheten +varaktighetens +varaktighets +varaktigt +varan +varande +varandra +varandras +varann +varannan +varans +varar +varas +varat +varav +varberg +varbergs +varda +vardag +vardagar +vardagarna +vardagarnas +vardagars +vardagen +vardagens +vardags +vardagsrum +vardagsrummen +vardagsrummens +vardagsrummet +vardagsrummets +vardande +vardandet +vardandets +varde +vardera +vare +varefter +varemot +varenda +varet +varets +vareviga +varg +vargar +vargarna +vargarnas +vargars +vargen +vargens +vargs +vari +varia +varian +varians +variansen +variansens +varianser +varianserna +variansernas +variansers +variant +varianten +variantens +varianter +varianterna +varianternas +varianters +variation +variationen +variationens +variationer +variationerna +variationernas +variationers +variations +variationsrik +variationsrika +variationsrikedom +variationsrikt +variera +varierade +varierades +varierande +varierandet +varierandets +varierar +varieras +varierat +varierats +varigenom +varit +varje +varjehanda +varken +varm +varma +varmare +varmast +varmaste +varmbad +varmbaden +varmbadens +varmbadet +varmbadets +varmed +varmt +varmvatten +varmvattenberedare +varmvattenberedaren +varmvattenberedarens +varmvattenberedares +varmvattenberedarna +varmvattenberedarnas +varmvattens +varmvattnet +varmvattnets +varna +varnad +varnade +varnades +varnande +varnandet +varnandets +varnar +varnas +varnat +varnats +varnhem +varnhems +varning +varningar +varningarna +varningarnas +varningars +varningen +varningens +varnings +varningsord +varom +varor +varorna +varornas +varors +varp +varpar +varparna +varparnas +varpars +varpen +varpens +varpet +varpets +varps +vars +varsam +varsamma +varsammare +varsammas +varsammast +varsammaste +varsamme +varsammes +varsamt +varse +varsin +varsina +varsitt +varsna +varsnade +varsnades +varsnande +varsnandet +varsnandets +varsnar +varsnas +varsnat +varsnats +varstans +vart +vartannat +vartdera +vartenda +varteviga +vartofta +vartoftas +varuhus +varuhusen +varuhusens +varuhuset +varuhusets +varumottagare +varumottagaren +varumottagarens +varumottagares +varumottagarna +varumottagarnas +varuti +varutransport +varutransporten +varutransportens +varutransporter +varutransporterna +varutransporternas +varutransporters +varutransports +varv +varva +varvad +varvade +varvades +varvar +varvas +varvat +varvats +varven +varvens +varvet +varvets +varvid +varvs +vas +vasen +vasens +vaser +vaserna +vasernas +vasers +vass +vassa +vassare +vassast +vassaste +vassen +vassens +vasset +vassets +vasst +vatikanstaten +vatikanstatens +vatten +vattenbryn +vattenbrynen +vattenbrynens +vattenbrynet +vattenbrynets +vattendrag +vattendragen +vattendragens +vattendraget +vattendragets +vattenyta +vattenytan +vattenytans +vattenytor +vattenytorna +vattenytornas +vattenytors +vattna +vattnad +vattnade +vattnades +vattnar +vattnas +vattnat +vattnats +vattnen +vattnens +vattnet +vattnets +vattumannen +vattusot +vax +vaxa +vaxad +vaxade +vaxades +vaxar +vaxas +vaxat +vaxats +vaxen +vaxens +vaxer +vaxerna +vaxernas +vaxers +vaxmora +veck +vecka +veckan +veckans +veckas +vecken +veckens +vecket +veckets +veckodag +veckodagen +veckodagens +veckor +veckorna +veckornas +veckors +veckovis +vecks +ved +veddige +veddiges +veden +vedens +vederfaras +vederfarits +vederkvick +vederkvicka +vederkvickas +vederkvicker +vederkvicks +vederkvickt +vederkvickte +vederkvicktes +vederkvickts +vedernamn +vedersakare +vedersakaren +vedersakarens +vedersakares +vedersakarna +vedersakarnas +vedertagen +vedertaget +vedertagna +vedum +vedums +vegan +veganen +veganens +veganer +veganerna +veganernas +veganers +vegans +vegby +vegbys +vegetarian +vegetarianen +vegetarianens +vegetarianer +vegetarianerna +vegetarianernas +vegetarianers +vegetarians +vegetarisk +vegetariska +vegetariskt +vegetation +vegetationen +vegetationens +vegetationer +vegetationerna +vegetationernas +vegetationers +vegetations +veinge +veinges +vejbystrand +vejbystrands +vek +veka +vekar +vekare +vekarna +vekarnas +vekars +vekas +vekast +vekaste +veke +veken +vekens +vekes +vekhet +vekheten +vekhetens +vekna +veknade +veknar +veknat +veks +vekt +vektor +vektorer +vektorerna +vektorernas +vektorers +vektorn +vektorns +vektors +vem +vemod +vemodig +vemodiga +vemodigt +vems +ven +venetiansk +venetianska +venetianskt +venjan +venjans +venus +veranda +verandan +verandans +verandas +verandor +verandorna +verandornas +verandors +verb +verben +verbens +verbet +verbets +verde +verifiera +verifierad +verifierade +verifierades +verifierande +verifierandet +verifierandets +verifierar +verifieras +verifierat +verifierats +verifikation +verifikationen +verifikationens +verifikationer +verifikationerna +verifikationernas +verifikationers +verifikations +verk +verka +verkad +verkade +verkades +verkan +verkande +verkandet +verkandets +verkar +verkas +verkat +verkats +verken +verkens +verket +verkets +verkning +verkningar +verkningarna +verkningarnas +verkningars +verkningen +verkningens +verknings +verksam +verksamhet +verksamheten +verksamhetens +verksamheter +verksamheterna +verksamheternas +verksamheters +verksamhets +verksamma +verksammare +verksammas +verksammast +verksammaste +verksamme +verksammes +verksamt +verkstad +verkstaden +verkstadens +verkstads +verkstadsindustri +verkstadsindustrin +verkstadsindustrins +verktyg +verktygen +verktygens +verktyget +verktygets +verktygs +verner +verners +vernissage +verop +vers +versen +versens +verser +verserna +versernas +versers +version +versionen +versionens +versioner +versionerna +versionernas +versioners +versions +vessigebro +vessigebros +vet +veta +vetande +vetandet +vetandets +vetat +vete +vetenskap +vetenskapen +vetenskapens +vetenskaper +vetenskaperna +vetenskapernas +vetenskapers +vetenskaps +vetenskapsman +vetenskapsmannen +vetenskapsmannens +vetenskapsmans +veteran +veteranen +veteranens +veteraner +veteranerna +veteranernas +veteraners +veterans +vetet +vetets +veto +veton +vetons +vetskap +vetskapen +vetskapens +vett +vetta +vettat +vette +vetter +vettet +vettets +vettig +vettiga +vettigare +vettigast +vettigaste +vettigt +vev +veva +vevad +vevade +vevades +vevar +vevas +vevat +vevats +veven +vevens +via +vibration +vibrationen +vibrationens +vibrationer +vibrationerna +vibrationernas +vibrationers +vibrations +vibrator +vibratorn +vibratorns +vibrators +vibrera +vibrerade +vibrerande +vibrerandet +vibrerandets +vibrerar +vibrerat +vice +vicka +vickad +vickade +vickades +vickande +vickandet +vickandets +vickar +vickas +vickat +vickats +vid +vida +vidare +vidarebefordra +vidarebefordrad +vidarebefordrade +vidarebefordrades +vidarebefordrar +vidarebefordras +vidarebefordrat +vidarebefordrats +vidast +vidaste +vidd +vidden +viddens +vide +video +videon +videons +videor +videorna +videornas +videors +videos +vidga +vidgad +vidgade +vidgades +vidgande +vidgandet +vidgandets +vidgar +vidgas +vidgat +vidgats +vidimera +vidimerad +vidimerade +vidimerades +vidimerar +vidimerat +vidimerats +vidrig +vidriga +vidrigare +vidrigas +vidrigast +vidrigaste +vidrige +vidriges +vidrigt +vidta +vidtaga +vidtager +vidtagits +vidtar +vidtog +vidunder +vidunders +vidundren +vidundrens +vidundret +vidundrets +vietnam +vietnams +vifta +viftad +viftade +viftades +viftande +viftandet +viftandets +viftar +viftas +viftat +viftats +viftning +viftningar +viftningarna +viftningarnas +viftningars +viftningen +viftningens +viftnings +vig +viga +vigande +vigandet +vigandets +vigas +vigd +vigde +vigdes +viger +vigs +vigt +vigts +vigvatten +vigvattens +vigvattnet +vigvattnets +vik vika +vikande +vikar +vikarbyn +vikarbyns +vikariat +vikariaten +vikariatens +vikariatet +vikariatets +vikarie +vikarien +vikariens +vikarier +vikariera +vikarierade +vikarierande +vikarierandet +vikarierandets +vikarierar +vikarierat +vikarierna +vikariernas +vikariers +vikaries +vikarna +vikarnas +vikars +vikas viken vikens +viker +viking +vikingar +vikingarna +vikingarnas +vikingars +vikingen +vikingens +vikings +vikingstad +vikingstads +vikit +vikmanshyttan +vikmanshyttans +vikt +vikta +vikten +viktens +vikter +vikterna +vikternas +vikters +viktig +viktiga +viktigare +viktigast +viktigaste +viktigt +viktor +viktoria +viktorias +viktors +vikts +vimmerby +vimmerbys +vin +vina +vinande +vinandet +vinandets +vinberg +vinbergs +vind +vinda +vindan +vindans +vindar +vindarna +vindarnas +vindars +vindas +vinddrag +vinden +vindens +vindor +vindorna +vindornas +vindors +vindrinkare +vindrinkaren +vindrinkarens +vindrinkares +vindrinkarna +vindrinkarnas +vindruta +vindrutan +vindrutans +vindrutas +vindrutor +vindrutorna +vindrutornas +vindrutors +vindruva +vindruvan +vindruvans +vindruvas +vindruvor +vindruvorna +vindruvornas +vindruvors +vinds +viner +vinerna +vinernas +viners +vinet +vinets +vingar +vingarna +vingarnas +vingars +vinge +vingen +vingens +vinges +vink +vinka +vinkad +vinkade +vinkades +vinkande +vinkandet +vinkandets +vinkar +vinkarna +vinkarnas +vinkars +vinkas +vinkat +vinkats +vinken +vinkens +vinna +vinnare +vinnaren +vinnarens +vinnares +vinnarna +vinnarnas +vinnas +vinner +vinning +vinninga +vinningas +vinningen +vinningens +vinnings +vinns +vinprovare +vinprovaren +vinprovarens +vinprovares +vinprovarna +vinprovarnas +vins +vinst +vinsten +vinstens +vinster +vinsterna +vinsternas +vinsters +vinter +vinterdag +vinterdagar +vinterdagarna +vinterdagarnas +vinterdagars +vinterdagen +vinterdagens +vinterdags +vintern +vinterns +vinters +vintertid +vintertiden +vintertidens +vintertids +vintrampare +vintramparen +vintramparens +vintrampares +vintramparna +vintramparnas +vintrar +vintrarna +vintrarnas +vintrars +vintras +vintrosa +vintrosas +vipa +vipan +vipans +vipor +viporna +vipornas +vipors +vippa +vippan +vippans +vippas +vips +vira +virad +virade +virades +virar +viras +virat +virats +virestad +virestads +virka +virkad +virkade +virkades +virkar +virkas +virkat +virkats +virke +virket +virkets +virra +virrade +virrar +virrat +virrig +virriga +virrigas +virrige +virriges +virrigt +virrvarr +virrvarren +virrvarrens +virrvarret +virrvarrets +virrvarrs +virsbo +virsbos +virserum +virserums +virtuos +virtuosen +virtuosens +virtuoser +virtuoserna +virtuosernas +virtuosers +virus +virusen +virusens +viruset +virusets vis +visa +visad +visade +visades +visan +visande +visandet +visandets +visans +visar +visare +visarna +visarnas +visars +visas +visast +visaste +visat +visats +visavi +visby +visbys +visdom +visdomen +visdomens +visdoms +vise +visen +visens +vises +vishet +visheten +vishetens +vishets +vision +visionen +visionens +visioner +visionerna +visionernas +visioners +visions +visit +visiten +visitens +visiter +visiterna +visiternas +visiters +visits +viska +viskad +viskade +viskades +viskafors +viskande +viskandet +viskandets +viskar +viskas +viskat +viskats +viskning +viskningar +viskningarna +viskningarnas +viskningars +viskningen +viskningens +visknings +visning +visningar +visningarna +visningarnas +visningars +visningen +visningens +visnings +visor +visorna +visornas +visors +visp +vispa +vispad +vispade +vispades +vispande +vispandet +vispandets +vispar +visparna +visparnas +vispars +vispas +vispat +vispats +vispen +vispens +visps +viss +vissa +vissen +visset +visshet +vissheten +visshetens +vissna +vissnad +vissnade +vissnades +vissnande +vissnandet +vissnandets +vissnar +vissnas +vissnat +vissnats +visso +visst +visste +vist +vistades +vistas +vistats +visthus +visthusen +visthusens +visthuset +visthusets +vit +vita +vitaby +vitabys +vitare +vitarmad +vitarmade +vitarmat +vitas +vitast +vitaste +vite +vites +vitmenad +vitmenade +vitmenat +vitmossa +vitmossan +vitmossans +vitmossas +vitna +vitnad +vitnade +vitnar +vitnat +vits +vitsig +vitsiga +vitsigt +vitsorda +vitsordad +vitsordade +vitsordades +vitsordar +vitsordas +vitsordat +vitsordats +vitt +vittangi +vittangis +vittaryd +vittaryds +vittberyktad +vittberyktade +vittberyktat +vitter +vitterhet +vitterheten +vitterhetens +vitterhets +vittert +vittinge +vittinges +vittna +vittnad +vittnade +vittnades +vittnande +vittnandet +vittnandets +vittnar +vittnas +vittnat +vittnats +vittne +vittnen +vittnena +vittnenas +vittnens +vittnes +vittnet +vittnets +vittra +vittrade +vittrar +vittrat +viv +vivet +vivets +von +vorden +vordet +vordna +vore +votera +voterade +voterar +voterat +voxnabruk +voxnabruks +vrak +vraka +vrakade +vrakar +vrakat +vraken +vrakens +vraket +vrakets +vraks +vred +vreda +vrede +vreden +vredens +vredes +vredga +vredgad +vredgade +vredgades +vredgar +vredgas +vredgat +vredgats +vreds +vrena +vrenas +vresig +vresiga +vresigare +vresigas +vresigast +vresigaste +vresige +vresiges +vresigt +vreta +vretas +vretstorp +vretstorps +vricka +vrickad +vrickade +vrickades +vrickande +vrickandet +vrickandets +vrickar +vrickas +vrickat +vrickats +vrid +vrida +vridas +vriden +vrider +vrides +vridet +vridit +vridits +vridna +vridning +vridningar +vridningarna +vridningarnas +vridningars +vridningen +vridningens +vridnings +vrids +vrigstad +vrigstads +vrist +vristen +vristens +vrister +vristerna +vristernas +vristers +vunna +vunnen +vunnet +vunnit +vunnits +vuxen +vuxet +vuxit +vuxna +vuxne +vyer +vyerna +vyernas +vyers +vykort +vykorten +vykortens +vykortet +vykortets +vykorts +vyn +vyns +washington +washingtons +watt +werner +werners +westerberg +westerbergs +westman +westmans +wien +wiens +winchester +wirth +xerox +yemen +yemens +ymnig +ymniga +ymnigt +yngre +yngres +yngst +yngsta +yngve +yngves +ynkedom +ynnest +york +yorks +yppa +yppad +yppade +yppades +yppande +yppandet +yppandets +yppar +yppas +yppat +yppats +ypperst +yppersta +yppig +yppiga +yppigare +yppigast +yppigaste +yppigt +yra +yrade +yran +yrande +yrandet +yrandets +yrans +yrar +yrat +yrde +yrka +yrkad +yrkade +yrkades +yrkande +yrkandena +yrkandenas +yrkandet +yrkandets +yrkar +yrkas +yrkat +yrkats +yrke +yrken +yrkena +yrkenas +yrkens +yrkes +yrkesgrupp +yrkesgruppen +yrkesgruppens +yrkesgrupper +yrkesgrupperna +yrkesgruppernas +yrkesgruppers +yrkesgrupps +yrkesman +yrkesmannen +yrkesmannens +yrkesmans +yrket +yrkets +yrt +yrvaken +yrvaket +yrvakna +ystad +ystads +yster +ystert +ystra +ystrare +ystrast +ystraste +yta +ytan +ytans +ytenhet +ytenheten +ytenhetens +ytenheter +ytenheterna +ytenheternas +ytenheters +ytenhets +ytor +ytorna +ytornas +ytors +ytter +ytterby +ytterbys +yttermera +yttern +ytterns +ytters +yttersida +ytterst +yttersta +yttra +yttrade +yttrades +yttrande +yttranden +yttrandena +yttrandenas +yttrandet +yttrandets +yttrar +yttrarna +yttrarnas +yttrars +yttras +yttrat +yttrats +yttre +yttring +yttringar +yttringarna +yttringarnas +yttringars +yttringen +yttringens +yttrings +yvades +yvas +yvats +yvig +yviga +yvigt +yvonne +yvonnes +yvs +yxa +yxan +yxans +yxor +yxorna +yxornas +yxors +zaire +zaires +zambia +zambias +zebra +zebran +zebrans +zebras +zebror +zebrorna +zebrornas +zebrors +zetterberg +zetterbergs +zigenare +zigenaren +zigenarens +zigenares +zigenarna +zigenarnas +zimbabwe +zimbabwes +zinkgruvan +zinkgruvans +zon +zonen +zonens +zoner +zonerna +zonernas +zoners +zons +zoo From f1f9eb5a661516a4d2a2a476033a951cec26b442 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 14:29:53 +0100 Subject: [PATCH 104/404] console: add disable_color flag. --- CMakeLists.txt | 1 + src/console.cpp | 30 ++++++++++++++++++++++++++ src/console.h | 2 ++ src/console_ansi.cpp | 8 +++++++ src/console_win32.cpp | 50 +++++++++++++++++++++++-------------------- 5 files changed, 68 insertions(+), 23 deletions(-) create mode 100644 src/console.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d0195d1..a143774 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,6 +17,7 @@ include(GNUInstallDirs) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE + src/console.cpp src/string.cpp src/base58.cpp src/WIF.cpp diff --git a/src/console.cpp b/src/console.cpp new file mode 100644 index 0000000..c685541 --- /dev/null +++ b/src/console.cpp @@ -0,0 +1,30 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "console.h" + +namespace eoskeygen { namespace console { + +bool disable_color = false; + +} } // namespace eoskeygen::console diff --git a/src/console.h b/src/console.h index bc20e0e..bd7f0fd 100644 --- a/src/console.h +++ b/src/console.h @@ -30,6 +30,8 @@ namespace eoskeygen { namespace console { + extern bool disable_color; + // enum for all supported colors. enum Color { default_fg, diff --git a/src/console_ansi.cpp b/src/console_ansi.cpp index 272615a..0398d84 100644 --- a/src/console_ansi.cpp +++ b/src/console_ansi.cpp @@ -29,6 +29,10 @@ namespace eoskeygen { namespace console { std::ostream& reset(std::ostream& os) { + + if (disable_color) { + return os; + } return os << "\033[0m"; } @@ -38,6 +42,10 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { int attr; int code; + if (disable_color) { + return os; + } + switch(obj._color) { case black : code = 30; break; case red : code = 31; break; diff --git a/src/console_win32.cpp b/src/console_win32.cpp index a6c2800..24e38fa 100644 --- a/src/console_win32.cpp +++ b/src/console_win32.cpp @@ -50,8 +50,9 @@ namespace console { std::ostream& reset(std::ostream& os) { - ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FG_DEFAULT); - + if (disable_color == false) { + ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FG_DEFAULT); + } return os; } @@ -60,28 +61,31 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { int code; - switch(obj._color) { - case black : code = FG_BLACK; break; - case red : code = FG_RED; break; - case green : code = FG_GREEN; break; - case blue : code = FG_BLUE; break; - case yellow : code = FG_YELLOW; break; - case magenta : code = FG_MAGENTA; break; - case cyan : code = FG_CYAN; break; - case light_grey : code = FG_GREY; break; - case light_red : code = FG_LIGHTRED; break; - case light_green : code = FG_LIGHTGREEN; break; - case light_yellow : code = FG_LIGHTYELLOW; break; - case light_blue : code = FG_LIGHTBLUE; break; - case light_magenta : code = FG_LIGHTMAGENTA; break; - case light_cyan : code = FG_LIGHTCYAN; break; - case dark_grey : code = FG_DARKGREY; break; - case white : code = FG_WHITE; break; - case default_fg : default : - code = FG_DEFAULT; - } + if (disable_color == false) { - ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), code); + switch(obj._color) { + case black : code = FG_BLACK; break; + case red : code = FG_RED; break; + case green : code = FG_GREEN; break; + case blue : code = FG_BLUE; break; + case yellow : code = FG_YELLOW; break; + case magenta : code = FG_MAGENTA; break; + case cyan : code = FG_CYAN; break; + case light_grey : code = FG_GREY; break; + case light_red : code = FG_LIGHTRED; break; + case light_green : code = FG_LIGHTGREEN; break; + case light_yellow : code = FG_LIGHTYELLOW; break; + case light_blue : code = FG_LIGHTBLUE; break; + case light_magenta : code = FG_LIGHTMAGENTA; break; + case light_cyan : code = FG_LIGHTCYAN; break; + case dark_grey : code = FG_DARKGREY; break; + case white : code = FG_WHITE; break; + case default_fg : default : + code = FG_DEFAULT; + } + + ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), code); + } // WinAPI does not support text attributes in the console. // so we ignore those. From 1e725889c191a3e46e8a12d63b719cbb93b3e53d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 14:30:20 +0100 Subject: [PATCH 105/404] src/main.cpp: implement -m flag. --- src/main.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3e16602..36b0883 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,6 +26,7 @@ #endif /* HAVE_THREADS */ #include #include +#include "console.h" #include "string.h" #include "WIF.h" #include "crypto/ec.h" @@ -68,7 +69,7 @@ void cmd_search(const eoskeygen::strlist_t& words, int count) { void usage(const char *name) { std::cout << name - << " [ -h | --help | search [ --l33t" + << " [ -h | --help | search [ -m | --l33t" #ifdef HAVE_THREADS << " | --threads=" #endif /* HAVE_THREADS */ @@ -90,6 +91,8 @@ void usage(const char *name) { << " performs a search, finding public keys containing" << std::endl << " one or more words from (separated with ',')." << std::endl << std::endl + << " -m: Monochrome, disables all color output." + << std::endl << std::endl << " --l33t: Takes each word in and find all l33tspeak" << std::endl << " combinations of that word and uses the new list for the search." #ifdef HAVE_THREADS @@ -142,7 +145,9 @@ int main(int argc, char **argv) { eoskeygen::strlist_t words; while(p++ < argc - 1) { - if (!strcmp(argv[p], "--l33t")) { + if (!strcmp(argv[p], "-m")) { + eoskeygen::console::disable_color = true; + } else if (!strcmp(argv[p], "--l33t")) { option_l33t = true; } else if (!memcmp(argv[p], "--threads=", 10)) { #ifdef HAVE_THREADS From 51309c4d8ade52730919cb895cb2c4be75709840 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 14:35:40 +0100 Subject: [PATCH 106/404] docs/eosio-keygen.1.in: document -m flag --- docs/eosio-keygen.1.in | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/eosio-keygen.1.in b/docs/eosio-keygen.1.in index 960ef1c..661d934 100644 --- a/docs/eosio-keygen.1.in +++ b/docs/eosio-keygen.1.in @@ -14,6 +14,7 @@ EOS .SY @PROJECT_NAME@ search +.OP -m .OP \--l33t .OP \--threads= .B word_list @@ -46,6 +47,9 @@ public keys containing one or more words from Search specific options: .RS 2 .TP 20 +.B -m +Monochrome, disables all color output. +.TP 20 .B --l33t Takes each word in .I From 805bf3e1e5bcc63d4de42195abf9636d32e62a04 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 14:36:29 +0100 Subject: [PATCH 107/404] key_search_helpers.h: typo fix --- src/key_search_helpers.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index f3a6bd5..f871394 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_KEY_SEARCH_HELPSER_H +#ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #include "string.h" From b88e613b54f831723a63e0594b8f7c792d0302cf Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 15:49:09 +0100 Subject: [PATCH 108/404] adding core/file --- CMakeLists.txt | 1 + src/core/file.cpp | 26 ++++++++++++++++++++++++++ src/core/file.h | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 src/core/file.cpp create mode 100644 src/core/file.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c80797..4d1076f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE src/console.cpp + src/core/file.cpp src/core/dictionary.cpp src/string.cpp src/base58.cpp diff --git a/src/core/file.cpp b/src/core/file.cpp new file mode 100644 index 0000000..72c01b8 --- /dev/null +++ b/src/core/file.cpp @@ -0,0 +1,26 @@ + +#include +#include "file.h" + +namespace eoskeygen { + +bool readLines(const std::string& filename, strlist_t& lines) { + + FILE *fd; + char buf[1024]; + + fd = fopen(filename.c_str(), "r"); + if (!fd) { + return false; + } + + while(fgets(buf, sizeof(buf), fd) != NULL) { + std::string line(buf); + lines.push_back(trim(line)); + } + + fclose(fd); + return true; +} + +} // namespace eoskeygen diff --git a/src/core/file.h b/src/core/file.h new file mode 100644 index 0000000..19ce2ae --- /dev/null +++ b/src/core/file.h @@ -0,0 +1,36 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_CORE_FILE_H +#define EOSIOKEYGEN_CORE_FILE_H + +#include "../string.h" +#include + +namespace eoskeygen { + +bool readLines(const std::string& filename, strlist_t& lines); + +} // namespace + +#endif /* EOSIOKEYGEN_CORE_FILE_H */ From 6195b424528a08bca07d0fa5c9825ca70cf55e57 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 18 Feb 2020 16:08:21 +0100 Subject: [PATCH 109/404] main.cpp: implement support for file input as word list. --- docs/eosio-keygen.1.in | 3 ++- src/main.cpp | 26 +++++++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/docs/eosio-keygen.1.in b/docs/eosio-keygen.1.in index 5acf4fe..d60b7cc 100644 --- a/docs/eosio-keygen.1.in +++ b/docs/eosio-keygen.1.in @@ -44,7 +44,8 @@ performs a search, finding public keys containing one or more words from .I (separated with ','). -.PP +Instead of a list it is possible to specify a file with words (separated with newline '\\n') using +.I file: .RS 16 Search specific options: .RS 2 diff --git a/src/main.cpp b/src/main.cpp index 91f7f48..bd47fc7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -28,6 +28,7 @@ #include #include "console.h" #include "config.h" +#include "core/file.h" #include "core/dictionary.h" #include "string.h" #include "WIF.h" @@ -78,7 +79,7 @@ void usage(const char *name) { << " | --threads=" #endif /* HAVE_THREADS */ << " | --dict= ... " - << " | --lang= ... ] [ ]" + << " | --lang= ... ] |file: [ ]" << " | benchmark [ ]" << " ]" << std::endl << std::endl; @@ -94,7 +95,10 @@ void usage(const char *name) { std::cout << " search: " << std::endl << " performs a search, finding public keys containing" << std::endl - << " one or more words from (separated with ',')." + << " one or more words from (separated with ',')." << std::endl + << std::endl + << " Instead of a list it is possible to specify a file with words" << std::endl + << " (separated with newline '\\n') using file:" << std::endl << std::endl << " -m: Monochrome, disables all color output." << std::endl << std::endl @@ -212,7 +216,23 @@ int main(int argc, char **argv) { } // wordlist and count else if (words.size() < 1) { - words = eoskeygen::strsplitwords(std::string(argv[p])); + std::string arg = std::string(argv[p]); + if (arg.rfind("file:", 0) == 0) { + std::string filename = arg.substr(5); + if (!eoskeygen::readLines(filename, words)) { + std::cerr << "Could not read file: " << filename << std::endl; + return 0; + } + + if (words.size() < 1) { + std::cerr << filename << " did not contain any words" << std::endl; + return 0; + } + } + // List + else { + words = eoskeygen::strsplitwords(arg); + } if (p + 1 < argc) { count = atoi(argv[++p]); From d6a4ae6db8c512872976a19d775ee2d5c3190920 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:09:53 +0100 Subject: [PATCH 110/404] Organize source files into directory. --- CMakeLists.txt | 8 ++++---- src/core/dictionary.cpp | 2 +- src/core/file.h | 2 +- src/{ => core}/string.cpp | 0 src/{ => core}/string.h | 0 src/{ => crypto}/WIF.cpp | 0 src/{ => crypto}/WIF.h | 8 ++++---- src/{ => crypto}/base58.cpp | 0 src/{ => crypto}/base58.h | 6 +++--- src/{ => crypto}/checksum.h | 6 +++--- src/key_search_helpers.cpp | 2 +- src/key_search_helpers.h | 2 +- src/main.cpp | 6 +++--- 13 files changed, 21 insertions(+), 21 deletions(-) rename src/{ => core}/string.cpp (100%) rename src/{ => core}/string.h (100%) rename src/{ => crypto}/WIF.cpp (100%) rename src/{ => crypto}/WIF.h (91%) rename src/{ => crypto}/base58.cpp (100%) rename src/{ => crypto}/base58.h (92%) rename src/{ => crypto}/checksum.h (94%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d1076f..286a9de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,12 +18,12 @@ include(GNUInstallDirs) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE - src/console.cpp src/core/file.cpp src/core/dictionary.cpp - src/string.cpp - src/base58.cpp - src/WIF.cpp + src/core/string.cpp + src/crypto/base58.cpp + src/crypto/WIF.cpp + src/console.cpp src/key_search.cpp src/key_search_helpers.cpp src/benchmark.cpp diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index 69c9272..8cf9e21 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -3,7 +3,7 @@ #include #include #include -#include "../string.h" +#include "string.h" #include "dictionary.h" namespace eoskeygen { diff --git a/src/core/file.h b/src/core/file.h index 19ce2ae..72cb5ab 100644 --- a/src/core/file.h +++ b/src/core/file.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_CORE_FILE_H #define EOSIOKEYGEN_CORE_FILE_H -#include "../string.h" +#include "string.h" #include namespace eoskeygen { diff --git a/src/string.cpp b/src/core/string.cpp similarity index 100% rename from src/string.cpp rename to src/core/string.cpp diff --git a/src/string.h b/src/core/string.h similarity index 100% rename from src/string.h rename to src/core/string.h diff --git a/src/WIF.cpp b/src/crypto/WIF.cpp similarity index 100% rename from src/WIF.cpp rename to src/crypto/WIF.cpp diff --git a/src/WIF.h b/src/crypto/WIF.h similarity index 91% rename from src/WIF.h rename to src/crypto/WIF.h index a8bba10..14a1855 100644 --- a/src/WIF.h +++ b/src/crypto/WIF.h @@ -21,11 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_WIF_H -#define EOSIOKEYGEN_WIF_H +#ifndef EOSIOKEYGEN_CRYPTO_WIF_H +#define EOSIOKEYGEN_CRYPTO_WIF_H #include -#include "crypto/types.h" +#include "types.h" namespace eoskeygen { @@ -37,4 +37,4 @@ void wif_print_key(const struct ec_keypair *key); } // namespace eoskeygen -#endif /* EOSIOKEYGEN_WIF_H */ +#endif /* EOSIOKEYGEN_CRYPTO_WIF_H */ diff --git a/src/base58.cpp b/src/crypto/base58.cpp similarity index 100% rename from src/base58.cpp rename to src/crypto/base58.cpp diff --git a/src/base58.h b/src/crypto/base58.h similarity index 92% rename from src/base58.h rename to src/crypto/base58.h index 16b7798..656969e 100644 --- a/src/base58.h +++ b/src/crypto/base58.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_BASE58_H -#define EOSIOKEYGEN_BASE58_H +#ifndef EOSIOKEYGEN_CRYPTO_BASE58_H +#define EOSIOKEYGEN_CRYPTO_BASE58_H #include #include @@ -35,4 +35,4 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend } //namespace eoskeygen -#endif /* EOSIOKEYGEN_BASE58_H */ +#endif /* EOSIOKEYGEN_CRYPTO_BASE58_H */ diff --git a/src/checksum.h b/src/crypto/checksum.h similarity index 94% rename from src/checksum.h rename to src/crypto/checksum.h index a67a42b..a5f48f8 100644 --- a/src/checksum.h +++ b/src/crypto/checksum.h @@ -21,13 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_CHECKSUM_H -#define EOSIOKEYGEN_CHECKSUM_H +#ifndef EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H +#define EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H #include #include #include -#include "crypto/hash.h" +#include "hash.h" namespace eoskeygen { diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index cada86d..661b6e0 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -23,7 +23,7 @@ */ #include #include "core/dictionary.h" -#include "WIF.h" +#include "crypto/WIF.h" #include "console.h" #include "key_search_helpers.h" diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 443257f..9b2862c 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H -#include "string.h" +#include "core/string.h" #include "crypto/types.h" namespace eoskeygen { diff --git a/src/main.cpp b/src/main.cpp index bd47fc7..58e1449 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,13 +26,13 @@ #endif /* HAVE_THREADS */ #include #include -#include "console.h" #include "config.h" #include "core/file.h" #include "core/dictionary.h" -#include "string.h" -#include "WIF.h" +#include "core/string.h" #include "crypto/ec.h" +#include "crypto/WIF.h" +#include "console.h" #include "key_search.h" #include "benchmark.h" From bcabafbb92ae88f55b3c0dce13221e75f351aaab Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:15:03 +0100 Subject: [PATCH 111/404] Fix header guards. --- src/core/dictionary.h | 6 +++--- src/core/string.h | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/dictionary.h b/src/core/dictionary.h index baa5f7a..463844d 100644 --- a/src/core/dictionary.h +++ b/src/core/dictionary.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_DICTIONARY_H -#define EOSIOKEYGEN_DICTIONARY_H +#ifndef EOSIOKEYGEN_CORE_DICTIONARY_H +#define EOSIOKEYGEN_CORE_DICTIONARY_H #include #include @@ -69,4 +69,4 @@ protected : } // namespace eoskeygen -#endif /* EOSIOKEYGEN_DICTIONARY_H */ +#endif /* EOSIOKEYGEN_CORE_DICTIONARY_H */ diff --git a/src/core/string.h b/src/core/string.h index 52313a0..2548625 100644 --- a/src/core/string.h +++ b/src/core/string.h @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_STRING_H -#define EOSIOKEYGEN_STRING_H +#ifndef EOSIOKEYGEN_CORE_STRING_H +#define EOSIOKEYGEN_CORE_STRING_H #include #include @@ -50,4 +50,4 @@ strlist_t l33twords(std::string str); } // namespace eoskeygen -#endif /* EOSIOKEYGEN_STRING_H */ +#endif /* EOSIOKEYGEN_CORE_STRING_H */ From c5a5ba40f6dc29e8b5c641070240e143e5b15170 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:21:37 +0100 Subject: [PATCH 112/404] main.cpp: fixing missing "/" for language path. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index 58e1449..8bf7dff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -200,7 +200,7 @@ int main(int argc, char **argv) { else if (!memcmp(argv[p], "--lang=", 7)) { eoskeygen::Dictionary d; std::string lang(argv[p] + 7); - std::string filename(std::string(CONFIG_SHARE_FULL_PATH) + "/dict" + lang); + std::string filename(std::string(CONFIG_SHARE_FULL_PATH) + "/dict/" + lang); if (d.loadFromFile(filename)) { dict.add(d); From 06a2f7be33c9ce6b7f2e9063aa7de9b0eb5d8687 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:22:37 +0100 Subject: [PATCH 113/404] core/dictionary.cpp: use readLines() from file.h --- src/core/dictionary.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index 8cf9e21..ffa8b89 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -3,6 +3,7 @@ #include #include #include +#include "file.h" #include "string.h" #include "dictionary.h" @@ -22,25 +23,20 @@ struct StringContains { bool Dictionary::loadFromFile(const std::string& filename) { - FILE *fd; - char buf[1024]; - - fd = fopen(filename.c_str(), "r"); - if (!fd) { - return false; - } + strlist_t lines; // Clear before adding. clear(); - // Read each line and add to the dictionary. - while(fgets(buf, sizeof(buf), fd) != NULL) { - std::string word(buf); - add(trim(word)); - } + if (readLines(filename, lines)) { - fclose(fd); - return true; + // Read each line and add to the dictionary. + for(auto it = lines.begin(); it != lines.end(); it++) { + add(*it); + } + return true; + } + return false; } void Dictionary::add(const std::string& word) From 508d5639c54be587eb9dc2ba3f2aac6c3567936c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:39:08 +0100 Subject: [PATCH 114/404] CMake: set additional project information. --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 286a9de..92a4e89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,6 +3,10 @@ cmake_minimum_required(VERSION 3.4) # Project name and version project(eosio-keygen VERSION 0.1.6) +set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) +set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) +set( PROJECT_MAINTAINER "Henrik Hautakoski ") + # Options option(USE_THREADS "Compile with support for threads (if available)." ON) option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) From 3b55751022514f6bb241b20d9761b0a132dd33a1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:40:10 +0100 Subject: [PATCH 115/404] CMake: move package stuff to CMakeModules/package.cmake --- CMakeLists.txt | 21 +++++++++------------ CMakeModules/package.cmake | 21 +++++++++++++++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 CMakeModules/package.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 92a4e89..48db9c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,9 @@ option(USE_THREADS "Compile with support for threads (if available)." ON) option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) option(EXTRAS "Include non essential (extra) files in the build. (only for *nix)" OFF) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") + # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) @@ -122,18 +125,6 @@ configure_file( docs/eosio-keygen.1.in install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 DESTINATION ${CMAKE_INSTALL_MANDIR}) -# -------------------------------- -# Debian package script -# -------------------------------- - -if (UNIX) # Only include in bash environments. - # Hack to set the right permissions :) - configure_file(scripts/generate_deb.sh.in ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh @ONLY) - file(COPY ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh DESTINATION ${PROJECT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) -endif (UNIX) - # -------------------------------- # Extras # -------------------------------- @@ -141,3 +132,9 @@ endif (UNIX) if (UNIX AND EXTRAS) add_subdirectory(extras) endif() + +# -------------------------------- +# Misc +# -------------------------------- + +include( package ) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake new file mode 100644 index 0000000..336bb75 --- /dev/null +++ b/CMakeModules/package.cmake @@ -0,0 +1,21 @@ + +# -------------------------------- +# Info +# -------------------------------- +set( PACKAGE_NAME ${PROJECT_NAME} ) +set( PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION} ) +set( PACKAGE_VERSION "${PROJECT_VERSION}" ) +set( PACKAGE_HOMEPAGE_URL ${PROJECT_HOMEPAGE_URL} ) +set( PACKAGE_MAINTAINER ${PROJECT_MAINTAINER}) + +# -------------------------------- +# Debian script +# -------------------------------- + +if (UNIX) # Only include in bash environments. + # Hack to set the right permissions :) + configure_file(scripts/generate_deb.sh.in ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh @ONLY) + file(COPY ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh DESTINATION ${PROJECT_BINARY_DIR} + FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + ) +endif (UNIX) From ba296fba63e515e48879f2dafd789f1cb5478da3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:40:38 +0100 Subject: [PATCH 116/404] scripts/generate_deb.sh.in: fetch info from cmake variables. --- scripts/generate_deb.sh.in | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in index ce69e41..c124b72 100644 --- a/scripts/generate_deb.sh.in +++ b/scripts/generate_deb.sh.in @@ -2,9 +2,8 @@ BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -PACKAGE_NAME="@PROJECT_NAME@" -PACKAGE_VERSION="@PROJECT_VERSION@" -PACKAGE_DESCRIPTION="Keygenerator for EOSIO" +PACKAGE_NAME="@PACKAGE_NAME@" +PACKAGE_VERSION="@PACKAGE_VERSION@" PACKAGE_PREFIX=$(echo "@CMAKE_INSTALL_PREFIX@" | sed -E 's~^/~~') PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" @@ -38,9 +37,9 @@ Version: ${PACKAGE_VERSION}-${RELEASE} Section: misc Priority: optional Architecture: amd64 -Homepage: https://github.com/eosswedenorg/eosio-keygen -Maintainer: Henrik Hautakoski -Description: ${PACKAGE_DESCRIPTION} +Homepage: @PACKAGE_HOMEPAGE_URL@ +Maintainer: @PACKAGE_MAINTAINER@ +Description: @PACKAGE_DESCRIPTION@ Depends: libssl1.1, libc6" &> ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control cat ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control From 243acc8014d7fd43cdaf27c822908ad305d373d5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:48:42 +0100 Subject: [PATCH 117/404] config.h.in: define PROGRAM_NAME and PROGRAM_VERSION --- src/config.h.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/config.h.in b/src/config.h.in index 888d883..7ad1d41 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -24,6 +24,9 @@ #ifndef CONFIG_H #define CONFIG_H +#define PROGRAM_NAME "@PROJECT_NAME@" +#define PROGRAM_VERSION "@PROJECT_VERSION@" + // Paths #define CONFIG_SHARE_PATH "@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" #define CONFIG_SHARE_FULL_PATH "@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@" From ca617cfa3bbf9ec3cc856a84a7f8d752a2608e8f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 13:49:23 +0100 Subject: [PATCH 118/404] main.cpp: adding "-v" version flag. --- docs/eosio-keygen.1.in | 7 +++++++ src/main.cpp | 12 +++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/eosio-keygen.1.in b/docs/eosio-keygen.1.in index d60b7cc..ef12205 100644 --- a/docs/eosio-keygen.1.in +++ b/docs/eosio-keygen.1.in @@ -12,6 +12,10 @@ EOS .OP \-h|--help .YS +.SY @PROJECT_NAME@ +.OP \-v +.YS + .SY @PROJECT_NAME@ search .OP -m @@ -38,6 +42,9 @@ Options and subcommands are as follows: .B -h, --help Shows this help text. .TP 15 +.B -v +Shows version. +.TP 15 .B search performs a search, finding .I diff --git a/src/main.cpp b/src/main.cpp index 8bf7dff..9d98ede 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -74,7 +74,7 @@ void cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& void usage(const char *name) { std::cout << name - << " [ -h | --help | search [ -m | --l33t" + << " [ -h | --help | -v | search [ -m | --l33t" #ifdef HAVE_THREADS << " | --threads=" #endif /* HAVE_THREADS */ @@ -90,8 +90,9 @@ void usage(const char *name) { std::cout << " Options:" << std::endl << " -h, --help Shows this help text." - << std::endl - << std::endl; + << std::endl << std::endl + << " -v Shows version." + << std::endl << std::endl; std::cout << " search: " << std::endl << " performs a search, finding public keys containing" << std::endl @@ -159,6 +160,11 @@ int main(int argc, char **argv) { return 0; } + if (!strcmp(argv[p], "-v")) { + std::cout << PROGRAM_NAME << " v" << PROGRAM_VERSION << std::endl; + return 0; + } + if (!strcmp(argv[p], "search")) { int count = 10; From 6edcd2d66aa920ddec7f2f2ceb9e986c66f6e30b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 19 Feb 2020 19:50:23 +0100 Subject: [PATCH 119/404] Version 1.0 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 48db9c7..bc308db 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.4) # Project name and version -project(eosio-keygen VERSION 0.1.6) +project(eosio-keygen VERSION 1.0) set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From f907beba3502ce7893a0847040faa87eb10666ef Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:33:10 +0100 Subject: [PATCH 120/404] CMake: set CMAKE_INSTALL_SHAREDIR --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bc308db..18a61dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,8 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) +set( CMAKE_INSTALL_SHAREDIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} ) + # -------------------------------- # Program # -------------------------------- @@ -117,7 +119,7 @@ endif (WIN32) # -------------------------------- install(FILES README.md LICENSE LICENSE.bitcoin - DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}) + DESTINATION ${CMAKE_INSTALL_SHAREDIR}) configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) From 6eaf32847cc104643a094113cb0dc134c09c7349 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:34:23 +0100 Subject: [PATCH 121/404] CMake: move "flat install" for windows to the top of the file. --- CMakeLists.txt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18a61dd..b3057bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,12 @@ include(GNUInstallDirs) set( CMAKE_INSTALL_SHAREDIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} ) +if (WIN32) + # "Flat" install on windows. + set( CMAKE_INSTALL_BINDIR "." ) + set( CMAKE_INSTALL_DATADIR "." ) +endif (WIN32) + # -------------------------------- # Program # -------------------------------- @@ -106,10 +112,6 @@ if (WIN32) ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} ) - # "Flat" install on windows. - set( CMAKE_INSTALL_BINDIR "." ) - set( CMAKE_INSTALL_DATADIR "." ) - # We also need to copy libcrypto dll during install install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) endif (WIN32) From daa860d5740932dc884fee973de96bd43374b4bc Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:36:21 +0100 Subject: [PATCH 122/404] CMake: set additional install variables on windows. --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b3057bc..346e4f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,8 @@ if (WIN32) # "Flat" install on windows. set( CMAKE_INSTALL_BINDIR "." ) set( CMAKE_INSTALL_DATADIR "." ) + set( CMAKE_INSTALL_SHAREDIR "." ) + set( CMAKE_INSTALL_MANDIR "." ) endif (WIN32) # -------------------------------- From 3bf42e5234f1dc840c9c3c539f9f8f22120602b9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:38:19 +0100 Subject: [PATCH 123/404] CMake: only install man page on *nix systems. --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 346e4f1..2636d67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,8 +128,10 @@ install(FILES README.md LICENSE LICENSE.bitcoin configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) +if (UNIX) install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 DESTINATION ${CMAKE_INSTALL_MANDIR}) +endif (UNIX) # -------------------------------- # Extras From 35fc0f08cbd272248d7929e1dafdc9e3d41eb921 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:39:18 +0100 Subject: [PATCH 124/404] CMakeModules/package.cmake: Add zip command for windows. --- CMakeModules/package.cmake | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index 336bb75..929625f 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -19,3 +19,16 @@ if (UNIX) # Only include in bash environments. FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif (UNIX) + +# -------------------------------- +# Windows +# -------------------------------- +if (WIN32) + add_custom_target(package + COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_NAME}-${PACKAGE_VERSION}" + COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_NAME}-${PACKAGE_VERSION}.zip" --format=zip "${PACKAGE_NAME}-${PACKAGE_VERSION}" + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) + + add_dependencies(package ${PROGRAM_EXE}) +endif (WIN32) From 3dd0a41c3796769ada84a3ee3a11eecfb91c1873 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 09:39:54 +0100 Subject: [PATCH 125/404] .github/workflows/package.yml: create zip file on windows. --- .github/workflows/package.yml | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index a142da3..76156b1 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -35,3 +35,42 @@ jobs: asset_name: ${{ steps.package.outputs.name }} asset_path: ${{ steps.package.outputs.filename }} asset_content_type: application/x-deb + + # Windows zip file + windows: + name: Windows + runs-on: windows-latest + steps: + - uses: actions/checkout@v1 + + - name: Dependancies + shell: bash + run: | + mkdir -p build + cd build + curl https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -O + 7z x openssl-1.1.1e-dev.zip + + - name: Configure + run: cmake -D OPENSSL_ROOT_DIR="$pwd/build/openssl-1.1/x64" -S . -B build + + - name: Build + run: cmake --build build --config Release + + - name: Package + id: package + run: | + cmake --build build --config Release --target package + $FILE=(ls build/eosio-keygen*.zip) + echo "::set-output name=filename::$FILE" + echo "::set-output name=name::$(([io.fileinfo]"$FILE").basename).zip" + + - name: Upload + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_name: ${{ steps.package.outputs.name }} + asset_path: ${{ steps.package.outputs.filename }} + asset_content_type: application/zip From 4df78587c08e23c42b6beba570413d6fb8c5615a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 11:16:42 +0100 Subject: [PATCH 126/404] CMakeModules/package.cmake: add PACKAGE_PLATFORM variable --- CMakeModules/package.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index 929625f..df0966c 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -8,6 +8,11 @@ set( PACKAGE_VERSION "${PROJECT_VERSION}" ) set( PACKAGE_HOMEPAGE_URL ${PROJECT_HOMEPAGE_URL} ) set( PACKAGE_MAINTAINER ${PROJECT_MAINTAINER}) +set( PACKAGE_PLATFORM "x86" ) +if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set( PACKAGE_PLATFORM "${PACKAGE_PLATFORM}_64" ) +endif() + # -------------------------------- # Debian script # -------------------------------- From 67c12d7cb37dccd5a625670295c41ef2b973543e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 11:17:55 +0100 Subject: [PATCH 127/404] CMakeModules/package.cmake: set a better name for windows zip. --- CMakeModules/package.cmake | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index df0966c..bf43b19 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -29,9 +29,12 @@ endif (UNIX) # Windows # -------------------------------- if (WIN32) + + set ( PACKAGE_FILENAME "${PACKAGE_NAME}-${PACKAGE_VERSION}-windows-${PACKAGE_PLATFORM}" ) + add_custom_target(package - COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_NAME}-${PACKAGE_VERSION}" - COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_NAME}-${PACKAGE_VERSION}.zip" --format=zip "${PACKAGE_NAME}-${PACKAGE_VERSION}" + COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_FILENAME}" + COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_FILENAME}.zip" --format=zip "${PACKAGE_FILENAME}" WORKING_DIRECTORY ${PROJECT_BINARY_DIR} ) From a8432ea972ed5e2bba887761e345630eac3c0379 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 21 Feb 2020 11:30:41 +0100 Subject: [PATCH 128/404] .github/workflows/package.yml: package for both x86 and x64 on windows. --- .github/workflows/package.yml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 76156b1..4b90d50 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -38,7 +38,10 @@ jobs: # Windows zip file windows: - name: Windows + strategy: + matrix: + arch: [ x86, x64 ] + name: Windows (${{matrix.arch}}) runs-on: windows-latest steps: - uses: actions/checkout@v1 @@ -52,7 +55,13 @@ jobs: 7z x openssl-1.1.1e-dev.zip - name: Configure - run: cmake -D OPENSSL_ROOT_DIR="$pwd/build/openssl-1.1/x64" -S . -B build + run: | + if ("${{matrix.arch}}" -eq "x86") { + $PLATFORM="Win32" + } else { + $PLATFORM="${{matrix.arch}}" + } + cmake -A $PLATFORM -D OPENSSL_ROOT_DIR="$pwd/build/openssl-1.1/${{matrix.arch}}" -S . -B build - name: Build run: cmake --build build --config Release From 040d3457ef57680821d9670d6bc12a8641c78d59 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 22 Feb 2020 11:05:06 +0100 Subject: [PATCH 129/404] CMakeModules/package.cmake: minor fix. --- CMakeModules/package.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index bf43b19..4120c52 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -30,7 +30,7 @@ endif (UNIX) # -------------------------------- if (WIN32) - set ( PACKAGE_FILENAME "${PACKAGE_NAME}-${PACKAGE_VERSION}-windows-${PACKAGE_PLATFORM}" ) + set ( PACKAGE_FILENAME "${PACKAGE_NAME}_${PACKAGE_VERSION}-windows-${PACKAGE_PLATFORM}" ) add_custom_target(package COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_FILENAME}" From 4a64da310b67d111224b07a8ecc7cab1e15a788e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 12:23:53 +0100 Subject: [PATCH 130/404] core/string.h: move base58 functions to crypto/base58.h --- src/core/string.cpp | 13 +------------ src/core/string.h | 1 - src/crypto/base58.cpp | 17 +++++++++++++++++ src/crypto/base58.h | 4 ++++ src/key_search.cpp | 1 + 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/core/string.cpp b/src/core/string.cpp index 477311c..f9f0da6 100644 --- a/src/core/string.cpp +++ b/src/core/string.cpp @@ -24,6 +24,7 @@ #include #include #include +#include "../crypto/base58.h" #include "string.h" namespace eoskeygen { @@ -88,18 +89,6 @@ std::string& trim(std::string& str) { return ltrim(rtrim(str)); } -static bool _is_base58(char ch) { - static std::string alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; - return alphabet.find(ch) != std::string::npos; -} - -std::string& base58_strip(std::string &str) { - str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) - { return !_is_base58(ch); } - ), str.end()); - return str; -} - strlist_t& base58_strip(strlist_t& list) { std::transform(list.begin(), list.end(), list.begin(), [](std::string& str){ return base58_strip(str); }); diff --git a/src/core/string.h b/src/core/string.h index 2548625..1662c7b 100644 --- a/src/core/string.h +++ b/src/core/string.h @@ -43,7 +43,6 @@ std::string& rtrim(std::string& str); std::string& ltrim(std::string& str); std::string& trim(std::string& str); -std::string& base58_strip(std::string &str); strlist_t& base58_strip(strlist_t& list); strlist_t l33twords(std::string str); diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp index ad00911..628e738 100644 --- a/src/crypto/base58.cpp +++ b/src/crypto/base58.cpp @@ -24,6 +24,7 @@ * * Based on code from https://github.com/bitcoin/bitcoin/blob/f1e2f2a85962c1664e4e55471061af0eaa798d40/src/base58.cpp */ +#include #include #include #include "base58.h" @@ -83,4 +84,20 @@ std::string base58_encode(const std::vector& vch) { return base58_encode(vch.data(), vch.data() + vch.size()); } +bool is_base58(char ch) { + for(unsigned int i=0; i < sizeof(charmap); i++) { + if (ch == charmap[i]) { + return true; + } + } + return false; +} + +std::string& base58_strip(std::string &str) { + str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) + { return is_base58(ch) == false; } + ), str.end()); + return str; +} + } // namespace eoskeygen diff --git a/src/crypto/base58.h b/src/crypto/base58.h index 656969e..2de18ef 100644 --- a/src/crypto/base58.h +++ b/src/crypto/base58.h @@ -33,6 +33,10 @@ std::string base58_encode(const std::string& str); std::string base58_encode(const std::vector& vch); std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend); +bool is_base58(char ch); + +std::string& base58_strip(std::string& str); + } //namespace eoskeygen #endif /* EOSIOKEYGEN_CRYPTO_BASE58_H */ diff --git a/src/key_search.cpp b/src/key_search.cpp index a67209a..48e0567 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -23,6 +23,7 @@ */ #include #include "crypto/ec.h" +#include "crypto/base58.h" #include "key_search_helpers.h" #include "key_search.h" From dcde774eacf859bccbd6c6c2e719a36cee867447 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:07:03 +0100 Subject: [PATCH 131/404] crypto/base58: adding is_base58() string version. --- src/crypto/base58.cpp | 10 ++++++++++ src/crypto/base58.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp index 628e738..a1d112f 100644 --- a/src/crypto/base58.cpp +++ b/src/crypto/base58.cpp @@ -93,6 +93,16 @@ bool is_base58(char ch) { return false; } +size_t is_base58(const std::string& str) { + + auto p = std::find_if_not(str.begin(), str.end(), static_cast(is_base58)); + + if (p == str.end()) { + return std::string::npos; + } + return p - str.begin(); +} + std::string& base58_strip(std::string &str) { str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) { return is_base58(ch) == false; } diff --git a/src/crypto/base58.h b/src/crypto/base58.h index 2de18ef..4d52f31 100644 --- a/src/crypto/base58.h +++ b/src/crypto/base58.h @@ -35,6 +35,10 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend bool is_base58(char ch); +// Returns std::string::npos if the string contains only base58 characters +// Otherwise the position of the first non base58 character is returned. +size_t is_base58(const std::string& str); + std::string& base58_strip(std::string& str); } //namespace eoskeygen From 64f9026f96f3927e40e5b8646530e78e976c6704 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:09:16 +0100 Subject: [PATCH 132/404] main.cpp: validate word list for non base58 characters. --- src/main.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9d98ede..d0fc67a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,6 +30,7 @@ #include "core/file.h" #include "core/dictionary.h" #include "core/string.h" +#include "crypto/base58.h" #include "crypto/ec.h" #include "crypto/WIF.h" #include "console.h" @@ -43,12 +44,23 @@ bool option_l33t = false; int option_num_threads = std::thread::hardware_concurrency(); #endif /* HAVE_THREADS */ -void cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { +int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { eoskeygen::KeySearch ks; ks.addDictionary(dict); + for(auto it = words.begin(); it != words.end(); it++) { + size_t p = eoskeygen::is_base58(*it); + std::cout << *it << std::endl; + if (p != std::string::npos) { + std::cerr << "The word '" + << *it << "' contains an invalid non-base58 character '" + << (*it)[p] << "'" << std::endl; + return 1; + } + } + if (option_l33t) { for(std::size_t i = 0; i < words.size(); i++) { ks.addList(eoskeygen::l33twords(words[i])); @@ -69,6 +81,8 @@ void cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& << std::endl; ks.find(count); + + return 0; } void usage(const char *name) { @@ -255,7 +269,7 @@ int main(int argc, char **argv) { return 1; } - cmd_search(words, dict, count); + return cmd_search(words, dict, count); } // Benchmark else if (!strcmp(argv[p], "benchmark")) { From a9f153212bcd67d01de5ec0ce26464c8de7ae44b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:09:41 +0100 Subject: [PATCH 133/404] key_search.cpp: in addWord() do not apply base58_strip(). client code should validate it. --- src/key_search.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/key_search.cpp b/src/key_search.cpp index 48e0567..7c99a94 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -23,7 +23,6 @@ */ #include #include "crypto/ec.h" -#include "crypto/base58.h" #include "key_search_helpers.h" #include "key_search.h" @@ -32,7 +31,6 @@ namespace eoskeygen { void KeySearch::addWord(const std::string& str) { std::string tmp = str; - base58_strip(tmp); strtolower(tmp); m_words.push_back(tmp); } From 3505af5c1f6ae8a32714d4d2fb50614763f00e70 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:13:20 +0100 Subject: [PATCH 134/404] core/dictionary.h: remove commented out code --- src/core/dictionary.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/dictionary.h b/src/core/dictionary.h index 463844d..f3cbe60 100644 --- a/src/core/dictionary.h +++ b/src/core/dictionary.h @@ -34,8 +34,6 @@ namespace eoskeygen { class Dictionary { public : - //typedef std::map< std::string, std::vector > search_result_t; - // index = position in the search string. // value = length of the word from this position. typedef std::map< size_t, size_t > search_result_t; From fd914196422d7afd68d89f46830d80bf73818d2f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:23:38 +0100 Subject: [PATCH 135/404] core/dictionary.h: Documentation --- src/core/dictionary.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/dictionary.h b/src/core/dictionary.h index f3cbe60..903b3a5 100644 --- a/src/core/dictionary.h +++ b/src/core/dictionary.h @@ -34,7 +34,9 @@ namespace eoskeygen { class Dictionary { public : - // index = position in the search string. + // Map that contains position and length for substrings. + // + // key = position in the search string. // value = length of the word from this position. typedef std::map< size_t, size_t > search_result_t; @@ -55,8 +57,8 @@ public : bool contains(const std::string& word) const; // Searches the subject for words defined in the dictionary. - // Returns a map with the word as key and a vector - // of each position the word was found. + // Returns a search_result_t with the words found in subject. + // See search_result_t for more details. search_result_t search(const std::string& subject) const; protected : From e099ba1ed322c3cd138e21edcaa45f941d38b5f9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:43:30 +0100 Subject: [PATCH 136/404] README.md: adding some shields. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 67246fd..024f535 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ ![](https://github.com/eosswedenorg/eosio-keygen/workflows/CI/badge.svg) +[![GitHub release](https://img.shields.io/github/v/release/eosswedenorg/eosio-keygen?include_prereleases)](https://github.com/eosswedenorg/eosio-keygen/releases/latest) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) # EOSIO Keygen From 787c5e4bf596ede0158250e88269bbcf3be0d7f5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 16:21:18 +0100 Subject: [PATCH 137/404] CMake: set minimum version to 3.15 (this version support cmake --install) --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2636d67..e4b5bdc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.4) +cmake_minimum_required(VERSION 3.15) # Project name and version project(eosio-keygen VERSION 1.0) From 062ce457980a92896143304bc687c12e5cc16bd0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 16:22:05 +0100 Subject: [PATCH 138/404] README.md: document cmake version and custom apt for ubuntu 16.04 and 18.04 --- README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 024f535..9ca418e 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,22 @@ You will need `openssl` development files (version 1.1 or later) to compile and #### Dependencies +This project uses CMake version 3.15 to build the source code. + **Ubuntu:** ```sh $ apt-get install gcc g++ cmake libssl-dev ``` + +On ubuntu 16.04 and 18.04 you most likley will get `CMake 3.15 or higher is required. You are running version ` +You can obtain a newer version from [kitware](https://apt.kitware.com): + +```sh +$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - +$ sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ `lsb_release -cs` main" +$ sudo apt-get install cmake +``` + **For other linux distributions:** Consult the manual for how to get these installed. @@ -50,7 +62,7 @@ $ cmake .. && make #### Dependencies -Download and install `cmake` from [cmake.org](https://cmake.org) and download +Download and install `cmake` version `3.15` or newer from [cmake.org](https://cmake.org) and download [openssl](https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip) unpack `openssl-1.1.1e-dev.zip` somewhere on the filesystem. From 7a95dd035ee5ea7f0d73d68c113a5dd728c4fec7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 18:12:35 +0100 Subject: [PATCH 139/404] remove scripts/generate_deb.sh.in and implement in CMakeModules/package.cmake instead. --- CMakeModules/package.cmake | 31 +++++++++++++++++--- debian_control.in | 9 ++++++ scripts/generate_deb.sh.in | 58 -------------------------------------- 3 files changed, 36 insertions(+), 62 deletions(-) create mode 100644 debian_control.in delete mode 100644 scripts/generate_deb.sh.in diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index 4120c52..f2de17d 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -18,11 +18,34 @@ endif() # -------------------------------- if (UNIX) # Only include in bash environments. - # Hack to set the right permissions :) - configure_file(scripts/generate_deb.sh.in ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh @ONLY) - file(COPY ${PROJECT_BINARY_DIR}/tmp/generate_deb.sh DESTINATION ${PROJECT_BINARY_DIR} - FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE + + execute_process( + COMMAND lsb_release -rs + OUTPUT_VARIABLE UBUNTU_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE ) + + # Debian uses different names for 32 and 64 bit. + if (PACKAGE_PLATFORM EQUAL "x86") + set( PACKAGE_DEB_PLATFORM "i386" ) + else() + set( PACKAGE_DEB_PLATFORM "amd64" ) + endif() + + set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") + set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) + set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}-ubuntu-${UBUNTU_VERSION}_${PACKAGE_DEB_PLATFORM}.deb ) + set( DEB_ROOT "debroot" ) + + configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) + + add_custom_target(package_deb + COMMAND ${CMAKE_COMMAND} --install . --prefix "${DEB_ROOT}${CMAKE_INSTALL_PREFIX}" + COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null + WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + ) + + add_dependencies(package_deb ${PROGRAM_EXE}) endif (UNIX) # -------------------------------- diff --git a/debian_control.in b/debian_control.in new file mode 100644 index 0000000..e8f3f23 --- /dev/null +++ b/debian_control.in @@ -0,0 +1,9 @@ +Package: @PACKAGE_NAME@ +Version: @PACKAGE_DEB_VERSION@ +Description: @PACKAGE_DESCRIPTION@ +Section: misc +Priority: optional +Architecture: @PACKAGE_DEB_PLATFORM@ +Homepage: @PACKAGE_HOMEPAGE_URL@ +Maintainer: @PACKAGE_MAINTAINER@ +Depends: libssl1.1, libc6 diff --git a/scripts/generate_deb.sh.in b/scripts/generate_deb.sh.in deleted file mode 100644 index c124b72..0000000 --- a/scripts/generate_deb.sh.in +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env bash - -BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -PACKAGE_NAME="@PACKAGE_NAME@" -PACKAGE_VERSION="@PACKAGE_VERSION@" -PACKAGE_PREFIX=$(echo "@CMAKE_INSTALL_PREFIX@" | sed -E 's~^/~~') -PACKAGE_BINDIR="@CMAKE_INSTALL_BINDIR@" -PACKAGE_SHAREDIR="@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" -PACKAGE_MANDIR="@CMAKE_INSTALL_MANDIR@" -PACKAGE_TMPDIR="tmp/debroot" - -if [[ -f /etc/upstream-release/lsb-release ]]; then - source /etc/upstream-release/lsb-release -elif [[ -f /etc/lsb-release ]]; then - source /etc/lsb-release -else - echo "ERROR: could not determine debian release." - exit 1 -fi - -DISTRIB_ID=$(echo $DISTRIB_ID | tr '[:upper:]' '[:lower:]') - -# Default to 1 if no release is set. -if [[ -z $RELEASE ]]; then - RELEASE="1" -fi - -PACKAGE_FULLNAME="${PACKAGE_NAME}_${PACKAGE_VERSION}-${RELEASE}-${DISTRIB_ID}-${DISTRIB_RELEASE}_amd64" - -rm -fr ${BASE_DIR}/${PACKAGE_TMPDIR} - -# Create debian files. -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN -echo "Package: ${PACKAGE_NAME} -Version: ${PACKAGE_VERSION}-${RELEASE} -Section: misc -Priority: optional -Architecture: amd64 -Homepage: @PACKAGE_HOMEPAGE_URL@ -Maintainer: @PACKAGE_MAINTAINER@ -Description: @PACKAGE_DESCRIPTION@ -Depends: libssl1.1, libc6" &> ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control - -cat ${BASE_DIR}/${PACKAGE_TMPDIR}/DEBIAN/control - -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR} -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} -mkdir -p ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} - -cp ${BASE_DIR}/${PACKAGE_NAME} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_BINDIR}/${PACKAGE_NAME} -cp -r ${BASE_DIR}/man1 ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_MANDIR} - -for file in README.md LICENSE LICENSE.bitcoin ; do - cp ${BASE_DIR}/../${file} ${BASE_DIR}/${PACKAGE_TMPDIR}/${PACKAGE_PREFIX}/${PACKAGE_SHAREDIR} -done - -fakeroot dpkg-deb --build ${BASE_DIR}/${PACKAGE_TMPDIR} ${BASE_DIR}/${PACKAGE_FULLNAME}.deb From c59190b7ea90710e349f9053072e2d0248a8ee7e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 18:13:06 +0100 Subject: [PATCH 140/404] .github/workflows/package.yml: update command for ubuntu package. --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 4b90d50..497fcc4 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -21,7 +21,7 @@ jobs: - name: Package id: package run: | - ./build/generate_deb.sh + cmake --build . --config Release --target package_deb FILE=$(ls build/*.deb | head -1) echo "::set-output name=filename::$FILE" echo "::set-output name=name::$(basename $FILE)" From d642bfe89fe39a00f79b83fe8a6b043c7e810d62 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 27 Feb 2020 10:54:02 +0100 Subject: [PATCH 141/404] .github/workflows/package.yml: fixing ubuntu package command. --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 497fcc4..06e8de3 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -21,7 +21,7 @@ jobs: - name: Package id: package run: | - cmake --build . --config Release --target package_deb + cmake --build build --config Release --target package_deb FILE=$(ls build/*.deb | head -1) echo "::set-output name=filename::$FILE" echo "::set-output name=name::$(basename $FILE)" From 9e9b3b7309e164f825ba91a13a7ff86ffc03f620 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 27 Feb 2020 11:03:50 +0100 Subject: [PATCH 142/404] Version 1.0.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e4b5bdc..7965612 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.15) # Project name and version -project(eosio-keygen VERSION 1.0) +project(eosio-keygen VERSION 1.0.1) set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From de6b62a5bdc866127a06f29c749fc93f60fc1c5b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 28 Feb 2020 12:07:49 +0100 Subject: [PATCH 143/404] README.md: Document manual install of cmake on linux. --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9ca418e..0bb0db0 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,17 @@ $ sudo apt-get install cmake Consult the manual for how to get these installed. -**MacOS:** +**Linux: CMake manual install:** + +If your package manager don't provide a sufficiently new version of cmake, you can install it manually with this command: + +```sh +$ wget -O cmake.sh https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.sh && sh ./cmake.sh --prefix=/usr/local --skip-license +``` + +Other methods is documanted at https://cmake.org/download + +**MacOS** You must have a compiler installed. This project is known to build with `Xcode 11.0` but other versions should work. From 3f1e6576497d3f74f639dc0d0c0e28683282dd68 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 28 Feb 2020 12:21:37 +0100 Subject: [PATCH 144/404] README.md: prefix linux sections with "linux" --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0bb0db0..7fdc4b7 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ You will need `openssl` development files (version 1.1 or later) to compile and This project uses CMake version 3.15 to build the source code. -**Ubuntu:** +**Linux: Ubuntu** ```sh $ apt-get install gcc g++ cmake libssl-dev ``` @@ -31,11 +31,11 @@ $ sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ `lsb_release -cs` $ sudo apt-get install cmake ``` -**For other linux distributions:** +**Linux: Other** Consult the manual for how to get these installed. -**Linux: CMake manual install:** +**Linux: CMake manual install** If your package manager don't provide a sufficiently new version of cmake, you can install it manually with this command: From aa7b49437a36091b54277457a852f55ad3002946 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 28 Feb 2020 12:38:48 +0100 Subject: [PATCH 145/404] README.md: Document manual install of cmake for macos --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7fdc4b7..ba4ad90 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,8 @@ You need to have opessl and cmake installed also, this can be done with this `br $ brew install openssl cmake ``` +If you need a newer version of cmake, you can download the official `.dmg` file: [cmake-3.15.7-Darwin-x86_64.dmg](https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.dmg). or see https://cmake.org/download for other versions. + #### Build Run `./build.sh` to trigger cmake. From 48f89105c6001c56d1714d3d769c6737ffcf3c6a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 28 Feb 2020 12:40:51 +0100 Subject: [PATCH 146/404] README.md: Minor fixes. --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ba4ad90..362d4d8 100644 --- a/README.md +++ b/README.md @@ -9,15 +9,13 @@ This program generates public and private keypair for [EOS](https://eos.io/) ## Compile -You will need `openssl` development files (version 1.1 or later) to compile and `cmake` to compile this project. +You will need `openssl` development files (version 1.1 or later) to compile and `cmake 3.15` or later to compile this project. ### Linux/MacOS #### Dependencies -This project uses CMake version 3.15 to build the source code. - -**Linux: Ubuntu** +**Linux: Ubuntu 16.04/18.04** ```sh $ apt-get install gcc g++ cmake libssl-dev ``` From bde7afbc4ef0c36cafeb4fc64d5b52b5eeb4f82e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 28 Feb 2020 12:55:11 +0100 Subject: [PATCH 147/404] README.md: more restructure of the compile steps. --- README.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 362d4d8..069af15 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,20 @@ You will need `openssl` development files (version 1.1 or later) to compile and #### Dependencies -**Linux: Ubuntu 16.04/18.04** +#### Linux + +**Ubuntu:** ```sh -$ apt-get install gcc g++ cmake libssl-dev +$ apt-get install gcc g++ libssl-dev ``` -On ubuntu 16.04 and 18.04 you most likley will get `CMake 3.15 or higher is required. You are running version ` -You can obtain a newer version from [kitware](https://apt.kitware.com): +**Other**: Consult the manual for you package manager. + +**CMake** + +If your package manager don't provide a sufficiently new version of cmake, you can install it with these commands: + +Ubuntu 16.04/18.04 - [kitware](https://apt.kitware.com) ppa: ```sh $ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add - @@ -29,21 +36,15 @@ $ sudo apt-add-repository "deb https://apt.kitware.com/ubuntu/ `lsb_release -cs` $ sudo apt-get install cmake ``` -**Linux: Other** - -Consult the manual for how to get these installed. - -**Linux: CMake manual install** - -If your package manager don't provide a sufficiently new version of cmake, you can install it manually with this command: +shell script: ```sh -$ wget -O cmake.sh https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.sh && sh ./cmake.sh --prefix=/usr/local --skip-license +$ wget -O cmake.sh https://github.com/Kitware/CMake/releases/download/v3.15.5/cmake-3.15.5-Linux-x86_64.sh && sudo sh ./cmake.sh --prefix=/usr/local --skip-license ``` Other methods is documanted at https://cmake.org/download -**MacOS** +#### MacOS You must have a compiler installed. This project is known to build with `Xcode 11.0` but other versions should work. From f7858cb5bd8a9c40bdf8e29d586d3d8e7ac1e514 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 2 Mar 2020 13:44:18 +0100 Subject: [PATCH 148/404] adding core/isatty --- CMakeLists.txt | 1 + src/core/isatty.cpp | 21 +++++++++++++++++++++ src/core/isatty.h | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 src/core/isatty.cpp create mode 100644 src/core/isatty.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 7965612..2bf1e4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,7 @@ set (PROGRAM_SOURCE src/core/file.cpp src/core/dictionary.cpp src/core/string.cpp + src/core/isatty.cpp src/crypto/base58.cpp src/crypto/WIF.cpp src/console.cpp diff --git a/src/core/isatty.cpp b/src/core/isatty.cpp new file mode 100644 index 0000000..e32fe19 --- /dev/null +++ b/src/core/isatty.cpp @@ -0,0 +1,21 @@ +#if _WIN32 +#include +#else +#include +#define _isatty isatty +#define _fileno fileno +#endif +#include "isatty.h" + +namespace eoskeygen { + +bool isatty(int fd) { + return ::_isatty(fd); +} + +bool isatty(FILE* fd) { + // fileno() segfaults if fd is null. + return fd ? isatty(_fileno(fd)) : false; +} + +} // namespace eoskeygen diff --git a/src/core/isatty.h b/src/core/isatty.h new file mode 100644 index 0000000..0cf40c9 --- /dev/null +++ b/src/core/isatty.h @@ -0,0 +1,37 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_CORE_ISATTY_H +#define EOSIOKEYGEN_CORE_ISATTY_H + +#include + +namespace eoskeygen { + +bool isatty(int fd); + +bool isatty(FILE* fd); + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_CORE_ISATTY_H */ From f676f2e7ca2fcce76ac7b50fed2b92ad3004da19 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 2 Mar 2020 14:36:41 +0100 Subject: [PATCH 149/404] console: add isColorsSupported() --- src/console.cpp | 18 ++++++++++++++++++ src/console.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/src/console.cpp b/src/console.cpp index c685541..99472f3 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -21,10 +21,28 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#include +#include "core/isatty.h" #include "console.h" namespace eoskeygen { namespace console { bool disable_color = false; +FILE* _getFileFromStream(const std::ostream& os) { + + if (&os == &std::cout) { + return stdout; + } else if (&os == &std::cerr) { + return stderr; + } + return NULL; +} + +bool isColorsSupported(const std::ostream& os) { + + FILE* fd = _getFileFromStream(os); + return disable_color == false && isatty(fd); +} + } } // namespace eoskeygen::console diff --git a/src/console.h b/src/console.h index bd7f0fd..65da9aa 100644 --- a/src/console.h +++ b/src/console.h @@ -63,6 +63,8 @@ namespace console { italic }; + bool isColorsSupported(const std::ostream& os); + // Resets all colors/attributes std::ostream& reset(std::ostream& os); From f630a8344cd13a31d59ee71c693f5a239f096d35 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 2 Mar 2020 14:38:08 +0100 Subject: [PATCH 150/404] console_ansi.cpp: use isColorsSupported() instead of disable_color --- src/console_ansi.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/console_ansi.cpp b/src/console_ansi.cpp index 0398d84..2d34980 100644 --- a/src/console_ansi.cpp +++ b/src/console_ansi.cpp @@ -30,7 +30,7 @@ namespace console { std::ostream& reset(std::ostream& os) { - if (disable_color) { + if (!isColorsSupported(os)) { return os; } return os << "\033[0m"; @@ -42,7 +42,7 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { int attr; int code; - if (disable_color) { + if (!isColorsSupported(os)) { return os; } From 26b96add301b3b3c13e48b6ce8ca24d46b00d5f2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 2 Mar 2020 14:38:25 +0100 Subject: [PATCH 151/404] console_win32.cpp: use isColorsSupported() instead of disable_color --- src/console_win32.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/console_win32.cpp b/src/console_win32.cpp index 24e38fa..af99a2a 100644 --- a/src/console_win32.cpp +++ b/src/console_win32.cpp @@ -50,7 +50,7 @@ namespace console { std::ostream& reset(std::ostream& os) { - if (disable_color == false) { + if (isColorsSupported(os)) { ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FG_DEFAULT); } return os; @@ -61,7 +61,7 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { int code; - if (disable_color == false) { + if (isColorsSupported(os)) { switch(obj._color) { case black : code = FG_BLACK; break; From 53fcc9df534f6fd60e2a58f4745db4094c99f0c0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 2 Mar 2020 14:44:53 +0100 Subject: [PATCH 152/404] src/console_win32.cpp: define _getNativeHandle() and use that instead of hard coded stdout. --- src/console_win32.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/console_win32.cpp b/src/console_win32.cpp index af99a2a..d3b1614 100644 --- a/src/console_win32.cpp +++ b/src/console_win32.cpp @@ -48,10 +48,20 @@ namespace eoskeygen { namespace console { +HANDLE _getNativeHandle(const std::ostream& os) { + + if (&os == &std::cout) { + return ::GetStdHandle(STD_OUTPUT_HANDLE); + } else if (&os == &std::cerr) { + return ::GetStdHandle(STD_ERROR_HANDLE); + } + return NULL; +} + std::ostream& reset(std::ostream& os) { if (isColorsSupported(os)) { - ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), FG_DEFAULT); + ::SetConsoleTextAttribute(_getNativeHandle(os), FG_DEFAULT); } return os; } @@ -84,7 +94,7 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) { code = FG_DEFAULT; } - ::SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), code); + ::SetConsoleTextAttribute(_getNativeHandle(os), code); } // WinAPI does not support text attributes in the console. From f0d3f355cc0be4b25fa8bf945ad947a4a366aded Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 3 Mar 2020 11:54:14 +0100 Subject: [PATCH 153/404] Version 1.0.2 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2bf1e4b..91aac5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.15) # Project name and version -project(eosio-keygen VERSION 1.0.1) +project(eosio-keygen VERSION 1.0.2) set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From dbf4e56e52c05575e9b4e18cd5d2883cfd876bf0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 4 Mar 2020 15:53:13 +0100 Subject: [PATCH 154/404] config.h.in: prefix header guard. --- src/config.h.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config.h.in b/src/config.h.in index 7ad1d41..ff5de16 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef CONFIG_H -#define CONFIG_H +#ifndef EOSIOKEYGEN_CONFIG_H +#define EOSIOKEYGEN_CONFIG_H #define PROGRAM_NAME "@PROJECT_NAME@" #define PROGRAM_VERSION "@PROJECT_VERSION@" @@ -31,4 +31,4 @@ #define CONFIG_SHARE_PATH "@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" #define CONFIG_SHARE_FULL_PATH "@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@" -#endif /* CONFIG_H */ +#endif /* EOSIOKEYGEN_CONFIG_H */ From 840c6ae69acd4ff2c0df07c87bb0fb8bf4cb943e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 11 Mar 2020 00:41:43 +0100 Subject: [PATCH 155/404] main.cpp: Remove unwanted output. --- src/main.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index d0fc67a..7fb38ee 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -52,7 +52,6 @@ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& d for(auto it = words.begin(); it != words.end(); it++) { size_t p = eoskeygen::is_base58(*it); - std::cout << *it << std::endl; if (p != std::string::npos) { std::cerr << "The word '" << *it << "' contains an invalid non-base58 character '" From 7c2629427dc9f27257fef75b0b793c9574490752 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 11 Mar 2020 11:10:14 +0100 Subject: [PATCH 156/404] gitignore: ignore .vscode directory. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 567609b..6f31401 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ build/ +.vscode/ From b52f61d319cc8e9a34d6e30e9faa2bd6bb750d4a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 11 Mar 2020 12:00:16 +0100 Subject: [PATCH 157/404] cmake: split CMakeLists into multiple directories. --- CMakeLists.txt | 107 ++------------------- cli/CMakeLists.txt | 83 ++++++++++++++++ debian_control.in => cli/debian_control.in | 0 {src => cli/src}/benchmark.cpp | 0 {src => cli/src}/benchmark.h | 0 {src => cli/src}/config.h.in | 0 {src => cli/src}/console.cpp | 0 {src => cli/src}/console.h | 0 {src => cli/src}/console_ansi.cpp | 0 {src => cli/src}/console_win32.cpp | 0 {src => cli/src}/core/dictionary.cpp | 0 {src => cli/src}/core/dictionary.h | 0 {src => cli/src}/core/file.cpp | 0 {src => cli/src}/core/file.h | 0 {src => cli/src}/core/isatty.cpp | 0 {src => cli/src}/core/isatty.h | 0 {src => cli/src}/core/string.cpp | 0 {src => cli/src}/core/string.h | 0 {src => cli/src}/crypto/WIF.cpp | 0 {src => cli/src}/crypto/WIF.h | 0 {src => cli/src}/crypto/base58.cpp | 0 {src => cli/src}/crypto/base58.h | 0 {src => cli/src}/crypto/checksum.h | 0 {src => cli/src}/crypto/ec.h | 0 {src => cli/src}/crypto/hash.h | 0 {src => cli/src}/crypto/openssl/ec.cpp | 0 {src => cli/src}/crypto/openssl/hash.cpp | 0 {src => cli/src}/crypto/types.h | 0 {src => cli/src}/key_search.cpp | 0 {src => cli/src}/key_search.h | 0 {src => cli/src}/key_search_helpers.cpp | 0 {src => cli/src}/key_search_helpers.h | 0 {src => cli/src}/key_search_mt.cpp | 0 {src => cli/src}/main.cpp | 0 docs/CMakeLists.txt | 7 ++ 35 files changed, 98 insertions(+), 99 deletions(-) create mode 100644 cli/CMakeLists.txt rename debian_control.in => cli/debian_control.in (100%) rename {src => cli/src}/benchmark.cpp (100%) rename {src => cli/src}/benchmark.h (100%) rename {src => cli/src}/config.h.in (100%) rename {src => cli/src}/console.cpp (100%) rename {src => cli/src}/console.h (100%) rename {src => cli/src}/console_ansi.cpp (100%) rename {src => cli/src}/console_win32.cpp (100%) rename {src => cli/src}/core/dictionary.cpp (100%) rename {src => cli/src}/core/dictionary.h (100%) rename {src => cli/src}/core/file.cpp (100%) rename {src => cli/src}/core/file.h (100%) rename {src => cli/src}/core/isatty.cpp (100%) rename {src => cli/src}/core/isatty.h (100%) rename {src => cli/src}/core/string.cpp (100%) rename {src => cli/src}/core/string.h (100%) rename {src => cli/src}/crypto/WIF.cpp (100%) rename {src => cli/src}/crypto/WIF.h (100%) rename {src => cli/src}/crypto/base58.cpp (100%) rename {src => cli/src}/crypto/base58.h (100%) rename {src => cli/src}/crypto/checksum.h (100%) rename {src => cli/src}/crypto/ec.h (100%) rename {src => cli/src}/crypto/hash.h (100%) rename {src => cli/src}/crypto/openssl/ec.cpp (100%) rename {src => cli/src}/crypto/openssl/hash.cpp (100%) rename {src => cli/src}/crypto/types.h (100%) rename {src => cli/src}/key_search.cpp (100%) rename {src => cli/src}/key_search.h (100%) rename {src => cli/src}/key_search_helpers.cpp (100%) rename {src => cli/src}/key_search_helpers.h (100%) rename {src => cli/src}/key_search_mt.cpp (100%) rename {src => cli/src}/main.cpp (100%) create mode 100644 docs/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 91aac5d..2066de2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,33 +28,6 @@ if (WIN32) set( CMAKE_INSTALL_MANDIR "." ) endif (WIN32) -# -------------------------------- -# Program -# -------------------------------- - -set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) - -set (PROGRAM_SOURCE - src/core/file.cpp - src/core/dictionary.cpp - src/core/string.cpp - src/core/isatty.cpp - src/crypto/base58.cpp - src/crypto/WIF.cpp - src/console.cpp - src/key_search.cpp - src/key_search_helpers.cpp - src/benchmark.cpp - src/main.cpp -) - -if (WIN32 AND NOT FORCE_ANSI) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) -else() - # *nix should have ansi support. - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) -endif() - # Configure the compiler options set( CMAKE_CXX_STANDARD 11 ) set( CMAKE_CXX_STANDARD_REQUIRED ON ) @@ -66,58 +39,16 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") add_definitions( "-D_CRT_SECURE_NO_WARNINGS=1" ) endif() -# Libraries -find_package(OpenSSL 1.1 REQUIRED) -set (PROGRAM_SOURCE ${PROGRAM_SOURCE} - src/crypto/openssl/ec.cpp - src/crypto/openssl/hash.cpp -) +# -------------------------------- +# Additional project dirs +# -------------------------------- -if (USE_THREADS) - find_package(Threads) - if (Threads_FOUND) - # Add preprocessor flag - add_definitions( "-DHAVE_THREADS=1" ) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) - endif (Threads_FOUND) -endif (USE_THREADS) +add_subdirectory( cli ) +add_subdirectory( docs ) -# Project config file -configure_file(src/config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY) -include_directories(${PROJECT_BINARY_DIR}) - -# Include OpenSSL headers -include_directories( ${OPENSSL_INCLUDE_DIR} ) - -add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) - -target_link_libraries( ${PROGRAM_EXE} - PUBLIC - ${OPENSSL_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) - -install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - -# Win32 specific. -if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64) - else() - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1) - endif() - set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll ) - - # Need to copy libcrypto dll to binary folder. - add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${OPENSSL_LIBCRYPTO_DLL} - ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} - ) - - # We also need to copy libcrypto dll during install - install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif (WIN32) +if (UNIX AND EXTRAS) + add_subdirectory( extras ) +endif() # -------------------------------- # Additional install files @@ -125,25 +56,3 @@ endif (WIN32) install(FILES README.md LICENSE LICENSE.bitcoin DESTINATION ${CMAKE_INSTALL_SHAREDIR}) - -configure_file( docs/eosio-keygen.1.in - ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) - -if (UNIX) -install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 - DESTINATION ${CMAKE_INSTALL_MANDIR}) -endif (UNIX) - -# -------------------------------- -# Extras -# -------------------------------- - -if (UNIX AND EXTRAS) - add_subdirectory(extras) -endif() - -# -------------------------------- -# Misc -# -------------------------------- - -include( package ) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt new file mode 100644 index 0000000..9d9a555 --- /dev/null +++ b/cli/CMakeLists.txt @@ -0,0 +1,83 @@ +cmake_minimum_required(VERSION 3.15) + +# -------------------------------- +# Program +# -------------------------------- + +set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) + +set (PROGRAM_SOURCE + src/core/file.cpp + src/core/dictionary.cpp + src/core/string.cpp + src/core/isatty.cpp + src/crypto/base58.cpp + src/crypto/WIF.cpp + src/console.cpp + src/key_search.cpp + src/key_search_helpers.cpp + src/benchmark.cpp + src/main.cpp +) + +if (WIN32 AND NOT FORCE_ANSI) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) +else() + # *nix should have ansi support. + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) +endif() + +# Libraries +find_package(OpenSSL 1.1 REQUIRED) +set (PROGRAM_SOURCE ${PROGRAM_SOURCE} + src/crypto/openssl/ec.cpp + src/crypto/openssl/hash.cpp +) + +if (USE_THREADS) + find_package(Threads) + if (Threads_FOUND) + # Add preprocessor flag + add_definitions( "-DHAVE_THREADS=1" ) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) + endif (Threads_FOUND) +endif (USE_THREADS) + +# Project config file +configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) +include_directories(${PROJECT_BINARY_DIR}) + +# Include OpenSSL headers +include_directories( ${OPENSSL_INCLUDE_DIR} ) + +add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) + +target_link_libraries( ${PROGRAM_EXE} + PUBLIC + ${OPENSSL_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) + +install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +# Win32 specific. +if (WIN32) + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64) + else() + set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1) + endif() + set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll ) + + # Need to copy libcrypto dll to binary folder. + add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${OPENSSL_LIBCRYPTO_DLL} + ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} + ) + + # We also need to copy libcrypto dll during install + install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif (WIN32) + +include( package ) diff --git a/debian_control.in b/cli/debian_control.in similarity index 100% rename from debian_control.in rename to cli/debian_control.in diff --git a/src/benchmark.cpp b/cli/src/benchmark.cpp similarity index 100% rename from src/benchmark.cpp rename to cli/src/benchmark.cpp diff --git a/src/benchmark.h b/cli/src/benchmark.h similarity index 100% rename from src/benchmark.h rename to cli/src/benchmark.h diff --git a/src/config.h.in b/cli/src/config.h.in similarity index 100% rename from src/config.h.in rename to cli/src/config.h.in diff --git a/src/console.cpp b/cli/src/console.cpp similarity index 100% rename from src/console.cpp rename to cli/src/console.cpp diff --git a/src/console.h b/cli/src/console.h similarity index 100% rename from src/console.h rename to cli/src/console.h diff --git a/src/console_ansi.cpp b/cli/src/console_ansi.cpp similarity index 100% rename from src/console_ansi.cpp rename to cli/src/console_ansi.cpp diff --git a/src/console_win32.cpp b/cli/src/console_win32.cpp similarity index 100% rename from src/console_win32.cpp rename to cli/src/console_win32.cpp diff --git a/src/core/dictionary.cpp b/cli/src/core/dictionary.cpp similarity index 100% rename from src/core/dictionary.cpp rename to cli/src/core/dictionary.cpp diff --git a/src/core/dictionary.h b/cli/src/core/dictionary.h similarity index 100% rename from src/core/dictionary.h rename to cli/src/core/dictionary.h diff --git a/src/core/file.cpp b/cli/src/core/file.cpp similarity index 100% rename from src/core/file.cpp rename to cli/src/core/file.cpp diff --git a/src/core/file.h b/cli/src/core/file.h similarity index 100% rename from src/core/file.h rename to cli/src/core/file.h diff --git a/src/core/isatty.cpp b/cli/src/core/isatty.cpp similarity index 100% rename from src/core/isatty.cpp rename to cli/src/core/isatty.cpp diff --git a/src/core/isatty.h b/cli/src/core/isatty.h similarity index 100% rename from src/core/isatty.h rename to cli/src/core/isatty.h diff --git a/src/core/string.cpp b/cli/src/core/string.cpp similarity index 100% rename from src/core/string.cpp rename to cli/src/core/string.cpp diff --git a/src/core/string.h b/cli/src/core/string.h similarity index 100% rename from src/core/string.h rename to cli/src/core/string.h diff --git a/src/crypto/WIF.cpp b/cli/src/crypto/WIF.cpp similarity index 100% rename from src/crypto/WIF.cpp rename to cli/src/crypto/WIF.cpp diff --git a/src/crypto/WIF.h b/cli/src/crypto/WIF.h similarity index 100% rename from src/crypto/WIF.h rename to cli/src/crypto/WIF.h diff --git a/src/crypto/base58.cpp b/cli/src/crypto/base58.cpp similarity index 100% rename from src/crypto/base58.cpp rename to cli/src/crypto/base58.cpp diff --git a/src/crypto/base58.h b/cli/src/crypto/base58.h similarity index 100% rename from src/crypto/base58.h rename to cli/src/crypto/base58.h diff --git a/src/crypto/checksum.h b/cli/src/crypto/checksum.h similarity index 100% rename from src/crypto/checksum.h rename to cli/src/crypto/checksum.h diff --git a/src/crypto/ec.h b/cli/src/crypto/ec.h similarity index 100% rename from src/crypto/ec.h rename to cli/src/crypto/ec.h diff --git a/src/crypto/hash.h b/cli/src/crypto/hash.h similarity index 100% rename from src/crypto/hash.h rename to cli/src/crypto/hash.h diff --git a/src/crypto/openssl/ec.cpp b/cli/src/crypto/openssl/ec.cpp similarity index 100% rename from src/crypto/openssl/ec.cpp rename to cli/src/crypto/openssl/ec.cpp diff --git a/src/crypto/openssl/hash.cpp b/cli/src/crypto/openssl/hash.cpp similarity index 100% rename from src/crypto/openssl/hash.cpp rename to cli/src/crypto/openssl/hash.cpp diff --git a/src/crypto/types.h b/cli/src/crypto/types.h similarity index 100% rename from src/crypto/types.h rename to cli/src/crypto/types.h diff --git a/src/key_search.cpp b/cli/src/key_search.cpp similarity index 100% rename from src/key_search.cpp rename to cli/src/key_search.cpp diff --git a/src/key_search.h b/cli/src/key_search.h similarity index 100% rename from src/key_search.h rename to cli/src/key_search.h diff --git a/src/key_search_helpers.cpp b/cli/src/key_search_helpers.cpp similarity index 100% rename from src/key_search_helpers.cpp rename to cli/src/key_search_helpers.cpp diff --git a/src/key_search_helpers.h b/cli/src/key_search_helpers.h similarity index 100% rename from src/key_search_helpers.h rename to cli/src/key_search_helpers.h diff --git a/src/key_search_mt.cpp b/cli/src/key_search_mt.cpp similarity index 100% rename from src/key_search_mt.cpp rename to cli/src/key_search_mt.cpp diff --git a/src/main.cpp b/cli/src/main.cpp similarity index 100% rename from src/main.cpp rename to cli/src/main.cpp diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt new file mode 100644 index 0000000..2ca518c --- /dev/null +++ b/docs/CMakeLists.txt @@ -0,0 +1,7 @@ + +if (UNIX) + configure_file( eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) + + install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 + DESTINATION ${CMAKE_INSTALL_MANDIR}) +endif (UNIX) From 66f6c5a9de5d2ef864130f268f662609814d57f8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 11 Mar 2020 12:09:21 +0100 Subject: [PATCH 158/404] CMakeModules/package.cmake: fixing paths. --- CMakeModules/package.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake index f2de17d..a5ba51f 100644 --- a/CMakeModules/package.cmake +++ b/CMakeModules/package.cmake @@ -35,14 +35,14 @@ if (UNIX) # Only include in bash environments. set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}-ubuntu-${UBUNTU_VERSION}_${PACKAGE_DEB_PLATFORM}.deb ) - set( DEB_ROOT "debroot" ) + set( DEB_ROOT "${CMAKE_CURRENT_BINARY_DIR}/debroot" ) configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) add_custom_target(package_deb COMMAND ${CMAKE_COMMAND} --install . --prefix "${DEB_ROOT}${CMAKE_INSTALL_PREFIX}" COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_dependencies(package_deb ${PROGRAM_EXE}) @@ -58,7 +58,7 @@ if (WIN32) add_custom_target(package COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_FILENAME}" COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_FILENAME}.zip" --format=zip "${PACKAGE_FILENAME}" - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) add_dependencies(package ${PROGRAM_EXE}) From 13e3cde4b73bcdb0c75a56eb5c9158abe4433395 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 11 Mar 2020 13:55:00 +0100 Subject: [PATCH 159/404] CMakeLists.txt: move PROJECT_DESCRIPTION and PROJECT_HOMEPAGE_URL to project() function. --- CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2066de2..7a89d9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,11 @@ cmake_minimum_required(VERSION 3.15) # Project name and version -project(eosio-keygen VERSION 1.0.2) +project(eosio-keygen + VERSION 1.0.2 + DESCRIPTION "Keygenerator for EOSIO" + HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) -set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) -set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) set( PROJECT_MAINTAINER "Henrik Hautakoski ") # Options From 18ccb1f8d2e2eb39b59274b702e10b6904523625 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 12 Mar 2020 21:05:58 +0100 Subject: [PATCH 160/404] src/crypto/openssl/hash.cpp: in sha256() should have out->data as input the second time. --- src/crypto/openssl/hash.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp index 0e26334..424c46a 100644 --- a/src/crypto/openssl/hash.cpp +++ b/src/crypto/openssl/hash.cpp @@ -33,7 +33,7 @@ sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out) { sha256_t* sha256d(const unsigned char *data, std::size_t len, sha256_t* out) { SHA256(data, len, out->data); - return (sha256_t *) SHA256(data, 32, out->data); + return (sha256_t *) SHA256(out->data, 32, out->data); } ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out) { From 13b2ff871ff2c768d1e5053dc2c0f7ffc84c64e2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 12 Mar 2020 21:07:44 +0100 Subject: [PATCH 161/404] Version 1.0.3 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 91aac5d..9f9f88f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.15) # Project name and version -project(eosio-keygen VERSION 1.0.2) +project(eosio-keygen VERSION 1.0.3) set( PROJECT_DESCRIPTION "Keygenerator for EOSIO" ) set( PROJECT_HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From 2aaebdf5e20a7ad969772ea34b6c8dd8525497de Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 13:25:37 +0100 Subject: [PATCH 162/404] remove "extras". it exists in it's own repo now. --- CMakeLists.txt | 6 - extras/CMakeLists.txt | 49 - extras/debian_control.in | 8 - extras/dict.json | 8 - extras/dict/english | 47032 ----------------------------------- extras/dict/swedish | 49697 ------------------------------------- extras/english-custom | 8 - scripts/generate-dict.sh | 15 - scripts/update-dict.sh | 25 - 9 files changed, 96848 deletions(-) delete mode 100644 extras/CMakeLists.txt delete mode 100644 extras/debian_control.in delete mode 100644 extras/dict.json delete mode 100644 extras/dict/english delete mode 100644 extras/dict/swedish delete mode 100644 extras/english-custom delete mode 100755 scripts/generate-dict.sh delete mode 100755 scripts/update-dict.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 71f12b5..9633d16 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,8 +11,6 @@ set( PROJECT_MAINTAINER "Henrik Hautakoski ") # Options option(USE_THREADS "Compile with support for threads (if available)." ON) option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) -option(EXTRAS "Include non essential (extra) files in the build. (only for *nix)" OFF) - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") @@ -47,10 +45,6 @@ endif() add_subdirectory( cli ) add_subdirectory( docs ) -if (UNIX AND EXTRAS) - add_subdirectory( extras ) -endif() - # -------------------------------- # Additional install files # -------------------------------- diff --git a/extras/CMakeLists.txt b/extras/CMakeLists.txt deleted file mode 100644 index 7fa0383..0000000 --- a/extras/CMakeLists.txt +++ /dev/null @@ -1,49 +0,0 @@ -cmake_minimum_required(VERSION 3.4) - -# Project name and version -project(eosio-keygen-extras VERSION 0.1.0) - -# -------------------------------- -# Package info -# -------------------------------- -set( PACKAGE_NAME ${PROJECT_NAME} ) -set( PACKAGE_DESCRIPTION "Extra files for eosio-keygen" ) -set( PACKAGE_VERSION "${PROJECT_VERSION}" ) -set( PACKAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) -set( PACKAGE_MAINTAINER "Henrik Hautakoski ") - -# Debian specific -set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") -set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) -set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}.deb ) - -# -------------------------------- -# Debian package -# -------------------------------- -set( DEB_ROOT "debroot" ) -set( DEB_FULL_ROOT ${CMAKE_CURRENT_BINARY_DIR}/${DEB_ROOT} ) -set( DEB_SHARE_DIR ${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME} ) - -configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) - -add_custom_target(deb_content - COMMAND ${CMAKE_COMMAND} -E copy_directory - dict - ${DEB_FULL_ROOT}/${DEB_SHARE_DIR}/dict - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -) - -add_custom_target(deb_extras - COMMENT "dpkg: ${PROJECT_NAME} (${PACKAGE_DEB_FILENAME})" - COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null - WORKING_DIRECTORY ${PROJECT_BINARY_DIR} - DEPENDS deb_content -) - -# -------------------------------- -# Install target -# -------------------------------- -install( - DIRECTORY dict - DESTINATION ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} -) diff --git a/extras/debian_control.in b/extras/debian_control.in deleted file mode 100644 index 0d4d207..0000000 --- a/extras/debian_control.in +++ /dev/null @@ -1,8 +0,0 @@ -Package: @PACKAGE_NAME@ -Version: @PACKAGE_DEB_VERSION@ -Description: @PACKAGE_DESCRIPTION@ -Section: misc -Priority: optional -Architecture: all -Homepage: @PACKAGE_URL@ -Maintainer: @PACKAGE_MAINTAINER@ diff --git a/extras/dict.json b/extras/dict.json deleted file mode 100644 index 3316601..0000000 --- a/extras/dict.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "english": [ - "/usr/share/dict/american-english", - "/usr/share/dict/british-english", - "english-custom" - ], - "swedish": "/usr/share/dict/swedish" -} diff --git a/extras/dict/english b/extras/dict/english deleted file mode 100644 index ff2ae7b..0000000 --- a/extras/dict/english +++ /dev/null @@ -1,47032 +0,0 @@ -aachen -aardvark -aardvarks -aaron -abaci -aback -abacus -abacuses -abaft -abandon -abandoned -abandoning -abandonment -abandons -abase -abased -abasement -abases -abash -abashed -abashes -abashing -abasing -abate -abated -abatement -abates -abating -abattoir -abattoirs -abbas -abbasid -abbess -abbesses -abbey -abbeys -abbot -abbots -abbott -abbreviate -abbreviated -abbreviates -abbreviating -abbreviation -abbreviations -abby -abdicate -abdicated -abdicates -abdicating -abdication -abdications -abdomen -abdomens -abduct -abducted -abductee -abductees -abducting -abduction -abductions -abductor -abductors -abducts -abe -abeam -abed -aberdeen -abernathy -aberrant -aberration -aberrations -abet -abets -abetted -abetter -abetters -abetting -abettor -abettors -abeyance -abhor -abhorred -abhorrence -abhorrent -abhorring -abhors -abide -abided -abides -abiding -abidjan -abject -abjuration -abjurations -abjure -abjured -abjures -abjuring -abnegate -abnegated -abnegates -abnegating -abnegation -abner -aboard -abode -abodes -abominate -abominated -abominates -abominating -abomination -abominations -aborigine -aborigines -abort -aborted -aborting -abortion -abortionist -abortionists -abortions -abortive -aborts -abound -abounded -abounding -abounds -about -above -aboveboard -abracadabra -abrade -abraded -abrades -abrading -abraham -abram -abrams -abrasion -abrasions -abrasive -abrasiveness -abrasives -abreast -abridge -abridged -abridgement -abridgements -abridges -abridging -abridgment -abridgments -abroad -abrogate -abrogated -abrogates -abrogating -abrogation -abrogations -abrupt -abrupter -abruptest -abruptness -abscess -abscessed -abscesses -abscessing -abscissa -abscissae -abscissas -abscond -absconded -absconding -absconds -absence -absences -absent -absented -absentee -absenteeism -absentees -absenting -absents -absinth -absinthe -absorb -absorbed -absorbency -absorbent -absorbents -absorbing -absorbs -absorption -abstain -abstained -abstainer -abstainers -abstaining -abstains -abstemious -abstention -abstentions -abstinence -abstinent -abstract -abstracted -abstracting -abstraction -abstractions -abstractness -abstractnesses -abstracts -abstruse -abstruseness -absurd -absurder -absurdest -absurdities -absurdity -abuja -abundance -abundances -abundant -abuse -abused -abuser -abusers -abuses -abusing -abusive -abusiveness -abut -abutment -abutments -abuts -abutted -abutting -abuzz -abyss -abysses -abyssinia -abyssinian -acacia -acacias -academia -academic -academician -academicians -academics -academies -academy -acadia -acanthi -acanthus -acanthuses -accede -acceded -accedes -acceding -accent -accented -accenting -accents -accentuate -accentuated -accentuates -accentuating -accentuation -accenture -accept -acceptance -acceptances -accepted -accepting -accepts -access -accessed -accesses -accessing -accession -accessioned -accessioning -accessions -accessories -accessory -accident -accidents -accommodate -accommodated -accommodates -accommodating -accommodation -accommodations -accompanied -accompanies -accompaniment -accompaniments -accompanist -accompanists -accompany -accompanying -accord -accordance -accorded -according -accordion -accordions -accords -accost -accosted -accosting -accosts -account -accountancy -accountant -accountants -accounted -accounting -accounts -accouterments -accoutrements -accra -accredit -accreditation -accredited -accrediting -accredits -accretion -accretions -accrue -accrued -accrues -accruing -accuracy -accurate -accurateness -accursed -accurst -accusation -accusations -accusative -accusatives -accusatory -accuse -accused -accuser -accusers -accuses -accusing -accustom -accustomed -accustoming -accustoms -ace -aced -acerbic -acerbity -aces -acetaminophen -acetate -acetates -acetic -acetone -acevedo -achaean -ache -achebe -ached -achernar -aches -acheson -achier -achiest -achieve -achieved -achievement -achievements -achiever -achievers -achieves -achieving -aching -achoo -achromatic -achy -acid -acidic -acidified -acidifies -acidify -acidifying -acidity -acids -acing -acme -acmes -acne -aconcagua -aconite -aconites -acorn -acorns -acosta -acoustic -acoustics -acquaint -acquaintance -acquaintances -acquainted -acquainting -acquaints -acquiesce -acquiesced -acquiescence -acquiescent -acquiesces -acquiescing -acquire -acquired -acquirement -acquires -acquiring -acquisition -acquisitions -acquisitive -acquisitiveness -acquit -acquits -acquitted -acquitting -acre -acreage -acreages -acres -acrid -acrider -acridest -acrimonious -acrimony -acrobat -acrobatic -acrobatics -acrobats -acronym -acronyms -across -acrostic -acrostics -acrux -act -actaeon -acted -acting -actinium -action -actions -activate -activated -activates -activating -activation -active -actives -activism -activist -activists -activities -activity -acton -actor -actors -actress -actresses -acts -actuaries -actuary -actuate -actuated -actuates -actuating -actuator -actuators -acuff -acuity -acumen -acupuncture -acupuncturist -acupuncturists -acute -acuteness -acuter -acutes -acutest -ada -adage -adages -adagio -adagios -adam -adamant -adams -adan -adana -adapt -adaptation -adaptations -adapted -adapter -adapters -adapting -adaptive -adaptor -adaptors -adapts -adar -add -addams -added -addend -addenda -addends -addendum -addendums -adder -adders -addict -addicted -addicting -addiction -addictions -addictive -addicts -addie -adding -addison -addition -additions -additive -additives -address -addressed -addressee -addressees -addresses -addressing -adds -adduce -adduced -adduces -adducing -aden -adenauer -adenoid -adenoids -adept -adeptness -adepts -adequacy -adequate -adhara -adhere -adhered -adherence -adherent -adherents -adheres -adhering -adhesion -adhesive -adhesives -adiabatic -adidas -adieu -adieus -adieux -adipose -adirondack -adirondacks -adjacent -adjective -adjectives -adjoin -adjoined -adjoining -adjoins -adjourn -adjourned -adjourning -adjournment -adjournments -adjourns -adjudge -adjudged -adjudges -adjudging -adjudicate -adjudicated -adjudicates -adjudicating -adjudication -adjudicator -adjudicators -adjunct -adjuncts -adjuration -adjurations -adjure -adjured -adjures -adjuring -adjust -adjusted -adjuster -adjusters -adjusting -adjustment -adjustments -adjustor -adjustors -adjusts -adjutant -adjutants -adkins -adman -admen -administer -administered -administering -administers -administrate -administrated -administrates -administrating -administration -administrations -administrative -administrator -administrators -admiration -admire -admired -admirer -admirers -admires -admiring -admission -admissions -admit -admits -admittance -admitted -admitting -admixture -admixtures -admonish -admonished -admonishes -admonishing -admonishment -admonishments -admonition -admonitions -admonitory -ado -adobe -adobes -adonis -adonises -adopt -adopted -adopting -adoption -adoptions -adoptive -adopts -adoration -adore -adored -adores -adoring -adorn -adorned -adorning -adornment -adornments -adorns -adrian -adriana -adriatic -adrienne -adrift -adroit -adroitness -ads -adumbrate -adumbrated -adumbrates -adumbrating -adumbration -advance -advanced -advancement -advancements -advances -advancing -advantage -advantaged -advantageous -advantages -advantaging -advent -adventist -adventitious -advents -adventure -adventured -adventurer -adventurers -adventures -adventuresome -adventuress -adventuresses -adventuring -adventurous -adverb -adverbs -adversaries -adversary -adverse -adverser -adversest -adversities -adversity -advert -adverted -adverting -advertise -advertised -advertisement -advertisements -advertiser -advertisers -advertises -advertising -adverts -advice -advise -advised -advisement -adviser -advisers -advises -advising -advisor -advisories -advisors -advisory -advocacy -advocate -advocated -advocates -advocating -adware -adz -adze -adzes -aegean -aegis -aeneas -aeneid -aeon -aeons -aerate -aerated -aerates -aerating -aeration -aerator -aerators -aerie -aeries -aerobatics -aerobic -aerobics -aerodynamic -aerodynamics -aeronautics -aerospace -aery -aesop -aesthete -aesthetes -aesthetic -aesthetics -afar -affair -affairs -affect -affectation -affectations -affected -affecting -affection -affectionate -affections -affects -affidavit -affidavits -affinities -affinity -affirm -affirmation -affirmations -affirmative -affirmatives -affirmed -affirming -affirms -affix -affixed -affixes -affixing -afford -afforded -affording -affords -afforest -afforestation -afforested -afforesting -afforests -affray -affrays -affront -affronted -affronting -affronts -afghan -afghani -afghanistan -afghans -aficionado -aficionados -afire -afoot -aforementioned -aforesaid -aforethought -afraid -afresh -africa -african -africans -afrikaans -afrikaner -afrikaners -afro -afrocentrism -afros -aft -after -afterbirth -afterbirths -afterburner -afterburners -aftercare -aftereffect -aftereffects -aftermath -aftermaths -afternoon -afternoons -aftershave -aftershaves -aftershock -aftershocks -aftertaste -aftertastes -afterthought -afterthoughts -afterward -afterwards -afterword -afterwords -again -against -agamemnon -agape -agar -agassi -agassiz -agate -agates -agatha -agave -age -aged -ageing -ageings -ageism -agencies -agency -agenda -agendas -agent -agents -ages -aggie -aggrandise -aggrandised -aggrandisement -aggrandises -aggrandising -aggrandize -aggrandized -aggrandizement -aggrandizes -aggrandizing -aggravate -aggravated -aggravates -aggravating -aggravation -aggravations -aggregate -aggregated -aggregates -aggregating -aggregation -aggregations -aggression -aggressive -aggressiveness -aggressor -aggressors -aggrieve -aggrieved -aggrieves -aggrieving -aghast -aging -agings -agism -agitate -agitated -agitates -agitating -agitation -agitations -agitator -agitators -agnes -agnew -agni -agnostic -agnosticism -agnostics -ago -agog -agonies -agonise -agonised -agonises -agonising -agonize -agonized -agonizes -agonizing -agony -agra -agrarian -agrarians -agree -agreed -agreeing -agreement -agreements -agrees -agribusiness -agribusinesses -agrippa -agrippina -agronomist -agronomists -agronomy -aground -ague -aguirre -agustin -aha -ahab -ahead -ahem -ahmad -ahmadabad -ahmadinejad -ahmed -ahoy -ahriman -aid -aida -aide -aided -aides -aiding -aids -aiken -aim -aimed -aimee -aiming -aims -ainu -air -airborne -airbrush -airbrushed -airbrushes -airbrushing -aircraft -airdrop -airdropped -airdropping -airdrops -aired -aires -airfare -airfares -airhead -airheads -airier -airiest -airiness -airing -airings -airman -airmen -airport -airports -airs -airship -airships -airsick -airsickness -airspace -airstrip -airstrips -airtight -airwaves -airway -airways -airworthy -airy -aisha -ajar -ajax -akbar -akhmatova -akihito -akimbo -akin -akita -akiva -akkad -akron -amadeus -amado -amanda -amanuenses -amanuensis -amaranth -amaranths -amaru -amass -amassed -amasses -amassing -amaterasu -amateur -amateurish -amateurism -amateurs -amati -amatory -amaze -amazed -amazement -amazes -amazing -amazon -amazons -ambassador -ambassadors -ambassadorship -ambassadorships -amber -ambergris -ambiance -ambiances -ambidextrous -ambience -ambiences -ambient -ambiguities -ambiguity -ambiguous -ambition -ambitions -ambitious -ambitiousness -ambrosia -ambush -ambushed -ambushes -ambushing -amd -ameba -amebae -amebas -amebic -ameer -ameers -amen -amend -amended -amending -amendment -amendments -amends -amenhotep -amenities -amenity -amerasian -america -american -americana -americanisation -americanisations -americanise -americanised -americanises -americanising -americanism -americanisms -americanization -americanizations -americanize -americanized -americanizes -americanizing -americans -americas -amerind -amerindian -amerindians -amerinds -amethyst -amethysts -amharic -amherst -amid -amidships -amidst -amie -amiga -amigo -amigos -amino -amir -amirs -amish -amiss -amity -amman -ammeter -ammeters -ammo -ammonia -ammunition -amnesia -amnesiac -amnesiacs -amnestied -amnesties -amnesty -amnestying -amniocenteses -amniocentesis -amoco -amoeba -amoebae -amoebas -amoebic -amok -among -amongst -amorous -amorousness -amorphous -amorphousness -amortisation -amortisations -amortise -amortised -amortises -amortising -amortization -amortizations -amortize -amortized -amortizes -amortizing -amos -amount -amounted -amounting -amounts -amour -amours -amp -amparo -amperage -ampere -amperes -ampersand -ampersands -amphetamine -amphetamines -amphibian -amphibians -amphibious -amphitheater -amphitheaters -amphitheatre -amphitheatres -amps -amputate -amputated -amputates -amputating -amputation -amputations -amputee -amputees -amritsar -amsterdam -amtrak -amuck -amundsen -amur -amuse -amused -amusement -amusements -amuses -amusing -amway -amy -ana -anabaptist -anachronism -anachronisms -anachronistic -anacin -anaconda -anacondas -anacreon -anaemia -anaemic -anaerobic -anaesthesia -anaesthetic -anaesthetics -anaesthetise -anaesthetised -anaesthetises -anaesthetising -anaesthetist -anaesthetists -anaesthetize -anaesthetized -anaesthetizes -anaesthetizing -anagram -anagrams -anaheim -ananias -anapest -anapests -anarchic -anarchism -anarchist -anarchistic -anarchists -anarchy -anasazi -anastasia -anathema -anathemas -anatomic -anatomies -anatomist -anatomists -anatomy -anaxagoras -ancestor -ancestors -ancestress -ancestresses -ancestries -ancestry -anchor -anchorage -anchorages -anchored -anchoring -anchorite -anchorites -anchorman -anchormen -anchorperson -anchorpersons -anchors -anchorwoman -anchorwomen -anchovies -anchovy -ancient -ancienter -ancientest -ancients -and -andaman -andante -andantes -andean -andersen -anderson -andes -andiron -andirons -andorra -andre -andrea -andrei -andres -andretti -andrew -andrews -andrianampoinimerina -androgen -androgynous -android -androids -andromache -andromeda -andropov -andy -anecdota -anecdote -anecdotes -anemia -anemic -anemometer -anemometers -anemone -anemones -anesthesia -anesthetic -anesthetics -anesthetist -anesthetists -anesthetize -anesthetized -anesthetizes -anesthetizing -aneurism -aneurisms -aneurysm -aneurysms -anew -angara -anger -angered -angering -angers -angevin -angie -angina -angiosperm -angiosperms -angkor -angora -angoras -angrier -angriest -angry -angst -angstrom -angstroms -anguish -anguished -anguishes -anguishing -angus -ani -aniakchak -animate -animated -animates -animating -animation -animations -animator -animators -anime -animism -animist -animistic -animists -animosities -animosity -animus -anion -anions -anise -aniseed -anita -ankara -ankh -ankhs -ann -anna -annam -annapurna -anne -annette -annex -annexation -annexations -annexed -annexes -annexing -annie -anniversaries -anniversary -annmarie -annotate -annotated -annotates -annotating -annotation -annotations -announce -announced -announcement -announcements -announcer -announcers -announces -announcing -annoy -annoyance -annoyances -annoyed -annoying -annoys -annuities -annuity -anode -anodes -anodyne -anodynes -anoint -anointed -anointing -anointment -anoints -anon -anons -anonymity -anonymous -anorak -anoraks -anorexia -anorexic -anorexics -another -anshan -answer -answered -answering -answers -ant -antacid -antacids -antaeus -antagonise -antagonised -antagonises -antagonising -antagonism -antagonisms -antagonist -antagonistic -antagonists -antagonize -antagonized -antagonizes -antagonizing -antananarivo -antarctic -antarctica -antares -ante -anteater -anteaters -antecedent -antecedents -antechamber -antechambers -anted -antedate -antedated -antedates -antedating -anteed -anteing -antenna -antennae -antennas -anterior -anteroom -anterooms -antes -anthem -anthems -anther -anthers -anthony -anthracite -anthrax -anthropocene -anthropocentric -anthropoid -anthropoids -anthropomorphic -anthropomorphism -anti -antiabortion -antiaircraft -antibiotic -antibiotics -antibodies -antibody -antic -antichrist -antichrists -anticipate -anticipated -anticipates -anticipating -anticipation -anticipations -anticipatory -anticked -anticking -antics -antidepressant -antidepressants -antidote -antidotes -antietam -antifreeze -antigen -antigens -antigone -antigua -antihero -antiheroes -antihistamine -antihistamines -antiknock -antimatter -antimony -antioch -antipas -antipasti -antipasto -antipastos -antipathetic -antipathies -antipathy -antiperspirant -antiperspirants -antipodes -antiquarian -antiquarians -antiquaries -antiquary -antiquate -antiquated -antiquates -antiquating -antique -antiqued -antiques -antiquing -antiquities -antiquity -antis -antiseptic -antiseptics -antitheses -antithesis -antitoxin -antitoxins -antitrust -antivirus -antiwar -antofagasta -antoine -antoinette -anton -antone -antonia -antoninus -antonio -antonius -antony -antonym -antonyms -ants -antwan -antwerp -anubis -anus -anuses -anxieties -anxiety -anxious -any -anybodies -anybody -anyhow -anymore -anyone -anything -anythings -anytime -anyway -anywhere -anzac -aorta -aortae -aortas -apace -apache -apaches -apart -apartheid -apartment -apartments -apathetic -apathy -apatosaurus -ape -aped -apennines -aperitif -aperitifs -aperture -apertures -apes -apex -apexes -aphasia -aphasic -aphasics -aphid -aphids -aphorism -aphorisms -aphoristic -aphrodisiac -aphrodisiacs -aphrodite -apia -apiaries -apiary -apices -apiece -aping -apocrypha -apogee -apogees -apostasies -apostasy -apostate -apostates -apostrophe -apostrophes -apothecaries -apothecary -apotheoses -apotheosis -apparatus -apparatuses -apparent -apparition -apparitions -appear -appearance -appearances -appeared -appearing -appears -appease -appeased -appeasement -appeasements -appeaser -appeasers -appeases -appeasing -append -appendage -appendages -appendectomies -appendectomy -appended -appendices -appendicitis -appending -appendix -appendixes -appends -appertain -appertained -appertaining -appertains -appetiser -appetisers -appetising -appetite -appetites -appetizer -appetizers -appetizing -appoint -appointed -appointee -appointees -appointing -appointive -appointment -appointments -appoints -appomattox -apportion -apportioned -apportioning -apportionment -apportions -apposite -appositeness -apposition -appositive -appositives -appraise -appraised -appraiser -appraisers -appraises -appraising -appreciate -appreciated -appreciates -appreciating -appreciation -appreciations -appreciative -apprehend -apprehended -apprehending -apprehends -apprehension -apprehensions -apprehensive -apprehensiveness -apprentice -apprenticed -apprentices -apprenticeship -apprenticeships -apprenticing -apprise -apprised -apprises -apprising -approach -approached -approaches -approaching -approbation -approbations -appropriate -appropriated -appropriateness -appropriates -appropriating -appropriation -appropriations -approve -approved -approves -approving -approximate -approximated -approximates -approximating -approximation -approximations -apps -appurtenance -appurtenances -apr -apricot -apricots -apron -aprons -apropos -apse -apses -apt -apter -aptest -aptitude -aptitudes -aptness -aqua -aquae -aquafresh -aquamarine -aquamarines -aquanaut -aquanauts -aquaria -aquarium -aquariums -aquarius -aquariuses -aquas -aquatic -aquatics -aquavit -aqueduct -aqueducts -aqueous -aquifer -aquifers -aquinas -aquino -aquitaine -ara -arab -arabesque -arabesques -arabia -arabian -arabians -arabic -arabs -araby -arachnid -arachnids -arafat -araguaya -aramaic -aramco -arapaho -ararat -araucanian -arawak -arawakan -arbiter -arbiters -arbitrariness -arbitrary -arbitrate -arbitrated -arbitrates -arbitrating -arbitration -arbitrator -arbitrators -arbitron -arbor -arboreta -arboretum -arboretums -arbors -arborvitae -arborvitaes -arbour -arbours -arbutus -arbutuses -arc -arcade -arcades -arcadia -arcadian -arcane -arced -arch -archaic -archaism -archaisms -archbishop -archbishopric -archbishoprics -archbishops -archdeacon -archdeacons -archdiocese -archdioceses -archduke -archdukes -archean -arched -archenemies -archenemy -archer -archers -archery -arches -archest -archetype -archetypes -archie -archimedes -arching -architect -architects -architecture -architectures -archive -archived -archives -archiving -archivist -archivists -archness -archway -archways -arcing -arcked -arcking -arcs -arctic -arctics -arcturus -arden -ardent -ardor -ardors -ardour -ardours -arduous -arduousness -are -area -areas -arena -arenas -arequipa -ares -argentina -argentine -argentinian -argentinians -argo -argon -argonaut -argonne -argos -argosies -argosy -argot -argots -argue -argued -argues -arguing -argument -argumentation -argumentative -arguments -argus -aria -ariadne -arianism -arias -arid -aridity -aries -arieses -aright -ariosto -arise -arisen -arises -arising -aristarchus -aristides -aristocracies -aristocracy -aristocrat -aristocratic -aristocrats -aristophanes -arithmetic -arius -arizona -arizonan -arizonans -arizonian -arizonians -arjuna -ark -arkansan -arkansas -arks -arkwright -arm -armada -armadas -armageddon -armageddons -armagnac -armament -armaments -armand -armando -armani -armature -armatures -armband -armbands -armchair -armchairs -armed -armenia -armenian -armenians -armies -arming -arminius -armistice -armistices -armonk -armor -armored -armorer -armorers -armories -armoring -armors -armory -armour -armoured -armourer -armourers -armouries -armouring -armours -armoury -armpit -armpits -armrest -armrests -arms -armstrong -army -arneb -arnhem -arno -aroma -aromas -aromatherapy -aromatic -aromatics -aron -arose -around -arouse -aroused -arouses -arousing -arpeggio -arpeggios -arraign -arraigned -arraigning -arraignment -arraignments -arraigns -arrange -arranged -arrangement -arrangements -arranger -arrangers -arranges -arranging -arrant -array -arrayed -arraying -arrays -arrears -arrest -arrested -arresting -arrests -arrhenius -arrive -arrived -arrives -arriving -arrogance -arrogant -arrogate -arrogated -arrogates -arrogating -arron -arrow -arrowhead -arrowheads -arrowroot -arrows -arroyo -arroyos -arse -arsenic -arses -arson -arsonist -arsonists -art -artaxerxes -artefact -artefacts -artemis -arteries -artery -arthritic -arthritics -arthritis -arthropod -arthropods -arthur -arthurian -artichoke -artichokes -artie -artier -artiest -artifact -artifacts -artifice -artificer -artificers -artifices -artisan -artisans -artist -artiste -artistes -artistic -artistry -artists -arts -artsier -artsiest -artsy -arturo -artwork -artworks -arty -aruba -aryan -aryans -asama -asbestos -ascend -ascendancy -ascendant -ascendants -ascended -ascendency -ascendent -ascendents -ascending -ascends -ascension -ascensions -ascent -ascents -ascertain -ascertained -ascertaining -ascertains -ascetic -asceticism -ascetics -ascot -ascots -ascribe -ascribed -ascribes -ascribing -ascription -aseptic -asgard -ash -ashamed -ashanti -ashcan -ashcans -ashcroft -ashe -ashed -ashen -ashes -ashier -ashiest -ashikaga -ashing -ashkenazim -ashkhabad -ashore -ashram -ashrams -ashtray -ashtrays -ashy -asia -asiago -asian -asians -asiatic -asiatics -aside -asides -asimov -asinine -asininities -asininity -ask -askance -asked -askew -asking -asks -asmara -asoka -asp -asparagus -aspartame -aspect -aspects -aspen -aspens -asperger -asperities -asperity -aspersion -aspersions -asphyxia -asphyxiate -asphyxiated -asphyxiates -asphyxiating -asphyxiation -asphyxiations -aspic -aspics -aspidiske -aspirant -aspirants -aspirate -aspirated -aspirates -aspirating -aspiration -aspirations -aspire -aspired -aspires -aspirin -aspiring -aspirins -asps -asquith -ass -assad -assam -assamese -assassin -assassinate -assassinated -assassinates -assassinating -assassination -assassinations -assassins -assay -assayed -assaying -assays -assent -assented -assenting -assents -assert -asserted -asserting -assertion -assertions -assertive -assertiveness -asserts -asses -assess -assessed -assesses -assessing -assessment -assessments -assessor -assessors -asset -assets -asseverate -asseverated -asseverates -asseverating -assiduous -assiduousness -assign -assignation -assignations -assigned -assigning -assignment -assignments -assigns -assisi -assist -assistance -assistant -assistants -assisted -assisting -assists -assize -assizes -associate -associated -associates -associating -association -associations -associative -assonance -assort -assorted -assorting -assortment -assortments -assorts -assuage -assuaged -assuages -assuaging -assume -assumed -assumes -assuming -assumption -assumptions -assurance -assurances -assure -assured -assureds -assures -assuring -assyria -assyrian -assyrians -astaire -astana -astarte -aster -asterisk -asterisked -asterisking -asterisks -astern -asteroid -asteroids -asters -asthma -asthmatic -asthmatics -astigmatic -astigmatism -astigmatisms -astir -aston -astonish -astonished -astonishes -astonishing -astonishment -astor -astoria -astound -astounded -astounding -astounds -astrakhan -astray -astride -astringency -astringent -astringents -astronaut -astronautics -astronauts -astronomer -astronomers -astronomic -astronomy -astrophysicist -astrophysicists -astrophysics -astroturf -asturias -astute -astuteness -astuter -astutest -asunder -aswan -asymmetric -asymmetry -asymptotic -asynchronous -atacama -atari -atavism -atavistic -ate -athabasca -athabascan -atheism -atheist -atheistic -atheists -athena -athenian -athenians -athens -atkins -atkinson -atman -atmosphere -atmospheres -atmospheric -atom -atomic -atomiser -atomisers -atomizer -atomizers -atoms -atone -atoned -atonement -atones -atoning -atop -atreus -atria -atrium -atriums -atrocious -atrociousness -atrocities -atrocity -atrophied -atrophies -atrophy -atrophying -atropos -ats -attach -attached -attaching -attachment -attachments -attack -attacked -attacker -attackers -attacking -attacks -attain -attained -attaining -attainment -attainments -attains -attar -attempt -attempted -attempting -attempts -attend -attendance -attendances -attendant -attendants -attended -attender -attending -attends -attention -attentions -attentive -attentiveness -attenuate -attenuated -attenuates -attenuating -attenuation -attest -attestation -attestations -attested -attesting -attests -attic -attica -attics -attire -attired -attires -attiring -attitude -attitudes -attitudinise -attitudinised -attitudinises -attitudinising -attitudinize -attitudinized -attitudinizes -attitudinizing -attorney -attorneys -attract -attracted -attracting -attraction -attractions -attractive -attractiveness -attracts -attribute -attributed -attributes -attributing -attribution -attributions -attributive -attributives -attrition -attucks -attune -attuned -attunes -attuning -atwitter -atwood -aubrey -auburn -auction -auctioned -auctioneer -auctioneers -auctioning -auctions -audacious -audaciousness -audacity -auden -audi -audience -audiences -audio -audion -audios -audit -audited -auditing -audition -auditioned -auditioning -auditions -auditor -auditoria -auditorium -auditoriums -auditors -auditory -audits -audra -audrey -audubon -aug -augean -auger -augers -aught -aughts -augment -augmentation -augmentations -augmented -augmenting -augments -augsburg -augur -augured -auguries -auguring -augurs -augury -august -augusta -augustan -auguster -augustest -augustine -augusts -augustus -auk -auks -aunt -aunts -aura -aurae -aurangzeb -auras -aureomycin -auriga -aurora -auschwitz -auspice -auspices -auspicious -auspiciousness -aussie -aussies -austen -austere -austerer -austerest -austerities -austerity -austin -austins -austria -austrian -austrians -austronesian -authentic -authenticate -authenticated -authenticates -authenticating -authentication -authentications -authenticity -author -authored -authoring -authorisation -authorisations -authorise -authorised -authorises -authorising -authoritarian -authoritarianism -authoritarians -authoritative -authoritativeness -authorities -authority -authorization -authorizations -authorize -authorized -authorizes -authorizing -authors -authorship -autism -autistic -auto -autobiographies -autobiography -autocracies -autocracy -autocrat -autocratic -autocrats -autograph -autographed -autographing -autographs -autoimmune -automata -automate -automated -automates -automatic -automatics -automating -automation -automaton -automatons -automotive -autonomous -autonomy -autopsied -autopsies -autopsy -autopsying -autos -autoworker -autoworkers -autumn -autumns -ava -avarice -avaricious -avast -avatar -avatars -avenge -avenged -avenger -avengers -avenges -avenging -aventine -avenue -avenues -aver -average -averaged -averages -averaging -avernus -averred -averring -averroes -avers -averse -aversion -aversions -avert -averted -averting -averts -avery -avesta -avian -aviaries -aviary -aviation -aviator -aviators -aviatrices -aviatrix -aviatrixes -avicenna -avid -avidity -avignon -avionics -avior -avis -avocado -avocadoes -avocados -avocation -avocations -avogadro -avoid -avoidance -avoided -avoiding -avoids -avoirdupois -avon -avow -avowed -avowing -avows -await -awaited -awaiting -awaits -awake -awaked -awaken -awakened -awakening -awakenings -awakens -awakes -awaking -award -awarded -awarding -awards -aware -awareness -awash -away -awe -awed -aweigh -awes -awesome -awestricken -awestruck -awing -awkward -awkwarder -awkwardest -awkwardness -awning -awnings -awoke -awoken -awry -axe -axed -axes -axing -axiom -axiomatic -axioms -axis -axon -axons -axum -aye -ayers -ayes -aymara -ayrshire -ayurveda -ayyubid -azana -azania -azerbaijan -azerbaijani -azimuth -azimuths -azores -azov -aztec -aztecan -aztecs -azure -azures -baa -baaed -baaing -baas -baath -baathist -babar -babbage -babbitt -babe -babes -babied -babier -babies -babiest -baboon -baboons -babur -babushka -babushkas -baby -babyhood -babying -babyish -babysat -babysit -babysits -babysitter -babysitters -babysitting -bacardi -bacchus -bach -back -backache -backaches -backbit -backbite -backbiter -backbiters -backbites -backbiting -backbitten -backboard -backboards -backbone -backbones -backbreaking -backdate -backdated -backdates -backdating -backdrop -backdrops -backed -backer -backers -backfire -backfired -backfires -backfiring -backgammon -background -backgrounds -backhand -backhanded -backhanding -backhands -backhoe -backhoes -backing -backings -backpack -backpacked -backpacker -backpackers -backpacking -backpacks -backrest -backrests -backs -backside -backsides -backspace -backspaced -backspaces -backspacing -backspin -backstabbing -backstage -backstairs -backstop -backstopped -backstopping -backstops -backstories -backstory -backstretch -backstretches -backstroke -backstroked -backstrokes -backstroking -backtrack -backtracked -backtracking -backtracks -backup -backups -backus -backward -backwardness -backwards -backwash -backwater -backwaters -backwoods -backyard -backyards -bacon -bacteria -bacterias -bacterium -bactria -bad -badder -baddest -bade -baden -badge -badger -badgered -badgering -badgers -badges -badinage -badminton -badmouth -badmouthed -badmouthing -badmouths -badness -baedeker -baeria -baeyer -baez -baffin -bag -baggage -bagged -baggier -baggies -baggiest -bagginess -bagging -baggy -baghdad -bagpipe -bagpipes -bags -baguio -bah -bahama -bahamas -bahamian -bahamians -bahia -bahrain -baird -bait -baited -baiting -baits -baize -bake -baked -baker -bakeries -bakers -bakery -bakes -baking -baku -bakunin -bamako -bambi -bamboo -bamboos -ban -banach -banana -bananas -bancroft -band -bandage -bandaged -bandages -bandaging -bandana -bandanas -bandanna -bandannas -banded -bandied -bandier -bandies -bandiest -banding -bandit -banditry -bandits -banditti -bands -bandstand -bandstands -bandung -bandwagon -bandwagons -bandwidth -bandy -bandying -bane -banes -bang -banged -banging -bangkok -bangor -bangs -bangui -bani -banish -banished -banishes -banishing -banishment -banister -banisters -banjarmasin -banjo -banjoes -banjoist -banjoists -banjos -bank -bankbook -bankbooks -banked -banker -bankers -banking -banknote -banknotes -bankrupt -bankruptcies -bankruptcy -bankrupted -bankrupting -bankrupts -banks -banned -banneker -banner -banners -banning -bannister -bannisters -banns -banquet -banqueted -banqueting -banquets -bans -banshee -banshees -bantam -bantams -bantamweight -bantamweights -banter -bantered -bantering -banters -banting -bantu -bantus -banyan -banyans -baobab -baobabs -baotou -baptise -baptised -baptises -baptising -baptism -baptisms -baptist -baptiste -baptisteries -baptistery -baptistries -baptistry -baptists -baptize -baptized -baptizes -baptizing -bar -barabbas -barack -barb -barbacoa -barbadian -barbadians -barbados -barbara -barbarian -barbarians -barbaric -barbarism -barbarisms -barbarities -barbarity -barbarossa -barbarous -barbary -barbecue -barbecued -barbecues -barbecuing -barbed -barbeque -barbequed -barbeques -barbequing -barber -barbered -barbering -barberries -barberry -barbers -barbershop -barbershops -barbie -barbing -barbiturate -barbiturates -barbour -barbra -barbs -barbuda -bard -bardeen -bards -bare -bareback -bared -barefaced -barefoot -barefooted -barehanded -bareheaded -bareness -barents -barer -bares -barest -barf -barfed -barfing -barfs -bargain -bargained -bargainer -bargaining -bargains -barge -barged -barges -barging -baring -barista -baristas -baritone -baritones -barium -bark -barked -barker -barkers -barking -barks -barmaid -barmaids -barman -barn -barnabas -barnaby -barnard -barnes -barnett -barney -barns -barnstorm -barnstormed -barnstorming -barnstorms -barnum -barnyard -barnyards -baroda -barometer -barometers -barometric -baron -baroness -baronesses -baronet -baronets -barons -baroque -barquisimeto -barr -barrack -barracks -barracuda -barracudas -barrage -barraged -barrages -barraging -barred -barren -barrener -barrenest -barrenness -barrens -barrera -barrett -barrette -barrettes -barricade -barricaded -barricades -barricading -barrie -barrier -barriers -barring -barrings -barrio -barrios -barrister -barristers -barron -barroom -barrooms -barrow -barrows -barry -barrymore -bars -bartender -bartenders -barter -bartered -bartering -barters -barth -barton -baruch -baryshnikov -base -baseboard -baseboards -based -baseman -basemen -basement -basements -baseness -baser -bases -basest -bash -bashed -bashes -bashing -basho -basic -basics -basie -basin -basing -basins -basis -bask -basked -basket -baskets -basking -basks -basque -basques -basra -bass -basses -basseterre -bassi -bassinet -bassinets -bassist -bassists -basso -bassoon -bassoonist -bassoonists -bassoons -bassos -bast -bastard -bastardise -bastardised -bastardises -bastardising -bastardize -bastardized -bastardizes -bastardizing -bastards -baste -basted -bastes -basting -bastion -bastions -bat -bataan -batch -batched -batches -batching -bate -bated -bates -bath -bathe -bathed -bather -bathers -bathes -bathhouse -bathhouses -bathing -bathmat -bathmats -bathos -bathrobe -bathrobes -bathroom -bathrooms -baths -bathsheba -bathtub -bathtubs -batik -batiks -bating -batista -batman -baton -batons -bats -batsman -batsmen -batted -batten -battened -battening -battens -batter -battered -batteries -battering -batters -battery -battier -battiest -batting -batty -batu -baud -baudouin -bauds -bauer -bauhaus -baum -bauxite -bavaria -bavarian -bawdier -bawdiest -bawdiness -bawdy -baxter -bay -bayberries -bayberry -bayed -bayer -bayes -bayesian -bayeux -baying -bayonet -bayoneted -bayoneting -bayonets -bayonetted -bayonetting -bayonne -bayou -bayous -bayreuth -bays -baywatch -bazaar -bazaars -bazooka -bazookas -bbb -beach -beachcomber -beachcombers -beached -beaches -beachhead -beachheads -beaching -beacon -beacons -bead -beaded -beadier -beadiest -beading -beads -beady -beak -beaked -beaker -beakers -beaks -beam -beamed -beaming -beams -bean -beanbag -beanbags -beaned -beaning -beans -bear -beard -bearded -bearding -beardmore -beards -bearer -bearers -bearing -bearings -bearish -bearnaise -bears -bearskin -bearskins -beast -beasts -beat -beaten -beater -beaters -beatific -beatification -beatifications -beatified -beatifies -beatify -beatifying -beating -beatings -beatitude -beatitudes -beatnik -beatniks -beatrice -beatrix -beatriz -beats -beau -beaufort -beaumarchais -beaumont -beauregard -beaus -beauteous -beautician -beauticians -beauties -beautification -beautified -beautifier -beautifiers -beautifies -beautify -beautifying -beauty -beauvoir -beaux -beaver -beavered -beavering -beavers -bebop -bebops -became -because -beck -becker -becket -beckett -beckon -beckoned -beckoning -beckons -becks -becky -become -becomes -becoming -bed -bedbug -bedbugs -bedded -bedder -bedding -bede -bedeck -bedecked -bedecking -bedecks -bedouin -bedouins -bedpan -bedpans -bedridden -bedrock -bedrocks -bedroom -bedrooms -beds -bedside -bedsides -bedsore -bedsores -bedspread -bedspreads -bedstead -bedsteads -bedtime -bedtimes -bee -beebe -beech -beecher -beeches -beechnut -beechnuts -beef -beefaroni -beefburger -beefed -beefier -beefiest -beefing -beefs -beefsteak -beefsteaks -beefy -beehive -beehives -beekeeper -beekeepers -beekeeping -been -beep -beeped -beeper -beepers -beeping -beeps -beer -beerbohm -beers -bees -beeswax -beet -beethoven -beeton -beets -beeves -befit -befits -befitted -befitting -befog -befogged -befogging -befogs -before -beforehand -befriend -befriended -befriending -befriends -beg -began -begat -beget -begets -begetting -beggar -beggared -beggaring -beggars -begged -begging -begin -beginner -beginners -beginning -beginnings -begins -begone -begonia -begonias -begot -begotten -begrudge -begrudged -begrudges -begrudging -begs -begun -behan -behave -behaved -behaves -behaving -behavior -behaviour -behead -beheaded -beheading -beheads -behemoth -behemoths -behest -behests -behind -behinds -behoove -behooved -behooves -behooving -behove -behoved -behoves -behoving -behring -beiderbecke -beige -beijing -being -beings -beirut -bekesy -bemoan -bemoaned -bemoaning -bemoans -bemuse -bemused -bemuses -bemusing -ben -benacerraf -benares -bench -benched -benches -benching -benchmark -benchmarks -bend -bender -bending -bendix -bends -beneath -benedict -benedictine -benediction -benedictions -benefaction -benefactions -benefactor -benefactors -benefactress -benefactresses -benefice -beneficence -beneficent -benefices -beneficiaries -beneficiary -benefit -benefited -benefiting -benefits -benefitted -benefitting -benet -benetton -benghazi -benighted -benign -benin -benita -benito -benjamin -bennett -bennie -benny -benson -bent -bentham -benton -bents -benumb -benumbed -benumbing -benumbs -benz -benzedrine -benzene -bequeath -bequeathed -bequeathing -bequeaths -bequest -bequests -berate -berated -berates -berating -berber -berbers -bereave -bereaved -bereavement -bereavements -bereaves -bereaving -bereft -berenice -beret -berets -beretta -berg -bergen -berger -bergerac -bergman -bergs -bergson -beria -beriberi -bering -berkshire -berkshires -berm -berms -bermuda -bermudas -bern -bernadette -bernadine -bernanke -bernard -bernardo -bernays -bernbach -berne -bernhardt -bernice -bernie -bernini -bernstein -berra -berried -berries -berry -berrying -berserk -bert -berta -berth -bertha -berthed -berthing -berths -bertie -bertram -bertrand -beseech -beseeched -beseeches -beseeching -beset -besets -besetting -beside -besides -besiege -besieged -besieger -besiegers -besieges -besieging -besmirch -besmirched -besmirches -besmirching -besom -besoms -besot -besots -besotted -besotting -besought -bespeak -bespeaking -bespeaks -bespoke -bespoken -bess -bessemer -bessie -best -bested -bestiaries -bestiary -besting -bestir -bestirred -bestirring -bestirs -bestow -bestowed -bestowing -bestows -bestrid -bestridden -bestride -bestrides -bestriding -bestrode -bests -bet -beta -betake -betaken -betakes -betaking -betas -betcha -beth -bethany -bethe -bethesda -bethink -bethinking -bethinks -bethought -bethune -betide -betided -betides -betiding -betoken -betokened -betokening -betokens -betook -betray -betrayed -betrayer -betrayers -betraying -betrays -betroth -betrothed -betrothing -betroths -bets -betsy -bette -betted -better -bettered -bettering -betterment -betters -bettie -betting -bettor -bettors -betty -bettye -between -betwixt -beverage -beverages -bevies -bevy -beware -bewared -bewares -bewaring -bewitch -bewitched -bewitches -bewitching -beyer -beyond -bhutan -bhutto -bianca -bias -biased -biases -biasing -biassed -biassing -bib -bibs -bic -bicep -biceps -bicepses -bicker -bickered -bickering -bickers -bicuspid -bicuspids -bid -bidden -bidder -bidders -biddies -bidding -biddy -bide -bided -biden -bides -bidet -bidets -biding -bids -bier -bierce -biers -bifurcate -bifurcated -bifurcates -bifurcating -bifurcation -bifurcations -big -bigamist -bigamists -bigamous -bigamy -bigfoot -bigger -biggest -biggie -biggies -bighearted -bighorn -bighorns -bight -bights -bigmouth -bigmouths -bigness -bigot -bigoted -bigotries -bigotry -bigots -bigwig -bigwigs -bike -biked -biker -bikers -bikes -biking -bikini -bikinis -biko -bimbo -bimboes -bimbos -bimini -bin -binaries -binary -bind -binder -binderies -binders -bindery -binding -bindings -binds -binge -binged -bingeing -binges -binging -bingo -binned -binning -bins -biochemist -biochemistry -biochemists -biodiversity -biofeedback -biographer -biographers -biographies -biography -bioko -bionic -biophysicist -biophysicists -biophysics -biopsied -biopsies -biopsy -biopsying -biorhythm -biorhythms -biosphere -biospheres -bipartisan -bipartite -biped -bipeds -birch -birched -birches -birching -bird -birdbath -birdbaths -birdbrained -birdcage -birdcages -birded -birdhouse -birdhouses -birdie -birdied -birdieing -birdies -birding -birds -birdseed -birdseye -birdwatcher -birdwatchers -biretta -birettas -birkenstock -birmingham -biro -birth -birthday -birthdays -birthed -birther -birthers -birthing -birthmark -birthmarks -birthrate -birthrates -birthright -birthrights -births -birthstone -birthstones -biscay -biscayne -biscuit -biscuits -bisect -bisected -bisecting -bisection -bisections -bisector -bisectors -bisects -bishkek -bishop -bishopric -bishoprics -bishops -bismarck -bismark -bismuth -bison -bisons -bisque -bisquick -bissau -bistro -bistros -bit -bitch -bitched -bitches -bitchier -bitchiest -bitching -bitchy -bitcoin -bitcoins -bite -bites -biting -bitmap -bits -bitten -bitter -bitterer -bitterest -bittern -bitterness -bitterns -bitters -bittersweet -bittersweets -bittorrent -bitumen -bituminous -bivouac -bivouacked -bivouacking -bivouacs -bizarre -bizet -bjerknes -bjork -bmw -boa -boar -board -boarded -boarder -boarders -boarding -boardinghouse -boardinghouses -boardroom -boardrooms -boards -boars -boas -boast -boasted -boaster -boasters -boasting -boasts -boat -boated -boater -boaters -boating -boatman -boatmen -boats -boatswain -boatswains -bob -bobbed -bobbi -bobbie -bobbies -bobbin -bobbing -bobbins -bobbitt -bobby -bobcat -bobcats -bobs -bobwhite -bobwhites -boccaccio -bode -boded -bodega -bodegas -bodes -bodhidharma -bodhisattva -bodice -bodices -bodies -boding -bodkin -bodkins -body -bodyguard -bodyguards -bodywork -boeing -boeotia -boeotian -boer -boers -boethius -bog -bogart -bogey -bogeyed -bogeying -bogeyman -bogeymen -bogeys -bogged -boggier -boggiest -bogging -boggy -bogie -bogied -bogies -bogs -bogus -bogy -bohemia -bohemian -bohemians -bohr -boise -boisterous -boisterousness -bomb -bombard -bombarded -bombardier -bombardiers -bombarding -bombardment -bombardments -bombards -bombast -bombastic -bombay -bombed -bomber -bombers -bombing -bombings -bombs -bonanza -bonanzas -bonaparte -bonaventure -bonbon -bonbons -bond -bondage -bonded -bonding -bonds -bondsman -bondsmen -bone -boned -bonehead -boneheads -boner -boners -bones -boney -boneyer -boneyest -bonfire -bonfires -bong -bonged -bonging -bongo -bongoes -bongos -bongs -bonhoeffer -bonier -boniest -boniface -boning -bonita -bonito -bonitoes -bonitos -bonkers -bonn -bonner -bonnet -bonnets -bonnie -bonnier -bonniest -bonny -bono -bonsai -bonus -bonuses -bony -boo -boob -boobed -boobies -boobing -boobs -booby -booed -boogie -boogied -boogieing -boogies -booing -book -bookcase -bookcases -booked -bookend -bookends -booker -bookie -bookies -booking -bookings -bookish -bookkeeper -bookkeepers -bookkeeping -bookmaker -bookmakers -bookmaking -bookmark -bookmarked -bookmarking -bookmarks -books -bookshop -bookshops -bookstore -bookstores -bookworm -bookworms -boom -boomed -boomerang -boomeranged -boomeranging -boomerangs -booming -booms -boon -boondocks -boone -boons -boor -boorish -boors -boos -boost -boosted -booster -boosters -boosting -boosts -boot -booted -bootee -bootees -booth -booths -bootie -booties -booting -boots -bootstrap -bootstraps -booty -booze -boozed -boozer -boozers -boozes -boozier -booziest -boozing -boozy -bop -bopped -bopping -bops -borax -bordeaux -borden -border -bordered -bordering -borders -bordon -bore -boreas -bored -boredom -borer -borers -bores -borg -borges -borgia -boring -boris -bork -born -borne -borneo -borobudur -borodin -boron -borough -boroughs -borrow -borrowed -borrower -borrowers -borrowing -borrows -borsch -borscht -boru -bos -bosch -bose -bosh -bosnia -bosom -bosoms -bosporus -boss -bossed -bosses -bossier -bossiest -bossiness -bossing -bossy -boston -bostonian -bostons -bosun -bosuns -botanist -botanists -botany -botch -botched -botches -botching -both -bother -bothered -bothering -bothers -bothersome -botnet -botnets -botox -botswana -bottom -bottomed -bottoming -bottoms -boudoir -boudoirs -bouffant -bouffants -bough -boughs -bought -bounce -bounced -bouncer -bouncers -bounces -bouncier -bounciest -bouncing -bouncy -bound -boundaries -boundary -bounded -bounden -bounder -bounders -bounding -bounds -bounteous -bounties -bounty -bouquet -bouquets -bourbaki -bourbon -bourgeois -bourgeoisie -bournemouth -bout -boutique -boutiques -bouts -bovary -bovine -bovines -bow -bowditch -bowed -bowen -bower -bowers -bowery -bowie -bowing -bowman -bowmen -bows -bowsprit -bowsprits -bowstring -bowstrings -box -boxcar -boxcars -boxed -boxer -boxers -boxes -boxing -boxwood -boy -boycott -boycotted -boycotting -boycotts -boyd -boyer -boyfriend -boyfriends -boyhood -boyhoods -boyish -boyishness -boys -boysenberries -boysenberry -bozo -bozos -bra -brace -braced -braces -bracing -bracken -bracket -bracketed -bracketing -brackets -brackish -bract -bracts -brad -bradbury -braddock -bradford -brads -bradshaw -bradstreet -brady -brag -bragg -braggart -braggarts -bragged -bragger -braggers -bragging -brags -brahe -brahma -brahmagupta -brahman -brahmanism -brahmanisms -brahmans -brahmaputra -brahmas -brahmin -brahmins -brahms -braid -braided -braiding -braids -brain -brained -brainier -brainiest -braining -brains -brainstorm -brainstormed -brainstorming -brainstorms -brainteaser -brainteasers -brainwash -brainwashed -brainwashes -brainwashing -brainy -braise -braised -braises -braising -brake -braked -brakeman -brakemen -brakes -braking -brampton -bran -branch -branched -branches -branching -brand -branded -brandeis -branden -brandenburg -brandi -brandie -brandied -brandies -branding -brandish -brandished -brandishes -brandishing -brando -brandon -brands -brandt -brandy -brandying -brant -braque -bras -brash -brasher -brashest -brashness -brass -brasses -brassier -brassiere -brassieres -brassiest -brassy -brat -brats -brattain -brattier -brattiest -bratty -bravado -brave -braved -braver -bravery -braves -bravest -braving -bravo -bravos -bravura -bravuras -brawn -brawnier -brawniest -brawniness -brawny -bray -brayed -braying -brays -brazen -brazened -brazening -brazenness -brazens -brazier -braziers -brazos -breach -breached -breaches -breaching -bread -breadbasket -breadbaskets -breaded -breadfruit -breadfruits -breading -breads -breadth -breadths -breadwinner -breadwinners -break -breakage -breakages -breakdown -breakdowns -breaker -breakers -breakfast -breakfasted -breakfasting -breakfasts -breaking -breakneck -breakpoints -breaks -breakspear -breakthrough -breakthroughs -breakup -breakups -breakwater -breakwaters -breast -breastbone -breastbones -breasted -breasting -breasts -breaststroke -breaststrokes -breastwork -breastworks -breath -breathe -breathed -breather -breathers -breathes -breathier -breathiest -breathing -breaths -breathtaking -breathy -brecht -breckenridge -bred -breech -breeches -breed -breeder -breeders -breeding -breeds -breeze -breezed -breezes -breezier -breeziest -breeziness -breezing -breezy -bremen -brenda -brendan -brennan -brenner -brent -brenton -brest -bret -brethren -breton -brett -breviaries -breviary -brevity -brew -brewed -brewer -breweries -brewers -brewery -brewing -brews -brewster -brexit -brezhnev -brian -briana -brianna -briar -briars -bribe -bribed -bribery -bribes -bribing -brice -brick -brickbat -brickbats -bricked -bricking -bricks -bride -bridegroom -bridegrooms -brides -bridesmaid -bridesmaids -bridge -bridged -bridgehead -bridgeheads -bridgeport -bridger -bridges -bridget -bridgetown -bridgett -bridgette -bridgework -bridging -bridgman -brie -brief -briefcase -briefcases -briefed -briefer -briefest -briefing -briefings -briefness -briefs -brier -briers -brig -brigade -brigades -brigadoon -brigand -brigandage -brigands -brigantine -brigantines -briggs -brigham -bright -brighten -brightened -brightening -brightens -brighter -brightest -brightness -brighton -brigid -brigitte -brigs -brim -brimmed -brimming -brims -brimstone -brine -bring -bringing -brings -brinier -briniest -brink -brinkmanship -brinks -brinksmanship -briny -briquet -briquets -briquette -briquettes -brisbane -brisk -brisked -brisker -briskest -brisket -briskets -brisking -briskness -brisks -brit -britain -britannia -britannic -britannica -britches -british -britisher -britney -briton -britons -brits -britt -brittany -britten -brittney -brno -broach -broached -broaches -broaching -broad -broadband -broadcast -broadcasted -broadcaster -broadcasters -broadcasting -broadcasts -broaden -broadened -broadening -broadens -broader -broadest -broadness -broads -broadside -broadsided -broadsides -broadsiding -broadsword -broadswords -broadway -broadways -brobdingnag -brobdingnagian -brocade -brocaded -brocades -brocading -brochure -brochures -brock -brogan -brogans -brogue -brogues -brokaw -broke -broken -brokenhearted -broker -brokerage -brokerages -brokered -brokering -brokers -bromide -bromides -bromine -bronchi -bronchitis -broncho -bronchos -bronchus -bronco -broncos -bronson -bronte -brontosaur -brontosauri -brontosaurs -brontosaurus -brontosauruses -bronx -bronze -bronzed -bronzes -bronzing -brooch -brooches -brood -brooded -brooder -brooders -brooding -broods -brook -brooke -brooked -brooking -brooks -broom -brooms -broomstick -broomsticks -broth -brother -brotherhood -brotherhoods -brothers -broths -brought -brouhaha -brouhahas -brow -browbeat -browbeaten -browbeating -browbeats -brown -browne -browned -browner -brownest -brownian -brownie -brownies -browning -brownish -brownout -brownouts -browns -brownshirt -brownstone -brownstones -brows -browse -browsed -browser -browsers -browses -browsing -brr -brubeck -bruce -bruckner -bruin -bruins -bruise -bruised -bruiser -bruisers -bruises -bruising -brunch -brunched -brunches -brunching -brunei -brunet -brunets -brunette -brunettes -bruno -brunswick -brunt -brush -brushed -brushes -brushing -brushwood -brusk -brusker -bruskest -bruskness -brusque -brusqueness -brusquer -brusquest -brut -brute -brutes -brutish -brutus -bryan -bryant -bryce -brynner -bryon -brzezinski -bsd -btc -btu -buber -buccaneer -buccaneered -buccaneering -buccaneers -buchanan -bucharest -buck -buckboard -buckboards -bucked -bucket -bucketed -bucketing -buckets -buckeye -buckeyes -bucking -buckingham -buckner -buckram -bucks -bucksaw -bucksaws -buckshot -buckskin -buckskins -buckteeth -bucktooth -bucktoothed -buckwheat -bud -budapest -budded -buddha -buddhas -buddhism -buddhisms -buddhist -buddhists -buddies -budding -buddings -buddy -budge -budged -budgerigar -budgerigars -budges -budget -budgetary -budgeted -budgeting -budgets -budgie -budgies -budging -buds -budweiser -buff -buffed -buffer -buffered -buffering -buffers -buffet -buffeted -buffeting -buffets -buffing -buffoon -buffoonery -buffoons -buffs -buffy -buford -bug -bugaboo -bugaboos -bugatti -bugbear -bugbears -bugged -bugger -buggers -buggier -buggies -buggiest -bugging -buggy -bugs -buick -bujumbura -bukhara -bukharin -bum -bummed -bummer -bummers -bummest -bumming -bump -bumped -bumper -bumpers -bumpier -bumpiest -bumping -bumpkin -bumpkins -bumppo -bumps -bumptious -bumpy -bums -bun -bunch -bunche -bunched -bunches -bunching -buncombe -bundesbank -bundestag -bung -bunged -bunging -bungs -bunin -bunion -bunions -bunk -bunked -bunker -bunkers -bunkhouse -bunkhouses -bunking -bunks -bunkum -bunnies -bunny -buns -bunsen -bunt -bunted -bunting -buntings -bunts -bunyan -buoy -buoyancy -buoyant -buoyed -buoying -buoys -bur -burbank -burberry -burch -burden -burdened -burdening -burdens -burdensome -burdock -bureau -bureaucracies -bureaucracy -bureaucrat -bureaucratic -bureaucrats -bureaus -bureaux -burg -burgeon -burgeoned -burgeoning -burgeons -burger -burgers -burgess -burgher -burghers -burgoyne -burgs -burgundian -burgundies -burgundy -buried -buries -burka -burkas -burke -burkha -burkhas -burks -burma -burmese -burn -burned -burner -burners -burnett -burning -burnish -burnished -burnishes -burnishing -burnoose -burnooses -burnous -burnouses -burnout -burnouts -burns -burnside -burnt -burp -burped -burping -burps -burqa -burqas -burr -burred -burring -burris -burrito -burritos -burro -burros -burroughs -burrow -burrowed -burrowing -burrows -burrs -burs -bursa -bursar -bursars -bursitis -burst -bursted -bursting -bursts -burt -burton -burundi -bury -burying -bus -busbies -busboy -busboys -busby -busch -bused -buses -bush -bushed -bushes -bushido -bushier -bushiest -bushiness -bushing -bushings -bushman -bushmen -bushwhack -bushwhacked -bushwhacker -bushwhackers -bushwhacking -bushwhacks -bushy -busied -busier -busies -busiest -business -businesses -businessman -businessmen -businesswoman -businesswomen -busing -buss -bussed -busses -bussing -bust -busted -buster -busters -busting -busts -busy -busybodies -busybody -busying -busyness -busywork -but -butane -butch -butcher -butchered -butcheries -butchering -butchers -butchery -butches -buts -butt -butte -butted -butter -buttercup -buttercups -buttered -butterfat -butterfingers -butterier -butteries -butteriest -buttering -butternut -butternuts -butters -butterscotch -buttery -buttes -butting -buttock -buttocks -button -buttoned -buttoning -buttons -buttress -buttressed -buttresses -buttressing -butts -buxom -buxtehude -buy -buyer -buyers -buying -buyout -buyouts -buys -buzz -buzzard -buzzards -buzzed -buzzer -buzzers -buzzes -buzzing -buzzword -buzzwords -bye -byers -byes -bygone -bygones -bypass -bypassed -bypasses -bypassing -bypast -byproduct -byproducts -byrd -byron -byronic -bystander -bystanders -byte -bytes -byway -byways -byword -bywords -byzantine -byzantines -byzantium -cab -cabana -cabanas -cabaret -cabarets -cabbage -cabbages -cabbed -cabbie -cabbies -cabbing -cabby -cabernet -cabin -cabinet -cabinetmaker -cabinetmakers -cabinets -cabins -caboose -cabooses -cabot -cabrera -cabrini -cabs -cacao -cacaos -cache -cached -caches -cachet -cachets -caching -cacophonies -cacophonous -cacophony -cacti -cactus -cactuses -cad -cadaver -cadaverous -cadavers -caddie -caddied -caddies -caddish -caddy -caddying -cadence -cadences -cadenza -cadenzas -cadet -cadets -cadge -cadged -cadger -cadgers -cadges -cadging -cadiz -cadmium -cadre -cadres -cads -caducei -caduceus -caedmon -caesar -caesarean -caesareans -caesarian -caesarians -caesars -caesium -caesura -caesurae -caesuras -cafeteria -cafeterias -caffeinated -caffeine -caftan -caftans -cage -caged -cages -cagey -cageyness -cagier -cagiest -caginess -caging -cagney -cagy -cahokia -cahoot -cahoots -caiaphas -cain -cains -cairn -cairns -cairo -caisson -caissons -cajun -cajuns -cake -caked -cakes -caking -cam -camacho -camaraderie -camber -cambered -cambering -cambers -cambia -cambium -cambiums -cambodia -cambodian -cambodians -cambrian -cambric -cambridge -camcorder -camcorders -came -camembert -camemberts -cameo -cameos -camera -cameraman -cameramen -cameras -camerawoman -camerawomen -cameron -cameroon -cameroons -camoens -camp -campaign -campaigned -campaigner -campaigners -campaigning -campaigns -camped -camper -campers -campfire -campfires -campground -campgrounds -camphor -campier -campiest -campinas -camping -campos -camps -campsite -campsites -campus -campuses -campy -camry -cams -camshaft -camshafts -camus -can -canaan -canada -canadian -canadians -canard -canards -canaries -canary -canasta -canberra -cancan -cancans -cancer -cancerous -cancers -cancun -candace -candice -candid -candidacies -candidacy -candidate -candidates -candide -candidness -candied -candies -candor -candour -candy -candying -cane -caned -canes -canine -canines -caning -canister -canisters -canker -cankered -cankering -cankerous -cankers -cannabis -cannabises -canned -canneries -cannery -cannes -cannier -canniest -canniness -canning -cannon -cannonade -cannonaded -cannonades -cannonading -cannoned -cannoning -cannons -cannot -canny -canoe -canoed -canoeing -canoeist -canoeists -canoes -canon -canonisation -canonisations -canonise -canonised -canonises -canonising -canonization -canonizations -canonize -canonized -canonizes -canonizing -canons -canopied -canopies -canopus -canopy -canopying -cans -cant -cantabrigian -cantankerous -cantankerousness -cantata -cantatas -canted -canteen -canteens -canter -canterbury -cantered -cantering -canters -canting -canto -canton -cantonese -cantons -cantor -cantors -cantos -cants -cantu -canute -canvas -canvasback -canvasbacks -canvased -canvases -canvasing -canvass -canvassed -canvasser -canvassers -canvasses -canvassing -canyon -canyons -cap -capacious -capaciousness -capacitance -capacities -capacitor -capacitors -capacity -caparison -caparisoned -caparisoning -caparisons -cape -caped -capek -caper -capered -capering -capers -capes -capet -capetian -capetown -caph -capistrano -capon -capone -capons -capote -capped -capping -cappuccino -cappuccinos -capra -capri -caprice -caprices -capricious -capriciousness -capricorn -capricorns -caps -capsize -capsized -capsizes -capsizing -capstan -capstans -captain -captaincies -captaincy -captained -captaining -captains -caption -captioned -captioning -captions -captious -captivate -captivated -captivates -captivating -captivation -captive -captives -captivities -captivity -captor -captors -capture -captured -captures -capturing -capuchin -car -cara -caracas -carafe -carafes -carapace -carapaces -carat -carats -caravaggio -caravan -caravans -caraway -caraways -carbide -carbides -carbine -carbines -carbohydrate -carbohydrates -carbon -carbonate -carbonated -carbonates -carbonating -carbonation -carboniferous -carbons -carborundum -carboy -carboys -carbs -carburetor -carburetors -carburetter -carburetters -carburettor -carburettors -carcass -carcasses -carcinogen -carcinogenic -carcinogenics -carcinogens -carcinoma -carcinomas -carcinomata -card -cardboard -carded -cardenas -cardiac -cardiff -cardigan -cardigans -cardin -carding -cardio -cardiogram -cardiograms -cardozo -cards -cardsharp -cardsharps -care -cared -careen -careened -careening -careens -career -careered -careering -careers -carefree -caregiver -caregivers -cares -caress -caressed -caresses -caressing -caret -caretaker -caretakers -carets -careworn -carey -carfare -cargo -cargoes -cargos -carib -caribbean -caribbeans -caribou -caribous -caricature -caricatured -caricatures -caricaturing -caricaturist -caricaturists -caries -carina -caring -carissa -carjack -carjacked -carjacker -carjackers -carjacking -carjackings -carjacks -carmen -carmine -carmines -carnage -carnap -carnation -carnations -carnegie -carney -carnivore -carnivores -carnivorous -carnot -carom -caromed -caroming -caroms -carotid -carotids -carouse -caroused -carouser -carousers -carouses -carousing -carp -carpathian -carpathians -carped -carpenter -carpentered -carpentering -carpenters -carpentry -carpet -carpetbag -carpetbagged -carpetbagger -carpetbaggers -carpetbagging -carpetbags -carpeted -carpeting -carpets -carpi -carping -carport -carports -carps -carpus -carr -carranza -carriage -carriages -carriageway -carrie -carried -carrier -carriers -carries -carrion -carrot -carrots -carry -carrying -carryout -cars -carsick -carsickness -carson -cart -carted -carter -cartesian -carthage -carthaginian -cartier -carting -cartographer -cartographers -cartography -carton -cartons -cartoon -cartooned -cartooning -cartoonist -cartoonists -cartoons -cartridge -cartridges -carts -cartwright -caruso -carve -carved -carver -carvers -carves -carving -carvings -cary -caryatid -caryatides -caryatids -casandra -casanova -casanovas -cascade -cascaded -cascades -cascading -case -cased -casein -casement -casements -cases -casework -caseworker -caseworkers -casey -cash -cashback -cashed -cashes -cashew -cashews -cashier -cashiered -cashiering -cashiers -cashing -cashmere -casing -casings -casino -casinos -casio -cask -casket -caskets -casks -caspar -caspian -cassandra -cassatt -cassava -cassavas -cassette -cassettes -cassia -cassias -cassie -cassino -cassinos -cassiopeia -cassius -cassock -cassocks -cast -castaneda -castanet -castanets -castaway -castaways -caste -caster -casters -castes -castigate -castigated -castigates -castigating -castigation -castigator -castigators -casting -castings -castoff -castoffs -castor -castors -castrate -castrated -castrates -castrating -castration -castrations -castries -castro -casts -casuist -casuistry -casuists -cat -catacomb -catacombs -catamaran -catamarans -cataract -cataracts -catarrh -catastrophe -catastrophes -catastrophic -catatonic -catatonics -catawba -catbird -catbirds -catboat -catboats -catch -catcher -catchers -catches -catchier -catchiest -catching -catchings -catchment -catchphrase -catchup -catchword -catchwords -catchy -catechise -catechised -catechises -catechising -catechism -catechisms -catechize -catechized -catechizes -catechizing -categories -categorisation -categorisations -categorise -categorised -categorises -categorising -categorization -categorizations -categorize -categorized -categorizes -categorizing -category -cater -catered -caterer -caterers -catering -caterings -caters -catfish -catfishes -catgut -catharses -catharsis -cathartic -cathartics -cathay -cather -catherine -catheter -catheters -cathode -cathodes -cathryn -cathy -cation -cations -catkin -catkins -catnap -catnapped -catnapping -catnaps -catnip -cato -cats -catsup -catt -cattier -cattiest -cattiness -catty -caucasian -caucasians -caucasoid -caucasus -cauchy -caucus -caucused -caucuses -caucusing -caucussed -caucussing -caught -causation -causative -cause -caused -causes -causeway -causeways -causing -caustic -caustics -cauterise -cauterised -cauterises -cauterising -cauterize -cauterized -cauterizes -cauterizing -caution -cautionary -cautioned -cautioning -cautions -cautious -cautiousness -cave -caveat -caveats -caved -caveman -cavemen -cavendish -cavern -cavernous -caverns -caves -caviar -caviare -caving -cavities -cavity -cavort -cavorted -cavorting -cavorts -cavour -caw -cawed -cawing -caws -caxton -cayenne -cayman -cayuga -cease -ceased -ceasefire -ceases -ceasing -ceausescu -cebu -cebuano -cedar -cedars -cede -ceded -cedes -ceding -cedric -cement -cemented -cementing -cements -cemeteries -cemetery -cenotaph -cenotaphs -cenozoic -censer -censers -censor -censored -censoring -censorious -censors -censorship -censure -censured -censures -censuring -census -censused -censuses -censusing -cent -centaur -centaurs -centaurus -centenarian -centenarians -centenaries -centenary -center -centered -centering -centerpiece -centerpieces -centers -centigrade -centigram -centigramme -centigrammes -centigrams -centime -centimes -centimeter -centimeters -centimetre -centimetres -centipede -centipedes -centre -centred -centrepiece -centrepieces -centres -centrifuge -centrifuged -centrifuges -centrifuging -centring -centrist -centrists -cents -centuries -centurion -centurions -century -cepheid -cepheus -ceramic -ceramics -cerberus -cerebra -cerebrum -cerebrums -ceremonies -ceremonious -ceremony -cerenkov -ceres -cerf -cerise -certain -certainties -certainty -certificate -certificated -certificates -certificating -certification -certifications -certified -certifies -certify -certifying -certitude -cervantes -cervices -cervix -cervixes -cesar -cesarean -cesareans -cesarian -cesarians -cesium -cessation -cessations -cession -cessions -cessna -cetacean -cetaceans -cetus -cezanne -chad -chadwick -chafe -chafed -chafes -chaff -chaffed -chaffinch -chaffinches -chaffing -chaffs -chafing -chagrin -chagrined -chagrining -chagrinned -chagrinning -chagrins -chain -chained -chaining -chains -chainsaw -chainsawed -chainsawing -chainsaws -chair -chaired -chairing -chairman -chairmanship -chairmen -chairperson -chairpersons -chairs -chairwoman -chairwomen -chaise -chaises -chaitanya -chaitin -chamber -chambermaid -chambermaids -chambers -chambray -chammies -chammy -chamois -chamoix -champ -champagne -champagnes -champed -champing -champion -championed -championing -champions -championship -championships -champs -chan -chance -chanced -chanceries -chancery -chances -chancier -chanciest -chancing -chancy -chandigarh -chandon -chandra -chandragupta -chandrasekhar -chaney -chang -changchun -change -changed -changeover -changeovers -changes -changing -changsha -chant -chanted -chanter -chanters -chantey -chanteys -chanties -chanting -chants -chanty -chanukah -chanukahs -chaos -chaotic -chap -chaperon -chaperone -chaperoned -chaperones -chaperoning -chaperons -chapman -chappaquiddick -chapped -chapping -chaps -chapt -chapter -chapters -char -character -characterisation -characterisations -characterise -characterised -characterises -characterising -characteristic -characteristics -characterization -characterizations -characterize -characterized -characterizes -characterizing -characters -charade -charades -charbray -chardonnay -charge -charged -charger -chargers -charges -charging -charier -chariest -chariot -charioteer -charioteers -chariots -charisma -charismatic -charismatics -charities -charity -charm -charmaine -charmed -charmer -charmers -charmin -charming -charms -charon -charred -charring -chars -chart -charted -charter -chartered -chartering -charters -charting -chartism -chartres -chartreuse -charts -charwoman -charwomen -chary -charybdis -chase -chased -chaser -chasers -chases -chasing -chasity -chasm -chasms -chassis -chaste -chasten -chastened -chastening -chastens -chaster -chastest -chastise -chastised -chastisement -chastisements -chastises -chastising -chastity -chat -chateaubriand -chateaus -chats -chattahoochee -chattanooga -chatted -chatter -chatterbox -chatterboxes -chattered -chatterer -chatterers -chattering -chatters -chatterton -chattier -chattiest -chattiness -chatting -chatty -chaucer -chauffeur -chauffeured -chauffeuring -chauffeurs -chauncey -chautauqua -chauvinism -chauvinist -chauvinistic -chauvinists -chavez -chayefsky -che -cheap -cheapen -cheapened -cheapening -cheapens -cheaper -cheapest -cheapness -cheapskate -cheapskates -cheat -cheated -cheater -cheaters -cheating -cheats -chechen -chechnya -check -checkbook -checkbooks -checked -checker -checkerboard -checkerboards -checkered -checkering -checkers -checking -checkmate -checkmated -checkmates -checkmating -checkout -checkouts -checkpoint -checkpoints -checkroom -checkrooms -checks -checkup -checkups -cheddar -cheek -cheekbone -cheekbones -cheeked -cheekier -cheekiest -cheekiness -cheeking -cheeks -cheeky -cheep -cheeped -cheeping -cheeps -cheer -cheered -cheerier -cheeriest -cheeriness -cheering -cheerios -cheers -cheery -cheese -cheeseburger -cheeseburgers -cheesecake -cheesecakes -cheesed -cheeses -cheesier -cheesiest -cheesing -cheesy -cheetah -cheetahs -cheetos -cheever -chef -chefs -chekhov -chemise -chemises -chemist -chemistry -chemists -chemotherapy -chen -cheney -chengdu -chennai -cheops -cheque -chequebook -chequebooks -chequed -chequer -chequerboard -chequerboards -chequered -chequering -chequers -cheques -chequing -cheri -cherie -cherish -cherished -cherishes -cherishing -chernenko -chernomyrdin -cherokee -cherokees -cheroot -cheroots -cherries -cherry -cherub -cherubic -cherubim -cherubims -cherubs -chesapeake -cheshire -chess -chessboard -chessboards -chessman -chessmen -chest -chester -chesterton -chestnut -chestnuts -chests -cheviot -chevron -chevrons -chevy -chew -chewed -chewer -chewers -chewier -chewiest -chewing -chews -chewy -cheyenne -cheyennes -chi -chianti -chiantis -chiaroscuro -chiba -chibcha -chic -chicago -chicagoan -chicana -chicaneries -chicanery -chicano -chicer -chicest -chichi -chichis -chick -chickadee -chickadees -chickasaw -chicken -chickened -chickening -chickenpox -chickens -chickpea -chickpeas -chicks -chickweed -chicories -chicory -chid -chidden -chide -chided -chides -chiding -chief -chiefer -chiefest -chiefs -chieftain -chieftains -chiffon -chigger -chiggers -chignon -chignons -chihuahua -chihuahuas -chimaera -chimaeras -chimborazo -chime -chimed -chimera -chimeras -chimes -chiming -chimney -chimneys -chimp -chimpanzee -chimpanzees -chimps -chimu -chin -china -chinatown -chinese -chink -chinked -chinking -chinks -chinned -chinning -chino -chinook -chinooks -chinos -chins -chinstrap -chinstraps -chintz -chintzier -chintziest -chintzy -chip -chipewyan -chipmunk -chipmunks -chipped -chipper -chippers -chippewa -chipping -chips -chiquita -chirico -chiropodist -chiropodists -chiropody -chiropractic -chiropractics -chiropractor -chiropractors -chirp -chirped -chirping -chirps -chirrup -chirruped -chirruping -chirrupped -chirrupping -chirrups -chisinau -chit -chitchat -chitchats -chitchatted -chitchatting -chitin -chits -chittagong -chivas -chive -chives -chock -chocked -chocking -chocks -choctaw -choice -choicer -choices -choicest -choir -choirs -choke -choked -choker -chokers -chokes -choking -chomp -chomped -chomping -chomps -chomsky -chongqing -choose -chooses -choosey -choosier -choosiest -choosing -choosy -chop -chopin -chopped -chopper -choppered -choppering -choppers -choppier -choppiest -choppiness -chopping -choppy -chopra -chops -chopstick -chopsticks -chord -chords -chore -choreograph -choreographed -choreographer -choreographers -choreographic -choreographing -choreographs -choreography -chores -chorister -choristers -chorus -chorused -choruses -chorusing -chorussed -chorussing -chose -chosen -chou -chow -chowder -chowders -chowed -chowing -chows -chretien -chris -christ -christa -christchurch -christen -christendom -christendoms -christened -christening -christenings -christens -christensen -christi -christian -christianities -christianity -christians -christie -christina -christine -christmas -christmases -christoper -christopher -christs -christy -chromatic -chrome -chromed -chromes -chroming -chromium -chromosome -chromosomes -chronic -chronometer -chronometers -chrysanthemum -chrysanthemums -chrysostom -chubbier -chubbiest -chubbiness -chubby -chuck -chucked -chucking -chucks -chug -chugged -chugging -chugs -chukchi -chum -chumash -chummed -chummier -chummiest -chumminess -chumming -chummy -chump -chumps -chums -chung -chungking -chunk -chunkier -chunkiest -chunkiness -chunks -chunky -church -churches -churchgoer -churchgoers -churchman -churchmen -churchyard -churchyards -churn -churned -churning -churns -churriguera -chute -chutes -chutney -chutzpa -chutzpah -chuvash -ciabatta -ciabattas -cicada -cicadae -cicadas -cicatrice -cicatrices -cicatrix -cicero -cid -cider -ciders -cigar -cigaret -cigarets -cigarette -cigarettes -cigars -cimabue -cinch -cinched -cinches -cinching -cinchona -cinchonas -cincinnati -cincture -cinctures -cinder -cindered -cindering -cinders -cindy -cinema -cinemas -cinemascope -cinematic -cinematographer -cinematographers -cinematography -cinerama -cinnabar -cinnamon -cipher -ciphered -ciphering -ciphers -cipro -circa -circadian -circe -circuit -circuited -circuiting -circuitous -circuitry -circuits -circumcise -circumcised -circumcises -circumcising -circumcision -circumcisions -circumference -circumferences -circumnavigate -circumnavigated -circumnavigates -circumnavigating -circumnavigation -circumnavigations -circumscribe -circumscribed -circumscribes -circumscribing -circumscription -circumscriptions -circumspect -circumspection -circumstance -circumstanced -circumstances -circumstancing -circumvent -circumvented -circumventing -circumvention -circumvents -circus -circuses -cirrhosis -cirrus -cisco -cistern -cisterns -citation -citations -cite -cited -cites -citibank -cities -citigroup -citing -citizen -citizenry -citizens -citizenship -citric -citroen -citron -citrons -citrous -citrus -citruses -city -civet -civets -civic -civics -civies -civvies -coach -coached -coaches -coaching -coachman -coachmen -coarse -coarsen -coarsened -coarseness -coarsening -coarsens -coarser -coarsest -coast -coasted -coaster -coasters -coasting -coasts -coat -coated -coating -coatings -coats -coauthor -coauthored -coauthoring -coauthors -coax -coaxed -coaxes -coaxing -cob -cobain -cobb -cobra -cobras -cobs -cobweb -cobwebs -cocaine -cocci -coccis -coccus -coccyges -coccyx -coccyxes -cochabamba -cochin -cochise -cochran -cock -cockade -cockades -cockamamie -cockatoo -cockatoos -cocked -cockeyed -cockfight -cockfights -cockier -cockiest -cockiness -cocking -cockney -cockneys -cockpit -cockpits -cockroach -cockroaches -cocks -cockscomb -cockscombs -cocksucker -cocksuckers -cocksure -cocky -cocoa -cocoanut -cocoanuts -cocoas -coconut -coconuts -cocoon -cocooned -cocooning -cocoons -cocteau -cod -coda -codas -codded -codding -code -coded -codeine -codependency -codependent -codependents -codes -codex -codfish -codfishes -codger -codgers -codices -codification -codifications -codified -codifies -codify -codifying -coding -cods -cody -coed -coeds -coeducation -coefficient -coefficients -coerce -coerced -coerces -coercing -coercion -coercive -coexist -coexisted -coexistence -coexisting -coexists -coffee -coffeecake -coffeecakes -coffeehouse -coffeehouses -coffeepot -coffeepots -coffees -coffer -coffers -coffey -coffin -coffined -coffining -coffins -cog -cogency -cogent -cogitate -cogitated -cogitates -cogitating -cogitation -cognac -cognacs -cognate -cognates -cognisance -cognisant -cognition -cognitive -cognizance -cognizant -cognomen -cognomens -cognomina -cogs -cohabit -cohabitation -cohabited -cohabiting -cohabits -cohan -cohen -cohere -cohered -coherence -coherent -coheres -cohering -cohesion -cohesive -cohesiveness -cohort -cohorts -coif -coifed -coiffed -coiffing -coiffure -coiffured -coiffures -coiffuring -coifing -coifs -coimbatore -coin -coinage -coinages -coincide -coincided -coincidence -coincidences -coincident -coincides -coinciding -coined -coining -coins -cointreau -coitus -coke -coked -cokes -coking -coma -comanche -comanches -comas -comatose -comb -combat -combatant -combatants -combated -combating -combative -combats -combatted -combatting -combed -combination -combinations -combine -combined -combines -combing -combining -combo -combos -combs -combustion -come -comeback -comebacks -comedian -comedians -comedic -comedienne -comediennes -comedies -comedown -comedowns -comedy -comer -comers -comes -comet -comets -comeuppance -comeuppances -comfier -comfiest -comfort -comforted -comforter -comforters -comforting -comforts -comfy -comic -comics -coming -comings -comintern -comity -comma -command -commandant -commandants -commanded -commandeer -commandeered -commandeering -commandeers -commander -commanders -commanding -commandment -commandments -commando -commandoes -commandos -commands -commas -commemorate -commemorated -commemorates -commemorating -commemoration -commemorations -commemorative -commence -commenced -commencement -commencements -commences -commencing -commend -commendation -commendations -commended -commending -commends -commensurate -comment -commentaries -commentary -commentate -commentated -commentates -commentating -commentator -commentators -commented -commenting -comments -commerce -commiserate -commiserated -commiserates -commiserating -commiseration -commiserations -commissar -commissariat -commissariats -commissaries -commissars -commissary -commission -commissioned -commissioner -commissioners -commissioning -commissions -commit -commitment -commitments -commits -committed -committee -committees -committing -commode -commodes -commodious -commodities -commodity -commodore -commodores -common -commoner -commoners -commonest -commons -commotion -commotions -commune -communed -communes -communicant -communicants -communicate -communicated -communicates -communicating -communication -communications -communicative -communicator -communicators -communing -communion -communions -communique -communiques -communism -communist -communistic -communists -communities -community -commutation -commutations -commutative -commute -commuted -commuter -commuters -commutes -commuting -como -comoros -compact -compacted -compacter -compactest -compacting -compaction -compactness -compactor -compactors -compacts -companies -companion -companions -companionship -companionway -companionways -company -compaq -comparative -comparatives -compare -compared -compares -comparing -comparison -comparisons -compartment -compartments -compass -compassed -compasses -compassing -compassion -compassionate -compatriot -compatriots -compendia -compendium -compendiums -compensate -compensated -compensates -compensating -compensation -compensations -compensatory -compete -competed -competence -competences -competencies -competency -competent -competes -competing -competition -competitions -competitive -competitiveness -competitor -competitors -component -components -comport -comported -comporting -comportment -comports -compose -composed -composer -composers -composes -composing -composite -composites -composition -compositions -compositor -compositors -compost -composted -composting -composts -composure -compote -compotes -compound -compounded -compounding -compounds -comprehend -comprehended -comprehending -comprehends -comprehension -comprehensions -comprehensive -comprehensiveness -comprehensives -compress -compressed -compresses -compressing -compression -compressor -compressors -comprise -comprised -comprises -comprising -compromise -compromised -compromises -compromising -compton -compunction -compunctions -compuserve -computation -computations -compute -computed -computer -computerisation -computerise -computerised -computerises -computerising -computerization -computerize -computerized -computerizes -computerizing -computers -computes -computing -comrade -comrades -comradeship -comte -con -conakry -conan -concatenate -concatenated -concatenates -concatenating -concatenation -concatenations -concave -concavities -concavity -concede -conceded -concedes -conceding -conceit -conceited -conceits -conceive -conceived -conceives -conceiving -concentrate -concentrated -concentrates -concentrating -concentration -concentrations -concentric -concept -conception -conceptions -concepts -concern -concerned -concerning -concerns -concert -concerted -concerti -concertina -concertinaed -concertinaing -concertinas -concerting -concertmaster -concertmasters -concerto -concertos -concerts -concession -concessionaire -concessionaires -concessions -concetta -conch -conches -conchs -concierge -concierges -concise -conciseness -conciser -concisest -concoct -concocted -concocting -concoction -concoctions -concocts -concomitant -concomitants -concord -concordance -concordances -concordant -concorde -concords -concourse -concourses -concrete -concreted -concretes -concreting -concubine -concubines -concur -concurred -concurrence -concurrences -concurrency -concurrent -concurring -concurs -concussion -concussions -condemn -condemnation -condemnations -condemnatory -condemned -condemning -condemns -condensation -condensations -condense -condensed -condenser -condensers -condenses -condensing -condescend -condescended -condescending -condescends -condescension -condiment -condiments -condition -conditioned -conditioner -conditioners -conditioning -conditions -condo -condoes -condom -condominium -condominiums -condoms -condone -condoned -condones -condoning -condor -condorcet -condors -condos -conduce -conduced -conduces -conducing -conducive -conduct -conducted -conducting -conduction -conductive -conductivity -conductor -conductors -conducts -conduit -conduits -cone -cones -conestoga -confab -confabbed -confabbing -confabs -confection -confectioner -confectioneries -confectioners -confectionery -confections -confederacies -confederacy -confederate -confederated -confederates -confederating -confederation -confederations -confer -conference -conferences -conferencing -conferment -conferments -conferred -conferrer -conferring -confers -confess -confessed -confesses -confessing -confession -confessions -confessor -confessors -confetti -confidant -confidante -confidantes -confidants -confide -confided -confidence -confidences -confident -confides -confiding -configuration -configurations -configure -configured -configures -configuring -confine -confined -confinement -confinements -confines -confining -confirm -confirmation -confirmations -confirmatory -confirmed -confirming -confirms -confiscate -confiscated -confiscates -confiscating -confiscation -confiscations -conform -conformance -conformation -conformations -conformed -conforming -conformist -conformists -conformity -conforms -confound -confounded -confounding -confounds -confront -confrontation -confrontations -confronted -confronting -confronts -confucian -confucianism -confucianisms -confucians -confucius -confuse -confused -confuses -confusing -confusion -confusions -confute -confuted -confutes -confuting -conga -congaed -congaing -congas -congest -congested -congesting -congestion -congestive -congests -congo -congregate -congregated -congregates -congregating -congregation -congregations -congress -congresses -congressman -congressmen -congresswoman -congresswomen -congreve -congruence -congruent -congruities -congruity -congruous -conic -conics -conifer -coniferous -conifers -conjecture -conjectured -conjectures -conjecturing -conjoin -conjoined -conjoining -conjoins -conjoint -conjugate -conjugated -conjugates -conjugating -conjugation -conjugations -conjunction -conjunctions -conjunctive -conjunctives -conjunctivitis -conjuncture -conjunctures -conjure -conjured -conjurer -conjurers -conjures -conjuring -conjuror -conjurors -conk -conked -conking -conks -connect -connected -connecter -connecters -connecticut -connecting -connection -connections -connective -connectives -connectivity -connector -connectors -connects -conned -connemara -conner -connery -connexion -connexions -connie -conning -connivance -connive -connived -conniver -connivers -connives -conniving -connoisseur -connoisseurs -connors -connotation -connotations -connotative -connote -connoted -connotes -connoting -conquer -conquered -conquering -conqueror -conquerors -conquers -conquest -conquests -conquistador -conquistadores -conquistadors -conrad -cons -consanguinity -conscience -consciences -conscientious -conscientiousness -conscious -consciousness -consciousnesses -conscript -conscripted -conscripting -conscription -conscripts -consecrate -consecrated -consecrates -consecrating -consecration -consecrations -consecutive -consensus -consensuses -consent -consented -consenting -consents -consequence -consequences -consequent -conservation -conservationist -conservationists -conservatism -conservative -conservatives -conservator -conservatories -conservators -conservatory -conserve -conserved -conserves -conserving -consider -considerate -consideration -considerations -considered -considering -considers -consign -consigned -consigning -consignment -consignments -consigns -consist -consisted -consistencies -consistency -consistent -consisting -consists -consonance -consonances -consonant -consonants -consort -consorted -consortia -consorting -consortium -consortiums -consorts -conspicuous -conspiracies -conspiracy -conspirator -conspirators -conspire -conspired -conspires -conspiring -constance -constancy -constant -constantine -constants -consternation -constipate -constipated -constipates -constipating -constipation -constituencies -constituency -constituent -constituents -constitute -constituted -constitutes -constituting -constitution -constitutions -constrain -constrained -constraining -constrains -constraint -constraints -constrict -constricted -constricting -constriction -constrictions -constrictive -constrictor -constrictors -constricts -construct -constructed -constructing -construction -constructions -constructive -constructor -constructors -constructs -construe -construed -construes -construing -consume -consumed -consumer -consumerism -consumers -consumes -consuming -consummate -consummated -consummates -consummating -consummation -consummations -consumption -consumptive -consumptives -contact -contacted -contacting -contacts -contagion -contagions -contagious -contain -contained -container -containers -containing -containment -contains -contaminant -contaminants -contaminate -contaminated -contaminates -contaminating -contamination -contemporaneous -contemporaries -contemporary -contempt -contemptuous -contend -contended -contender -contenders -contending -contends -content -contented -contentedness -contenting -contention -contentions -contentious -contentment -contents -contest -contestant -contestants -contested -contesting -contests -context -contexts -contiguity -contiguous -continence -continent -continents -contingencies -contingency -contingent -contingents -continua -continuance -continuances -continuation -continuations -continue -continued -continues -continuing -continuity -continuous -continuum -continuums -contort -contorted -contorting -contortion -contortionist -contortionists -contortions -contorts -contour -contoured -contouring -contours -contraband -contraception -contraceptive -contraceptives -contract -contracted -contracting -contraction -contractions -contractor -contractors -contracts -contradict -contradicted -contradicting -contradiction -contradictions -contradictory -contradicts -contradistinction -contradistinctions -contraption -contraptions -contraries -contrariness -contrariwise -contrary -contrast -contrasted -contrasting -contrasts -contravene -contravened -contravenes -contravening -contravention -contraventions -contreras -contretemps -contribute -contributed -contributes -contributing -contribution -contributions -contributor -contributors -contributory -contrite -contrition -contrivance -contrivances -contrive -contrived -contrives -contriving -controversies -controversy -controvert -controverted -controverting -controverts -contumacious -contuse -contused -contuses -contusing -contusion -contusions -conundrum -conundrums -conurbation -conurbations -convection -convene -convened -convenes -convenience -conveniences -convenient -convening -convent -convention -conventions -convents -converge -converged -convergence -convergences -convergent -converges -converging -conversant -conversation -conversations -converse -conversed -converses -conversing -conversion -conversions -convert -converted -converter -converters -converting -convertor -convertors -converts -convex -convexity -convey -conveyance -conveyances -conveyed -conveyer -conveyers -conveying -conveyor -conveyors -conveys -convict -convicted -convicting -conviction -convictions -convicts -convince -convinced -convinces -convincing -convocation -convocations -convoke -convoked -convokes -convoking -convoy -convoyed -convoying -convoys -conway -coo -cooed -cooing -cook -cookbook -cookbooks -cooke -cooked -cooker -cookeries -cookers -cookery -cookie -cookies -cooking -cookout -cookouts -cooks -cooky -coon -coons -coop -cooped -cooper -cooperate -cooperated -cooperates -cooperating -cooperation -cooperative -cooperatives -coopered -coopering -coopers -cooperstown -cooping -coops -coordinate -coordinated -coordinates -coordinating -coordination -coordinator -coordinators -coors -coos -coot -cootie -cooties -coots -cop -copacabana -cope -copeck -copecks -coped -copenhagen -copernican -copernicus -copes -copied -copier -copiers -copies -coping -copings -copious -copped -copper -copperhead -copperheads -coppers -coppertone -coppery -coppice -coppices -copping -copra -cops -copse -copses -copter -copters -coptic -copy -copycat -copycats -copycatted -copycatting -copying -copyright -copyrighted -copyrighting -copyrights -copywriter -copywriters -coquette -coquetted -coquettes -coquetting -coquettish -cora -cord -corded -cording -cordite -cordoba -cordon -cordoned -cordoning -cordons -cords -corduroy -corduroys -core -cored -cores -corespondent -corespondents -corey -corfu -coriander -corina -corine -coring -corinne -corinth -corinthian -corinthians -cork -corked -corking -corks -corkscrew -corkscrewed -corkscrewing -corkscrews -corm -cormack -cormorant -cormorants -corms -corn -cornbread -corncob -corncobs -cornea -corneas -corned -corner -cornered -cornering -corners -cornerstone -cornerstones -cornet -cornets -cornice -cornices -cornier -corniest -corning -cornish -cornrow -cornrowed -cornrowing -cornrows -corns -cornstarch -cornucopia -cornucopias -corny -corona -coronado -coronae -coronaries -coronary -coronas -coronation -coronations -coroner -coroners -coronet -coronets -corot -corpora -corporate -corporation -corporations -corps -corpse -corpses -corpus -corpuses -correct -corrected -correcter -correctest -correcting -correction -corrections -corrective -correctives -correctness -corrector -corrects -correggio -correspond -corresponded -correspondence -correspondences -correspondent -correspondents -corresponding -corresponds -corridor -corridors -corrine -corroborate -corroborated -corroborates -corroborating -corroboration -corroborations -corroborative -corrode -corroded -corrodes -corroding -corrosion -corrosive -corrosives -corrugate -corrugated -corrugates -corrugating -corrugation -corrugations -corrupt -corrupted -corrupter -corruptest -corrupting -corruption -corruptions -corruptness -corrupts -corsage -corsages -corsair -corsairs -corset -corseted -corseting -corsets -corsica -corsican -cortes -corteses -cortex -cortexes -cortez -cortices -cortisone -coruscate -coruscated -coruscates -coruscating -corvette -corvus -cory -cosby -cosier -cosies -cosiest -cosign -cosignatories -cosignatory -cosigned -cosigner -cosigners -cosigning -cosigns -cosine -cosiness -cosmetic -cosmetics -cosmic -cosmogonies -cosmogony -cosmonaut -cosmonauts -cosmos -cosmoses -cosponsor -cosponsored -cosponsoring -cosponsors -cossack -cost -costar -costarred -costarring -costars -costco -costed -costing -costings -costner -costs -costume -costumed -costumes -costuming -cosy -cot -cote -coterie -coteries -cotes -cotonou -cotopaxi -cots -cottage -cottages -cotter -cotters -cotton -cottoned -cottoning -cottonmouth -cottonmouths -cottons -cottonseed -cottonseeds -cottonwood -cottonwoods -couch -couched -couches -couching -cougar -cougars -cough -coughed -coughing -coughs -count -countdown -countdowns -counted -countenance -countenanced -countenances -countenancing -counter -counteract -counteracted -counteracting -counteraction -counteractions -counteracts -counterattack -counterattacked -counterattacking -counterattacks -countered -counterespionage -counterfeit -counterfeited -counterfeiter -counterfeiters -counterfeiting -counterfeits -countering -countermand -countermanded -countermanding -countermands -counteroffer -counteroffers -counterpane -counterpanes -counterpart -counterparts -counterpoint -counterpoints -counterproductive -counters -countersank -countersign -countersigned -countersigning -countersigns -countersink -countersinking -countersinks -countersunk -countertenor -countertenors -counterweight -counterweights -countess -countesses -counties -counting -countries -countrified -country -countryman -countrymen -countryside -countrysides -countrywoman -countrywomen -counts -county -coup -coupe -couperin -coupes -coupon -coupons -coups -courage -courageous -courbet -courier -couriers -course -coursed -courser -courses -coursing -court -courted -courteous -courteousness -courtesan -courtesans -courtesies -courtesy -courthouse -courthouses -courtier -courtiers -courting -courtney -courtroom -courtrooms -courts -courtship -courtships -courtyard -courtyards -cousin -cousins -cousteau -cove -coven -covenant -covenanted -covenanting -covenants -covens -coventries -coventry -cover -coverage -covered -covering -coverings -covers -covert -coverts -coves -covet -coveted -coveting -covetous -covetousness -covets -covey -coveys -cow -coward -cowardice -cowards -cowbird -cowbirds -cowboy -cowboys -cowed -cower -cowered -cowering -cowers -cowhand -cowhands -cowhide -cowhides -cowing -coworker -coworkers -cowper -cowpoke -cowpokes -cowpox -cowpuncher -cowpunchers -cows -cox -coxcomb -coxcombs -coxswain -coxswains -coy -coyer -coyest -coyness -coyote -coyotes -cozen -cozened -cozening -cozens -cozier -cozies -coziest -coziness -cozy -crab -crabbe -crabbed -crabbier -crabbiest -crabbiness -crabbing -crabby -crabs -crack -crackdown -crackdowns -cracked -cracker -crackerjack -crackerjacks -crackers -cracking -crackpot -crackpots -cracks -crackup -crackups -craft -crafted -craftier -craftiest -craftiness -crafting -crafts -craftsman -craftsmanship -craftsmen -crafty -crag -craggier -craggiest -craggy -crags -craig -cram -crammed -cramming -cramp -cramped -cramping -cramps -crams -cranach -cranberries -cranberry -crane -craned -cranes -crania -craning -cranium -craniums -crank -crankcase -crankcases -cranked -crankier -crankiest -crankiness -cranking -cranks -crankshaft -crankshafts -cranky -cranmer -crannies -cranny -crap -crape -crapes -crapped -crappier -crappiest -crapping -crappy -craps -crash -crashed -crashes -crashing -crass -crasser -crassest -crassness -crate -crated -crater -cratered -cratering -craters -crates -crating -cravat -cravats -crave -craved -craven -cravens -craves -craving -cravings -craw -crawfish -crawfishes -crawford -craws -cray -crayfish -crayfishes -crayon -crayoned -crayoning -crayons -craze -crazed -crazes -crazier -crazies -craziest -craziness -crazing -crazy -creak -creaked -creakier -creakiest -creaking -creaks -creaky -cream -creamed -creamer -creameries -creamers -creamery -creamier -creamiest -creaminess -creaming -creams -creamy -crease -creased -creases -creasing -create -created -creates -creating -creation -creationism -creations -creative -creativeness -creatives -creativity -creator -creators -creature -creatures -crecy -credence -credenza -credenzas -credit -credited -crediting -creditor -creditors -credits -credo -credos -cree -creed -creeds -creek -creeks -creep -creeper -creepers -creepier -creepiest -creepiness -creeping -creeps -creepy -creighton -cremate -cremated -cremates -cremating -cremation -cremations -crematoria -crematories -crematorium -crematoriums -crematory -creon -creosote -creosoted -creosotes -creosoting -crepe -crepes -crept -crescendi -crescendo -crescendos -crescent -crescents -cress -cressida -crest -crested -cresting -crests -cretaceous -cretan -crete -cretin -cretinous -cretins -crevasse -crevasses -crevice -crevices -crew -crewed -crewing -crewman -crewmen -crews -crib -cribbage -cribbed -cribbing -cribs -crichton -crick -cricked -cricket -cricketer -cricketers -crickets -cricking -cricks -cried -crier -criers -cries -crime -crimea -crimean -crimes -crimp -crimped -crimping -crimps -crimson -crimsoned -crimsoning -crimsons -cringe -cringed -cringes -cringing -crisco -crises -crisis -crisp -crisped -crisper -crispest -crispier -crispiest -crisping -crispness -crisps -crispy -crisscross -crisscrossed -crisscrosses -crisscrossing -cristina -criteria -criterion -criterions -critic -criticise -criticised -criticises -criticising -criticism -criticisms -criticize -criticized -criticizes -criticizing -critics -critique -critiqued -critiques -critiquing -critter -critters -croak -croaked -croaking -croaks -croat -croatia -croatian -croatians -croats -croce -crochet -crocheted -crocheting -crochets -croci -crock -crocked -crockery -crockett -crocks -crocus -crocuses -croesus -crofts -croissant -croissants -crone -crones -cronies -cronin -cronkite -cronus -crony -crook -crooked -crookeder -crookedest -crookedness -crookes -crooking -crooks -croon -crooned -crooner -crooners -crooning -croons -crop -cropped -cropper -croppers -cropping -crops -croquet -croquette -croquettes -crosby -crosier -crosiers -cross -crossbar -crossbars -crossbeam -crossbeams -crossbones -crossbow -crossbows -crossbred -crossbreed -crossbreeding -crossbreeds -crosscheck -crosschecked -crosschecking -crosschecks -crossed -crosser -crosses -crossest -crossfire -crossfires -crossing -crossings -crossness -crossover -crossovers -crosspiece -crosspieces -crossroad -crossroads -crosstown -crossways -crosswise -crossword -crosswords -crotch -crotches -crotchet -crotchets -crotchety -crouch -crouched -crouches -crouching -croup -croupier -croupiers -croupiest -croupy -crow -crowbar -crowbars -crowd -crowded -crowdfund -crowdfunded -crowdfunding -crowdfunds -crowding -crowds -crowed -crowing -crown -crowned -crowning -crowns -crows -crozier -croziers -crucified -crucifies -crucifix -crucifixes -crucifixion -crucifixions -cruciform -cruciforms -crucify -crucifying -crud -cruddier -cruddiest -cruddy -crude -crudeness -cruder -crudest -crudities -crudity -cruet -cruets -cruikshank -cruise -cruised -cruiser -cruisers -cruises -cruising -crumb -crumbed -crumbier -crumbiest -crumbing -crumbs -crumby -crummier -crummiest -crummy -crumpet -crumpets -crunch -crunched -cruncher -crunches -crunchier -crunchiest -crunching -crunchy -crusade -crusaded -crusader -crusaders -crusades -crusading -crush -crushed -crushes -crushing -crusoe -crust -crustacean -crustaceans -crusted -crustier -crustiest -crusting -crusts -crusty -crutch -crutches -crux -cruxes -cruz -cry -crybabies -crybaby -crying -cryings -cryogenics -crypt -cryptic -cryptogram -cryptograms -cryptographer -cryptographers -cryptography -cryptozoic -crypts -csonka -ctesiphon -cub -cuba -cuban -cubans -cube -cubed -cubes -cubic -cubing -cubism -cubist -cubists -cubit -cubits -cubs -cuckoo -cuckoos -cucumber -cucumbers -cud -cuds -cue -cued -cueing -cues -cuff -cuffed -cuffing -cuffs -cuing -cuisinart -cuisine -cuisines -cumbersome -cumin -cummerbund -cummerbunds -cumming -cummings -cumquat -cumquats -cums -cunard -cuneiform -cunning -cunninger -cunningest -cunningham -cunt -cunts -cup -cupboard -cupboards -cupcake -cupcakes -cupid -cupidity -cupids -cupped -cupping -cups -cur -curacao -curacies -curacy -curate -curates -curative -curatives -curator -curators -curb -curbed -curbing -curbs -curd -curds -cure -cured -curer -cures -curfew -curfews -curie -curies -curing -curio -curios -curiosities -curiosity -curious -curitiba -curmudgeon -curmudgeons -currant -currants -currencies -currency -current -currents -curried -currier -curries -curry -currycomb -currycombed -currycombing -currycombs -currying -curs -curse -cursed -curses -cursing -cursive -cursor -cursors -cursory -curst -curt -curtain -curtained -curtaining -curtains -curter -curtest -curtis -curtness -curtsey -curtseyed -curtseying -curtseys -curtsied -curtsies -curtsy -curtsying -curvaceous -curvacious -curvature -curvatures -curve -curved -curves -curvier -curviest -curving -curvy -cushier -cushiest -cushion -cushioned -cushioning -cushions -cushy -cusp -cuspid -cuspids -cusps -cuss -cussed -cusses -cussing -custard -custards -custer -custodian -custodians -custody -custom -customary -customer -customers -customisation -customise -customised -customises -customising -customization -customize -customized -customizes -customizing -customs -cut -cutback -cutbacks -cute -cuteness -cuter -cutesier -cutesiest -cutest -cutesy -cutoff -cutoffs -cutout -cutouts -cuts -cutter -cutters -cutthroat -cutthroats -cutting -cuttings -cutup -cutups -cuvier -cuzco -cvs -cyanide -cybernetic -cybernetics -cyberpunk -cyberpunks -cybersex -cyberspace -cygnet -cygnets -cygnus -cynic -cynicism -cynics -cynosure -cynosures -cynthia -cypher -cypress -cypresses -cyprian -cypriot -cypriots -cyprus -cyrano -cyrus -cyst -cystic -cysts -czar -czarina -czarinas -czars -czech -czechia -czechs -czerny -dab -dabbed -dabbing -dabs -dac -dacca -dacha -dachas -dachau -dachshund -dachshunds -dacron -dacrons -dad -dada -dadaism -daddies -daddy -dado -dadoes -dados -dads -daemon -daemons -daffier -daffiest -daffy -daft -dafter -daftest -dagger -daggers -daguerre -daguerreotype -daguerreotyped -daguerreotypes -daguerreotyping -dagwood -dahomey -daintier -dainties -daintiest -daintiness -dainty -daiquiri -daiquiris -dairies -dairy -dairying -dairymaid -dairymaids -dairyman -dairymen -dais -daises -daisies -daisy -dakar -dakota -dakotan -dakotas -dam -damage -damaged -damages -damaging -damascus -damask -damasked -damasking -damasks -dame -dames -damian -damien -damion -dammed -damming -damn -damnation -damndest -damned -damnedest -damning -damns -damon -damp -damped -dampen -dampened -dampening -dampens -damper -dampers -dampest -damping -dampness -damps -dams -damson -damsons -dana -dance -danced -dancer -dancers -dances -dancing -dander -dandier -dandies -dandiest -dandruff -dandy -dane -danes -danger -dangerous -dangers -danish -dank -danker -dankest -dankness -dannie -danny -danone -dante -danton -danube -danubian -daphne -dapper -dapperer -dapperest -darby -darcy -dare -dared -daren -dares -darfur -darin -daring -dario -darius -dark -darken -darkened -darkening -darkens -darker -darkest -darkness -darkroom -darkrooms -darn -darned -darneder -darnedest -darning -darns -darren -darrin -darrow -dart -dartboard -dartboards -darted -darth -darting -dartmoor -dartmouth -darts -darvon -darwin -darwinian -darwinism -dash -dashboard -dashboards -dashed -dashes -dashiki -dashikis -dashing -data -database -databases -datatype -date -dated -dates -dating -dative -datives -datum -daub -daubed -dauber -daubers -daubing -daubs -daugherty -daughter -daughters -daumier -daunt -daunted -daunting -daunts -dauphin -dauphins -davao -dave -davenport -davenports -david -davids -davidson -davies -davis -davit -davits -davy -dawes -dawn -dawned -dawning -dawns -dawson -day -daybed -daybeds -daybreak -daydream -daydreamed -daydreamer -daydreamers -daydreaming -daydreams -daydreamt -days -daytime -dayton -daze -dazed -dazes -dazing -deacon -deaconess -deaconesses -deacons -deactivate -deactivated -deactivates -deactivating -dead -deadbeat -deadbeats -deaden -deadened -deadening -deadens -deader -deadest -deadhead -deadpan -deadpanned -deadpanning -deadpans -deadwood -deaf -deafen -deafened -deafening -deafens -deafer -deafest -deafness -dean -deana -deandre -deann -deanna -deanne -deans -dear -dearer -dearest -dearness -dears -dearth -dearths -death -deathbed -deathbeds -deaths -deathtrap -deathtraps -deaves -deb -debar -debark -debarkation -debarked -debarking -debarks -debarment -debarred -debarring -debars -debase -debased -debasement -debasements -debases -debasing -debate -debated -debater -debaters -debates -debating -debauch -debauched -debaucheries -debauchery -debauches -debauching -debbie -debby -debenture -debentures -debian -debit -debited -debiting -debits -debonair -debora -deborah -debra -debrief -debriefed -debriefing -debriefings -debriefs -debris -debs -debt -debtor -debtors -debts -debug -debugged -debugger -debuggers -debugging -debugs -debunk -debunked -debunking -debunks -debussy -debut -debuted -debuting -debuts -dec -decade -decadence -decadent -decadents -decades -decaf -decaffeinate -decaffeinated -decaffeinates -decaffeinating -decamp -decamped -decamping -decamps -decant -decanted -decanter -decanters -decanting -decants -decapitate -decapitated -decapitates -decapitating -decapitation -decapitations -decatur -decay -decayed -decaying -decays -decca -deccan -decease -deceased -deceases -deceasing -decedent -decedents -deceit -deceits -deceive -deceived -deceiver -deceivers -deceives -deceiving -december -decembers -decencies -decency -decent -deception -deceptions -deceptive -deceptiveness -decide -decided -decides -deciding -deciduous -decimate -decimated -decimates -decimating -decimation -decipher -deciphered -deciphering -deciphers -decision -decisions -decisive -decisiveness -deck -decked -decker -deckhand -deckhands -decking -decks -decode -decoded -decoder -decodes -decoding -decommission -decommissioned -decommissioning -decommissions -decompose -decomposed -decomposes -decomposing -decomposition -decompress -decompressed -decompresses -decompressing -decompression -decongestant -decongestants -deconstruction -deconstructions -decontaminate -decontaminated -decontaminates -decontaminating -decontamination -decor -decorate -decorated -decorates -decorating -decoration -decorations -decorative -decorator -decorators -decorous -decors -decorum -decoy -decoyed -decoying -decoys -decrease -decreased -decreases -decreasing -decree -decreed -decreeing -decrees -decremented -decrements -decrepit -decrepitude -decrescendi -decrescendo -decrescendos -decried -decries -decry -decrying -decryption -dedekind -dedicate -dedicated -dedicates -dedicating -dedication -dedications -deduce -deduced -deduces -deducing -deduct -deducted -deducting -deduction -deductions -deductive -deducts -dee -deed -deeded -deeding -deeds -deejay -deejays -deem -deemed -deeming -deems -deena -deep -deepen -deepened -deepening -deepens -deeper -deepest -deepness -deeps -deer -deere -deers -deerskin -deface -defaced -defacement -defaces -defacing -defamation -defamatory -defame -defamed -defames -defaming -defeat -defeated -defeating -defeatism -defeatist -defeatists -defeats -defecate -defecated -defecates -defecating -defecation -defect -defected -defecting -defection -defections -defective -defectives -defector -defectors -defects -defence -defenced -defences -defencing -defend -defendant -defendants -defended -defender -defenders -defending -defends -defense -defensed -defenses -defensing -defensive -defensiveness -defer -deference -deferment -deferments -deferred -deferring -defers -defiance -defiant -deficiencies -deficiency -deficient -deficit -deficits -defied -defies -define -defined -definer -definers -defines -defining -definite -definiteness -definition -definitions -definitive -defoe -defogger -defoggers -deforest -deforestation -deforested -deforesting -deforests -deform -deformation -deformations -deformed -deforming -deformities -deformity -deforms -defraud -defrauded -defrauding -defrauds -defray -defrayed -defraying -defrays -defrost -defrosted -defroster -defrosters -defrosting -defrosts -deft -defter -deftest -deftness -defunct -defuse -defused -defuses -defusing -defy -defying -degas -degeneracy -degenerate -degenerated -degenerates -degenerating -degeneration -degenerative -degeneres -degradation -degrade -degraded -degrades -degrading -degree -degrees -dehumanisation -dehumanise -dehumanised -dehumanises -dehumanising -dehumanization -dehumanize -dehumanized -dehumanizes -dehumanizing -dehumidified -dehumidifier -dehumidifiers -dehumidifies -dehumidify -dehumidifying -dehydrate -dehydrated -dehydrates -dehydrating -dehydration -deice -deiced -deicer -deicers -deices -deicing -deidre -deification -deified -deifies -deify -deifying -deign -deigned -deigning -deigns -deimos -deirdre -deism -deities -deity -deject -dejected -dejecting -dejection -dejects -dejesus -demagnetisation -demagnetise -demagnetised -demagnetises -demagnetising -demagnetization -demagnetize -demagnetized -demagnetizes -demagnetizing -demagog -demagogic -demagogry -demagogs -demagogue -demagoguery -demagogues -demagogy -demand -demanded -demanding -demands -demarcate -demarcated -demarcates -demarcating -demarcation -demavend -demean -demeaned -demeaning -demeanor -demeanour -demeans -demented -dementia -demerit -demerits -demesne -demesnes -demeter -demetrius -demigod -demigods -demijohn -demijohns -deming -demise -demised -demises -demising -demitasse -demitasses -demo -democracies -democracy -democrat -democratic -democratisation -democratise -democratised -democratises -democratising -democratization -democratize -democratized -democratizes -democratizing -democrats -democritus -demoed -demographer -demographers -demographic -demographics -demography -demoing -demon -demoniac -demonic -demons -demonstrate -demonstrated -demonstrates -demonstrating -demonstration -demonstrations -demonstrative -demonstratives -demonstrator -demonstrators -demos -demosthenes -demote -demoted -demotes -demoting -demotion -demotions -demount -dempsey -demur -demure -demurer -demurest -demurred -demurring -demurs -den -dena -denature -denatured -denatures -denaturing -dendrite -dendrites -deneb -deng -denied -denier -deniers -denies -denigrate -denigrated -denigrates -denigrating -denigration -denim -denims -denis -denise -denizen -denizens -denmark -dennis -denny -denominate -denominated -denominates -denominating -denomination -denominations -denominator -denominators -denotation -denotations -denote -denoted -denotes -denoting -denouement -denouements -denounce -denounced -denouncement -denouncements -denounces -denouncing -dens -dense -denseness -denser -densest -densities -density -dent -dented -dentifrice -dentifrices -dentin -dentine -denting -dentist -dentistry -dentists -dents -denture -dentures -denude -denuded -denudes -denuding -denunciation -denunciations -denver -deny -denying -deodorant -deodorants -deodorise -deodorised -deodoriser -deodorisers -deodorises -deodorising -deodorize -deodorized -deodorizer -deodorizers -deodorizes -deodorizing -deon -depart -departed -departing -department -departments -departs -departure -departures -depend -dependance -dependant -dependants -depended -dependence -dependencies -dependency -dependent -dependents -depending -depends -depict -depicted -depicting -depiction -depictions -depicts -deport -deportation -deportations -deported -deporting -deportment -deports -depose -deposed -deposes -deposing -deposit -deposited -depositing -deposition -depositions -depositor -depositories -depositors -depository -deposits -depot -depots -depp -deprave -depraved -depraves -depraving -depravities -depravity -deprecate -deprecated -deprecates -deprecating -deprecation -deprecatory -depreciate -depreciated -depreciates -depreciating -depreciation -depredation -depredations -depress -depressant -depressants -depressed -depresses -depressing -depression -depressions -depressive -depressives -deprivation -deprivations -deprive -deprived -deprives -depriving -deprogram -deprogramed -deprograming -deprogrammed -deprogramming -deprograms -depth -depths -deputation -deputations -depute -deputed -deputes -deputies -deputing -deputise -deputised -deputises -deputising -deputize -deputized -deputizes -deputizing -deputy -derange -deranged -derangement -deranges -deranging -derbies -derby -derek -derick -deride -derided -derides -deriding -derision -derisive -derisory -derivation -derivations -derivative -derivatives -derive -derived -derives -deriving -dermatitis -dermis -derogate -derogated -derogates -derogating -derogation -derogatory -derrick -derricks -derrida -derringer -derringers -dervish -dervishes -descant -descanted -descanting -descants -descartes -descend -descendant -descendants -descended -descendent -descendents -descender -descending -descends -descent -descents -describe -described -describes -describing -descried -descries -description -descriptions -descriptive -descriptor -descriptors -descry -descrying -desdemona -desecrate -desecrated -desecrates -desecrating -desecration -desegregate -desegregated -desegregates -desegregating -desegregation -desensitisation -desensitise -desensitised -desensitises -desensitising -desensitization -desensitize -desensitized -desensitizes -desensitizing -desert -deserted -deserter -deserters -deserting -desertion -desertions -deserts -deserve -deserved -deserves -deserving -desiccate -desiccated -desiccates -desiccating -desiccation -desiderata -desideratum -design -designate -designated -designates -designating -designation -designations -designed -designer -designers -designing -designs -desire -desired -desiree -desires -desiring -desirous -desist -desisted -desisting -desists -desk -desks -desktop -desktops -desmond -despair -despaired -despairing -despairs -despatch -despatched -despatches -despatching -desperado -desperadoes -desperados -desperate -desperation -despise -despised -despises -despising -despite -despondency -despondent -despot -despotic -despotism -despots -dessert -desserts -destination -destinations -destine -destined -destines -destinies -destining -destiny -destitute -destitution -destroy -destroyed -destroyer -destroyers -destroying -destroys -destruct -destructed -destructing -destruction -destructive -destructiveness -destructs -detach -detached -detaches -detaching -detachment -detachments -detain -detained -detainee -detainees -detaining -detainment -detains -detect -detected -detecting -detection -detective -detectives -detector -detectors -detects -detentes -detention -detentions -deter -detergent -detergents -deteriorate -deteriorated -deteriorates -deteriorating -deterioration -determinant -determinants -determinate -determination -determinations -determine -determined -determiner -determiners -determines -determining -determinism -deterministic -deterred -deterrence -deterrent -deterrents -deterring -deters -detest -detestation -detested -detesting -detests -dethrone -dethroned -dethronement -dethrones -dethroning -detonate -detonated -detonates -detonating -detonation -detonations -detonator -detonators -detour -detoured -detouring -detours -detox -detoxed -detoxes -detoxification -detoxified -detoxifies -detoxify -detoxifying -detoxing -detract -detracted -detracting -detraction -detractor -detractors -detracts -detriment -detriments -detritus -detroit -deuce -deuces -deuterium -deuteronomy -devanagari -devastate -devastated -devastates -devastating -devastation -devi -deviance -deviant -deviants -deviate -deviated -deviates -deviating -deviation -deviations -device -devices -devin -devious -deviousness -devise -devised -devises -devising -devoid -devon -devonian -devote -devoted -devotee -devotees -devotes -devoting -devotion -devotions -devour -devoured -devouring -devours -devout -devouter -devoutest -devoutness -dew -dewar -dewayne -dewberries -dewberry -dewdrop -dewdrops -dewey -dewier -dewiest -dewitt -dewy -dexedrine -dexter -dexterity -dexterous -dextrose -dextrous -dhaka -dharma -dhoti -dhotis -diabetes -diabetic -diabetics -diacritic -diacritics -diadem -diadems -diagnose -diagnosed -diagnoses -diagnosing -diagnosis -diagnostic -diagnostician -diagnosticians -diagnostics -diagram -diagramed -diagraming -diagrammatic -diagrammed -diagramming -diagrams -diameter -diameters -diamond -diamonds -diana -diane -diann -dianna -dianne -diaper -diapered -diapering -diapers -diaphanous -diaphragm -diaphragms -diaries -diarist -diarists -diarrhea -diarrhoea -diary -diaspora -diatom -diatoms -diatribe -diatribes -diaz -dicaprio -dice -diced -dices -dicey -dichotomies -dichotomy -dicier -diciest -dicing -dick -dickens -dicker -dickered -dickering -dickers -dickerson -dickey -dickeys -dickie -dickies -dickinson -dicks -dickson -dicky -dicta -dictaphone -dictate -dictated -dictates -dictating -dictation -dictations -dictator -dictators -dictatorship -dictatorships -diction -dictionaries -dictionary -dictum -dictums -did -didactic -diderot -dido -didrikson -die -died -diefenbaker -diego -diehard -diehards -diem -diereses -dieresis -dies -diet -dietaries -dietary -dieted -dieter -dieters -dietetic -dietetics -dietician -dieticians -dieting -dietitian -dietitians -dietrich -diets -differ -differed -difference -differences -different -differentiate -differentiated -differentiates -differentiating -differentiation -differing -differs -diffidence -diffident -diffraction -diffuse -diffused -diffuseness -diffuses -diffusing -diffusion -dig -digest -digested -digesting -digestion -digestions -digestive -digests -digger -diggers -digging -digit -digitisation -digitise -digitised -digitises -digitising -digitization -digitize -digitized -digitizes -digitizing -digits -dignified -dignifies -dignify -dignifying -dignitaries -dignitary -dignities -dignity -digraph -digraphs -digress -digressed -digresses -digressing -digression -digressions -digressive -digs -dijkstra -dijon -dike -diked -dikes -diking -dim -dimaggio -dime -dimension -dimensions -dimer -dimes -diminish -diminished -diminishes -diminishing -diminuendo -diminuendoes -diminuendos -diminution -diminutions -diminutive -diminutives -dimmed -dimmer -dimmers -dimmest -dimming -dimness -dims -dimwit -dimwits -dimwitted -din -dina -dinah -dine -dined -diner -diners -dines -dinette -dinettes -ding -dinged -dinghies -dinghy -dingier -dingiest -dinginess -dinging -dingo -dingoes -dings -dingy -dining -dinkier -dinkies -dinkiest -dinky -dinned -dinner -dinnered -dinnering -dinners -dinning -dino -dinosaur -dinosaurs -dins -dint -diocesan -diocesans -diocese -dioceses -diode -diodes -diogenes -dion -dionne -dionysian -dionysus -diophantine -dior -diorama -dioramas -dioxide -dioxin -dioxins -dip -diphtheria -diphthong -diphthongs -dipped -dipper -dippers -dipping -dips -dipsomania -dipsomaniac -dipsomaniacs -dipstick -dipsticks -dirac -dire -direct -directed -directer -directest -directing -direction -directions -directive -directives -directness -director -directorate -directorates -directories -directors -directorship -directorships -directory -directs -direr -direst -dirge -dirges -dirk -dirks -dirt -dirtied -dirtier -dirties -dirtiest -dirtiness -dirty -dirtying -dis -disabuse -disabused -disabuses -disabusing -disadvantage -disadvantaged -disadvantageous -disadvantages -disadvantaging -disaffect -disaffected -disaffecting -disaffection -disaffects -disagree -disagreed -disagreeing -disagreement -disagreements -disagrees -disambiguate -disambiguation -disappear -disappearance -disappearances -disappeared -disappearing -disappears -disappoint -disappointed -disappointing -disappointment -disappointments -disappoints -disapprobation -disapprove -disapproved -disapproves -disapproving -disarm -disarmament -disarmed -disarming -disarms -disarrange -disarranged -disarrangement -disarranges -disarranging -disarray -disarrayed -disarraying -disarrays -disassociate -disassociated -disassociates -disassociating -disaster -disasters -disastrous -disavow -disavowed -disavowing -disavows -disband -disbanded -disbanding -disbands -disbar -disbarment -disbarred -disbarring -disbars -disburse -disbursed -disbursement -disbursements -disburses -disbursing -disc -discard -discarded -discarding -discards -discern -discerned -discerning -discernment -discerns -discharge -discharged -discharges -discharging -disco -discoed -discoing -discomfit -discomfited -discomfiting -discomfits -discomfiture -discomfort -discomforted -discomforting -discomforts -discommode -discommoded -discommodes -discommoding -discompose -discomposed -discomposes -discomposing -discomposure -disconcert -disconcerted -disconcerting -disconcerts -disconnect -disconnected -disconnecting -disconnection -disconnections -disconnects -discontent -discontented -discontenting -discontentment -discontents -discontinuance -discontinuances -discontinuation -discontinuations -discontinue -discontinued -discontinues -discontinuing -discontinuities -discontinuity -discontinuous -discord -discordant -discorded -discording -discords -discos -discotheque -discotheques -discount -discounted -discountenance -discountenanced -discountenances -discountenancing -discounting -discounts -discourage -discouraged -discouragement -discouragements -discourages -discouraging -discourse -discoursed -discourses -discoursing -discourteous -discourtesies -discourtesy -discover -discovered -discoverer -discoverers -discoveries -discovering -discovers -discovery -discredit -discredited -discrediting -discredits -discreet -discreeter -discreetest -discrepancies -discrepancy -discrete -discretion -discretionary -discriminant -discriminate -discriminated -discriminates -discriminating -discrimination -discriminatory -discs -discursive -discus -discuses -discuss -discussant -discussants -discussed -discusses -discussing -discussion -discussions -disdain -disdained -disdaining -disdains -disease -diseased -diseases -disembark -disembarkation -disembarked -disembarking -disembarks -disembodied -disembodies -disembody -disembodying -disenchant -disenchanted -disenchanting -disenchantment -disenchants -disencumber -disencumbered -disencumbering -disencumbers -disenfranchise -disenfranchised -disenfranchisement -disenfranchises -disenfranchising -disengage -disengaged -disengagement -disengagements -disengages -disengaging -disfavor -disfavored -disfavoring -disfavors -disfavour -disfavoured -disfavouring -disfavours -disfigure -disfigured -disfigurement -disfigurements -disfigures -disfiguring -disfranchise -disfranchised -disfranchisement -disfranchises -disfranchising -disgorge -disgorged -disgorges -disgorging -disgrace -disgraced -disgraces -disgracing -disguise -disguised -disguises -disguising -disgust -disgusted -disgusting -disgusts -dish -disharmonious -disharmony -dishearten -disheartened -disheartening -disheartens -dished -dishes -dishing -dishonest -dishonesty -dishonor -dishonored -dishonoring -dishonors -dishonour -dishonoured -dishonouring -dishonours -dishpan -dishpans -dishrag -dishrags -dishwasher -dishwashers -dishwater -disincentive -disinfect -disinfectant -disinfectants -disinfected -disinfecting -disinfects -disinformation -disingenuous -disinherit -disinherited -disinheriting -disinherits -disintegrate -disintegrated -disintegrates -disintegrating -disintegration -disinter -disinterest -disinterested -disinterests -disinterment -disinterred -disinterring -disinters -disjoint -disjointed -disjointing -disjoints -disk -diskette -diskettes -disks -dismay -dismayed -dismaying -dismays -dismember -dismembered -dismembering -dismemberment -dismembers -dismiss -dismissed -dismisses -dismissing -dismissive -dismount -dismounted -dismounting -dismounts -disney -disobedience -disobedient -disobey -disobeyed -disobeying -disobeys -disorder -disordered -disordering -disorders -disorganisation -disorganise -disorganised -disorganises -disorganising -disorganization -disorganize -disorganized -disorganizes -disorganizing -disorient -disorientation -disoriented -disorienting -disorients -disown -disowned -disowning -disowns -disparage -disparaged -disparagement -disparages -disparaging -disparate -disparities -disparity -dispassionate -dispatch -dispatched -dispatcher -dispatchers -dispatches -dispatching -dispensaries -dispensary -dispensation -dispensations -dispense -dispensed -dispenser -dispensers -dispenses -dispensing -disperse -dispersed -disperses -dispersing -dispersion -dispirit -dispirited -dispiriting -dispirits -disport -disported -disporting -disports -dispose -disposed -disposes -disposing -disposition -dispositions -dispossess -dispossessed -dispossesses -dispossessing -dispossession -disproof -disproportion -disproportionate -disproportions -disprove -disproved -disproven -disproves -disproving -disputant -disputants -disputation -disputations -disputatious -dispute -disputed -disputes -disputing -disquiet -disquieted -disquieting -disquiets -disquisition -disquisitions -disregard -disregarded -disregarding -disregards -disrepair -disrepute -disrespect -disrespected -disrespecting -disrespects -disrobe -disrobed -disrobes -disrobing -disrupt -disrupted -disrupting -disruption -disruptions -disruptive -disrupts -diss -dissatisfaction -dissatisfied -dissatisfies -dissatisfy -dissatisfying -dissect -dissected -dissecting -dissection -dissections -dissects -dissed -disseminate -disseminated -disseminates -disseminating -dissemination -dissension -dissensions -dissent -dissented -dissenter -dissenters -dissenting -dissents -dissertation -dissertations -disservice -disservices -disses -dissidence -dissident -dissidents -dissing -dissipate -dissipated -dissipates -dissipating -dissipation -dissociate -dissociated -dissociates -dissociating -dissociation -dissonance -dissonances -dissonant -dissuade -dissuaded -dissuades -dissuading -dissuasion -distaff -distaffs -distance -distanced -distances -distancing -distant -distaste -distastes -distemper -distend -distended -distending -distends -distension -distensions -distention -distentions -distinct -distincter -distinctest -distinction -distinctions -distinctive -distinctiveness -distinguish -distinguished -distinguishes -distinguishing -distort -distorted -distorter -distorting -distortion -distortions -distorts -distract -distracted -distracting -distraction -distractions -distracts -distrait -distraught -distress -distressed -distresses -distressing -distribute -distributed -distributes -distributing -distribution -distributions -distributive -distributor -distributors -district -districts -distrust -distrusted -distrusting -distrusts -disturb -disturbance -disturbances -disturbed -disturbing -disturbs -disunite -disunited -disunites -disuniting -disunity -disuse -disused -disuses -disusing -ditch -ditched -ditches -ditching -dither -dithered -dithering -dithers -ditties -ditto -dittoed -dittoes -dittoing -dittos -ditty -diuretic -diuretics -diva -divan -divans -divas -dive -dived -diver -diverge -diverged -divergence -divergences -divergent -diverges -diverging -divers -diverse -diversification -diversified -diversifies -diversify -diversifying -diversion -diversionary -diversions -diversities -diversity -divert -diverted -diverting -diverts -dives -divest -divested -divesting -divests -divide -divided -dividend -dividends -divider -dividers -divides -dividing -divination -divine -divined -diviner -diviners -divines -divinest -diving -divining -divinities -divinity -division -divisions -divisive -divisiveness -divisor -divisors -divorce -divorced -divorces -divorcing -divot -divots -divvied -divvies -divvy -divvying -dix -dixie -dixiecrat -dixon -dizzied -dizzier -dizzies -dizziest -dizziness -dizzy -dizzying -djakarta -djibouti -djinn -djinni -djinns -dmitri -dnepropetrovsk -dnieper -dniester -dobbin -doberman -dobro -doc -docent -docents -dock -docked -docket -docketed -docketing -dockets -docking -docks -dockyard -dockyards -docs -doctor -doctorate -doctorates -doctored -doctoring -doctorow -doctors -doctrinaire -doctrinaires -doctrine -doctrines -docudrama -docudramas -document -documentaries -documentary -documentation -documented -documenting -documents -dodder -doddered -doddering -dodders -dodge -dodged -dodger -dodgers -dodges -dodging -dodgson -dodo -dodoes -dodoma -dodos -dodson -doe -doer -doers -does -doff -doffed -doffing -doffs -dog -dogcatcher -dogcatchers -dogfight -dogfights -dogfish -dogfishes -dogged -doggedness -doggie -doggier -doggies -doggiest -dogging -doggone -doggoned -doggoneder -doggonedest -doggoner -doggones -doggonest -doggoning -doggy -doghouse -doghouses -dogie -dogies -dogma -dogmas -dogmata -dogmatic -dogmatism -dogmatist -dogmatists -dogs -dogtrot -dogtrots -dogtrotted -dogtrotting -dogwood -dogwoods -doha -doing -doings -domain -domains -dome -domed -domes -domesday -domestic -domesticate -domesticated -domesticates -domesticating -domestication -domesticity -domestics -dominance -dominant -dominants -dominate -dominated -dominates -dominating -domination -domineer -domineered -domineering -domineers -doming -domingo -dominguez -dominic -dominica -dominican -dominicans -dominick -dominion -dominions -dominique -domino -dominoes -dominos -domitian -don -dona -donahue -donate -donated -donates -donating -donation -donations -done -donetsk -donizetti -donkey -donkeys -donn -donna -donne -donned -donner -donnie -donning -donny -donor -donors -donovan -dons -donut -donuts -doodad -doodads -doohickey -doohickeys -doom -doomed -dooming -dooms -doomsday -doonesbury -door -doorknob -doorknobs -doorman -doormat -doormats -doormen -doors -doorstep -doorsteps -doorway -doorways -dope -doped -dopes -dopey -dopier -dopiest -doping -dopy -dora -dorcas -doreen -dorian -doric -dories -doris -doritos -dork -dorkier -dorkiest -dorks -dorky -dorm -dormancy -dormant -dormer -dormers -dormice -dormitories -dormitory -dormouse -dorms -dorothea -dorothy -dorset -dorsey -dorthy -dortmund -dory -dos -dosage -dosages -dose -dosed -doses -dosing -dossier -dossiers -dostoevsky -dot -dotage -dotcom -dotcoms -dote -doted -dotes -doth -doting -dots -dotson -dotted -dotting -dotty -douay -doubt -doubted -doubter -doubters -doubting -doubts -douche -douched -douches -douching -doug -dough -doughier -doughiest -doughnut -doughnuts -doughtier -doughtiest -doughty -doughy -dour -dourer -dourest -douro -douse -doused -douses -dousing -dove -dover -doves -dow -dowager -dowagers -dowdier -dowdies -dowdiest -dowdiness -dowdy -down -downbeat -downbeats -downcast -downed -downer -downers -downgrade -downgraded -downgrades -downgrading -downhearted -downier -downiest -downing -downpour -downpours -downright -downs -downsize -downsized -downsizes -downsizing -downstage -downstairs -downstate -downstream -downswing -downswings -downtime -downtown -downtrodden -downturn -downturns -downward -downwards -downwind -downy -dowries -dowry -dowse -dowsed -dowses -dowsing -doyen -doyens -doze -dozed -dozen -dozens -dozes -dozing -drab -drabber -drabbest -drabness -drabs -drachma -drachmae -drachmai -drachmas -draco -draconian -draft -drafted -draftee -draftees -draftier -draftiest -draftiness -drafting -drafts -draftsman -draftsmanship -draftsmen -drafty -drag -dragged -dragging -dragnet -dragnets -dragon -dragons -dragoon -dragooned -dragooning -dragoons -drags -drain -drainage -drained -drainer -drainers -draining -drainpipe -drainpipes -drains -drake -drakes -dram -drama -dramamine -dramas -dramatic -dramatics -dramatisation -dramatisations -dramatise -dramatised -dramatises -dramatising -dramatist -dramatists -dramatization -dramatizations -dramatize -dramatized -dramatizes -dramatizing -drambuie -drams -drank -drano -drape -draped -draperies -drapery -drapes -draping -drastic -draught -draughted -draughtier -draughtiest -draughtiness -draughting -draughts -draughtsman -draughtsmanship -draughtsmen -draughty -dravidian -draw -drawback -drawbacks -drawbridge -drawbridges -drawer -drawers -drawing -drawings -drawn -draws -drawstring -drawstrings -dray -drays -dread -dreaded -dreading -dreadnought -dreadnoughts -dreads -dream -dreamed -dreamer -dreamers -dreamier -dreamiest -dreaming -dreams -dreamt -dreamy -drearier -dreariest -dreariness -dreary -dredge -dredged -dredger -dredgers -dredges -dredging -dregs -dreiser -drench -drenched -drenches -drenching -dresden -dress -dressage -dressed -dresser -dressers -dresses -dressier -dressiest -dressiness -dressing -dressings -dressmaker -dressmakers -dressmaking -dressy -drew -dreyfus -dried -drier -driers -dries -driest -drift -drifted -drifter -drifters -drifting -drifts -driftwood -drink -drinker -drinkers -drinking -drinkings -drinks -drip -dripped -dripping -drippings -drips -dristan -drive -driven -driver -drivers -drives -driveway -driveways -driving -drivings -dromedaries -dromedary -drone -droned -drones -droning -droop -drooped -droopier -droopiest -drooping -droops -droopy -drop -dropbox -dropout -dropouts -dropped -dropper -droppers -dropping -droppings -drops -dropsy -dross -drought -droughts -drouth -drouthes -drouths -drove -drover -drovers -droves -drown -drowned -drowning -drownings -drowns -drowse -drowsed -drowses -drowsier -drowsiest -drowsiness -drowsing -drowsy -drub -drubbed -drubbing -drubbings -drubs -drudge -drudged -drudgery -drudges -drudging -drug -drugged -drugging -druggist -druggists -drugs -drugstore -drugstores -druid -druids -drum -drummed -drummer -drummers -drumming -drums -drumstick -drumsticks -drunk -drunkard -drunkards -drunken -drunkenness -drunker -drunkest -drunks -dry -dryad -dryads -dryden -dryer -dryers -dryest -drying -dryness -drys -dschubba -duane -dub -dubai -dubbed -dubbing -dubcek -dubhe -dubiety -dubious -dubiousness -dubrovnik -dubs -ducat -ducats -duchamp -duchess -duchesses -duchies -duchy -duck -ducked -ducking -ducks -duct -ducting -ducts -dud -dude -duded -dudes -dudgeon -duding -duds -due -dues -duet -duets -duff -duffer -duffers -duffy -dug -dugout -dugouts -duh -duisburg -duke -dukedom -dukedoms -dukes -dumas -dumb -dumber -dumbest -dumbfound -dumbfounded -dumbfounding -dumbfounds -dumbness -dumbo -dumbwaiter -dumbwaiters -dumfound -dumfounded -dumfounding -dumfounds -dummies -dummy -dump -dumped -dumpier -dumpiest -dumping -dumps -dumpster -dumpy -dun -dunant -dunbar -duncan -dunce -dunces -dune -dunedin -dunes -dung -dungaree -dungarees -dunged -dungeon -dungeons -dunging -dungs -dunk -dunked -dunking -dunkirk -dunks -dunn -dunne -dunned -dunner -dunnest -dunning -dunno -duns -duo -duodena -duodenum -duodenums -duos -dupe -duped -dupes -duping -dupont -duran -durant -durante -duration -durban -duress -durex -durham -durhams -during -durkheim -duroc -durocher -duse -dushanbe -dusk -duskier -duskiest -dusky -dust -dustbin -dustbins -dustbuster -dusted -duster -dusters -dustier -dustiest -dustin -dustiness -dusting -dustman -dustmen -dustpan -dustpans -dusts -dusty -dutch -dutchman -dutchmen -duteous -duties -duty -duvet -dvina -dwarf -dwarfed -dwarfing -dwarfish -dwarfism -dwarfs -dwarves -dwayne -dweeb -dweebs -dwight -dyadic -dye -dyed -dyeing -dyer -dyers -dyes -dyestuff -dying -dyke -dykes -dynamic -dynamics -dynamism -dynamite -dynamited -dynamites -dynamiting -dynamo -dynamos -dynastic -dynasties -dynasty -dysentery -dysfunction -dysfunctions -dyson -dyspepsia -dyspeptic -dyspeptics -dzerzhinsky -dzungaria -each -eager -eagerer -eagerest -eagerness -eakins -ear -earache -earaches -earbud -earbuds -eardrum -eardrums -earhart -earmark -earmarked -earmarking -earmarks -earmuff -earmuffs -earn -earned -earner -earners -earnest -earnestine -earnestness -earnests -earnhardt -earning -earnings -earns -earp -earphone -earphones -earring -earrings -ears -earshot -earth -earthed -earthen -earthenware -earthier -earthiest -earthiness -earthing -earthquake -earthquakes -earths -earthshaking -earthward -earthwork -earthworks -earthworm -earthworms -earthy -earwax -earwig -earwigs -ease -eased -eases -easier -easiest -easiness -easing -east -eastbound -easter -eastern -easterner -easterners -easternmost -easters -eastman -easts -eastward -eastwards -eastwood -easy -easygoing -eat -eaten -eater -eateries -eaters -eatery -eating -eaton -eats -eave -eaves -eavesdrop -eavesdropped -eavesdropper -eavesdroppers -eavesdropping -eavesdrops -ebay -ebb -ebbed -ebbing -ebbs -eben -ebeneezer -ebert -ebonics -ebonies -ebony -ebro -eccentric -eccentricities -eccentricity -eccentrics -echo -echoed -echoes -echoing -echos -ecmascript -eco -econometric -economic -economics -economies -economise -economised -economises -economising -economist -economists -economize -economized -economizes -economizing -economy -ecosystem -ecosystems -ecotourism -ecru -ecstasies -ecstasy -ecstatic -ecuador -ecuadoran -ecuadorans -ecuadorian -ecuadorians -eczema -edam -edamame -edams -edda -eddie -eddied -eddies -eddington -eddy -eddying -edema -eden -edens -edgar -edgardo -edge -edged -edger -edges -edgeways -edgewise -edgier -edgiest -edginess -edging -edgings -edgy -edict -edicts -edification -edifice -edifices -edified -edifies -edify -edifying -edinburgh -edison -edit -edited -edith -editing -edition -editions -editor -editors -editorship -edits -edmond -edmonton -edmund -edna -eduardo -educate -educated -educates -educating -education -educations -educator -educators -edward -edwardian -edwardo -edwards -edwin -edwina -eerie -eerier -eeriest -eeriness -eery -eeyore -efface -effaced -effacement -effaces -effacing -effect -effected -effecting -effective -effectiveness -effects -effectuate -effectuated -effectuates -effectuating -effeminacy -effeminate -effervesce -effervesced -effervescence -effervescent -effervesces -effervescing -effete -efficacious -efficacy -efficiencies -efficiency -efficient -effie -effigies -effigy -effort -efforts -effrontery -effusion -effusions -effusive -effusiveness -efrain -efren -egg -eggbeater -eggbeaters -egged -egghead -eggheads -egging -eggnog -eggo -eggs -egis -ego -egocentric -egocentrics -egoism -egoist -egoistic -egoists -egos -egotism -egotist -egotistic -egotists -egregious -egress -egresses -egret -egrets -egypt -egyptian -egyptians -ehrenberg -eichmann -eider -eiderdown -eiderdowns -eiders -eight -eighteen -eighteens -eighteenth -eighteenths -eighth -eighths -eighties -eightieth -eightieths -eights -eighty -einstein -einsteins -eire -eisenhower -eisenstein -eisner -either -eject -ejected -ejecting -ejection -ejections -ejects -eke -eked -ekes -eking -emaciate -emaciated -emaciates -emaciating -emaciation -emacs -emanate -emanated -emanates -emanating -emanation -emanations -emancipate -emancipated -emancipates -emancipating -emancipation -emancipator -emancipators -embankment -embankments -embargo -embargoed -embargoes -embargoing -embark -embarkation -embarkations -embarked -embarking -embarks -embarrass -embarrassed -embarrasses -embarrassing -embarrassment -embarrassments -embassies -embassy -embed -embedded -embedding -embeds -ember -embers -embitter -embittered -embittering -embitters -embodied -embodies -embodiment -embody -embodying -emboss -embossed -embosses -embossing -embrace -embraced -embraces -embracing -embroider -embroidered -embroideries -embroidering -embroiders -embroidery -embryo -embryonic -embryos -emcee -emceed -emceeing -emcees -emend -emendation -emendations -emended -emending -emends -emerge -emerged -emergence -emergencies -emergency -emergent -emerges -emerging -emeritus -emerson -emery -emetic -emetics -emigrant -emigrants -emigrate -emigrated -emigrates -emigrating -emigration -emigrations -eminem -eminence -eminences -eminent -emir -emirate -emirates -emirs -emissaries -emissary -emission -emissions -emit -emits -emitted -emitting -emma -emmett -emmy -emo -emoji -emojis -emory -emos -emote -emoted -emotes -emoting -emotion -emotions -emotive -empathetic -empathise -empathised -empathises -empathising -empathize -empathized -empathizes -empathizing -empathy -emperor -emperors -emphases -emphasis -emphasise -emphasised -emphasises -emphasising -emphasize -emphasized -emphasizes -emphasizing -emphatic -emphysema -empire -empires -empiricism -emporia -emporium -emporiums -empower -empowered -empowering -empowerment -empowers -empress -empresses -emptied -emptier -empties -emptiest -emptiness -empty -emptying -ems -emu -emus -emusic -enact -enacted -enacting -enactment -enactments -enacts -enamor -enamored -enamoring -enamors -enamour -enamoured -enamouring -enamours -encamp -encamped -encamping -encampment -encampments -encamps -encarta -encase -encased -encases -encasing -enchant -enchanted -enchanter -enchanters -enchanting -enchantment -enchantments -enchantress -enchantresses -enchants -encode -encoded -encoder -encoders -encodes -encoding -encompass -encompassed -encompasses -encompassing -encore -encored -encores -encoring -encounter -encountered -encountering -encounters -encourage -encouraged -encouragement -encouragements -encourages -encouraging -encroach -encroached -encroaches -encroaching -encroachment -encroachments -encrust -encrustation -encrustations -encrusted -encrusting -encrusts -encrypt -encrypted -encryption -encrypts -encumber -encumbered -encumbering -encumbers -encumbrance -encumbrances -end -endanger -endangered -endangering -endangers -endear -endeared -endearing -endearment -endearments -endears -endeavor -endeavored -endeavoring -endeavors -endeavour -endeavoured -endeavouring -endeavours -ended -endemic -endemics -ending -endings -endive -endives -endocrine -endocrines -endorse -endorsed -endorsement -endorsements -endorser -endorsers -endorses -endorsing -endow -endowed -endowing -endowment -endowments -endows -ends -endue -endued -endues -enduing -endurance -endure -endured -endures -enduring -endways -endwise -endymion -enema -enemas -enemata -enemies -enemy -energetic -energies -energise -energised -energiser -energisers -energises -energising -energize -energized -energizer -energizers -energizes -energizing -energy -enervate -enervated -enervates -enervating -enervation -enforce -enforced -enforcement -enforcer -enforcers -enforces -enforcing -enfranchise -enfranchised -enfranchisement -enfranchises -enfranchising -engage -engaged -engagement -engagements -engages -engaging -engender -engendered -engendering -engenders -engine -engineer -engineered -engineering -engineers -engines -engorge -engorged -engorges -engorging -engrave -engraved -engraver -engravers -engraves -engraving -engravings -engross -engrossed -engrosses -engrossing -enhance -enhanced -enhancement -enhancements -enhancer -enhances -enhancing -enid -enif -enigma -enigmas -enigmatic -eniwetok -enjoin -enjoined -enjoining -enjoins -enjoy -enjoyed -enjoying -enjoyment -enjoyments -enjoys -enkidu -enmesh -enmeshed -enmeshes -enmeshing -enmities -enmity -ennui -enoch -enormities -enormity -enormous -enormousness -enos -enough -enquire -enquired -enquires -enquiries -enquiring -enquiry -enrage -enraged -enrages -enraging -enrapture -enraptured -enraptures -enrapturing -enrich -enriched -enriches -enriching -enrichment -enrico -enrique -enron -ensconce -ensconced -ensconces -ensconcing -enshrine -enshrined -enshrines -enshrining -enshroud -enshrouded -enshrouding -enshrouds -ensign -ensigns -ensnare -ensnared -ensnares -ensnaring -ensue -ensued -ensues -ensuing -ensure -ensured -ensures -ensuring -entente -ententes -enter -entered -entering -enterprise -enterprises -enterprising -enters -entertain -entertained -entertainer -entertainers -entertaining -entertainment -entertainments -entertains -enthrone -enthroned -enthronement -enthronements -enthrones -enthroning -enthuse -enthused -enthuses -enthusiasm -enthusiasms -enthusiast -enthusiastic -enthusiasts -enthusing -entice -enticed -enticement -enticements -entices -enticing -entire -entirety -entities -entity -entomb -entombed -entombing -entombment -entombs -entourage -entourages -entrance -entranced -entrances -entrancing -entrant -entrants -entrap -entrapment -entrapped -entrapping -entraps -entreat -entreated -entreaties -entreating -entreats -entreaty -entrench -entrenched -entrenches -entrenching -entrenchment -entrenchments -entrepreneur -entrepreneurs -entries -entropy -entrust -entrusted -entrusting -entrusts -entry -entryway -entryways -entwine -entwined -entwines -entwining -enumerate -enumerated -enumerates -enumerating -enumeration -enumerations -enunciate -enunciated -enunciates -enunciating -enunciation -enure -enured -enures -enuring -envied -envies -envious -enviousness -environment -environments -environs -envisage -envisaged -envisages -envisaging -envision -envisioned -envisioning -envisions -envoy -envoys -envy -envying -enzyme -enzymes -eocene -eon -eons -eos -eosio -epcot -ephesian -ephesus -ephraim -epic -epicenter -epicenters -epicentre -epicentres -epics -epictetus -epicure -epicurean -epicureans -epicures -epicurus -epidemic -epidemics -epidermis -epidermises -epigram -epigrammatic -epigrams -epimethius -epiphanies -epiphany -episcopacy -episcopate -episode -episodes -episodic -epitaph -epitaphs -epithet -epithets -epitome -epitomes -epitomise -epitomised -epitomises -epitomising -epitomize -epitomized -epitomizes -epitomizing -epoch -epochs -epoxied -epoxies -epoxy -epoxyed -epoxying -epsom -epson -epstein -equanimity -equate -equated -equates -equating -equation -equations -equator -equators -equestrian -equestrians -equestrienne -equestriennes -equidistant -equine -equines -equinox -equinoxes -equip -equipage -equipages -equipment -equipoise -equipped -equipping -equips -equities -equity -equivocate -equivocated -equivocates -equivocating -equivocation -equivocations -era -eradicate -eradicated -eradicates -eradicating -eradication -eras -erase -erased -eraser -erasers -erases -erasing -erasmus -erasure -erasures -erato -eratosthenes -ere -erebus -erect -erected -erecting -erection -erections -erectness -erector -erects -erewhon -erg -ergo -ergonomic -ergonomics -ergs -erhard -eric -erica -erich -erick -ericka -erickson -ericson -ericsson -eridanus -erie -erik -erika -erin -eris -eritrea -erma -ermine -ermines -erna -ernest -ernestine -ernesto -ernie -ernst -erode -eroded -erodes -eroding -erogenous -eros -eroses -erosion -erosive -erotic -erotica -eroticism -err -errand -errands -errant -errata -erratas -erratic -erratum -erred -erring -erroneous -error -errors -errs -ersatz -ersatzes -erse -erudite -erudition -erupt -erupted -erupting -eruption -eruptions -erupts -ervin -erwin -erythrocyte -erythrocytes -esau -escapade -escapades -escape -escaped -escapee -escapees -escapes -escaping -escapism -escapist -escapists -escarpment -escarpments -escher -escherichia -eschew -eschewed -eschewing -eschews -escort -escorted -escorting -escorts -escrow -escrows -escutcheon -escutcheons -eskimo -eskimos -esophagi -esophagus -esophaguses -esoteric -esperanto -esperanza -espied -espies -espinoza -espionage -espouse -espoused -espouses -espousing -espresso -espressos -espy -espying -esquire -esquires -essay -essayed -essaying -essayist -essayists -essays -essen -essence -essences -essene -essequibo -essex -essie -estate -estates -esteban -esteem -esteemed -esteeming -esteems -ester -esters -estes -esther -esthete -esthetes -esthetic -esthetics -estimate -estimated -estimates -estimating -estimation -estimations -estimator -estimators -estonia -estonian -estonians -estrada -estrange -estranged -estrangement -estrangements -estranges -estranging -estrogen -estuaries -estuary -eta -etch -etched -etcher -etchers -etches -etching -etchings -eternities -eternity -ethan -ether -ethernet -ethic -ethics -ethiopia -ethiopian -ethiopians -ethnic -ethnicity -ethnics -ethos -etiquette -etna -eton -etruria -etruscan -etta -eucharist -eucharistic -eucharists -eugene -eugenia -eugenics -eugenie -eugenio -eumenides -eunice -eunuch -eunuchs -euphemism -euphemisms -euphemistic -euphony -euphoria -euphoric -euphrates -eurasia -eurasian -eurasians -eureka -euripides -euro -europa -europe -european -europeans -euros -eurydice -eustachian -eutectic -euterpe -euthanasia -eva -evacuate -evacuated -evacuates -evacuating -evacuation -evacuations -evacuee -evacuees -evade -evaded -evades -evading -evan -evanescent -evans -evaporate -evaporated -evaporates -evaporating -evaporation -evasion -evasions -evasive -evasiveness -eve -even -evened -evener -evenest -evenhanded -evening -evenings -evenki -evenness -evens -event -eventide -events -eventuate -eventuated -eventuates -eventuating -ever -everest -everett -everette -evergreen -evergreens -evermore -everready -evert -every -everybody -everyday -everyone -everything -everywhere -eves -evian -evict -evicted -evicting -eviction -evictions -evicts -evidence -evidenced -evidences -evidencing -evident -evince -evinced -evinces -evincing -eviscerate -eviscerated -eviscerates -eviscerating -evisceration -evita -evocation -evocations -evocative -evoke -evoked -evokes -evoking -ewe -ewer -ewers -ewes -ewing -exacerbate -exacerbated -exacerbates -exacerbating -exacerbation -exact -exacted -exacter -exactest -exacting -exactitude -exactness -exacts -exaggerate -exaggerated -exaggerates -exaggerating -exaggeration -exaggerations -exam -examination -examinations -examine -examined -examiner -examiners -examines -examining -exams -exasperate -exasperated -exasperates -exasperating -exasperation -excavate -excavated -excavates -excavating -excavation -excavations -excavator -excavators -excedrin -exceed -exceeded -exceeding -exceeds -except -excepted -excepting -exception -exceptions -excepts -excerpt -excerpted -excerpting -excerpts -excess -excesses -excessive -exchange -exchanged -exchanges -exchanging -exchequer -exchequers -excise -excised -excises -excising -excision -excisions -excitation -excite -excited -excitement -excitements -excites -exciting -excommunicate -excommunicated -excommunicates -excommunicating -excommunication -excommunications -excoriate -excoriated -excoriates -excoriating -excoriation -excoriations -excrement -excrescence -excrescences -excreta -excrete -excreted -excretes -excreting -excretion -excretions -excretory -excruciating -excursion -excursions -excuse -excused -excuses -excusing -exec -execrate -execrated -execrates -execrating -execs -execute -executed -executes -executing -execution -executioner -executioners -executions -executive -executives -executor -executors -executrices -executrix -executrixes -exegeses -exegesis -exempt -exempted -exempting -exemption -exemptions -exempts -exercise -exercised -exercises -exercising -exert -exerted -exerting -exertion -exertions -exerts -exes -exhaust -exhausted -exhausting -exhaustion -exhaustive -exhausts -exhibit -exhibited -exhibiting -exhibition -exhibitionism -exhibitionist -exhibitionists -exhibitions -exhibitor -exhibitors -exhibits -exhort -exhortation -exhortations -exhorted -exhorting -exhorts -exhumation -exhumations -exhume -exhumed -exhumes -exhuming -exigencies -exigency -exigent -exiguous -exist -existed -existence -existences -existent -existing -exists -exit -exited -exiting -exits -exocet -exodus -exoduses -exonerate -exonerated -exonerates -exonerating -exoneration -exorbitance -exorbitant -exorcise -exorcised -exorcises -exorcising -exorcism -exorcisms -exorcist -exorcists -exorcize -exorcized -exorcizes -exorcizing -exotic -exotics -expand -expanded -expanding -expands -expanse -expanses -expansion -expansionist -expansionists -expansions -expansive -expansiveness -expatiate -expatiated -expatiates -expatiating -expatriate -expatriated -expatriates -expatriating -expatriation -expect -expectancy -expectant -expectation -expectations -expected -expecting -expectorant -expectorants -expectorate -expectorated -expectorates -expectorating -expectoration -expects -expedience -expediences -expediencies -expediency -expedient -expedients -expedite -expedited -expediter -expediters -expedites -expediting -expedition -expeditionary -expeditions -expeditious -expeditor -expeditors -expend -expended -expending -expenditure -expenditures -expends -expense -expenses -expensive -experience -experienced -experiences -experiencing -experiment -experimentation -experimented -experimenter -experimenters -experimenting -experiments -expert -expertise -expertness -experts -expiate -expiated -expiates -expiating -expiation -expiration -expire -expired -expires -expiring -expiry -expo -exponent -exponentiation -exponents -export -exportation -exported -exporter -exporters -exporting -exports -expos -expose -exposed -exposes -exposing -exposition -expositions -expository -exposure -exposures -expound -expounded -expounding -expounds -express -expressed -expresses -expressing -expression -expressionism -expressionist -expressionists -expressions -expressive -expressiveness -expressway -expressways -expropriate -expropriated -expropriates -expropriating -expropriation -expropriations -expunge -expunged -expunges -expunging -expurgate -expurgated -expurgates -expurgating -expurgation -expurgations -exquisite -extant -extemporaneous -extempore -extemporise -extemporised -extemporises -extemporising -extemporize -extemporized -extemporizes -extemporizing -extend -extended -extending -extends -extension -extensions -extensive -extensiveness -extent -extents -extenuate -extenuated -extenuates -extenuating -extenuation -exterior -exteriors -exterminate -exterminated -exterminates -exterminating -extermination -exterminations -exterminator -exterminators -extinct -extincted -extincting -extinction -extinctions -extincts -extinguish -extinguished -extinguisher -extinguishers -extinguishes -extinguishing -extirpate -extirpated -extirpates -extirpating -extirpation -extort -extorted -extorting -extortion -extortionate -extortionist -extortionists -extorts -extra -extract -extracted -extracting -extraction -extractions -extractor -extractors -extracts -extradite -extradited -extradites -extraditing -extradition -extraditions -extraneous -extraordinary -extras -extrasensory -extravagance -extravagances -extravagant -extravaganza -extravaganzas -extravert -extraverted -extraverts -extreme -extremer -extremes -extremest -extremism -extremist -extremists -extremities -extremity -extricate -extricated -extricates -extricating -extrication -extrinsic -extroversion -extrovert -extroverted -extroverts -extrude -extruded -extrudes -extruding -extrusion -extrusions -exuberance -exuberant -exude -exuded -exudes -exuding -exxon -eyck -eye -eyebrow -eyebrows -eyed -eyeing -eyepiece -eyepieces -eyes -eyesight -eyesore -eyesores -eyestrain -eyeteeth -eyetooth -eyewitness -eyewitnesses -eying -eyre -eyrie -eysenck -ezra -fabian -fabric -fabricate -fabricated -fabricates -fabricating -fabrication -fabrications -fabrics -facade -facades -face -facebook -faced -faces -facet -faceted -faceting -facetious -facetiousness -facets -facetted -facetting -facing -facings -fact -faction -factions -factitious -factor -factored -factories -factoring -factorisation -factorise -factorising -factorization -factorize -factorizing -factors -factory -factotum -factotums -facts -fad -faddish -fade -faded -fades -fading -fads -faeces -faeroe -fafnir -fag -fagged -fagging -faggot -faggots -fagin -fagot -fagots -fags -fahd -fahrenheit -fain -fainer -fainest -faint -fainted -fainter -faintest -fainthearted -fainting -faintness -faints -fair -fairbanks -fairer -fairest -fairground -fairgrounds -fairies -fairness -fairs -fairway -fairways -fairy -faith -faiths -fake -faked -faker -fakers -fakes -faking -fakir -fakirs -fame -famed -famine -famines -famish -famished -famishes -famishing -famous -fan -fanatic -fanaticism -fanatics -fanboy -fanboys -fancied -fancier -fanciers -fancies -fanciest -fanciness -fancy -fancying -fandom -fanfare -fanfares -fang -fangs -fanned -fannie -fannies -fanning -fanny -fans -fantasied -fantasies -fantasise -fantasised -fantasises -fantasising -fantasize -fantasized -fantasizes -fantasizing -fantastic -fantasy -fantasying -fanzine -far -faraday -faraway -farce -farces -fare -fared -fares -fargo -farina -farinaceous -faring -farm -farmed -farmer -farmers -farmhand -farmhands -farmhouse -farmhouses -farming -farms -farmyard -farmyards -farragut -farrakhan -farrow -farrowed -farrowing -farrows -farsi -farsighted -farsightedness -fart -farted -farther -farthest -farthing -farthings -farting -farts -fascinate -fascinated -fascinates -fascinating -fascination -fascinations -fascism -fascist -fascists -fashion -fashioned -fashioning -fashionista -fashionistas -fashions -fassbinder -fast -fasted -fasten -fastened -fastener -fasteners -fastening -fastenings -fastens -faster -fastest -fastidious -fastidiousness -fasting -fastness -fastnesses -fasts -fat -fatah -fate -fated -fates -fathead -fatheads -father -fathered -fatherhood -fathering -fathers -fathom -fathomed -fathoming -fathoms -fatigue -fatigued -fatigues -fatiguing -fatima -fatimid -fating -fatness -fats -fatten -fattened -fattening -fattens -fatter -fattest -fattier -fatties -fattiest -fatty -fatuous -fatuousness -faucet -faucets -faun -fauna -faunae -faunas -fauns -faust -faustian -faustino -faustus -favor -favored -favoring -favorite -favorites -favoritism -favors -favour -favoured -favouring -favourite -favourites -favouritism -favours -fawkes -fawn -fawned -fawning -fawns -fax -faxed -faxes -faxing -fay -faye -faze -fazed -fazes -fazing -fdr -fear -feared -fearing -fears -fearsome -feast -feasted -feasting -feasts -feat -feather -featherbedding -feathered -featherier -featheriest -feathering -feathers -featherweight -featherweights -feathery -feats -feature -featured -features -featuring -feb -februaries -february -feces -fecund -fecundity -fed -federate -federated -federates -federating -federation -federations -federico -fedex -fedora -fedoras -feds -fee -feed -feedback -feedbag -feedbags -feeder -feeders -feeding -feedings -feeds -fees -feet -feign -feigned -feigning -feigns -feint -feinted -feinting -feints -feistier -feistiest -feisty -feminine -feminines -femininity -feminism -feminist -feminists -femora -femur -femurs -fen -fence -fenced -fencer -fencers -fences -fencing -fend -fended -fender -fenders -fending -fends -fenian -fens -fer -ferber -ferdinand -fergus -ferguson -fermat -ferment -fermentation -fermented -fermenting -ferments -fermi -fern -fernandez -fernando -ferns -ferocious -ferociousness -ferocity -ferrari -ferraro -ferret -ferreted -ferreting -ferrets -ferric -ferried -ferries -ferris -ferrous -ferry -ferryboat -ferryboats -ferrying -fervency -fervent -fervid -fervor -fervour -fest -fester -festered -festering -festers -festive -festivities -festivity -festoon -festooned -festooning -festoons -fests -feta -fetch -fetched -fetches -fetching -feted -fetich -fetiches -fetid -feting -fetish -fetishes -fetishism -fetishist -fetishistic -fetishists -fetter -fettered -fettering -fetters -fetus -fetuses -feud -feuded -feuding -feuds -fever -fevered -feverish -fevers -few -fewer -fewest -fey -feynman -fez -fezes -fezzes -fiasco -fiascoes -fiascos -fiat -fiats -fib -fibbed -fibber -fibbers -fibbing -fiber -fiberboard -fibers -fibonacci -fibre -fibreboard -fibres -fibroid -fibrous -fibs -fiche -fiches -fichte -fiction -fictions -fictitious -fidget -fidgeted -fidgeting -fidgets -fidgety -fido -fiduciaries -fiduciary -fie -fief -fiefs -fiend -fiendish -fiends -fierce -fierceness -fiercer -fiercest -fierier -fieriest -fieriness -fiery -fiesta -fiestas -fife -fifes -fifteen -fifteens -fifteenth -fifteenths -fifth -fifths -fifties -fiftieth -fiftieths -fifty -fig -figaro -fight -fighter -fighters -fighting -fights -figment -figments -figs -figueroa -figurative -figure -figured -figurehead -figureheads -figures -figurine -figurines -figuring -fiji -fijian -fijians -fin -finance -financed -finances -financier -financiers -financing -finch -finches -find -finder -finders -finding -findings -finds -fine -fined -fineness -finer -finery -fines -finesse -finessed -finesses -finessing -finest -finger -fingerboard -fingerboards -fingered -fingering -fingerings -fingerprint -fingerprinted -fingerprinting -fingerprints -fingers -fingertip -fingertips -finickier -finickiest -finicky -fining -finis -finises -finish -finished -finisher -finishers -finishes -finishing -finite -fink -finked -finking -finks -finn -finnbogadottir -finnegan -finnish -finns -finny -fins -fiona -fiord -fiords -fir -fire -firearm -firearms -firebomb -firebombed -firebombing -firebombs -firebrand -firebrands -firebreak -firebreaks -firebug -firebugs -firecracker -firecrackers -fired -firefight -firefighter -firefighters -firefighting -firefights -firefox -firehouse -firehouses -fireman -firemen -firepower -fireproof -fireproofed -fireproofing -fireproofs -fires -fireside -firesides -firestone -firestorm -firestorms -firetrap -firetraps -firewater -firewood -firework -fireworks -firing -firm -firmament -firmaments -firmed -firmer -firmest -firming -firmness -firms -firmware -firs -first -firstborn -firstborns -firsthand -firsts -firth -firths -fischer -fish -fished -fisher -fisheries -fisherman -fishermen -fishers -fishery -fishes -fishhook -fishhooks -fishier -fishiest -fishing -fishnet -fishnets -fishwife -fishwives -fishy -fisk -fission -fissure -fissures -fist -fisticuffs -fists -fit -fitch -fitness -fits -fitted -fitter -fitters -fittest -fitting -fittings -fitzpatrick -fitzroy -five -fiver -fives -fix -fixate -fixated -fixates -fixating -fixation -fixations -fixative -fixatives -fixed -fixer -fixers -fixes -fixing -fixings -fixity -fixture -fixtures -fizeau -fizz -fizzed -fizzes -fizzier -fizziest -fizzing -fizzy -fjord -fjords -fnma -foam -foamed -foamier -foamiest -foaming -foams -foamy -fob -fobbed -fobbing -fobs -foch -foci -focus -focused -focuses -focusing -focussed -focusses -focussing -fodder -fodders -foe -foes -foetid -foetus -foetuses -fog -fogbound -fogey -fogeys -fogged -foggier -foggiest -fogginess -fogging -foggy -foghorn -foghorns -fogies -fogs -fogy -foist -foisted -foisting -foists -fokker -foment -fomentation -fomented -fomenting -foments -fond -fonda -fondant -fondants -fonder -fondest -fondness -fondu -fondue -fondues -fondus -font -fonts -food -foods -foodstuff -foodstuffs -foot -footage -footbridge -footbridges -footed -footing -footings -footman -footmen -footnote -footnoted -footnotes -footnoting -footpath -footpaths -footprint -footprints -footrest -footrests -foots -footsie -footsies -footsore -footstep -footsteps -footwear -footwork -fop -foppish -fops -for -fora -forage -foraged -forager -foragers -forages -foraging -foray -forayed -foraying -forays -forbad -forbade -forbear -forbearance -forbearing -forbears -forbes -forbid -forbidden -forbidding -forbiddings -forbids -forbore -forborne -force -forced -forceps -forces -forcing -ford -forded -fording -fords -fore -forearm -forearmed -forearming -forearms -forebear -forebears -forebode -foreboded -forebodes -foreboding -forebodings -forecast -forecasted -forecaster -forecasters -forecasting -forecasts -forefather -forefathers -forefeet -forefinger -forefingers -forefoot -forefront -forefronts -foregather -foregathered -foregathering -foregathers -forego -foregoes -foregoing -foregone -foreground -foregrounded -foregrounding -foregrounds -forehand -forehands -forehead -foreheads -foreign -foreigner -foreigners -foreman -foremast -foremasts -foremen -foremost -forename -forenames -forenoon -forenoons -forensic -forensics -foreordain -foreordained -foreordaining -foreordains -forerunner -forerunners -fores -foresaw -foresee -foreseeing -foreseen -foresees -foreshadow -foreshadowed -foreshadowing -foreshadows -foreshorten -foreshortened -foreshortening -foreshortens -foresight -foreskin -foreskins -forest -forestation -forested -forester -foresters -foresting -forestry -forests -foreswear -foreswearing -foreswears -foreswore -foresworn -foretaste -foretasted -foretastes -foretasting -forethought -forever -forevermore -forewarn -forewarned -forewarning -forewarns -forewent -forewoman -forewomen -foreword -forewords -forfeit -forfeited -forfeiting -forfeits -forfeiture -forgather -forgathered -forgathering -forgathers -forgave -forge -forged -forger -forgeries -forgers -forgery -forges -forget -forgets -forgetting -forging -forgive -forgiven -forgiveness -forgives -forgiving -forgo -forgoes -forgoing -forgone -forgot -forgotten -fork -forked -forking -forks -form -format -formation -formations -formative -formats -formatted -formatting -formed -former -formica -formicas -forming -formosa -formosan -forms -fornicate -fornicated -fornicates -fornicating -fornication -forrest -forsake -forsaken -forsakes -forsaking -forsook -forsooth -forster -forswear -forswearing -forswears -forswore -forsworn -forsythia -forsythias -fort -forte -fortes -forth -forthcoming -forthright -forthrightness -forthwith -forties -fortieth -fortieths -fortification -fortifications -fortified -fortifies -fortify -fortifying -fortissimo -fortitude -fortnight -fortnights -fortress -fortresses -forts -fortuitous -fortunate -fortune -fortunes -forty -forum -forums -forward -forwarded -forwarder -forwardest -forwarding -forwardness -forwards -forwent -fosse -foster -fostered -fostering -fosters -fotomat -fought -found -foundation -foundations -founded -founder -foundered -foundering -founders -founding -foundries -foundry -founds -fount -fountain -fountainhead -fountainheads -fountains -founts -four -fourier -fourneyron -fours -fourscore -foursome -foursomes -foursquare -fourteen -fourteens -fourteenth -fourteenths -fourth -fourths -fox -foxed -foxes -foxhound -foxhounds -foxier -foxiest -foxing -foxtrot -foxtrots -foxtrotted -foxtrotting -foxy -foyer -foyers -fracas -fracases -frack -fracked -fracking -fracks -fraction -fractions -fractious -fracture -fractured -fractures -fracturing -fragment -fragmentary -fragmentation -fragmented -fragmenting -fragments -fragonard -fragrance -fragrances -fragrant -frame -framed -framer -framers -frames -framework -frameworks -framing -fran -franc -france -frances -francesca -franchise -franchised -franchisee -franchisees -franchiser -franchisers -franchises -franchising -francine -francis -francisca -franciscan -francisco -franck -franco -francois -francoise -francs -frank -franked -frankenstein -franker -frankest -frankfort -frankfurt -frankfurter -frankfurters -frankie -frankincense -franking -frankness -franks -franny -frantic -franz -frappes -fraser -frat -fraternisation -fraternise -fraternised -fraternises -fraternising -fraternities -fraternity -fraternization -fraternize -fraternized -fraternizes -fraternizing -fratricide -fratricides -frats -fraud -frauds -fraught -fray -frayed -fraying -frays -frazier -freak -freaked -freakier -freakiest -freaking -freakish -freaks -freaky -fred -freda -freddie -freddy -frederic -frederick -fredericton -fredric -fredrick -free -freebase -freebased -freebases -freebasing -freebee -freebees -freebie -freebies -freebooter -freebooters -freed -freedman -freedmen -freedom -freedoms -freehand -freeing -freeman -freemason -freemasonries -freemasonry -freemasons -freemen -freer -frees -freest -freestanding -freethinker -freethinkers -freethinking -freetown -freeway -freeways -freeze -freezer -freezers -freezes -freezing -freida -freight -freighted -freighter -freighters -freighting -freights -fremont -french -frenches -frenchman -frenchmen -frenchwoman -frenchwomen -frenetic -frenzied -frenzies -frenzy -freon -frequencies -frequency -frequent -frequented -frequenter -frequentest -frequenting -frequents -fresco -frescoes -frescos -fresh -freshen -freshened -freshening -freshens -fresher -freshest -freshet -freshets -freshman -freshmen -freshness -freshwater -fresno -fret -frets -fretted -fretting -fretwork -freud -freudian -frey -freya -friar -friars -fricassee -fricasseed -fricasseeing -fricassees -friction -friday -fridays -fridge -fridges -fried -frieda -friedan -friedman -friend -friended -friending -friends -friendship -friendships -frier -friers -fries -frieze -friezes -frigate -frigates -frigga -fright -frighted -frighten -frightened -frightening -frightens -frighting -frights -frigid -frigidaire -frigidity -fringe -fringed -fringes -fringing -fripperies -frippery -frisbee -frisco -frisian -frisk -frisked -friskier -friskiest -friskiness -frisking -frisks -frisky -frito -fritter -frittered -frittering -fritters -fritz -frizz -frizzed -frizzes -frizzier -frizziest -frizzing -frizzy -fro -frobisher -frock -frocks -frog -frogman -frogmen -frogs -froissart -from -fromm -frond -fronde -fronds -front -frontage -frontages -fronted -frontenac -frontier -frontiers -frontiersman -frontiersmen -fronting -frontispiece -frontispieces -frontrunner -frontrunners -fronts -frost -frostbit -frostbite -frostbites -frostbiting -frostbitten -frosted -frostier -frostiest -frostiness -frosting -frostings -frosts -frosty -froth -frothed -frothier -frothiest -frothing -froths -frothy -frown -frowned -frowning -frowns -frowsier -frowsiest -frowsy -frowzier -frowziest -frowzy -froze -frozen -fructified -fructifies -fructify -fructifying -fructose -fruit -fruitcake -fruitcakes -fruited -fruitier -fruitiest -fruiting -fruition -fruits -fruity -frump -frumpier -frumpiest -frumps -frumpy -frustrate -frustrated -frustrates -frustrating -frustration -frustrations -fry -frye -fryer -fryers -frying -fsf -fuchs -fuchsia -fuchsias -fuck -fucked -fucker -fuckers -fucking -fucks -fudge -fudged -fudges -fudging -fuentes -fugger -fugitive -fugitives -fugue -fugues -fuji -fujitsu -fujiwara -fukuoka -fukuyama -fume -fumed -fumes -fumigate -fumigated -fumigates -fumigating -fumigation -fumigator -fumigators -fuming -fun -funafuti -function -functionaries -functionary -functioned -functioning -functions -fund -funded -funding -funds -fundy -fungi -fungicide -fungicides -fungous -fungus -funguses -funk -funked -funkier -funkiest -funking -funks -funky -funner -funnest -funnier -funnies -funniest -funniness -funny -fur -furbish -furbished -furbishes -furbishing -furies -furious -furnace -furnaces -furnish -furnished -furnishes -furnishing -furnishings -furniture -furor -furore -furores -furors -furred -furrier -furriers -furriest -furring -furrow -furrowed -furrowing -furrows -furry -furs -further -furtherance -furthered -furthering -furthermore -furthermost -furthers -furthest -furtive -furtiveness -fury -furze -fuse -fused -fuses -fushun -fusing -fusion -fusions -fuss -fussbudget -fussbudgets -fussed -fusses -fussier -fussiest -fussiness -fussing -fussy -fustian -fustier -fustiest -fusty -futon -futons -future -futures -futuristic -futurities -futurity -futz -futzed -futzes -futzing -fuze -fuzed -fuzes -fuzhou -fuzing -fuzz -fuzzbuster -fuzzed -fuzzes -fuzzier -fuzziest -fuzziness -fuzzing -fuzzy -gab -gabardine -gabardines -gabbed -gabbier -gabbiest -gabbing -gabby -gaberdine -gaberdines -gabon -gaborone -gabs -gacrux -gad -gadabout -gadabouts -gadded -gadding -gadget -gadgetry -gadgets -gads -gadsden -gaea -gaff -gaffe -gaffed -gaffes -gaffing -gaffs -gag -gagarin -gage -gaged -gages -gagged -gagging -gaging -gags -gaia -gaiety -gaiman -gain -gained -gaines -gaining -gains -gainsaid -gainsay -gainsaying -gainsays -gainsborough -gait -gaiter -gaiters -gaits -gamay -gambia -gambit -gambits -game -gamecock -gamecocks -gamed -gamekeeper -gamekeepers -gameness -gamer -games -gamesmanship -gamest -gamete -gametes -gamey -gamier -gamiest -gamin -gamine -gamines -gaming -gamins -gamma -gammas -gamow -gamut -gamuts -gamy -gander -ganders -gandhi -gandhian -ganesha -gang -ganged -ganges -ganging -gangrene -gangrened -gangrenes -gangrening -gangrenous -gangs -gangster -gangsters -gangtok -gangway -gangways -gannet -gannets -gantries -gantry -ganymede -gap -gape -gaped -gapes -gaping -gaps -garage -garaged -garages -garaging -garb -garbage -garbageman -garbanzo -garbanzos -garbed -garbing -garbo -garbs -garcia -garden -gardened -gardener -gardeners -gardenia -gardenias -gardening -gardens -gardner -gareth -gargantua -gargantuan -garish -garishness -garment -garments -garner -garnered -garnering -garners -garnet -garnets -garnish -garnished -garnishee -garnisheed -garnisheeing -garnishees -garnishes -garnishing -garote -garoted -garotes -garoting -garotte -garotted -garottes -garotting -garret -garrets -garrett -garrick -garrison -garrisoned -garrisoning -garrisons -garrote -garroted -garrotes -garroting -garrotte -garrotted -garrottes -garrotting -garry -garter -garters -garth -garvey -gary -garza -gas -gascony -gaseous -gases -gash -gashed -gashes -gashing -gasket -gaskets -gasp -gasped -gasping -gasps -gassed -gasser -gasses -gassier -gassiest -gassing -gassy -gastric -gastritis -gastronomic -gastronomy -gasworks -gate -gatecrasher -gatecrashers -gated -gatepost -gateposts -gates -gateway -gateways -gather -gathered -gatherer -gatherers -gathering -gatherings -gathers -gating -gatorade -gatsby -gatun -gauche -gaucher -gauchest -gaucho -gauchos -gaudier -gaudiest -gaudiness -gaudy -gauge -gauged -gauges -gauging -gauguin -gaunt -gaunter -gauntest -gauntness -gauss -gaussian -gautama -gautier -gauze -gauzier -gauziest -gauzy -gave -gavin -gavotte -gavottes -gawain -gawk -gawked -gawkier -gawkiest -gawkiness -gawking -gawks -gawky -gay -gayer -gayest -gayety -gayness -gays -gaza -gaze -gazebo -gazeboes -gazebos -gazed -gazer -gazers -gazes -gazette -gazetted -gazetteer -gazetteers -gazettes -gazetting -gaziantep -gazing -gazpacho -gdansk -gear -gearbox -gearboxes -geared -gearing -gears -gearshift -gearshifts -gecko -geckoes -geckos -gee -geed -geegaw -geegaws -geeing -geek -geekier -geekiest -geeks -geeky -gees -geese -geez -geezer -geezers -geffen -gehenna -gehrig -geiger -geisha -geishas -gem -gemini -geminis -gems -gemstone -gemstones -gena -genaro -gendarme -gendarmes -gender -genders -gene -genera -generate -generated -generates -generating -generation -generations -generative -generator -generators -generic -generics -generosities -generosity -generous -genes -geneses -genesis -genet -genetic -geneticist -geneticists -genetics -geneva -genevieve -genghis -genie -genies -genii -genitive -genitives -genius -geniuses -genoa -genoas -genocide -genome -genomes -genre -genres -gent -gentian -gentians -gentoo -gentries -gentrification -gentrified -gentrifies -gentrify -gentrifying -gentry -gents -genuine -genuineness -genus -genuses -geo -geocache -geocached -geocaches -geocaching -geocentric -geode -geodes -geodesic -geodesics -geoengineering -geoffrey -geographer -geographers -geographic -geographies -geography -geometer -geometric -geometries -geometry -geophysics -george -georges -georgetown -georgette -georgia -georgian -georgians -georgina -geostationary -geranium -geraniums -gerard -gerardo -gerber -gere -geriatric -geriatrics -germ -german -germane -germanic -germanium -germans -germany -germicide -germicides -germinate -germinated -germinates -germinating -germination -germs -geronimo -gerry -gerrymander -gerrymandered -gerrymandering -gerrymanders -gershwin -gertrude -gerund -gerunds -gestapo -gestapos -gestate -gestated -gestates -gestating -gestation -gesture -gestured -gestures -gesturing -gesundheit -get -getaway -getaways -gethsemane -gets -getting -getty -gettysburg -getup -gewgaw -gewgaws -geyser -geysers -ghana -ghanaian -ghanian -ghanians -ghats -ghazvanid -ghent -gherkin -gherkins -ghetto -ghettoes -ghettos -ghost -ghosted -ghosting -ghosts -ghostwrite -ghostwriter -ghostwriters -ghostwrites -ghostwriting -ghostwritten -ghostwrote -giacometti -giannini -giant -giantess -giantesses -giants -giauque -gibber -gibbered -gibbering -gibberish -gibbers -gibbet -gibbeted -gibbeting -gibbets -gibbon -gibbons -gibbs -gibe -gibed -gibes -gibing -gibson -giddier -giddiest -giddiness -giddy -gide -gideon -gienah -gift -gifted -gifting -gifts -gig -gigabit -gigabits -gigabyte -gigabytes -gigahertz -gigantic -gigged -gigging -gigs -gimcrack -gimcracks -gimme -gimmick -gimmickry -gimmicks -gimmicky -gimpy -gin -gina -ginger -gingerbread -gingersnap -gingersnaps -gingham -gingivitis -gingko -gingkoes -gingkos -gingrich -ginkgo -ginkgoes -ginkgos -ginned -ginning -ginny -gino -gins -ginsberg -ginsburg -ginseng -ginsu -giorgione -giotto -giovanni -gipsies -gipsy -giraffe -giraffes -giraudoux -gird -girded -girder -girders -girding -girds -girt -girted -girth -girths -girting -girts -gish -gismo -gismos -gist -github -giuseppe -give -giveaway -giveaways -given -givens -gives -giving -giza -gizmo -gizmos -gizzard -gizzards -gnash -gnashed -gnashes -gnashing -gnat -gnats -gnaw -gnawed -gnawing -gnawn -gnaws -gneiss -gnome -gnomes -gnomish -gnostic -gnosticism -gnu -gnus -goa -goad -goaded -goading -goads -goat -goatee -goatees -goatherd -goatherds -goats -goatskin -goatskins -gob -gobbed -gobbing -gobi -gobs -god -goddam -goddamed -goddamn -goddamned -goddard -goddaughter -goddaughters -goddess -goddesses -godfather -godfathers -godforsaken -godhood -godiva -godmother -godmothers -godot -godparent -godparents -gods -godsend -godsends -godson -godsons -godthaab -godunov -goering -goes -goethe -gofer -gofers -goff -gog -goiania -going -goings -goiter -goiters -goitre -goitres -gomez -gomorrah -gompers -gonad -gonads -gone -goner -goners -gong -gonged -gonging -gongs -gonna -gonorrhea -gonorrhoea -goo -goober -goobers -good -goodby -goodbye -goodbyes -goodbys -goodie -goodies -goodman -goodness -goodnight -goodrich -goods -goodwin -goody -goodyear -gooey -goof -goofed -goofier -goofiest -goofing -goofs -goofy -gooier -gooiest -gook -gooks -goon -goons -goop -goose -gooseberries -gooseberry -goosed -gooses -goosing -gopher -gophers -gorbachev -gordian -gordimer -gordon -gore -gored -goren -gores -gorey -gorgas -gorge -gorged -gorgeous -gorges -gorging -gorier -goriest -goriness -goring -gorky -gorse -gory -gosh -gossamer -gossip -gossiped -gossiping -gossipped -gossipping -gossips -gossipy -got -goth -gotham -gothic -gothics -goths -gotta -gotten -gouda -goudas -gouge -gouged -gouger -gougers -gouges -gouging -gounod -gourd -gourds -gourmand -gourmands -gourmet -gourmets -gout -goutier -goutiest -gouty -govern -governance -governed -governess -governesses -governing -government -governments -governor -governors -governorship -governs -gown -gowned -gowning -gowns -goya -grab -grabbed -grabber -grabbing -grabs -gracchus -grace -graced -graces -gracie -gracing -gracious -graciousness -grad -gradation -gradations -grade -graded -grader -graders -grades -gradient -gradients -grading -grads -graduate -graduated -graduates -graduating -graduation -graduations -grady -graffias -graffiti -graffito -graft -grafted -grafter -grafters -grafting -grafton -grafts -graham -grahame -grain -grainier -grainiest -grains -grainy -gram -grammar -grammarian -grammarians -grammars -gramme -grammes -grammy -gramophone -grampians -grams -granada -granaries -granary -grand -grandad -grandads -granddad -granddads -granddaughter -granddaughters -grandee -grandees -grander -grandest -grandeur -grandfather -grandfathered -grandfathering -grandfathers -grandiose -grandma -grandmas -grandmother -grandmothers -grandness -grandpa -grandparent -grandparents -grandpas -grands -grandson -grandsons -grandstand -grandstanded -grandstanding -grandstands -grange -granges -granite -grannie -grannies -granny -grant -granted -granting -grants -grape -grapefruit -grapefruits -grapes -grapevine -grapevines -graph -graphed -graphic -graphics -graphing -graphite -graphs -grasp -grasped -grasping -grasps -grass -grassed -grasses -grasshopper -grasshoppers -grassier -grassiest -grassing -grassy -grate -grated -grater -graters -grates -gratification -gratifications -gratified -gratifies -gratify -gratifying -grating -gratings -gratis -gratitude -gratuities -gratuitous -gratuity -grave -graved -graven -graver -graves -gravest -gravestone -gravestones -graveyard -graveyards -gravies -graving -gravitate -gravitated -gravitates -gravitating -gravitation -gravity -gravy -gray -graybeard -graybeards -grayed -grayer -grayest -graying -grayish -grayness -grays -graze -grazed -grazes -grazing -grease -greased -greasepaint -greases -greasier -greasiest -greasiness -greasing -greasy -great -greater -greatest -greatness -greats -grebe -grebes -grecian -greece -greed -greedier -greediest -greediness -greedy -greek -greeks -green -greenback -greenbacks -greene -greened -greener -greenery -greenest -greengrocer -greengrocers -greenhorn -greenhorns -greenhouse -greenhouses -greening -greenish -greenness -greenpeace -greens -greensboro -greenspan -greensward -greenwich -greer -greet -greeted -greeting -greetings -greets -greg -gregarious -gregariousness -gregg -gregorian -gregorio -gregory -grenada -grenade -grenades -grenadier -grenadiers -grenadines -gresham -greta -gretchen -gretzky -grew -grey -greyed -greyer -greyest -greyhound -greyhounds -greying -greyish -greyness -greys -grid -gridiron -gridirons -grids -grief -griefs -grieg -grievance -grievances -grieve -grieved -grieves -grieving -grievous -griffin -griffins -griffith -grim -grimace -grimaced -grimaces -grimacing -grime -grimed -grimes -grimier -grimiest -griming -grimm -grimmer -grimmest -grimness -grimy -grin -grinch -grind -grinder -grinders -grinding -grinds -grindstone -grindstones -gringo -gringos -grinned -grinning -grins -grip -gripe -griped -gripes -griping -grippe -gripped -gripping -grips -gris -grist -grit -grits -gritted -grittier -grittiest -gritting -gritty -groan -groaned -groaning -groans -grocer -groceries -grocers -grocery -grog -groggier -groggiest -grogginess -groggy -groin -groins -grommet -grommets -gromyko -groom -groomed -grooming -grooms -groove -grooved -grooves -groovier -grooviest -grooving -groovy -grope -groped -gropes -groping -gropius -grosbeak -grosbeaks -gross -grossed -grosser -grosses -grossest -grossing -grossness -grosz -grotesque -grotesques -grotius -grotto -grottoes -grottos -grouch -grouched -grouches -grouchier -grouchiest -grouchiness -grouching -grouchy -ground -groundbreaking -groundbreakings -grounded -grounder -grounders -groundhog -groundhogs -grounding -groundings -grounds -groundwork -group -grouped -grouper -groupers -groupie -groupies -grouping -groupings -groups -grouse -groused -grouses -grousing -grout -grouted -grouting -grouts -grove -grover -groves -grow -grower -growers -growing -grown -grownup -grownups -grows -growth -growths -groyne -groynes -grub -grubbed -grubbier -grubbiest -grubbiness -grubbing -grubby -grubs -grubstake -grudge -grudged -grudges -grudging -gruesome -gruesomer -gruesomest -gruff -gruffer -gruffest -gruffness -grumman -grumpier -grumpiest -grumpiness -grumpy -grundy -grunge -grungier -grungiest -grungy -grunt -grunted -grunting -grunts -grus -gruyeres -gryphon -gryphons -gte -guam -guangzhou -guano -guantanamo -guarani -guarantee -guaranteed -guaranteeing -guarantees -guarantied -guaranties -guarantor -guarantors -guaranty -guarantying -guard -guarded -guardhouse -guardhouses -guardian -guardians -guardianship -guarding -guardroom -guardrooms -guards -guardsman -guardsmen -guarnieri -guava -guavas -gucci -guernsey -guernseys -guerra -guerrero -guess -guessed -guesser -guessers -guesses -guessing -guesstimate -guesstimated -guesstimates -guesstimating -guesswork -guest -guested -guesting -guests -guevara -guff -guffaw -guffawed -guffawing -guffaws -guggenheim -guiana -guidance -guide -guidebook -guidebooks -guided -guides -guiding -guinea -guinean -guineans -guineas -guinevere -guinness -guise -guises -guitar -guitarist -guitarists -guitars -guiyang -guizot -gujarat -gujarati -gum -gumbo -gumbos -gumdrop -gumdrops -gummed -gummier -gummiest -gumming -gummy -gumption -gums -gun -gunboat -gunboats -gunfight -gunfights -gunfire -gunk -gunman -gunmen -gunned -gunner -gunners -gunnery -gunning -gunny -gunnysack -gunnysacks -gunpoint -gunpowder -gunrunner -gunrunners -gunrunning -guns -gunshot -gunshots -gunsmith -gunsmiths -gunther -guofeng -guppies -guppy -gupta -gurkha -gurney -gurneys -guru -gurus -gus -gush -gushed -gusher -gushers -gushes -gushier -gushiest -gushing -gushy -gusset -gusseted -gusseting -gussets -gust -gustatory -gustav -gustavo -gustavus -gusted -gustier -gustiest -gusting -gusto -gusts -gusty -gut -gutenberg -guthrie -gutierrez -guts -gutsier -gutsiest -gutsy -gutted -gutter -guttered -guttering -gutters -guttersnipe -guttersnipes -gutting -guy -guyana -guyanese -guyed -guying -guys -guzman -gwen -gwyn -gybe -gybed -gybes -gybing -gym -gymnasia -gymnasium -gymnasiums -gymnast -gymnastic -gymnastics -gymnasts -gymnosperm -gymnosperms -gyms -gyp -gypped -gypping -gyps -gypsies -gypsum -gypsy -gyrate -gyrated -gyrates -gyrating -gyration -gyrations -gyro -gyros -gyroscope -gyroscopes -haas -habakkuk -haber -haberdasher -haberdasheries -haberdashers -haberdashery -habit -habitat -habitation -habitations -habitats -habits -habituate -habituated -habituates -habituating -habituation -hacienda -haciendas -hack -hacked -hacker -hackers -hacking -hackney -hackneyed -hackneying -hackneys -hacks -hacksaw -hacksaws -hacktivist -hacktivists -had -hadar -haddock -haddocks -hades -hadrian -haemorrhage -haemorrhaged -haemorrhages -haemorrhaging -haemorrhoid -haemorrhoids -hafiz -hafnium -haft -hafts -hag -hagar -haggai -haggard -hagiographa -hags -hague -hah -hahn -haifa -haiku -haiphong -hair -hairbreadth -hairbreadths -hairbrush -hairbrushes -haircut -haircuts -hairdo -hairdos -hairdresser -hairdressers -hairdressing -haired -hairier -hairiest -hairiness -hairnet -hairnets -hairpiece -hairpieces -hairpin -hairpins -hairs -hairsbreadth -hairsbreadths -hairspring -hairsprings -hairy -haiti -haitian -haitians -hake -hakes -hakka -ham -haman -hamburg -hamburger -hamburgers -hamburgs -hamhung -hamitic -hammed -hammer -hammered -hammerhead -hammerheads -hammering -hammerings -hammers -hammerstein -hammett -hamming -hammock -hammocks -hammond -hammurabi -hamper -hampered -hampering -hampers -hampshire -hampton -hams -hamster -hamsters -hamstring -hamstringing -hamstrings -hamstrung -hamsun -han -hancock -hand -handbag -handbags -handbook -handbooks -handcar -handcars -handcart -handcarts -handcraft -handcrafted -handcrafting -handcrafts -handcuff -handcuffed -handcuffing -handcuffs -handed -handedness -handgun -handguns -handicap -handicapped -handicapper -handicappers -handicapping -handicaps -handicraft -handicrafts -handier -handiest -handiness -handing -handiwork -handkerchief -handkerchiefs -handkerchieves -handmade -handmaid -handmaiden -handmaidens -handmaids -handout -handouts -handpick -handpicked -handpicking -handpicks -hands -handset -handsets -handshake -handshakes -handshaking -handsome -handsomeness -handsomer -handsomest -handspring -handsprings -handstand -handstands -handwork -handwriting -handwritten -handy -handyman -handymen -haney -hang -hangar -hangars -hangdog -hanged -hanger -hangers -hanging -hangings -hangman -hangmen -hangout -hangouts -hangover -hangovers -hangs -hangzhou -hank -hanker -hankered -hankering -hankerings -hankers -hankie -hankies -hanks -hanky -hanna -hannah -hanoi -hanover -hanoverian -hans -hansen -hansom -hansoms -hanson -hanukkah -hanukkahs -haphazard -happen -happened -happening -happenings -happens -happenstance -happenstances -happier -happiest -happiness -happy -hapsburg -harangue -harangued -harangues -haranguing -harare -harass -harassed -harasses -harassing -harassment -harbin -harbinger -harbingers -harbor -harbored -harboring -harbors -harbour -harboured -harbouring -harbours -hard -hardback -hardbacks -hardcover -hardcovers -harden -hardened -hardener -hardeners -hardening -hardens -harder -hardest -hardheaded -hardheadedness -hardhearted -hardheartedness -hardier -hardiest -hardin -hardiness -harding -hardness -hardship -hardships -hardtack -hardtop -hardtops -hardware -hardwood -hardwoods -hardy -hare -harebrained -hared -harem -harems -hares -hargreaves -haring -hark -harked -harken -harkened -harkening -harkens -harking -harks -harm -harmed -harming -harmon -harmonic -harmonica -harmonicas -harmonics -harmonies -harmonious -harmoniousness -harmonisation -harmonise -harmonised -harmonises -harmonising -harmonization -harmonize -harmonized -harmonizes -harmonizing -harmony -harms -harness -harnessed -harnesses -harnessing -harp -harped -harper -harpies -harping -harpist -harpists -harpoon -harpooned -harpooning -harpoons -harps -harpsichord -harpsichords -harpy -harridan -harridans -harried -harries -harriet -harriett -harrington -harris -harrisburg -harrison -harrods -harrow -harrowed -harrowing -harrows -harry -harrying -harsh -harsher -harshest -harshness -hart -harte -hartford -hartman -harts -harvard -harvest -harvested -harvester -harvesters -harvesting -harvests -harvey -has -hasbro -hash -hashed -hasheesh -hashes -hashing -hashish -hashtag -hashtags -hasidim -hasp -hasps -hassock -hassocks -haste -hasted -hasten -hastened -hastening -hastens -hastes -hastier -hastiest -hastiness -hasting -hastings -hasty -hat -hatch -hatchback -hatchbacks -hatched -hatcheries -hatchery -hatches -hatchet -hatchets -hatching -hatchway -hatchways -hate -hated -hater -haters -hates -hath -hathaway -hating -hatred -hatreds -hats -hatsheput -hatted -hatter -hatteras -hatters -hattie -hatting -haughtier -haughtiest -haughtiness -haughty -haunch -haunches -haunt -haunted -haunting -haunts -hauptmann -hausa -hausdorff -hauteur -havana -havanas -havarti -have -haven -havens -haversack -haversacks -haves -having -havoc -haw -hawaii -hawaiian -hawaiians -hawed -hawing -hawk -hawked -hawker -hawkers -hawking -hawkins -hawkish -hawks -haws -hawser -hawsers -hawthorn -hawthorne -hawthorns -hay -haycock -haycocks -hayden -haydn -hayed -hayes -haying -haymow -haymows -haynes -hays -hayseed -hayseeds -haystack -haystacks -haywire -haywood -hayworth -hazard -hazarded -hazarding -hazardous -hazards -haze -hazed -hazes -hazier -haziest -haziness -hazing -hazings -hazmat -hazy -hbo -head -headache -headaches -headband -headbands -headboard -headboards -headdress -headdresses -headed -header -headers -headfirst -headgear -headhunter -headhunters -headier -headiest -heading -headings -headmaster -headmasters -headmistress -headmistresses -headphone -headphones -headquarter -headquarters -headrest -headrests -headroom -heads -headset -headsets -headstone -headstones -headstrong -headwaiter -headwaiters -headwaters -headway -headwind -headwinds -headword -headwords -heady -heap -heaped -heaping -heaps -hear -heard -hearer -hearers -hearing -hearings -hearken -hearkened -hearkening -hearkens -hears -hearsay -hearse -hearses -hearst -heart -heartache -heartaches -heartbeat -heartbeats -heartbreak -heartbreaking -heartbreaks -heartbroken -heartburn -hearten -heartened -heartening -heartens -hearth -hearths -heartier -hearties -heartiest -heartiness -heartrending -hearts -heartsick -heartstrings -heartthrob -heartthrobs -heartwarming -hearty -heat -heated -heater -heaters -heath -heathen -heathenish -heathens -heather -heaths -heating -heats -heatstroke -heave -heaved -heaven -heavens -heavenward -heavenwards -heaves -heavier -heavies -heaviest -heaviness -heaving -heaviside -heavy -heavyset -heavyweight -heavyweights -hebe -hebert -hebraic -hebrew -hebrews -hebrides -hecate -heck -hectare -hectares -hectic -hector -hectored -hectoring -hectors -hecuba -hedge -hedged -hedgehog -hedgehogs -hedgerow -hedgerows -hedges -hedging -hedonism -hedonist -hedonistic -hedonists -heed -heeded -heeding -heeds -heehaw -heehawed -heehawing -heehaws -heep -hefner -heft -hefted -heftier -heftiest -hefting -hefts -hefty -hegemony -hegira -heidegger -heidi -heifer -heifers -heifetz -height -heighten -heightened -heightening -heightens -heights -heine -heineken -heinous -heinousness -heinrich -heinz -heir -heiress -heiresses -heirs -heisenberg -heisman -heist -heisted -heisting -heists -hem -hemingway -hemisphere -hemispheres -hemispheric -hemmed -hemming -hemorrhage -hemorrhaged -hemorrhages -hemorrhaging -hemorrhoid -hemorrhoids -hemp -hempen -hems -hemstitch -hemstitched -hemstitches -hemstitching -hen -hence -henceforth -henceforward -hench -henchman -henchmen -henderson -hendricks -hendrix -henna -hennaed -hennaing -hennas -hennessy -henpeck -henpecked -henpecking -henpecks -henri -henrietta -henry -hens -henson -hep -hepatic -hepatitis -hepburn -hephaestus -hepper -heppest -heptagon -heptagons -her -hera -herb -herbaceous -herbage -herbart -herbert -herbicide -herbicides -herbivore -herbivores -herbivorous -herbs -herd -herded -herder -herders -herding -herds -herdsman -herdsmen -here -hereabout -hereabouts -hereafter -hereafters -hereby -hereditary -heredity -hereford -herein -hereof -herero -heresies -heresy -heretic -heretics -hereto -heretofore -hereupon -herewith -heriberto -heritage -heritages -herman -hermaphrodite -hermaphrodites -hermaphroditic -hermaphroditus -hermes -hermetic -herminia -hermit -hermitage -hermitages -hermite -hermits -hernandez -hernia -herniae -hernias -hero -herod -herodotus -heroes -heroic -heroics -heroin -heroine -heroins -heroism -heron -herons -heros -herpes -herrera -herrick -herring -herringbone -herrings -hers -hersey -hershey -hertz -hertzes -hertzsprung -herzegovina -hes -heshvan -hesiod -hesitancy -hesitant -hesitate -hesitated -hesitates -hesitating -hesitation -hesitations -hesperus -hess -hesse -hessian -hester -heston -heterodox -heterodoxy -heterogeneity -heterogeneous -hettie -heuristic -heuristics -hew -hewed -hewer -hewers -hewing -hewitt -hewn -hews -hex -hexagon -hexagons -hexameter -hexameters -hexed -hexes -hexing -hey -heyday -heydays -heywood -hezekiah -hiatus -hiatuses -hiawatha -hibachi -hibachis -hibernate -hibernated -hibernates -hibernating -hibernation -hibernia -hibiscus -hibiscuses -hiccough -hiccoughed -hiccoughing -hiccoughs -hiccup -hiccuped -hiccuping -hiccups -hick -hickey -hickeys -hickman -hickok -hickories -hickory -hicks -hid -hidden -hide -hideaway -hideaways -hidebound -hided -hideous -hideousness -hideout -hideouts -hides -hiding -hie -hied -hieing -hierarchies -hierarchy -hieronymus -hies -higgins -high -highborn -highboy -highboys -highbrow -highbrows -highchair -highchairs -higher -highest -highjack -highjacked -highjacker -highjackers -highjacking -highjacks -highness -highs -highway -highwayman -highwaymen -highways -hijack -hijacked -hijacker -hijackers -hijacking -hijackings -hijacks -hike -hiked -hiker -hikers -hikes -hiking -him -hims -hinayana -hind -hindemith -hindenburg -hinder -hindered -hindering -hinders -hindi -hindmost -hindquarter -hindquarters -hindrance -hindrances -hinds -hindsight -hindu -hinduism -hinduisms -hindus -hindustan -hindustani -hines -hinge -hinged -hinges -hinging -hint -hinted -hinting -hinton -hints -hip -hipparchus -hipped -hipper -hippest -hippie -hippies -hipping -hippo -hippocrates -hippocratic -hippopotami -hippopotamus -hippopotamuses -hippos -hippy -hips -hiram -hire -hired -hires -hiring -hirobumi -hirohito -hiroshima -hirsute -his -hispanic -hispanics -hiss -hissed -hisses -hissing -histamine -histamines -histogram -histograms -historian -historians -historic -histories -history -histrionic -histrionics -hit -hitachi -hitch -hitchcock -hitched -hitches -hitchhike -hitchhiked -hitchhiker -hitchhikers -hitchhikes -hitchhiking -hitching -hither -hitherto -hits -hitter -hitters -hitting -hittite -hive -hived -hives -hiving -hmong -hoagie -hoagies -hoagy -hoard -hoarded -hoarder -hoarders -hoarding -hoards -hoarfrost -hoarier -hoariest -hoariness -hoarse -hoarseness -hoarser -hoarsest -hoary -hoax -hoaxed -hoaxer -hoaxers -hoaxes -hoaxing -hob -hobart -hobbes -hobbies -hobbit -hobbs -hobby -hobbyhorse -hobbyhorses -hobbyist -hobbyists -hobnob -hobnobbed -hobnobbing -hobnobs -hobo -hoboes -hobos -hobs -hock -hocked -hockey -hocking -hockney -hocks -hockshop -hockshops -hod -hodge -hodgepodge -hodgepodges -hodges -hodgkin -hods -hoe -hoed -hoedown -hoedowns -hoeing -hoes -hoff -hoffa -hoffman -hofstadter -hog -hogan -hogans -hogarth -hogged -hogging -hoggish -hogs -hogshead -hogsheads -hogwarts -hogwash -hohenstaufen -hohhot -hohokam -hoist -hoisted -hoisting -hoists -hokey -hokier -hokiest -hokkaido -hokum -hokusai -homage -homages -homburg -homburgs -home -homebodies -homebody -homeboy -homeboys -homecoming -homecomings -homed -homegrown -homemade -homemaker -homemakers -homeopathic -homeopathy -homeowner -homeowners -homepage -homepages -homer -homered -homeric -homering -homeroom -homerooms -homers -homes -homesick -homesickness -homespun -homestead -homesteaded -homesteader -homesteaders -homesteading -homesteads -homestretch -homestretches -hometown -hometowns -homeward -homewards -homework -homewrecker -homewreckers -homey -homeyness -homeys -homicide -homicides -homie -homier -homies -homiest -hominess -homing -hominy -homoeopathic -homoeopathy -homogeneity -homogeneous -homogenisation -homogenise -homogenised -homogenises -homogenising -homogenization -homogenize -homogenized -homogenizes -homogenizing -homograph -homographs -homonym -homonyms -homophobia -homophobic -homophone -homophones -homy -honcho -honchos -honda -honduran -hondurans -honduras -hone -honecker -honed -hones -honest -honester -honestest -honesty -honey -honeybee -honeybees -honeycomb -honeycombed -honeycombing -honeycombs -honeydew -honeydews -honeyed -honeying -honeymoon -honeymooned -honeymooner -honeymooners -honeymooning -honeymoons -honeys -hong -honiara -honied -honing -honk -honked -honking -honks -honor -honoraria -honorarium -honorariums -honorary -honored -honorific -honorifics -honoring -honors -honour -honoured -honouring -honours -honshu -hooch -hood -hooded -hoodie -hoodies -hooding -hoodoo -hoodooed -hoodooing -hoodoos -hoods -hoodwink -hoodwinked -hoodwinking -hoodwinks -hooey -hoof -hoofed -hoofing -hoofs -hook -hookah -hookahs -hooke -hooked -hooker -hookers -hookey -hooking -hooks -hookup -hookups -hookworm -hookworms -hooky -hoop -hooped -hooper -hooping -hoops -hoorah -hoorahs -hooray -hoorayed -hooraying -hoorays -hoosier -hoot -hootch -hooted -hooter -hooters -hooting -hoots -hoover -hoovers -hooves -hop -hope -hoped -hopes -hopi -hoping -hopkins -hopped -hopper -hoppers -hopping -hops -hopscotch -hopscotched -hopscotches -hopscotching -horace -horacio -horatio -horde -horded -hordes -hording -horizon -horizons -hormone -hormones -hormuz -horn -horne -horned -hornet -hornets -hornier -horniest -hornpipe -hornpipes -horns -horny -horoscope -horoscopes -horowitz -horrendous -horrid -horrific -horrified -horrifies -horrify -horrifying -horror -horrors -horse -horseback -horsed -horsehair -horsehide -horseman -horsemanship -horsemen -horsepower -horseradish -horseradishes -horses -horseshoe -horseshoed -horseshoeing -horseshoes -horsewhip -horsewhipped -horsewhipping -horsewhips -horsewoman -horsewomen -horsey -horsier -horsiest -horsing -horsy -horthy -horton -horus -hos -hosanna -hosannas -hose -hosea -hosed -hoses -hosiery -hosing -hospice -hospices -host -hostage -hostages -hosted -hostess -hostessed -hostesses -hostessing -hosting -hosts -hot -hotbed -hotbeds -hotcake -hotcakes -hothead -hotheaded -hotheadedness -hotheads -hothouse -hothouses -hotkey -hotkeys -hotness -hotpoint -hotshot -hotshots -hottentot -hotter -hottest -houdini -hoummos -houmous -hound -hounded -hounding -hounds -hour -hours -house -houseboat -houseboats -housebound -housebreak -housebreaking -housebreaks -housebroke -housebroken -housecoat -housecoats -housed -househusband -househusbands -housekeeper -housekeepers -housekeeping -housemaid -housemaids -housemother -housemothers -houses -housetop -housetops -housewares -housewarming -housewarmings -housewife -housewives -housework -housing -housings -housman -houston -houyhnhnm -hove -hover -hovercraft -hovercrafts -hovered -hovering -hovers -hovhaness -how -howard -howdah -howdahs -howdy -howe -however -howitzer -howitzers -hows -howsoever -hrothgar -hsbc -huang -hub -hubbard -hubbies -hubbub -hubbubs -hubby -hubcap -hubcaps -huber -hubert -hubris -hubs -huck -huckster -huckstered -huckstering -hucksters -hudson -hue -hued -huerta -hues -huey -huff -huffed -huffier -huffiest -huffing -huffman -huffs -huffy -hug -huge -hugeness -huger -hugest -hugged -hugging -huggins -hugh -hughes -hugo -hugs -huguenot -huguenots -huh -hui -hum -human -humane -humaneness -humaner -humanest -humanisation -humanise -humanised -humaniser -humanisers -humanises -humanising -humanism -humanist -humanistic -humanists -humanitarian -humanitarianism -humanitarians -humanities -humanity -humanization -humanize -humanized -humanizer -humanizers -humanizes -humanizing -humankind -humanness -humanoid -humanoids -humans -humberto -humbug -humbugged -humbugging -humbugs -humdinger -humdingers -humdrum -hume -humeri -humerus -humid -humidified -humidifier -humidifiers -humidifies -humidify -humidifying -humidity -humidor -humidors -hummed -hummer -humming -hummingbird -hummingbirds -hummock -hummocks -hummus -humongous -humor -humored -humoring -humorist -humorists -humorous -humors -humour -humoured -humouring -humours -hump -humpback -humpbacked -humpbacks -humped -humphrey -humping -humps -hums -humungous -humus -humvee -hun -hunch -hunchback -hunchbacked -hunchbacks -hunched -hunches -hunching -hundred -hundreds -hundredth -hundredths -hundredweight -hundredweights -hung -hungarian -hungarians -hungary -hunger -hungered -hungering -hungers -hungover -hungrier -hungriest -hungry -hunk -hunker -hunkered -hunkering -hunkers -hunks -huns -hunt -hunted -hunter -hunters -hunting -huntington -huntress -huntresses -hunts -huntsman -huntsmen -huron -hurrah -hurrahed -hurrahing -hurrahs -hurray -hurrayed -hurraying -hurrays -hurricane -hurricanes -hurried -hurries -hurry -hurrying -hurst -hurt -hurting -hurts -hus -husband -husbanded -husbanding -husbandry -husbands -hush -hushed -hushes -hushing -husk -husked -husker -huskers -huskier -huskies -huskiest -huskiness -husking -husks -husky -hussar -hussars -hussein -hussies -hussite -hussy -hustings -huston -hut -hutch -hutches -hutchinson -huts -hutton -hutu -hutzpa -hutzpah -huygens -hyacinth -hyacinths -hyades -hyaena -hyaenas -hybrid -hybridise -hybridised -hybridises -hybridising -hybridize -hybridized -hybridizes -hybridizing -hybrids -hyde -hyderabad -hydra -hydrae -hydrangea -hydrangeas -hydrant -hydrants -hydras -hydrate -hydrated -hydrates -hydrating -hydrocarbon -hydrocarbons -hydrogen -hydrogenate -hydrogenated -hydrogenates -hydrogenating -hydrometer -hydrometers -hydrophobia -hydroponic -hydroponics -hydrosphere -hydrotherapy -hyena -hyenas -hygiene -hygienic -hygienist -hygienists -hygrometer -hygrometers -hying -hymen -hymens -hymn -hymned -hymning -hymns -hype -hyped -hyper -hyperactive -hyperactivity -hyperion -hypermarket -hypersensitive -hypersensitivities -hypersensitivity -hyperspace -hypertension -hypertext -hypes -hyphen -hyphenate -hyphenated -hyphenates -hyphenating -hyphenation -hyphenations -hyphened -hyphening -hyphens -hyping -hypnoses -hypnosis -hypnotic -hypnotics -hypnotise -hypnotised -hypnotises -hypnotising -hypnotism -hypnotist -hypnotists -hypnotize -hypnotized -hypnotizes -hypnotizing -hypo -hypochondria -hypochondriac -hypochondriacs -hypocrisies -hypocrisy -hypocrite -hypocrites -hypodermic -hypodermics -hypos -hypotenuse -hypotenuses -hypothermia -hypotheses -hypothesis -hypothesise -hypothesised -hypothesises -hypothesising -hypothesize -hypothesized -hypothesizes -hypothesizing -hysterectomies -hysterectomy -hysteresis -hysteria -hysteric -hysterics -hyundai -iaccoca -iago -iamb -iambic -iambics -iambs -ian -iapetus -ibadan -iberia -iberian -ibex -ibexes -ibices -ibis -ibises -ibiza -ibm -ibo -ibsen -ibuprofen -icahn -icarus -ice -iceberg -icebergs -icebound -icebox -iceboxes -icebreaker -icebreakers -icecap -icecaps -iced -ices -icier -iciest -iciness -icing -icings -ickier -ickiest -icky -icon -icons -icy -idaho -idahoan -idahoans -idahoes -idahos -idea -ideas -identification -identified -identifier -identifiers -identifies -identify -identifying -identities -identity -ideogram -ideograms -ideograph -ideographs -ides -idiocies -idiocy -idiom -idiomatic -idioms -idiosyncrasies -idiosyncrasy -idiosyncratic -idiot -idiotic -idiots -ids -ieyasu -iffier -iffiest -iffy -ifs -ignacio -ignatius -igneous -ignite -ignited -ignites -igniting -ignition -ignitions -ignominies -ignominious -ignominy -ignoramus -ignoramuses -ignorance -ignorant -ignore -ignored -ignores -ignoring -igor -iguana -iguanas -iguassu -ike -ikea -ikhnaton -ikon -ikons -image -imaged -imagery -images -imaginary -imagination -imaginations -imaginative -imagine -imagined -imagines -imaging -imagining -imam -imams -imbed -imbedded -imbedding -imbeds -imbibe -imbibed -imbibes -imbibing -imbue -imbued -imbues -imbuing -imhotep -imitate -imitated -imitates -imitating -imitation -imitations -imitative -imitator -imitators -immanence -immanent -immature -immaturity -immediacy -immediate -immense -immensities -immensity -immerse -immersed -immerses -immersing -immersion -immersions -immersive -immigrant -immigrants -immigrate -immigrated -immigrates -immigrating -immigration -imminence -imminent -immoderate -immodest -immodesty -immune -immunisation -immunisations -immunise -immunised -immunises -immunising -immunity -immunization -immunizations -immunize -immunized -immunizes -immunizing -immure -immured -immures -immuring -imodium -imogene -imp -impact -impacted -impacting -impacts -impair -impaired -impairing -impairment -impairments -impairs -impart -imparted -imparting -imparts -impasse -impasses -impassioned -impassive -impassivity -impatience -impatiences -impatient -impeach -impeached -impeaches -impeaching -impeachment -impeachments -impecunious -impecuniousness -impedance -impede -impeded -impedes -impediment -impedimenta -impediments -impeding -impend -impended -impending -impends -impenitence -impenitent -imperative -imperatives -imperfect -imperfection -imperfections -imperfects -imperious -imperiousness -impermanence -impermanent -impersonate -impersonated -impersonates -impersonating -impersonation -impersonations -impersonator -impersonators -impertinence -impertinent -impervious -impetigo -impetuosity -impetuous -impetus -impetuses -impieties -impiety -impinge -impinged -impingement -impinges -impinging -impious -impish -impishness -import -importance -important -importation -importations -imported -importer -importers -importing -imports -importunate -importune -importuned -importunes -importuning -importunity -impose -imposed -imposes -imposing -imposition -impositions -imposter -imposters -impostor -impostors -imposture -impostures -impotence -impotent -impound -impounded -impounding -impounds -impoverish -impoverished -impoverishes -impoverishing -impoverishment -imprecation -imprecations -imprecise -imprecision -impregnate -impregnated -impregnates -impregnating -impregnation -impresario -impresarios -impress -impressed -impresses -impressing -impression -impressionism -impressionist -impressionistic -impressionists -impressions -impressive -impressiveness -imprimatur -imprimaturs -imprint -imprinted -imprinting -imprints -imprison -imprisoned -imprisoning -imprisonment -imprisonments -imprisons -impromptu -impromptus -improper -improprieties -impropriety -improve -improved -improvement -improvements -improves -improvidence -improvident -improving -improvisation -improvisations -improvise -improvised -improvises -improvising -imprudence -imprudent -imps -impudence -impudent -impugn -impugned -impugning -impugns -impunity -impure -impurer -impurest -impurities -impurity -imputation -imputations -impute -imputed -imputes -imputing -imus -ina -inaccuracies -inaccuracy -inaccurate -inaction -inactive -inactivity -inadequacies -inadequacy -inadequate -inadvertence -inadvertent -inamorata -inamoratas -inane -inaner -inanest -inanimate -inanities -inanity -inappropriate -inapt -inasmuch -inattention -inattentive -inaugurate -inaugurated -inaugurates -inaugurating -inauguration -inaugurations -inauspicious -inboard -inboards -inborn -inbound -inbox -inboxes -inbred -inbreed -inbreeding -inbreeds -inca -incandescence -incandescent -incantation -incantations -incapacitate -incapacitated -incapacitates -incapacitating -incapacity -incarcerate -incarcerated -incarcerates -incarcerating -incarceration -incarcerations -incarnate -incarnated -incarnates -incarnating -incarnation -incarnations -incas -incautious -incendiaries -incendiary -incense -incensed -incenses -incensing -incentive -incentives -inception -inceptions -incessant -incest -incestuous -inch -inched -inches -inching -inchoate -inchon -incidence -incidences -incident -incidents -incinerate -incinerated -incinerates -incinerating -incineration -incinerator -incinerators -incipient -incise -incised -incises -incising -incision -incisions -incisive -incisiveness -incisor -incisors -incite -incited -incitement -incitements -incites -inciting -incognito -incognitos -incoherence -incoherent -income -incomes -incoming -incommensurate -incommunicado -incompetence -incompetent -incompetents -incongruities -incongruity -incongruous -inconsiderate -inconsiderateness -inconsistencies -inconsistency -inconsistent -inconspicuous -inconspicuousness -inconstancy -inconstant -incontinence -incontinent -inconvenience -inconvenienced -inconveniences -inconveniencing -inconvenient -incorporate -incorporated -incorporates -incorporating -incorporation -incorrect -incorrectness -increase -increased -increases -increasing -increment -incremented -increments -incriminate -incriminated -incriminates -incriminating -incrimination -incriminatory -incrust -incrustation -incrustations -incrusted -incrusting -incrusts -incubate -incubated -incubates -incubating -incubation -incubator -incubators -incubi -incubus -incubuses -incumbencies -incumbency -incumbent -incumbents -incur -incurious -incurred -incurring -incurs -incursion -incursions -indebted -indebtedness -indecencies -indecency -indecent -indecision -indecisive -indecisiveness -indecorous -indeed -indefinite -indemnification -indemnifications -indemnified -indemnifies -indemnify -indemnifying -indemnities -indemnity -indent -indentation -indentations -indented -indenting -indents -indenture -indentured -indentures -indenturing -independence -independent -independents -indeterminacy -indeterminate -index -indexed -indexes -indexing -india -indian -indiana -indianan -indianans -indians -indicate -indicated -indicates -indicating -indication -indications -indicative -indicatives -indicator -indicators -indices -indict -indicted -indicting -indictment -indictments -indicts -indies -indifference -indifferent -indigence -indigenous -indigent -indigents -indigestion -indignant -indignation -indignities -indignity -indigo -indira -indirect -indirection -indirectness -indiscreet -indiscretion -indiscretions -indiscriminate -indisposed -indisposition -indispositions -indistinct -indistinctness -indochina -indochinese -indoctrinate -indoctrinated -indoctrinates -indoctrinating -indoctrination -indonesia -indonesian -indonesians -indoor -indoors -indore -indorse -indorsed -indorsement -indorsements -indorses -indorsing -indra -induce -induced -inducement -inducements -induces -inducing -induct -inductance -inducted -inductee -inductees -inducting -induction -inductions -inductive -inducts -indue -indued -indues -induing -indus -industries -industrious -industriousness -industry -indy -inebriate -inebriated -inebriates -inebriating -inebriation -ineffective -ineffectiveness -inefficiencies -inefficiency -inefficient -inept -ineptitude -ineptness -inequities -inequity -inert -inertia -inertness -ines -inexact -inexpedient -inexpensive -inexperience -inexperienced -inexpert -inez -infamies -infamous -infamy -infancy -infant -infanticide -infanticides -infantries -infantry -infantryman -infantrymen -infants -infarction -infatuate -infatuated -infatuates -infatuating -infatuation -infatuations -infect -infected -infecting -infection -infections -infectious -infectiousness -infects -infer -inference -inferences -inferior -inferiority -inferiors -inferno -infernos -inferred -inferring -infers -infest -infestation -infestations -infested -infesting -infests -infighting -infinite -infinities -infinitive -infinitives -infinitude -infinity -infirm -infirmaries -infirmary -infirmities -infirmity -infix -info -inform -informant -informants -information -informative -informed -informer -informers -informing -informs -infotainment -infraction -infractions -infrared -infrastructure -infrastructures -infrequency -infrequent -infringe -infringed -infringement -infringements -infringes -infringing -infuriate -infuriated -infuriates -infuriating -infuse -infused -infuses -infusing -infusion -infusions -ing -inge -ingenious -ingenuity -ingenuous -ingenuousness -ingest -ingested -ingesting -ingestion -ingests -ingot -ingots -ingrain -ingrained -ingraining -ingrains -ingram -ingrate -ingrates -ingratiate -ingratiated -ingratiates -ingratiating -ingratitude -ingredient -ingredients -ingres -ingress -ingresses -ingrid -ingrown -inhabit -inhabitant -inhabitants -inhabited -inhabiting -inhabits -inhere -inhered -inherent -inheres -inhering -inherit -inheritance -inheritances -inherited -inheriting -inheritor -inheritors -inherits -inhibit -inhibited -inhibiting -inhibition -inhibitions -inhibits -inhuman -inhumane -inhumanities -inhumanity -iniquities -iniquitous -iniquity -initiate -initiated -initiates -initiating -initiation -initiations -initiative -initiatives -initiator -initiators -inject -injected -injecting -injection -injections -injector -injectors -injects -injudicious -injunction -injunctions -injure -injured -injures -injuries -injuring -injurious -injury -injustice -injustices -ink -inked -inkier -inkiest -inkiness -inking -inks -inky -inmate -inmates -inmost -inn -innards -innate -inner -innermost -inning -innings -innkeeper -innkeepers -innocence -innocent -innocents -innocuous -innovate -innovated -innovates -innovating -innovation -innovations -innovative -innovator -innovators -inns -innuendo -innuendoes -innuendos -inoffensive -inonu -inoperative -inopportune -inordinate -inorganic -inpatient -inpatients -input -inputs -inputted -inputting -inquest -inquests -inquietude -inquire -inquired -inquirer -inquirers -inquires -inquiries -inquiring -inquiry -inquisition -inquisitions -inquisitive -inquisitiveness -inquisitor -inquisitors -inroad -inroads -ins -insane -insaner -insanest -insanity -inscribe -inscribed -inscribes -inscribing -inscription -inscriptions -inseam -inseams -insect -insecticide -insecticides -insectivore -insectivores -insectivorous -insects -insecure -insecurities -insecurity -inseminate -inseminated -inseminates -inseminating -insemination -insensate -insensitive -insensitivity -insentience -insentient -insert -inserted -inserting -insertion -insertions -inserts -inset -insets -insetted -insetting -inshore -inside -insider -insiders -insides -insidious -insidiousness -insight -insights -insigne -insignes -insignia -insignias -insignificance -insignificant -insincere -insincerity -insinuate -insinuated -insinuates -insinuating -insinuation -insinuations -insipid -insist -insisted -insistence -insistent -insisting -insists -insofar -insomnia -insomniac -insomniacs -insouciance -insouciant -inspect -inspected -inspecting -inspection -inspections -inspector -inspectors -inspects -inspiration -inspirations -inspire -inspired -inspires -inspiring -instagram -instamatic -instance -instanced -instances -instancing -instant -instantaneous -instants -instead -instep -insteps -instigate -instigated -instigates -instigating -instigation -instigator -instigators -instinct -instinctive -instincts -institute -instituted -institutes -instituting -institution -institutions -instruct -instructed -instructing -instruction -instructions -instructive -instructor -instructors -instructs -instrument -instrumentation -instrumented -instrumenting -instruments -insubordinate -insubordination -insufficiency -insufficient -insurance -insurances -insure -insured -insureds -insurer -insurers -insures -insurgence -insurgences -insurgencies -insurgency -insurgent -insurgents -insuring -insurrection -insurrectionist -insurrectionists -insurrections -intact -intake -intakes -integer -integers -integrate -integrated -integrates -integrating -integration -integrator -integrity -integument -integuments -intemperance -intemperate -intend -intended -intendeds -intending -intends -intense -intenser -intensest -intensification -intensified -intensifier -intensifiers -intensifies -intensify -intensifying -intensities -intensity -intensive -intensives -intent -intention -intentions -intentness -intents -inter -interact -interacted -interacting -interaction -interactions -interactive -interacts -interbred -interbreed -interbreeding -interbreeds -intercede -interceded -intercedes -interceding -intercept -intercepted -intercepting -interception -interceptions -interceptor -interceptors -intercepts -intercession -intercessions -intercessor -intercessors -interchange -interchanged -interchanges -interchanging -intercom -intercoms -interconnect -interconnected -interconnecting -interconnection -interconnections -interconnects -intercourse -interdependence -interdependent -interdict -interdicted -interdicting -interdiction -interdicts -interest -interested -interesting -interests -interface -interfaced -interfaces -interfacing -interfaith -interfere -interfered -interference -interferes -interfering -interferon -interim -interior -interiors -interject -interjected -interjecting -interjection -interjections -interjects -intermarriage -intermarriages -intermarried -intermarries -intermarry -intermarrying -intermediaries -intermediary -intermediate -intermediates -interment -interments -intermezzi -intermezzo -intermezzos -intermission -intermissions -intermittent -intern -interne -internecine -interned -internee -internees -internement -internes -interneship -interneships -internet -interning -internist -internists -internment -interns -internship -internships -interoffice -interpose -interposed -interposes -interposing -interposition -interpret -interpretation -interpretations -interpretative -interpreted -interpreter -interpreters -interpreting -interpretive -interprets -interred -interring -interrogate -interrogated -interrogates -interrogating -interrogation -interrogations -interrogative -interrogatives -interrogator -interrogatories -interrogators -interrogatory -interrupt -interrupted -interrupting -interruption -interruptions -interrupts -inters -intersect -intersected -intersecting -intersection -intersections -intersects -intersperse -interspersed -intersperses -interspersing -interstate -interstates -interstice -interstices -intertwine -intertwined -intertwines -intertwining -interurban -intervene -intervened -intervenes -intervening -intervention -interventions -interview -interviewed -interviewee -interviewees -interviewer -interviewers -interviewing -interviews -interweave -interweaved -interweaves -interweaving -interwove -interwoven -intestate -intestine -intestines -intimacies -intimacy -intimate -intimated -intimates -intimating -intimation -intimations -intimidate -intimidated -intimidates -intimidating -intimidation -into -intonation -intonations -intone -intoned -intones -intoning -intoxicant -intoxicants -intoxicate -intoxicated -intoxicates -intoxicating -intoxication -intranet -intranets -intransigence -intransigent -intransigents -intransitive -intransitives -intravenous -intravenouses -intrench -intrenched -intrenches -intrenching -intrenchment -intrenchments -intrepid -intricacies -intricacy -intricate -intrigue -intrigued -intrigues -intriguing -intrinsic -introduce -introduced -introduces -introducing -introduction -introductions -introductory -intros -introspection -introspective -introversion -introvert -introverted -introverts -intrude -intruded -intruder -intruders -intrudes -intruding -intrusion -intrusions -intrusive -intrust -intrusted -intrusting -intrusts -intuit -intuited -intuiting -intuition -intuitions -intuitive -intuits -inuit -inuits -inuktitut -inundate -inundated -inundates -inundating -inundation -inundations -inure -inured -inures -inuring -invade -invaded -invader -invaders -invades -invading -invar -invariant -invasion -invasions -invasive -invective -inveigh -inveighed -inveighing -inveighs -invent -invented -inventing -invention -inventions -inventive -inventiveness -inventor -inventoried -inventories -inventors -inventory -inventorying -invents -inverse -inverses -inversion -inversions -invert -invertebrate -invertebrates -inverted -inverting -inverts -invest -invested -investigate -investigated -investigates -investigating -investigation -investigations -investigative -investigator -investigators -investing -investiture -investitures -investment -investments -investor -investors -invests -inveterate -invidious -invigorate -invigorated -invigorates -invigorating -invigoration -invitation -invitations -invite -invited -invites -inviting -invocation -invocations -invoice -invoiced -invoices -invoicing -invoke -invoked -invokes -invoking -inward -inwards -iodine -iodise -iodised -iodises -iodising -iodize -iodized -iodizes -iodizing -ion -ionesco -ionian -ionic -ionics -ionisation -ionise -ionised -ioniser -ionisers -ionises -ionising -ionization -ionize -ionized -ionizer -ionizers -ionizes -ionizing -ionosphere -ionospheres -ions -iota -iotas -iowa -iowan -iowans -iowas -ipad -ipecac -ipecacs -iphigenia -iphone -ipod -iquitos -ira -iran -iranian -iranians -iraq -iraqi -iraqis -irate -irateness -ire -irene -iridescence -iridescent -iridium -iris -irises -irish -irisher -irishman -irishmen -irishwoman -irishwomen -irk -irked -irking -irks -irksome -irkutsk -irma -iron -ironed -ironic -ironies -ironing -irons -ironware -ironwork -irony -iroquoian -iroquois -irradiate -irradiated -irradiates -irradiating -irradiation -irrawaddy -irrespective -irreverence -irreverent -irrigate -irrigated -irrigates -irrigating -irrigation -irritant -irritants -irritate -irritated -irritates -irritating -irritation -irritations -irruption -irruptions -irtish -irvin -irving -irwin -isaac -isaiah -iscariot -isfahan -isherwood -ishim -ishtar -isiah -isidro -isis -ism -isms -iso -isobar -isobars -isometric -isometrics -isomorphic -isotope -isotopes -isotopic -isotropic -issac -issachar -issuance -issue -issued -issues -issuing -isthmi -isthmus -isthmuses -isuzu -itaipu -itasca -itch -itched -itches -itchier -itchiest -itchiness -itching -itchy -item -itemisation -itemise -itemised -itemises -itemising -itemization -itemize -itemized -itemizes -itemizing -items -iterate -iterated -iterates -iterating -iteration -iterations -iterative -iterator -iterators -ithaca -ithacan -itinerant -itinerants -itineraries -itinerary -ito -its -itunes -iva -ivan -ivanhoe -ives -ivies -ivories -ivory -ivy -iyar -izaak -izanagi -izanami -izhevsk -izmir -izod -izvestia -jab -jabbed -jabber -jabbered -jabberer -jabberers -jabbering -jabbers -jabbing -jabot -jabots -jabs -jack -jackass -jackasses -jackboot -jackboots -jackdaw -jackdaws -jacked -jacket -jackets -jackhammer -jackhammers -jackie -jacking -jackknife -jackknifed -jackknifes -jackknifing -jackknives -jackpot -jackpots -jackrabbit -jackrabbits -jacks -jackson -jacksonian -jacky -jacob -jacobean -jacobi -jacobin -jacobite -jacobs -jacobson -jacquard -jacques -jacuzzi -jade -jaded -jades -jading -jag -jagged -jaggeder -jaggedest -jaggedness -jagger -jags -jaguar -jaguars -jahangir -jaime -jain -jainism -jaipur -jakarta -jake -jam -jamaica -jamaican -jamaicans -jamar -jamb -jamboree -jamborees -jambs -jame -james -jamestown -jami -jamie -jammed -jamming -jams -jan -jana -janacek -jane -janet -janette -janice -janie -janine -janis -janissary -janitor -janitors -janjaweed -janna -jannie -jansen -jansenist -januaries -january -janus -japan -japanese -japaneses -japanned -japanning -japans -jape -japed -japes -japing -japura -jar -jared -jargon -jarred -jarrett -jarring -jarrod -jars -jarvis -jasmine -jasmines -jason -jasper -jataka -jaundice -jaundiced -jaundices -jaundicing -jaunt -jaunted -jauntier -jauntiest -jauntiness -jaunting -jaunts -jaunty -java -javanese -javas -javascript -javier -jaw -jawbone -jawboned -jawbones -jawboning -jawbreaker -jawbreakers -jawed -jawing -jaws -jaxartes -jay -jayapura -jayawardene -jaycee -jaycees -jayne -jays -jayson -jazz -jazzed -jazzes -jazzier -jazziest -jazzing -jazzy -jean -jeanette -jeanie -jeanine -jeanne -jeannette -jeannie -jeannine -jeans -jed -jedi -jeep -jeeps -jeer -jeered -jeering -jeers -jeeves -jeez -jeff -jefferey -jefferson -jeffersonian -jeffery -jeffrey -jeffry -jehad -jehads -jehoshaphat -jehovah -jejune -jenifer -jenkins -jenna -jenner -jennie -jennifer -jennings -jenny -jensen -jeopardise -jeopardised -jeopardises -jeopardising -jeopardize -jeopardized -jeopardizes -jeopardizing -jeopardy -jephthah -jeremiad -jeremiads -jeremiah -jeremiahs -jeremy -jeri -jericho -jerk -jerked -jerkier -jerkiest -jerkin -jerking -jerkins -jerks -jerkwater -jerky -jermaine -jeroboam -jerome -jerri -jerrod -jerry -jersey -jerseys -jess -jessamine -jessamines -jesse -jessica -jessie -jest -jested -jester -jesters -jesting -jests -jesuit -jesuits -jesus -jet -jets -jetsam -jetted -jetties -jetting -jettison -jettisoned -jettisoning -jettisons -jetty -jetway -jew -jewish -jewishness -jewry -jews -jfk -jib -jibbed -jibbing -jibe -jibed -jibes -jibing -jibs -jidda -jiffies -jiffy -jig -jigged -jigger -jiggered -jiggering -jiggers -jigging -jigs -jigsaw -jigsawed -jigsawing -jigsawn -jigsaws -jihad -jihadist -jihadists -jihads -jim -jimenez -jimmie -jimmied -jimmies -jimmy -jimmying -jinan -jingoism -jingoist -jingoistic -jingoists -jinn -jinnah -jinni -jinnis -jinns -jinny -jinricksha -jinrickshas -jinrikisha -jinrikishas -jinx -jinxed -jinxes -jinxing -jitney -jitneys -jitterbug -jitterbugged -jitterbugging -jitterbugs -jitterier -jitteriest -jitters -jittery -jiujitsu -jivaro -jive -jived -jives -jiving -joan -joann -joanna -joanne -joaquin -job -jobbed -jobber -jobbers -jobbing -jobs -jocasta -jock -jockey -jockeyed -jockeying -jockeys -jocks -jockstrap -jockstraps -jocose -jocosity -jocund -jocundity -jodhpurs -jodi -jodie -jody -joe -joey -jog -jogged -jogger -joggers -jogging -jogjakarta -jogs -johann -johanna -johannes -johannesburg -john -johnathan -johnathon -johnie -johnnie -johnny -johns -johnson -johnston -join -joined -joiner -joiners -joining -joins -joint -jointed -jointing -joints -joist -joists -joke -joked -joker -jokers -jokes -joking -jon -jonah -jonahs -jonas -jonathan -jonathon -jones -joni -jonson -jordan -jordanian -jordanians -jorge -jose -josef -josefa -josefina -joseph -josephine -josephs -josephson -josephus -josh -joshed -joshes -joshing -joshua -josiah -josie -josue -jot -jots -jotted -jotting -jottings -jounce -jounced -jounces -jouncing -journey -journeyed -journeying -journeyman -journeymen -journeys -joust -jousted -jousting -jousts -jove -jovian -joy -joyce -joycean -joyed -joying -joyner -joyous -joyousness -joyridden -joyride -joyrider -joyriders -joyrides -joyriding -joyrode -joys -joystick -joysticks -juan -juana -juanita -juarez -judaeo -judah -judaic -judaism -judaisms -judas -judases -judd -jude -judea -judge -judged -judgement -judgements -judges -judgeship -judging -judgment -judgments -judicature -judiciaries -judiciary -judicious -judiciousness -judith -judo -judson -judy -jug -jugged -juggernaut -juggernauts -jugging -jugs -juice -juiced -juicer -juicers -juices -juicier -juiciest -juiciness -juicing -juicy -jujitsu -jujube -jujubes -jujutsu -jukebox -jukeboxes -jumbo -jumbos -jump -jumped -jumper -jumpers -jumpier -jumpiest -jumpiness -jumping -jumps -jumpsuit -jumpsuits -jumpy -junco -juncoes -juncos -junction -junctions -juncture -junctures -june -juneau -junes -jung -jungfrau -jungian -junior -juniors -juniper -junipers -junk -junked -junker -junkers -junket -junketed -junketing -junkets -junkie -junkier -junkies -junkiest -junking -junks -junky -junkyard -junkyards -juno -junta -juntas -jupiter -jurassic -juries -jurisdiction -jurisprudence -jurist -jurists -juror -jurors -jurua -jury -just -juster -justest -justice -justices -justification -justifications -justified -justifies -justify -justifying -justin -justine -justinian -justness -jut -jute -juts -jutted -jutting -juxtapose -juxtaposed -juxtaposes -juxtaposing -juxtaposition -juxtapositions -kaaba -kabob -kabobs -kaboom -kafka -kafkaesque -kaftan -kaftans -kagoshima -kaifeng -kaiser -kama -kamchatka -kamehameha -kamikaze -kamikazes -kampuchea -kanchenjunga -kandahar -kandinsky -kane -kangaroo -kangaroos -kannada -kano -kanpur -kansan -kansans -kansas -kant -kantian -kaohsiung -kapok -kaposi -kaput -kara -karachi -karaganda -karakorum -karamazov -karaoke -karaokes -karat -karate -karats -kareem -karen -karenina -kari -karin -karina -karma -karo -karroo -karyn -kasai -kasey -kashmir -kasparov -kate -katharine -katherine -katheryn -kathiawar -kathie -kathrine -kathryn -kathy -katie -katina -katmai -katmandu -katowice -katrina -katy -katydid -katydids -kauai -kaufman -kaunas -kaunda -kawabata -kawasaki -kay -kayak -kayaked -kayaking -kayaks -kaye -kazakh -kazakhstan -kazan -kazantzakis -kazoo -kazoos -keaton -keats -kebab -kebabs -kebob -kebobs -keck -keen -keenan -keened -keener -keenest -keening -keenness -keens -keep -keeper -keepers -keeping -keeps -keepsake -keepsakes -keewatin -keg -kegs -keisha -keith -kemerovo -kemp -kempis -ken -kendra -kendrick -kenmore -kennan -kenned -kennedy -kenneth -kenning -kennith -kenny -kens -kent -kenton -kentuckian -kentuckians -kentucky -kenya -kenyan -kenyans -kenyatta -kenyon -keogh -keokuk -kept -keratin -kerb -kerbed -kerbing -kerbs -kerchief -kerchiefs -kerchieves -kerensky -keri -kermit -kern -kerosene -kerosine -kerouac -kerr -kerri -kerry -ketch -ketches -ketchup -kettering -keven -kevin -kevorkian -kewpie -key -keybinding -keybindings -keyboard -keyboarded -keyboarder -keyboarders -keyboarding -keyboards -keyed -keying -keynes -keynesian -keynote -keynoted -keynotes -keynoting -keypunch -keypunched -keypunches -keypunching -keys -keystone -keystones -keystroke -keystrokes -keyword -keywords -kfc -khabarovsk -khachaturian -khaki -khakis -khan -khans -kharkov -khartoum -khayyam -khazar -khmer -khoikhoi -khoisan -khomeini -khorana -khrushchev -khufu -khwarizmi -khyber -khz -kibbutz -kibbutzim -kibitz -kibitzed -kibitzer -kibitzers -kibitzes -kibitzing -kibosh -kick -kickapoo -kickback -kickbacks -kicked -kicker -kickers -kickier -kickiest -kicking -kickoff -kickoffs -kicks -kickstand -kickstands -kicky -kid -kidd -kidded -kidder -kidders -kiddie -kiddies -kidding -kiddo -kiddoes -kiddos -kiddy -kidnap -kidnaped -kidnaper -kidnapers -kidnaping -kidnapped -kidnapper -kidnappers -kidnapping -kidnappings -kidnaps -kidney -kidneys -kids -kierkegaard -kieth -kiev -kikuyu -kim -kimono -kimonos -kin -kind -kinda -kinder -kindergarten -kindergartener -kindergarteners -kindergartens -kindest -kindhearted -kindness -kindnesses -kindred -kinds -kinematic -kinematics -kinetic -king -kingdom -kingdoms -kingfisher -kingfishers -kingpin -kingpins -kings -kingship -kingston -kingstown -kink -kinked -kinkier -kinkiest -kinking -kinks -kinky -kinney -kinsey -kinshasa -kinship -kinsman -kinsmen -kinswoman -kinswomen -kiosk -kiosks -kiowa -kip -kipper -kippered -kippering -kippers -kirby -kirchhoff -kirchner -kirghistan -kirghiz -kiribati -kirinyaga -kirk -kirkpatrick -kirov -kirsten -kisangani -kishinev -kismet -kiss -kissed -kisser -kissers -kisses -kissing -kissinger -kit -kitakyushu -kitchen -kitchener -kitchenette -kitchenettes -kitchens -kitchenware -kite -kited -kites -kith -kiting -kits -kitsch -kitschy -kitten -kittenish -kittens -kitties -kitty -kiwanis -kiwi -kiwis -kmart -knack -knacker -knacks -knackwurst -knackwursts -knapp -knapsack -knapsacks -knave -knavery -knaves -knavish -knead -kneaded -kneader -kneaders -kneading -kneads -knee -kneecap -kneecapped -kneecapping -kneecaps -kneed -kneeing -knees -knesset -knew -kngwarreye -knickerbocker -knickers -knickknack -knickknacks -knife -knifed -knifes -knifing -knight -knighted -knighthood -knighthoods -knighting -knights -knit -knits -knitted -knitter -knitters -knitting -knitwear -knives -knob -knobbier -knobbiest -knobby -knobs -knock -knocked -knocker -knockers -knocking -knockout -knockouts -knocks -knockwurst -knockwursts -knopf -knossos -knot -knots -knotted -knottier -knottiest -knotting -knotty -know -knowing -knowings -known -knows -knox -knudsen -knuth -kobe -koch -kochab -kodachrome -kodak -kodiak -kohinoor -koizumi -kojak -kommunizma -kong -kongo -konrad -kook -kookaburra -kookaburras -kookie -kookier -kookiest -kookiness -kooks -kooky -koontz -kopeck -kopecks -kopek -kopeks -koran -korans -korea -korean -koreans -kornberg -kory -korzybski -kosciusko -kosher -koshered -koshering -koshers -kossuth -kosygin -koufax -kowtow -kowtowed -kowtowing -kowtows -kraft -krakatoa -krakow -kramer -krasnodar -krasnoyarsk -krebs -kresge -kris -krishna -krishnamurti -krista -kristen -kristi -kristie -kristin -kristina -kristine -kristopher -kristy -kroc -kroger -krone -kronecker -kroner -kronor -kropotkin -kruger -krugerrand -krupp -krypton -kshatriya -kubrick -kudos -kudzu -kudzus -kuhn -kuibyshev -kumquat -kumquats -kunming -kuomintang -kurd -kurdish -kurdistan -kurosawa -kurt -kurtis -kusch -kutuzov -kuwait -kuwaiti -kuwaitis -kuznets -kuznetsk -kwan -kwangju -kwanzaa -kwanzaas -kyoto -kyrgyzstan -kyushu -macabre -macadam -macao -macaroni -macaronies -macaronis -macaroon -macaroons -macarthur -macaw -macaws -macbeth -macbride -maccabeus -mace -maced -macedon -macedonia -macedonian -macedonians -macerate -macerated -macerates -macerating -maceration -maces -mach -machete -machetes -machination -machinations -machine -machined -machinery -machines -machining -machinist -machinists -machismo -macho -macias -macing -macintosh -macintoshes -mack -mackenzie -mackinac -mackinaw -mackinaws -mackintosh -mackintoshes -macon -macro -macrobiotic -macrobiotics -macrocosm -macrocosms -macron -macrons -macros -macroscopic -macumba -macy -mad -madagascan -madagascans -madagascar -madam -madame -madams -madcap -madcaps -madden -maddened -maddening -maddens -madder -madders -maddest -maddox -made -madeira -madeiras -madge -madhouse -madhouses -madison -madman -madmen -madness -madonna -madonnas -madras -madrasa -madrasah -madrasahs -madrasas -madrases -madrassa -madrassas -madrid -mads -madurai -madwoman -madwomen -mae -maestri -maestro -maestros -mafia -mafias -mafioso -magazine -magazines -magenta -maggie -maggot -maggots -maghreb -magi -magic -magician -magicians -maginot -magistrate -magistrates -magma -magnanimity -magnanimous -magnate -magnates -magnesia -magnesium -magnet -magnetic -magnetisation -magnetise -magnetised -magnetises -magnetising -magnetism -magnetization -magnetize -magnetized -magnetizes -magnetizing -magneto -magnetos -magnetosphere -magnets -magnification -magnifications -magnificence -magnificent -magnified -magnifier -magnifiers -magnifies -magnify -magnifying -magnitogorsk -magnitude -magnitudes -magnum -magnums -magog -magoo -magpie -magpies -magritte -magsaysay -magyar -magyars -mahabharata -maharaja -maharajah -maharajahs -maharajas -maharanee -maharanees -maharani -maharanis -maharashtra -maharishi -maharishis -mahatma -mahatmas -mahavira -mahayana -mahayanist -mahdi -mahfouz -mahican -mahicans -mahjong -mahoganies -mahogany -mai -maid -maiden -maidenform -maidenhair -maidenhead -maidenheads -maidenhood -maidens -maids -maidservant -maidservants -maigret -maim -maiman -maimed -maiming -maimonides -maims -main -maine -mainframe -mainframes -mainmast -mainmasts -mains -mainspring -mainsprings -mainstay -mainstays -mainstream -mainstreamed -mainstreaming -mainstreams -maintain -maintained -maintainer -maintainers -maintaining -maintains -maintenance -maisie -maitreya -maize -maizes -majestic -majesties -majesty -major -majorca -majored -majorette -majorettes -majoring -majorities -majority -majors -majuro -makarios -make -maker -makers -makes -makeshift -makeshifts -makeup -makeups -making -makings -mama -mamas -mambo -mamboed -mamboing -mambos -mamet -mamie -mamma -mammary -mammas -mammogram -mammograms -mammography -mammon -mammoth -mammoths -mamore -man -manage -managed -management -manager -managers -manages -managing -managua -manama -manasseh -manatee -manatees -manaus -manchester -manchu -manchuria -manchurian -mancini -mandarin -mandarins -mandate -mandated -mandates -mandating -mandatory -mandingo -mandrake -mandrakes -mandy -mane -manes -manet -maneuver -maneuvered -maneuvering -maneuvers -manfred -manga -manganese -mange -manger -mangers -mangier -mangiest -mango -mangoes -mangos -mangrove -mangroves -mangy -manhattan -manhattans -manhood -manhunt -manhunts -mani -mania -maniac -maniacs -manias -manic -manichean -manics -manicure -manicured -manicures -manicuring -manicurist -manicurists -manifest -manifestation -manifestations -manifested -manifesting -manifesto -manifestoes -manifestos -manifests -manikin -manikins -manitoba -mankind -mann -manna -manned -mannequin -mannequins -manner -mannered -mannerism -mannerisms -manners -mannheim -mannikin -mannikins -manning -mannish -mannishness -manoeuvre -manoeuvred -manoeuvres -manoeuvring -manor -manors -manpower -mans -mansard -mansards -manse -manservant -manses -mansion -mansions -manson -mantegna -mantes -mantis -mantises -mantissa -mantoes -mantra -mantras -manufacture -manufactured -manufacturer -manufacturers -manufactures -manufacturing -manumit -manumits -manumitted -manumitting -manure -manured -manures -manuring -manuscript -manuscripts -manx -many -mao -maoism -maoisms -maoist -maoists -maori -maoris -map -mapped -mapper -mapping -mappings -maps -maputo -mar -mara -marabou -marabous -maraca -maracaibo -maracas -marat -maratha -marathi -marathon -marathoner -marathoners -marathons -maraud -marauded -marauder -marauders -marauding -marauds -marc -marceau -march -marched -marcher -marchers -marches -marching -marchioness -marchionesses -marci -marcia -marciano -marcie -marco -marconi -marcos -marcus -marcy -marduk -mare -mares -margaret -margarine -margarita -margaritas -margarito -marge -margery -margie -margin -margins -margo -margret -margrethe -marguerite -mari -maria -mariachi -mariachis -marian -mariana -marianas -marianne -mariano -marie -marietta -marihuana -marijuana -marimba -marimbas -marin -marina -marinade -marinaded -marinades -marinading -marinas -marinate -marinated -marinates -marinating -marine -mariner -mariners -marines -mario -marion -marionette -marionettes -maris -marisa -marissa -maritain -maritime -maritza -marius -marjoram -marjorie -marjory -mark -markab -markdown -markdowns -marked -marker -markers -market -marketed -marketer -marketers -marketing -markets -markham -marking -markings -markov -marks -marksman -marksmanship -marksmen -markup -markups -marmara -marmoset -marmosets -marmot -marmots -marne -maronite -maroon -marooned -marooning -maroons -marquee -marquees -marquesas -marquess -marquesses -marquetry -marquette -marquez -marquis -marquise -marquises -marquita -marrakesh -marred -marriage -marriages -married -marrieds -marries -marring -marriott -marrow -marrows -marry -marrying -mars -marsh -marsha -marshes -marshier -marshiest -marshy -mart -marta -marten -martens -martha -martian -martians -martin -martina -martinet -martinets -martinez -martini -martinique -martinis -martins -marts -marty -martyr -martyrdom -martyred -martyring -martyrs -marva -marvin -marx -marxism -marxisms -marxist -marxists -mary -maryann -maryanne -marzipan -mas -masada -masai -masaryk -mascagni -mascara -mascaraed -mascaraing -mascaras -mascot -mascots -maserati -maseru -mash -mashed -masher -mashers -mashes -mashhad -mashing -mashup -mashups -mask -masked -masking -masks -masochism -masochist -masochistic -masochists -mason -masonic -masonite -masonry -masons -masque -masquerade -masqueraded -masquerader -masqueraders -masquerades -masquerading -masques -mass -massachusetts -massacre -massacred -massacres -massacring -massage -massaged -massages -massaging -massasoit -massed -massenet -masses -masseur -masseurs -masseuse -masseuses -massey -massing -massive -massiveness -mast -mastectomies -mastectomy -master -mastercard -mastered -mastering -mastermind -masterminded -masterminding -masterminds -masterpiece -masterpieces -masters -masterstroke -masterstrokes -masterwork -masterworks -mastery -masthead -mastheads -masticate -masticated -masticates -masticating -mastication -mastiff -mastiffs -mastodon -mastodons -mastoid -mastoids -masts -masturbate -masturbated -masturbates -masturbating -masturbation -mat -matador -matadors -match -matchbook -matchbooks -matchbox -matchboxes -matched -matches -matching -matchmaker -matchmakers -matchmaking -matchstick -matchsticks -mate -mated -maternity -mates -math -mathematician -mathematicians -mathematics -mather -mathew -mathews -mathewson -mathias -mathis -mating -matins -matisse -matriarch -matriarchies -matriarchs -matriarchy -matrices -matricide -matricides -matrimony -matrix -matrixes -matron -matrons -mats -matt -matte -matted -matter -mattered -matterhorn -mattering -matters -mattes -matthew -matthews -matthias -mattie -matting -mattock -mattocks -mattress -mattresses -matts -maturation -mature -matured -maturer -matures -maturest -maturing -maturities -maturity -matzo -matzoh -matzohs -matzos -matzot -matzoth -maud -maude -maugham -maui -maunder -maundered -maundering -maunders -maupassant -maura -maureen -mauriac -maurice -mauricio -maurine -mauritania -mauritius -mauro -maurois -mauryan -mauser -mauve -maven -mavens -maverick -mavericks -mavin -mavins -mavis -maw -mawkish -maws -max -maxed -maxes -maxim -maxima -maximisation -maximise -maximised -maximises -maximising -maximization -maximize -maximized -maximizes -maximizing -maxims -maximum -maximums -maxine -maxing -may -maya -mayan -mayans -mayas -maybe -maybes -mayday -maydays -mayer -mayfair -mayhem -maynard -mayo -mayonnaise -mayor -mayors -mayra -mays -maytag -mazama -mazarin -mazda -maze -mazes -mazourka -mazourkas -mazurka -mazurkas -mazzini -mbabane -mbini -mcadam -mcbride -mccain -mccarthy -mccarthyism -mccartney -mccarty -mccormick -mccoy -mccray -mcenroe -mcfadden -mcgee -mcgovern -mcgowan -mcguffey -mcguire -mci -mcintosh -mcintyre -mckay -mckee -mckenzie -mckinney -mcknight -mcmahon -mcnamara -mcnaughton -mcpherson -mcqueen -mcveigh -mead -meade -meadow -meadows -meagan -meager -meagerness -meagre -mean -meander -meandered -meandering -meanders -meaner -meanest -meaning -meanings -meanness -means -meant -meantime -meany -measure -measured -measurement -measurements -measures -measuring -meat -meatier -meatiest -meats -meaty -mecca -meccas -mechanic -mechanics -mechanisation -mechanise -mechanised -mechanises -mechanising -mechanism -mechanisms -mechanistic -mechanization -mechanize -mechanized -mechanizes -mechanizing -medan -medea -media -median -medians -medias -mediate -mediated -mediates -mediating -mediation -mediator -mediators -medic -medicaid -medicaids -medicare -medicares -medicate -medicated -medicates -medicating -medication -medications -medici -medicine -medicines -medics -medina -mediocre -mediocrities -mediocrity -meditate -meditated -meditates -meditating -meditation -meditations -meditative -mediterranean -mediterraneans -medium -mediums -medusa -meek -meeker -meekest -meekness -meet -meeting -meetinghouse -meetinghouses -meetings -meets -meg -megabyte -megabytes -megachurch -megachurches -megahertz -megahertzes -megan -megaphone -megaphoned -megaphones -megaphoning -megaton -megatons -meghan -megs -meh -meier -meighen -meiji -meir -mejia -mekong -member -members -membership -memberships -membrane -membranes -membranous -meme -memento -mementoes -mementos -memes -memo -memoir -memoirs -memoranda -memorandum -memorandums -memories -memorisation -memorise -memorised -memorises -memorising -memorization -memorize -memorized -memorizes -memorizing -memory -memos -memphis -men -menace -menaced -menaces -menacing -menage -menagerie -menageries -menages -menander -mencius -mencken -mend -mendacious -mendacity -mended -mender -menders -mendez -mendicant -mendicants -mending -mendocino -mendoza -mends -menes -menhaden -menhadens -meningitis -menkar -menkent -mennen -mennonite -mennonites -menominee -menopause -menorah -menorahs -menotti -mensa -menservants -menses -menstruate -menstruated -menstruates -menstruating -menstruation -menswear -mention -mentioned -mentioning -mentions -mentor -mentored -mentoring -mentors -menu -menuhin -menus -menzies -meow -meowed -meowing -meows -merak -mercado -mercator -mercedes -mercenaries -mercenary -mercer -mercerise -mercerised -mercerises -mercerising -mercerize -mercerized -mercerizes -mercerizing -merchandise -merchandised -merchandises -merchandising -merchandize -merchandized -merchandizes -merchandizing -merchant -merchantman -merchantmen -merchants -mercia -mercies -merck -mercuric -mercuries -mercurochrome -mercury -mercy -mere -meredith -meres -merest -meretricious -merganser -mergansers -merge -merged -merger -mergers -merges -merging -meridian -meridians -meringue -meringues -merino -merinos -merit -merited -meriting -meritocracies -meritocracy -meritorious -merits -mermaid -mermaids -merman -mermen -merovingian -merriam -merrick -merrier -merriest -merrimack -merriment -merriness -merritt -merry -merrymaker -merrymakers -merrymaking -merton -mervin -mes -mesa -mesabi -mesas -mesdames -mesh -meshed -meshes -meshing -mesmer -mesmerise -mesmerised -mesmerises -mesmerising -mesmerism -mesmerize -mesmerized -mesmerizes -mesmerizing -mesopotamia -mesozoic -mesquite -mesquites -mess -message -messages -messed -messenger -messengers -messerschmidt -messes -messiaen -messiah -messiahs -messianic -messier -messiest -messieurs -messiness -messing -messy -mestizo -mestizoes -mestizos -met -metacarpi -metacarpus -metamorphic -metamorphism -metamorphose -metamorphosed -metamorphoses -metamorphosing -metamorphosis -metaphor -metaphors -metaphysics -metastases -metastasis -metastasise -metastasised -metastasises -metastasising -metastasize -metastasized -metastasizes -metastasizing -mete -meted -meteor -meteoric -meteorite -meteorites -meteoroid -meteoroids -meteors -meter -metered -metering -meters -metes -methadon -methadone -methane -methinks -method -methodism -methodisms -methodist -methodists -methods -methought -meting -metre -metres -metric -metrication -metrics -metro -metronome -metronomes -metros -metternich -meuse -mew -mewed -mewing -mews -mexican -mexicans -mexico -meyer -meyerbeer -meyers -mezzanine -mezzanines -mfume -mgm -mhz -mia -miami -miamis -miaow -miaowed -miaowing -miaows -miasma -miasmas -miasmata -mica -micah -micawber -mice -michigan -michigander -michiganders -mick -mickey -mickie -micky -micmac -micra -microaggression -microaggressions -microbe -microbes -microchip -microchips -microcode -microcomputer -microcomputers -microcosm -microcosms -microeconomics -microfiche -microfiches -micrometer -micrometers -micrometre -micrometres -micron -micronesia -micronesian -microns -microorganism -microorganisms -microphone -microphones -microprocessor -microprocessors -microscope -microscopes -microscopic -microscopy -microsecond -microseconds -microsoft -microsurgery -microwave -microwaved -microwaves -microwaving -mid -midair -midas -midday -middies -middy -midge -midges -midget -midgets -midmost -midnight -midpoint -midpoints -midriff -midriffs -midshipman -midshipmen -midst -midstream -midsummer -midterm -midterms -midtown -midway -midways -midweek -midweeks -midwest -midwestern -midwife -midwifed -midwiferies -midwifery -midwifes -midwifing -midwinter -midwived -midwives -midwiving -midyear -midyears -mien -miens -miff -miffed -miffing -miffs -mig -might -mightier -mightiest -mightiness -mighty -migraine -migraines -migrant -migrants -migrate -migrated -migrates -migrating -migration -migrations -migratory -mike -miked -mikes -miking -mikoyan -mime -mimed -mimeograph -mimeographed -mimeographing -mimeographs -mimes -mimetic -mimi -mimic -mimicked -mimicking -mimicries -mimicry -mimics -miming -mimosa -mimosas -minamoto -minaret -minarets -minatory -mince -minced -mincemeat -minces -mincing -mind -mindanao -minded -mindedness -minding -mindoro -minds -mindy -mine -mined -miner -miners -minerva -mines -minestrone -minesweeper -minesweepers -ming -mingus -mini -miniature -miniatures -miniaturisation -miniaturise -miniaturised -miniaturises -miniaturising -miniaturist -miniaturists -miniaturization -miniaturize -miniaturized -miniaturizes -miniaturizing -minibike -minibikes -minibus -minibuses -minibusses -minicam -minicams -minicomputer -minicomputers -minim -minima -minimisation -minimise -minimised -minimises -minimising -minimization -minimize -minimized -minimizes -minimizing -minims -minimum -minimums -mining -minion -minions -minis -miniseries -miniskirt -miniskirts -minister -ministered -ministering -ministers -ministrant -ministrants -ministration -ministrations -ministries -ministry -minivan -minivans -mink -minks -minnesota -minnesotan -minnesotans -minnie -minnow -minnows -minoan -minoans -minor -minored -minoring -minorities -minority -minors -minos -minot -minotaur -minsk -minsky -minster -mint -mintaka -minted -mintier -mintiest -minting -mints -minty -minuend -minuends -minuet -minuets -minuit -minus -minuses -minute -minuted -minuteman -minutemen -minuteness -minuter -minutes -minutest -minutia -minutiae -minuting -minx -minxes -miocene -mir -mira -mirabeau -mirach -mirage -mirages -miranda -mire -mired -mires -mirfak -miriam -miring -miro -mirror -mirrored -mirroring -mirrors -mirth -mirzam -misadventure -misadventures -misanthrope -misanthropes -misanthropic -misanthropist -misanthropists -misanthropy -misapprehend -misapprehended -misapprehending -misapprehends -misapprehension -misapprehensions -misappropriate -misappropriated -misappropriates -misappropriating -misappropriation -misappropriations -misbegotten -misbehave -misbehaved -misbehaves -misbehaving -misbehavior -misbehaviour -miscarriage -miscarriages -miscarried -miscarries -miscarry -miscarrying -miscast -miscasting -miscasts -miscegenation -mischance -mischances -mischief -mischievous -mischievousness -miscommunication -misconceive -misconceived -misconceives -misconceiving -misconception -misconceptions -misconduct -misconducted -misconducting -misconducts -misconstruction -misconstructions -misconstrue -misconstrued -misconstrues -misconstruing -miscount -miscounted -miscounting -miscounts -miscreant -miscreants -miscue -miscued -miscues -miscuing -misdeed -misdeeds -misdemeanor -misdemeanors -misdemeanour -misdemeanours -misdiagnose -misdiagnosed -misdiagnoses -misdiagnosing -misdiagnosis -misdid -misdirect -misdirected -misdirecting -misdirection -misdirects -misdo -misdoes -misdoing -misdoings -misdone -miser -miseries -misers -misery -misfeasance -misfire -misfired -misfires -misfiring -misfit -misfits -misfitted -misfitting -misfortune -misfortunes -misgiving -misgivings -misgovern -misgoverned -misgoverning -misgoverns -misguide -misguided -misguides -misguiding -mishap -mishaps -mishmash -mishmashes -misidentified -misidentifies -misidentify -misidentifying -misinform -misinformation -misinformed -misinforming -misinforms -misinterpret -misinterpretation -misinterpretations -misinterpreted -misinterpreting -misinterprets -misjudge -misjudged -misjudgement -misjudgements -misjudges -misjudging -misjudgment -misjudgments -miskito -mismanage -mismanaged -mismanagement -mismanages -mismanaging -mismatch -mismatched -mismatches -mismatching -misnomer -misnomers -misogynist -misogynistic -misogynists -misogyny -misprint -misprinted -misprinting -misprints -mispronounce -mispronounced -mispronounces -mispronouncing -mispronunciation -mispronunciations -misquotation -misquotations -misquote -misquoted -misquotes -misquoting -misread -misreading -misreadings -misreads -misrepresent -misrepresentation -misrepresentations -misrepresented -misrepresenting -misrepresents -miss -missed -misses -misshapen -missing -mission -missionaries -missionary -missions -mississauga -mississippi -mississippian -mississippians -missive -missives -missouri -missourian -missourians -misspend -misspending -misspends -misspent -misstate -misstated -misstatement -misstatements -misstates -misstating -misstep -missteps -missy -mist -mistake -mistaken -mistakes -mistaking -mistassini -misted -mister -misters -mistier -mistiest -mistime -mistimed -mistimes -mistiming -mistiness -misting -mistook -mistreat -mistreated -mistreating -mistreatment -mistreats -mistress -mistresses -mistrust -mistrusted -mistrusting -mistrusts -mists -misty -mistype -mistypes -mistyping -misunderstand -misunderstanding -misunderstandings -misunderstands -misunderstood -misuse -misused -misuses -misusing -mit -mitch -mite -miter -mitered -mitering -miters -mites -mitford -mithra -mithridates -mitigate -mitigated -mitigates -mitigating -mitigation -mitosis -mitre -mitred -mitres -mitring -mitsubishi -mitt -mitten -mittens -mitterrand -mitts -mitty -mitzi -mix -mixed -mixer -mixers -mixes -mixing -mixtec -mixture -mixtures -mizar -mizzen -mizzenmast -mizzenmasts -mizzens -mkay -mnemonic -mnemonics -mnemosyne -moan -moaned -moaning -moans -moat -moats -mob -mobbed -mobbing -mobs -mobster -mobsters -mobutu -moccasin -moccasins -mocha -mochas -mock -mocked -mocker -mockeries -mockers -mockery -mocking -mockingbird -mockingbirds -mocks -mod -mode -modem -modems -moderate -moderated -moderates -moderating -moderation -moderator -moderators -modern -modernisation -modernise -modernised -modernises -modernising -modernism -modernist -modernistic -modernists -modernity -modernization -modernize -modernized -modernizes -modernizing -moderns -modes -modest -modesto -modesty -modicum -modicums -modification -modifications -modified -modifier -modifiers -modifies -modify -modifying -modish -modishness -mods -moe -moet -mogadishu -mohacs -mohair -mohamed -mohammad -mohammed -mohammedan -mohammedanism -mohammedanisms -mohammedans -mohawk -mohawks -mohican -mohicans -moho -mohorovicic -moieties -moiety -moira -moire -moires -moises -moiseyev -moist -moisten -moistened -moistening -moistens -moister -moistest -moistness -moisture -moisturise -moisturised -moisturiser -moisturisers -moisturises -moisturising -moisturize -moisturized -moisturizer -moisturizers -moisturizes -moisturizing -mojave -mom -mombasa -moment -momentary -momentous -momentousness -moments -momentum -momma -mommas -mommies -mommy -moms -mona -monaco -monarch -monarchic -monarchies -monarchism -monarchist -monarchists -monarchs -monarchy -monasteries -monastery -monastic -monasticism -monastics -monday -mondays -mondrian -monera -monet -monetarism -monetary -monetise -monetised -monetises -monetising -monetize -monetized -monetizes -monetizing -money -moneybag -moneybags -moneyed -moneymaker -moneymakers -moneymaking -mongeese -monger -mongered -mongering -mongers -mongoose -mongooses -monica -monicker -monickers -monied -monies -moniker -monikers -monique -monitor -monitored -monitoring -monitors -monk -monkey -monkeyed -monkeying -monkeys -monkeyshine -monkeyshines -monks -monmouth -mono -monochromatic -monochrome -monochromes -monogamous -monogamy -monogram -monogrammed -monogramming -monograms -monograph -monographs -monomania -monomaniac -monomaniacs -monophonic -monotheism -monotheist -monotheistic -monotheists -monotone -monotones -monotonic -monotonous -monotony -monoxide -monoxides -monroe -monrovia -mons -monsanto -monsieur -monsignor -monsignori -monsignors -monsoon -monsoons -monster -monsters -monstrance -monstrances -monstrosities -monstrosity -monstrous -montage -montages -montague -montaigne -montana -montanan -montanans -monte -montenegrin -montenegro -monterrey -montesquieu -montessori -monteverdi -montevideo -montezuma -montgomery -month -months -montoya -montrachet -montserrat -monty -monument -monuments -moo -mooch -mooched -moocher -moochers -mooches -mooching -mood -moodier -moodiest -moodiness -moods -moody -mooed -moog -mooing -moon -moonbeam -moonbeams -mooned -mooney -mooning -moons -moonscape -moonscapes -moonshine -moonshines -moonshot -moonshots -moonstone -moonstones -moonstruck -moor -moore -moored -mooring -moorings -moorish -moors -moos -moose -moot -mooted -mooting -moots -mop -mope -moped -mopeds -mopes -moping -mopped -moppet -moppets -mopping -mops -moraine -moraines -moran -morass -morasses -moratoria -moratorium -moratoriums -moravia -moravian -moray -morays -morbid -morbidity -mordant -mordants -mordred -more -moreno -moreover -mores -morgan -morgue -morgues -moriarty -moribund -morin -morison -morita -mormon -mormonism -mormonisms -mormons -morn -morning -mornings -morns -moro -moroccan -moroccans -morocco -moron -moroni -moronic -morons -morose -moroseness -morpheme -morphemes -morpheus -morphine -morphy -morris -morrison -morrow -morrows -morse -mort -mortar -mortarboard -mortarboards -mortared -mortaring -mortars -mortgage -mortgaged -mortgagee -mortgagees -mortgager -mortgagers -mortgages -mortgaging -mortgagor -mortgagors -mortice -morticed -mortices -mortician -morticians -morticing -mortification -mortified -mortifies -mortify -mortifying -mortimer -mortise -mortised -mortises -mortising -morton -mortuaries -mortuary -mosaic -mosaics -moscow -moses -mosey -moseyed -moseying -moseys -mosque -mosques -mosquito -mosquitoes -mosquitos -moss -mosses -mossier -mossiest -mossy -most -mote -motes -moth -mother -motherboard -motherboards -mothered -motherfucker -motherfuckers -motherfucking -motherhood -mothering -mothers -moths -motif -motifs -motion -motioned -motioning -motions -motivate -motivated -motivates -motivating -motivation -motivations -motivator -motivators -motive -motives -motocross -motocrosses -motor -motorbike -motorbiked -motorbikes -motorbiking -motorboat -motorboats -motorcade -motorcades -motorcar -motorcars -motored -motoring -motorise -motorised -motorises -motorising -motorist -motorists -motorize -motorized -motorizes -motorizing -motorman -motormen -motormouth -motormouths -motors -motorway -motorways -motown -motrin -mott -motto -mottoes -mottos -mound -mounded -mounding -mounds -mount -mountain -mountaineer -mountaineered -mountaineering -mountaineers -mountainous -mountains -mountainside -mountainsides -mountaintop -mountaintops -mountbatten -mountebank -mountebanks -mounted -mountie -mounties -mounting -mountings -mounts -mourn -mourned -mourner -mourners -mourning -mourns -mouse -moused -mouser -mousers -mouses -mousetrap -mousetrapped -mousetrapping -mousetraps -mousey -mousier -mousiest -mousiness -mousing -mousse -moussed -mousses -moussing -moussorgsky -moustache -moustaches -mousy -mouth -mouthe -mouthed -mouthing -mouthpiece -mouthpieces -mouths -mouthwash -mouthwashes -mouthwatering -mouton -move -moved -movement -movements -mover -movers -moves -movie -movies -moving -mow -mowed -mower -mowers -mowing -mown -mows -mozambican -mozambicans -mozambique -mozart -muawiya -mubarak -much -muck -mucked -muckier -muckiest -mucking -muckrake -muckraked -muckraker -muckrakers -muckrakes -muckraking -mucks -mucky -mucous -mucus -mud -muddied -muddier -muddies -muddiest -muddiness -muddy -muddying -mudguard -mudguards -muenster -muezzin -muezzins -muff -muffed -muffin -muffing -muffins -muffs -mufti -muftis -mug -mugabe -mugged -mugger -muggers -muggier -muggiest -mugginess -mugging -muggings -muggy -mugs -muhammad -muhammadan -muhammadanism -muhammadanisms -muhammadans -muir -mujib -mum -mumbai -mumford -mummer -mummers -mummery -mummies -mummification -mummified -mummifies -mummify -mummifying -mummy -mumps -mums -munch -munched -munches -munchies -munching -mundane -munich -munificence -munificent -munition -munitions -munoz -munro -muppet -murasaki -murat -murchison -murder -murdered -murderer -murderers -murderess -murderesses -murdering -murderous -murders -murdoch -murine -murk -murkier -murkiest -murkiness -murks -murky -murmansk -murmur -murmured -murmuring -murmurs -murphy -murray -murrow -murrumbidgee -muscat -muscovite -muscovy -muse -mused -muses -museum -museums -mush -musharraf -mushed -mushes -mushier -mushiest -mushiness -mushing -mushroom -mushroomed -mushrooming -mushrooms -mushy -music -musician -musicians -musicianship -musing -musings -musk -musket -musketeer -musketeers -musketry -muskets -muskier -muskiest -muskiness -muskogee -muskrat -muskrats -musky -muss -mussed -musses -mussier -mussiest -mussing -mussorgsky -mussy -must -mustache -mustaches -mustang -mustangs -mustard -muster -mustered -mustering -musters -mustier -mustiest -mustiness -musts -musty -mutant -mutants -mutate -mutated -mutates -mutating -mutation -mutations -mute -muted -muteness -muter -mutes -mutest -mutineer -mutineers -muting -mutinied -mutinies -mutinous -mutiny -mutinying -mutsuhito -mutt -mutter -muttered -muttering -mutters -mutton -mutts -muumuu -muumuus -muzak -myanmar -mycenae -mycenaean -myers -myna -mynah -mynahes -mynahs -mynas -myopia -myopic -myra -myriad -myriads -myrna -myron -myrrh -mysore -myspace -myst -mysteries -mysterious -mysteriousness -mystery -mystic -mysticism -mystics -mystification -mystified -mystifies -mystify -mystifying -mystique -myth -mythic -myths -nab -nabbed -nabbing -nabisco -nabob -nabobs -nabokov -nabs -nacho -nachos -nacre -nader -nadia -nadine -nadir -nadirs -nag -nagasaki -nagged -nagging -nagoya -nagpur -nags -nagy -nahum -naiad -naiades -naiads -nair -nairobi -naismith -naive -naiver -naivest -naivety -naked -nakedness -nam -namath -name -named -names -namesake -namesakes -namibia -namibian -namibians -naming -nan -nanak -nanchang -nancy -nanette -nanjing -nanking -nankings -nannie -nannies -nanny -nanook -nanosecond -nanoseconds -nansen -nantes -nantucket -naomi -nap -nape -napes -naphtha -napier -napkin -napkins -napped -nappier -nappies -nappiest -napping -nappy -naps -napster -narc -narcissi -narcissism -narcissist -narcissistic -narcissists -narcissus -narcissuses -narcosis -narcotic -narcotics -narcs -nark -narked -narking -narks -narmada -narnia -narragansett -narrate -narrated -narrates -narrating -narration -narrations -narrative -narratives -narrator -narrators -narrow -narrowed -narrower -narrowest -narrowing -narrowness -narrows -nary -nascar -nascent -nash -nashua -nassau -nasser -nastier -nastiest -nastiness -nasturtium -nasturtiums -nasty -nat -natasha -natchez -nate -nathan -nathans -nation -nations -nationwide -native -natives -nativities -nativity -nattier -nattiest -natty -nature -natures -naugahyde -naught -naughtier -naughtiest -naughtiness -naughts -naughty -nauru -nausea -nauseate -nauseated -nauseates -nauseating -nauseous -navaho -navahoes -navahos -navajo -navajoes -navajos -navarre -navarro -nave -naves -navies -navigate -navigated -navigates -navigating -navigation -navigator -navigators -navy -nay -nays -naysayer -naysayers -nazarene -nazareth -nazca -nazi -naziism -naziisms -nazis -nazism -nazisms -ndjamena -near -nearby -neared -nearer -nearest -nearing -nearness -nears -nearsighted -nearsightedness -neat -neater -neatest -neath -neatness -nebraska -nebraskan -nebraskans -nebuchadnezzar -necessaries -necessary -necessitate -necessitated -necessitates -necessitating -necessities -necessity -neck -necked -neckerchief -neckerchiefs -neckerchieves -necking -necks -necktie -neckties -necromancer -necromancers -necromancy -necrosis -nectar -nectarine -nectarines -ned -need -needed -needier -neediest -neediness -needing -needs -needy -nefarious -nefariousness -nefertiti -negate -negated -negates -negating -negation -negations -negative -negatived -negatives -negativing -negativity -negev -negotiate -negotiated -negotiates -negotiating -negotiation -negotiations -negotiator -negotiators -negro -negroes -negroid -negroids -negros -nehemiah -nehru -neigh -neighbor -neighbored -neighborhood -neighborhoods -neighboring -neighbors -neighbour -neighboured -neighbourhood -neighbourhoods -neighbouring -neighbours -neighed -neighing -neighs -neither -nematode -nematodes -nemeses -nemesis -neocon -neocons -neoconservative -neoconservatives -neodymium -neogene -neon -neonate -neonates -neophyte -neophytes -neoprene -nephew -nephews -nephritis -nepotism -neptune -neptunium -nerd -nerdier -nerdiest -nerds -nerdy -nereid -nerf -nero -neruda -nerve -nerved -nerves -nervier -nerviest -nerving -nervous -nervousness -nervy -nescafe -nest -nested -nesting -nestor -nestorius -nests -net -netbook -netbooks -nether -nethermost -nets -netscape -nett -netted -nettie -netting -netts -network -networked -networking -networks -neuritis -neuron -neurons -neuroses -neurosis -neurosurgery -neurotic -neurotics -neurotransmitter -neurotransmitters -neuter -neutered -neutering -neuters -neutrino -neutrinos -neutron -neutrons -neva -nevada -nevadan -nevadans -never -nevermore -nevis -nevsky -new -newark -newbie -newbies -newborn -newborns -newcomer -newcomers -newer -newest -newman -newness -newport -news -newsagents -newsboy -newsboys -newscast -newscaster -newscasters -newscasts -newsier -newsiest -newsman -newsmen -newspaper -newspaperman -newspapermen -newspapers -newspaperwoman -newspaperwomen -newsprint -newsstand -newsstands -newsweek -newsworthy -newsy -newt -newton -newtonian -newtons -newts -nexis -next -nexus -nexuses -nguyen -niacin -niagara -niamey -nib -nibs -nicaea -nicaragua -nicaraguan -nicaraguans -nice -nicene -niceness -nicer -nicest -niceties -nicety -niche -niches -nichiren -nick -nicked -nicking -nicknack -nicknacks -nickname -nicknamed -nicknames -nicknaming -nicks -nicobar -nicodemus -nicosia -nicotine -niebuhr -niece -nieces -nietzsche -nieves -niftier -niftiest -nifty -niger -nigeria -nigerian -nigerians -nigga -niggard -niggards -niggas -niggaz -nigger -niggers -nigh -nigher -nighest -night -nightcap -nightcaps -nightgown -nightgowns -nighthawk -nighthawks -nightie -nighties -nightmare -nightmares -nightmarish -nights -nightshade -nightshades -nightshirt -nightshirts -nightstick -nightsticks -nighttime -nighty -nijinsky -nike -nikita -nikkei -nikki -nikon -nimbi -nimbus -nimbuses -nimitz -nimrod -nina -nincompoop -nincompoops -nine -ninepin -ninepins -nines -nineteen -nineteens -nineteenth -nineteenths -nineties -ninetieth -ninetieths -ninety -nineveh -ninja -ninjas -ninnies -ninny -nintendo -ninth -ninths -niobe -nip -nipped -nipper -nippers -nippier -nippiest -nipping -nippon -nippy -nips -nirenberg -nirvana -nisan -nisei -nissan -nit -nita -nite -niter -nites -nitpick -nitpicked -nitpicker -nitpickers -nitpicking -nitpicks -nitrate -nitrated -nitrates -nitrating -nitre -nitrogen -nitrogenous -nits -nitwit -nitwits -nivea -nix -nixed -nixes -nixing -nixon -nkrumah -noah -nobodies -nobody -nocturne -nocturnes -nod -nodded -nodding -noddy -node -nodes -nodoz -nods -noe -noemi -noes -noggin -noggins -noh -noise -noised -noisemaker -noisemakers -noises -noisier -noisiest -noisiness -noising -noisome -noisy -nokia -nomad -nomadic -nomads -nome -nominate -nominated -nominates -nominating -nomination -nominations -nominative -nominatives -nominee -nominees -non -nona -nonabrasive -nonabsorbent -nonabsorbents -nonagenarian -nonagenarians -nonce -noncom -noncombatant -noncombatants -noncompetitive -noncoms -nonconductor -nonconductors -nonconformist -nonconformists -nonconformity -noncontagious -noncooperation -nondairy -nondescript -nondrinker -nondrinkers -none -nonempty -nonentities -nonentity -nonesuch -nonesuches -nonevent -nonevents -nonexempt -nonexistence -nonexistent -nonfat -nonfiction -nonhazardous -nonhuman -noninterference -nonintervention -nonmember -nonmembers -nonobjective -nonpartisan -nonpartisans -nonpayment -nonpayments -nonpoisonous -nonprescription -nonproductive -nonprofit -nonprofits -nonresident -nonresidents -nonrestrictive -nonrigid -nonsectarian -nonsense -nonsexist -nonskid -nonsmoker -nonsmokers -nonsmoking -nonstandard -nonstick -nonstop -nonsupport -nontoxic -nonunion -nonuser -nonusers -nonvoting -nonwhite -nonwhites -nonzero -nook -nooks -noon -noonday -noontime -noose -nooses -nootka -nope -nor -nora -norad -norbert -norberto -nordic -nordics -noreen -noriega -norm -norma -norman -normand -normandy -normans -normative -norms -norris -norse -norseman -norsemen -north -northampton -northbound -northeast -northeaster -northeastern -northeasters -northeasts -northeastward -northern -northerner -northerners -northernmost -northrop -northrup -norths -northward -northwards -northwest -northwestern -northwests -northwestward -norton -norway -norwegian -norwegians -norwich -nose -nosed -nosedive -nosedived -nosedives -nosediving -nosedove -nosegay -nosegays -noses -nosey -nosferatu -nosh -noshed -noshes -noshing -nosier -nosiest -nosiness -nosing -nostradamus -nostrum -nostrums -nosy -not -notaries -notarise -notarised -notarises -notarising -notarize -notarized -notarizes -notarizing -notary -notation -notations -notch -notched -notches -notching -note -notebook -notebooks -noted -notepad -notepaper -notes -noteworthy -nothing -nothingness -nothings -notice -noticeboard -noticeboards -noticed -notices -noticing -notification -notifications -notified -notifies -notify -notifying -noting -notion -notions -notoriety -notorious -nottingham -notwithstanding -nouakchott -nougat -nougats -nought -noughts -noumea -noun -nouns -nourish -nourished -nourishes -nourishing -nourishment -nous -nova -novae -novartis -novas -november -novembers -novgorod -novice -novices -novitiate -novitiates -novocain -novocaine -novokuznetsk -novosibirsk -now -nowadays -noway -nowhere -nowise -noxious -noxzema -noyce -noyes -nsa -nth -nuance -nuanced -nuances -nub -nubia -nubian -nubs -nude -nuder -nudes -nudest -nudge -nudged -nudges -nudging -nudism -nudist -nudists -nudity -nugget -nuggets -nuisance -nuisances -nuke -nuked -nukes -nuking -numb -numbed -number -numbered -numbering -numbers -numbest -numbing -numbness -numbs -numeracy -numerate -numerated -numerates -numerating -numeration -numerations -numerator -numerators -numeric -numerous -numismatic -numismatics -numismatist -numismatists -nun -nunavut -nuncio -nuncios -nunez -nunki -nunneries -nunnery -nuns -nuremberg -nureyev -nurse -nursed -nursemaid -nursemaids -nurseries -nursery -nurseryman -nurserymen -nurses -nursing -nurture -nurtured -nurtures -nurturing -nut -nutcracker -nutcrackers -nuthatch -nuthatches -nutmeat -nutmeats -nutmeg -nutmegs -nutrasweet -nutria -nutrias -nutrient -nutrients -nutriment -nutriments -nutrition -nutritionist -nutritionists -nutritious -nutritive -nuts -nutted -nuttier -nuttiest -nuttiness -nutting -nutty -nyasa -nyerere -nymph -nymphomania -nymphomaniac -nymphomaniacs -nymphs -oaf -oafish -oafs -oahu -oak -oaken -oaks -oakum -oar -oared -oaring -oars -oarsman -oarsmen -oases -oasis -oat -oaten -oates -oath -oaths -oats -oaxaca -obadiah -obama -obamacare -obduracy -obdurate -obedience -obedient -obeisance -obeisances -obeisant -oberon -obese -obesity -obey -obeyed -obeying -obeys -obfuscate -obfuscated -obfuscates -obfuscating -obfuscation -obit -obits -obituaries -obituary -object -objected -objecting -objection -objections -objective -objectiveness -objectives -objectivity -objector -objectors -objects -obnoxious -oboe -oboes -oboist -oboists -obscene -obscener -obscenest -obscenities -obscenity -obscure -obscured -obscurer -obscures -obscurest -obscuring -obscurities -obscurity -obsequies -obsequious -obsequiousness -obsequy -observance -observances -observant -observation -observations -observatories -observatory -observe -observed -observer -observers -observes -observing -obsess -obsessed -obsesses -obsessing -obsession -obsessions -obsessive -obsessives -obsidian -obstetric -obstetrician -obstetricians -obstetrics -obstinacy -obstinate -obstreperous -obstruct -obstructed -obstructing -obstruction -obstructionist -obstructionists -obstructions -obstructive -obstructiveness -obstructs -obtain -obtained -obtaining -obtains -obtrude -obtruded -obtrudes -obtruding -obtrusive -obtrusiveness -obtuse -obtuseness -obtuser -obtusest -obverse -obverses -obviate -obviated -obviates -obviating -obvious -obviousness -ocarina -ocarinas -occam -occasion -occasioned -occasioning -occasions -occident -occupancy -occupant -occupants -occupation -occupations -occupied -occupies -occupy -occupying -occur -occurred -occurrence -occurrences -occurring -occurs -ocean -oceangoing -oceania -oceanic -oceanographer -oceanographers -oceanographic -oceanography -oceans -oceanus -ocher -ochoa -ochre -oct -octagon -octagons -octane -octave -octaves -octavia -octavio -octet -octets -octette -octettes -october -octobers -octogenarian -octogenarians -octopi -octopus -octopuses -odd -odder -oddest -oddities -oddity -oddness -odds -ode -oder -odes -odessa -odets -odin -odious -odis -odium -odom -odometer -odometers -odor -odoriferous -odorous -odors -odour -odours -odysseus -odyssey -odysseys -oedema -oedipus -oersted -oesophagi -oesophagus -oesophaguses -oestrogen -off -offbeat -offbeats -offed -offenbach -offence -offences -offend -offended -offender -offenders -offending -offends -offense -offenses -offensive -offensiveness -offensives -offer -offered -offering -offerings -offers -offertories -offertory -offhand -office -officemax -officer -officers -offices -officiate -officiated -officiates -officiating -officious -officiousness -offing -offings -offs -offset -offsets -offsetting -offshoot -offshoots -offshore -offshoring -offside -offspring -offsprings -offstage -offstages -oft -often -oftener -oftenest -oftentimes -ogbomosho -ogden -ogre -ogres -ohio -ohioan -ohioans -ohm -ohms -oho -ohs -ohsa -oink -oinked -oinking -oinks -ointment -ointments -oise -ojibwa -ojibwas -okay -okayed -okaying -okays -oked -okeechobee -okefenokee -okhotsk -okinawa -oking -okra -okras -oks -oktoberfest -omaha -omahas -oman -omar -omayyad -ombudsman -ombudsmen -omdurman -omega -omegas -omen -omens -ominous -omission -omissions -omit -omits -omitted -omitting -omnibus -omnibuses -omnibusses -omnipotence -omnipotent -omnipresence -omnipresent -omniscience -omniscient -omnivore -omnivores -omnivorous -omsk -onassis -once -oncoming -one -onega -onegin -oneida -oneness -onerous -ones -onetime -ongoing -onion -onions -onionskin -ono -onomatopoeia -onomatopoeic -onondaga -onrush -onrushes -onrushing -onsager -onset -onsets -onshore -ontario -onto -onus -onuses -onward -onwards -onyx -onyxes -oops -oort -ooze -oozed -oozes -oozing -opacity -opaque -opaqued -opaqueness -opaquer -opaques -opaquest -opaquing -open -opened -opener -openers -openest -openhanded -opening -openings -openness -openoffice -opens -openwork -opera -operand -operands -operas -operate -operated -operates -operatic -operating -operation -operations -operative -operatives -operator -operators -operetta -operettas -ophiuchus -opiate -opiates -opine -opined -opines -opining -opinion -opinionated -opinions -opium -opossum -opossums -oppenheimer -opponent -opponents -opportune -opportunism -opportunist -opportunistic -opportunists -opportunities -opportunity -oppose -opposed -opposes -opposing -opposite -opposites -opposition -oppress -oppressed -oppresses -oppressing -oppression -oppressive -oppressor -oppressors -opprobrious -opprobrium -oprah -opt -opted -optic -optician -opticians -optics -optima -optimisation -optimisations -optimise -optimised -optimiser -optimises -optimising -optimism -optimist -optimistic -optimists -optimization -optimizations -optimize -optimized -optimizer -optimizes -optimizing -optimum -optimums -opting -option -optioned -optioning -options -optometrist -optometrists -optometry -opts -opus -opuses -ora -oran -orange -orangeade -orangeades -oranges -orangutan -orangutang -orangutangs -orangutans -oranjestad -orate -orated -orates -orating -oration -orations -orator -oratories -oratorio -oratorios -orators -oratory -orb -orbison -orbit -orbited -orbiting -orbits -orbs -orc -orchard -orchards -orchestra -orchestras -orchestrate -orchestrated -orchestrates -orchestrating -orchestration -orchestrations -orchid -orchids -orcs -ordain -ordained -ordaining -ordains -order -ordered -ordering -orderings -orders -ordinance -ordinances -ordinaries -ordinariness -ordinary -ordination -ordinations -ordnance -ordovician -ordure -ore -oregano -oregon -oregonian -oregonians -oreo -ores -orestes -organ -organdie -organdy -organic -organics -organisation -organisations -organise -organised -organiser -organisers -organises -organising -organism -organisms -organist -organists -organization -organizations -organize -organized -organizer -organizers -organizes -organizing -organs -orgasm -orgasmic -orgasms -orgiastic -orgies -orgy -orient -orientate -orientated -orientates -orientating -orientation -orientations -oriented -orienting -orients -orifice -orifices -origami -origin -originate -originated -originates -originating -origination -originator -originators -origins -orin -orinoco -orion -oriya -orizaba -orkney -ornament -ornamentation -ornamented -ornamenting -ornaments -ornate -ornateness -ornerier -orneriest -ornery -orotund -orphan -orphanage -orphanages -orphaned -orphaning -orphans -orpheus -orphic -orr -ortega -orthodontia -orthodontic -orthodontics -orthodontist -orthodontists -orthodox -orthodoxies -orthodoxy -orthographic -orthographies -orthography -orthopaedic -orthopaedics -orthopaedist -orthopaedists -orthopedic -orthopedics -orthopedist -orthopedists -ortiz -osage -osaka -osbert -osborn -osborne -oscar -oscars -osgood -oshawa -oshkosh -osier -osiers -osiris -osman -osmosis -osmotic -osprey -ospreys -ossification -ossified -ossifies -ossify -ossifying -ostentation -ostentatious -osteopath -osteopaths -osteopathy -osteoporosis -ostracise -ostracised -ostracises -ostracising -ostracism -ostracize -ostracized -ostracizes -ostracizing -ostrich -ostriches -ostrogoth -other -others -otherwise -otiose -otis -ottawa -ottawas -otter -otters -otto -ottoman -ottomans -ouagadougou -ouch -ought -ouija -ounce -ounces -our -ours -oust -ousted -ouster -ousters -ousting -ousts -out -outage -outages -outback -outbacks -outbid -outbidding -outbids -outbound -outbreak -outbreaks -outburst -outbursts -outcast -outcasts -outcome -outcomes -outcries -outcrop -outcropped -outcropping -outcroppings -outcrops -outcry -outdated -outdid -outdistance -outdistanced -outdistances -outdistancing -outdo -outdoes -outdoing -outdone -outdoor -outdoors -outed -outer -outermost -outfit -outfits -outfitted -outfitter -outfitters -outfitting -outfox -outfoxed -outfoxes -outfoxing -outgo -outgoes -outgoing -outgrew -outgrow -outgrowing -outgrown -outgrows -outgrowth -outgrowths -outhouse -outhouses -outing -outings -outmaneuver -outmaneuvered -outmaneuvering -outmaneuvers -outmanoeuvre -outmanoeuvred -outmanoeuvres -outmanoeuvring -outmoded -outnumber -outnumbered -outnumbering -outnumbers -outpatient -outpatients -outperform -outperformed -outperforming -outperforms -outpost -outposts -outpouring -outpourings -output -outputs -outputted -outputting -outrage -outraged -outrageous -outrages -outraging -outran -outrank -outranked -outranking -outranks -outreach -outreached -outreaches -outreaching -outrider -outriders -outrigger -outriggers -outright -outrun -outrunning -outruns -outs -outset -outsets -outshine -outshined -outshines -outshining -outshone -outside -outsider -outsiders -outsides -outsize -outsized -outsizes -outskirt -outskirts -outsmart -outsmarted -outsmarting -outsmarts -outsource -outsourced -outsources -outsourcing -outspoken -outspokenness -outspread -outspreading -outspreads -outstanding -outstation -outstations -outstay -outstayed -outstaying -outstays -outstretch -outstretched -outstretches -outstretching -outstrip -outstripped -outstripping -outstrips -outstript -outtake -outtakes -outvote -outvoted -outvotes -outvoting -outward -outwards -outwear -outwearing -outwears -outweigh -outweighed -outweighing -outweighs -outwit -outwits -outwitted -outwitting -outwore -outworn -ova -ovarian -ovaries -ovary -ovation -ovations -oven -ovens -over -overabundance -overabundant -overachieve -overachieved -overachiever -overachievers -overachieves -overachieving -overact -overacted -overacting -overactive -overacts -overage -overages -overambitious -overanxious -overate -overawe -overawed -overawes -overawing -overbear -overbearing -overbears -overbite -overbites -overboard -overbook -overbooked -overbooking -overbooks -overbore -overborne -overburden -overburdened -overburdening -overburdens -overcame -overcast -overcasting -overcasts -overcautious -overcharge -overcharged -overcharges -overcharging -overcoat -overcoats -overcome -overcomes -overcoming -overcompensate -overcompensated -overcompensates -overcompensating -overcompensation -overconfident -overcook -overcooked -overcooking -overcooks -overcrowd -overcrowded -overcrowding -overcrowds -overdid -overdo -overdoes -overdoing -overdone -overdose -overdosed -overdoses -overdosing -overdraft -overdrafts -overdraw -overdrawing -overdrawn -overdraws -overdress -overdressed -overdresses -overdressing -overdrew -overdrive -overdue -overeager -overeat -overeaten -overeating -overeats -overemphasise -overemphasised -overemphasises -overemphasising -overemphasize -overemphasized -overemphasizes -overemphasizing -overenthusiastic -overestimate -overestimated -overestimates -overestimating -overexpose -overexposed -overexposes -overexposing -overexposure -overextend -overextended -overextending -overextends -overgenerous -overgrew -overgrow -overgrowing -overgrown -overgrows -overgrowth -overhand -overhands -overhang -overhanging -overhangs -overhead -overheads -overhear -overheard -overhearing -overhears -overheat -overheated -overheating -overheats -overhung -overjoy -overjoyed -overjoying -overjoys -overmuch -overmuches -overnight -overnights -overpaid -overpass -overpasses -overpay -overpaying -overpays -overpower -overpowered -overpowering -overpowers -overprice -overpriced -overprices -overpricing -overprint -overprinted -overprinting -overprints -overproduce -overproduced -overproduces -overproducing -overproduction -overprotective -overran -overrate -overrated -overrates -overrating -overreach -overreached -overreaches -overreaching -overreact -overreacted -overreacting -overreaction -overreactions -overreacts -overridden -override -overrides -overriding -overripe -overrode -overrun -overrunning -overruns -overs -oversaw -overseas -oversee -overseeing -overseen -overseer -overseers -oversees -oversensitive -oversexed -overshadow -overshadowed -overshadowing -overshadows -overshare -overshared -overshares -oversharing -overshoe -overshoes -overshoot -overshooting -overshoots -overshot -oversight -oversights -oversize -oversized -overspend -overspending -overspends -overspent -overspread -overspreading -overspreads -overstate -overstated -overstatement -overstatements -overstates -overstating -overstay -overstayed -overstaying -overstays -overstep -overstepped -overstepping -oversteps -overstock -overstocked -overstocking -overstocks -overstuffed -overt -overtake -overtaken -overtakes -overtaking -overtax -overtaxed -overtaxes -overtaxing -overthink -overthinking -overthinks -overthought -overthrew -overthrow -overthrowing -overthrown -overthrows -overtime -overtimes -overtone -overtones -overtook -overture -overtures -overturn -overturned -overturning -overturns -overuse -overused -overuses -overusing -overview -overviews -overweening -overweight -overwork -overworked -overworking -overworks -overwrite -overwrites -overwriting -overwritten -overwrought -ovid -oviduct -oviducts -oviparous -ovoid -ovoids -ovum -owe -owed -owen -owens -owes -owing -own -owned -owner -owners -ownership -owning -owns -oxbow -oxbows -oxen -oxford -oxfords -oxidation -oxide -oxides -oxidise -oxidised -oxidiser -oxidisers -oxidises -oxidising -oxidize -oxidized -oxidizer -oxidizers -oxidizes -oxidizing -oxnard -oxonian -oxus -oxycontin -oxygen -oxygenate -oxygenated -oxygenates -oxygenating -oxygenation -oxymora -oxymoron -oxymorons -oyster -oysters -ozark -ozarks -ozone -ozymandias -ozzie -paar -pabst -pace -paced -pacemaker -pacemakers -paces -pacesetter -pacesetters -pacheco -pachyderm -pachyderms -pacific -pacification -pacified -pacifier -pacifiers -pacifies -pacifism -pacifist -pacifists -pacify -pacifying -pacing -pacino -pack -package -packaged -packages -packaging -packard -packed -packer -packers -packet -packets -packing -packs -pact -pacts -pad -padded -paddies -padding -paddock -paddocked -paddocking -paddocks -paddy -paderewski -padre -padres -pads -paean -paeans -paediatric -paediatrician -paediatricians -paediatrics -pagan -paganini -paganism -pagans -page -pageant -pageantry -pageants -paged -pager -pagers -pages -paginate -paginated -paginates -paginating -pagination -paging -pagoda -pagodas -paid -paige -pain -paine -pained -paining -pains -painstaking -paint -paintbrush -paintbrushes -painted -painter -painters -painting -paintings -paints -paintwork -pair -paired -pairing -pairs -pairwise -pajamas -pakistan -pakistani -pakistanis -pam -pamirs -pampas -pamper -pampered -pampering -pampers -pan -panacea -panaceas -panache -panama -panamanian -panamanians -panamas -panasonic -pancake -pancaked -pancakes -pancaking -panchromatic -pancreas -pancreases -pancreatic -panda -pandas -pandemic -pandemics -pandemonium -pander -pandered -panderer -panderers -pandering -panders -pandora -pane -panegyric -panegyrics -panes -pang -pangaea -pangs -panic -panicked -panicking -panicky -panics -panier -paniers -pankhurst -panmunjom -panned -pannier -panniers -panning -panorama -panoramas -panoramic -pans -pansies -pansy -pant -panted -pantheism -pantheist -pantheistic -pantheists -pantheon -pantheons -panther -panthers -pantie -panties -panting -pantomime -pantomimed -pantomimes -pantomiming -pantries -pantry -pants -pantsuit -pantsuits -panty -pantyhose -panza -pap -papa -papacies -papacy -papas -papaw -papaws -papaya -papayas -paper -paperback -paperbacks -paperboy -paperboys -papered -paperhanger -paperhangers -papering -papers -paperweight -paperweights -paperwork -papery -papoose -papooses -paprika -paps -papyri -papyrus -papyruses -par -parachute -parachuted -parachutes -parachuting -parachutist -parachutists -parade -paraded -parades -paradigm -paradigmatic -paradigms -parading -paradise -paradises -paradox -paradoxes -paraffin -paragon -paragons -paragraph -paragraphed -paragraphing -paragraphs -paraguay -paraguayan -paraguayans -parakeet -parakeets -paramaribo -paramecia -paramecium -parameciums -paramedic -paramedics -parameter -parameters -paramount -paramour -paramours -paranoia -paranoid -paranoids -parapet -parapets -paraphrase -paraphrased -paraphrases -paraphrasing -parasite -parasites -parasitic -paratrooper -paratroopers -paratroops -parch -parched -parcheesi -parches -parching -parchment -parchments -pardon -pardoned -pardoning -pardons -pare -pared -parent -parentage -parented -parentheses -parenthesis -parenthesise -parenthesised -parenthesises -parenthesising -parenthesize -parenthesized -parenthesizes -parenthesizing -parenthetic -parenthood -parenting -parents -pares -pareto -parfait -parfaits -pariah -pariahs -paring -parings -paris -parish -parishes -parishioner -parishioners -parisian -parisians -parity -park -parka -parkas -parked -parker -parking -parkinson -parkman -parkour -parks -parkway -parkways -parmesan -parmesans -parnassus -parodied -parodies -parody -parodying -paroxysm -paroxysms -parquet -parqueted -parqueting -parquetry -parquets -parr -parrakeet -parrakeets -parred -parricide -parricides -parried -parries -parring -parrish -parrot -parroted -parroting -parrots -parry -parrying -pars -parse -parsec -parsecs -parsed -parser -parses -parsi -parsimonious -parsimony -parsing -parsnip -parsnips -parson -parsonage -parsonages -parsons -part -partake -partaken -partaker -partakers -partakes -partaking -parted -parterre -parterres -parthenogenesis -parthenon -parthia -participant -participants -participate -participated -participates -participating -participation -participator -participators -participatory -partied -parties -parting -partings -partisan -partisans -partisanship -partition -partitioned -partitioning -partitions -partizan -partizans -partner -partnered -partnering -partners -partnership -partnerships -partook -partridge -partridges -parts -parturition -partway -party -partying -parvenu -parvenus -pas -pasadena -pasha -pashas -pass -passage -passages -passageway -passageways -passbook -passbooks -passed -passenger -passengers -passer -passerby -passersby -passes -passing -passion -passionate -passions -passive -passives -passivity -passkey -passkeys -passover -passovers -passport -passports -password -passwords -past -pasta -pastas -paste -pasteboard -pasted -pastern -pasternak -pasterns -pastes -pasteur -pasteurisation -pasteurise -pasteurised -pasteurises -pasteurising -pasteurization -pasteurize -pasteurized -pasteurizes -pasteurizing -pastiche -pastiches -pastier -pasties -pastiest -pastime -pastimes -pasting -pastor -pastorate -pastorates -pastors -pastrami -pastries -pastry -pasts -pasturage -pasture -pastured -pastures -pasturing -pasty -pat -patagonia -patagonian -patch -patched -patches -patchier -patchiest -patchiness -patching -patchwork -patchworks -patchy -pate -patent -patented -patenting -patents -paternity -paterson -pates -path -pathetic -pathogen -pathogenic -pathogens -pathos -paths -pathway -pathways -patience -patient -patienter -patientest -patients -patina -patinae -patinas -patine -patio -patios -patna -patois -patriarch -patriarchies -patriarchs -patriarchy -patrica -patrice -patricia -patrician -patricians -patricide -patricides -patrick -patrimonies -patrimony -patriot -patriotic -patriotism -patriots -patron -patronage -patronages -patronise -patronised -patronises -patronising -patronize -patronized -patronizes -patronizing -patrons -patronymic -patronymics -pats -patsies -patsy -patted -patter -pattered -pattering -pattern -patterned -patterning -patterns -patters -patterson -patti -patties -patting -patton -patty -paucity -paunch -paunches -paunchier -paunchiest -paunchy -pauper -pauperise -pauperised -pauperises -pauperising -pauperism -pauperize -pauperized -pauperizes -pauperizing -paupers -pause -paused -pauses -pausing -pavarotti -pave -paved -pavement -pavements -paves -paving -pavings -paw -pawed -pawing -pawn -pawnbroker -pawnbrokers -pawned -pawnee -pawning -pawns -pawnshop -pawnshops -pawpaw -pawpaws -paws -pay -paycheck -paychecks -payday -paydays -payed -payee -payees -payer -payers -paying -paymaster -paymasters -payment -payments -payne -payoff -payoffs -pays -pea -peabody -peace -peacekeeping -peacemaker -peacemakers -peaces -peacetime -peach -peaches -peacock -peacocks -peahen -peahens -peak -peaked -peaking -peaks -peanut -peanuts -pear -pears -pearson -peary -peas -peasant -peasantry -peasants -pease -peat -pecan -pecans -peccaries -peccary -pechora -peck -pecked -pecking -peckinpah -pecks -pecos -pecs -pectin -pecuniary -pedagog -pedagogic -pedagogs -pedagogue -pedagogues -pedagogy -pedant -pedantic -pedantry -pedants -pederast -pederasts -pederasty -pedestrian -pedestrianise -pedestrianised -pedestrianises -pedestrianising -pedestrianize -pedestrianized -pedestrianizes -pedestrianizing -pedestrians -pediatric -pediatrician -pediatricians -pediatrics -pediatrist -pediatrists -pedicure -pedicured -pedicures -pedicuring -pedigree -pedigreed -pedigrees -pediment -pediments -pedometer -pedometers -pedro -pee -peed -peeing -peek -peekaboo -peeked -peeking -peeks -peep -peeped -peeper -peepers -peeping -peeps -peer -peerage -peerages -peered -peering -peers -pees -peeve -peeved -peeves -peeving -peevish -peevishness -peewee -peewees -peg -pegasus -pegasuses -pegged -pegging -peggy -pegs -pei -peiping -pejorative -pejoratives -pekinese -pekineses -peking -pekingese -pekingeses -pekings -pekoe -pembroke -pen -pena -penance -penances -pence -penchant -penchants -pendant -pendants -pended -pendent -pendents -penderecki -pending -pends -penes -penetrate -penetrated -penetrates -penetrating -penetration -penetrations -penetrative -penguin -penguins -penis -penises -penitence -penitent -penitentiaries -penitentiary -penitents -penknife -penknives -penmanship -penn -pennant -pennants -penned -penney -pennies -penning -pennington -pennon -pennons -penny -pennyweight -pennyweights -pens -pension -pensioned -pensioner -pensioners -pensioning -pensions -pensive -pensiveness -pent -pentagon -pentagons -pentameter -pentameters -pentateuch -pentax -pentecost -pentecosts -penthouse -penthouses -pentium -penurious -penury -peon -peonage -peonies -peons -peony -peoria -pep -pepin -pepped -pepper -peppercorn -peppercorns -peppered -peppering -peppermint -peppermints -pepperoni -pepperonis -peppers -peppery -peppier -peppiest -pepping -peppy -peps -pepsi -pepsin -peptic -peptics -pepys -pequot -per -perceive -perceived -perceives -perceiving -percent -percentage -percentages -percents -perception -perceptions -perceptive -perceptiveness -perch -perchance -perched -percheron -perches -perching -percussion -percussionist -percussionists -percy -perdition -peregrination -peregrinations -peremptory -perez -perfect -perfected -perfecter -perfectest -perfecting -perfection -perfectionism -perfectionist -perfectionists -perfections -perfects -perfidies -perfidious -perfidy -perforate -perforated -perforates -perforating -perforation -perforations -perforce -perform -performance -performances -performed -performer -performers -performing -performs -perfume -perfumed -perfumeries -perfumery -perfumes -perfuming -perfunctory -perhaps -pericardia -pericardium -pericardiums -perigee -perigees -perimeter -perimeters -period -periodic -periodicity -periods -peripatetic -peripatetics -peripheries -periphery -periphrases -periphrasis -periscope -periscopes -perish -perished -perishes -perishing -peritonea -peritoneum -peritoneums -peritonitis -periwig -periwigs -perjure -perjured -perjurer -perjurers -perjures -perjuries -perjuring -perjury -perk -perked -perkier -perkiest -perkiness -perking -perkins -perks -perky -perm -permafrost -permanence -permanent -permanents -permeate -permeated -permeates -permeating -permed -permian -perming -permission -permissions -permissive -permissiveness -permit -permits -permitted -permitting -perms -permutation -permutations -permute -permuted -permutes -permuting -pernicious -pernod -peron -peroration -perorations -perot -peroxide -peroxided -peroxides -peroxiding -perpetrate -perpetrated -perpetrates -perpetrating -perpetration -perpetrator -perpetrators -perpetuate -perpetuated -perpetuates -perpetuating -perpetuation -perpetuity -perquisite -perquisites -perrier -perry -persecute -persecuted -persecutes -persecuting -persecution -persecutions -persecutor -persecutors -perseid -persephone -perseus -perseverance -persevere -persevered -perseveres -persevering -pershing -persia -persian -persians -persimmon -persimmons -persist -persisted -persistence -persistent -persisting -persists -persnickety -person -persona -personae -personage -personages -personification -personifications -personified -personifies -personify -personifying -persons -perspective -perspectives -perspicacious -perspicacity -perspicuity -perspicuous -perspiration -perspire -perspired -perspires -perspiring -persuade -persuaded -persuades -persuading -persuasion -persuasions -persuasive -persuasiveness -pert -pertain -pertained -pertaining -pertains -perter -pertest -perth -pertinacious -pertinacity -pertinence -pertinent -pertness -perturb -perturbation -perturbations -perturbed -perturbing -perturbs -peru -peruse -perused -peruses -perusing -peruvian -peruvians -pervade -pervaded -pervades -pervading -pervasive -perverse -perverseness -perversion -perversions -perversity -pervert -perverted -perverting -perverts -peseta -pesetas -peshawar -peskier -peskiest -pesky -peso -pesos -pessimism -pessimist -pessimistic -pessimists -pest -pester -pestered -pestering -pesters -pesticide -pesticides -pests -pet -petard -petards -pete -peter -petered -petering -peters -petersen -peterson -petite -petites -petition -petitioned -petitioner -petitioners -petitioning -petitions -petra -petrarch -petrifaction -petrified -petrifies -petrify -petrifying -pets -petted -petticoat -petticoats -pettier -pettiest -pettifog -pettifogged -pettifogger -pettifoggers -pettifogging -pettifogs -pettiness -petting -petty -petunia -petunias -peugeot -pew -pewee -pewees -pews -pewter -pewters -peyote -pfizer -phaedra -phaethon -phanerozoic -phantasied -phantasies -phantasm -phantasmagoria -phantasmagorias -phantasms -phantasy -phantasying -phantom -phantoms -pharaoh -pharaohs -pharisee -pharisees -pharmacies -pharmacist -pharmacists -pharmacopeia -pharmacopeias -pharmacopoeia -pharmacopoeias -pharmacy -pharynges -pharynx -pharynxes -phase -phased -phases -phasing -pheasant -pheasants -phekda -phenomena -phenomenon -phenomenons -phenotype -pheromone -pheromones -phidias -phipps -phish -phished -phisher -phishers -phishing -phobia -phobias -phobic -phobics -phobos -phoebe -phoebes -phoenicia -phoenix -phoenixes -phone -phoned -phoneme -phonemes -phonemic -phones -phonetic -phonetician -phoneticians -phonetics -phoney -phoneyed -phoneying -phoneys -phonic -phonics -phonied -phonier -phonies -phoniest -phoniness -phoning -phonograph -phonographs -phony -phonying -phooey -phosphate -phosphates -phosphor -phosphorescence -phosphorescent -phosphoric -phosphors -phosphorus -photo -photocopied -photocopier -photocopiers -photocopies -photocopy -photocopying -photoed -photogenic -photograph -photographed -photographer -photographers -photographic -photographing -photographs -photography -photoing -photon -photons -photos -photosensitive -photostat -photostats -photostatted -photostatting -photosynthesis -phototypesetter -phototypesetting -phrase -phrased -phrases -phrasing -phrasings -phrygia -physic -physician -physicians -physicist -physicists -physicked -physicking -physics -physiognomies -physiognomy -physiotherapist -physiotherapists -physiotherapy -physique -physiques -piaf -piaget -pianissimi -pianissimo -pianissimos -pianist -pianists -piano -pianoforte -pianofortes -pianos -piazza -piazzas -piazze -pica -picante -picaresque -picasso -picayune -pick -pickaback -pickabacked -pickabacking -pickabacks -pickax -pickaxe -pickaxed -pickaxes -pickaxing -picked -picker -pickering -pickers -picket -picketed -picketing -pickets -pickett -pickford -pickier -pickiest -picking -pickings -pickpocket -pickpockets -picks -pickup -pickups -pickwick -picky -picnic -picnicked -picnicker -picnickers -picnicking -picnics -pict -pictograph -pictographs -picture -pictured -pictures -picturesque -picturing -pidgin -pidgins -pie -piece -pieced -pieces -piecework -piecing -pied -piedmont -pieing -pier -pierce -pierced -pierces -piercing -piercings -pierre -pierrot -piers -pies -piety -pig -pigeon -pigeons -pigged -piggier -piggies -piggiest -pigging -piggish -piggishness -piggy -piggyback -piggybacked -piggybacking -piggybacks -pigheaded -pigment -pigmentation -pigments -pigmies -pigmy -pigpen -pigpens -pigs -pigskin -pigskins -pigsties -pigsty -piing -pike -piked -piker -pikers -pikes -piking -pimento -pimentos -pimiento -pimientos -pimp -pimped -pimping -pimps -pin -pinafore -pinafores -pinatubo -pincer -pincers -pinch -pinched -pinches -pinching -pincus -pincushion -pincushions -pindar -pine -pined -pines -pinfeather -pinfeathers -ping -pinged -pinging -pings -pinhead -pinheads -pining -pinion -pinioned -pinioning -pinions -pink -pinked -pinker -pinkerton -pinkest -pinkeye -pinkie -pinkies -pinking -pinkish -pinks -pinky -pinnate -pinned -pinning -pinocchio -pinochet -pinpoint -pinpointed -pinpointing -pinpoints -pinprick -pinpricks -pins -pinstripe -pinstriped -pinstripes -pint -pinter -pinto -pintoes -pintos -pints -pinup -pinups -pioneer -pioneered -pioneering -pioneers -pious -pip -pipe -piped -piper -pipers -pipes -piping -pipit -pipits -pipped -pippin -pipping -pippins -pips -pipsqueak -pipsqueaks -piquancy -piquant -pique -piqued -piques -piquing -piracy -piraeus -piranha -piranhas -pirate -pirated -pirates -pirating -pirouette -pirouetted -pirouettes -pirouetting -pis -pisa -pisces -pisistratus -piss -pissaro -pissed -pisses -pissing -pistachio -pistachios -piston -pistons -pit -pita -pitcairn -pitch -pitched -pitcher -pitchers -pitches -pitchfork -pitchforked -pitchforking -pitchforks -pitching -pitchman -pitchmen -piteous -pith -pithier -pithiest -pithy -pitied -pities -piton -pitons -pits -pitt -pittance -pittances -pitted -pitting -pittman -pitts -pittsburgh -pituitaries -pituitary -pity -pitying -pius -pivot -pivoted -pivoting -pivots -pixie -pixies -pixy -pizarro -pizazz -pizza -pizzas -pizzazz -pizzeria -pizzerias -pizzicati -pizzicato -pizzicatos -pneumatic -pneumonia -poach -poached -poacher -poachers -poaches -poaching -pocahontas -pock -pocked -pocket -pocketbook -pocketbooks -pocketed -pocketing -pocketknife -pocketknives -pockets -pocking -pockmark -pockmarked -pockmarking -pockmarks -pocks -pocono -poconos -pod -podcast -podcasting -podcasts -podded -podding -podgorica -podhoretz -podia -podiatrist -podiatrists -podiatry -podium -podiums -pods -podunk -poe -poem -poems -poesy -poet -poetess -poetesses -poetic -poetry -poets -pogo -pogrom -pogroms -poi -poignancy -poignant -poinsettia -poinsettias -point -pointed -pointer -pointers -pointier -pointiest -pointing -points -pointy -poiret -poirot -poise -poised -poises -poising -poison -poisoned -poisoner -poisoners -poisoning -poisonings -poisonous -poisons -poisson -poitier -poke -poked -poker -pokers -pokes -pokey -pokeys -pokier -pokiest -poking -poky -pomade -pomaded -pomades -pomading -pomegranate -pomegranates -pomerania -pomeranian -pomona -pomp -pompadour -pompadoured -pompadours -pompeii -pompey -pompom -pompoms -pompon -pompons -pomposity -pompous -pompousness -ponce -poncho -ponchos -pond -ponder -pondered -pondering -ponderous -ponders -ponds -pone -pones -poniard -poniards -ponies -pontchartrain -pontiac -pontianak -pontiff -pontiffs -pontificate -pontificated -pontificates -pontificating -pontoon -pontoons -pony -pooch -pooched -pooches -pooching -pooh -poohed -poohing -poohs -poona -poop -pooped -pooping -poops -poor -poorer -poorest -poorhouse -poorhouses -pop -popcorn -pope -popes -popeye -popgun -popguns -popinjay -popinjays -popover -popovers -poppa -poppas -popped -popper -poppies -popping -poppins -poppy -poppycock -pops -porch -porches -porcine -porcupine -porcupines -pore -pored -pores -porfirio -poring -pork -porn -porno -pornographer -pornographers -pornographic -pornography -porosity -porous -porphyry -porpoise -porpoised -porpoises -porpoising -porridge -porrima -porringer -porringers -porsche -port -portage -portaged -portages -portaging -ported -portend -portended -portending -portends -portent -portentous -portents -porter -porterhouse -porterhouses -porters -portia -portico -porticoes -porticos -porting -portion -portioned -portioning -portions -portmanteau -portmanteaus -portmanteaux -portrait -portraitist -portraitists -portraits -portraiture -portray -portrayed -portraying -portrays -ports -portsmouth -portuguese -pose -posed -poseidon -poser -posers -poses -poseur -poseurs -posh -posher -poshest -posies -posing -posit -posited -positing -position -positioned -positioning -positions -positive -positives -positivism -positron -positrons -posits -posse -posses -possess -possessed -possesses -possessing -possession -possessions -possessive -possessiveness -possessives -possessor -possessors -possum -possums -post -postage -postbox -postcard -postcards -postcode -postcodes -postdate -postdated -postdates -postdating -postdoc -posted -poster -posterior -posteriors -posterity -posters -postgraduate -postgraduates -posthaste -posthumous -posting -postman -postmark -postmarked -postmarking -postmarks -postmaster -postmasters -postmen -postmistress -postmistresses -postmodern -postmortem -postmortems -postoperative -postpaid -postpartum -postpone -postponed -postponement -postponements -postpones -postponing -posts -postscript -postscripts -posture -postured -postures -posturing -postwar -posy -pot -potash -potassium -potato -potatoes -potemkin -potency -potent -potentate -potentates -pothook -pothooks -potion -potions -potomac -potpie -potpies -potpourri -potpourris -pots -potsdam -potsherd -potsherds -potshot -potshots -pottage -pottawatomie -potted -potter -pottered -potteries -pottering -potters -pottery -pottier -potties -pottiest -potting -potts -potty -pouch -pouched -pouches -pouching -pounce -pounced -pounces -pouncing -pound -pounded -pounding -pounds -pour -poured -pouring -pours -poussin -pout -pouted -pouting -pouts -poverty -powder -powdered -powdering -powders -powdery -power -powerboat -powerboats -powered -powerhouse -powerhouses -powering -powerpc -powerpoint -powers -powhatan -powwow -powwowed -powwowing -powwows -pox -poxes -poznan -practice -practiced -practices -practicing -practise -practised -practises -practising -practitioner -practitioners -prada -prado -praetorian -pragmatic -pragmatics -pragmatism -pragmatist -pragmatists -prague -praia -prairie -prairies -praise -praised -praises -praiseworthiness -praiseworthy -praising -prakrit -pram -prance -pranced -prancer -prancers -prances -prancing -prank -pranks -prankster -pranksters -pratchett -prate -prated -prates -prating -pratt -pravda -prawn -prawned -prawning -prawns -pray -prayed -prayer -prayers -praying -prays -preach -preached -preacher -preachers -preaches -preachier -preachiest -preaching -preachy -preakness -prearrange -prearranged -prearrangement -prearranges -prearranging -precambrian -precarious -precaution -precautionary -precautions -precede -preceded -precedence -precedent -precedents -precedes -preceding -precept -preceptor -preceptors -precepts -precinct -precincts -preciosity -precious -preciousness -precipice -precipices -precipitant -precipitants -precipitate -precipitated -precipitates -precipitating -precipitation -precipitations -precipitous -precise -preciseness -preciser -precises -precisest -precision -precocious -precociousness -precocity -precognition -preconceive -preconceived -preconceives -preconceiving -preconception -preconceptions -precondition -preconditioned -preconditioning -preconditions -precursor -precursors -predate -predated -predates -predating -predator -predators -predatory -predecease -predeceased -predeceases -predeceasing -predecessor -predecessors -predefined -predestination -predestine -predestined -predestines -predestining -predetermination -predetermine -predetermined -predetermines -predetermining -predicament -predicaments -predicate -predicated -predicates -predicating -predication -predicative -predict -predicted -predicting -prediction -predictions -predictive -predictor -predicts -predispose -predisposed -predisposes -predisposing -predisposition -predispositions -predominance -predominant -predominate -predominated -predominates -predominating -preeminence -preeminent -preempt -preempted -preempting -preemption -preemptive -preempts -preen -preened -preening -preens -preexist -preexisted -preexisting -preexists -prefab -prefabbed -prefabbing -prefabricate -prefabricated -prefabricates -prefabricating -prefabrication -prefabs -preface -prefaced -prefaces -prefacing -prefatory -prefect -prefects -prefecture -prefectures -prefer -preference -preferences -preferment -preferred -preferring -prefers -prefigure -prefigured -prefigures -prefiguring -prefix -prefixed -prefixes -prefixing -pregnancies -pregnancy -pregnant -preheat -preheated -preheating -preheats -prehistoric -prehistory -prejudge -prejudged -prejudgement -prejudgements -prejudges -prejudging -prejudgment -prejudgments -prejudice -prejudiced -prejudices -prejudicing -premature -premeditate -premeditated -premeditates -premeditating -premeditation -premier -premiere -premiered -premieres -premiering -premiers -preminger -premise -premised -premises -premising -premiss -premisses -premium -premiums -premonition -premonitions -premonitory -prensa -prentice -prenup -prenups -preoccupation -preoccupations -preoccupied -preoccupies -preoccupy -preoccupying -preordain -preordained -preordaining -preordains -prep -prepackage -prepackaged -prepackages -prepackaging -prepaid -preparation -preparations -preparatory -prepare -prepared -preparedness -prepares -preparing -prepay -prepaying -prepayment -prepayments -prepays -preponderance -preponderances -preponderant -preponderate -preponderated -preponderates -preponderating -preposition -prepositions -prepossess -prepossessed -prepossesses -prepossessing -preposterous -prepped -preppie -preppier -preppies -preppiest -prepping -preppy -preps -prerecord -prerecorded -prerecording -prerecords -preregister -preregistered -preregistering -preregisters -preregistration -prerequisite -prerequisites -prerogative -prerogatives -presage -presaged -presages -presaging -presbyterian -presbyterianism -presbyterians -prescience -prescient -prescott -prescribe -prescribed -prescribes -prescribing -prescription -prescriptions -prescriptive -presence -presences -present -presentation -presentations -presented -presenter -presentiment -presentiments -presenting -presents -preservation -preservative -preservatives -preserve -preserved -preserver -preservers -preserves -preserving -preset -presets -presetting -preshrank -preshrink -preshrinking -preshrinks -preshrunk -preshrunken -preside -presided -presidencies -presidency -president -presidents -presides -presiding -press -pressed -presses -pressing -pressings -pressman -pressmen -pressure -pressured -pressures -pressuring -pressurisation -pressurise -pressurised -pressurises -pressurising -pressurization -pressurize -pressurized -pressurizes -pressurizing -prestige -prestigious -presto -preston -prestos -presume -presumed -presumes -presuming -presumption -presumptions -presumptive -presumptuous -presumptuousness -presuppose -presupposed -presupposes -presupposing -presupposition -presuppositions -preteen -preteens -pretence -pretences -pretend -pretended -pretender -pretenders -pretending -pretends -pretense -pretenses -pretension -pretensions -pretentious -pretentiousness -preterit -preterite -preterites -preterits -pretext -pretexts -pretoria -prettied -prettier -pretties -prettiest -prettified -prettifies -prettify -prettifying -prettiness -pretty -prettying -prevaricate -prevaricated -prevaricates -prevaricating -prevarication -prevarications -prevaricator -prevaricators -prevent -preventative -preventatives -prevented -preventing -prevention -preventive -preventives -prevents -preview -previewed -previewer -previewers -previewing -previews -previous -prevue -prevues -prewar -prey -preyed -preying -preys -priam -price -priced -prices -pricey -pricier -priciest -pricing -prick -pricked -pricking -pricks -pricy -pride -prided -prides -priding -pried -pries -priest -priestess -priestesses -priesthood -priesthoods -priests -prig -priggish -prigs -prim -primacy -primaries -primary -primate -primates -prime -primed -primer -primers -primes -priming -primitive -primitives -primmer -primmest -primness -primogeniture -primp -primped -primping -primps -primrose -primroses -prince -princes -princess -princesses -princeton -principe -print -printed -printer -printers -printing -printings -printout -printouts -prints -prior -prioress -prioresses -priories -priorities -prioritise -prioritised -prioritises -prioritising -prioritize -prioritized -prioritizes -prioritizing -priority -priors -priory -prise -prised -prises -prising -prism -prismatic -prisms -prison -prisoner -prisoners -prisons -prissier -prissiest -prissiness -prissy -pristine -prithee -prius -privacy -private -privateer -privateers -privater -privates -privatest -privation -privations -privatisation -privatisations -privatise -privatised -privatises -privatising -privatization -privatizations -privatize -privatized -privatizes -privatizing -privet -privets -privier -privies -priviest -privy -prize -prized -prizefight -prizefighter -prizefighters -prizefighting -prizefights -prizes -prizing -pro -proactive -probate -probated -probates -probating -probation -probationary -probationer -probationers -probe -probed -probes -probing -probity -proboscides -proboscis -proboscises -procedure -procedures -proceed -proceeded -proceeding -proceedings -proceeds -process -processed -processes -processing -procession -processioned -processioning -processions -processor -processors -procrastinate -procrastinated -procrastinates -procrastinating -procrastination -procrastinator -procrastinators -procreate -procreated -procreates -procreating -procreation -procreative -procrustean -procrustes -procter -proctor -proctored -proctoring -proctors -procurator -procurators -procure -procured -procurement -procurer -procurers -procures -procuring -procyon -prod -prodded -prodding -prodigies -prodigious -prodigy -prods -produce -produced -producer -producers -produces -producing -product -production -productions -productive -productiveness -productivity -products -prof -profanation -profanations -profane -profaned -profanes -profaning -profanities -profanity -profess -professed -professes -professing -profession -professions -professor -professors -professorship -professorships -proffer -proffered -proffering -proffers -proficiency -proficient -proficients -profit -profited -profiteer -profiteered -profiteering -profiteers -profiting -profits -proforma -profound -profounder -profoundest -profs -profundities -profundity -profuse -profusion -profusions -progenitor -progenitors -progeny -progesterone -prognoses -prognosis -prognostic -prognosticate -prognosticated -prognosticates -prognosticating -prognostication -prognostications -prognosticator -prognosticators -prognostics -program -programed -programer -programers -programing -programme -programmed -programmer -programmers -programmes -programming -programs -progress -progressed -progresses -progressing -progression -progressions -progressive -progressives -prohibit -prohibited -prohibiting -prohibition -prohibitionist -prohibitionists -prohibitions -prohibitive -prohibitory -prohibits -project -projected -projecting -projection -projectionist -projectionists -projections -projector -projectors -projects -prokofiev -prom -promenade -promenaded -promenades -promenading -promethean -prometheus -prominence -prominent -promiscuity -promiscuous -promise -promised -promises -promising -promissory -promo -promontories -promontory -promos -promote -promoted -promoter -promoters -promotes -promoting -promotion -promotions -prompt -prompted -prompter -prompters -promptest -prompting -promptings -promptness -prompts -proms -prone -proneness -prong -pronged -pronghorn -pronghorns -prongs -pronoun -pronounce -pronounced -pronouncement -pronouncements -pronounces -pronouncing -pronouns -pronto -pronunciation -pronunciations -proof -proofed -proofing -proofread -proofreader -proofreaders -proofreading -proofreads -proofs -prop -propaganda -propagandise -propagandised -propagandises -propagandising -propagandist -propagandists -propagandize -propagandized -propagandizes -propagandizing -propagate -propagated -propagates -propagating -propagation -propane -propensities -propensity -proper -properer -properest -propertied -properties -property -prophecies -prophecy -prophesied -prophesies -prophesy -prophesying -prophet -prophetess -prophetesses -prophetic -prophets -propinquity -propitiate -propitiated -propitiates -propitiating -propitiation -propitiatory -propitious -proponent -proponents -proportion -proportionate -proportioned -proportioning -proportions -propose -proposed -proposer -proposes -proposing -proposition -propositioned -propositioning -propositions -propound -propounded -propounding -propounds -propped -propping -proprietaries -proprietary -proprietor -proprietors -proprietorship -proprietress -proprietresses -propriety -props -prorate -prorated -prorates -prorating -pros -prosaic -proscenia -proscenium -prosceniums -proscribe -proscribed -proscribes -proscribing -proscription -proscriptions -prose -prosecute -prosecuted -prosecutes -prosecuting -prosecution -prosecutions -prosecutor -prosecutors -proserpine -prosier -prosiest -prosodies -prosody -prospect -prospected -prospecting -prospective -prospector -prospectors -prospects -prospectus -prospectuses -prosper -prospered -prospering -prosperity -prosperous -prospers -prostate -prostates -prostheses -prosthesis -prosthetic -prostitute -prostituted -prostitutes -prostituting -prostitution -prostrate -prostrated -prostrates -prostrating -prostration -prostrations -prosy -protagonist -protagonists -protagoras -protean -protect -protected -protecting -protection -protections -protective -protectiveness -protector -protectorate -protectorates -protectors -protects -protein -proteins -proterozoic -protest -protestant -protestantism -protestantisms -protestants -protestation -protestations -protested -protester -protesters -protesting -protestor -protestors -protests -proteus -proton -protons -prototype -prototypes -prototyping -protozoa -protozoan -protozoans -protozoon -protract -protracted -protracting -protraction -protractor -protractors -protracts -protrude -protruded -protrudes -protruding -protrusion -protrusions -protuberance -protuberances -protuberant -proud -prouder -proudest -proudhon -proust -prove -proved -proven -provenance -provence -provender -proverb -proverbs -proves -provide -provided -providence -providences -provident -provider -providers -provides -providing -province -provinces -proving -provision -provisioned -provisioning -provisions -proviso -provisoes -provisos -provo -provocation -provocations -provocative -provoke -provoked -provokes -provoking -provost -provosts -prow -prowess -prows -proxies -proximity -proxy -prozac -prude -prudence -prudent -prudery -prudes -prudish -pruitt -prune -pruned -prunes -pruning -prurience -prurient -prussia -prussian -prut -pry -prying -pryor -pseudo -pseudonym -pseudonyms -pshaw -pshaws -psoriasis -psst -psych -psyche -psyched -psyches -psychiatric -psychiatrist -psychiatrists -psychiatry -psychic -psychics -psyching -psycho -psychogenic -psychokinesis -psychopath -psychopathic -psychopaths -psychos -psychoses -psychosis -psychosomatic -psychotherapies -psychotherapist -psychotherapists -psychotherapy -psychotic -psychotics -psychs -ptah -ptarmigan -ptarmigans -ptomaine -ptomaines -pub -puberty -pubescence -pubescent -pubic -pubs -puccini -puck -pucker -puckered -puckering -puckers -puckett -puckish -pucks -pudding -puddings -pudgier -pudgiest -pudgy -puerto -puff -puffed -puffer -puffier -puffiest -puffin -puffiness -puffing -puffins -puffs -puffy -pug -puget -pugh -pugnacious -pugnacity -pugs -puke -puked -pukes -puking -puma -pumas -pumice -pumices -pump -pumped -pumper -pumpers -pumping -pumpkin -pumpkins -pumps -pun -punch -punched -punches -punchier -punchiest -punching -punchy -punctuate -punctuated -punctuates -punctuating -punctuation -puncture -punctured -punctures -puncturing -pundit -pundits -pungency -pungent -punic -punier -puniest -punish -punished -punishes -punishing -punishment -punishments -punitive -punjab -punjabi -punk -punker -punkest -punks -punned -punning -puns -punster -punsters -punt -punted -punter -punters -punting -punts -puny -pup -pupa -pupae -pupas -pupped -puppet -puppeteer -puppeteers -puppetry -puppets -puppies -pupping -puppy -pups -purana -purchase -purchased -purchaser -purchasers -purchases -purchasing -purdue -pure -purebred -purebreds -puree -pureed -pureeing -purees -pureness -purer -purest -purgative -purgatives -purgatories -purgatory -purge -purged -purges -purging -purification -purified -purifier -purifiers -purifies -purify -purifying -purim -purims -purina -purism -purist -purists -puritan -puritanism -puritanisms -puritans -purity -purport -purported -purporting -purports -purpose -purposed -purposes -purposing -purr -purred -purring -purrs -purse -pursed -purser -pursers -purses -pursing -pursuance -pursuant -pursue -pursued -pursuer -pursuers -pursues -pursuing -pursuit -pursuits -purus -purvey -purveyed -purveying -purveyor -purveyors -purveys -purview -pus -pusan -pusey -push -pushcart -pushcarts -pushed -pusher -pushers -pushes -pushier -pushiest -pushiness -pushing -pushkin -pushover -pushovers -pushtu -pushup -pushups -pushy -puss -pusses -pussier -pussies -pussiest -pussy -pussycat -pussycats -pussyfoot -pussyfooted -pussyfooting -pussyfoots -put -putative -putin -putnam -putrefaction -putrefied -putrefies -putrefy -putrefying -putrescence -putrescent -putrid -puts -putsch -putsches -putt -putted -putter -puttered -puttering -putters -puttied -putties -putting -putts -putty -puttying -puzo -pwn -pwned -pwning -pwns -pygmies -pygmy -pyjamas -pym -pynchon -pyongyang -pyorrhea -pyorrhoea -pyotr -pyramid -pyramided -pyramiding -pyramids -pyre -pyrenees -pyres -pyrex -pyrexes -pyrite -pyromania -pyromaniac -pyromaniacs -pyrotechnic -pyrotechnics -pyrrhic -pythagoras -pythagorean -pythias -python -pythons -pyx -pyxes -qaddafi -qantas -qatar -qingdao -qiqihar -qom -qua -quack -quacked -quackery -quacking -quacks -quad -quadrant -quadrants -quadraphonic -quadratic -quadrature -quadriceps -quadricepses -quadriphonic -quadruped -quadrupeds -quads -quaff -quaffed -quaffing -quaffs -quagmire -quagmires -quahaug -quahaugs -quahog -quahogs -quaint -quainter -quaintest -quaintness -quake -quaked -quaker -quakers -quakes -quaking -quandaries -quandary -quanta -quantified -quantifier -quantifiers -quantifies -quantify -quantifying -quantitative -quantities -quantity -quantum -quaoar -quarantine -quarantined -quarantines -quarantining -quark -quarks -quarried -quarries -quarry -quarrying -quart -quarter -quarterback -quarterbacked -quarterbacking -quarterbacks -quarterdeck -quarterdecks -quartered -quartering -quartermaster -quartermasters -quarters -quartet -quartets -quartette -quartettes -quarto -quartos -quarts -quartz -quasar -quasars -quash -quashed -quashes -quashing -quasi -quasimodo -quaternary -quatrain -quatrains -quaver -quavered -quavering -quavers -quavery -quay -quays -queasier -queasiest -queasiness -queasy -quebec -quechua -queen -queened -queening -queens -queer -queered -queerer -queerest -queering -queerness -queers -quench -quenched -quenches -quenching -quentin -queried -queries -query -querying -quest -quested -questing -question -questioned -questioner -questioners -questioning -questionnaire -questionnaires -questions -quests -queue -queued -queueing -queues -queuing -quezon -quiche -quiches -quick -quicken -quickened -quickening -quickens -quicker -quickest -quickie -quickies -quickness -quicksand -quicksands -quid -quids -quiescence -quiescent -quiet -quieted -quieter -quietest -quieting -quietness -quiets -quietude -quietus -quietuses -quince -quinces -quincy -quinine -quinn -quintessence -quintessences -quintet -quintets -quinton -quip -quipped -quipping -quips -quire -quires -quirk -quirked -quirkier -quirkiest -quirking -quirks -quirky -quit -quite -quito -quits -quitted -quitter -quitters -quitting -quiver -quivered -quivering -quivers -quixote -quixotic -quixotism -quiz -quizzed -quizzes -quizzing -qumran -quoit -quoited -quoiting -quoits -quondam -quonset -quorum -quorums -quota -quotas -quotation -quotations -quote -quoted -quotes -quoth -quotidian -quotient -quotients -quoting -quran -rabat -rabbi -rabbinate -rabbis -rabbit -rabbited -rabbiting -rabbits -rabid -rabies -rabin -raccoon -raccoons -race -racecourse -racecourses -raced -racehorse -racehorses -raceme -racemes -racer -racers -races -racetrack -racetracks -raceway -raceways -rachmaninoff -racier -raciest -racine -raciness -racing -racism -racist -racists -rack -racked -racket -racketed -racketeer -racketeered -racketeering -racketeers -racketing -rackets -racking -racks -raconteur -raconteurs -racoon -racoons -racquet -racquets -racy -radar -radars -radiance -radiant -radiate -radiated -radiates -radiating -radiation -radiations -radiator -radiators -radii -radio -radioactive -radioactivity -radioed -radiogram -radiograms -radioing -radioisotope -radioisotopes -radios -radiotherapist -radiotherapists -radiotherapy -radish -radishes -radium -radius -radiuses -radon -rae -raffia -raffish -raft -rafted -rafter -rafters -rafting -rafts -rag -raga -ragamuffin -ragamuffins -ragas -rage -raged -rages -ragged -raggeder -raggedest -raggedier -raggediest -raggedness -raggedy -ragging -raging -ragout -ragouts -rags -ragtag -ragtags -ragtime -ragweed -raid -raided -raider -raiders -raiding -raids -raiment -rain -rainbow -rainbows -raincoat -raincoats -raindrop -raindrops -rained -rainforest -rainier -rainiest -raining -rainmaker -rainmakers -rains -rainstorm -rainstorms -rainwater -rainy -raise -raised -raises -raisin -raising -raisins -raja -rajah -rajahs -rajas -rake -raked -rakes -raking -rakish -rakishness -ram -rama -ramada -ramadan -ramadans -ramakrishna -ramanujan -ramayana -rambo -rambunctious -rambunctiousness -ramification -ramifications -ramified -ramifies -ramify -ramifying -ramirez -ramiro -rammed -ramming -ramon -ramona -ramos -ramp -rampage -rampaged -rampages -rampaging -rampant -rampart -ramparts -ramps -ramrod -ramrodded -ramrodding -ramrods -rams -ramsay -ramses -ramsey -ran -ranch -ranched -rancher -ranchers -ranches -ranching -rancid -rancidity -rancor -rancorous -rancour -rand -randi -randier -randiest -random -randomise -randomised -randomises -randomising -randomize -randomized -randomizes -randomizing -randomness -randy -rang -range -ranged -ranger -rangers -ranges -rangier -rangiest -ranginess -ranging -rangoon -rangy -rank -ranked -ranker -rankest -rankin -rankine -ranking -rankings -rankness -ranks -ransack -ransacked -ransacking -ransacks -ransom -ransomed -ransoming -ransoms -rant -ranted -ranter -ranting -rants -rap -rapacious -rapaciousness -rapacity -rape -raped -rapes -rapid -rapider -rapidest -rapidity -rapids -rapier -rapiers -rapine -raping -rapist -rapists -rapped -rapper -rappers -rapping -rapport -rapports -rapprochement -rapprochements -raps -rapt -rapture -raptures -rapturous -rare -rared -rarefied -rarefies -rarefy -rarefying -rareness -rarer -rares -rarest -raring -rarities -rarity -rash -rasher -rashers -rashes -rashest -rashness -rasmussen -rasp -raspberries -raspberry -rasped -raspier -raspiest -rasping -rasps -rasputin -raspy -rasta -rastaban -rastafarian -rastafarianism -raster -rat -ratchet -ratcheted -ratcheting -ratchets -rate -rated -rates -rather -ratification -ratified -ratifies -ratify -ratifying -rating -ratings -ratio -ration -rationed -rationing -rations -ratios -rats -rattan -rattans -ratted -rattier -rattiest -ratting -rattrap -rattraps -ratty -raucous -raucousness -raunchier -raunchiest -raunchiness -raunchy -ravage -ravaged -ravages -ravaging -rave -raved -raven -ravened -ravening -ravenous -ravens -raves -ravine -ravines -raving -ravings -ravish -ravished -ravishes -ravishing -ravishment -raw -rawboned -rawer -rawest -rawhide -rawness -ray -rayban -rayburn -raymond -raymundo -rayon -rays -raze -razed -razes -razing -razor -razors -razz -razzed -razzes -razzing -rca -reach -reached -reaches -reaching -react -reacted -reacting -reaction -reactionaries -reactionary -reactions -reactivate -reactivated -reactivates -reactivating -reactivation -reactive -reactor -reactors -reacts -read -reader -readers -readership -readerships -readied -readier -readies -readiest -readiness -reading -readings -readjust -readjusted -readjusting -readjustment -readjustments -readjusts -readmit -readmits -readmitted -readmitting -readout -readouts -reads -ready -readying -reaffirm -reaffirmed -reaffirming -reaffirms -reagan -reaganomics -reagent -reagents -ream -reamed -reamer -reamers -reaming -reams -reanimate -reanimated -reanimates -reanimating -reap -reaped -reaper -reapers -reaping -reappear -reappearance -reappearances -reappeared -reappearing -reappears -reappoint -reappointed -reappointing -reappointment -reappoints -reapportion -reapportioned -reapportioning -reapportionment -reapportions -reappraise -reappraised -reappraises -reappraising -reaps -rear -reared -rearing -rearm -rearmament -rearmed -rearming -rearmost -rearms -rearrange -rearranged -rearrangement -rearrangements -rearranges -rearranging -rears -rearward -rearwards -reason -reasoned -reasoner -reasoning -reasons -reassert -reasserted -reasserting -reasserts -reassess -reassessed -reassesses -reassessing -reassessment -reassessments -reassign -reassigned -reassigning -reassigns -reassurance -reassurances -reassure -reassured -reassures -reassuring -reawaken -reawakened -reawakening -reawakens -reba -rebate -rebated -rebates -rebating -rebecca -rebekah -rebind -rebinding -rebinds -rebirth -rebirths -reborn -rebound -rebounded -rebounding -rebounds -rebroadcast -rebroadcasted -rebroadcasting -rebroadcasts -rebuff -rebuffed -rebuffing -rebuffs -rebuke -rebuked -rebukes -rebuking -rebus -rebuses -rebut -rebuts -rebutted -rebutting -recant -recantation -recantations -recanted -recanting -recants -recap -recapped -recapping -recaps -recapture -recaptured -recaptures -recapturing -recast -recasting -recasts -recede -receded -recedes -receding -receipt -receipted -receipting -receipts -receive -received -receiver -receivers -receivership -receives -receiving -recent -recenter -recentest -reception -receptionist -receptionists -receptions -receptive -receptiveness -receptivity -receptor -receptors -recess -recessed -recesses -recessing -recession -recessions -recessive -recessives -recharge -recharged -recharges -recharging -recheck -rechecked -rechecking -rechecks -recidivism -recidivist -recidivists -recife -recipe -recipes -recipient -recipients -reciprocate -reciprocated -reciprocates -reciprocating -reciprocation -reciprocity -recitation -recitations -recitative -recitatives -recite -recited -recites -reciting -reckon -reckoned -reckoning -reckonings -reckons -recognisance -recognise -recognised -recogniser -recognises -recognising -recognition -recognizance -recognize -recognized -recognizer -recognizes -recognizing -recombination -recombine -recombined -recombines -recombining -recommence -recommenced -recommences -recommencing -recommend -recommendation -recommendations -recommended -recommending -recommends -recompense -recompensed -recompenses -recompensing -recondite -recondition -reconditioned -reconditioning -reconditions -reconfiguration -reconfigure -reconfigured -reconnaissance -reconnaissances -reconnect -reconnected -reconnecting -reconnects -reconnoiter -reconnoitered -reconnoitering -reconnoiters -reconnoitre -reconnoitred -reconnoitres -reconnoitring -reconquer -reconquered -reconquering -reconquers -reconsider -reconsideration -reconsidered -reconsidering -reconsiders -reconstitute -reconstituted -reconstitutes -reconstituting -reconstruct -reconstructed -reconstructing -reconstruction -reconstructions -reconstructs -reconvene -reconvened -reconvenes -reconvening -recopied -recopies -recopy -recopying -record -recorded -recorder -recorders -recording -recordings -records -recount -recounted -recounting -recounts -recoup -recouped -recouping -recoups -recourse -recover -recovered -recoveries -recovering -recovers -recovery -recreant -recreants -recreate -recreated -recreates -recreating -recreation -recreations -recriminate -recriminated -recriminates -recriminating -recrimination -recriminations -recrudescence -recruit -recruited -recruiter -recruiters -recruiting -recruitment -recruits -recta -rectification -rectifications -rectified -rectifier -rectifiers -rectifies -rectify -rectifying -rectitude -rector -rectories -rectors -rectory -rectum -rectums -recumbent -recuperate -recuperated -recuperates -recuperating -recuperation -recuperative -recur -recurred -recurrence -recurrences -recurrent -recurring -recurs -recursion -recursive -red -redbreast -redbreasts -redcap -redcaps -redcoat -redcoats -redden -reddened -reddening -reddens -redder -reddest -reddish -redecorate -redecorated -redecorates -redecorating -rededicate -rededicated -rededicates -rededicating -redeem -redeemed -redeemer -redeemers -redeeming -redeems -redefine -redefined -redefines -redefining -redefinition -redemption -redesign -redesigned -redesigning -redesigns -redford -redgrave -redhead -redheaded -redheads -redid -redirect -redirected -redirecting -redirection -redirects -rediscover -rediscovered -rediscovering -rediscovers -rediscovery -redistribute -redistributed -redistributes -redistributing -redistribution -redistributor -redistributors -redistrict -redistricted -redistricting -redistricts -redmond -redneck -rednecks -redness -redo -redoes -redoing -redone -redoubt -redoubts -redound -redounded -redounding -redounds -redraft -redrafted -redrafting -redrafts -redraw -redrawing -redrawn -redraws -redress -redressed -redresses -redressing -redrew -reds -redskin -redskins -reduce -reduced -reduces -reducing -reduction -reductions -redundancies -redundancy -redundant -redwood -redwoods -reebok -reed -reedier -reediest -reeds -reeducate -reeducated -reeducates -reeducating -reeducation -reedy -reef -reefed -reefer -reefers -reefing -reefs -reek -reeked -reeking -reeks -reemerge -reemerged -reemerges -reemerging -reemphasise -reemphasised -reemphasises -reemphasising -reemphasize -reemphasized -reemphasizes -reemphasizing -reenact -reenacted -reenacting -reenactment -reenactments -reenacts -reenforce -reenforced -reenforces -reenforcing -reenter -reentered -reentering -reenters -reentries -reentry -reese -reeve -reeved -reeves -reeving -reexamine -reexamined -reexamines -reexamining -ref -refashion -refashioned -refashioning -refashions -refectories -refectory -refer -referee -refereed -refereeing -referees -reference -referenced -references -referencing -referenda -referendum -referendums -referent -referred -referring -refers -reffed -reffing -refinance -refinanced -refinances -refinancing -refine -refined -refinement -refinements -refiner -refineries -refiners -refinery -refines -refining -refinish -refinished -refinishes -refinishing -refit -refits -refitted -refitting -refocus -refocused -refocuses -refocusing -refocussed -refocusses -refocussing -reforest -reforestation -reforested -reforesting -reforests -reform -reformat -reformation -reformations -reformatories -reformatory -reformatted -reformatting -reformed -reformer -reformers -reforming -reforms -refract -refracted -refracting -refraction -refractories -refractory -refracts -refrain -refrained -refraining -refrains -refresh -refreshed -refresher -refreshers -refreshes -refreshing -refreshment -refreshments -refrigerant -refrigerants -refrigerate -refrigerated -refrigerates -refrigerating -refrigeration -refrigerator -refrigerators -refs -refuge -refugee -refugees -refuges -refugio -refund -refunded -refunding -refunds -refurbish -refurbished -refurbishes -refurbishing -refurbishment -refurbishments -refurnish -refurnished -refurnishes -refurnishing -refuse -refused -refuses -refusing -refutation -refutations -refute -refuted -refutes -refuting -regain -regained -regaining -regains -regard -regarded -regarding -regards -regatta -regattas -regencies -regency -regenerate -regenerated -regenerates -regenerating -regeneration -regenerative -regent -regents -reggae -reggie -regicide -regicides -regime -regimen -regimens -regiment -regimentation -regimented -regimenting -regiments -regimes -regina -reginae -region -regions -register -registered -registering -registers -registrant -registrants -registrar -registrars -registration -registrations -registries -registry -regor -regress -regressed -regresses -regressing -regression -regressions -regressive -regret -regrets -regretted -regretting -regroup -regrouped -regrouping -regroups -regurgitate -regurgitated -regurgitates -regurgitating -regurgitation -rehab -rehabbed -rehabbing -rehabs -rehash -rehashed -rehashes -rehashing -rehearse -rehearsed -rehearses -rehearsing -reheat -reheated -reheating -reheats -rehire -rehired -rehires -rehiring -rehnquist -reich -reichstag -reid -reign -reigned -reigning -reigns -reimburse -reimbursed -reimbursement -reimbursements -reimburses -reimbursing -reimpose -reimposed -reimposes -reimposing -rein -reincarnate -reincarnated -reincarnates -reincarnating -reincarnation -reincarnations -reindeer -reindeers -reined -reinforce -reinforced -reinforcement -reinforcements -reinforces -reinforcing -reinhardt -reining -reins -reinsert -reinserted -reinserting -reinserts -reinstate -reinstated -reinstatement -reinstates -reinstating -reinterpret -reinterpretation -reinterpretations -reinterpreted -reinterpreting -reinterprets -reinvent -reinvented -reinventing -reinvents -reinvest -reinvested -reinvesting -reinvests -reis -reissue -reissued -reissues -reissuing -reiterate -reiterated -reiterates -reiterating -reiteration -reiterations -reject -rejected -rejecting -rejection -rejections -rejects -rejoice -rejoiced -rejoices -rejoicing -rejoicings -rejoin -rejoinder -rejoinders -rejoined -rejoining -rejoins -rejuvenate -rejuvenated -rejuvenates -rejuvenating -rejuvenation -remade -remain -remainder -remaindered -remainders -remained -remaining -remains -remake -remakes -remaking -remand -remanded -remanding -remands -remark -remarked -remarking -remarks -remarque -remarriage -remarriages -remarried -remarries -remarry -remarrying -rematch -rematches -rembrandt -remedied -remedies -remedy -remedying -remember -remembered -remembering -remembers -remembrance -remembrances -remind -reminded -reminder -reminders -reminding -reminds -remington -reminisce -reminisced -reminiscence -reminiscences -reminiscent -reminisces -reminiscing -remiss -remission -remissions -remissness -remit -remits -remittance -remittances -remitted -remitting -remnant -remnants -remonstrance -remonstrances -remonstrate -remonstrated -remonstrates -remonstrating -remorse -remortgage -remortgaged -remortgages -remortgaging -remote -remoteness -remoter -remotes -remotest -remount -remounted -remounting -remounts -remove -removed -remover -removers -removes -removing -remunerate -remunerated -remunerates -remunerating -remuneration -remunerations -remunerative -remus -rena -renaissance -renaissances -rename -renamed -renames -renaming -renascence -renascences -renascent -rend -render -rendered -rendering -renderings -renders -rendezvous -rendezvoused -rendezvouses -rendezvousing -rending -rendition -renditions -rends -rene -renee -renegade -renegaded -renegades -renegading -renege -reneged -reneges -reneging -renegotiate -renegotiated -renegotiates -renegotiating -renew -renewed -renewing -renews -rennet -reno -renoir -renounce -renounced -renounces -renouncing -renovate -renovated -renovates -renovating -renovation -renovations -renovator -renovators -renown -renowned -rent -rented -renter -renters -renting -rents -renumber -renumbered -renumbering -renumbers -renunciation -renunciations -reoccupied -reoccupies -reoccupy -reoccupying -reoccur -reoccurred -reoccurring -reoccurs -reopen -reopened -reopening -reopens -reorder -reordered -reordering -reorders -reorg -reorganisation -reorganisations -reorganise -reorganised -reorganises -reorganising -reorganization -reorganizations -reorganize -reorganized -reorganizes -reorganizing -reorged -reorging -reorgs -rep -repackage -repackaged -repackages -repackaging -repaid -repaint -repainted -repainting -repaints -repair -repaired -repairing -repairman -repairmen -repairs -reparation -reparations -repartee -repast -repasts -repatriate -repatriated -repatriates -repatriating -repatriation -repay -repaying -repayment -repayments -repays -repeat -repeated -repeater -repeaters -repeating -repeats -repent -repentance -repentant -repented -repenting -repents -repercussion -repercussions -repertoire -repertoires -repertories -repertory -repetition -repetitions -repetitious -repetitive -rephrase -rephrased -rephrases -rephrasing -report -reportage -reported -reporter -reporters -reporting -reports -repose -reposed -reposes -reposing -repositories -repository -repossess -repossessed -repossesses -repossessing -repossession -repossessions -reprehend -reprehended -reprehending -reprehends -represent -representation -representations -representative -representatives -represented -representing -represents -repress -repressed -represses -repressing -repression -repressions -repressive -reprieve -reprieved -reprieves -reprieving -reprimand -reprimanded -reprimanding -reprimands -reprint -reprinted -reprinting -reprints -reprise -reprised -reprises -reprising -reprized -reproach -reproached -reproaches -reproaching -reprobate -reprobates -reprocess -reprocessed -reprocesses -reprocessing -reproduce -reproduced -reproduces -reproducing -reproduction -reproductions -reproductive -reprogram -reprogramed -reprograming -reprogramme -reprogrammed -reprogrammes -reprogramming -reprograms -reproof -reproofed -reproofing -reproofs -reprove -reproved -reproves -reproving -reps -repudiate -repudiated -repudiates -repudiating -repudiation -repudiations -repugnance -repugnant -reputation -reputations -repute -reputed -reputes -reputing -request -requested -requester -requesting -requests -requiem -requiems -require -required -requirement -requirements -requires -requiring -requisite -requisites -requisition -requisitioned -requisitioning -requisitions -requite -requited -requites -requiting -reran -reread -rereading -rereads -reroute -rerouted -reroutes -rerouting -rerun -rerunning -reruns -rescind -rescinded -rescinding -rescinds -rescission -rescue -rescued -rescuer -rescuers -rescues -rescuing -research -researched -researcher -researchers -researches -researching -resend -resent -resented -resenting -resentment -resentments -resents -reservation -reservations -reserve -reserved -reserves -reserving -reservist -reservists -reservoir -reservoirs -reset -resets -resetting -reside -resided -residence -residences -residencies -residency -resident -residents -resides -residing -residue -residues -resign -resignation -resignations -resigned -resigning -resigns -resin -resinous -resins -resist -resistance -resistances -resistant -resisted -resister -resisters -resisting -resistor -resistors -resists -resonance -resonances -resonant -resonate -resonated -resonates -resonating -resonator -resonators -resort -resorted -resorting -resorts -resound -resounded -resounding -resounds -resource -resources -respect -respected -respecting -respective -respects -respiration -respirator -respirators -respiratory -respire -respired -respires -respiring -respite -respites -respond -responded -respondent -respondents -responding -responds -response -responses -responsive -responsiveness -rest -restart -restarted -restarting -restarts -restate -restated -restatement -restatements -restates -restating -restaurant -restauranteur -restauranteurs -restaurants -restaurateur -restaurateurs -rested -resting -restitution -restive -restiveness -restock -restocked -restocking -restocks -restoration -restorations -restorative -restoratives -restore -restored -restorer -restorers -restores -restoring -restrain -restrained -restraining -restrains -restraint -restraints -restrict -restricted -restricting -restriction -restrictions -restrictive -restricts -restroom -restrooms -restructure -restructured -restructures -restructuring -restructurings -rests -restudied -restudies -restudy -restudying -resubmit -resubmits -resubmitted -resubmitting -resume -resumed -resumes -resuming -resumption -resumptions -resurface -resurfaced -resurfaces -resurfacing -resurgence -resurgences -resurgent -resurrect -resurrected -resurrecting -resurrection -resurrections -resurrects -resuscitate -resuscitated -resuscitates -resuscitating -resuscitation -resuscitator -resuscitators -retain -retained -retainer -retainers -retaining -retains -retake -retaken -retakes -retaking -retard -retardant -retardants -retardation -retarded -retarding -retards -retch -retched -retches -retching -retention -retentive -retentiveness -rethink -rethinking -rethinks -rethought -reticence -reticent -retina -retinae -retinas -retinue -retinues -retire -retired -retiree -retirees -retirement -retirements -retires -retiring -retook -retort -retorted -retorting -retorts -retouch -retouched -retouches -retouching -retrace -retraced -retraces -retracing -retract -retracted -retracting -retraction -retractions -retracts -retrain -retrained -retraining -retrains -retread -retreaded -retreading -retreads -retreat -retreated -retreating -retreats -retrench -retrenched -retrenches -retrenching -retrenchment -retrenchments -retribution -retributions -retributive -retried -retries -retrieve -retrieved -retriever -retrievers -retrieves -retrieving -retroactive -retrod -retrodden -retrofit -retrofits -retrofitted -retrofitting -retrograde -retrograded -retrogrades -retrograding -retrogress -retrogressed -retrogresses -retrogressing -retrogression -retrogressive -retrorocket -retrorockets -retrospect -retrospected -retrospecting -retrospection -retrospective -retrospectives -retrospects -retry -retrying -return -returned -returnee -returnees -returning -returns -retweet -retweeted -retweeting -retweets -retype -retyped -retypes -retyping -reuben -reunification -reunified -reunifies -reunify -reunifying -reunion -reunions -reunite -reunited -reunites -reuniting -reuse -reused -reuses -reusing -reuters -reuther -rev -reva -revamp -revamped -revamping -revamps -revenge -revenged -revenges -revenging -revenue -revenues -reverberate -reverberated -reverberates -reverberating -reverberation -reverberations -revere -revered -reverence -reverenced -reverences -reverencing -reverend -reverends -reverent -reveres -reverie -reveries -revering -reverse -reversed -reverses -reversing -reversion -revert -reverted -reverting -reverts -revery -review -reviewed -reviewer -reviewers -reviewing -reviews -revise -revised -revises -revising -revision -revisions -revisit -revisited -revisiting -revisits -revive -revived -revives -revivification -revivified -revivifies -revivify -revivifying -reviving -revocation -revocations -revoke -revoked -revokes -revoking -revs -revue -revues -revved -revving -reward -rewarded -rewarding -rewards -rewind -rewinding -rewinds -rewire -rewired -rewires -rewiring -reword -reworded -rewording -rewords -rework -reworked -reworking -reworks -rewound -rewrite -rewrites -rewriting -rewritten -rewrote -rex -reyes -reykjavik -reyna -rhapsodic -rhapsodies -rhapsodise -rhapsodised -rhapsodises -rhapsodising -rhapsodize -rhapsodized -rhapsodizes -rhapsodizing -rhapsody -rhea -rheas -rhee -rheingau -rhenish -rheostat -rheostats -rhetoric -rhetorician -rhetoricians -rheum -rheumatic -rheumatics -rheumatism -rheumy -rhiannon -rhine -rhinestone -rhinestones -rhino -rhinoceri -rhinoceros -rhinoceroses -rhinos -rhizome -rhizomes -rho -rhoda -rhode -rhodes -rhodesia -rhodium -rhododendron -rhododendrons -rhombi -rhomboid -rhomboids -rhombus -rhombuses -rhonda -rhone -rhubarb -rhubarbs -rhyme -rhymed -rhymes -rhyming -rhythm -rhythmic -rhythms -rib -ribbed -ribbentrop -ribbing -ribbon -ribbons -ribs -ricardo -rice -riced -rices -rich -richard -richards -richardson -richer -riches -richest -richie -richmond -richness -richter -richthofen -ricing -rick -ricked -rickenbacker -ricketier -ricketiest -rickets -rickety -rickey -rickie -ricking -rickover -ricks -ricksha -rickshas -rickshaw -rickshaws -ricky -rico -ricochet -ricocheted -ricocheting -ricochets -ricochetted -ricochetting -ricotta -rid -riddance -ridded -ridden -ridding -ride -rider -riders -rides -ridge -ridged -ridges -ridging -riding -rids -riemann -rife -rifer -rifest -riff -riffed -riffing -riffraff -riffs -rift -rifted -rifting -rifts -rig -riga -rigged -rigging -riggs -right -righted -righteous -righteousness -righter -rightest -righting -rightist -rightists -rightmost -rightness -rights -rigid -rigidity -rigidness -rigoberto -rigor -rigorous -rigors -rigour -rigours -rigs -rim -rimbaud -rime -rimed -rimes -riming -rimmed -rimming -rims -rind -rinds -ring -ringed -ringer -ringers -ringing -ringmaster -ringmasters -ringo -rings -ringside -ringtone -ringtones -ringworm -rink -rinks -rinse -rinsed -rinses -rinsing -rio -rios -riot -rioted -rioter -rioters -rioting -riotous -riots -rip -ripe -ripen -ripened -ripeness -ripening -ripens -riper -ripest -riposte -riposted -ripostes -riposting -ripped -ripper -rippers -ripping -rips -ripsaw -ripsaws -rise -risen -riser -risers -rises -rising -risk -risked -riskier -riskiest -riskiness -risking -risks -risky -risorgimento -rita -rite -rites -ritz -ritzier -ritziest -ritzy -rivas -riven -river -rivera -riverbed -riverbeds -riverfront -rivers -riverside -riversides -rivet -riveted -riveter -riveters -riveting -rivets -rivetted -rivetting -riviera -rivieras -riyadh -roach -roaches -road -roadbed -roadbeds -roadhouse -roadhouses -roadrunner -roadrunners -roads -roadshow -roadside -roadsides -roadster -roadsters -roadway -roadways -roadwork -roadworthy -roam -roamed -roamer -roamers -roaming -roams -roan -roans -roar -roared -roaring -roars -roast -roasted -roaster -roasters -roasting -roasts -rob -robbed -robber -robberies -robbers -robbery -robbie -robbin -robbing -robbins -robby -robe -robed -roberson -robert -roberta -roberto -roberts -robertson -robes -robeson -robespierre -robin -robing -robins -robinson -robitussin -robot -robotic -robotics -robots -robs -robson -robt -robust -robuster -robustest -robustness -robyn -rocco -rocha -rochambeau -roche -rochester -rock -rocked -rocker -rockers -rocket -rocketed -rocketing -rocketry -rockets -rockford -rockier -rockies -rockiest -rockiness -rocking -rockne -rocks -rocky -rococo -rod -roddenberry -rode -rodent -rodents -rodeo -rodeos -roderick -rodger -rodgers -rodin -rodney -rodrick -rodrigo -rodriguez -rodriquez -rods -roe -roebuck -roebucks -roeg -roentgen -roentgens -roes -roger -rogered -rogering -rogers -roget -rogue -roguery -rogues -roguish -roister -roistered -roisterer -roisterers -roistering -roisters -rojas -roku -romaine -roman -romance -romanced -romances -romancing -romanesque -romania -romanian -romanians -romanies -romano -romanov -romans -romansh -romantic -romanticise -romanticised -romanticises -romanticising -romanticism -romanticist -romanticists -romanticize -romanticized -romanticizes -romanticizing -romantics -romany -rome -romeo -romero -romes -romney -romp -romped -romper -rompers -romping -romps -ron -ronda -ronnie -ronny -ronstadt -rood -roods -roof -roofed -roofer -roofers -roofing -roofs -rooftop -rooftops -rook -rooked -rookeries -rookery -rookie -rookies -rooking -rooks -room -roomed -roomer -roomers -roomier -roomiest -roominess -rooming -roommate -roommates -rooms -roomy -rooney -roost -roosted -rooster -roosters -roosting -roosts -root -rooted -rooter -rooting -roots -rope -roped -ropes -roping -roquefort -roqueforts -rorschach -rory -rosa -rosanna -rosanne -rosaries -rosario -rosary -roscoe -rose -roseann -roseate -roseau -rosebud -rosebuds -rosebush -rosebushes -rosecrans -rosemarie -rosemary -rosenberg -rosendo -rosenzweig -roses -rosetta -rosette -rosettes -rosewood -rosewoods -rosicrucian -rosie -rosier -rosiest -rosin -rosined -rosiness -rosining -rosins -ross -rossetti -rossini -rostand -roster -rosters -rostov -rostra -rostropovich -rostrum -rostrums -rosy -rot -rotarian -rotaries -rotary -rotate -rotated -rotates -rotating -rotation -rotations -rote -roth -rothko -rotisserie -rotisseries -rotogravure -rotogravures -rotor -rotors -rots -rotted -rotten -rottener -rottenest -rottenness -rotterdam -rotting -rotund -rotunda -rotundas -rotundity -rotundness -rouge -rouged -rouges -rough -roughage -roughed -roughen -roughened -roughening -roughens -rougher -roughest -roughhouse -roughhoused -roughhouses -roughhousing -roughing -roughneck -roughnecked -roughnecking -roughnecks -roughness -roughs -roughshod -rouging -roumania -round -roundabout -roundabouts -rounded -rounder -roundest -roundhouse -roundhouses -rounding -roundish -roundness -rounds -roundup -roundups -roundworm -roundworms -rourke -rouse -roused -rouses -rousing -rousseau -roustabout -roustabouts -rout -route -routed -routeing -router -routes -routine -routines -routing -routinise -routinised -routinises -routinising -routinize -routinized -routinizes -routinizing -routs -rove -roved -rover -rovers -roves -roving -row -rowboat -rowboats -rowdier -rowdies -rowdiest -rowdiness -rowdy -rowdyism -rowe -rowed -rowena -rower -rowers -rowing -rows -roxanne -roxie -roxy -roy -royce -rub -rubaiyat -rubbed -rubber -rubberise -rubberised -rubberises -rubberising -rubberize -rubberized -rubberizes -rubberizing -rubbermaid -rubberneck -rubbernecked -rubbernecking -rubbernecks -rubbers -rubbery -rubbing -rubbish -rubbished -rubbishes -rubbishing -rubbishy -rubdown -rubdowns -rube -ruben -rubens -rubes -rubicon -rubicund -rubier -rubies -rubiest -rubik -rubin -rubinstein -rubric -rubrics -rubs -ruby -ruchbah -rucksack -rucksacks -ruckus -ruckuses -rudder -rudders -ruddier -ruddiest -ruddiness -ruddy -rude -rudeness -ruder -rudest -rudiment -rudimentary -rudiments -rudy -rudyard -rue -rued -rues -ruff -ruffed -ruffian -ruffians -ruffing -ruffs -rufus -rug -rugby -rugged -ruggeder -ruggedest -ruggedness -rugrat -rugrats -rugs -ruhr -ruin -ruination -ruined -ruing -ruining -ruinous -ruins -ruiz -rukeyser -rum -rumania -rumba -rumbaed -rumbaing -rumbas -ruminant -ruminants -ruminate -ruminated -ruminates -ruminating -rumination -ruminations -rummage -rummaged -rummages -rummaging -rummer -rummest -rummy -rumor -rumored -rumoring -rumors -rumour -rumoured -rumouring -rumours -rump -rumps -rumpus -rumpuses -rums -run -runabout -runabouts -runaround -runarounds -runaway -runaways -rundown -rundowns -rune -runes -rung -rungs -runner -runners -runnier -runniest -running -runny -runnymede -runoff -runoffs -runs -runt -runts -runway -runways -runyon -rupee -rupees -rupert -rupture -ruptured -ruptures -rupturing -ruse -ruses -rush -rushdie -rushed -rushes -rushing -rushmore -rusk -ruskin -rusks -russet -russets -russia -russian -russians -russo -rust -rusted -rustic -rusticity -rustics -rustier -rustiest -rustiness -rusting -rustproof -rustproofed -rustproofing -rustproofs -rusts -rusty -rut -rutabaga -rutabagas -rutan -rutgers -ruth -rutherford -ruthie -ruts -rutted -rutting -rwanda -rwandan -rwandans -rwandas -ryan -rydberg -ryder -rye -ryukyu -saab -saar -saarinen -saatchi -sabbath -sabbaths -saber -sabers -sabik -sabin -sabina -sabine -sabotage -sabotaged -sabotages -sabotaging -saboteur -saboteurs -sabre -sabres -sabrina -sac -sacajawea -saccharin -saccharine -sacco -sachem -sachems -sachet -sachets -sachs -sack -sacked -sacking -sacks -sacrament -sacramento -sacraments -sacred -sacredness -sacrifice -sacrificed -sacrifices -sacrificing -sacristan -sacristans -sacristies -sacristy -sacrosanct -sacs -sad -sadat -saddam -sadden -saddened -saddening -saddens -sadder -saddest -sadducee -sade -sades -sadie -sadism -sadist -sadistic -sadists -sadness -sadr -safari -safaried -safariing -safaris -safavid -safe -safeguard -safeguarded -safeguarding -safeguards -safekeeping -safeness -safer -safes -safest -safeties -safety -safeway -saffron -saffrons -sag -saga -sagacious -sagacity -sagan -sagas -sage -sagebrush -sager -sages -sagest -sagged -sagging -saginaw -sagittarius -sagittariuses -sago -sags -saguaro -saguaros -sahara -sahib -sahibs -said -saigon -saint -sainthood -saints -saiph -saith -sakai -sake -sakha -sakharov -saki -saks -samantha -samar -samara -samaritan -samaritans -samarkand -samba -sambaed -sambaing -sambas -same -sameness -sames -sammie -sammy -samoa -samoan -samoset -samovar -samovars -samoyed -sampan -sampans -sampson -samson -samsonite -samsung -samurai -san -sana -sanatoria -sanatorium -sanatoriums -sanchez -sancho -sancta -sanctification -sanctified -sanctifies -sanctify -sanctifying -sanctimonious -sanction -sanctioned -sanctioning -sanctions -sanctity -sanctuaries -sanctuary -sanctum -sanctums -sand -sandbag -sandbagged -sandbagging -sandbags -sandbank -sandbanks -sandbar -sandbars -sandbox -sandboxes -sandburg -sanded -sander -sanders -sandhog -sandhogs -sandier -sandiest -sandiness -sanding -sandinista -sandman -sandmen -sandpaper -sandpapered -sandpapering -sandpapers -sandpiper -sandpipers -sandra -sands -sandstone -sandstorm -sandstorms -sandwich -sandwiched -sandwiches -sandwiching -sandy -sane -saner -sanest -sanford -sanforized -sang -sanger -sangfroid -sanguinary -sanguine -sanhedrin -sanitaria -sanitarium -sanitariums -sanitary -sanitation -sanitise -sanitised -sanitises -sanitising -sanitize -sanitized -sanitizes -sanitizing -sanity -sank -sanka -sankara -sans -sanserif -sanskrit -santa -santana -santayana -santeria -santiago -santos -sap -sapience -sapient -sapped -sapphire -sapphires -sappho -sappier -sappiest -sapping -sapporo -sappy -saprophyte -saprophytes -saps -sapsucker -sapsuckers -sara -saracen -saracens -saragossa -sarah -sarajevo -saran -sarape -sarapes -sarasota -saratov -sarawak -sarcasm -sarcasms -sarcastic -sarcoma -sarcomas -sarcomata -sarcophagi -sarcophagus -sarcophaguses -sardine -sardines -sardinia -sardonic -saree -sarees -sargasso -sargent -sargon -sari -saris -sarnoff -sarong -sarongs -saroyan -sars -sarto -sartre -sash -sasha -sashay -sashayed -sashaying -sashays -sashes -saskatchewan -saskatoon -sasquatch -sass -sassafras -sassafrases -sassanian -sassed -sasses -sassier -sassiest -sassing -sassoon -sassy -sat -satan -satanic -satanism -satanist -satay -sate -sated -sateen -sates -satiate -satiated -satiates -satiating -satiety -satin -sating -satinwood -satinwoods -satiny -satire -satires -satirise -satirised -satirises -satirising -satirist -satirists -satirize -satirized -satirizes -satirizing -satisfaction -satisfactions -satisfactory -satisfied -satisfies -satisfy -satisfying -satrap -satraps -saturate -saturated -saturates -saturating -saturation -saturday -saturdays -saturn -saturnine -satyr -satyrs -sauce -sauced -saucepan -saucepans -saucer -saucers -sauces -saucier -sauciest -sauciness -saucing -saucy -saudi -saudis -sauerkraut -sauna -saunaed -saunaing -saunas -saunders -saundra -saunter -sauntered -sauntering -saunters -sausage -sausages -saussure -sauted -sauterne -savage -savaged -savageness -savager -savageries -savagery -savages -savagest -savaging -savanna -savannah -savannahes -savannahs -savannas -savant -savants -save -saved -saver -savers -saves -saving -savings -savior -saviors -saviour -saviours -savor -savored -savorier -savories -savoriest -savoring -savors -savory -savour -savoured -savourier -savouries -savouriest -savouring -savours -savoury -savoy -savoyard -savvied -savvier -savvies -savviest -savvy -savvying -saw -sawdust -sawed -sawhorse -sawhorses -sawing -sawn -saws -sawyer -sawyers -sax -saxes -saxon -saxons -saxony -saxophone -saxophones -saxophonist -saxophonists -say -sayers -saying -sayings -says -scab -scabbard -scabbards -scabbed -scabbier -scabbiest -scabbing -scabby -scabies -scabrous -scabs -scad -scads -scam -scammed -scammer -scammers -scamming -scamp -scamper -scampered -scampering -scampers -scampi -scampies -scamps -scams -scan -scandinavia -scandinavian -scandinavians -scanned -scanner -scanners -scanning -scans -scansion -scant -scanted -scanter -scantest -scantier -scanties -scantiest -scantiness -scanting -scants -scanty -scapegoat -scapegoated -scapegoating -scapegoats -scar -scarab -scarabs -scaramouch -scarborough -scarce -scarceness -scarcer -scarcest -scarcity -scare -scarecrow -scarecrows -scared -scares -scarf -scarfed -scarfing -scarfs -scarier -scariest -scarified -scarifies -scarify -scarifying -scaring -scarred -scarring -scars -scarves -scary -scat -scathing -scats -scatted -scatter -scatterbrain -scatterbrained -scatterbrains -scattered -scattering -scatters -scatting -scavenge -scavenged -scavenger -scavengers -scavenges -scavenging -scenario -scenarios -scene -scenery -scenes -scenic -scent -scented -scenting -scents -scepter -scepters -sceptic -scepticism -sceptics -sceptre -sceptres -scheat -schedar -scheherazade -schema -schematic -schematics -scheme -schemed -schemer -schemers -schemes -scheming -schenectady -scherzi -scherzo -scherzos -schick -schism -schismatic -schismatics -schisms -schist -schizoid -schizoids -schizophrenia -schizophrenic -schizophrenics -schmidt -schmooze -schmoozed -schmoozes -schmoozing -schmuck -schmucks -schnapps -schnauzer -schnauzers -schneider -schoenberg -schooner -schooners -schopenhauer -schrieffer -schrod -schrods -schroeder -schtick -schticks -schubert -schumann -schumpeter -schuss -schussed -schusses -schussing -schwa -schwartz -schwarzenegger -schwarzkopf -schwas -schweitzer -schweppes -schwinger -schwinn -sciatic -sciatica -science -sciences -scientific -scientist -scientists -scimitar -scimitars -scion -scions -scipio -scissor -scissors -scoff -scoffed -scoffing -scoffs -sconce -sconces -scone -scones -scoop -scooped -scooping -scoops -scoot -scooted -scooter -scooters -scooting -scoots -scope -scoped -scopes -scoping -scorch -scorched -scorcher -scorchers -scorches -scorching -score -scoreboard -scoreboards -scorecard -scorecards -scored -scorer -scorers -scores -scoring -scorn -scorned -scorning -scorns -scorpio -scorpion -scorpions -scorpios -scorpius -scorsese -scot -scotch -scotched -scotches -scotching -scotchman -scotchmen -scotchs -scotia -scots -scotsman -scotsmen -scotswoman -scotswomen -scott -scottie -scottish -scotty -scour -scoured -scourge -scourged -scourges -scourging -scouring -scours -scout -scouted -scouting -scoutmaster -scoutmasters -scouts -scow -scows -scram -scrammed -scramming -scrams -scranton -scrap -scrapbook -scrapbooks -scrape -scraped -scraper -scrapers -scrapes -scraping -scrapped -scrappier -scrappiest -scrapping -scrappy -scraps -scratch -scratched -scratches -scratchier -scratchiest -scratchiness -scratching -scratchy -scrawnier -scrawniest -scrawny -scream -screamed -screaming -screams -screech -screeched -screeches -screechier -screechiest -screeching -screechy -screen -screened -screening -screenings -screens -screenshot -screenshots -screenwriter -screenwriters -screw -screwdriver -screwdrivers -screwed -screwier -screwiest -screwing -screws -screwy -scriabin -scribe -scribes -scribner -scrimmage -scrimmaged -scrimmages -scrimmaging -scrimp -scrimped -scrimping -scrimps -scrimshaw -scrimshawed -scrimshawing -scrimshaws -scrip -scrips -script -scripted -scripting -scripts -scripture -scriptures -scriptwriter -scriptwriters -scrod -scrods -scrooge -scrooges -scrota -scrotum -scrotums -scrounge -scrounged -scrounger -scroungers -scrounges -scrounging -scrub -scrubbed -scrubber -scrubbers -scrubbier -scrubbiest -scrubbing -scrubby -scrubs -scruff -scruffier -scruffiest -scruffs -scruffy -scruggs -scrumptious -scrunch -scrunched -scrunches -scrunchie -scrunchies -scrunching -scrunchy -scrutinise -scrutinised -scrutinises -scrutinising -scrutinize -scrutinized -scrutinizes -scrutinizing -scrutiny -scuba -scubaed -scubaing -scubas -scud -scudded -scudding -scuds -scuff -scuffed -scuffing -scuffs -scum -scumbag -scumbags -scummed -scummier -scummiest -scumming -scummy -scums -scupper -scuppered -scuppering -scuppers -scurf -scurfy -scurried -scurries -scurry -scurrying -scurvier -scurviest -scurvy -scuzzier -scuzziest -scuzzy -scythe -scythed -scythes -scythia -scythian -scything -sea -seabed -seabeds -seabird -seabirds -seaboard -seaboards -seaborg -seacoast -seacoasts -seafarer -seafarers -seafaring -seafood -seagoing -seagram -seam -seaman -seamanship -seamed -seamen -seamier -seamiest -seaming -seams -seamstress -seamstresses -seamy -sean -seaport -seaports -sear -search -searched -searcher -searchers -searches -searching -seared -searing -sears -seas -seascape -seascapes -seashore -seashores -seasick -seasickness -seaside -seasides -season -seasoned -seasoning -seasonings -seasons -seat -seated -seating -seats -seaward -seawards -seaway -seaways -seaweed -seaworthy -sebaceous -sebastian -secede -seceded -secedes -seceding -secession -secessionist -secessionists -second -secondaries -secondary -seconded -secondhand -seconding -seconds -secrecy -secret -secretariat -secretariats -secretaries -secretary -secrete -secreted -secretes -secreting -secretion -secretions -secretive -secretiveness -secrets -secs -sect -sectarian -sectarianism -sectarians -section -sectioned -sectioning -sections -sector -sectors -sects -secure -secured -securer -secures -securest -securing -securities -security -sedan -sedans -sedate -sedated -sedater -sedates -sedatest -sedating -sedation -sedative -sedatives -sedentary -seder -seders -sedge -sediment -sedimentary -sedimentation -sediments -sedition -seditious -sedna -seduce -seduced -seducer -seducers -seduces -seducing -seduction -seductions -seductive -see -seebeck -seed -seeded -seedier -seediest -seediness -seeding -seeds -seedy -seeger -seeing -seeings -seek -seeker -seekers -seeking -seeks -seem -seemed -seeming -seems -seen -seep -seepage -seeped -seeping -seeps -seer -seers -seersucker -sees -seesaw -seesawed -seesawing -seesaws -seethe -seethed -seethes -seething -sega -segment -segmentation -segmented -segmenting -segments -segovia -segre -segregate -segregated -segregates -segregating -segregation -segregationist -segregationists -segue -segued -segueing -segues -segundo -seiko -seine -seismic -seismograph -seismographic -seismographs -seize -seized -seizes -seizing -seizure -seizures -sejong -semantic -semantics -semaphore -semaphored -semaphores -semaphoring -semarang -semen -semester -semesters -semi -semiautomatic -semiautomatics -semiconductor -semiconductors -semiconscious -seminar -seminarian -seminarians -seminaries -seminars -seminary -semiotics -semiprecious -semiprivate -semiramis -semiretired -semis -semite -semites -semitic -semitics -semitone -semitones -semtex -senate -senates -senator -senators -send -sendai -sender -senders -sending -sends -seneca -senecas -senghor -senior -seniority -seniors -senna -sennacherib -sennett -sensation -sensations -sense -sensed -senses -sensing -sensitisation -sensitise -sensitised -sensitises -sensitising -sensitive -sensitiveness -sensitives -sensitivities -sensitivity -sensitization -sensitize -sensitized -sensitizes -sensitizing -sensor -sensors -sensory -sensuous -sensuousness -sensurround -sent -sentence -sentenced -sentences -sentencing -sententious -sentience -sentient -sentiment -sentiments -sentries -sentry -separate -separated -separates -separating -separation -separations -separatism -separatist -separatists -separator -separators -sephardi -sepia -sepoy -sepsis -septa -september -septembers -septet -septets -septette -septettes -septic -septicaemia -septicemia -septuagenarian -septuagenarians -septuagint -septuagints -septum -septums -sequence -sequenced -sequencer -sequencers -sequences -sequencing -sequester -sequestered -sequestering -sequesters -sequestration -sequestrations -sequin -sequined -sequins -sequitur -sequoia -sequoias -sequoya -sera -serape -serapes -seraph -seraphic -seraphim -seraphs -serb -serbia -serbian -serbians -serbs -sere -serena -serenade -serenaded -serenades -serenading -serendipitous -serendipity -serene -sereneness -serener -serenest -serengeti -serenity -serer -serest -serf -serfdom -serfs -serge -sergeant -sergeants -sergei -sergio -series -serious -seriousness -sermon -sermonise -sermonised -sermonises -sermonising -sermonize -sermonized -sermonizes -sermonizing -sermons -serous -serpens -serpent -serpentine -serpents -serra -serrano -serrated -serried -serum -serums -servant -servants -serve -served -server -servers -serves -service -serviced -serviceman -servicemen -services -servicewoman -servicewomen -servicing -serviette -serviettes -serving -servings -servitude -servo -servomechanism -servomechanisms -servos -sesame -sesames -session -sessions -set -setback -setbacks -seth -seton -sets -settee -settees -setter -setters -setting -settings -setup -setups -seurat -seuss -seven -sevens -seventeen -seventeens -seventeenth -seventeenths -seventh -sevenths -seventies -seventieth -seventieths -seventy -sever -severance -severances -severe -severed -severer -severest -severing -severity -severn -severs -severus -sew -sewage -seward -sewed -sewer -sewerage -sewers -sewing -sewn -sews -sex -sexagenarian -sexagenarians -sexed -sexes -sexier -sexiest -sexiness -sexing -sexism -sexist -sexists -sexpot -sexpots -sextans -sextant -sextants -sextet -sextets -sextette -sextettes -sexting -sexton -sextons -sexy -seyfert -seymour -shabbier -shabbiest -shabbiness -shabby -shack -shacks -shad -shade -shaded -shades -shadier -shadiest -shadiness -shading -shadings -shadow -shadowbox -shadowboxed -shadowboxes -shadowboxing -shadowed -shadowier -shadowiest -shadowing -shadows -shadowy -shads -shady -shaffer -shaft -shafted -shafting -shafts -shag -shagged -shaggier -shaggiest -shagginess -shagging -shaggy -shags -shah -shahs -shaikh -shaikhs -shaka -shake -shakedown -shakedowns -shaken -shaker -shakers -shakes -shakespeare -shakespearean -shakeup -shakeups -shakier -shakiest -shakiness -shaking -shaky -sham -shaman -shamans -shame -shamed -shamefaced -shames -shaming -shammed -shammies -shamming -shammy -shampoo -shampooed -shampooing -shampoos -shamrock -shamrocks -shams -shana -shandy -shane -shanghai -shanghaied -shanghaiing -shanghais -shank -shankara -shanks -shanna -shannon -shanties -shantung -shanty -shantytown -shantytowns -shape -shaped -shapes -shaping -shapiro -shard -shards -share -sharecropper -sharecroppers -shared -shares -shari -sharia -shariah -sharif -sharing -shark -sharked -sharking -sharks -sharkskin -sharon -sharp -sharpe -sharped -sharpen -sharpened -sharpener -sharpeners -sharpening -sharpens -sharper -sharpers -sharpest -sharping -sharpness -sharps -sharpshooter -sharpshooters -sharron -shasta -shat -shatter -shattered -shattering -shatterproof -shatters -shaun -shauna -shave -shaved -shaven -shaver -shavers -shaves -shavian -shaving -shavings -shavuot -shaw -shawn -shawna -shawnee -shaykh -shaykhs -shcharansky -she -shea -sheaf -shear -sheared -shearer -shearers -shearing -shears -sheath -sheathe -sheathed -sheathes -sheathing -sheathings -sheaths -sheave -sheaves -sheba -shebang -shebangs -shed -shedding -sheds -sheen -sheena -sheep -sheepdog -sheepdogs -sheepish -sheepishness -sheepskin -sheepskins -sheer -sheered -sheerer -sheerest -sheering -sheers -sheet -sheeting -sheetrock -sheets -sheik -sheikdom -sheikdoms -sheikh -sheikhdom -sheikhdoms -sheikhs -sheiks -shenandoah -shenanigan -shenanigans -shenyang -shepard -shepherd -shepherded -shepherdess -shepherdesses -shepherding -shepherds -sheppard -sheratan -sheraton -sherbert -sherberts -sherbet -sherbets -sherd -sherds -sheree -sheri -sheridan -sheriff -sheriffs -sherman -sherpa -sherri -sherrie -sherries -sherry -sherwood -shes -shevardnadze -shevat -shied -shies -shift -shifted -shiftier -shiftiest -shiftiness -shifting -shifts -shifty -shiitake -shiitakes -shijiazhuang -shikoku -shim -shimmed -shimmer -shimmered -shimmering -shimmers -shimmery -shimmied -shimmies -shimming -shimmy -shimmying -shims -shin -shinbone -shinbones -shindig -shindigs -shine -shined -shiner -shiners -shines -shinier -shiniest -shininess -shining -shinned -shinnied -shinnies -shinning -shinny -shinnying -shins -shinto -shintoism -shintoisms -shintos -shiny -ship -shipboard -shipboards -shipmate -shipmates -shipment -shipments -shipped -shipper -shippers -shipping -ships -shipshape -shipwreck -shipwrecked -shipwrecking -shipwrecks -shipwright -shipwrights -shipyard -shipyards -shiraz -shire -shires -shirk -shirked -shirker -shirkers -shirking -shirks -shirr -shirred -shirring -shirrings -shirrs -shirt -shirted -shirting -shirts -shirtwaist -shirtwaists -shit -shits -shittier -shittiest -shitting -shitty -shiva -shiver -shivered -shivering -shivers -shivery -shock -shocked -shocker -shockers -shocking -shockproof -shocks -shod -shodden -shoddier -shoddiest -shoddiness -shoddy -shoe -shoed -shoehorn -shoehorned -shoehorning -shoehorns -shoeing -shoemaker -shoemakers -shoes -shoeshine -shoeshines -shoestring -shoestrings -shogun -shoguns -shone -shoo -shooed -shooing -shook -shoon -shoos -shoot -shooter -shooters -shooting -shootings -shootout -shootouts -shoots -shop -shopkeeper -shopkeepers -shopped -shopper -shoppers -shopping -shops -shopworn -shore -shored -shores -shoring -shorn -short -shortage -shortages -shortbread -shortcake -shortcakes -shortchange -shortchanged -shortchanges -shortchanging -shortcoming -shortcomings -shortcut -shortcuts -shorted -shorten -shortened -shortening -shortenings -shortens -shorter -shortest -shorthand -shorthorn -shorthorns -shorting -shortish -shortness -shorts -shortsighted -shortsightedness -shortstop -shortstops -shortwave -shortwaves -shoshone -shostakovitch -shot -shotgun -shotgunned -shotgunning -shotguns -shots -shout -shouted -shouting -shouts -shove -shoved -shoves -shoving -show -showbiz -showboat -showboated -showboating -showboats -showcase -showcased -showcases -showcasing -showdown -showdowns -showed -shower -showered -showering -showers -showery -showier -showiest -showiness -showing -showings -showman -showmanship -showmen -shown -showoff -showoffs -showpiece -showpieces -showroom -showrooms -shows -showy -shrank -shred -shredded -shredder -shredders -shredding -shreds -shrek -shreveport -shrew -shrewd -shrewder -shrewdest -shrewdness -shrewish -shrews -shriek -shrieked -shrieking -shrieks -shrift -shrike -shrikes -shrimp -shrimped -shrimping -shrimps -shrine -shriner -shrines -shrink -shrinkage -shrinking -shrinks -shrive -shrived -shriven -shrives -shriving -shropshire -shroud -shrouded -shrouding -shrouds -shrove -shrub -shrubberies -shrubbery -shrubbier -shrubbiest -shrubby -shrubs -shrug -shrugged -shrugging -shrugs -shrunk -shrunken -shtick -shticks -shtik -shtiks -shuck -shucked -shucking -shucks -shuckses -shudder -shuddered -shuddering -shudders -shun -shunned -shunning -shuns -shunt -shunted -shunting -shunts -shush -shushed -shushes -shushing -shut -shutdown -shutdowns -shuteye -shutout -shutouts -shuts -shutter -shutterbug -shutterbugs -shuttered -shuttering -shutters -shutting -shy -shyer -shyest -shying -shyness -shyster -shysters -siam -siamese -sian -siberia -siberian -sic -sick -sickbed -sickbeds -sicked -sicken -sickened -sickening -sickens -sicker -sickest -sicking -sickness -sicknesses -sicks -sics -sid -siddhartha -side -sidearm -sidearms -sidebar -sidebars -sideboard -sideboards -sideburns -sidecar -sidecars -sided -sidekick -sidekicks -sides -sideshow -sideshows -sidestep -sidestepped -sidestepping -sidesteps -sidestroke -sidestroked -sidestrokes -sidestroking -sideswipe -sideswiped -sideswipes -sideswiping -sidetrack -sidetracked -sidetracking -sidetracks -sideways -sidewise -siding -sidings -sidney -siege -sieges -siegfried -siemens -sierpinski -sierra -sierras -siesta -siestas -sieve -sieved -sieves -sieving -sift -sifted -sifter -sifters -sifting -sifts -sigh -sighed -sighing -sighs -sight -sighted -sighting -sightings -sightread -sights -sightseeing -sightseer -sightseers -sigismund -sigma -sigmund -sign -signatories -signatory -signature -signatures -signboard -signboards -signed -signer -signers -signet -signets -significance -significant -signification -significations -signified -signifies -signify -signifying -signing -signings -signpost -signposted -signposting -signposts -signs -sigurd -sihanouk -sikh -sikhism -sikhs -sikkim -sikkimese -sikorsky -sim -simenon -simian -simians -simmer -simmered -simmering -simmers -simmons -simon -simone -simpatico -simper -simpered -simpering -simpers -simpson -simpsons -sims -sin -sinai -sinatra -since -sincere -sincerer -sincerest -sincerity -sindbad -sindhi -sine -sinecure -sinecures -sinew -sinews -sinewy -sing -singapore -singe -singed -singeing -singer -singers -singes -singh -singing -sings -singsong -singsonged -singsonging -singsongs -sinister -sink -sinker -sinkers -sinkiang -sinking -sinks -sinned -sinner -sinners -sinning -sins -sinuous -sinus -sinuses -sinusitis -sioux -sip -siphon -siphoned -siphoning -siphons -sipped -sipping -sips -sir -sire -sired -siren -sirens -sires -siring -sirius -sirocco -siroccos -sirs -sirup -sirups -sis -sises -sissier -sissies -sissiest -sissy -sister -sisterhood -sisterhoods -sisters -sistine -sisyphean -sisyphus -sit -sitar -sitars -sitcom -sitcoms -site -sited -sites -siting -sits -sitter -sitters -sitting -sittings -situate -situated -situates -situating -situation -situations -siva -sivan -six -sixes -sixpence -sixpences -sixteen -sixteens -sixteenth -sixteenths -sixth -sixths -sixties -sixtieth -sixtieths -sixty -size -sized -sizer -sizes -sizing -skate -skateboard -skateboarded -skateboarder -skateboarders -skateboarding -skateboards -skated -skater -skaters -skates -skating -skeet -skein -skeins -skeptic -skepticism -skeptics -sketch -sketched -sketches -sketchier -sketchiest -sketching -sketchy -skew -skewed -skewer -skewered -skewering -skewers -skewing -skews -ski -skid -skidded -skidding -skids -skied -skier -skiers -skies -skiff -skiffs -skiing -skim -skimmed -skimming -skimp -skimped -skimpier -skimpiest -skimpiness -skimping -skimps -skimpy -skims -skin -skinhead -skinheads -skinned -skinner -skinnier -skinniest -skinniness -skinning -skinny -skins -skintight -skip -skipped -skipper -skippered -skippering -skippers -skipping -skippy -skips -skirmish -skirmished -skirmishes -skirmishing -skirt -skirted -skirting -skirts -skis -skit -skits -skitter -skittered -skittering -skitters -skittish -skivvied -skivvies -skivvy -skivvying -skopje -skunk -skunked -skunking -skunks -sky -skycap -skycaps -skydive -skydived -skydiver -skydivers -skydives -skydiving -skydove -skye -skyed -skying -skyjack -skyjacked -skyjacker -skyjackers -skyjacking -skyjacks -skype -skyrocket -skyrocketed -skyrocketing -skyrockets -skyscraper -skyscrapers -skyward -skywards -skywriter -skywriters -skywriting -smack -smacked -smacker -smackers -smacking -smacks -smarmier -smarmiest -smarmy -smart -smarted -smarten -smartened -smartening -smartens -smarter -smartest -smarting -smartness -smartphone -smartphones -smarts -smartwatch -smartwatches -smash -smashed -smashes -smashing -smattering -smatterings -smear -smeared -smearing -smears -smetana -smidge -smidgen -smidgens -smidgeon -smidgeons -smidges -smidgin -smidgins -smirch -smirched -smirches -smirching -smirk -smirked -smirking -smirks -smirnoff -smit -smite -smites -smith -smithereens -smithies -smiths -smithson -smithsonian -smithy -smiting -smitten -smock -smocked -smocking -smocks -smog -smoggier -smoggiest -smoggy -smoke -smoked -smokehouse -smokehouses -smoker -smokers -smokes -smokestack -smokestacks -smokey -smokier -smokiest -smokiness -smoking -smoky -smooch -smooched -smooches -smooching -smooth -smoothed -smoother -smoothes -smoothest -smoothie -smoothies -smoothing -smoothness -smooths -smoothy -smote -smother -smothered -smothering -smothers -smudge -smudged -smudges -smudgier -smudgiest -smudging -smudgy -smug -smugger -smuggest -smugness -smut -smuts -smuttier -smuttiest -smutty -snack -snacked -snacking -snacks -snafu -snafus -snag -snagged -snagging -snags -snake -snakebite -snakebites -snaked -snakes -snakier -snakiest -snaking -snaky -snap -snapdragon -snapdragons -snapped -snapper -snappers -snappier -snappiest -snapping -snappish -snappy -snaps -snapshot -snapshots -snare -snared -snares -snaring -snarkier -snarkiest -snarky -snatch -snatched -snatches -snatching -snazzier -snazziest -snazzy -snead -sneak -sneaked -sneaker -sneakers -sneakier -sneakiest -sneaking -sneaks -sneaky -sneer -sneered -sneering -sneers -sneeze -sneezed -sneezes -sneezing -snicker -snickered -snickering -snickers -snide -snider -snidest -sniff -sniffed -sniffing -sniffs -snifter -snifters -snigger -sniggered -sniggering -sniggers -snip -snipe -sniped -sniper -snipers -snipes -sniping -snipped -snippet -snippets -snippier -snippiest -snipping -snippy -snips -snit -snitch -snitched -snitches -snitching -snits -snob -snobbery -snobbier -snobbiest -snobbish -snobbishness -snobby -snobs -snooker -snoop -snooped -snooper -snoopers -snoopier -snoopiest -snooping -snoops -snoopy -snoot -snootier -snootiest -snootiness -snoots -snooty -snooze -snoozed -snoozes -snoozing -snore -snored -snorer -snorers -snores -snoring -snort -snorted -snorting -snorts -snot -snots -snottier -snottiest -snotty -snout -snouts -snow -snowboard -snowboarded -snowboarding -snowboards -snowbound -snowdrift -snowdrifts -snowdrop -snowdrops -snowed -snowier -snowiest -snowing -snowman -snowmen -snows -snowshed -snowshoe -snowshoed -snowshoeing -snowshoes -snowstorm -snowstorms -snowsuit -snowsuits -snowy -snub -snubbed -snubbing -snubs -snuck -snuff -snuffbox -snuffboxes -snuffed -snuffer -snuffers -snuffing -snuffs -snug -snugged -snugger -snuggest -snugging -snugs -snyder -soak -soaked -soaking -soakings -soaks -soap -soapbox -soapboxes -soaped -soapier -soapiest -soapiness -soaping -soaps -soapstone -soapsuds -soapy -soar -soared -soaring -soars -soave -sob -sobbed -sobbing -sober -sobered -soberer -soberest -sobering -soberness -sobers -sobriety -sobriquet -sobriquets -sobs -soccer -societies -society -socioeconomic -sociopath -sociopaths -sock -socked -socket -sockets -socking -socks -socorro -socrates -socratic -sod -soda -sodas -sodded -sodden -sodding -soddy -sodium -sodom -sodomite -sodomites -sodomy -sods -sofa -sofas -sofia -soft -soften -softened -softener -softeners -softening -softens -softer -softest -softhearted -softie -softies -softness -software -softwood -softwoods -softy -soggier -soggiest -sogginess -soggy -soho -sojourn -sojourned -sojourning -sojourns -somber -sombre -sombrero -sombreros -some -somebodies -somebody -someday -somehow -someone -someones -something -somethings -sometime -sometimes -someway -somewhat -somewhats -somewhere -somme -somoza -son -sonar -sonars -sonata -sonatas -sondheim -sondra -song -songbird -songbirds -songhai -songhua -songs -songster -songsters -songwriter -songwriters -sonia -sonic -sonja -sonnet -sonnets -sonnies -sonny -sonority -sonorous -sons -sontag -sony -sonya -soon -sooner -soonest -soot -sooth -soothe -soothed -soothes -soothing -soothsayer -soothsayers -sootier -sootiest -sooty -sop -sophia -sophie -sophism -sophist -sophisticate -sophisticated -sophisticates -sophisticating -sophistication -sophistries -sophistry -sophists -sophomore -sophomores -sophomoric -soporific -soporifics -sopped -soppier -soppiest -sopping -soppy -soprano -sopranos -sops -sopwith -sorbet -sorbets -sorbonne -sorcerer -sorcerers -sorceress -sorceresses -sorcery -sordid -sordidness -sore -sorehead -soreheads -soreness -sorer -sores -sorest -sorghum -sororities -sorority -sorrier -sorriest -sorrow -sorrowed -sorrowing -sorrows -sorry -sort -sorta -sorted -sorter -sorters -sortie -sortied -sortieing -sorties -sorting -sorts -sos -sosa -sot -soto -sots -sottish -soubriquet -soubriquets -sough -soughed -soughing -soughs -sought -sound -sounded -sounder -soundest -sounding -soundings -soundness -soundproof -soundproofed -soundproofing -soundproofs -sounds -soundtrack -soundtracks -soup -souped -souphanouvong -soupier -soupiest -souping -soups -soupy -sour -source -sourced -sourceforge -sources -sourcing -sourdough -sourdoughs -soured -sourer -sourest -souring -sourness -sourpuss -sourpusses -sours -sousa -souse -soused -souses -sousing -south -southampton -southbound -southeast -southeastern -southeasts -southeastward -southern -southerner -southerners -southernmost -southerns -southey -southpaw -southpaws -souths -southward -southwards -southwest -southwester -southwestern -southwesters -southwests -southwestward -souvenir -souvenirs -sovereign -sovereigns -sovereignty -soviet -soviets -sow -sowed -sower -sowers -soweto -sowing -sown -sows -sox -soy -soya -soybean -soybeans -soyinka -soyuz -spa -spaatz -space -spacecraft -spacecrafts -spaced -spaceman -spacemen -spaces -spaceship -spaceships -spacesuit -spacesuits -spacey -spacier -spaciest -spacing -spacious -spaciousness -spacy -spade -spaded -spades -spadework -spading -spaghetti -spahn -spain -spake -spam -spammed -spammer -spammers -spamming -spams -span -spandex -spaniard -spaniards -spanish -spank -spanked -spanking -spankings -spanks -spanned -spanner -spanners -spanning -spans -spar -spare -spared -spareness -sparer -spareribs -spares -sparest -sparing -spark -sparked -sparking -sparks -sparred -sparring -sparrow -sparrows -spars -sparse -sparseness -sparser -sparsest -sparsity -sparta -spartacus -spartan -spartans -spas -spasm -spasmodic -spasms -spastic -spastics -spat -spate -spates -spats -spatted -spatter -spattered -spattering -spatters -spatting -spawn -spawned -spawning -spawns -spay -spayed -spaying -spays -speak -speakeasies -speakeasy -speaker -speakers -speaking -speaks -spear -speared -spearhead -spearheaded -spearheading -spearheads -spearing -spearmint -spears -spec -specced -speccing -specie -species -specific -specification -specifications -specifics -specified -specifier -specifiers -specifies -specify -specifying -specimen -specimens -specious -speck -specked -specking -specks -specs -spectator -spectators -specter -specters -spectra -spectre -spectres -spectroscope -spectroscopes -spectroscopic -spectroscopy -spectrum -spectrums -sped -speech -speeches -speed -speedboat -speedboats -speeded -speeder -speeders -speedier -speediest -speeding -speedometer -speedometers -speeds -speedster -speedsters -speedup -speedups -speedway -speedways -speedy -speer -spence -spencer -spencerian -spend -spender -spenders -spending -spends -spendthrift -spendthrifts -spenser -spenserian -spent -sperm -spermatozoa -spermatozoon -spermicide -spermicides -sperms -sperry -spew -spewed -spewing -spews -sphere -spheres -spheroid -spheroids -sphincter -sphincters -sphinges -sphinx -sphinxes -spica -spice -spiced -spices -spicier -spiciest -spiciness -spicing -spicy -spider -spiders -spidery -spied -spies -spiffier -spiffiest -spiffy -spigot -spigots -spike -spiked -spikes -spikier -spikiest -spiking -spiky -spin -spinach -spine -spines -spinet -spinets -spinier -spiniest -spinnaker -spinnakers -spinner -spinners -spinning -spinoff -spinoffs -spinoza -spins -spinster -spinsterhood -spinsters -spinx -spiny -spiraea -spiraeas -spire -spirea -spireas -spires -spirit -spirited -spiriting -spirits -spirituous -spiro -spirograph -spit -spite -spited -spites -spitfire -spitfires -spiting -spits -spitsbergen -spitted -spitting -spittoon -spittoons -spitz -spock -spokane -spoke -spoken -spokes -spokesman -spokesmen -spokesperson -spokespersons -spokeswoman -spokeswomen -sponge -sponged -sponger -spongers -sponges -spongier -spongiest -sponging -spongy -sponsor -sponsored -sponsoring -sponsors -sponsorship -spontaneity -spontaneous -spoof -spoofed -spoofing -spoofs -spook -spooked -spookier -spookiest -spooking -spooks -spooky -spoon -spooned -spoonerism -spoonerisms -spooning -spoons -spoor -spoored -spooring -spoors -sporadic -spore -spored -spores -sporing -sporran -sport -sported -sportier -sportiest -sporting -sportive -sports -sportscast -sportscaster -sportscasters -sportscasting -sportscasts -sportsman -sportsmanship -sportsmen -sportswear -sportswoman -sportswomen -sporty -spot -spots -spotted -spotter -spotters -spottier -spottiest -spottiness -spotting -spotty -spouse -spouses -spout -spouted -spouting -spouts -sprain -sprained -spraining -sprains -sprang -sprat -sprats -spray -sprayed -sprayer -sprayers -spraying -sprays -spread -spreader -spreaders -spreading -spreads -spreadsheet -spreadsheets -spree -spreed -spreeing -sprees -sprier -spriest -sprig -sprigs -spring -springboard -springboards -springier -springiest -springiness -springing -springs -springsteen -springtime -springy -sprint -sprinted -sprinter -sprinters -sprinting -sprints -sprite -sprites -spritz -spritzed -spritzes -spritzing -sprocket -sprockets -sprout -sprouted -sprouting -sprouts -spruce -spruced -sprucer -spruces -sprucest -sprucing -sprung -spry -spryer -spryest -spryness -spud -spuds -spume -spumed -spumes -spuming -spumone -spumoni -spun -spunk -spunkier -spunkiest -spunky -spur -spurious -spuriousness -spurn -spurned -spurning -spurns -spurred -spurring -spurs -spurt -spurted -spurting -spurts -sputnik -sputter -sputtered -sputtering -sputters -sputum -spy -spying -spyware -squab -squabs -squad -squadron -squadrons -squads -squander -squandered -squandering -squanders -squanto -square -squared -squareness -squarer -squares -squarest -squaring -squash -squashed -squashes -squashier -squashiest -squashing -squashy -squat -squats -squatted -squatter -squatters -squattest -squatting -squaw -squawk -squawked -squawking -squawks -squaws -squeak -squeaked -squeakier -squeakiest -squeaking -squeaks -squeaky -squeamish -squeamishness -squeegee -squeegeed -squeegeeing -squeegees -squeeze -squeezed -squeezer -squeezers -squeezes -squeezing -squibb -squid -squids -squint -squinted -squinter -squintest -squinting -squints -squire -squired -squires -squiring -squirm -squirmed -squirmier -squirmiest -squirming -squirms -squirmy -squirt -squirted -squirting -squirts -squish -squished -squishes -squishier -squishiest -squishing -squishy -srinagar -sriracha -srivijaya -stab -stabbed -stabbing -stabbings -stabs -staccati -staccato -staccatos -stacey -staci -stacie -stack -stacked -stacking -stacks -stacy -stadia -stadium -stadiums -staff -staffed -staffer -staffers -staffing -stafford -staffs -stag -stage -stagecoach -stagecoaches -staged -stagehand -stagehands -stages -stagger -staggered -staggering -staggers -staging -stagings -stagnant -stagnate -stagnated -stagnates -stagnating -stagnation -stags -staid -staider -staidest -stain -stained -staining -stains -stair -staircase -staircases -stairmaster -stairs -stairway -stairways -stake -staked -stakeout -stakeouts -stakes -staking -stamen -stamens -stamford -stamina -stammer -stammered -stammerer -stammerers -stammering -stammers -stamp -stamped -stampede -stampeded -stampedes -stampeding -stamping -stamps -stan -stance -stances -stanch -stanched -stancher -stanches -stanchest -stanching -stanchion -stanchions -stand -standard -standardisation -standardise -standardised -standardises -standardising -standardization -standardize -standardized -standardizes -standardizing -standards -standby -standbys -standing -standings -standish -standoff -standoffish -standoffs -standout -standouts -standpoint -standpoints -stands -stanford -stank -stanton -stanza -stanzas -staph -star -starboard -starbucks -starch -starched -starches -starchier -starchiest -starching -starchy -stardom -stare -stared -stares -starfish -starfishes -stargazer -stargazers -staring -stark -starker -starkest -starkey -starkness -starr -starred -starrier -starriest -starring -starry -stars -start -started -starter -starters -starting -starts -startup -startups -starvation -starve -starved -starves -starving -starvings -stash -stashed -stashes -stashing -state -stated -statehood -statehouse -statehouses -statement -statements -staten -stater -stateroom -staterooms -states -stateside -statesman -statesmanship -statesmen -statewide -static -stating -station -stationary -stationed -stationer -stationers -stationery -stationing -stations -statistic -statistician -statisticians -statistics -stats -statuary -statue -statues -statuesque -statuette -statuettes -stature -statures -status -statuses -statute -statutes -statutory -staubach -staunch -staunched -stauncher -staunches -staunchest -staunching -stave -staved -staves -staving -stay -stayed -staying -stays -stead -steadfast -steadfastness -steadicam -steadied -steadier -steadies -steadiest -steadiness -steads -steady -steadying -steak -steakhouse -steakhouses -steaks -steam -steamboat -steamboats -steamed -steamer -steamers -steamier -steamiest -steaming -steams -steamship -steamships -steamy -steed -steeds -steep -steeped -steeper -steepest -steeping -steepness -steeps -steer -steerage -steered -steering -steers -stefan -stefanie -stein -steinbeck -steinem -steiner -steinmetz -steins -steinway -stem -stemmed -stemming -stems -stench -stenches -stenographer -stenographers -stenographic -stenography -stent -stentorian -stents -step -stepbrother -stepbrothers -stepdad -stepdads -stepdaughter -stepdaughters -stepfather -stepfathers -stephan -stephanie -stephen -stephens -stephenson -stepmom -stepmoms -stepmother -stepmothers -stepparent -stepparents -steppe -stepped -steppes -stepping -steppingstone -steppingstones -steps -stepsister -stepsisters -stepson -stepsons -stereo -stereophonic -stereos -stereoscope -stereoscopes -stereotype -stereotyped -stereotypes -stereotyping -stern -sterna -sterne -sterner -sternest -sternness -sterno -sterns -sternum -sternums -steroid -steroids -stethoscope -stethoscopes -stetson -steuben -steve -stevedore -stevedores -steven -stevens -stevenson -stevie -stew -steward -stewarded -stewardess -stewardesses -stewarding -stewards -stewardship -stewart -stewed -stewing -stews -stick -sticker -stickers -stickier -stickies -stickiest -stickiness -sticking -stickpin -stickpins -sticks -stickup -stickups -sticky -sties -stiff -stiffed -stiffen -stiffened -stiffener -stiffeners -stiffening -stiffens -stiffer -stiffest -stiffing -stiffness -stiffs -stigma -stigmas -stigmata -stigmatise -stigmatised -stigmatises -stigmatising -stigmatize -stigmatized -stigmatizes -stigmatizing -stimson -stine -sting -stinger -stingers -stingier -stingiest -stinginess -stinging -stingray -stingrays -stings -stingy -stink -stinker -stinkers -stinking -stinks -stint -stinted -stinting -stints -stipend -stipends -stir -stirred -stirrer -stirrers -stirring -stirrings -stirrup -stirrups -stirs -stitch -stitched -stitches -stitching -stoat -stoats -stochastic -stock -stockade -stockaded -stockades -stockading -stockbroker -stockbrokers -stocked -stockhausen -stockier -stockiest -stockiness -stocking -stockings -stockroom -stockrooms -stocks -stockton -stocky -stockyard -stockyards -stodgier -stodgiest -stodginess -stodgy -stoic -stoicism -stoics -stoke -stoked -stoker -stokers -stokes -stoking -stomach -stomachache -stomachaches -stomached -stomaching -stomachs -stomp -stomped -stomping -stomps -stone -stoned -stonehenge -stoner -stoners -stones -stoneware -stonework -stoney -stonier -stoniest -stoning -stony -stood -stooge -stooges -stoop -stooped -stooping -stoops -stop -stopcock -stopcocks -stopgap -stopgaps -stopover -stopovers -stoppage -stoppages -stoppard -stopped -stopper -stoppered -stoppering -stoppers -stopping -stops -stopwatch -stopwatches -storage -store -stored -storefront -storefronts -storehouse -storehouses -storekeeper -storekeepers -storeroom -storerooms -stores -storey -storeys -storied -stories -storing -stork -storks -storm -stormed -stormier -stormiest -storminess -storming -storms -stormy -story -storybook -storybooks -stout -stouter -stoutest -stoutness -stove -stovepipe -stovepipes -stoves -stow -stowaway -stowaways -stowe -stowed -stowing -stows -strabo -stradivarius -strafe -strafed -strafes -strafing -straight -straightaway -straightaways -straightedge -straightedges -straighten -straightened -straightening -straightens -straighter -straightest -straightforward -straightjacket -straightjacketed -straightjacketing -straightjackets -straightness -straights -strain -strained -strainer -strainers -straining -strains -strait -straiten -straitened -straitening -straitens -straitjacket -straitjacketed -straitjacketing -straitjackets -straits -strand -stranded -stranding -strands -strange -strangeness -stranger -strangers -strangest -strap -strapped -strapping -straps -strasbourg -strata -stratagem -stratagems -strategic -strategies -strategist -strategists -strategy -stratification -stratified -stratifies -stratify -stratifying -stratosphere -stratospheres -stratum -stratums -strauss -stravinsky -straw -strawberries -strawberry -strawed -strawing -straws -stray -strayed -straying -strays -streak -streaked -streakier -streakiest -streaking -streaks -streaky -stream -streamed -streamer -streamers -streaming -streams -street -streetcar -streetcars -streets -streetwise -streisand -strength -strengthen -strengthened -strengthening -strengthens -strengths -strenuous -strenuousness -strep -streptococci -streptococcus -streptomycin -stress -stressed -stresses -stressing -stretch -stretched -stretcher -stretchers -stretches -stretchier -stretchiest -stretching -stretchy -strew -strewed -strewing -strewn -strews -striated -stricken -strict -stricter -strictest -strictness -stricture -strictures -stridden -stride -strident -strides -striding -strife -strike -strikeout -strikeouts -striker -strikers -strikes -striking -strikings -strindberg -string -stringed -stringency -stringent -stringer -stringers -stringier -stringiest -stringing -strings -stringy -strip -stripe -striped -stripes -striping -stripped -stripper -strippers -stripping -strips -stript -striptease -stripteased -stripteases -stripteasing -strive -strived -striven -strives -striving -strobe -strobes -strode -stroke -stroked -strokes -stroking -strong -strongbox -strongboxes -stronger -strongest -strontium -strop -strophe -strophes -stropped -stropping -strops -strove -struck -structure -structured -structures -structuring -strum -strummed -strumming -strumpet -strumpets -strums -strung -strut -struts -strutted -strutting -strychnine -stu -stuart -stuarts -stub -stubbed -stubbier -stubbiest -stubbing -stubborn -stubborner -stubbornest -stubbornness -stubby -stubs -stucco -stuccoed -stuccoes -stuccoing -stuccos -stuck -stud -studded -studding -studebaker -student -students -studentship -studentships -studied -studies -studio -studios -studious -studs -study -studying -stuff -stuffed -stuffier -stuffiest -stuffiness -stuffing -stuffings -stuffs -stuffy -stump -stumped -stumpier -stumpiest -stumping -stumps -stumpy -stun -stung -stunk -stunned -stunning -stuns -stunt -stunted -stunting -stunts -stupefaction -stupefied -stupefies -stupefy -stupefying -stupendous -stupid -stupider -stupidest -stupidities -stupidity -stupids -stupor -stupors -sturdier -sturdiest -sturdiness -sturdy -sturgeon -sturgeons -stutter -stuttered -stutterer -stutterers -stuttering -stutters -stuttgart -stuyvesant -sty -stye -styes -stygian -stymie -stymied -stymieing -stymies -stymying -styptic -styptics -styrofoam -styrofoams -styron -styx -suarez -suave -suaver -suavest -suavity -sub -subaru -subatomic -subbasement -subbasements -subbed -subbing -subcommittee -subcommittees -subcompact -subcompacts -subconscious -subcontinent -subcontinents -subcontract -subcontracted -subcontracting -subcontractor -subcontractors -subcontracts -subcutaneous -subdivide -subdivided -subdivides -subdividing -subdivision -subdivisions -subdue -subdued -subdues -subduing -subgroup -subgroups -subhead -subheading -subheadings -subheads -subhuman -subhumans -subject -subjected -subjecting -subjection -subjective -subjectivity -subjects -subjoin -subjoined -subjoining -subjoins -subjugate -subjugated -subjugates -subjugating -subjugation -subjunctive -subjunctives -submarine -submarines -submerge -submerged -submergence -submerges -submerging -submerse -submersed -submerses -submersing -submersion -submission -submissions -submissive -submit -submits -submitted -submitter -submitting -subordinate -subordinated -subordinates -subordinating -subordination -suborn -subornation -suborned -suborning -suborns -subpoena -subpoenaed -subpoenaing -subpoenas -subprime -subprogram -subprograms -subroutine -subroutines -subs -subscribe -subscribed -subscriber -subscribers -subscribes -subscribing -subscript -subscription -subscriptions -subscripts -subsection -subsections -subsequent -subservience -subservient -subset -subsets -subside -subsided -subsidence -subsides -subsidiaries -subsidiary -subsidies -subsiding -subsidisation -subsidise -subsidised -subsidises -subsidising -subsidization -subsidize -subsidized -subsidizes -subsidizing -subsidy -subsist -subsisted -subsistence -subsisting -subsists -subsonic -subspace -substance -substances -substandard -substantiate -substantiated -substantiates -substantiating -substantiation -substantiations -substantive -substantives -substation -substations -substitute -substituted -substitutes -substituting -substitution -substitutions -substrata -substrate -substratum -substratums -substructure -substructures -subsume -subsumed -subsumes -subsuming -subsystem -subsystems -subteen -subteens -subterfuge -subterfuges -subterranean -subtract -subtracted -subtracting -subtraction -subtractions -subtracts -subtrahend -subtrahends -suburb -suburban -suburbanite -suburbanites -suburbans -suburbia -suburbs -subversion -subversive -subversives -subvert -subverted -subverting -subverts -subway -subways -succeed -succeeded -succeeding -succeeds -success -successes -succession -successions -successive -successor -successors -succinct -succincter -succinctest -succinctness -succor -succored -succoring -succors -succotash -succour -succoured -succouring -succours -succumb -succumbed -succumbing -succumbs -such -suck -sucked -sucker -suckered -suckering -suckers -sucking -sucks -sucre -sucrets -sucrose -suction -suctioned -suctioning -suctions -sudan -sudanese -sudden -suddenness -sudoku -sudra -suds -sudsier -sudsiest -sudsy -sue -sued -suede -sues -suet -suetonius -suez -suffer -sufferance -suffered -sufferer -sufferers -suffering -sufferings -suffers -suffice -sufficed -suffices -sufficiency -sufficient -sufficing -suffix -suffixed -suffixes -suffixing -suffocate -suffocated -suffocates -suffocating -suffocation -suffragan -suffragans -suffrage -suffragette -suffragettes -suffragist -suffragists -suffuse -suffused -suffuses -suffusing -suffusion -sufi -sufism -sugar -sugarcane -sugarcoat -sugarcoated -sugarcoating -sugarcoats -sugared -sugarier -sugariest -sugaring -sugars -sugary -suggest -suggested -suggester -suggesting -suggestion -suggestions -suggestive -suggests -suharto -sui -suicide -suicides -suing -suit -suitcase -suitcases -suite -suited -suites -suiting -suitor -suitors -suits -sukarno -sukiyaki -sukkot -sukkoth -sukkoths -sum -sumac -sumach -sumatra -sumeria -sumerian -summaries -summarise -summarised -summarises -summarising -summarize -summarized -summarizes -summarizing -summary -summation -summations -summed -summer -summered -summerhouse -summerhouses -summering -summers -summertime -summery -summing -summit -summitry -summits -summon -summoned -summoner -summoners -summoning -summons -summonsed -summonses -summonsing -sumner -sumo -sump -sumps -sumptuous -sums -sumter -sun -sunbathe -sunbathed -sunbather -sunbathers -sunbathes -sunbathing -sunbeam -sunbeams -sunbonnet -sunbonnets -sunburn -sunburned -sunburning -sunburns -sunburnt -sundae -sundaes -sundanese -sundas -sunday -sundays -sunder -sundered -sundering -sunders -sundown -sundowns -sundries -sundry -sunfish -sunfishes -sung -sunk -sunken -sunkist -sunned -sunni -sunnier -sunniest -sunning -sunny -sunrise -sunrises -sunroof -sunroofs -suns -sunscreen -sunscreens -sunset -sunsets -sunshine -sunspot -sunspots -sunstroke -suntan -suntanned -suntanning -suntans -sunup -sup -super -superabundance -superabundances -superabundant -superannuate -superannuated -superannuates -superannuating -superb -superber -superbest -supercharge -supercharged -supercharger -superchargers -supercharges -supercharging -supercomputer -supercomputers -superconductivity -superconductor -superconductors -superego -superegos -superfund -superhighway -superhighways -superhuman -superimpose -superimposed -superimposes -superimposing -superintend -superintended -superintendence -superintendency -superintendent -superintendents -superintending -superintends -superior -superiority -superiors -superman -supermarket -supermarkets -supermen -supernova -supernovae -supernovas -supernumeraries -supernumerary -superpower -superpowers -supers -superscript -superscripts -supersede -superseded -supersedes -superseding -supersize -supersized -supersizes -supersizing -supersonic -superstar -superstars -superstition -superstitions -superstitious -superstructure -superstructures -supertanker -supertankers -supervene -supervened -supervenes -supervening -supervise -supervised -supervises -supervising -supervision -supervisions -supervisor -supervisors -supervisory -supine -supped -supper -suppers -supping -support -supported -supporter -supporters -supporting -supportive -supports -suppose -supposed -supposes -supposing -supposition -suppositions -suppositories -suppository -suppress -suppressed -suppresses -suppressing -suppression -suppurate -suppurated -suppurates -suppurating -suppuration -supremacist -supremacists -supremacy -supreme -sups -surabaya -surat -surcease -surceased -surceases -surceasing -surcharge -surcharged -surcharges -surcharging -sure -surefire -surefooted -sureness -surer -surest -sureties -surety -surf -surface -surfaced -surfaces -surfacing -surfboard -surfboarded -surfboarding -surfboards -surfed -surfeit -surfeited -surfeiting -surfeits -surfer -surfers -surfing -surfs -surge -surged -surgeon -surgeons -surgeries -surgery -surges -surging -surinam -suriname -surmise -surmised -surmises -surmising -surmount -surmounted -surmounting -surmounts -surname -surnames -surpass -surpassed -surpasses -surpassing -surprise -surprised -surprises -surprising -surprisings -surrender -surrendered -surrendering -surrenders -surreptitious -surrey -surreys -surrogate -surrogates -surround -surrounded -surrounding -surroundings -surrounds -surtax -surtaxed -surtaxes -surtaxing -survey -surveyed -surveying -surveyor -surveyors -surveys -survive -survived -survives -surviving -survivor -survivors -surya -susan -susana -susanna -susanne -suse -sushi -susie -suspect -suspected -suspecting -suspects -suspend -suspended -suspender -suspenders -suspending -suspends -suspense -suspension -suspensions -suspicion -suspicions -suspicious -susquehanna -sussex -sustain -sustained -sustaining -sustains -sustenance -sutton -suture -sutured -sutures -suturing -suva -suwanee -suzanne -suzette -suzhou -suzuki -suzy -sven -svn -swab -swabbed -swabbing -swabs -swag -swagged -swagger -swaggered -swaggerer -swaggering -swaggers -swagging -swags -swain -swains -swam -swami -swamis -swammerdam -swamp -swamped -swampier -swampiest -swamping -swamps -swampy -swan -swanee -swank -swanked -swanker -swankest -swankier -swankiest -swanking -swanks -swanky -swans -swansea -swanson -swap -swapped -swapping -swaps -sward -swards -swarm -swarmed -swarming -swarms -swarthier -swarthiest -swarthy -swash -swashed -swashes -swashing -swastika -swastikas -swat -swatch -swatches -swath -swathe -swathed -swathes -swathing -swaths -swats -swatted -swatter -swattered -swattering -swatters -swatting -sway -swaybacked -swayed -swaying -sways -swazi -swe -swear -swearer -swearers -swearing -swears -swearword -swearwords -sweat -sweater -sweaters -sweatier -sweatiest -sweating -sweatpants -sweats -sweatshirt -sweatshirts -sweatshop -sweatshops -sweaty -swede -sweden -swedenborg -swedes -swedish -sweeney -sweep -sweeper -sweepers -sweeping -sweepings -sweeps -sweepstake -sweepstakes -sweet -sweetbread -sweetbreads -sweetbriar -sweetbriars -sweetbrier -sweetbriers -sweeten -sweetened -sweetener -sweeteners -sweetening -sweetens -sweeter -sweetest -sweetheart -sweethearts -sweetie -sweeties -sweetish -sweetmeat -sweetmeats -sweetness -sweets -swept -swerve -swerved -swerves -swerving -swift -swifter -swiftest -swiftness -swifts -swig -swigged -swigging -swigs -swim -swimmer -swimmers -swimming -swims -swimsuit -swimsuits -swinburne -swine -swines -swing -swinger -swingers -swinging -swings -swinish -swipe -swiped -swipes -swiping -swish -swished -swisher -swishes -swishest -swishing -swiss -swissair -swisses -switch -switchback -switchbacks -switchboard -switchboards -switched -switcher -switches -switching -swoon -swooned -swooning -swoons -swoop -swooped -swooping -swoops -swop -swopped -swopping -swops -sword -swordfish -swordfishes -swords -swordsman -swordsmen -swore -sworn -swum -swung -sybarite -sybarites -sybaritic -sycamore -sycamores -sycophant -sycophantic -sycophants -sydney -sykes -symbioses -symbiosis -symbiotic -symmetric -symmetries -symmetry -sympathetic -sympathies -sympathise -sympathised -sympathiser -sympathisers -sympathises -sympathising -sympathize -sympathized -sympathizer -sympathizers -sympathizes -sympathizing -sympathy -symphonic -symphonies -symphony -symposia -symposium -symposiums -symptom -symptomatic -symptoms -synagog -synagogs -synagogue -synagogues -synapse -synapses -sync -synced -synch -synched -synches -synching -synchronisation -synchronisations -synchronise -synchronised -synchronises -synchronising -synchronization -synchronizations -synchronize -synchronized -synchronizes -synchronizing -synchronous -synchs -syncing -syncopate -syncopated -syncopates -syncopating -syncopation -syncs -syndicate -syndicated -syndicates -syndicating -syndication -syndrome -syndromes -synergism -synergistic -synergy -synge -synod -synods -synonym -synonymous -synonyms -synopses -synopsis -syntactic -syntax -syntheses -synthesis -synthesise -synthesised -synthesiser -synthesisers -synthesises -synthesising -synthesize -synthesized -synthesizer -synthesizers -synthesizes -synthesizing -synthetic -synthetics -synthetize -synthetized -synthetizes -synthetizing -syphon -syphoned -syphoning -syphons -syracuse -syria -syriac -syrian -syrians -syringe -syringed -syringes -syringing -syrup -syrups -syrupy -system -systematic -systematise -systematised -systematises -systematising -systematize -systematized -systematizes -systematizing -systemic -systemics -systems -szechuan -szymborska -tab -tabasco -tabatha -tabbed -tabbies -tabbing -tabby -tabitha -taboo -tabooed -tabooing -taboos -tabriz -tabs -tabu -tabued -tabuing -tabus -tachometer -tachometers -tacit -tacitness -taciturn -taciturnity -tacitus -tack -tacked -tackier -tackiest -tackiness -tacking -tacks -tacky -taco -tacoma -tacos -tact -tactic -tactician -tacticians -tactics -tad -tads -tadzhik -tadzhikistan -taegu -taejon -taffeta -taffies -taffy -taft -tag -tagged -tagging -tagore -tags -tagus -tahiti -tahitian -tahitians -tahoe -taichung -taine -taint -tainted -tainting -taints -taipei -taiping -taiwan -taiwanese -taiyuan -tajikistan -take -takeaways -taken -takeoff -takeoffs -takeout -takeouts -takeover -takeovers -taker -takers -takes -taking -takings -tam -tamara -tamarind -tamarinds -tambourine -tambourines -tame -tamed -tameka -tameness -tamer -tamera -tamers -tames -tamest -tami -tamika -taming -tammany -tammi -tammie -tammuz -tammy -tamp -tampa -tampax -tamped -tamper -tampered -tampering -tampers -tamping -tampon -tampons -tamps -tamra -tams -tamworth -tan -tanager -tanagers -tancred -tandem -tandems -taney -tang -tanganyika -tangent -tangents -tangerine -tangerines -tangier -tangiers -tangiest -tango -tangoed -tangoing -tangos -tangs -tangshan -tangy -tania -tanisha -tank -tankard -tankards -tanked -tanker -tankers -tanking -tanks -tanned -tanner -tanneries -tanners -tannery -tannest -tannin -tanning -tans -tansy -tantamount -tantrum -tantrums -tanya -tanzania -tanzanian -tanzanians -tao -taoism -taoisms -taoist -taoists -tap -tape -taped -taper -tapered -tapering -tapers -tapes -tapestries -tapestry -tapeworm -tapeworms -taping -tapioca -tapir -tapirs -tapped -tapping -taproom -taprooms -taproot -taproots -taps -tar -tara -tarantino -tarawa -tarazed -tardier -tardiest -tardiness -tardy -tare -tared -tares -target -targeted -targeting -targets -tariff -tariffs -tarim -taring -tarkenton -tarkington -tarmac -tarmacked -tarmacking -tarmacs -tarnish -tarnished -tarnishes -tarnishing -taro -taros -tarot -tarots -tarp -tarpon -tarpons -tarps -tarragon -tarragons -tarred -tarried -tarrier -tarries -tarriest -tarring -tarry -tarrying -tars -tart -tartan -tartans -tartar -tartars -tartary -tarter -tartest -tartness -tarts -tartuffe -tarzan -taser -tasered -tasering -tasers -tasha -tashkent -task -tasked -tasking -taskmaster -taskmasters -tasks -tasman -tasmania -tasmanian -tass -taste -tasted -taster -tasters -tastes -tastier -tastiest -tastiness -tasting -tasty -tat -tatar -tatars -tate -tats -tatted -tatter -tattered -tattering -tatters -tatting -tattoo -tattooed -tattooing -tattooist -tattooists -tattoos -tatty -tatum -taught -taunt -taunted -taunting -taunts -taupe -taurus -tauruses -taut -tauter -tautest -tautness -tavern -taverns -tawdrier -tawdriest -tawdriness -tawdry -tawney -tawnier -tawniest -tawny -tax -taxation -taxed -taxes -taxi -taxicab -taxicabs -taxidermist -taxidermists -taxidermy -taxied -taxies -taxiing -taxing -taxis -taxonomic -taxonomies -taxonomy -taxpayer -taxpayers -taxying -tchaikovsky -tea -teabag -teach -teacher -teachers -teaches -teaching -teachings -teacup -teacups -teak -teaks -team -teamed -teaming -teammate -teammates -teams -teamster -teamsters -teamwork -teapot -teapots -tear -teardrop -teardrops -teared -teargas -teargases -teargassed -teargasses -teargassing -tearier -teariest -tearing -tearjerker -tearjerkers -tearoom -tearooms -tears -teary -teas -tease -teased -teaser -teasers -teases -teasing -teaspoon -teaspoons -teat -teatime -teats -technician -technicians -technique -techniques -techno -technocracy -technocrat -technocrats -techs -tectonics -tecumseh -ted -teddy -tedious -tediousness -tedium -tee -teed -teeing -teem -teemed -teeming -teems -teen -teenage -teenaged -teenager -teenagers -teenier -teeniest -teens -teensier -teensiest -teensy -teeny -teepee -teepees -tees -teeter -teetered -teetering -teeters -teeth -teethe -teethed -teethes -teething -teheran -tehran -temerity -temp -tempe -temped -temper -tempera -temperament -temperaments -temperance -temperas -temperate -temperature -temperatures -tempered -tempering -tempers -tempest -tempests -tempestuous -tempestuousness -tempi -temping -tempo -temporaries -temporary -temporise -temporised -temporises -temporising -temporize -temporized -temporizes -temporizing -tempos -temps -tempt -temptation -temptations -tempted -tempter -tempters -tempting -temptress -temptresses -tempts -tempura -ten -tenacious -tenacity -tenancies -tenancy -tenant -tenanted -tenanting -tenants -tend -tended -tendencies -tendency -tendentious -tendentiousness -tender -tendered -tenderer -tenderest -tenderfeet -tenderfoot -tenderfoots -tenderhearted -tendering -tenderise -tenderised -tenderiser -tenderisers -tenderises -tenderising -tenderize -tenderized -tenderizer -tenderizers -tenderizes -tenderizing -tenderness -tenders -tending -tendinitis -tendon -tendonitis -tendons -tends -tenement -tenements -tenet -tenets -tennessee -tennis -tennyson -tenon -tenoned -tenoning -tenons -tenor -tenors -tenpin -tenpins -tens -tense -tensed -tenseness -tenser -tenses -tensest -tensing -tension -tensions -tensor -tensors -tent -tentative -tented -tenth -tenths -tenting -tents -tenuous -tenuousness -tenure -tenured -tenures -tenuring -teotihuacan -tepee -tepees -tepid -terabit -terabits -terabyte -terabytes -tercentenaries -tercentenary -terence -teresa -tereshkova -teri -term -termagant -termagants -termed -terminate -terminated -terminates -terminating -termination -terminations -terminator -terminators -terming -termini -terminus -terminuses -termite -termites -terms -tern -terns -terpsichore -terr -terra -terrace -terraced -terraces -terracing -terrain -terrains -terran -terrance -terrapin -terrapins -terraria -terrarium -terrariums -terrence -terri -terrie -terrier -terriers -terrific -terrified -terrifies -terrify -terrifying -territories -territory -terror -terrorise -terrorised -terrorises -terrorising -terrorism -terrorist -terrorists -terrorize -terrorized -terrorizes -terrorizing -terrors -terry -terse -terseness -terser -tersest -tertiary -tess -tessa -tessie -test -testament -testamentary -testaments -testate -testates -tested -tester -testers -testes -testier -testiest -testified -testifies -testify -testifying -testimonies -testimony -testiness -testing -testis -testosterone -tests -testy -tet -tetanus -tether -tethered -tethering -tethers -tethys -tetons -tetrahedra -tetrahedron -tetrahedrons -teutonic -tevet -texaco -texan -texans -texas -text -textbook -textbooks -texted -texting -texts -texture -textured -textures -texturing -thackeray -thad -thaddeus -thai -thais -thames -than -thanh -thank -thanked -thanking -thanks -thanksgiving -thanksgivings -thant -thar -tharp -that -thatch -thatched -thatcher -thatches -thatching -thaw -thawed -thawing -thaws -the -thea -theater -theaters -theatre -theatres -thebes -thee -thees -theft -thefts -their -theirs -theism -theist -theistic -theists -them -thematic -theme -themes -then -thence -thenceforth -thenceforward -theocracies -theocracy -theocratic -theocritus -theodora -theodore -theodoric -theodosius -theorem -theorems -theoretic -theoretician -theoreticians -theories -theorise -theorised -theorises -theorising -theorist -theorists -theorize -theorized -theorizes -theorizing -theory -theosophy -therapeutic -therapeutics -therapies -therapist -therapists -therapy -theravada -there -thereabout -thereabouts -thereafter -thereby -therefore -therefrom -therein -thereof -thereon -theresa -therese -thereto -thereupon -therewith -thermionic -thermodynamic -thermodynamics -thermometer -thermometers -thermos -thermoses -thermostat -thermostatic -thermostats -theron -thesauri -thesaurus -thesauruses -these -theses -theseus -thesis -thespian -thespians -thespis -theta -they -thiamin -thiamine -thick -thicken -thickened -thickener -thickeners -thickening -thickenings -thickens -thicker -thickest -thicket -thickets -thickness -thicknesses -thickset -thief -thieu -thieve -thieved -thievery -thieves -thieving -thievish -thigh -thighbone -thighbones -thighs -thimbu -thin -thine -thing -thingamajig -thingamajigs -things -think -thinker -thinkers -thinking -thinks -thinned -thinner -thinners -thinness -thinnest -thinning -thins -third -thirds -thirst -thirsted -thirstier -thirstiest -thirsting -thirsts -thirsty -thirteen -thirteens -thirteenth -thirteenths -thirties -thirtieth -thirtieths -thirty -this -thither -tho -thomas -thomism -thomistic -thompson -thomson -thong -thongs -thor -thoraces -thoracic -thorax -thoraxes -thorazine -thoreau -thorium -thorn -thornier -thorniest -thorns -thornton -thorny -thorough -thoroughbred -thoroughbreds -thorougher -thoroughest -thoroughfare -thoroughfares -thoroughgoing -thoroughness -thorpe -those -thoth -thou -though -thought -thoughts -thous -thousand -thousands -thousandth -thousandths -thrace -thracian -thrash -thrashed -thrasher -thrashers -thrashes -thrashing -thrashings -thread -threadbare -threaded -threading -threads -threat -threaten -threatened -threatening -threatens -threats -three -threes -threescore -threescores -threesome -threesomes -threnodies -threnody -thresh -threshed -thresher -threshers -threshes -threshing -threw -thrice -thrift -thriftier -thriftiest -thriftiness -thrifts -thrifty -thrive -thrived -thriven -thrives -thriving -throat -throatier -throatiest -throatiness -throats -throaty -throb -throbbed -throbbing -throbs -throe -throes -thromboses -thrombosis -throne -thrones -throng -thronged -thronging -throngs -through -throughout -throughput -throughway -throughways -throve -throw -throwaway -throwaways -throwback -throwbacks -thrower -throwers -throwing -thrown -throws -thru -thrum -thrummed -thrumming -thrums -thrush -thrushes -thrust -thrusting -thrusts -thruway -thruways -thucydides -thud -thudded -thudding -thuds -thug -thugs -thumb -thumbed -thumbing -thumbs -thumbscrew -thumbscrews -thumbtack -thumbtacks -thump -thumped -thumping -thumps -thunder -thunderbird -thundered -thunderhead -thunderheads -thundering -thunderous -thunders -thundershower -thundershowers -thunderstorm -thunderstorms -thunderstruck -thurber -thurman -thurmond -thursday -thursdays -thus -thutmose -thwack -thwacked -thwacking -thwacks -thwart -thwarted -thwarting -thwarts -thy -thyme -thymi -thymus -thymuses -thyroid -thyroids -tia -tianjin -tiara -tiaras -tiber -tiberius -tibet -tibetan -tibetans -tibia -tibiae -tibias -tic -tick -ticked -ticker -tickers -ticket -ticketed -ticketing -ticketmaster -tickets -ticking -ticks -ticonderoga -tics -tidbit -tidbits -tide -tided -tides -tidewater -tidewaters -tidied -tidier -tidies -tidiest -tidiness -tiding -tidings -tidy -tidying -tie -tiebreaker -tiebreakers -tied -tieing -tienanmen -tientsin -tier -tiers -ties -tiff -tiffany -tiffed -tiffing -tiffs -tiger -tigers -tight -tighten -tightened -tightening -tightens -tighter -tightest -tightfisted -tightness -tightrope -tightropes -tights -tightwad -tightwads -tigress -tigresses -tigris -tijuana -tike -tikes -tim -timber -timbered -timbering -timbers -timbre -timbres -timbuktu -time -timed -timekeeper -timekeepers -timepiece -timepieces -timer -timers -times -timestamp -timestamps -timeworn -timex -timezone -timid -timider -timidest -timidity -timing -timings -timmy -timon -timor -timorous -timothy -timour -timpani -timpanist -timpanists -timur -timurid -tin -tina -tincture -tinctured -tinctures -tincturing -tinder -tinderbox -tinderboxes -tine -tines -ting -tinge -tinged -tingeing -tinges -tinging -tings -tinier -tiniest -tinker -tinkered -tinkering -tinkers -tinkertoy -tinned -tinnier -tinniest -tinning -tinny -tins -tinsmith -tinsmiths -tint -tinted -tinting -tintoretto -tints -tiny -tip -tipi -tipis -tippecanoe -tipped -tipper -tipperary -tippers -tipping -tips -tipsier -tipsiest -tipster -tipsters -tipsy -tiptoe -tiptoed -tiptoeing -tiptoes -tiptop -tiptops -tirade -tirades -tirana -tire -tired -tireder -tiredest -tiredness -tires -tiresias -tiresome -tiresomeness -tiring -tiro -tiros -tisha -tishri -tissue -tissues -tit -titan -titania -titanic -titanium -titans -titbit -titbits -tithe -tithed -tithes -tithing -titian -titicaca -titmice -titmouse -tito -tits -titter -tittered -tittering -titters -titus -tizzies -tizzy -toad -toadied -toadies -toads -toady -toadying -toast -toasted -toaster -toasters -toastier -toastiest -toasting -toastmaster -toastmasters -toasts -toasty -tobacco -tobaccoes -tobacconist -tobacconists -tobaccos -tobago -toboggan -tobogganed -tobogganing -toboggans -toby -tocantins -tocsin -tocsins -tod -today -todd -toddies -toddy -toe -toed -toeing -toes -toffee -toffees -toffies -toffy -tofu -tog -toga -togae -togas -together -togetherness -togo -togs -tojo -tokay -toke -toked -token -tokenism -tokens -tokes -toking -tokugawa -tokyo -tom -tomahawk -tomahawked -tomahawking -tomahawks -tomas -tomato -tomatoes -tomb -tombaugh -tombed -tombing -tomboy -tomboys -tombs -tombstone -tombstones -tomcat -tomcats -tome -tomes -tommie -tommy -tomorrow -tomorrows -tompkins -toms -tomsk -ton -tone -toned -toner -tones -tong -tonga -tongan -tongans -tongs -tongue -tongued -tongues -tonguing -toni -tonia -tonic -tonics -tonier -toniest -tonight -toning -tonnage -tonnages -tonne -tonnes -tons -tonsure -tonsured -tonsures -tonsuring -tonto -tony -tonya -too -took -toot -tooted -tooth -toothache -toothaches -toothbrush -toothbrushes -toothed -toothier -toothiest -toothpaste -toothpastes -toothpick -toothpicks -toothsome -toothy -tooting -toots -top -topaz -topazes -topcoat -topcoats -topeka -topic -topics -topknot -topknots -topmast -topmasts -topmost -topographer -topographers -topographic -topographies -topography -topped -topping -toppings -tops -topside -topsides -topsy -toque -toques -tor -torah -torahs -torch -torched -torches -torching -tore -toreador -toreadors -tories -torment -tormented -tormenter -tormenters -tormenting -tormentor -tormentors -torments -torn -tornado -tornadoes -tornados -toronto -torpedo -torpedoed -torpedoes -torpedoing -torpedos -torpid -torpidity -torpor -torque -torqued -torquemada -torques -torquing -torrance -torrens -torrent -torrents -torres -torrid -tors -torsi -torsion -torso -torsos -tort -torte -tortes -tortoise -tortoises -torts -tortuga -tortuous -torture -tortured -torturer -torturers -tortures -torturing -torus -tory -tosca -toscanini -toshiba -toss -tossed -tosses -tossing -tossup -tossups -tost -tot -tote -toted -totem -totemic -totems -totes -toting -toto -tots -totted -totter -tottered -tottering -totters -totting -toucan -toucans -touch -touchdown -touchdowns -touched -touches -touchier -touchiest -touching -touchings -touchstone -touchstones -touchy -tough -toughen -toughened -toughening -toughens -tougher -toughest -toughness -toughs -toupee -toupees -tour -toured -touring -tourism -tourist -tourists -tournament -tournaments -tourney -tourneys -tourniquet -tourniquets -tours -tout -touted -touting -touts -tow -toward -towards -towed -tower -towered -towering -towers -towhead -towheaded -towheads -towing -town -townes -townhouse -townhouses -towns -townsend -township -townships -townsman -townsmen -towpath -towpaths -tows -toxaemia -toxemia -toxic -toxicity -toxin -toxins -toy -toyed -toying -toynbee -toyoda -toyota -toys -trace -traced -tracer -traceries -tracers -tracery -traces -tracey -trachea -tracheae -tracheas -tracheotomies -tracheotomy -traci -tracie -tracing -tracings -track -tracked -tracker -trackers -tracking -tracks -tract -traction -tractor -tractors -tracts -tracy -trade -traded -trademark -trademarked -trademarking -trademarks -trader -traders -trades -tradesman -tradesmen -trading -tradition -traditions -traduce -traduced -traduces -traducing -traffic -trafficked -trafficker -traffickers -trafficking -traffics -tragedian -tragedians -tragedies -tragedy -tragic -tragicomedies -tragicomedy -train -trained -trainee -trainees -trainer -trainers -training -trains -traipse -traipsed -traipses -traipsing -trait -traitor -traitorous -traitors -traits -trajan -trajectories -trajectory -tram -trammed -tramming -tramp -tramped -tramping -tramps -trams -tran -trance -trances -transact -transacted -transacting -transaction -transactions -transacts -transcaucasia -transceiver -transceivers -transcend -transcended -transcendence -transcendent -transcending -transcends -transcribe -transcribed -transcribes -transcribing -transcript -transcription -transcriptions -transcripts -transducer -transducers -transept -transepts -transfer -transference -transferred -transferring -transfers -transfiguration -transfigure -transfigured -transfigures -transfiguring -transfinite -transfix -transfixed -transfixes -transfixing -transfixt -transform -transformation -transformations -transformed -transformer -transformers -transforming -transforms -transfuse -transfused -transfuses -transfusing -transfusion -transfusions -transgress -transgressed -transgresses -transgressing -transgression -transgressions -transgressor -transgressors -transience -transiency -transient -transients -transistor -transistors -transit -transited -transiting -transition -transitioned -transitioning -transitions -transitive -transitives -transitory -transits -transitted -transitting -transmigrate -transmigrated -transmigrates -transmigrating -transmigration -transmission -transmissions -transmit -transmits -transmitted -transmitter -transmitters -transmitting -transmutation -transmutations -transmute -transmuted -transmutes -transmuting -transoceanic -transom -transoms -transparencies -transparency -transparent -transpiration -transpire -transpired -transpires -transpiring -transponder -transponders -transport -transportation -transported -transporter -transporters -transporting -transports -transpose -transposed -transposes -transposing -transposition -transpositions -transship -transshipment -transshipped -transshipping -transships -transubstantiation -transverse -transverses -transvestism -transvestite -transvestites -trap -trapdoor -trapdoors -trapeze -trapezes -trapezoid -trapezoids -trapped -trapper -trappers -trapping -trappings -trappist -traps -trapshooting -trash -trashcan -trashcans -trashed -trashes -trashier -trashiest -trashing -trashy -trauma -traumas -traumata -traumatic -traumatise -traumatised -traumatises -traumatising -traumatize -traumatized -traumatizes -traumatizing -traverse -traversed -traverses -traversing -travestied -travesties -travesty -travestying -travis -tray -trays -treacheries -treacherous -treachery -tread -treading -treads -treason -treasonous -treasure -treasured -treasurer -treasurers -treasures -treasuries -treasuring -treasury -treat -treated -treaties -treating -treatise -treatises -treatment -treatments -treats -treaty -tree -treed -treeing -trees -treetop -treetops -trek -trekked -trekkie -trekking -treks -tremendous -tremor -tremors -trench -trenchant -trenched -trenches -trenching -trend -trended -trendier -trendies -trendiest -trending -trends -trendy -trent -trenton -trepidation -trespass -trespassed -trespasser -trespassers -trespasses -trespassing -tress -tresses -trevino -trevor -trey -triad -triads -triage -triassic -tribe -tribes -tribesman -tribesmen -tribune -tribunes -tributaries -tributary -tribute -tributes -trice -triceps -tricepses -triceratops -triceratopses -tricia -trick -tricked -trickery -trickier -trickiest -trickiness -tricking -tricks -trickster -tricksters -tricky -trident -tridents -tried -tries -trieste -trifecta -trifectas -trig -trigger -triggered -triggering -triggers -trigonometric -trigonometry -trike -trikes -trim -trimaran -trimarans -trimester -trimesters -trimmed -trimmer -trimmers -trimmest -trimming -trimmings -trimness -trims -trimurti -trina -trinidad -trinities -trinity -trinket -trinkets -trio -trios -trip -tripartite -tripe -tripitaka -tripod -tripods -tripos -trippe -tripped -tripping -trips -triptych -triptychs -trisect -trisected -trisecting -trisects -trisha -tristan -trite -triteness -triter -tritest -triton -triumph -triumphant -triumphed -triumphing -triumphs -triumvirate -triumvirates -trivet -trivets -trivia -trobriand -trochee -trochees -trod -trodden -troika -troikas -trojan -trojans -trombone -trombones -trombonist -trombonists -tromp -tromped -tromping -tromps -trondheim -troop -trooped -trooper -troopers -trooping -troops -troopship -troopships -trope -tropes -trophies -trophy -tropic -tropicana -tropics -tropism -tropisms -troposphere -tropospheres -trot -troth -trots -trotsky -trotted -trotter -trotters -trotting -troubadour -troubadours -trough -troughs -trounce -trounced -trounces -trouncing -troupe -trouped -trouper -troupers -troupes -trouping -trouser -trousers -trousseau -trousseaus -trousseaux -trout -trouts -troy -troyes -troys -truancy -truant -truanted -truanting -truants -truce -truces -truck -trucked -truckee -trucker -truckers -trucking -trucks -trudeau -trudge -trudged -trudges -trudging -trudy -true -trued -trueing -truer -trues -truest -truffaut -truing -truism -truisms -truman -trump -trumped -trumpery -trumpet -trumpeted -trumpeter -trumpeters -trumpeting -trumpets -trumping -trumps -truncate -truncated -truncates -truncating -truncation -truncheon -truncheons -trunk -trunking -trunks -truss -trussed -trusses -trussing -trust -trusted -trustee -trustees -trusteeship -trusteeships -trustier -trusties -trustiest -trusting -trusts -trustworthier -trustworthiest -trustworthiness -trustworthy -trusty -truth -truther -truthers -truthiness -truths -try -trying -tryout -tryouts -tryst -trysted -trysting -trysts -tsar -tsarina -tsarinas -tsars -tsimshian -tsingtao -tsitsihar -tsongkhapa -tsunami -tsunamis -tswana -tuamotu -tuareg -tub -tuba -tubas -tubbier -tubbiest -tubby -tube -tubed -tuber -tuberous -tubers -tubes -tubing -tubman -tubs -tuck -tucked -tucker -tuckered -tuckering -tuckers -tucking -tucks -tucson -tucuman -tudor -tuesday -tuesdays -tuft -tufted -tufting -tufts -tug -tugboat -tugboats -tugged -tugging -tugs -tuition -tumid -tummies -tummy -tumor -tumors -tumour -tumours -tums -tun -tuna -tunas -tundra -tundras -tune -tuned -tuner -tuners -tunes -tungsten -tungus -tunguska -tunic -tunics -tuning -tunis -tunisia -tunisian -tunisians -tunney -tunnies -tunny -tuns -tupi -tupperware -tupungato -turban -turbans -turbid -turbine -turbines -turbojet -turbojets -turboprop -turboprops -turbot -turbots -turd -turds -turducken -turduckens -tureen -tureens -turf -turfed -turfing -turfs -turgenev -turgid -turgidity -turin -turing -turk -turkestan -turkey -turkeys -turkish -turkmenistan -turks -turmeric -turmerics -turn -turnabout -turnabouts -turnaround -turnarounds -turncoat -turncoats -turned -turner -turners -turning -turnip -turnips -turnkey -turnkeys -turnoff -turnoffs -turnout -turnouts -turnover -turnovers -turnpike -turnpikes -turns -turpentine -turpin -turpitude -turquoise -turquoises -turret -turrets -turves -tuscan -tuscany -tuscarora -tuscon -tush -tushes -tusk -tusked -tuskegee -tusks -tussaud -tussock -tussocks -tut -tutankhamen -tutor -tutored -tutoring -tutors -tutsi -tutu -tutus -tux -tuxedo -tuxedoes -tuxedos -tuxes -twa -twain -twang -twanged -twanging -twangs -tweak -tweaked -tweaking -tweaks -twee -tweed -tweedier -tweediest -tweeds -tweedy -tweet -tweeted -tweeter -tweeters -tweeting -tweets -tweezers -twenties -twentieth -twentieths -twenty -twerk -twerked -twerking -twerks -twerp -twerps -twice -twig -twigged -twiggier -twiggiest -twigging -twiggy -twigs -twin -twine -twined -twines -twinge -twinged -twingeing -twinges -twinging -twining -twinkies -twinned -twinning -twins -twist -twisted -twister -twisters -twisting -twists -twit -twitch -twitched -twitches -twitching -twits -twitted -twitter -twittered -twittering -twitters -twitting -two -twofer -twofers -twos -twosome -twosomes -tycho -tycoon -tycoons -tying -tyke -tykes -tympana -tympanum -tympanums -type -typecast -typecasting -typecasts -typed -typeface -typefaces -types -typescript -typescripts -typeset -typesets -typesetter -typesetters -typesetting -typewrite -typewriter -typewriters -typewrites -typewriting -typewritten -typewrote -typhoid -typhoon -typhoons -typhus -typified -typifies -typify -typifying -typing -typist -typists -typo -typographer -typographers -typographic -typography -typos -tyrannies -tyrannise -tyrannised -tyrannises -tyrannising -tyrannize -tyrannized -tyrannizes -tyrannizing -tyrannosaur -tyrannosaurs -tyrannosaurus -tyrannosauruses -tyrannous -tyranny -tyrant -tyrants -tyre -tyree -tyres -tyro -tyroes -tyrone -tyros -tyson -tzar -tzarina -tzarinas -tzars -ubangi -ubiquitous -ubiquity -ubs -ubuntu -udder -udders -ufa -uganda -ugandan -ugandans -ugh -uighur -ujungpandang -ukraine -ukrainian -ukrainians -umber -umbrage -umiak -umiaks -ump -umped -umping -umpire -umpired -umpires -umpiring -umps -umpteen -umpteenth -unabashed -unabated -unabridged -unabridgeds -unaccented -unaccepted -unaccompanied -unaccustomed -unacquainted -unadorned -unadvised -unaffected -unafraid -unaided -unambiguous -unanimity -unanimous -unannounced -unanswered -unanticipated -unappetising -unappetizing -unappreciated -unappreciative -unarmed -unashamed -unasked -unassigned -unassisted -unassuming -unattached -unattended -unattractive -unattributed -unauthenticated -unauthorised -unauthorized -unaware -unawares -unbar -unbarred -unbarring -unbars -unbeaten -unbecoming -unbeknown -unbeknownst -unbend -unbending -unbends -unbent -unbiased -unbiassed -unbidden -unbind -unbinding -unbinds -unborn -unbosom -unbosomed -unbosoming -unbosoms -unbound -unbounded -unbranded -unbroken -unburden -unburdened -unburdening -unburdens -unbutton -unbuttoned -unbuttoning -unbuttons -uncannier -uncanniest -uncanny -uncaring -uncased -unceasing -uncensored -unceremonious -uncertain -uncertainties -uncertainty -unchanged -unchanging -uncharacteristic -uncharted -unchecked -unchristian -uncommitted -uncommon -uncommoner -uncommonest -uncommunicative -uncomprehending -uncompressed -uncompromising -unconcern -unconcerned -unconfirmed -unconnected -unconscious -unconsciousness -unconsidered -uncontaminated -uncontested -unconvinced -unconvincing -uncooked -uncooperative -uncoordinated -uncork -uncorked -uncorking -uncorks -uncorroborated -uncounted -uncouth -uncover -uncovered -uncovering -uncovers -unction -unctions -unctuous -unctuousness -uncut -undamaged -undated -undaunted -undeceive -undeceived -undeceives -undeceiving -undecided -undecideds -undefeated -undefended -undefined -undemanding -undemocratic -undemonstrative -under -underachieve -underachieved -underachiever -underachievers -underachieves -underachieving -underact -underacted -underacting -underacts -underage -underarm -underarms -underbid -underbidding -underbids -underbrush -undercarriage -undercarriages -undercharge -undercharged -undercharges -undercharging -undercoat -undercoated -undercoating -undercoats -undercover -undercurrent -undercurrents -undercut -undercuts -undercutting -underdog -underdogs -underdone -underestimate -underestimated -underestimates -underestimating -underexpose -underexposed -underexposes -underexposing -underfed -underfeed -underfeeding -underfeeds -underfoot -underfunded -undergarment -undergarments -undergo -undergoes -undergoing -undergone -undergrad -undergrads -undergraduate -undergraduates -underground -undergrounds -undergrowth -underhand -underhanded -undermine -undermined -undermines -undermining -undermost -underneath -underneaths -undernourished -underpaid -underpants -underpass -underpasses -underpay -underpaying -underpays -underpin -underpinned -underpinning -underpinnings -underpins -underrate -underrated -underrates -underrating -underscore -underscored -underscores -underscoring -undersea -undersecretaries -undersecretary -undershirt -undershirts -undershoot -undershooting -undershoots -undershorts -undershot -underside -undersides -undersign -undersigned -undersigning -undersigns -undersize -undersized -underskirt -underskirts -understaffed -understand -understanding -understandings -understands -understate -understated -understatement -understatements -understates -understating -understood -understudied -understudies -understudy -understudying -undertake -undertaken -undertaker -undertakers -undertakes -undertaking -undertakings -undertone -undertones -undertook -undertow -undertows -underused -underwater -underwear -underweight -underwent -underwood -underwrite -underwriter -underwriters -underwrites -underwriting -underwritten -underwrote -undeserved -undeserving -undetected -undetermined -undeterred -undid -undies -undignified -undiminished -undiscovered -undiscriminating -undisguised -undisputed -undistinguished -undisturbed -undivided -undo -undocumented -undoes -undoing -undoings -undone -undoubted -undress -undressed -undresses -undressing -undue -undying -unearned -unearth -unearthed -unearthing -unearths -unease -uneasier -uneasiest -uneasiness -uneasy -uneaten -uneconomic -unedited -uneducated -unembarrassed -unending -unenthusiastic -unerring -uneven -unevenness -unexciting -unexpected -unexpurgated -unfair -unfairer -unfairest -unfairness -unfasten -unfastened -unfastening -unfastens -unfeigned -unfetter -unfettered -unfettering -unfetters -unfinished -unfit -unfits -unfitted -unfitting -unforeseen -unforgiving -unformed -unfortunate -unfortunates -unfounded -unfrequented -unfriend -unfriended -unfriending -unfriends -unfrock -unfrocked -unfrocking -unfrocks -unfunny -unfurnished -ungava -ungracious -ungrudging -unguarded -unguent -unguents -unhand -unhanded -unhanding -unhands -unhappier -unhappiest -unhappiness -unhappy -unharmed -unheard -unheeded -unhesitating -unhindered -unhinge -unhinged -unhinges -unhinging -unhitch -unhitched -unhitches -unhitching -unhook -unhooked -unhooking -unhooks -unhorse -unhorsed -unhorses -unhorsing -unhurried -unhurt -unicode -unicorn -unicorns -unidentified -unification -unified -unifies -uniform -uniformed -uniforming -uniformity -uniforms -unify -unifying -unimaginative -unimpaired -unimportant -unimpressed -unimpressive -uninformative -uninformed -uninhabited -uninhibited -uninitiated -uninjured -uninspired -uninspiring -uninsured -unintended -uninterested -uninteresting -uninterpreted -uninterrupted -uninvited -uninviting -union -unionisation -unionise -unionised -unionises -unionising -unionization -unionize -unionized -unionizes -unionizing -unions -unique -uniqueness -uniquer -uniquest -unisex -unison -unit -unitarian -unitarianism -unitarianisms -unitarians -unitary -unitas -unite -united -unites -unities -uniting -units -unity -universe -universes -universities -university -unjust -unjustified -unkempt -unkind -unkinder -unkindest -unkindness -unknowing -unknowings -unknown -unknowns -unmade -unmake -unmakes -unmaking -unman -unmanned -unmanning -unmans -unmarked -unmarried -unmask -unmasked -unmasking -unmasks -unmatched -unmissed -unmitigated -unmodified -unmoved -unnamed -unnecessary -unneeded -unnerve -unnerved -unnerves -unnerving -unnoticed -unnumbered -unobservant -unobserved -unobstructed -unobtrusive -unoccupied -unoffensive -unopened -unopposed -unorganised -unorganized -unorthodox -unpack -unpacked -unpacking -unpacks -unpaid -unpainted -unpatriotic -unpaved -unperturbed -unpick -unpin -unpinned -unpinning -unpins -unprecedented -unprejudiced -unpremeditated -unprepared -unpretentious -unproductive -unpromising -unprompted -unprotected -unproved -unproven -unprovoked -unpunished -unquestioned -unquestioning -unquote -unquoted -unquotes -unquoting -unread -unready -unreasoning -unrecognised -unrecognized -unreconstructed -unrecorded -unrefined -unregenerate -unregistered -unrehearsed -unremitting -unrepentant -unrepresentative -unrequited -unreserved -unresponsive -unrest -unrestrained -unrestricted -unrewarding -unripe -unriper -unripest -unromantic -unsafe -unsafer -unsafest -unsaid -unsanctioned -unsanitary -unsatisfactory -unsatisfied -unsatisfying -unsaturated -unsavory -unsavoury -unsay -unsaying -unsays -unscathed -unscientific -unscrew -unscrewed -unscrewing -unscrews -unseasoned -unseat -unseated -unseating -unseats -unseeing -unseen -unsent -unset -unshaven -unsheathe -unsheathed -unsheathes -unsheathing -unsigned -unsnap -unsnapped -unsnapping -unsnaps -unsophisticated -unsound -unsounder -unsoundest -unsparing -unspecific -unspecified -unspoken -unstated -unsteadier -unsteadiest -unsteadiness -unsteady -unstop -unstopped -unstopping -unstops -unstressed -unstructured -unstrung -unstuck -unstudied -unsubscribe -unsubscribed -unsubscribes -unsubscribing -unsubstantiated -unsuited -unsung -unsupervised -unsupported -unsure -unsurpassed -unsurprising -unsuspected -unsuspecting -unsweetened -unswerving -unsympathetic -untainted -untamed -untapped -untaught -untested -unthinking -untidier -untidiest -untidiness -untidy -untie -untied -unties -untiring -unto -untouched -untoward -untrained -untreated -untried -untrue -untruer -untruest -untrustworthy -untruth -untruths -untutored -untwist -untwisted -untwisting -untwists -untying -unused -unvarnished -unvarying -unverified -unvoiced -unwanted -unwarier -unwariest -unwariness -unwarranted -unwary -unwashed -unwavering -unwed -unwind -unwinding -unwinds -unwise -unwiser -unwisest -unwitting -unwonted -unworthier -unworthiest -unworthiness -unworthy -unwound -unwrap -unwrapped -unwrapping -unwraps -unwritten -unzip -unzipped -unzipping -unzips -upanishads -upbeat -upbeats -upbraid -upbraided -upbraiding -upbraids -upbringing -upbringings -upchuck -upchucked -upchucking -upchucks -upcoming -upcountry -update -updated -updater -updates -updating -updike -updraft -updrafts -updraught -updraughts -upend -upended -upending -upends -upfront -upgrade -upgraded -upgrades -upgrading -upjohn -upkeep -upmarket -upon -upped -upper -uppercase -uppercut -uppercuts -uppercutting -uppermost -uppers -upping -uppity -upraise -upraised -upraises -upraising -upright -uprights -uprising -uprisings -uproar -uproarious -uproars -uproot -uprooted -uprooting -uproots -ups -upset -upsets -upsetting -upshot -upshots -upside -upsides -upstage -upstaged -upstages -upstaging -upstairs -upstanding -upstart -upstarted -upstarting -upstarts -upstate -upstream -upsurge -upsurged -upsurges -upsurging -upswing -upswings -uptake -uptakes -uptight -upton -uptown -upturn -upturned -upturning -upturns -upward -upwards -urania -uranium -uranus -urban -urbane -urbaner -urbanest -urbanisation -urbanise -urbanised -urbanises -urbanising -urbanity -urbanization -urbanize -urbanized -urbanizes -urbanizing -urchin -urchins -urdu -urea -urethra -urethrae -urethras -urey -urge -urged -urgency -urgent -urges -urging -uriah -uric -urinary -urinate -urinated -urinates -urinating -urination -urine -uris -urn -urns -urquhart -ursa -uruguay -uruguayan -uruguayans -urumqi -usage -usages -use -used -usenet -user -username -usernames -users -uses -usher -ushered -usherette -usherettes -ushering -ushers -using -ustinov -usurer -usurers -usurious -usurp -usurpation -usurped -usurper -usurpers -usurping -usurps -usury -utah -ute -uteri -uterine -uterus -uteruses -utmost -utopia -utopian -utopians -utopias -utrecht -utter -utterance -utterances -uttered -uttering -uttermost -utters -uzbek -uzbekistan -uzi -vacancies -vacancy -vacant -vacate -vacated -vacates -vacating -vacation -vacationed -vacationer -vacationers -vacationing -vacations -vaccinate -vaccinated -vaccinates -vaccinating -vaccination -vaccinations -vaccine -vaccines -vacua -vacuity -vacuous -vacuum -vacuumed -vacuuming -vacuums -vader -vaduz -vagabond -vagabonded -vagabonding -vagabonds -vagaries -vagary -vagina -vaginae -vagrancy -vagrant -vagrants -vague -vagueness -vaguer -vaguest -vain -vainer -vainest -vamoose -vamoosed -vamooses -vamoosing -vamp -vamped -vamping -vampire -vampires -vamps -van -vanadium -vance -vancouver -vandyke -vane -vanes -vanessa -vang -vanguard -vanguards -vanish -vanished -vanishes -vanishing -vanishings -vanities -vanity -vanned -vanning -vanquish -vanquished -vanquishes -vanquishing -vans -vantage -vantages -vanuatu -vanzetti -vape -vaped -vapes -vapid -vapidity -vapidness -vaping -vapor -vaporisation -vaporise -vaporised -vaporiser -vaporisers -vaporises -vaporising -vaporization -vaporize -vaporized -vaporizer -vaporizers -vaporizes -vaporizing -vaporous -vapors -vapour -vapours -varanasi -varese -vargas -variance -variances -variant -variants -variate -variation -variations -varicose -varied -variegate -variegated -variegates -variegating -varies -varieties -variety -various -varmint -varmints -varnish -varnished -varnishes -varnishing -varsities -varsity -vary -varying -vase -vasectomies -vasectomy -vases -vasquez -vassar -vast -vaster -vastest -vastness -vasts -vat -vatican -vats -vatted -vatting -vauban -vaughan -vaughn -vaunt -vaunted -vaunting -vaunts -vazquez -vector -vectored -vectoring -vectors -veda -vedanta -vedas -veep -veeps -veer -veered -veering -veers -vega -vegan -vegans -vegas -vegemite -vegetarian -vegetarianism -vegetarians -vegetate -vegetated -vegetates -vegetating -vegetation -vegetative -veggie -veggies -vehemence -vehement -vein -veined -veining -veins -vend -vended -vender -venders -vendetta -vendettas -vending -vendor -vendors -vends -veneer -veneered -veneering -veneers -venerate -venerated -venerates -venerating -veneration -venetian -venetians -vengeance -venice -venison -venn -venom -venomous -venous -vent -vented -venting -vents -venture -ventured -ventures -venturesome -venturing -venturous -venue -venues -venus -venuses -venusian -vera -veracious -veracity -veracruz -veranda -verandah -verandahs -verandas -verb -verbatim -verbena -verbenas -verbiage -verbose -verbosity -verbs -verdant -verde -verdi -verdict -verdicts -verdigris -verdigrised -verdigrises -verdigrising -verdun -verdure -verge -verged -verges -verging -verier -veriest -verification -verified -verifies -verify -verifying -verities -verity -verizon -vermeer -vermin -verminous -vermont -vermonter -vermouth -vern -verna -verne -vernon -verona -veronese -veronica -verse -versed -verses -versification -versified -versifies -versify -versifying -versing -version -versions -versus -vertebra -vertebrae -vertebras -vertebrate -vertebrates -vertex -vertexes -vertices -vertiginous -vertigo -verve -very -vespasian -vesper -vespers -vespucci -vest -vesta -vested -vestige -vestiges -vesting -vestment -vestments -vestries -vestry -vests -vesuvius -vet -vetch -vetches -veteran -veterans -veterinarian -veterinarians -veterinaries -veterinary -veto -vetoed -vetoes -vetoing -vets -vetted -vetting -vex -vexation -vexations -vexatious -vexed -vexes -vexing -via -viacom -viaduct -viaducts -viagra -viand -viands -vibe -vibes -vibrancy -vibrant -vibraphone -vibraphones -vibrate -vibrated -vibrates -vibrating -vibration -vibrations -vibrato -vibrator -vibrators -vibratos -viburnum -viburnums -vicar -vicarage -vicarages -vicarious -vicars -vice -viced -vicente -viceroy -viceroys -vices -vichy -vichyssoise -vicing -vicinity -vicious -viciousness -vicissitude -vicissitudes -vicki -vickie -vicksburg -vicky -victim -victimisation -victimise -victimised -victimises -victimising -victimization -victimize -victimized -victimizes -victimizing -victims -victor -victoria -victorian -victorians -victories -victorious -victors -victory -video -videocassette -videocassettes -videodisc -videodiscs -videos -videotape -videotaped -videotapes -videotaping -vie -vied -vienna -viennese -vientiane -vies -vietcong -vietminh -vietnam -vietnamese -view -viewed -viewer -viewers -viewfinder -viewfinders -viewing -viewings -viewpoint -viewpoints -views -vignette -vignetted -vignettes -vignetting -vigor -vigorous -vigour -vijayanagar -vijayawada -viking -vikings -vim -vinaigrette -vince -vincent -vindemiatrix -vindicate -vindicated -vindicates -vindicating -vindication -vindications -vindicator -vindicators -vindictive -vindictiveness -vine -vinegar -vinegary -vines -vineyard -vineyards -vinson -vintage -vintages -vintner -vintners -viper -vipers -virago -viragoes -viragos -vireo -vireos -virgie -virgin -virginia -virginian -virginians -virginity -virgins -virgo -virgos -virtue -virtues -virtuosi -virtuosity -virtuoso -virtuosos -virtuous -virtuousness -virus -viruses -visa -visaed -visage -visages -visaing -visakhapatnam -visas -visayans -viscera -viscid -viscosity -viscount -viscountess -viscountesses -viscounts -viscous -viscus -vise -vised -vises -vishnu -visigoth -vising -vision -visionaries -visionary -visioned -visioning -visions -visit -visitation -visitations -visited -visiting -visitor -visitors -visits -visor -visors -vista -vistas -vitamin -vitamins -vitiate -vitiated -vitiates -vitiating -vitiation -vitim -vito -vitreous -vituperate -vituperated -vituperates -vituperating -vituperation -vituperative -vitus -viva -vivace -vivacious -vivaciousness -vivacity -vivas -vivekananda -vivian -vivid -vivider -vividest -vividness -vivienne -vivified -vivifies -vivify -vivifying -viviparous -vivisection -vixen -vixenish -vixens -vizier -viziers -vizor -vizors -vocation -vocations -vocative -vocatives -vociferate -vociferated -vociferates -vociferating -vociferation -vociferous -vodka -vogue -vogues -voguish -voice -voiced -voices -voicing -void -voided -voiding -voids -voip -vomit -vomited -vomiting -vomits -vonda -vonnegut -voodoo -voodooed -voodooing -voodooism -voodoos -voracious -voracity -voronezh -vorster -vortex -vortexes -vortices -votaries -votary -vote -voted -voter -voters -votes -voting -votive -vouch -vouched -voucher -vouchers -vouches -vouching -vouchsafe -vouchsafed -vouchsafes -vouchsafing -vow -vowed -vowing -vows -voyage -voyaged -voyager -voyagers -voyages -voyaging -voyeur -voyeurism -voyeuristic -voyeurs -vuitton -vying -wabash -wack -wacker -wackest -wackier -wackiest -wackiness -wacko -wackos -wacks -wacky -waco -wad -wadded -wadding -wade -waded -wader -waders -wades -wadi -wading -wadis -wads -wafer -wafers -waft -wafted -wafting -wafts -wag -wage -waged -wager -wagered -wagering -wagers -wages -wagged -wagging -waggish -waggon -waggoner -waggoners -waggons -waging -wagner -wagnerian -wagon -wagoner -wagoners -wagons -wags -wahhabi -waif -waifs -waikiki -wainscot -wainscoted -wainscoting -wainscotings -wainscots -wainscotted -wainscotting -wainscottings -waist -waistband -waistbands -waistcoat -waistcoats -waists -wait -waite -waited -waiter -waiters -waiting -waitress -waitresses -waits -waive -waived -waiver -waivers -waives -waiving -wake -waked -waken -wakened -wakening -wakens -wakes -waking -waksman -wampum -wan -wanamaker -wand -wanda -wander -wandered -wanderer -wanderers -wandering -wanders -wands -wane -waned -wanes -wang -waning -wanna -wannabe -wannabes -wanner -wannest -want -wanted -wanting -wanton -wantoned -wantoning -wantonness -wantons -wants -wapiti -wapitis -war -ward -warded -warden -wardens -warder -warders -warding -wardrobe -wardrobes -wardroom -wardrooms -wards -ware -warehouse -warehoused -warehouses -warehousing -wares -warfare -warhead -warheads -warhorse -warhorses -warier -wariest -wariness -waring -warm -warmed -warmer -warmers -warmest -warmhearted -warming -warmonger -warmongering -warmongers -warms -warmth -warn -warned -warner -warning -warnings -warns -warp -warpath -warpaths -warped -warping -warps -warrant -warranted -warrantied -warranties -warranting -warrants -warranty -warrantying -warred -warren -warrens -warring -warrior -warriors -wars -warsaw -warship -warships -wart -warthog -warthogs -wartier -wartiest -wartime -warts -warty -warwick -wary -was -wasatch -wash -washbasin -washbasins -washboard -washboards -washed -washer -washers -washerwoman -washerwomen -washes -washing -washings -washington -washingtonian -washingtonians -washout -washouts -washroom -washrooms -washstand -washstands -washtub -washtubs -wasp -waspish -wasps -wassermann -wastage -waste -wastebasket -wastebaskets -wasted -wastepaper -waster -wasters -wastes -wastewater -wasting -watch -watchband -watchbands -watchdog -watchdogs -watched -watcher -watchers -watches -watching -watchmaker -watchmakers -watchman -watchmen -watchtower -watchtowers -watchword -watchwords -water -waterbed -waterbeds -waterboard -waterboarded -waterboarding -waterboardings -waterboards -waterbury -watercourse -watercourses -watercraft -watercress -watered -waterford -waterfront -waterfronts -watergate -waterier -wateriest -watering -watermark -watermarked -watermarking -watermarks -waterpower -waterproof -waterproofed -waterproofing -waterproofs -waters -watershed -watersheds -waterside -watersides -waterspout -waterspouts -watertight -waterway -waterways -waterworks -watery -watkins -watson -watt -wattage -watteau -watts -watusi -waugh -wave -waved -waveform -waver -wavered -wavering -wavers -waves -wavier -waviest -waviness -waving -wavy -wax -waxed -waxen -waxes -waxier -waxiest -waxiness -waxing -waxwing -waxwings -waxwork -waxworks -waxy -way -wayfarer -wayfarers -wayfaring -wayfarings -wayne -ways -wayside -waysides -wayward -waywardness -weak -weaken -weakened -weakening -weakens -weaker -weakest -weakfish -weakfishes -weakness -weaknesses -wean -weaned -weaning -weans -weapon -weaponry -weapons -wear -wearer -wearers -wearied -wearier -wearies -weariest -weariness -wearing -wearisome -wears -weary -wearying -weather -weathercock -weathercocks -weathered -weathering -weatherise -weatherised -weatherises -weatherising -weatherize -weatherized -weatherizes -weatherizing -weatherman -weathermen -weatherproof -weatherproofed -weatherproofing -weatherproofs -weathers -weave -weaved -weaver -weavers -weaves -weaving -web -webb -webbed -webbing -webcam -webcams -webcast -webcasting -webcasts -weber -webern -webinar -webinars -webisode -webisodes -webmaster -webmasters -webmistress -webmistresses -webs -website -websites -webster -websters -wed -wedded -wedder -wedding -weddings -wedge -wedged -wedges -wedging -wedgwood -wednesday -wednesdays -weds -wee -weed -weeded -weeder -weeders -weedier -weediest -weeding -weeds -weedy -weeing -week -weekday -weekdays -weekend -weekended -weekending -weekends -weeknight -weeknights -weeks -weep -weeper -weepers -weepier -weepies -weepiest -weeping -weepings -weeps -weepy -weer -wees -weest -weft -wefts -wehrmacht -wei -weierstrass -weigh -weighed -weighing -weighs -weight -weighted -weightier -weightiest -weightiness -weighting -weights -weighty -weinberg -weir -weird -weirder -weirdest -weirdness -weirdo -weirdos -weirs -weiss -weizmann -wen -wench -wenches -wend -wended -wendi -wending -wends -wendy -wens -went -wept -were -wesak -wessex -wesson -west -westbound -western -westerner -westerners -westernise -westernised -westernises -westernising -westernize -westernized -westernizes -westernizing -westernmost -westerns -westinghouse -westminster -weston -wests -westward -westwards -wet -wetback -wetbacks -wetness -wets -wetted -wetter -wettest -wetting -weyden -wezen -whack -whacked -whackier -whackiest -whacking -whacks -whacky -wham -whammed -whammies -whamming -whammy -whams -wharf -wharfs -wharton -wharves -what -whatever -whatnot -whats -whatsoever -wheat -wheaten -wheaties -wheatstone -wheeze -wheezed -wheezes -wheezier -wheeziest -wheezing -wheezy -when -whence -whenever -whens -where -whereabouts -whereas -whereat -whereby -wherefore -wherefores -wherein -whereof -whereon -wheres -wheresoever -whereupon -wherever -whet -whether -whets -whetstone -whetstones -whetted -whetting -whew -whey -which -whichever -whiff -whiffed -whiffing -whiffs -whig -whigs -whim -whimper -whimpered -whimpering -whimpers -whims -whimsey -whimseys -whimsies -whimsy -whine -whined -whiner -whiners -whines -whinier -whiniest -whining -whinnied -whinnies -whinny -whinnying -whiny -whip -whipcord -whipped -whippersnapper -whippersnappers -whippet -whippets -whipping -whippings -whips -whir -whirr -whirred -whirring -whirrs -whirs -whisk -whisked -whisker -whiskered -whiskers -whiskey -whiskeys -whiskies -whisking -whisks -whisky -whiskys -whisper -whispered -whispering -whispers -whist -whit -whitaker -white -whitecap -whitecaps -whitefish -whitefishes -whitehead -whitehorse -whiten -whitened -whitener -whiteners -whiteness -whitening -whitens -whiter -whites -whitest -whitewash -whitewashed -whitewashes -whitewashing -whither -whiting -whitings -whitish -whitman -whitney -whits -whitsunday -whitsundays -whittier -whiz -whizz -whizzed -whizzes -whizzing -who -whoa -whodunit -whodunits -whodunnit -whodunnits -whoever -whom -whomever -whomsoever -whoop -whooped -whoopee -whoopees -whooping -whoops -whoosh -whooshed -whooshes -whooshing -whopper -whoppers -whopping -whore -whorehouse -whorehouses -whores -whose -whosoever -why -whys -wicca -wichita -wick -wicked -wickeder -wickedest -wickedness -wicker -wickers -wickerwork -wicket -wickets -wicks -wide -widen -widened -wideness -widening -widens -wider -widescreen -widescreens -widespread -widest -widgeon -widgeons -widow -widowed -widower -widowers -widowhood -widowing -widows -width -widths -wiemar -wiener -wieners -wife -wifi -wig -wigeon -wigeons -wigged -wigging -wiggins -wight -wights -wigner -wigs -wigwag -wigwagged -wigwagging -wigwags -wigwam -wigwams -wii -wiki -wikipedia -wikis -wimp -wimpier -wimpiest -wimps -wimpy -wimsey -win -wince -winced -winces -winch -winched -winches -winchester -winching -wincing -wind -windbag -windbags -windbreak -windbreaker -windbreakers -windbreaks -windburn -winded -windex -windhoek -windier -windiest -windiness -winding -windjammer -windjammers -window -windowed -windowing -windowpane -windowpanes -windows -windpipe -windpipes -winds -windscreen -windscreens -windsock -windsocks -windsor -windsors -windstorm -windstorms -windsurf -windsurfed -windsurfing -windsurfs -windswept -windup -windups -windward -windy -wine -wined -wineries -winery -wines -winesap -winfred -winfrey -wing -winged -winger -wingers -winging -wingnut -wingnuts -wings -wingspan -wingspans -wingspread -wingspreads -wingtip -wingtips -winifred -wining -wink -winked -winking -winks -winnebago -winner -winners -winnie -winning -winnings -winnipeg -winnow -winnowed -winnowing -winnows -wino -winos -wins -winsome -winsomer -winsomest -winston -winter -wintered -wintergreen -winterier -winteriest -wintering -winterise -winterised -winterises -winterising -winterize -winterized -winterizes -winterizing -winters -wintertime -wintery -winthrop -wintrier -wintriest -wintry -wipe -wiped -wiper -wipers -wipes -wiping -wire -wired -wires -wiretap -wiretapped -wiretapping -wiretaps -wirier -wiriest -wiriness -wiring -wiry -wisconsin -wisconsinite -wisconsinites -wisdom -wise -wiseacre -wiseacres -wisecrack -wisecracked -wisecracking -wisecracks -wiser -wises -wisest -wish -wishbone -wishbones -wished -wisher -wishers -wishes -wishing -wisp -wispier -wispiest -wisps -wispy -wist -wistaria -wistarias -wisteria -wisterias -wit -witch -witchcraft -witched -witchery -witches -witching -with -withdraw -withdrawing -withdrawn -withdraws -withdrew -wither -withered -withering -withers -within -without -withstand -withstanding -withstands -withstood -witness -witnessed -witnesses -witnessing -wits -witt -wittgenstein -witticism -witticisms -wittier -wittiest -wittiness -witting -witty -witwatersrand -wive -wives -wiz -wizard -wizardry -wizards -wizened -wizes -wizzes -wobegon -wodehouse -woe -woebegone -woes -wok -woke -woken -woks -woman -womanhood -womanise -womanised -womaniser -womanisers -womanises -womanish -womanising -womanize -womanized -womanizer -womanizers -womanizes -womanizing -womankind -womb -wombat -wombats -wombs -women -won -wonder -wonderbra -wondered -wondering -wonderment -wonders -wondrous -wong -wont -wonted -woo -wood -woodard -woodbine -woodcarving -woodcarvings -woodchuck -woodchucks -woodcock -woodcocks -woodcraft -woodcut -woodcuts -woodcutter -woodcutters -woodcutting -wooded -wooden -woodener -woodenest -woodenness -woodier -woodies -woodiest -woodiness -wooding -woodman -woodmen -woodpecker -woodpeckers -woodrow -woods -woodshed -woodsheds -woodsier -woodsiest -woodsman -woodsmen -woodstock -woodsy -woodward -woodwind -woodwinds -woodwork -woodworking -woodworm -woody -wooed -wooer -wooers -woof -woofed -woofer -woofers -woofing -woofs -wooing -woos -wooster -wooten -woozier -wooziest -wooziness -woozy -worcester -worcesters -worcestershire -word -worded -wordier -wordiest -wordiness -wording -wordings -words -wordsworth -wordy -wore -work -workaday -workbench -workbenches -workbook -workbooks -workday -workdays -worked -worker -workers -workfare -workforce -workhorse -workhorses -workhouse -workhouses -working -workingman -workingmen -workings -workman -workmanship -workmen -workout -workouts -works -worksheet -worksheets -workshop -workshops -workstation -workstations -workweek -workweeks -worm -wormed -wormier -wormiest -worming -worms -wormwood -wormy -worn -worried -worrier -worriers -worries -worrisome -worry -worrying -worryings -worrywart -worrywarts -worse -worsen -worsened -worsening -worsens -worship -worshiped -worshiper -worshipers -worshiping -worshipped -worshipper -worshippers -worshipping -worships -worst -worsted -worsting -worsts -worth -worthier -worthies -worthiest -worthiness -worthy -wot -wotan -wound -wounded -wounder -wounding -wounds -wove -woven -wovoka -wow -wowed -wowing -wows -wozniak -wozzeck -wrack -wraith -wraiths -wrap -wraparound -wraparounds -wrapped -wrapper -wrappers -wrapping -wrappings -wraps -wrapt -wrath -wreak -wreaked -wreaking -wreaks -wreath -wreathe -wreathed -wreathes -wreathing -wreaths -wreck -wreckage -wrecked -wrecker -wreckers -wrecking -wrecks -wren -wrench -wrenched -wrenches -wrenching -wrens -wrest -wrested -wresting -wrests -wretch -wretched -wretcheder -wretchedest -wretchedness -wretches -wrier -wriest -wright -wring -wringer -wringers -wringing -wrings -wrist -wristband -wristbands -wrists -wristwatch -wristwatches -writ -write -writer -writers -writes -writhe -writhed -writhes -writhing -writing -writings -writs -written -wrong -wrongdoer -wrongdoers -wrongdoing -wrongdoings -wronged -wronger -wrongest -wrongheaded -wrongheadedness -wronging -wrongness -wrongs -wrote -wroth -wrought -wrung -wry -wryer -wryest -wryness -wuhan -wuss -wusses -wyatt -wyeth -wynn -wyoming -wyomingite -wyomingites -xanadu -xanthippe -xavier -xemacs -xenakis -xenia -xenon -xenophobia -xenophobic -xenophon -xerographic -xerography -xerox -xeroxes -xerxes -xhosa -xiaoping -ximenes -xingu -xiongnu -xmas -xmases -xuzhou -yacc -yacht -yachted -yachting -yachts -yachtsman -yachtsmen -yack -yacked -yacking -yacks -yahoo -yahoos -yahtzee -yahweh -yak -yakima -yakked -yakking -yaks -yakut -yakutsk -yam -yamagata -yamaha -yammer -yammered -yammering -yammers -yamoussoukro -yams -yang -yangon -yangtze -yank -yanked -yankee -yankees -yanking -yanks -yaobang -yaounde -yap -yapped -yapping -yaps -yaqui -yard -yardage -yardages -yardarm -yardarms -yards -yardstick -yardsticks -yarn -yarns -yataro -yates -yaw -yawed -yawing -yawn -yawned -yawning -yawns -yaws -yea -yeager -yeah -yeahs -year -yearbook -yearbooks -yearn -yearned -yearning -yearnings -yearns -years -yeas -yeast -yeastier -yeastiest -yeasts -yeasty -yeats -yekaterinburg -yemen -yemeni -yemenis -yen -yenisei -yens -yeoman -yeomen -yep -yeps -yerevan -yerkes -yes -yesenia -yeses -yeshiva -yeshivah -yeshivahs -yeshivas -yeshivot -yeshivoth -yessed -yessing -yest -yesterday -yesterdays -yesteryear -yet -yeti -yevtushenko -yew -yews -yiddish -yip -yipped -yippee -yipping -yips -ymir -yock -yocks -yoda -yoga -yoghourt -yoghourts -yoghurt -yoghurts -yogi -yogin -yogins -yogis -yogurt -yogurts -yoke -yoked -yokes -yoking -yoknapatawpha -yoko -yokohama -yon -yonder -yong -yonkers -yore -york -yorkie -yorkshire -yorktown -yoruba -yosemite -yossarian -you -young -younger -youngest -youngish -youngster -youngsters -youngstown -your -yours -yous -youth -youths -youtube -ypres -yttrium -yuan -yucatan -yucca -yuccas -yuck -yucked -yuckier -yuckiest -yucking -yucks -yucky -yuk -yukked -yukking -yukon -yuks -yum -yummier -yummiest -yummy -yunnan -yup -yuppie -yuppies -yuppy -yups -yuri -yves -yvette -yvonne -zachariah -zachary -zachery -zagreb -zaire -zairian -zambezi -zambia -zambian -zambians -zamboni -zamenhof -zamora -zane -zanier -zanies -zaniest -zaniness -zanuck -zany -zanzibar -zap -zapata -zaporozhye -zapotec -zappa -zapped -zapper -zappers -zapping -zaps -zara -zebedee -zebra -zebras -zebu -zebus -zechariah -zed -zedekiah -zedong -zeds -zeke -zen -zenger -zenith -zeniths -zeno -zens -zephaniah -zephyr -zephyrs -zephyrus -zero -zeroed -zeroes -zeroing -zeros -zest -zests -zeta -zeus -zhengzhou -zhivago -zhukov -zibo -ziggy -zigzag -zigzagged -zigzagging -zigzags -zimbabwe -zimbabwean -zimbabweans -zimmerman -zinc -zinced -zincing -zincked -zincking -zincs -zing -zinged -zinger -zingers -zinging -zings -zinnia -zinnias -zion -zionism -zionisms -zionist -zionists -zions -zip -zipped -zipper -zippered -zippering -zippers -zippier -zippiest -zipping -zippy -zips -zircon -zirconium -zircons -zit -zither -zithers -zits -zodiac -zodiacs -zoe -zomba -zombi -zombie -zombies -zombis -zone -zoned -zones -zoning -zonked -zoo -zoom -zoomed -zooming -zooms -zoos -zorn -zoroaster -zoroastrian -zoroastrianism -zoroastrianisms -zorro -zosma -zsigmondy -zucchini -zucchinis -zukor -zuni -zwieback -zworykin -zygote -zygotes -zyrtec -zyuganov diff --git a/extras/dict/swedish b/extras/dict/swedish deleted file mode 100644 index 797ebed..0000000 --- a/extras/dict/swedish +++ /dev/null @@ -1,49697 +0,0 @@ -abakus -abakusen -abakusens -abakuser -abakuserna -abakusernas -abakusers -abandon -abandonen -abbedissa -abbedissan -abbedissans -abbedissas -abbedissor -abbedissorna -abbedissornas -abbedissors -abborrar -abborrarna -abborrarnas -abborrars -abborre -abborren -abborrens -abborres -abbot -abbotar -abbotarna -abbotarnas -abbotars -abboten -abbotens -abbots -abbreviation -abbreviationen -abbreviationens -abbreviationer -abbreviationerna -abbreviationernas -abbreviationers -abbreviations -abbreviatur -abbreviaturen -abbreviaturens -abbreviaturer -abbreviaturerna -abbreviaturernas -abbreviaturers -abbreviaturs -abbreviera -abbrevierad -abbrevierade -abbrevierades -abbrevierar -abbrevieras -abbrevierat -abbrevierats -abbreviering -abbrevieringar -abbrevieringarna -abbrevieringarnas -abbrevieringars -abbrevieringen -abbrevieringens -abbrevierings -abc -abderit -abderiten -abderitens -abderiter -abderiterna -abderiternas -abderiters -abderits -abdikation -abdikationen -abdikationens -abdikationer -abdikationerna -abdikationernas -abdikationers -abdikations -abdomen -abdomina -aber -aberration -aberrationen -aberrationens -aberrationer -aberrationerna -aberrationernas -aberrationers -aberrations -abessinier -abessiniern -abessinierna -abessiniernas -abessinierns -abessiniers -abessinska -abessinskor -abessinskorna -abessinskornas -abessinskors -abisko -abiskos -abiturient -abiturienten -abiturientens -abiturienter -abiturienterna -abiturienternas -abiturienters -abiturients -abnorm -abnorma -abnormare -abnormast -abnormaste -abnormt -abonnemang -abonnemangen -abonnemangens -abonnemanget -abonnemangets -abonnemangs -abonnent -abonnenten -abonnentens -abonnenter -abonnenterna -abonnenternas -abonnenters -abonnents -abonnera -abonnerad -abonnerade -abonnerades -abonnerar -abonneras -abonnerat -abonnerats -abort -aborten -abortens -aborter -aborterna -aborternas -aborters -aborts -abraham -abrahams -abrakadabra -abrakadabrat -abrupt -abrupta -abruptare -abruptast -abruptaste -abscissa -abscissan -abscissans -abscissas -abscissor -abscissorna -abscissornas -abscissors -absid -absiden -absidens -absider -absiderna -absidernas -absiders -absids -absint -absinten -absintens -absinter -absinterna -absinternas -absinters -absints -absorbera -absorberad -absorberade -absorberades -absorberande -absorberandet -absorberandets -absorberar -absorberas -absorberat -absorberats -absorption -absorptionen -absorptionens -absorptioner -absorptionerna -absorptionernas -absorptioners -absorptions -abstinens -abstinensen -abstinensens -abstinenser -abstinenserna -abstinensernas -abstinensers -abstrahera -abstraherad -abstraherade -abstraherades -abstraherande -abstraherandet -abstraherandets -abstraherar -abstraheras -abstraherat -abstraherats -abstrakt -abstrakta -abstraktare -abstraktast -abstraktaste -abstraktion -abstraktionen -abstraktionens -abstraktioner -abstraktionerna -abstraktionernas -abstraktioners -abstraktions -abstrus -abstrusa -abstrust -absurd -absurda -absurdare -absurdast -absurdaste -absurditet -absurditeten -absurditetens -absurditeter -absurditeterna -absurditeternas -absurditeters -absurditets -absurdum -absurt -accent -accenten -accentens -accenter -accenterna -accenternas -accenters -accents -accentuera -accentuerad -accentuerade -accentuerades -accentuerande -accentuerandet -accentuerandets -accentuerar -accentueras -accentuerat -accentuerats -accentuering -accentueringar -accentueringarna -accentueringarnas -accentueringars -accentueringen -accentueringens -accentuerings -acceptans -acceptansen -acceptansens -acceptera -accepterad -accepterade -accepterades -accepterande -accepterandet -accepterandets -accepterar -accepteras -accepterat -accepterats -access -accessen -accessens -accesser -accesserna -accessernas -accessers -ack -acke -ackes -ackompanjemang -ackompanjemangen -ackompanjemangens -ackompanjemanget -ackompanjemangets -ackompanjemangs -ackompanjera -ackompanjerad -ackompanjerade -ackompanjerades -ackompanjerande -ackompanjerandet -ackompanjerandets -ackompanjerar -ackompanjeras -ackompanjerat -ackompanjerats -ackord -ackorden -ackordens -ackordet -ackordets -ackords -action -ada -adagio -adagion -adagiona -adagionas -adagions -adagios -adagiot -adagiots -adak -adaks -adam -adams -adapter -adaptera -adapterad -adapterade -adapterades -adapterande -adapterandet -adapterandets -adapterar -adapteras -adapterat -adapterats -adaptern -adapterns -adapters -adaption -adaptionen -adaptionens -adaptioner -adaptionerna -adaptionernas -adaptioners -adaptions -adaptiv -adaptiva -adaptivt -adas -addera -adderad -adderade -adderades -adderar -adderare -adderaren -adderarens -adderares -adderarna -adderarnas -adderas -adderat -adderats -addition -additionen -additionens -additioner -additionerna -additionernas -additioners -additions -additiv -additiva -additivt -adekvat -adekvata -adept -adepten -adeptens -adepter -adepterna -adepternas -adepters -adepts -aderton -adertonde -adjektiv -adjektiven -adjektivens -adjektivet -adjektivets -adjektivs -adjungera -adjungerad -adjungerade -adjungerades -adjungerar -adjungeras -adjungerat -adjungerats -adjunkt -adjunkten -adjunktens -adjunkter -adjunkterna -adjunkternas -adjunkters -adjutant -adjutanten -adjutantens -adjutanter -adjutanterna -adjutanternas -adjutanters -adjutants -administration -administrationen -administrationens -administrationer -administrationerna -administrationernas -administrationers -administrations -administrativ -administrativa -administrative -administrativt -administrera -administrerad -administrerade -administrerades -administrerar -administreras -administrerat -administrerats -adoptera -adopterad -adopterade -adopterades -adopterar -adopteras -adopterat -adopterats -adoption -adoptionen -adoptionens -adoptioner -adoptionerna -adoptionernas -adoptioners -adoptions -adoptivbarn -adoptivbarnen -adoptivbarnens -adoptivbarnet -adoptivbarnets -adoptivson -adoptivsonen -adoptivsonens -adoptivsons -adress -adressat -adressaten -adressatens -adressater -adressaterna -adressaternas -adressaters -adressats -adressbuss -adressbussar -adressbussarna -adressbussarnas -adressbussars -adressbussen -adressbussens -adressen -adressens -adresser -adressera -adresserad -adresserade -adresserades -adresserar -adresseras -adresserat -adresserats -adressering -adresseringen -adresseringens -adresserings -adresserna -adressernas -adressers -adressrymd -adressrymden -adressrymdens -adressrymder -adressrymderna -adressrymdernas -adressrymders -advent -adventet -adventets -advents -adverb -adverben -adverbens -adverbet -adverbets -adverbs -advokat -advokaten -advokatens -advokater -advokaterna -advokaternas -advokaters -advokats -advokatyr -advokatyren -advokatyrens -advokatyrer -advokatyrerna -advokatyrernas -advokatyrers -advokatyrs -affekt -affekten -affektens -affekter -affekterad -affekterade -affekterat -affekterna -affekternas -affekters -affekts -affin -affina -affint -affisch -affischen -affischens -affischer -affischera -affischerade -affischerades -affischerar -affischeras -affischerat -affischerats -affischerna -affischernas -affischers -affix -affixen -affixens -affixet -affixets -afghan -afghanen -afghanens -afghaner -afghanerna -afghanernas -afghaners -afghanistan -afghanistans -afghans -aforism -aforismen -aforismens -aforismer -aforismerna -aforismernas -aforismers -afrika -afrikan -afrikanen -afrikanens -afrikaner -afrikanerna -afrikanernas -afrikaners -afrikans -afrikansk -afrikanska -afrikanskan -afrikanskans -afrikanskas -afrikanske -afrikanskor -afrikanskorna -afrikanskornas -afrikanskors -afrikanskt -afrikas -aftnar -aftnarna -aftnarnas -aftnars -afton -aftonen -aftonens -aftons -aga -agad -agade -agades -agan -agans -agar -agas -agat -agata -agatas -agaten -agatens -agater -agaterna -agaternas -agaters -agaton -agatons -agats -agda -agdas -agen -agenda -agendan -agendans -agendas -agendor -agendorna -agendornas -agendors -agens -agent -agenten -agentens -agenter -agenterna -agenternas -agenters -agents -agentur -agenturen -agenturens -agenturer -agenturerna -agenturernas -agenturers -agenturs -agera -agerade -agerande -agerandet -agerandets -agerar -agerat -agg -agget -aggets -aggregat -aggregaten -aggregatens -aggregatet -aggregatets -aggregats -aggression -aggressionen -aggressionens -aggressioner -aggressionerna -aggressionernas -aggressioners -aggressions -aggressiv -aggressiva -aggressivare -aggressivas -aggressivast -aggressivaste -aggressive -aggressives -aggressivitet -aggressiviteten -aggressivitetens -aggressivitets -aggressivt -aggs -agitation -agitationen -agitationens -agitationer -agitationerna -agitationernas -agitationers -agitations -agitator -agitatorer -agitatorerna -agitatorernas -agitatorers -agitatorn -agitatorns -agitators -agitera -agiterade -agiterande -agiterar -agiterat -agn -agna -agnad -agnade -agnades -agnar -agnarna -agnarnas -agnars -agnas -agnat -agnats -agne -agnen -agnens -agnes -agnet -agneta -agnetas -agnets -agnosticism -agnosticismen -agnosticismens -agnosticisms -agnostiker -agnostikern -agnostikerna -agnostikernas -agnostikerns -agnostikers -agns -agoni -agonien -agoniens -agonis -agor -agorna -agornas -agors -agronom -agronomen -agronomens -agronomer -agronomerna -agronomernas -agronomers -agronoms -agunnaryd -agunnaryds -aids -aina -ainas -air -airen -airens -ajour -ajournera -ajournerad -ajournerade -ajournerades -ajournerar -ajourneras -ajournerat -ajournerats -akademi -akademien -akademiens -akademier -akademierna -akademiernas -akademiers -akademiker -akademikern -akademikerna -akademikernas -akademikerns -akademikers -akademin -akademins -akademis -akademisk -akademiska -akademiske -akademiskt -akribi -akribien -akribiens -akribin -akribins -akribis -akrobat -akrobaten -akrobatens -akrobater -akrobaterna -akrobaternas -akrobaters -akrobatisk -akrobatiska -akrobatiskt -akrobats -akt -akta -aktad -aktade -aktades -aktande -aktandet -aktandets -aktar -aktas -aktat -aktats -akten -aktens -akter -aktern -akterna -akternas -akterns -akters -aktersnurra -aktersnurran -aktersnurrans -aktersnurror -aktersnurrorna -aktersnurrornas -aktersnurrors -aktie -aktien -aktiens -aktier -aktierna -aktiernas -aktiers -akties -aktiesparande -aktiesparandet -aktiesparandets -aktion -aktionen -aktionens -aktioner -aktionerna -aktionernas -aktioners -aktions -aktiv -aktiva -aktivare -aktivas -aktivast -aktivaste -aktive -aktivera -aktiverad -aktiverade -aktiverades -aktiverar -aktiveras -aktiverat -aktiverats -aktivering -aktiveringen -aktiveringens -aktiverings -aktives -aktivitet -aktiviteten -aktivitetens -aktiviteter -aktiviteterna -aktiviteternas -aktiviteters -aktivitets -aktivt -aktning -aktningen -aktningens -aktnings -aktrar -aktrarna -aktrarnas -aktrars -aktris -aktrisen -aktrisens -aktriser -aktriserna -aktrisernas -aktrisers -akts -aktsam -aktsamma -aktsammare -aktsammas -aktsammast -aktsammaste -aktsamme -aktsammes -aktsamt -aktstycke -aktstyckena -aktstyckenas -aktstyckes -aktstycket -aktstyckets -akustik -akustiken -akustikens -akustiks -akustisk -akustiska -akustiskt -akut -akuta -akutare -akutast -akutaste -akuten -akutens -akvarier -akvarierna -akvariernas -akvariers -akvariet -akvariets -akvarium -akvedukt -akvedukten -akvedukter -akvedukterna -akvedukternas -akvedukters -amanda -amandas -amanuens -amanuensen -amanuensens -amanuenser -amanuenserna -amanuensernas -amanuensers -amason -amasonen -amasonens -amasoner -amasonerna -amasonernas -amasoners -amasons -ambassad -ambassaden -ambassadens -ambassader -ambassaderna -ambassadernas -ambassaders -ambassads -ambition -ambitionen -ambitionens -ambitioner -ambitionerna -ambitionernas -ambitioners -ambitions -ambra -ambradoft -ambradoften -ambradoftens -ambradofter -ambradofterna -ambradofternas -ambradofters -ambran -ambrans -ambrosius -amen -amerika -amerikan -amerikanare -amerikanaren -amerikanarens -amerikanares -amerikanarna -amerikanarnas -amerikanen -amerikanens -amerikaner -amerikanerna -amerikanernas -amerikaners -amerikans -amerikansk -amerikanska -amerikanskan -amerikanskans -amerikanskas -amerikanske -amerikanskes -amerikanskor -amerikanskorna -amerikanskornas -amerikanskors -amerikanskt -amerikas -ametist -ametisten -ametistens -ametister -ametisterna -ametisternas -ametisters -amfetamin -amfetaminen -amfetaminens -amfetaminer -amfetaminerna -amfetaminernas -amfetaminers -amfetaminet -amfetaminets -amfetamins -amma -ammad -ammade -ammades -amman -ammande -ammandet -ammandets -ammans -ammar -ammas -ammat -ammats -ammoniak -ammoniaken -ammoniakens -ammoniaks -ammor -ammorna -ammornas -ammors -ammunition -ammunitionen -ammunitionens -ammunitions -amok -amorf -amorfa -amorft -amortera -amorterade -amorterades -amorterar -amorteras -amorterat -amorterats -amortering -amorteringar -amorteringarna -amorteringarnas -amorteringars -amorteringen -amorteringens -amorterings -amper -ampere -amperen -amperens -amperer -ampererna -amperernas -amperers -amperes -ampert -ampra -amprare -amprast -ampraste -amputera -amputerad -amputerade -amputerades -amputerar -amputeras -amputerat -amputerats -amsterdam -amsterdams -ana -anad -anade -anades -anaforisk -anaforiska -anaforiskt -anakronism -anakronismen -anakronismens -anakronismer -anakronismerna -anakronismernas -anakronismers -anakronisms -anakronistisk -anakronistiska -anakronistiskt -anamma -anammad -anammade -anammades -anammande -anammandet -anammandets -anammar -anammas -anammat -anammats -anan -ananas -ananasen -ananasens -anande -anans -anar -anarki -anarkien -anarkiens -anarkin -anarkins -anarkism -anarkismen -anarkismens -anarkist -anarkisten -anarkistens -anarkister -anarkisterna -anarkisternas -anarkisters -anarkistisk -anarkistiska -anarkistiskt -anarkists -anas -anat -anatomi -anatomien -anatomiens -anatomin -anatomins -anatomisk -anatomiska -anatomiskt -anats -anbragt -anbringa -anbringad -anbringade -anbringades -anbringar -anbringas -anbringat -anbringats -anbud -anbuden -anbudens -anbudet -anbudets -anbuds -and -anda -andades -andakt -andakten -andaktens -andakter -andakterna -andakternas -andakters -andan -andans -andante -andantet -andantets -andar -andarna -andarnas -andars -andas -andats -ande -andefattig -andefattiga -andefattigt -andemening -andemeningen -andemeningens -anden -andens -anders -andersson -anderssons -anderstorp -anderstorps -andes -andetag -andetagen -andetagens -andetaget -andetagets -andetags -andning -andningar -andningarna -andningarnas -andningars -andningen -andningens -andnings -andningsorgan -andningsorganen -andningsorganens -andningsorganet -andningsorganets -andra -andras -andre -andreas -andres -ands -aneby -anebys -anekdot -anekdoten -anekdotens -anekdoter -anekdoterna -anekdoternas -anekdoters -anekdotisk -anekdotiska -anekdotiskt -anekdots -anemi -anemien -anemiens -anemin -anemins -anemisk -anemiska -anemiskt -anette -anettes -anfader -anfadern -anfaderns -anfaders -angav -angavs -ange -anger -angered -angereds -anges -angett -angetts -angick -angiva -angivande -angivare -angivaren -angivarens -angivares -angivarna -angivarnas -angivas -angiven -angiver -angiveri -angiverier -angiverierna -angiveriernas -angiveriers -angiveriet -angiveriets -angiveris -angivet -angivit -angivits -angivna -angivnas -angivne -angivnes -angivning -angivningar -angivningarna -angivningarnas -angivningars -angivningen -angivningens -angivnings -angjorde -angjordes -angjort -angjorts -angrep -angrepp -angreppen -angreppens -angreppet -angreppets -angrepps -angreps -angrip -angripa -angripare -angriparen -angriparens -angripares -angriparna -angriparnas -angripas -angripbar -angripbara -angripbart -angripen -angriper -angripes -angripet -angripit -angripits -angripna -angripne -angrips -anhang -anhangen -anhangens -anhanget -anhangets -anhangs -anhopning -anhopningar -anhopningarna -anhopningarnas -anhopningars -anhopningen -anhopningens -anhopnings -animation -animationen -animationens -animationer -animationerna -animationernas -animationers -animations -animera -animerad -animerade -animerades -animerande -animerandet -animerandets -animerar -animeras -animerat -animerats -aning -aningar -aningarna -aningarnas -aningars -aningen -aningens -anings -anis -anisen -anisens -anita -anitas -anka -ankan -ankans -ankare -ankaren -ankarens -ankares -ankaret -ankarets -ankarna -ankarnas -ankarsrum -ankarsrums -ankarsvik -ankarsviks -ankeborg -ankeborgs -anknuten -anknutet -anknutit -anknutits -anknutna -anknyt -anknyta -anknytas -anknyter -anknytning -anknytningar -anknytningarna -anknytningarnas -anknytningars -anknytningen -anknytningens -anknytnings -anknyts -ankom -ankomma -ankommen -ankommer -ankommet -ankommit -ankomna -ankomst -ankomsten -ankomstens -ankomster -ankomsterna -ankomsternas -ankomsters -ankor -ankorna -ankornas -ankors -anmaning -anmaningar -anmaningarna -anmaningarnas -anmaningars -anmaningen -anmaningens -anmanings -anmoda -anmodad -anmodade -anmodades -anmodan -anmodande -anmodanden -anmodandena -anmodandenas -anmodandens -anmodandes -anmodandet -anmodandets -anmodans -anmodar -anmodas -anmodat -anmodats -ann -anna -annan -annandag -annandagar -annandagarna -annandagarnas -annandagars -annandagen -annandagens -annans -annanstans -annars -annas -annat -annats -anne -anneberg -annebergs -annektera -annekterade -annekterades -annekterar -annekteras -annekterat -annekterats -annektering -annekteringar -annekteringarna -annekteringarnas -annekteringars -annekteringen -annekteringens -annekterings -annerstad -annerstads -annes -annette -annettes -annie -annies -annika -annikas -anno -annons -annonsen -annonsens -annonser -annonsera -annonserad -annonserade -annonserades -annonserande -annonserandet -annonserandets -annonserar -annonseras -annonserat -annonserats -annonsering -annonseringar -annonseringarna -annonseringarnas -annonseringars -annonseringen -annonseringens -annonserings -annonserna -annonsernas -annonsers -annonskampanj -annonskampanjen -annonskampanjens -annonskampanjer -annonskampanjerna -annonskampanjernas -annonskampanjers -anns -anod -anoden -anodens -anoder -anoderna -anodernas -anoders -anods -anonym -anonyma -anonyme -anonymitet -anonymiteten -anonymitetens -anonymt -anor -anorak -anoraken -anorakens -anoraker -anorakerna -anorakernas -anorakers -anoraks -anordna -anordnad -anordnade -anordnades -anordnande -anordnandet -anordnandets -anordnar -anordnare -anordnaren -anordnarens -anordnares -anordnarna -anordnarnas -anordnas -anordnat -anordnats -anordning -anordningar -anordningarna -anordningarnas -anordningars -anordningen -anordningens -anordnings -anorna -anornas -anors -anpassa -anpassad -anpassade -anpassades -anpassande -anpassandet -anpassandets -anpassar -anpassas -anpassat -anpassats -anpassning -anpassningar -anpassningarna -anpassningarnas -anpassningars -anpassningen -anpassningens -anpassnings -anpassningsbar -anpassningsbara -anpassningsbarare -anpassningsbarast -anpassningsbaraste -anpassningsbart -anpassningsprocess -anpassningsprocessen -anpassningsprocessens -anpassningsprocesser -anpassningsprocesserna -anpassningsprocessernas -anpassningsprocessers -anred -anreda -anredas -anredde -anreddes -anreder -anreds -anrett -anretts -anrika -anrikad -anrikade -anrikades -anrikar -anrikas -anrikat -anrikats -anrikning -anrikningar -anrikningarna -anrikningarnas -anrikningars -anrikningen -anrikningens -anriknings -anrop -anropa -anropad -anropade -anropades -anropande -anropandet -anropandets -anropar -anropas -anropat -anropats -anropen -anropens -anropet -anropets -anrops -ansa -ansad -ansade -ansades -ansande -ansandet -ansandets -ansar -ansas -ansat -ansats -ansatsen -ansatsens -ansatser -ansatserna -ansatsernas -ansatsers -ansatt -ansatta -ansatte -ansattes -ansatts -anse -ansedd -ansedda -anseende -anseendet -anseendets -anser -anses -ansett -ansetts -ansgar -ansgars -ansikte -ansikten -ansiktena -ansiktenas -ansiktens -ansiktes -ansiktet -ansiktets -ansiktsuttryck -ansiktsuttrycken -ansiktsuttryckens -ansiktsuttrycket -ansiktsuttryckets -ansiktsuttrycks -ansjovis -ansjovisen -ansjovisens -anskaffa -anskaffad -anskaffade -anskaffades -anskaffande -anskaffandet -anskaffandets -anskaffar -anskaffas -anskaffat -anskaffats -anskaffning -anskaffningar -anskaffningarna -anskaffningarnas -anskaffningars -anskaffningen -anskaffningens -anskaffnings -anskri -anstod -anstorma -anstormad -anstormade -anstormades -anstormar -anstormas -anstormat -anstormats -anstormning -anstormningar -anstormningarna -anstormningarnas -anstormningars -anstormningen -anstormningens -anstormnings -ansvar -ansvara -ansvarade -ansvarades -ansvarar -ansvaras -ansvarat -ansvarats -ansvaret -ansvarets -ansvarig -ansvariga -ansvarigas -ansvarige -ansvariges -ansvarigs -ansvarigt -ansvars -ansvarsfri -ansvarsfria -ansvarsfrihet -ansvarsfriheten -ansvarsfrihetens -ansvarsfritt -ansvarsmedvetande -ansvarsmedvetandet -ansvarsmedvetandets -ansvarsmedveten -ansvarsmedvetet -ansvarsmedvetna -ansvarstagande -ansvarstagandet -ansvarstagandets -anta -antag -antaga -antagande -antaganden -antagandena -antagandenas -antagandens -antagandes -antagandet -antagandets -antagas -antagen -antager -antages -antaget -antagit -antagits -antagna -antagning -antagningar -antagningarna -antagningarnas -antagningars -antagningen -antagningens -antagnings -antagonism -antagonismen -antagonismens -antagonist -antagonisten -antagonistens -antagonister -antagonisterna -antagonisternas -antagonisters -antagonistisk -antagonistiska -antagonistiskt -antar -antarktis -antas -antasta -antastad -antastade -antastades -antastande -antastar -antastas -antastat -antastats -antecipera -anteciperad -anteciperade -anteciperades -anteciperande -anteciperandet -anteciperandets -anteciperar -anteciperas -anteciperat -anteciperats -anteckna -antecknad -antecknade -antecknades -antecknande -antecknandet -antecknandets -antecknar -antecknas -antecknat -antecknats -anteckning -anteckningar -anteckningarna -anteckningarnas -anteckningars -anteckningen -anteckningens -antecknings -anteckningsbok -anteckningsboken -anteckningsbokens -anteckningsboks -antenn -antennen -antennens -antenner -antennerna -antennernas -antenners -antenns -antibiotika -antibiotikan -antibiotikans -antibiotikas -antibiotikum -antik -antika -antiken -antikens -antikt -antikvariat -antikvariaten -antikvariatens -antikvariatet -antikvariatets -antikvarie -antikvarien -antikvariens -antikvarier -antikvarierna -antikvariernas -antikvariers -antikvarisk -antikvariska -antikvariskt -antikvitet -antikviteten -antikvitetens -antikviteter -antikviteterna -antikviteternas -antikviteters -antikvitets -antimateria -antimaterian -antimaterians -antingen -antipati -antipatien -antipatiens -antipatier -antipatierna -antipatiernas -antipatiers -antipatin -antipatins -antipatis -antipod -antipoden -antipodens -antipoder -antipoderna -antipodernas -antipoders -antipods -antisemit -antisemiten -antisemitens -antisemiter -antisemiterna -antisemiternas -antisemiters -antisemitisk -antisemitiska -antisemitiske -antisemitiskt -antisemitism -antisemitismen -antisemitismens -antog -antogs -anton -antonia -antonias -antons -antropometrisk -antropometriska -antropometriskt -antyd -antyda -antydan -antydande -antydandet -antydandets -antydans -antydas -antydd -antydda -antydde -antyddes -antyder -antydes -antydning -antydningar -antydningarna -antydningarnas -antydningars -antydningen -antydningens -antydnings -antyds -antytt -antytts -anus -anusen -anusens -anvisa -anvisad -anvisade -anvisades -anvisande -anvisandet -anvisandets -anvisar -anvisas -anvisat -anvisats -anvisning -anvisningar -anvisningarna -anvisningarnas -anvisningars -anvisningen -anvisningens -anvisnings -aorta -aortan -aortans -apa -apade -apades -apan -apans -apar -apart -aparta -apartheid -apas -apat -apati -apatien -apatiens -apatin -apatins -apatisk -apatiska -apatiske -apatiskt -apats -apbur -apburar -apburarna -apburarnas -apburars -apburen -apburens -apburs -aphus -aphusen -aphusens -aphuset -aphusets -apkonst -apkonsten -apkonstens -apkonster -apkonsterna -apkonsternas -apkonsters -apor -aporna -apornas -apors -aposteriorisk -aposterioriska -aposterioriskt -apostrof -apostrofen -apostrofens -apostrofer -apostrofera -apostroferad -apostroferade -apostroferades -apostroferande -apostroferandet -apostroferandets -apostroferar -apostroferas -apostroferat -apostroferats -apostroferna -apostrofernas -apostrofers -apotek -apotekare -apotekaren -apotekarens -apotekares -apotekarna -apotekarnas -apoteken -apotekens -apoteket -apotekets -apparat -apparaten -apparatens -apparater -apparaterna -apparaternas -apparaters -apparatur -apparaturen -apparaturens -apparaturer -apparaturerna -apparaturernas -apparaturers -appendix -appendixen -appendixens -appendixet -appendixets -approximation -approximationen -approximationens -approximationer -approximationerna -approximationernas -approximationers -approximations -approximativ -approximativa -approximativt -approximera -approximerade -approximerades -approximerar -approximeras -approximerat -approximerats -aprikos -aprikosen -aprikosens -aprikoser -aprikoserna -aprikosernas -aprikosers -apriorisk -aprioriska -aprioriskt -aptit -aptiten -aptitens -aptitretande -arab -arabemiraten -arabemiratens -araben -arabens -araber -araberna -arabernas -arabers -arabesk -arabesken -arabeskens -arabesker -arabeskerna -arabeskernas -arabeskers -arabisk -arabiska -arabiskan -arabiskans -arabiske -arabiskor -arabiskorna -arabiskornas -arabiskors -arabiskt -arabs -arbeta -arbetad -arbetade -arbetades -arbetande -arbetandet -arbetandets -arbetar -arbetare -arbetaren -arbetarens -arbetares -arbetarna -arbetarnas -arbetas -arbetat -arbetats -arbete -arbeten -arbetena -arbetenas -arbetens -arbetes -arbetet -arbetets -arbetsam -arbetsamma -arbetsammare -arbetsammas -arbetsammast -arbetsammaste -arbetsamme -arbetsammes -arbetsamt -arbetsbesparande -arbetsbesparandet -arbetsbesparandets -arbetsbord -arbetsborden -arbetsbordens -arbetsbordet -arbetsbordets -arbetsdag -arbetsdagar -arbetsdagarna -arbetsdagarnas -arbetsdagars -arbetsdagen -arbetsdagens -arbetsdags -arbetsgivaravgift -arbetsgivaravgiften -arbetsgivaravgiftens -arbetsgivaravgifter -arbetsgivaravgifterna -arbetsgivaravgifternas -arbetsgivaravgifters -arbetsgivaravgifts -arbetsgivare -arbetsgivaren -arbetsgivarens -arbetsgivares -arbetsgivarna -arbetsgivarnas -arbetsgrupp -arbetsgruppen -arbetsgruppens -arbetsgrupper -arbetsgrupperna -arbetsgruppernas -arbetsgruppers -arbetsgrupps -arbetsinsats -arbetsinsatsen -arbetsinsatsens -arbetskamrat -arbetskamraten -arbetskamratens -arbetskamrater -arbetskamraterna -arbetskamraternas -arbetskamraters -arbetskraft -arbetskraften -arbetskraftens -arbetskrafts -arbetsmarknad -arbetsmarknaden -arbetsmarknadens -arbetsmarknads -arbetsmarknadsminister -arbetsmarknadsministern -arbetsmarknadsministerns -arbetsmarknadsministers -arbetsmarknadsministrar -arbetsmarknadsministrarna -arbetsmarknadsministrarnas -arbetsmarknadsministrars -arbetsredskap -arbetsredskapen -arbetsredskapens -arbetsro -arbetsron -arbetsrons -arbetsros -arbetsrum -arbetsrummen -arbetsrummens -arbetsrummet -arbetsrummets -arbetssituation -arbetssituationen -arbetssituationens -arbetssituations -arbetsskada -arbetsskadan -arbetsskadans -arbetsskador -arbetsskadorna -arbetsskadornas -arbetsskadors -arbetstagare -arbetstagaren -arbetstagarens -arbetstagares -arbetstagarna -arbetstagarnas -arbetstid -arbetstiden -arbetstidens -arbetstider -arbetstiderna -arbetstidernas -arbetstiders -arbetstids -arbetsuppgift -arbetsuppgiften -arbetsuppgiftens -arbetsuppgifter -arbetsuppgifterna -arbetsuppgifternas -arbetsuppgifters -arboga -arbogas -area -arean -areans -aren -arena -arenan -arenans -arenor -arenorna -arenornas -arenors -arens -areor -areorna -areornas -areors -aret -arets -arg -arga -argare -argas -argast -argaste -arge -argentina -argentinare -argentinaren -argentinarens -argentinares -argentinarna -argentinarnas -argentinas -argentinsk -argentinska -argentinskan -argentinskans -argentinskas -argentinske -argentinskor -argentinskorna -argentinskornas -argentinskors -argentinskt -arges -argsint -argsinta -argsinte -argt -argument -argumentation -argumentationen -argumentationens -argumentations -argumenten -argumentens -argumentera -argumenterad -argumenterade -argumenterades -argumenterande -argumenterandet -argumenterandets -argumenterar -argumenteras -argumenterat -argumenterats -argumentering -argumenteringen -argumenteringens -argumenterings -argumentet -argumentets -arguments -aria -arian -arians -arias -arier -ariern -arierna -ariernas -arierns -arior -ariorna -ariornas -ariors -arisk -ariska -ariskt -aristokrat -aristokraten -aristokratens -aristokrater -aristokraterna -aristokraternas -aristokraters -aristokrati -aristokratien -aristokratiens -aristokratier -aristokratierna -aristokratiernas -aristokratiers -aristokratin -aristokratins -aristokratis -aristokratisk -aristokratiska -aristokratiske -aristokratiskt -aristokrats -aritmetik -aritmetiken -aritmetikens -aritmetisk -aritmetiska -aritmetiskt -ark -arkad -arkaden -arkadens -arkader -arkaderna -arkadernas -arkaders -arkaisk -arkaiska -arkaiskt -arkaism -arkaismen -arkaismens -arken -arkens -arket -arkets -arketyp -arketypen -arketypens -arketyper -arketyperna -arketypernas -arketypers -arketypisk -arketypiska -arketypiskt -arkitekt -arkitekten -arkitektens -arkitekter -arkitekterna -arkitekternas -arkitekters -arkitektonisk -arkitektoniska -arkitektoniskt -arkitekts -arkitektur -arkitekturen -arkitekturens -arkitekturer -arkitekturerna -arkitekturernas -arkitekturers -arkitekturs -arkiv -arkiven -arkivens -arkivera -arkiverad -arkiverade -arkiverades -arkiverande -arkiverandet -arkiverandets -arkiverar -arkiveras -arkiverat -arkiverats -arkivering -arkiveringen -arkiveringens -arkivet -arkivets -arks -arktisk -arktiska -arktiskt -arm -arma -armada -armadan -armadans -armador -armadorna -armadornas -armadors -armar -armarna -armarnas -armars -armatur -armaturen -armaturens -armaturer -armaturerna -armaturernas -armaturers -armband -armbanden -armbandens -armbandet -armbandets -armbands -armbandsur -armbandsuren -armbandsurens -armbandsuret -armbandsurets -arme -armen -armenien -armeniens -armenier -armeniern -armenierna -armeniernas -armenierns -armenisk -armeniska -armeniske -armeniskt -armens -armera -armerade -armerades -armerar -armeras -armerat -armod -armodet -armodets -armods -armring -armringar -armringarna -armringarnas -armringars -armringen -armringens -armrings -arms -armt -arne -arnemark -arnemarks -arnes -arom -aromatisk -aromatiska -aromatiskt -aromen -aromens -aromer -aromerna -aromernas -aromers -aroms -aronsson -aronssons -arrangemang -arrangemangen -arrangemangens -arrangemanget -arrangemangets -arrangemangs -arrangera -arrangerad -arrangerade -arrangerades -arrangerande -arrangerandet -arrangerandets -arrangerar -arrangeras -arrangerat -arrangerats -arrendator -arrendatorer -arrendatorerna -arrendatorernas -arrendatorers -arrendatorn -arrendatorns -arrendators -arrende -arrendera -arrenderad -arrenderade -arrenderades -arrenderande -arrenderandet -arrenderandets -arrenderar -arrenderas -arrenderat -arrenderats -arrendes -arrendet -arrendets -arrest -arresten -arrestens -arrester -arrestera -arresterad -arresterade -arresterades -arresterande -arresterandet -arresterandets -arresterar -arresteras -arresterat -arresterats -arrestering -arresteringar -arresteringarna -arresteringarnas -arresteringars -arresteringen -arresteringens -arresterings -arresterna -arresternas -arresters -arrogans -arrogansen -arrogant -arroganta -ars -arsenik -arseniken -arsenikens -art -arta -artad -artade -artades -artar -artat -artats -artefakt -artefakten -artefaktens -artefakter -artefakterna -artefakternas -artefakters -arten -artens -arter -arterna -arternas -arters -artig -artiga -artigare -artigast -artigaste -artige -artighet -artigheten -artighetens -artigheter -artigheterna -artigheternas -artigheters -artighets -artigt -artist -artisten -artistens -artister -artisterna -artisternas -artisters -artists -arton -artonde -artonhundra -artontusen -arts -artur -arturs -arv -arven -arvens -arvet -arvets -arvid -arvids -arvidsjaur -arvidsjaurs -arvidsson -arvidssons -arvika -arvikas -arvingar -arvingarna -arvingarnas -arvingars -arvinge -arvingen -arvingens -arvinges -arvode -arvoden -arvodena -arvodenas -arvodens -arvodes -arvodet -arvodets -arvs -arvsmassa -arvsmassan -arvsmassans -arvsmassas -asagud -asagudar -asagudarna -asagudarnas -asagudars -asaguden -asagudens -asar -asarna -asarnas -asars -asarum -asarums -asatro -asatron -asatrons -asbest -asbesten -asbestens -asbests -asen -asens -aset -asets -asiat -asiaten -asiatens -asiater -asiaterna -asiaternas -asiaters -asiatisk -asiatiska -asiatiske -asiatiskt -asien -asiens -ask -aska -askad -askade -askades -askan -askans -askar -askarna -askarnas -askars -askas -askat -askats -asken -askens -askersund -askersunds -asket -asketen -asketens -asketer -asketerna -asketernas -asketers -asketisk -asketiska -asketiske -asketiskt -askets -askfat -askfaten -askfatens -askfatet -askfatets -askfats -askim -askims -asmundtorp -asmundtorps -asp -aspabruk -aspabruks -aspar -asparna -asparnas -aspars -aspekt -aspekten -aspektens -aspekter -aspekterna -aspekternas -aspekters -aspen -aspens -aspirant -aspiranten -aspirantens -aspiranter -aspiranterna -aspiranternas -aspiranters -aspiration -aspirationen -aspirationens -aspirationer -aspirationerna -aspirationernas -aspirationers -aspirations -aspirera -aspirerad -aspirerade -aspirerades -aspirerande -aspirerandet -aspirerandets -aspirerar -aspireras -aspirerat -aspirerats -assessor -assessorn -assessorns -assistans -assistansen -assistansens -assistanser -assistanserna -assistansernas -assistansers -assistent -assistenten -assistentens -assistenter -assistenterna -assistenternas -assistenters -assistera -assisterad -assisterade -assisterades -assisterar -assisteras -assisterat -assisterats -association -associationen -associationens -associationer -associationerna -associationernas -associationers -associations -associativ -associativa -associativt -associera -associerad -associerade -associerades -associerande -associerandet -associerandets -associerar -associeras -associerat -associerats -assyrier -assyriern -assyrierna -assyriernas -assyrierns -assyriers -assyrisk -assyriska -assyriske -assyriskt -asta -astas -aster -asterisk -asterisken -asteriskens -asterisker -asteriskerna -asteriskernas -asteriskers -astern -asterns -astma -astman -astmans -astmatiker -astmatikern -astmatikerna -astmatikernas -astmatikerns -astmatikers -astra -astrar -astrarna -astrarnas -astrars -astras -astrid -astrids -astrofysik -astrofysiken -astrofysikens -astronaut -astronauten -astronautens -astronauter -astronauterna -astronauternas -astronauters -astronom -astronomen -astronomens -astronomer -astronomerna -astronomernas -astronomers -astronomi -astronomien -astronomiens -astronomin -astronomins -astronomisk -astronomiska -astronomiskt -astronoms -asymmetrisk -asymmetriska -asymmetriskt -asymptotisk -asymptotiska -asymptotiskt -asynkron -asynkrona -asynkront -ateism -ateismen -ateismens -ateist -ateisten -ateistens -ateister -ateisterna -ateisternas -ateisters -ateistisk -ateistiska -ateistiske -ateistiskt -ateists -aten -atens -atom -atombomb -atombomben -atombombens -atombomber -atombomberna -atombombernas -atombombers -atombombs -atomen -atomens -atomer -atomerna -atomernas -atomers -atomfysik -atomfysiken -atomfysikens -atoni -atonien -atoniens -atonin -atonins -att -attack -attacken -attackens -attacker -attackera -attackerad -attackerade -attackerades -attackerande -attackerandet -attackerandets -attackerar -attackeras -attackerat -attackerats -attackerna -attackernas -attackers -attacks -attentat -attentaten -attentatens -attentatet -attentatets -attentats -attest -attesten -attestens -attester -attestera -attesterad -attesterade -attesterar -attesterat -attesterna -attesternas -attesters -attityd -attityden -attitydens -attityder -attityderna -attitydernas -attityders -attityds -attrahera -attraherad -attraherade -attraherades -attraherande -attraherandet -attraherandets -attraherar -attraheras -attraherat -attraherats -attraktion -attraktionen -attraktionens -attraktioner -attraktionerna -attraktionernas -attraktioners -attraktions -attraktiv -attraktiva -attraktivare -attraktivast -attraktivaste -attraktive -attraktivt -attrapp -attrappen -attrappens -attrapper -attrapperna -attrappernas -attrappers -attribut -attributen -attributens -attributet -attributets -atypisk -atypiska -atypiskt -audiens -audiensen -audiensens -audienser -audienserna -audiensernas -audiensers -auditorier -auditorierna -auditoriernas -auditoriers -auditoriet -auditoriets -auditorium -august -augusti -augustis -augusts -auktion -auktionen -auktionens -auktioner -auktionera -auktionerade -auktionerades -auktionerar -auktioneras -auktionerat -auktionerats -auktionerna -auktionernas -auktioners -auktions -auktorisera -auktoriserad -auktoriserade -auktoriserades -auktoriserar -auktoriseras -auktoriserat -auktoriserats -auktoritativ -auktoritativa -auktoritativt -auktoritet -auktoriteten -auktoritetens -auktoriteter -auktoriteterna -auktoriteternas -auktoriteters -auktoritets -aura -auran -aurans -auras -aurora -auroras -autenticitet -autenticiteten -autenticitetens -autentisk -autentiska -autentiskt -autistisk -autistiska -autistiskt -automat -automaten -automatens -automater -automaterna -automaternas -automaters -automatik -automatiken -automatikens -automation -automationen -automationens -automations -automatisera -automatiserad -automatiserade -automatiserades -automatiserar -automatiseras -automatiserat -automatiserats -automatisering -automatiseringar -automatiseringarna -automatiseringarnas -automatiseringars -automatiseringen -automatiseringens -automatiserings -automatisk -automatiska -automatiskt -automats -autonom -autonoma -autonomi -autonomien -autonomiens -autonomin -autonomins -autonomis -autonomt -autostrada -autostradan -autostradans -autostrador -autostradorna -autostradornas -autostradors -avancemang -avancemangen -avancemangens -avancemanget -avancemangets -avancera -avancerad -avancerade -avancerades -avancerande -avancerandet -avancerandets -avancerar -avanceras -avancerat -avancerats -avart -avarten -avartens -avarter -avarterna -avarternas -avarters -avbida -avbidade -avbidan -avbidans -avbidar -avbidas -avbidat -avbrott -avbrotten -avbrottens -avbrottet -avbrottets -avbrotts -avbruten -avbrutet -avbrutit -avbrutits -avbrutna -avbryt -avbryta -avbrytande -avbrytas -avbryter -avbrytes -avbryts -avbytare -avbytaren -avbytarens -avbytares -avbytarna -avbytarnas -avdankad -avdankade -avdankat -avdrag -avdragen -avdragens -avdraget -avdragets -avdragna -avdrags -avdramatisera -avdramatiserad -avdramatiserade -avdramatiserades -avdramatiserar -avdramatiseras -avdramatiserat -avdramatiserats -avdunsta -avdunstad -avdunstade -avdunstades -avdunstande -avdunstandet -avdunstandets -avdunstar -avdunstas -avdunstat -avdunstats -avdunstning -avdunstningar -avdunstningarna -avdunstningarnas -avdunstningars -avdunstningen -avdunstningens -avdunstnings -ave -aven -avena -avenas -avens -aveny -avenyer -avenyerna -avenyernas -avenyers -avenyn -avenyns -avenys -aversion -aversionen -aversionens -aversioner -aversionerna -aversionernas -aversioners -avesta -avestas -avet -avets -avfatta -avfattad -avfattade -avfattades -avfattar -avfattas -avfattat -avfattats -avfyra -avfyrad -avfyrade -avfyrades -avfyrande -avfyrandet -avfyrandets -avfyrar -avfyras -avfyrat -avfyrats -avgas -avgasen -avgasens -avgaser -avgaserna -avgasernas -avgasers -avgav -avgavs -avge -avger -avges -avgett -avgetts -avgick -avgift -avgifta -avgiftad -avgiftade -avgiftades -avgiftar -avgiftas -avgiftat -avgiftats -avgiften -avgiftens -avgifter -avgifterna -avgifternas -avgifters -avgiftning -avgiftningar -avgiftningarna -avgiftningarnas -avgiftningars -avgiftningen -avgiftningens -avgiftnings -avgifts -avgiftsfri -avgiftsfria -avgiftsfritt -avgiva -avgivande -avgivas -avgiven -avgivet -avgivit -avgivna -avgjord -avgjorda -avgjorde -avgjordes -avgjort -avgjorts -avgjut -avgjuta -avgjutas -avgjuter -avgjutit -avgjutits -avgjuts -avgnagd -avgnagda -avgnagt -avgrund -avgrunden -avgrundens -avgrunder -avgrunderna -avgrundernas -avgrunders -avgrunds -avgrundsdjup -avgrundsdjupa -avgrundsdjupt -avgud -avguda -avgudad -avgudade -avgudades -avgudadyrkan -avgudadyrkans -avgudadyrkare -avgudadyrkaren -avgudadyrkarens -avgudadyrkares -avgudadyrkarna -avgudadyrkarnas -avgudande -avgudandet -avgudandets -avgudar -avgudarna -avgudarnas -avgudars -avgudas -avgudat -avgudats -avguden -avgudens -avguderi -avguderiet -avguderiets -avgudisk -avgudiska -avgudiskt -avguds -avhopp -avhoppad -avhoppade -avhoppare -avhopparen -avhopparens -avhoppares -avhopparna -avhopparnas -avhoppat -avhoppen -avhoppens -avhoppet -avhoppets -avhugga -avhuggen -avhugger -avhugget -avhuggit -avhuggits -avhuggna -avhuggs -avi -aviat -aviaten -aviatens -aviater -aviaterna -aviaternas -aviaters -aviatik -aviatiken -aviatikens -aviats -avier -avierna -aviernas -aviers -avig -aviga -avigan -avigsida -avigsidan -avigsidans -avigsidas -avigsidor -avigsidorna -avigsidornas -avigsidors -avigt -avin -avins -avis -avisera -aviserad -aviserade -aviserades -aviserar -aviseras -aviserat -aviserats -avisering -aviseringar -aviseringarna -aviseringarnas -aviseringars -aviseringen -aviseringens -aviserings -avkasta -avkastad -avkastade -avkastades -avkastar -avkastas -avkastat -avkastats -avkastning -avkastningar -avkastningarna -avkastningarnas -avkastningars -avkastningen -avkastningens -avkastnings -avkoda -avkodad -avkodade -avkodades -avkodar -avkodare -avkodaren -avkodarens -avkodares -avkodarna -avkodarnas -avkodas -avkodat -avkodats -avkodning -avkodningen -avkodningens -avkodnings -avkomma -avkomman -avkommans -avkommas -avkommor -avkommorna -avkommornas -avkommors -avkrok -avkrokar -avkrokarna -avkrokarnas -avkrokars -avkroken -avkrokens -avkunna -avkunnad -avkunnade -avkunnades -avkunnande -avkunnandet -avkunnandets -avkunnar -avkunnas -avkunnat -avkunnats -avmattning -avmattningen -avmattningens -avmattnings -avnjut -avnjuta -avnjutas -avnjuten -avnjuter -avnjutes -avnjutet -avnjutit -avnjutits -avnjutna -avnjuts -avog -avoga -avoge -avoghet -avogheten -avoghetens -avoghets -avogt -avpassa -avpassad -avpassade -avpassades -avpassar -avpassas -avpassat -avpassats -avrapportera -avrapporterad -avrapporterade -avrapporterades -avrapporterande -avrapporterandet -avrapporterandets -avrapporterar -avrapporteras -avrapporterat -avrapporterats -avreagera -avreagerade -avreagerande -avreagerar -avreagerat -avregistrera -avregistrerad -avregistrerade -avregistrerades -avregistrerar -avregistreras -avregistrerat -avregistrerats -avres -avresa -avresan -avresans -avresas -avresedag -avresedagar -avresedagarna -avresedagarnas -avresedagars -avresedagen -avresedagens -avresedags -avreser -avresor -avresorna -avresornas -avresors -avrest -avreste -avrunda -avrundad -avrundade -avrundades -avrundar -avrundas -avrundat -avrundats -avrundning -avrundningar -avrundningarna -avrundningarnas -avrundningars -avrundningen -avrundningens -avrundnings -avsade -avsagt -avsaknad -avsaknaden -avsaknadens -avsats -avsatsen -avsatsens -avsatser -avsatserna -avsatsernas -avsatsers -avsatt -avsatta -avse -avsedd -avsedda -avseende -avseenden -avseendena -avseendenas -avseendens -avseendet -avseendets -avser -avses -avsett -avsetts -avsides -avsikt -avsikten -avsiktens -avsikter -avsikterna -avsikternas -avsikters -avskaffa -avskaffad -avskaffade -avskaffades -avskaffande -avskaffandet -avskaffandets -avskaffar -avskaffas -avskaffat -avskaffats -avskar -avskars -avsked -avskeda -avskedad -avskedade -avskedades -avskedande -avskedandet -avskedandets -avskedar -avskedas -avskedat -avskedats -avskeden -avskedens -avskedet -avskedets -avskeds -avskedsfest -avskedsfesten -avskedsfestens -avskedsfester -avskedsfesterna -avskedsfesternas -avskedsfesters -avskrev -avskrevs -avskrift -avskriften -avskriftens -avskrifter -avskrifterna -avskrifternas -avskrifters -avskrifts -avskriva -avskrivas -avskriven -avskriver -avskrivet -avskrivit -avskrivits -avskrivna -avskrivning -avskrivningar -avskrivningarna -avskrivningarnas -avskrivningars -avskrivningen -avskrivningens -avskrivnings -avskrivningstid -avskrivningstiden -avskrivningstidens -avskrivningstider -avskrivningstiderna -avskrivningstidernas -avskrivningstiders -avskrivningstids -avskrivs -avskum -avskummen -avskummens -avskummet -avskummets -avskums -avskuren -avskuret -avskurit -avskurits -avskurna -avsky -avskydd -avskydda -avskydde -avskyddes -avskyn -avskyns -avskyr -avskys -avskytt -avskytts -avsmak -avsmaka -avsmakade -avsmakades -avsmakande -avsmakar -avsmakas -avsmakat -avsmakats -avsmaken -avsmakens -avsnitt -avsnitten -avsnittens -avsnittet -avsnittets -avsnitts -avsomna -avsomnad -avsomnade -avsomnades -avsomnande -avsomnandet -avsomnandets -avsomnar -avsomnat -avsomnats -avspisa -avspisad -avspisade -avspisades -avspisande -avspisandet -avspisandets -avspisar -avspisas -avspisat -avspisats -avstamp -avstampen -avstampens -avstampet -avstampets -avstamps -avstanna -avstannad -avstannade -avstannande -avstannar -avstannat -avstava -avstavad -avstavade -avstavades -avstavande -avstavandet -avstavandets -avstavar -avstavas -avstavat -avstavats -avstavning -avstavningar -avstavningarna -avstavningarnas -avstavningars -avstavningen -avstavningens -avstavnings -avsteg -avstegen -avstegens -avsteget -avstegets -avstegs -avstickare -avstickaren -avstickarens -avstickares -avstickarna -avstickarnas -avstigning -avstigningar -avstigningarna -avstigningarnas -avstigningars -avstigningen -avstigningens -avstignings -avstod -avstyr -avstyra -avstyrande -avstyrandet -avstyrandets -avstyras -avstyrd -avstyrde -avstyrdes -avstyrk -avstyrka -avstyrker -avstyrkt -avstyrkte -avstyrs -avstyrt -avstyrts -avsvimma -avsvimmad -avsvimmade -avsvimmades -avsvimmande -avsvimmandet -avsvimmandets -avsvimmar -avsvimmas -avsvimmat -avsvimmats -avsvor -avsvurit -avsyna -avsynad -avsynade -avsynades -avsynande -avsynandet -avsynandets -avsynar -avsynas -avsynat -avsynats -avsyning -avsyningar -avsyningarna -avsyningarnas -avsyningars -avsyningen -avsyningens -avsynings -avta -avtaga -avtappning -avtappningar -avtappningarna -avtappningarnas -avtappningars -avtappningen -avtappningens -avtappnings -avtar -avteckna -avtecknad -avtecknade -avtecknades -avtecknande -avtecknandet -avtecknandets -avtecknar -avtecknas -avtecknat -avtecknats -avtog -avtrubba -avtrubbad -avtrubbade -avtrubbades -avtrubbar -avtrubbas -avtrubbat -avtrubbats -avtrubbning -avtrubbningar -avtrubbningarna -avtrubbningarnas -avtrubbningars -avtrubbningen -avtrubbningens -avtrubbnings -avtryck -avtrycka -avtryckare -avtryckaren -avtryckarens -avtryckares -avtryckarna -avtryckarnas -avtrycken -avtryckens -avtrycker -avtrycket -avtryckets -avtrycks -avtryckt -avtryckte -avtrycktes -avtryckts -avtvinga -avtvingade -avtvingades -avtvingar -avtvingas -avtvingat -avtvingats -avund -avundades -avundas -avundats -avunden -avundens -avunds -avundsam -avundsamma -avundsamt -avundsjuk -avundsjuka -avundsjukan -avundsjukans -avundsjukas -avundsjuke -avundsjukes -avundsjukt -avvakta -avvaktad -avvaktade -avvaktades -avvaktan -avvaktande -avvaktandet -avvaktandets -avvaktans -avvaktar -avvaktas -avvaktat -avvaktats -avvara -avvarade -avvarades -avvarar -avvaras -avvarat -avvarats -avvek -avveks -avverka -avverkad -avverkade -avverkades -avverkande -avverkandet -avverkandets -avverkar -avverkas -avverkat -avverkats -avverkning -avverkningar -avverkningarna -avverkningarnas -avverkningars -avverkningen -avverkningens -avverknings -avverkningsbar -avverkningsbara -avverkningsbart -avvika -avvikande -avvikandes -avvikandet -avvikandets -avvikare -avvikaren -avvikarens -avvikares -avvikarna -avvikarnas -avviker -avvikit -avvisa -avvisad -avvisade -avvisades -avvisande -avvisandet -avvisandets -avvisar -avvisas -avvisat -avvisats -avvisning -avvisningar -avvisningarna -avvisningarnas -avvisningars -avvisningen -avvisningens -avvisnings -avyttra -avyttrad -avyttrade -avyttrades -avyttrar -avyttras -avyttrat -avyttrats -avyttring -avyttringar -avyttringarna -avyttringarnas -avyttringars -avyttringen -avyttringens -avyttrings -axen -axens -axet -axets -axiom -axiomatisk -axiomatiska -axiomatiskt -axiomen -axiomens -axiomet -axiomets -axioms -azerbajdzjan -azerbajdzjans -babian -babianen -babianens -babianer -babianerna -babianernas -babianers -babians -baby -babyn -babyns -back -backa -backad -backade -backades -backande -backar -backarna -backarnas -backars -backaryd -backaryds -backas -backat -backats -backe -backen -backens -backes -backstuga -backstugan -backstugans -backstugas -backstugor -backstugorna -backstugornas -backstugors -backus -bacon -bad -bada -badad -badade -badades -badande -badandet -badandets -badar -badas -badat -badats -badda -baddade -baddades -baddar -baddare -baddaren -baddarens -baddares -baddarna -baddarnas -baddas -baddat -baddats -baden -badens -badet -badets -badhus -badhusen -badhusens -badhuset -badhusets -badkar -badkaren -badkarens -badkaret -badkarets -badkars -badminton -badort -badorten -badortens -badorter -badorterna -badorternas -badorters -badorts -badrock -badrockar -badrockarna -badrockarnas -badrockars -badrocken -badrockens -badrum -badrummen -badrummens -badrummet -badrummets -badrums -bads -badstrand -badstranden -badstrandens -badvatten -badvattnet -badvattnets -bagage -bagaget -bagagets -bagageutrymme -bagageutrymmen -bagageutrymmena -bagageutrymmenas -bagageutrymmens -bagageutrymmet -bagageutrymmets -bagare -bagaren -bagarens -bagares -bagarmossen -bagarmossens -bagarna -bagarnas -bageri -bagerier -bagerierna -bageriernas -bageriers -bageriet -bageriets -baggar -baggarna -baggarnas -baggars -bagge -baggen -baggens -bagges -bahamas -bahr -bahrain -bahrains -bahrs -bajonett -bajonetten -bajonettens -bajonetter -bajonetterna -bajonetternas -bajonetters -bajs -bajsa -bajsade -bajsande -bajsar -bajsat -bajset -bajsets -bak -baka -bakad -bakade -bakades -bakar -bakas -bakat -bakats -bakbord -bakborden -bakbordens -bakbordet -bakbordets -bakbords -bakdantare -bakdantaren -bakdantarens -bakdantares -bakdantarna -bakdantarnas -bakduk -bakdukar -bakdukarna -bakdukarnas -bakdukars -bakduken -bakdukens -bakduks -baken -bakens -bakerst -bakersta -baket -bakets -bakficka -bakfickan -bakfickans -bakfickor -bakfickorna -bakfickornas -bakfickors -bakfoten -bakgata -bakgatan -bakgatans -bakgator -bakgatorna -bakgatornas -bakgators -bakgrund -bakgrunden -bakgrundens -bakgrunder -bakgrunderna -bakgrundernas -bakgrunders -bakgrunds -baki -bakkropp -bakkroppar -bakkropparna -bakkropparnas -bakkroppars -bakkroppen -bakkroppens -bakkropps -bakning -bakningen -bakningens -bakom -bakre -bakruta -bakrutan -bakrutans -bakrutor -bakrutorna -bakrutornas -bakrutors -baks -baksida -baksidan -baksidans -baksidas -baksidor -baksidorna -baksidornas -baksidors -baktankar -baktankarna -baktankarnas -baktankars -baktanke -baktanken -baktankens -bakterie -bakterien -bakteriens -bakterier -bakterierna -bakteriernas -bakteriers -bakteries -bakut -ban -bana -banad -banade -banades -banan -bananen -bananens -bananer -bananerna -bananernas -bananers -banans -banar -banas -banat -banats -banbrytande -banbrytare -banbrytaren -banbrytarens -banbrytares -banbrytarna -banbrytarnas -band -banda -bandad -bandade -bandades -bandage -bandagen -bandagens -bandaget -bandagets -bandar -bandas -bandat -bandats -bandbredd -bandbredden -bandbreddens -banden -bandens -bandet -bandets -bandhagen -bandhagens -bandit -banditen -banditens -banditer -banditerna -banditernas -banditers -bandits -bandning -bandningen -bandningens -bands -bandy -bandyn -bandyns -bane -baneman -banemannen -banemannens -banemans -banen -banens -baner -baneren -banerens -baneret -banerets -baners -bank -banka -bankad -bankade -bankades -bankande -bankandet -bankandets -bankar -bankarna -bankarnas -bankars -bankas -bankat -bankats -banken -bankens -banker -bankerna -bankernas -bankers -bankeryd -bankeryds -bankett -banketten -bankettens -banketter -banketterna -banketternas -banketters -bankgiro -bankgiroen -bankgiroens -bankgiros -bankir -bankiren -bankirens -bankirer -bankirerna -bankirernas -bankirers -bankirs -bankkonto -bankkontos -banko -bankomat -bankomaten -bankomatens -bankomater -bankomaterna -bankomaternas -bankomaters -bankrutt -bankrutta -banks -bann -banna -bannad -bannade -bannades -bannar -bannas -bannat -bannats -bannet -bannets -bannor -bannorna -bannornas -bannors -banor -banorna -banornas -banors -banta -bantad -bantade -bantades -bantar -bantas -bantat -bantats -bantning -bantningen -bantningens -bantnings -bantu -bantuer -bantuerna -bantuernas -bantuers -bantun -bantuns -bantus -baptist -baptisten -baptistens -baptister -baptisterna -baptisternas -baptisters -bar -bara -barack -baracken -barackens -baracker -barackerna -barackernas -barackers -baracks -barare -baras -barast -baraste -barbados -barbar -barbaren -barbarens -barbarer -barbarerna -barbarernas -barbarers -barbari -barbarien -barbariens -barbariet -barbariets -barbarisk -barbariska -barbariskt -barbars -barbent -barbenta -barberare -barberaren -barberarens -barberares -barberarna -barberarnas -barbro -barbros -bardisk -bardiskar -bardiskarna -bardiskarnas -bardiskars -bardisken -bardiskens -baren -barens -barer -barerna -barernas -barers -barfota -bark -barka -barkad -barkade -barkar -barkarna -barkarnas -barkars -barkat -barkbit -barkbitar -barkbitarna -barkbitarnas -barkbitars -barkbiten -barkbitens -barkbits -barken -barkens -barker -barkerna -barkernas -barkers -barks -barm -barmar -barmarna -barmarnas -barmars -barmen -barmens -barms -barn -barnbarn -barnbarnen -barnbarnens -barnbarnet -barnbarnets -barnbarns -barnbidrag -barnbidragen -barnbidragens -barnbidraget -barnbidragets -barnbidrags -barnbok -barnboken -barnbokens -barnboks -barndom -barndomen -barndomens -barndoms -barnen -barnens -barnet -barnets -barnmorska -barnmorskan -barnmorskans -barnmorskor -barnmorskorna -barnmorskornas -barnmorskors -barnomsorg -barnomsorgen -barnomsorgens -barnomsorgs -barnpassning -barnpassningen -barnpassningens -barnpiga -barnpigan -barnpigans -barnpigas -barnpigor -barnpigorna -barnpigornas -barnpigors -barnprogram -barnprogrammen -barnprogrammens -barnprogrammet -barnprogrammets -barnprograms -barnprostitution -barnprostitutionen -barnprostitutionens -barnprostitutions -barns -barnsben -barnvagn -barnvagnen -barnvagnens -barnvagns -barock -barocka -barockare -barockast -barockaste -barocken -barockens -barockt -barometer -barometern -barometerns -barometers -barometrar -barometrarna -barometrarnas -barometrars -baron -baronen -baronens -baroner -baronerna -baronernas -baroners -barr -barren -barrens -barret -barrets -barrikad -barrikaden -barrikadens -barrikader -barrikadera -barrikaderad -barrikaderade -barrikaderades -barrikaderar -barrikaderas -barrikaderat -barrikaderats -barrikaderna -barrikadernas -barrikaders -barrikads -barrs -bars -barsk -barska -barskas -barske -barskes -barskrapa -barskrapad -barskrapade -barskrapades -barskrapar -barskrapat -barskrapats -barskt -bart -bartender -bartendern -bartenderns -bartenders -bartendrar -bartendrarna -bartendrarnas -bartendrars -baryton -barytonen -barytonens -barytoner -barytonerna -barytonernas -barytoners -bas -basa -basade -basar -basaren -basarens -basarer -basarerna -basarernas -basarers -basarna -basarnas -basars -basat -basen -basens -baser -basera -baserad -baserade -baserades -baserar -baseras -baserat -baserats -baserna -basernas -basers -basis -basisk -basiska -basiskt -basist -basisten -basistens -basister -basisterna -basisternas -basisters -basker -baskern -baskerna -baskernas -baskerns -baskers -basket -basketen -basketens -baskets -baskisk -baskiska -baskiskan -baskiskans -baskiskt -baskrar -baskrarna -baskrarnas -baskrars -basta -bastade -bastant -bastanta -bastantare -bastantast -bastantaste -bastar -bastard -bastarden -bastardens -bastarder -bastarderna -bastardernas -bastarders -bastat -bastu -bastun -bastuns -bastur -basturna -basturnas -basturs -bastus -basun -basunen -basunens -basuner -basunera -basunerade -basunerades -basunerar -basuneras -basunerat -basunerats -basunerna -basunernas -basuners -batik -batiken -batikens -batong -batongen -batongens -batonger -batongerna -batongernas -batongers -batteri -batterier -batterierna -batteriernas -batteriers -batteriet -batteriets -bautasten -bautastenar -bautastenarna -bautastenarnas -bautastenars -bautastenen -bautastenens -baxna -baxnade -baxnar -baxnat -bayersk -bayerska -bayerske -bayerskt -beakta -beaktad -beaktade -beaktades -beaktande -beaktandet -beaktandets -beaktar -beaktas -beaktat -beaktats -bearbeta -bearbetad -bearbetade -bearbetades -bearbetande -bearbetandet -bearbetandets -bearbetar -bearbetas -bearbetat -bearbetats -bearbetning -bearbetningar -bearbetningarna -bearbetningarnas -bearbetningars -bearbetningen -bearbetningens -bearbetnings -bebis -bebisar -bebisarna -bebisarnas -bebisars -bebisen -bebisens -bebo -bebodd -bebodda -bebodde -beboddes -bebor -bebos -bebott -bebotts -bebygg -bebygga -bebyggas -bebyggd -bebyggda -bebyggde -bebyggdes -bebygger -bebyggs -bebyggt -bebyggts -beck -becket -beckets -bedarra -bedarrade -bedarrar -bedarrat -bedd -bedda -beddingestrand -beddingestrands -bedja -bedjande -bedjandet -bedjandets -bedra -bedraga -bedragare -bedragaren -bedragarens -bedragares -bedragarna -bedragarnas -bedragas -bedragen -bedraget -bedragit -bedragits -bedragna -bedragnas -bedragne -bedragnes -bedrar -bedras -bedrev -bedrevs -bedrift -bedriften -bedriftens -bedrifter -bedrifterna -bedrifternas -bedrifters -bedriv -bedriva -bedrivas -bedriver -bedrives -bedrivit -bedrivits -bedrivs -bedrog -bedrogs -beduin -beduinen -beduinens -beduiner -beduinerna -beduinernas -beduiners -beduins -bedyra -bedyrad -bedyrade -bedyrades -bedyrande -bedyranden -bedyrandena -bedyrandenas -bedyrandens -bedyrandes -bedyrandet -bedyrandets -bedyrar -bedyrat -bedyrats -befann -befanns -befara -befarad -befarade -befarades -befarar -befaras -befarat -befarats -befatta -befattad -befattade -befattades -befattar -befattas -befattat -befattats -befattning -befattningar -befattningarna -befattningarnas -befattningars -befattningen -befattningens -befattnings -befattningshavare -befattningshavaren -befattningshavarens -befattningshavares -befattningshavarna -befattningshavarnas -befinna -befinnas -befinner -befinnes -befinns -befogad -befogade -befogat -befogenhet -befogenheten -befogenhetens -befogenheter -befogenheterna -befogenheternas -befogenheters -befogenhets -befordra -befordrad -befordrade -befordrades -befordran -befordrande -befordrar -befordras -befordrat -befordrats -befria -befriad -befriade -befriades -befriande -befriandet -befriandets -befriar -befriare -befriaren -befriarens -befriares -befriarna -befriarnas -befrias -befriat -befriats -befrukta -befruktad -befruktade -befruktades -befruktande -befruktar -befruktas -befruktat -befruktats -befruktning -befruktningar -befruktningarna -befruktningarnas -befruktningars -befruktningen -befruktningens -befruktnings -befunna -befunnen -befunnet -befunnit -befunnits -begabba -begabbade -begabbades -begabbande -begabbandet -begabbandets -begabbar -begabbas -begabbat -begabbats -begabberi -begabberier -begabberierna -begabberiernas -begabberiers -begabberiet -begabberiets -begagna -begagnad -begagnade -begagnades -begagnande -begagnandet -begagnandets -begagnar -begagnas -begagnat -begagnats -begav -bege -beger -begett -begick -begicks -begiva -begivas -begiven -begivenhet -begivenheten -begivenhetens -begivenheter -begivenheterna -begivenheternas -begivenheters -begivenhets -begivet -begivit -begivna -begjuten -begjutet -begjutna -begrav -begrava -begravas -begravd -begravda -begravde -begravdes -begraven -begraver -begraves -begravet -begravit -begravits -begravna -begravning -begravningar -begravningarna -begravningarnas -begravningars -begravningen -begravningens -begravnings -begravningsbok -begravningsboken -begravningsbokens -begravs -begravt -begravts -begrep -begrepp -begreppen -begreppens -begreppet -begreppets -begrepps -begreppsapparat -begreppsapparaten -begreppsapparatens -begreppsapparater -begreppsapparaterna -begreppsapparaternas -begreppsapparaters -begreppsapparats -begrip -begripa -begripas -begriper -begripit -begrips -begrov -begrovs -begrunda -begrundade -begrundan -begrundande -begrundandet -begrundandets -begrundar -begrundat -begynn -begynna -begynnande -begynner -begynt -begynte -begyntes -behag -behaga -behagad -behagade -behagades -behagar -behagas -behagat -behagats -behagen -behagens -behaget -behagets -behags -behaviorism -behaviorismen -behaviorismens -behov -behoven -behovens -behovet -behovets -behovs -beiga -beige -beigt -beivra -beivrad -beivrade -beivrades -beivrar -beivras -beivrat -beivrats -bejaka -bejakade -bejakades -bejakande -bejakar -bejakas -bejakat -bejakats -bekant -bekanta -bekantade -bekantades -bekantar -bekantare -bekantas -bekantast -bekantaste -bekantat -bekantats -bekantskap -bekantskapen -bekantskapens -bekantskaper -bekantskaperna -bekantskapernas -bekantskapers -bekantskaps -bekom -bekomma -bekommer -bekommit -bekosta -bekostad -bekostade -bekostades -bekostar -bekostas -bekostat -bekostats -bekostnad -bekransa -bekransade -bekransades -bekransar -bekransas -bekransat -bekransats -bekymmer -bekymmers -bekymmersam -bekymmersamma -bekymmersamt -bekymra -bekymrad -bekymrade -bekymrades -bekymrar -bekymras -bekymrat -bekymrats -bekymren -bekymrens -bekymret -bekymrets -bemanna -bemannad -bemannade -bemannades -bemannar -bemannas -bemannat -bemannats -bemanning -bemanningar -bemanningarna -bemanningarnas -bemanningars -bemanningen -bemanningens -bemannings -bemyndiga -bemyndigad -bemyndigade -bemyndigades -bemyndigande -bemyndigandet -bemyndigandets -bemyndigar -bemyndigas -bemyndigat -bemyndigats -ben -bena -benade -benan -benans -benar -benas -benat -benen -benens -benet -benets -bengt -bengts -bengtsfors -benig -beniga -benigt -benin -benins -benor -benorna -benornas -benors -bens -bensin -bensinen -bensinens -bensinkostnad -bensinkostnaden -bensinkostnadens -bensinkostnader -bensinkostnaderna -bensinkostnadernas -bensinkostnaders -bensinmack -bensinmackar -bensinmackarna -bensinmackarnas -bensinmackars -bensinmacken -bensinmackens -bensinmacks -benstomme -benstommen -benstommens -benstommes -beordra -beordrad -beordrade -beordrades -beordrar -beordras -beordrat -beordrats -bepryd -bepryda -beprydas -beprydde -bepryddes -bepryder -bepryds -beprytt -beprytts -ber -beramad -beramade -beramat -bered -bereda -beredande -beredandet -beredandets -beredare -beredaren -beredarens -beredares -beredarna -beredarnas -beredas -beredd -beredda -beredde -bereddes -bereder -beredes -beredning -beredningar -beredningarna -beredningarnas -beredningars -beredningen -beredningens -berednings -bereds -beredskap -beredskapen -beredskapens -beredskaps -berest -beresta -berett -beretts -berg -berga -bergas -bergby -bergbys -bergeforsen -bergeforsens -bergen -bergens -berget -bergets -bergfast -bergfasta -berghem -berghems -bergig -bergiga -bergigare -bergigast -bergigaste -bergigt -bergkvara -bergkvaras -bergmassiv -bergmassiven -bergmassivens -bergmassivet -bergmassivets -bergs -bergsbygd -bergsbygden -bergsbygdens -bergshamra -bergshamras -bergskedja -bergskedjan -bergskedjans -bergskedjor -bergskedjorna -bergskedjornas -bergskedjors -bergspredikan -bergssida -bergssidan -bergssidans -bergssidor -bergssidorna -bergssidornas -bergssidors -bergstopp -bergstoppar -bergstopparna -bergstopparnas -bergstoppars -bergstoppen -bergstoppens -bergstopps -bergvik -bergviks -berika -berikad -berikade -berikades -berikande -berikar -berikas -berikat -berikats -berit -berits -bernhard -bernhards -bero -berodde -beroende -beroendet -beroendets -beror -berott -bert -berta -bertas -berts -berusa -berusad -berusade -berusades -berusande -berusar -berusas -berusat -berusats -berusning -berusningar -berusningarna -berusningarnas -berusningars -berusningen -berusningens -beryktad -beryktade -beryktat -besanna -besannad -besannade -besannades -besannar -besannas -besannat -besannats -besatt -besatta -besatte -besattes -besatthet -besattheten -besatthetens -besatthets -besatts -bese -besegra -besegrad -besegrade -besegrades -besegrar -besegrare -besegraren -besegrarens -besegrares -besegrarna -besegrarnas -besegras -besegrat -besegrats -beser -beses -besikta -besiktad -besiktade -besiktades -besiktar -besiktas -besiktat -besiktats -besiktiga -besiktigad -besiktigade -besiktigades -besiktigande -besiktigas -besiktigat -besiktigats -besiktning -besiktningar -besiktningarna -besiktningarnas -besiktningars -besiktningen -besiktningens -besiktnings -besinna -besinnad -besinnade -besinnades -besinnande -besinnandet -besinnandets -besinnar -besinnas -besinnat -besinnats -besinning -besinningen -besinningens -besinnings -besitta -besitter -besittning -besittningar -besittningarna -besittningarnas -besittningars -besittningen -besittningens -besittnings -besjunga -besk -beska -beskaffad -beskaffade -beskaffat -beskaffenhet -beskaffenheten -beskaffenhetens -beskaffenhets -beskare -beskast -beskaste -beskatta -beskattad -beskattade -beskattades -beskattar -beskattas -beskattat -beskattats -beskattning -beskattningar -beskattningarna -beskattningarnas -beskattningars -beskattningen -beskattningens -beskattnings -besked -beskeden -beskedens -beskedet -beskedets -beskeds -beskickning -beskickningen -beskickningens -beskicknings -beskjut -beskjuta -beskjutas -beskjuter -beskjutit -beskjutits -beskjuts -beskow -beskows -beskrev -beskrevs -beskriv -beskriva -beskrivande -beskrivandet -beskrivandets -beskrivas -beskriven -beskriver -beskrives -beskrivet -beskrivit -beskrivits -beskrivna -beskrivning -beskrivningar -beskrivningarna -beskrivningarnas -beskrivningars -beskrivningen -beskrivningens -beskrivnings -beskrivs -beskt -beskurit -beskurits -beskydd -beskydda -beskyddad -beskyddade -beskyddades -beskyddar -beskyddare -beskyddaren -beskyddarens -beskyddares -beskyddarinna -beskyddarinnan -beskyddarinnans -beskyddarinnas -beskyddarna -beskyddarnas -beskyddas -beskyddat -beskyddats -beskyddet -beskyddets -besmyckad -besmyckade -besmyckat -bespara -besparad -besparade -besparades -besparande -besparar -besparas -besparat -besparats -besparing -besparingar -besparingarna -besparingarnas -besparingars -besparingen -besparingens -besparings -bespisa -bespisad -bespisade -bespisades -bespisar -bespisat -bespisats -bespisning -bespisningar -bespisningarna -bespisningarnas -bespisningars -bespisningen -bespisningens -bespotta -bespottad -bespottade -bespottades -bespottar -bespottas -bespottat -bespottats -bespruta -besprutad -besprutade -besprutades -besprutar -besprutas -besprutat -besprutats -besprutning -besprutningar -besprutningarna -besprutningarnas -besprutningars -besprutningen -besprutningens -besserwisser -besserwissern -besserwisserns -best -bestar -bestarna -bestarnas -bestars -besteg -besten -bestens -bestick -besticka -besticken -bestickens -besticker -besticket -bestickets -besticks -bestiga -bestigas -bestiger -bestigit -bestigning -bestigningen -bestigningens -bestod -bestods -bestorma -bestormad -bestormade -bestormades -bestormar -bestormas -bestormat -bestormats -bestraffa -bestraffad -bestraffade -bestraffades -bestraffande -bestraffandet -bestraffandets -bestraffar -bestraffas -bestraffat -bestraffats -bestraffning -bestraffningar -bestraffningarna -bestraffningarnas -bestraffningars -bestraffningen -bestraffningens -bestraffnings -bestred -bestreds -bestrid -bestrida -bestridas -bestrider -bestrides -bestridit -bestridits -bestrids -bestrykes -bestycka -bestyckad -bestyckade -bestyckades -bestyckar -bestyckas -bestyckat -bestyckats -bestyckning -bestyckningar -bestyckningarna -bestyckningarnas -bestyckningars -bestyckningen -bestyckningens -bestycknings -bestyr -bestyra -bestyras -bestyrde -bestyrdes -bestyrk -bestyrka -bestyrkas -bestyrker -bestyrks -bestyrkt -bestyrkta -bestyrkte -bestyrktes -bestyrkts -bestyrs -bestyrt -bestyrts -besutten -besuttet -besuttit -besuttna -besuttnas -besuttne -besuttnes -besvara -besvarad -besvarade -besvarades -besvarar -besvaras -besvarat -besvarats -besviken -besvikenhet -besvikenheten -besvikenhetens -besviket -besvikna -besvikne -bet -beta -betacka -betackade -betackar -betackat -betad -betade -betades -betagen -betaget -betagit -betagna -betan -betande -betandet -betandets -betans -betar -betarna -betarnas -betars -betas -betat -betats -bete -beteckna -betecknad -betecknade -betecknades -betecknande -betecknandet -betecknandets -betecknar -betecknas -betecknat -betecknats -beteckning -beteckningar -beteckningarna -beteckningarnas -beteckningars -beteckningen -beteckningens -betecknings -betedde -beteende -beteenden -beteendena -beteendenas -beteendens -beteendes -beteendet -beteendets -beten -betena -betenas -betens -beter -betes -betesmark -betesmarker -betesmarkerna -betesmarkernas -betesmarkers -betet -betets -betett -betinga -betingad -betingade -betingades -betingar -betingas -betingat -betingats -betog -betona -betonad -betonade -betonades -betonande -betonandet -betonandets -betonar -betonas -betonat -betonats -betong -betongen -betongens -betongs -betoning -betoningar -betoningarna -betoningarnas -betoningars -betoningen -betoningens -betonings -betor -betorna -betornas -betors -betrakta -betraktad -betraktade -betraktades -betraktande -betraktandet -betraktandets -betraktar -betraktare -betraktaren -betraktarens -betraktares -betraktarna -betraktarnas -betraktas -betraktat -betraktats -betro -betrodd -betrodda -betrodde -betroddes -betror -betros -betrott -betrotts -betryck -betrycka -betryckas -betrycker -betrycket -betryckets -betrycks -betryckt -betryckta -betryckte -betrycktes -betryckts -betryggad -betryggade -betryggande -betryggat -bets -bett -betten -bettens -bettet -bettets -bettna -bettnas -betts -betunga -betungad -betungade -betungande -betungar -betungas -betungat -betvinga -betvingad -betvingade -betvingades -betvingar -betvingare -betvingaren -betvingarens -betvingares -betvingarna -betvingarnas -betvingas -betvingat -betvingats -betyd -betyda -betydande -betydas -betydde -betyddes -betydenhet -betydenheten -betydenhetens -betydenhets -betyder -betyds -betyg -betyga -betygade -betygar -betygat -betygen -betygens -betyget -betygets -betygsatte -betygsattes -betygsatts -betytt -betytts -beundra -beundrad -beundrade -beundrades -beundran -beundrande -beundrar -beundrare -beundraren -beundrarens -beundrares -beundrarna -beundrarnas -beundras -beundrat -beundrats -bevaka -bevakad -bevakade -bevakades -bevakande -bevakandet -bevakandets -bevakar -bevakare -bevakaren -bevakarens -bevakares -bevakarna -bevakarnas -bevakas -bevakat -bevakats -bevakning -bevakningar -bevakningarna -bevakningarnas -bevakningars -bevakningen -bevakningens -bevaknings -bevandra -bevandrad -bevandrade -bevandrades -bevandrande -bevandrandet -bevandrandets -bevandrar -bevandras -bevandrat -bevandrats -bevara -bevarad -bevarade -bevarades -bevarande -bevarandet -bevarandets -bevarar -bevaras -bevarat -bevarats -bevare -bevars -beveka -bevekande -bevekandet -bevekandets -bevekas -beveker -beveks -bevekt -bevekte -bevektes -bevekts -bevingad -bevingade -bevingat -bevis -bevisa -bevisad -bevisade -bevisades -bevisande -bevisandet -bevisandets -bevisar -bevisas -bevisat -bevisats -bevisen -bevisens -beviset -bevisets -bevisning -bevisningen -bevisningens -bevista -bevistad -bevistade -bevistades -bevistande -bevistandet -bevistandets -bevistar -bevistas -bevistat -bevistats -bevittna -bevittnad -bevittnade -bevittnades -bevittnande -bevittnandet -bevittnandets -bevittnar -bevittnas -bevittnat -bevittnats -bevuxit -bhutan -bhutans -bibringa -bibringade -bibringades -bibringar -bibringas -bibringat -bibringats -bida -bidade -bidande -bidar -bidat -bidde -bidra -bidrag -bidraga -bidragande -bidragen -bidragens -bidraget -bidragets -bidragit -bidrags -bidragsgivare -bidragsgivaren -bidragsgivarens -bidragsgivares -bidragsgivarna -bidragsgivarnas -bidragstagare -bidragstagaren -bidragstagarens -bidragstagares -bidragstagarna -bidragstagarnas -bidrar -bidrog -bieffekt -bieffekten -bieffektens -bieffekter -bieffekterna -bieffekternas -bieffekters -bien -biens -biet -biets -biff -biffar -biffarna -biffarnas -biffars -biffen -biffens -biffs -bifigur -bifiguren -bifigurens -bifigurer -bifigurerna -bifigurernas -bifigurers -bifigurs -bifoga -bifogad -bifogade -bifogades -bifogande -bifogandet -bifogandets -bifogar -bifogas -bifogat -bifogats -bigott -bigotta -bihang -bihangen -bihangens -bihanget -bihangets -bihangs -bihustru -bihustrun -bihustruns -bihustrur -bihustrurna -bihustrurnas -bihustrurs -bihustrus -bikt -bikta -biktade -biktar -biktat -bikten -biktens -bikter -bikterna -bikternas -bikters -bikts -bikupa -bikupan -bikupans -bikupas -bikupor -bikuporna -bikupornas -bikupors -bin -bina -binas -bind -binda -bindan -bindande -bindandet -bindandets -bindans -bindas -binder -bindestreck -bindestrecken -bindestreckens -bindestrecket -bindestreckets -bindestrecks -bindning -bindningar -bindningarna -bindningarnas -bindningars -bindningen -bindningens -bindnings -bindor -bindorna -bindornas -bindors -binds -bingar -bingarna -bingarnas -bingars -binge -bingen -bingens -binges -bingo -bingon -bingons -bins -bio -biocid -biociden -biocidens -biocider -biociderna -biocidernas -biociders -biocids -biograf -biografen -biografens -biografer -biograferna -biografernas -biografers -biografi -biografier -biografierna -biografiernas -biografiers -biografin -biografins -biografis -biografs -biokemi -biokemin -biokemins -biokemisk -biokemiska -biokemiskt -biomedicinsk -biomedicinska -biomedicinskt -bion -bions -biotop -biotopen -biotopens -biotoper -biotoperna -biotopernas -biotopers -biprodukt -biprodukter -biprodukterna -biprodukternas -biprodukters -birger -birgers -birgit -birgits -birgitta -birgittas -birmingham -birminghams -bis -bisak -bisaken -bisakens -bisaker -bisakerna -bisakernas -bisakers -bisaks -bisarr -bisarra -bisarrare -bisarrast -bisarraste -bisarre -bisarrt -bisats -bisatsen -bisatsens -bisatser -bisatserna -bisatsernas -bisatsers -bisittare -bisittaren -bisittarens -bisittares -bisittarna -bisittarnas -biskop -biskopar -biskoparna -biskoparnas -biskopars -biskopen -biskopens -biskops -bismak -bismaken -bismakens -bismaker -bismakerna -bismakernas -bismakers -bismaks -bissau -bister -bistert -bistick -bisticken -bistickens -bisticket -bistickets -bisticks -bistod -bistods -bistra -bistrare -bistrast -bistraste -bistre -bistres -bistro -bistroer -bistroerna -bistroernas -bistroers -bistron -bistrons -bit -bita -bitande -bitandet -bitandets -bitar -bitarna -bitarnas -bitars -bitas -biten -bitens -biter -bitet -bitit -bitits -bitna -bits -bitsk -bitska -bitskare -bitskast -bitskaste -bitskt -bitter -bitterhet -bitterheten -bitterhetens -bittersta -bittert -bitti -bittida -bittra -bittrare -bittrast -bittraste -bitvis -bivax -bivaxet -bivaxets -biverkning -biverkningar -biverkningarna -biverkningarnas -biverkningars -biverkningen -biverkningens -biverknings -bjerre -bjerres -bjud -bjuda -bjudande -bjudandet -bjudandets -bjudas -bjuden -bjuder -bjudes -bjudet -bjudit -bjudits -bjudna -bjudning -bjudningar -bjudningarna -bjudningarnas -bjudningars -bjudningen -bjudningens -bjudnings -bjuds -bjuv -bjuvs -bock -bocka -bockade -bockades -bockar -bockarna -bockarnas -bockars -bockas -bockat -bockats -bocken -bockens -bocks -bod -boda -bodafors -bodar -bodarna -bodarnas -bodars -bodas -bodde -boden -bodens -boen -boende -boendes -boendet -boendets -boens -boer -boerna -boernas -boers -boet -boets -bofast -bofasta -bofink -bofinkar -bofinkarna -bofinkarnas -bofinkars -bofinken -bofinkens -bofinks -bofors -bog -bogar -bogarna -bogarnas -bogars -bogen -bogens -bograngen -bograngens -bogs -bogsera -bogserad -bogserade -bogserades -bogserar -bogseras -bogserat -bogserats -bohag -bohagen -bohagens -bohaget -bohagets -bohem -bohemen -bohemens -bohemer -bohemerna -bohemernas -bohemers -bohems -bohus -boj -boja -bojan -bojans -bojar -bojaren -bojarens -bojarer -bojarerna -bojarernas -bojarers -bojarna -bojarnas -bojars -bojas -bojen -bojens -bojkott -bojkotta -bojkottad -bojkottade -bojkottades -bojkottar -bojkottas -bojkottat -bojkottats -bojkotten -bojkottens -bojkotter -bojkotterna -bojkotternas -bojkotters -bojkotts -bojor -bojorna -bojornas -bojors -bojs -bok -boka -bokad -bokade -bokades -bokar -bokas -bokat -bokats -bokauktion -bokauktionen -bokauktionens -bokauktions -boken -bokens -bokform -bokning -bokningar -bokningarna -bokningarnas -bokningars -bokningen -bokningens -boknings -bokrea -bokrean -bokreans -boks -bokstav -bokstaven -bokstavens -bokstavera -bokstaverad -bokstaverade -bokstaverades -bokstaverar -bokstaveras -bokstaverat -bokstaverats -bokstavs -bokstavsordning -bokstavsordningen -bokstavsordningens -boktryckare -boktryckaren -boktryckarens -boktryckares -boktryckarna -boktryckarnas -bom -bomb -bomba -bombad -bombade -bombades -bombar -bombardera -bombarderad -bombarderade -bombarderades -bombarderar -bombarderas -bombarderat -bombarderats -bombare -bombaren -bombarens -bombares -bombarna -bombarnas -bombastisk -bombastiska -bombastiskt -bombat -bombats -bomben -bombens -bomber -bomberna -bombernas -bombers -bombning -bombningar -bombningarna -bombningarnas -bombningars -bombningen -bombningens -bombnings -bombs -bomma -bommade -bommar -bommarna -bommarnas -bommars -bommat -bommen -bommens -bon -bona -bonad -bonade -bonaden -bonadens -bonader -bonaderna -bonadernas -bonaders -bonades -bonar -bonas -bonat -bonats -bonde -bonden -bondens -bondepraktikan -bondepraktikans -bondes -bondgosse -bondgossen -bondgossens -bondhustru -bondhustrun -bondhustruns -bondpojkar -bondpojkarna -bondpojkarnas -bondpojkars -bondpojke -bondpojken -bondpojkens -boning -boningar -boningarna -boningarnas -boningars -boningen -boningens -bonings -boningshus -boningshusen -boningshusens -bonnier -bonniers -bons -bonus -bonusen -bonusens -boom -boomen -boomens -bor -bord -borda -bordade -bordades -bordar -bordas -bordat -bordats -borde -borden -bordens -bordet -bordets -bords -bordskant -bordskanten -bordskantens -bordskanter -bordskanterna -bordskanternas -bordskanters -boren -borensberg -borensbergs -boret -borg -borga -borgade -borgar -borgare -borgaren -borgarens -borgares -borgarna -borgarnas -borgars -borgat -borgen -borgens -borgensman -borgensmannen -borgensmannens -borgensmans -borghamn -borghamns -borgs -borgstena -borgstenas -borna -borne -borr -borra -borrad -borrade -borrades -borrande -borrandet -borrandets -borrar -borrare -borraren -borrarens -borrares -borrarna -borrarnas -borras -borrat -borrats -borrby -borrbys -borren -borrens -borret -borrets -borrning -borrningar -borrningarna -borrningarnas -borrningars -borrningen -borrningens -borst -borstad -borstade -borstades -borstar -borstarna -borstarnas -borstars -borstas -borstat -borste -borsten -borstens -borstes -bort -borta -bortamatch -bortamatchen -bortamatchens -bortamatcher -bortamatcherna -bortamatchernas -bortamatchers -bortdriven -bortdrivet -bortdrivna -bortemot -bortersta -bortfara -bortgick -bortkommen -bortkommet -bortkomna -bortkomne -bortom -bortre -bortrest -bortresta -bortse -bortser -bortses -bortsett -bortsetts -bortskym -bortskymd -bortskymde -bortskymma -bortskymmer -bortskymt -borttaga -borttagande -borttagandet -borttagandets -borttages -borttappa -borttappad -borttappade -borttappades -borttappar -borttappat -borttappats -bos -bosatt -bosatta -bosatte -boskap -boskapen -boskapens -boskaps -boskapsdjur -boskapsdjuren -boskapsdjurens -boskapspest -bosnien -bosniens -bosnier -bosnierna -bosniernas -bosniers -bossanova -bossanovan -bossanovans -bosse -bosses -bostad -bostaden -bostadens -bostads -bostadshus -bostadshusen -bostadshusens -bostadshuset -bostadshusets -bot -bota -botad -botade -botades -botande -botanik -botaniken -botanikens -botaniker -botanikern -botanikerna -botanikernas -botanikerns -botanikers -botanisk -botaniska -botaniskt -botanist -botanisten -botanistens -botar -botas -botat -botats -boten -botens -botpredikan -botsmark -botsmarks -botswana -botswanas -bott -botten -bottennapp -bottennappen -bottennappens -bottennappet -bottennappets -bottenskrap -bottna -bottnade -bottnande -bottnar -bottnarna -bottnarnas -bottnars -bottnaryd -bottnaryds -bottnat -bottnen -bottnens -bottniska -bouppteckning -bouppteckningar -bouppteckningarna -bouppteckningarnas -bouppteckningars -bouppteckningen -bouppteckningens -boupptecknings -bouquet -bouqueten -bouquetens -bourgeoisie -bourgeoisien -bourgeoisiens -bourgogne -bourgognen -bourgognens -bourgogner -bourgognerna -bourgognernas -bourgogners -bov -bovar -bovarna -bovarnas -bovars -boven -bovens -bovs -box -boxa -boxad -boxade -boxades -boxar -boxare -boxaren -boxarens -boxares -boxarna -boxarnas -boxars -boxas -boxat -boxats -boxen -boxens -boxer -boxern -boxerns -boxers -boxning -boxningen -boxningens -boxnings -boxrar -boxrarna -boxrarnas -boxrars -bra -bracka -brackan -brackans -brackor -brackorna -brackornas -brackors -brackvatten -brackvattnet -brackvattnets -bragd -bragden -bragdens -bragder -bragderik -bragderika -bragderikt -bragderna -bragdernas -bragders -bragt -bragte -brak -braka -brakade -brakades -brakande -brakandet -brakandets -brakar -brakas -brakat -brakats -braken -brakens -braket -brakets -brand -branden -brandens -brandmur -brandmurar -brandmurarna -brandmurarnas -brandmurars -brandmuren -brandmurens -brandstorp -brandstorps -brann -bransch -branschen -branschens -branscher -branscherna -branschernas -branschers -brant -branta -brantare -brantast -brantaste -branten -brantens -branter -branterna -branternas -branters -brantevik -branteviks -brasa -brasan -brasans -brasor -brasorna -brasornas -brasors -brast -brastad -brastads -bravad -bravaden -bravadens -bravader -bravaderna -bravadernas -bravaders -bravo -bravur -bravuren -bravurens -bre -bred -breda -bredare -bredared -bredareds -bredaryd -bredaryds -bredas -bredast -bredaste -bredbent -bredbenta -bredbyn -bredbyns -bredd -bredda -breddad -breddade -breddades -breddande -breddandet -breddandets -breddar -breddas -breddat -breddats -bredde -bredden -breddens -bredder -bredderna -breddernas -bredders -breddes -breddning -breddningar -breddningarna -breddningarnas -breddningars -breddningen -breddningens -breddnings -breder -breds -bredvid -brer -brett -bretts -brev -breven -brevens -brevet -brevets -brevpapper -brevpappers -brevpappret -brevpapprets -brevporto -brevportot -brevportots -bricka -brickan -brickans -brickor -brickorna -brickornas -brickors -bridge -bridgen -bridgens -bridreaktor -bridreaktorer -bridreaktorerna -bridreaktorernas -bridreaktorers -bridreaktorn -bridreaktorns -brigad -brigaden -brigadens -brigader -brigaderna -brigadernas -brigaders -brigads -brigg -briggar -briggarna -briggarnas -briggars -briggen -briggens -bringa -bringad -bringade -bringades -bringar -bringare -bringaren -bringarens -bringares -bringarna -bringarnas -bringas -bringat -bringats -brink -brinkar -brinkarna -brinkarnas -brinkars -brinken -brinkens -brinna -brinnande -brinnandes -brinnandet -brinnandets -brinner -bris -brisen -brisens -brisera -briserad -briserade -briserades -briserar -briserat -briserats -brist -brista -bristande -bristen -bristens -brister -bristerna -bristernas -bristers -bristning -bristningar -bristningarna -bristningarnas -bristningars -bristningen -bristningens -bristnings -bristsjukdom -bristsjukdomar -bristsjukdomarna -bristsjukdomarnas -bristsjukdomars -bristsjukdomen -bristsjukdomens -brita -britas -brits -britsar -britsarna -britsarnas -britsars -britsen -britsens -britt -britta -brittas -britten -brittens -britter -britterna -britternas -britters -brittisk -brittiska -brittiske -brittiskt -britts -bro -broar -broarna -broarnas -broars -broaryd -broaryds -broberg -brobergs -broby -brobyggare -brobyggaren -brobyggarens -brobyggares -brobyggarna -brobyggarnas -brobys -brodd -broddar -broddarna -broddarnas -broddars -brodden -broddens -broddetorp -broddetorps -broder -brodera -broderad -broderade -broderades -broderar -broderas -broderat -broderats -broderi -broderier -broderierna -broderiernas -broderiers -brodern -broderns -broders -brokad -brokaden -brokadens -brokader -brokaderna -brokadernas -brokaders -brokig -brokiga -brokigare -brokigast -brokigaste -brokigt -brom -bromen -bromens -bromma -brommas -broms -bromsa -bromsad -bromsade -bromsades -bromsanordning -bromsanordningar -bromsanordningarna -bromsanordningarnas -bromsanordningars -bromsanordningen -bromsanordningens -bromsanordnings -bromsar -bromsarna -bromsarnas -bromsars -bromsas -bromsat -bromsats -bromsen -bromsens -bron -bronkit -bronkiten -bronkitens -bronkiter -bronkiterna -bronkiternas -bronkiters -brons -bronsen -bronsens -bronset -bronsets -bror -brors -brosch -broschen -broschens -broscher -broscherna -broschernas -broschers -broschyr -broschyren -broschyrens -broschyrer -broschyrerna -broschyrernas -broschyrers -broschyrs -brosk -brosken -broskens -brosket -broskets -brott -brotta -brottad -brottade -brottades -brottar -brottare -brottaren -brottarens -brottares -brottarna -brottarnas -brottas -brottat -brottats -brottby -brottbys -brotten -brottens -brottet -brottets -brottning -brottningen -brottningens -brottsorganisation -brottsorganisationen -brottsorganisationens -brottsorganisations -brottstycke -brottstyckena -brottstyckenas -brottstyckes -brottstycket -brottstyckets -brottyta -brottytan -brottytans -brottytas -brottytor -brottytorna -brottytornas -brottytors -brud -brudar -brudarna -brudarnas -brudars -bruden -brudens -brudgum -brudgummar -brudgummarna -brudgummarnas -brudgummars -brudgummen -brudgummens -brudgums -brudpar -brudparen -brudparens -brudparet -brudparets -bruds -bruk -bruka -brukad -brukade -brukades -brukar -brukare -brukaren -brukarens -brukares -brukarna -brukarnas -brukas -brukat -brukats -bruken -brukens -bruket -brukets -bruks -bruksanvisning -bruksanvisningar -bruksanvisningarna -bruksanvisningarnas -bruksanvisningars -bruksanvisningen -bruksanvisningens -bruksanvisnings -brumma -brummade -brummande -brummandet -brummandets -brummar -brummat -brun -bruna -brunare -brunast -brunaste -brunett -brunetten -brunettens -brunetter -brunetterna -brunetternas -brunetters -brunn -brunnar -brunnarna -brunnarnas -brunnars -brunnen -brunnens -brunnit -brunns -brunskog -brunskogs -brunst -brunsten -brunstens -brunstig -brunstiga -brunstigt -brunt -brus -brusa -brusade -brusande -brusandet -brusandets -brusar -brusat -brusen -brusens -bruset -brusets -brusten -brustet -brustit -brustna -bruten -brutet -brutit -brutits -brutna -brutto -bruttoinkomst -bruttoinkomsten -bruttoinkomstens -bruttoinkomster -bruttoinkomsterna -bruttoinkomsternas -bruttoinkomsters -bruttot -bruttots -bry -brydd -brydda -brydde -bryddes -bryderi -bryderier -bryderierna -bryderiernas -bryderiers -bryderiet -bryderiets -bryet -bryets -brygd -brygden -brygdens -brygder -brygderna -brygdernas -brygders -brygg -brygga -bryggan -bryggans -bryggare -bryggaren -bryggarens -bryggares -bryggarna -bryggarnas -bryggas -bryggde -bryggdes -brygger -bryggeri -bryggerier -bryggerierna -bryggeriernas -bryggeriers -bryggeriet -bryggeriets -bryggor -bryggorna -bryggornas -bryggors -bryggs -bryggt -bryggts -bryn -bryna -brynas -brynen -brynens -bryner -brynet -brynets -brynja -brynjan -brynjans -brynjor -brynjorna -brynjornas -brynjors -bryns -brynt -brynta -brynte -bryntes -brynts -bryr -brys -brysk -bryska -bryskare -bryskast -bryskaste -bryske -bryskt -bryt -bryta -brytande -brytandet -brytandets -brytare -brytaren -brytarens -brytares -brytarna -brytarnas -brytas -bryter -brytes -brytning -brytningar -brytningarna -brytningarnas -brytningars -brytningen -brytningens -brytnings -brytningstid -brytningstiden -brytningstidens -brytningstider -brytningstiderna -brytningstidernas -brytningstiders -brytpunkt -brytpunkten -brytpunktens -brytpunkter -brytpunkterna -brytpunkternas -brytpunkters -bryts -brytt -brytts -bua -buade -buades -buande -buar -buas -buat -buats -bud -buddhism -buddhismen -buddhismens -buddhist -buddhisten -buddhistens -buddhister -buddhisterna -buddhisternas -buddhisters -buddhistisk -buddhistiska -buddhistiskt -buddist -buddisten -buddistens -buddister -buddisterna -buddisternas -buddisters -buddistisk -buddistiska -buddistiskt -buden -budens -budet -budets -budget -budgetar -budgetarna -budgetarnas -budgetars -budgeten -budgetens -budgetera -budgeterad -budgeterade -budgeterades -budgeterar -budgeteras -budgeterat -budgeterats -budgetering -budgivning -budgivningen -budgivningens -budord -budorden -budordens -buds -budskap -budskapen -budskapens -budskapet -budskapets -budskaps -buffer -buffert -buffertar -buffertarna -buffertarnas -buffertars -bufferten -buffertens -buffra -buga -bugade -bugades -bugande -bugandet -bugandets -bugar -bugas -bugat -bugats -bugg -bugga -buggade -buggades -buggar -buggarna -buggarnas -buggars -buggas -buggat -buggats -buggen -buggens -buk -bukar -bukarna -bukarnas -bukars -buken -bukens -bukett -buketten -bukettens -buketter -buketterna -buketternas -buketters -bukhinna -bukhinnan -bukhinnans -bukhinnor -bukhinnorna -bukhinnornas -bukhinnors -bukt -bukta -buktade -buktar -buktat -bukten -buktens -bukter -bukterna -bukternas -bukters -buktig -buktiga -buktigt -bunden -bundet -bundit -bundits -bundna -bundne -bunkar -bunkarna -bunkarnas -bunkars -bunke -bunken -bunkens -bunker -bunkern -bunkerns -bunkers -bunkrar -bunkrarna -bunkrarnas -bunkrars -bunt -bunta -buntade -buntades -buntar -buntarna -buntarnas -buntars -buntas -buntat -buntats -bunten -buntens -bur -bura -burad -burade -burades -burar -burarna -burarnas -burars -buras -burat -burats -burdus -burdusa -burdust -buren -burens -buret -burgsvik -burgsviks -burit -burits -burk -burkar -burkarna -burkarnas -burkars -burken -burkens -burma -burmas -burna -burs -burseryd -burseryds -burundi -burundis -bus -busa -busade -busar -busarna -busarnas -busars -busat -buse -busen -busens -buset -busets -busig -busiga -busigt -buskar -buskarna -buskarnas -buskars -buske -busken -buskens -buskes -buskig -buskiga -buskigt -buss -bussar -bussarna -bussarnas -bussars -bussen -bussens -bussig -bussiga -bussigare -bussigaste -bussige -bussigt -butik -butiken -butikens -butiker -butikerna -butikernas -butikers -butiks -butter -buttert -buttig -buttiga -buttigt -buttra -buttrare -buttrast -buttraste -buttre -byar -byarna -byarnas -byars -bybo -bybon -bybons -bybor -byborna -bybornas -bybors -bybos -bygd -bygden -bygdens -bygder -bygderna -bygdernas -bygders -bygg -bygga -byggande -byggandet -byggandets -byggas -byggd -byggda -byggde -byggdes -bygge -byggen -byggena -byggenas -byggens -bygger -bygget -byggets -byggnad -byggnaden -byggnadens -byggnader -byggnaderna -byggnadernas -byggnaders -byggnads -byggning -byggningen -byggningens -byggs -byggsats -byggsatsen -byggsatsens -byggsatser -byggsatserna -byggsatsernas -byggsatsers -byggt -byggts -byk -byken -bykens -byket -bykets -byn -byns -bys -byske -byskes -byst -bysten -bystens -byster -bysterna -bysternas -bysters -byt -byta -bytare -bytaren -bytarens -bytares -bytarna -bytarnas -bytas -byte -byten -bytena -bytenas -bytens -byter -bytes -bytet -bytets -byts -bytt -bytta -byttan -byttans -bytte -byttes -byttor -byttorna -byttornas -byttors -bytts -byxa -byxan -byxans -byxor -byxorna -byxornas -byxors -caesar -caesars -cafeteria -cafeterian -cafeterians -cafeterior -cafeteriorna -cafeteriornas -cafeteriors -cambodja -cambodjas -cambridge -cambridges -campa -campade -campar -campare -camparen -camparens -campares -camparna -camparnas -campat -camping -campingen -campingens -campings -canada -canadas -cancan -cancer -cancern -cancerns -cancerogena -cancersjuk -cancersjuka -cancersjukt -cannabis -cannabisen -cannabisens -capita -carin -carina -carinas -carins -carmen -carmens -carte -catharina -catharinas -ceder -cederborg -cederborgs -cedern -cederns -cedrar -cedrarna -cedrarnas -cedrars -cement -cementen -cementens -cementera -cementerad -cementerade -cementerades -cementerar -cementeras -cementerat -cementerats -censor -censorer -censorerna -censorernas -censorers -censorn -censorns -censors -censur -censuren -censurens -censurera -censurerad -censurerade -censurerades -censurerande -censurerar -censurerat -censurerats -center -centern -centerns -centerpartist -centerpartisten -centerpartistens -centerpartister -centerpartisterna -centerpartisternas -centerpartisters -centerpartistisk -centerpartistiska -centerpartistiske -centerpartistiskt -centimeter -centimetern -centimeterns -centimeters -centimetrar -centimetrarna -centimetrarnas -centimetrars -centra -centrar -centrarna -centrarnas -centrars -centrer -centrera -centrerad -centrerade -centrerades -centrerar -centreras -centrerat -centrerats -centrering -centreringen -centreringens -centrerings -centrerna -centrernas -centrers -centret -centrets -centrifug -centrifugen -centrifugens -centrifuger -centrifugerna -centrifugernas -centrifugers -centrum -centrumet -centrumets -centrums -cerat -ceratet -ceratets -ceremoni -ceremonien -ceremoniens -ceremonier -ceremonierna -ceremoniernas -ceremoniers -ceremonin -ceremonins -ceremonis -certifikat -certifikaten -certifikatens -certifikatet -certifikatets -certifikats -champagne -champagnen -champagnens -champinjon -champinjonen -champinjonens -champinjoner -champinjonerna -champinjonernas -champinjoners -champinjons -champion -championat -championaten -championatens -championatet -championatets -chans -chansa -chansade -chansar -chansat -chansen -chansens -chanser -chanserna -chansernas -chansers -chansning -chansningar -chansningarna -chansningarnas -chansningars -chansningen -chansningens -chansnings -charad -charaden -charadens -charader -charaderna -charadernas -charaders -charkuteri -charkuterier -charkuterierna -charkuteriernas -charkuteriers -charkuteriet -charkuteriets -charm -charma -charmade -charmades -charmar -charmas -charmat -charmats -charmen -charmens -charmera -charmerad -charmerade -charmerades -charmerande -charmerar -charmeras -charmerat -charmerats -charmig -charmiga -charmigare -charmigast -charmigaste -charmige -charmigt -charmoffensiv -charmoffensiven -charmoffensivens -charmoffensiver -charmoffensiverna -charmoffensivernas -charmoffensivers -charter -chartern -charterns -chartra -chartrade -chartrades -chartrar -chartras -chartrat -chartrats -chassi -chassit -chassits -chauvinism -chauvinismen -chauvinismens -chauvinist -chauvinisten -chauvinistens -chauvinister -chauvinisterna -chauvinisternas -chauvinisters -chauvinistisk -chauvinistiska -chauvinistiske -chauvinistiskt -chauvinists -check -checka -checkade -checkar -checkarna -checkarnas -checkars -checkat -checken -checkens -checker -checkerna -checkernas -checkers -chef -chefen -chefens -chefer -cheferna -chefernas -chefers -chefs -chic -chica -chicago -chicagos -chicare -chicast -chicaste -chick -chicka -chickare -chickast -chickaste -chickt -chict -chiffer -chiffren -chiffrens -chiffret -chiffrets -chips -chipsen -chipsens -chock -chocka -chockad -chockade -chockades -chockar -chockas -chockat -chockats -chocken -chockens -chocker -chockera -chockerad -chockerade -chockerades -chockerande -chockerar -chockeras -chockerat -chockerats -chockerna -chockernas -chockers -christer -christers -christian -christians -christina -christinas -christine -christines -ciceron -ciceronen -ciceronens -ciceroner -ciceronerna -ciceronernas -ciceroners -cider -cidern -ciderns -cigarett -cigaretten -cigarettens -cigaretter -cigaretterna -cigaretternas -cigaretters -cigaretts -cigarr -cigarren -cigarrens -cigarrer -cigarrerna -cigarrernas -cigarrers -cigarrs -cirka -cirkus -cirkusar -cirkusarna -cirkusarnas -cirkusars -cirkusen -cirkusens -citat -citaten -citatens -citatet -citatets -citation -citationen -citationens -citationer -citationerna -citationernas -citationers -citations -citationstecken -citera -citerad -citerade -citerades -citerar -citeras -citerat -citerats -citron -citronen -citronens -citroner -citronerna -citronernas -citroners -cittra -cittran -cittrans -cittras -city -coach -coacha -coachade -coachades -coachar -coachas -coachat -coachats -coachen -coachens -coacher -coacherna -coachernas -coachers -cockpit -cockpiten -cockpitens -cockpits -comeback -comorerna -comorernas -conny -connys -conrad -conrads -container -containern -containerns -containers -containrar -containrarna -containrarnas -containrars -coping -copyright -cortison -cortisonet -cortisonets -cortisonspruta -cortisonsprutan -cortisonsprutans -cortisonsprutor -cortisonsprutorna -cortisonsprutornas -cortisonsprutors -costa -cowboy -cowboyen -cowboyens -cowboys -crescendo -crescendon -crescendona -crescendonas -crescendons -crescendos -crescendot -crescendots -cricket -cuba -cubas -cup -cupen -cupens -cuper -cuperna -cupernas -cupers -curry -curryn -curryns -curt -curts -cyan -cybernetik -cybernetiken -cybernetikens -cyniker -cynikern -cynikerna -cynikernas -cynikerns -cynikers -cynisk -cyniska -cyniske -cyniskt -cynism -cynismen -cynismens -cypern -cyperns -cypress -cypressen -cypressens -cypresser -cypresserna -cypressernas -cypressers -cysta -cystan -cystans -cystas -dadaism -dadaismen -dadaismens -dadaist -dadaisten -dadaistens -dadaister -dadaisterna -dadaisternas -dadaisters -dadaists -dag -daga -dagades -dagar -dagarna -dagarnas -dagars -dagas -dagats -dagbok -dagboken -dagbokens -dagboks -dagdrivare -dagdrivaren -dagdrivarens -dagdrivares -dagdrivarna -dagdrivarnas -dagdriveri -dagdriveriet -dagdriveriets -dagen -dagens -dager -dagern -dagerns -dagg -daggen -daggens -daggig -daggiga -daggigt -daggmask -daggmaskar -daggmaskarna -daggmaskarnas -daggmaskars -daggmasken -daggmaskens -daghem -daghemmen -daghemmens -daghemmet -daghemmets -daghems -dagis -dagisen -dagisens -dagiset -dagisets -dagmamma -dagmamman -dagmammans -dagmammas -dagmammor -dagmammorna -dagmammornas -dagmammors -dagmar -dagmars -dagning -dagningen -dagningens -dagnings -dagny -dagnys -dagordning -dagordningar -dagordningarna -dagordningarnas -dagordningars -dagordningen -dagordningens -dagordnings -dagrar -dagrarna -dagrarnas -dagrars -dags -dagspenning -dagspenningar -dagspenningarna -dagspenningarnas -dagspenningars -dagspenningen -dagspenningens -dagspennings -dagspress -dagspressen -dagspressens -dagstidning -dagstidningar -dagstidningarna -dagstidningarnas -dagstidningars -dagstidningen -dagstidningens -dagstidnings -dagsverke -dagsverken -dagsverkena -dagsverkenas -dagsverkens -dagsverkes -dagsverket -dagsverkets -dagtid -dam -damask -damasken -damaskens -damasker -damaskerna -damaskernas -damaskers -damast -damasten -damastens -damaster -damasterna -damasternas -damasters -damen -damens -damer -damerna -damernas -damers -damm -damma -dammad -dammade -dammades -dammande -dammandet -dammandets -dammar -dammas -dammat -dammats -dammet -dammets -dammig -dammiga -dammigare -dammigast -dammigaste -dammigt -dammsuga -dammsugare -dammsugaren -dammsugarens -dammsugares -dammsugarna -dammsugarnas -dammsugas -dammsugen -dammsuger -dammsuget -dammsugit -dammsugits -dammsugna -damp -dan -dana -danade -danades -danar -danas -danat -danats -danderyd -danderyds -dandy -dandyn -dandyns -dandys -dank -danka -dankade -dankar -dankat -danmark -danmarks -dannike -dannikes -dans -dansa -dansade -dansades -dansande -dansandet -dansandets -dansant -dansanta -dansar -dansare -dansaren -dansarens -dansares -dansarna -dansarnas -dansas -dansat -dansats -dansen -dansens -danser -danserna -dansernas -dansers -danshak -danshaken -danshakens -dansk -danska -danskan -danskans -danskar -danskarna -danskarnas -danskars -danske -dansken -danskens -danskt -darr -darra -darrade -darrades -darrande -darrandet -darrandets -darrar -darras -darrat -darrats -darret -darrets -darrig -darriga -darrigare -darrigast -darrigaste -darrigt -darrning -darrningar -darrningarna -darrningarnas -darrningars -darrningen -darrningens -darrnings -dart -darten -dartens -darwinism -darwinismen -darwinismens -darwinistisk -darwinistiska -darwinistiskt -dass -dassen -dassens -dasset -dassets -data -databas -databasen -databasens -databaser -databaserna -databasernas -databasers -databuss -databussen -databussens -datainspektion -datainspektionen -datainspektionens -datainspektions -datakommunikation -datakommunikationen -datakommunikationens -datakommunikations -datamaskin -datamaskinen -datamaskinens -datamaskiner -datamaskinerna -datamaskinernas -datamaskiners -datan -datans -datas -datasystem -datasystemet -datasystemets -datera -daterad -daterade -daterades -daterar -dateras -daterat -daterats -dativ -dativen -dativens -dativer -dativerna -dativernas -dativers -dato -dator -datorer -datorerna -datorernas -datorers -datorisera -datoriserad -datoriserade -datoriserades -datoriserar -datoriseras -datoriserat -datoriserats -datorisering -datoriseringar -datoriseringarna -datoriseringarnas -datoriseringars -datoriseringen -datoriseringens -datoriserings -datorn -datorns -datorprogram -datorprogrammen -datorprogrammens -datorprogrammet -datorprogrammets -datorprograms -datorrum -datorrummen -datorrummens -datorrummet -datorrummets -dators -datorsystem -datorsystemen -datorsystemens -datorsystemet -datorsystemets -datorteknik -datortekniken -datorteknikens -datortekniker -datorteknikerna -datorteknikernas -datorteknikers -datum -datumen -datumens -datumet -datumets -david -davids -debatt -debatten -debattens -debatter -debattera -debatterad -debatterade -debatterades -debatterar -debatteras -debatterat -debatterats -debatterna -debatternas -debatters -debet -debitera -debiterad -debiterade -debiterades -debiterar -debiteras -debiterat -debiterats -debitering -debiteringar -debiteringarna -debiteringarnas -debiteringars -debiteringen -debiteringens -debiterings -debut -debutant -debutanten -debutantens -debutanter -debutanterna -debutanternas -debutanters -debuten -debutens -debuter -debutera -debuterade -debuterar -debuterat -debuterna -debuternas -debuters -debuts -december -decembers -decennier -decennierna -decenniernas -decenniers -decenniet -decenniets -decennium -decenniums -dechiffrera -dechiffrerade -dechiffrerades -dechiffrerar -dechiffreras -dechiffrerat -dechiffrerats -decimeter -decimetern -decimeterns -decimeters -decimetrar -decimetrarna -decimetrarnas -decimetrars -deckare -deckaren -deckarens -deckares -deckarna -deckarnas -dedicera -dedicerad -dedicerade -dedicerades -dedicerar -dediceras -dedicerat -dedicerats -dediciera -dedicierad -dedicierade -dedicierades -dedicierar -dedicieras -dedicierat -dedicierats -dedikation -dedikationen -dedikationens -dedikationer -dedikationerna -dedikationernas -dedikationers -dedikations -deduktion -deduktionen -deduktionens -deduktions -deduktiv -deduktiva -deduktivt -defaitism -defaitismen -defaitismens -defekt -defekta -defekten -defektens -defekter -defekterna -defekternas -defekters -defensiv -defensiva -defensiven -defensivens -defensivt -definiera -definierad -definierade -definierades -definierande -definierar -definieras -definierat -definierats -definition -definitionen -definitionens -definitioner -definitionerna -definitionernas -definitioners -definitions -definitiv -definitiva -definitivare -definitivast -definitivaste -definitivt -deformation -deformationen -deformationens -deformationer -deformationerna -deformationernas -deformationers -deformations -deformera -deformerad -deformerade -deformerades -deformerar -deformeras -deformerat -deformerats -deg -degar -degarna -degarnas -degars -degeberga -degebergas -degen -degeneration -degenerationen -degenerationens -degenerations -degenererad -degenererade -degenererat -degens -degerfors -degerhamn -degerhamns -degig -degiga -degigt -degradera -degraderade -degraderades -degraderar -degraderas -degraderat -degraderats -degradering -degraderingar -degraderingarna -degraderingarnas -degraderingars -degraderingen -degraderingens -degraderings -deje -dejes -dekad -dekaden -dekadens -dekadent -dekadenta -dekader -dekaderna -dekadernas -dekaders -dekanus -dekor -dekoration -dekorationen -dekorationens -dekorationer -dekorationerna -dekorationernas -dekorationers -dekorations -dekorativ -dekorativa -dekorativt -dekoren -dekorens -dekorer -dekorera -dekorerad -dekorerade -dekorerades -dekorerande -dekorerar -dekoreras -dekorerat -dekorerats -dekorerna -dekorernas -dekorers -dekrement -dekrementet -dekrementets -dekrements -dekret -dekreten -dekretens -dekretet -dekretets -dem -demagog -demagogen -demagogens -demagoger -demagogerna -demagogernas -demagogers -demagogi -demagogin -demagogins -demagogisk -demagogiska -demagogiske -demagogiskt -demaskera -demaskerad -demaskerade -demaskerades -demaskerar -demaskeras -demaskerat -demaskerats -demens -dement -dementa -dementera -dementerad -dementerade -dementerades -dementerar -dementeras -dementerat -dementerats -dementi -dementier -dementierna -dementiernas -dementiers -dementin -dementins -demograf -demografen -demografens -demografer -demograferna -demografernas -demografers -demografi -demografin -demografins -demografisk -demografiska -demografiskt -demokrat -demokraten -demokratens -demokrater -demokraterna -demokraternas -demokraters -demokrati -demokratier -demokratierna -demokratiernas -demokratiers -demokratin -demokratins -demokratis -demokratisera -demokratiserad -demokratiserade -demokratiserades -demokratiserar -demokratiseras -demokratiserat -demokratiserats -demokratisering -demokratiseringar -demokratiseringarna -demokratiseringarnas -demokratiseringars -demokratiseringen -demokratiseringens -demokratiserings -demokratisk -demokratiska -demokratiske -demokratiskt -demon -demonen -demonens -demoner -demonerna -demonernas -demoners -demonisk -demoniska -demoniske -demoniskt -demonstrant -demonstranten -demonstrantens -demonstranter -demonstranterna -demonstranternas -demonstranters -demonstrants -demonstration -demonstrationen -demonstrationens -demonstrationer -demonstrationerna -demonstrationernas -demonstrationers -demonstrations -demonstrativ -demonstrativa -demonstrativt -demonstrera -demonstrerad -demonstrerade -demonstrerades -demonstrerande -demonstrerar -demonstreras -demonstrerat -demonstrerats -demontera -demonterade -demonterades -demonterar -demonteras -demonterat -demonterats -den -denna -dennas -denne -dennes -densamma -densammas -densamme -densammes -densitet -densiteten -densitetens -deodorant -deodoranten -deodorantens -deodoranter -deodoranterna -deodoranternas -deodoranters -departement -departementen -departementens -departementet -departementets -departements -depesch -depeschen -depeschens -depescher -depescherna -depeschernas -depeschers -deponera -deponerad -deponerade -deponerades -deponerar -deponeras -deponerat -deponerats -deportation -deportationen -deportationens -deportationer -deportationerna -deportationernas -deportationers -deportations -deportera -deporterad -deporterade -deporterades -deporterar -deporteras -deporterat -deporterats -deportering -deporteringar -deporteringarna -deporteringarnas -deporteringars -deporteringen -deporteringens -deporterings -depraverad -depraverade -depraverat -depression -depressionen -depressionens -depressioner -depressionerna -depressionernas -depressioners -depressions -depressiv -depressiva -depressivt -deprimerad -deprimerade -deprimerande -deprimerat -deputerade -deras -derby -derbymatch -derbymatchen -derbymatcher -derbymatcherna -derbyn -derbyns -derbyt -derbyts -derivat -derivata -derivatan -derivatans -derivaten -derivatens -derivatet -derivatets -derivation -derivationen -derivationer -derivationerna -derivationernas -derivationers -derivations -derivator -derivatorna -derivatornas -derivators -derivera -deriverad -deriverade -deriverades -deriverar -deriveras -deriverat -deriverats -derivering -deriveringar -deriveringarna -deriveringarnas -deriveringars -deriveringen -deriveringens -deriverings -desamma -desarmera -desarmerad -desarmerade -desarmerades -desarmerar -desarmeras -desarmerat -desarmerats -desert -deserten -desertens -deserter -deserterna -deserternas -deserters -design -designa -designad -designade -designades -designar -designat -designats -designen -designens -designer -designern -designerna -designernas -designerns -designers -desinficera -desinficerad -desinficerade -desinficerades -desinficerar -desinficeras -desinficerat -desinficerats -desinformation -desinformationen -desinformationens -deskriptiv -deskriptiva -deskriptivt -desorienterad -desorienterade -desorienterat -desperat -desperata -desperatare -desperatast -desperataste -desperate -desperation -desperationen -desperationens -desperations -despot -despoten -despotens -despoter -despoterna -despoternas -despoters -despotism -despotismen -despotismens -despots -dess -dessa -dessas -dessutom -destination -destinationen -destinationens -destinationer -destinationerna -destinationernas -destinationers -destinations -destinera -destinerad -destinerade -destinerades -destinerar -destinerat -destinerats -desto -destruktion -destruktionen -destruktionens -destruktions -destruktiv -destruktiva -destruktivare -destruktivast -destruktivaste -destruktive -destruktivitet -destruktiviteten -destruktivitetens -destruktivitets -destruktivt -det -detektera -detekterad -detekterade -detekterades -detekterar -detekteras -detekterat -detekterats -detektion -detektionen -detektionens -detektions -detektiv -detektiven -detektivens -detektiver -detektiverna -detektivernas -detektivers -detektor -detektorer -detektorerna -detektorernas -detektorers -detektorn -detektorns -detektors -determinerad -determinerade -determinerat -determinism -determinismen -determinismens -determinist -deterministen -deterministens -determinister -deterministerna -deterministernas -deterministers -deterministisk -deterministiska -deterministiskt -detonera -detonerade -detonerar -detonerat -detsamma -detta -devis -devisen -devisens -deviser -deviserna -devisernas -devisers -dia -diabetes -diabetiker -diabetikern -diabetikerna -diabetikernas -diabetikerns -diabetikers -diad -diade -diadem -diademen -diademens -diademet -diademets -diades -diagnos -diagnosen -diagnosens -diagnoser -diagnoserna -diagnosernas -diagnosers -diagnostik -diagnostiken -diagnostikens -diagnostisera -diagnostiserad -diagnostiserade -diagnostiserades -diagnostiserar -diagnostiseras -diagnostiserat -diagnostiserats -diagnostisk -diagnostiska -diagnostiskt -diagram -diagrammen -diagrammens -diagrammet -diagrammets -diakon -diakonen -diakonens -diakoner -diakonerna -diakonernas -diakoners -diakoni -diakonin -diakonins -diakonissa -diakonissan -diakonissans -diakonissor -diakonissorna -diakonissornas -diakonissors -diakritisk -diakritiska -diakroniskt -diamant -diamanten -diamantens -diamanter -diamanterna -diamanternas -diamanters -diameter -diametern -diameterns -diametrar -diametrarna -diametrarnas -diametrars -diande -diandet -diandets -diar -diarier -diarierna -diariernas -diariers -diariet -diariets -diarium -dias -diat -diats -diavisning -diavisningar -diavisningarna -diavisningarnas -diavisningars -diavisningen -diavisningens -diavisnings -diet -dieten -dietens -dieter -dieterna -dieternas -dieters -differens -differensen -differensens -differenser -differenserna -differensernas -differensers -differentiera -differentierad -differentierade -differentierades -differentierande -differentierandet -differentierandets -differentierar -differentieras -differentierat -differentierats -diffundera -diffunderade -diffunderar -diffunderat -diffus -diffusa -diffusare -diffusast -diffusaste -diffusion -diffusionen -diffusionens -diffusioner -diffusionerna -diffusionernas -diffusioners -diffust -diftong -diftongen -diftongens -diftonger -diftongerna -diftongernas -diftongers -dig -diger -digert -digna -dignade -dignande -dignandet -dignandets -dignar -dignat -dignitet -digniteten -dignitetens -digniteter -digniteterna -digniteternas -digniteters -digra -digrare -digrast -digraste -dika -dikade -dikades -dikar -dikas -dikat -dikats -dike -diken -dikena -dikenas -dikens -dikes -diket -dikets -dikotom -dikotoma -dikotomi -dikotomier -dikotomierna -dikotomiernas -dikotomiers -dikotomin -dikotomins -dikotomt -dikt -dikta -diktad -diktade -diktades -diktamen -diktande -diktandet -diktandets -diktar -diktare -diktaren -diktarens -diktares -diktarna -diktarnas -diktas -diktat -diktator -diktatorer -diktatorerna -diktatorernas -diktatorers -diktatorisk -diktatoriska -diktatoriske -diktatoriskt -diktatorn -diktatorns -diktators -diktats -diktatur -diktaturen -diktaturens -diktaturer -diktaturerna -diktaturernas -diktaturers -diktaturs -dikten -diktens -dikter -diktera -dikterad -dikterade -dikterades -dikterande -dikterar -dikteras -dikterat -dikterats -dikterna -dikternas -dikters -diktning -diktningar -diktningarna -diktningarnas -diktningars -diktningen -diktningens -diktnings -dikts -dimension -dimensionen -dimensionens -dimensioner -dimensionerna -dimensionernas -dimensioners -dimma -dimman -dimmans -dimmas -dimmig -dimmiga -dimmigare -dimmigast -dimmigaste -dimmigt -dimmor -dimmorna -dimmornas -dimmors -dimpa -dimper -din -dina -dines -dinosaurie -dinosaurien -dinosauriens -dinosaurier -dinosaurierna -dinosauriernas -dinosauriers -diod -dioden -diodens -dioder -dioderna -diodernas -dioders -diogenes -dioxid -dioxiden -dioxidens -dioxider -dioxiderna -dioxidernas -dioxiders -direkt -direkta -direktare -direktast -direktaste -direkten -direktion -direktionen -direktionens -direktions -direktiv -direktiven -direktivens -direktivet -direktivets -direktkontakt -dirigent -dirigenten -dirigentens -dirigenter -dirigenterna -dirigenternas -dirigenters -dirigents -dirigera -dirigerad -dirigerade -dirigerades -dirigerar -dirigeras -dirigerat -dirigerats -dis -disen -disens -diser -diserna -disernas -disers -diset -disets -disharmonisk -disharmoniska -disharmoniskt -disig -disiga -disigare -disigast -disigaste -disigt -disjunktiv -disjunktiva -disjunktivt -disk -diska -diskad -diskade -diskades -diskant -diskanten -diskantens -diskar -diskare -diskaren -diskarens -diskares -diskarna -diskarnas -diskars -diskas -diskat -diskats -disken -diskens -diskett -disketten -diskettenhet -diskettenheten -diskettenhetens -diskettenheter -diskettenheterna -diskettenheternas -diskettenheters -diskettenhets -diskettens -disketter -disketterna -disketternas -disketters -disketts -diskho -diskhoar -diskhoarna -diskhoarnas -diskhoars -diskhon -diskhons -diskjockey -diskjockeyn -diskjockeyns -diskjockeys -diskning -diskningar -diskningarna -diskningarnas -diskningars -diskningen -diskningens -disknings -diskonto -diskonton -diskontons -diskontot -diskontots -diskotek -diskoteken -diskotekens -diskoteket -diskotekets -diskrepans -diskrepansen -diskrepansens -diskrepanser -diskrepanserna -diskrepansernas -diskrepansers -diskret -diskreta -diskretare -diskretast -diskretaste -diskretion -diskretionen -diskretionens -diskretions -diskriminant -diskriminanten -diskriminantens -diskriminanter -diskriminanterna -diskriminanternas -diskriminanters -diskriminants -diskriminera -diskriminerad -diskriminerade -diskriminerades -diskriminerande -diskriminerar -diskrimineras -diskriminerat -diskriminerats -diskriminering -diskrimineringar -diskrimineringarna -diskrimineringarnas -diskrimineringars -diskrimineringen -diskrimineringens -diskriminerings -disktrasa -disktrasan -disktrasans -disktrasas -diskurs -diskursen -diskursens -diskurser -diskurserna -diskursernas -diskursers -diskus -diskusar -diskusarna -diskusarnas -diskusars -diskusen -diskusens -diskussion -diskussionen -diskussionens -diskussioner -diskussionerna -diskussionernas -diskussioners -diskussionspartner -diskutera -diskuterad -diskuterade -diskuterades -diskuterande -diskuterar -diskuteras -diskuterat -diskuterats -disparat -disparata -dispens -dispensen -dispensens -dispenser -dispenserna -dispensernas -dispensers -disponent -disponenten -disponentens -disponenter -disponenterna -disponenternas -disponenters -disponera -disponerad -disponerade -disponerades -disponerar -disponeras -disponerat -disponerats -disposition -dispositionen -dispositionens -dispositioner -dispositionerna -dispositionernas -dispositioners -dispositions -disproportion -disproportionen -disproportionens -disproportions -disputera -disputerad -disputerade -disputerar -disputerat -dispyt -dispyten -dispytens -dispyter -dispyterna -dispyternas -dispyters -dissekera -dissekerad -dissekerade -dissekerades -dissekerar -dissekeras -dissekerat -dissekerats -dissident -dissidenten -dissidentens -dissidenter -dissidenterna -dissidenternas -dissidenters -dissonans -dissonansen -dissonansens -dissonanser -dissonanserna -dissonansernas -dissonansers -dissonant -dissonanta -distans -distansen -distansens -distanser -distansera -distanserad -distanserade -distanserades -distanserar -distanserat -distanserats -distanserna -distansernas -distansers -distingerad -distingerade -distingerat -distinkt -distinkta -distinktare -distinktast -distinktaste -distinktion -distinktionen -distinktionens -distinktioner -distinktionerna -distinktionernas -distinktioners -distinktions -distorsion -distorsionen -distorsionens -distortion -distortionen -distortionens -distortioner -distortionerna -distortionernas -distortioners -distortions -distrahera -distraherad -distraherade -distraherades -distraherande -distraherar -distraheras -distraherat -distraherats -distraktion -distraktionen -distraktionens -distraktioner -distraktionerna -distraktionernas -distraktioners -distraktions -distribuera -distribuerad -distribuerade -distribuerades -distribuerar -distribueras -distribuerat -distribuerats -distribution -distributionen -distributionens -distributioner -distributionerna -distributionernas -distributioners -distributions -distrikt -distrikten -distriktens -distriktet -distriktets -distrikts -dit -ditin -dito -ditopp -ditsatt -ditsatta -ditt -ditupp -ditut -diva -divan -divanen -divanens -divaner -divanerna -divanernas -divaners -divans -divas -divergens -divergensen -divergensens -divergenser -divergenserna -divergensernas -divergensers -divergent -divergenta -divergera -divergerade -divergerande -divergerar -divergerat -diverse -diversearbetare -diversearbetaren -diversearbetarens -diversearbetares -diversearbetarna -diversearbetarnas -dividera -dividerad -dividerade -dividerades -dividerande -dividerar -divideras -dividerat -dividerats -division -divisionen -divisionens -divisioner -divisionerna -divisionernas -divisioners -divisions -divor -divorna -divornas -divors -djibouti -djiboutis -djonk -djonken -djonkens -djonker -djonkerna -djonkernas -djonkers -djonks -djup -djupa -djupare -djupast -djupaste -djupdykning -djupdykningar -djupdykningarna -djupdykningarnas -djupdykningars -djupdykningen -djupdykningens -djupen -djupens -djupet -djupets -djupfryst -djupfrysta -djupsinnig -djupsinniga -djupsinnigare -djupsinnigast -djupsinnigaste -djupsinnige -djupsinnigt -djupsinninghet -djupsinningheten -djupsinninghetens -djupsinningheter -djupsinningheterna -djupsinningheternas -djupsinningheters -djupsinninghets -djupt -djur -djura -djuras -djuren -djurens -djuret -djurets -djurfarm -djurfarmar -djurfarmarna -djurfarmarnas -djurfarmars -djurfarmen -djurfarmens -djurfarms -djurhamn -djurhamns -djurisk -djuriska -djuriskt -djurs -docent -docenten -docentens -docenter -docenterna -docenternas -docenters -dock -docka -dockad -dockade -dockades -dockan -dockans -dockar -dockas -dockat -dockats -dockor -dockorna -dockornas -dockors -docksta -dockstas -doft -dofta -doftade -doftande -doftar -doftat -doften -doftens -dofter -dofterna -dofternas -dofters -dofts -dog -dogm -dogmatiker -dogmatikern -dogmatikerna -dogmatikernas -dogmatikerns -dogmatikers -dogmatisk -dogmatiska -dogmatiskare -dogmatiskast -dogmatiskaste -dogmatiskt -dogmatism -dogmatismen -dogmatismens -dogmen -dogmens -dogmer -dogmerna -dogmernas -dogmers -dok -doken -dokens -doket -dokets -doktor -doktorand -doktoranden -doktorandens -doktorander -doktoranderna -doktorandernas -doktoranders -doktorands -doktorer -doktorera -doktorerade -doktorerar -doktorerat -doktorerna -doktorernas -doktorers -doktorn -doktorns -doktors -doktorspromotion -doktorspromotionen -doktorspromotionens -doktorspromotions -doktrin -doktrinen -doktrinens -doktriner -doktrinerna -doktrinernas -doktriners -dokument -dokumentation -dokumentationen -dokumentationens -dokumentationer -dokumentationerna -dokumentationernas -dokumentationers -dokumentations -dokumenten -dokumentens -dokumentera -dokumenterad -dokumenterade -dokumenterades -dokumenterar -dokumenterat -dokumenterats -dokumentet -dokumentets -dom -domar -domare -domaren -domarens -domares -domarna -domarnas -domars -domarvishet -domarvisheten -domarvishetens -domarvishets -domedag -domedagen -domedagens -domedags -domen -domens -dominans -dominansen -dominansens -dominant -dominanta -dominantare -dominantast -dominantaste -dominanten -dominantens -dominanter -dominanterna -dominanternas -dominanters -dominera -dominerad -dominerade -dominerades -dominerande -dominerar -domineras -dominerat -dominerats -dominikanska -domino -domkyrka -domkyrkan -domkyrkans -domkyrkas -domkyrkor -domkyrkorna -domkyrkornas -domkyrkors -domna -domnad -domnade -domnades -domnande -domnandet -domnandets -domnar -domnas -domnat -domnats -domptera -dompterad -dompterade -dompterades -dompterar -dompteras -dompterat -dompterats -doms -don -dona -donade -donar -donat -donation -donationen -donationens -donationer -donationerna -donationernas -donationers -donations -donator -donatorer -donatorerna -donatorernas -donatorers -donatorn -donatorns -donen -donens -donera -donerad -donerade -donerades -donerar -doneras -donerat -donerats -donet -donets -dop -dopa -dopad -dopade -dopades -dopar -dopas -dopat -dopats -dopen -dopens -dopet -dopets -doping -dopingen -dopingens -dopp -doppa -doppad -doppade -doppades -doppar -doppas -doppat -doppats -doppen -doppens -doppet -doppets -dorotea -doroteas -dorsk -dorska -dorskare -dorskast -dorskaste -dorskt -dos -dosa -dosan -dosans -dosas -dosen -dosens -doser -dosera -doserad -doserade -doserades -doserar -doseras -doserat -doserats -dosering -doseringar -doseringarna -doseringarnas -doseringars -doseringen -doseringens -doserings -doserna -dosernas -dosers -dosor -dosorna -dosornas -dosors -dotter -dottern -dotterns -dotters -dotterson -dottersonen -dottersonens -dottersons -dov -dova -dovare -dovast -dovaste -dovt -dra -drabant -drabanten -drabantens -drabanter -drabanterna -drabanternas -drabanters -drabba -drabbad -drabbade -drabbades -drabbar -drabbas -drabbat -drabbats -drabbning -drabbningar -drabbningarna -drabbningarnas -drabbningars -drabbningen -drabbningens -drabbnings -drack -dracks -drag -draga -dragare -dragaren -dragarens -dragares -dragarna -dragarnas -dragas -dragen -dragens -drager -draget -dragets -dragg -dragget -draggets -dragig -dragiga -dragigare -dragigast -dragigaste -dragigt -dragit -dragits -dragna -dragning -dragningar -dragningarna -dragningarnas -dragningars -dragningen -dragningens -dragnings -dragningskraft -dragningskraften -dragningskraftens -dragningskrafts -dragon -dragonen -dragonens -dragoner -dragonerna -dragonernas -dragoners -drags -drakar -drakarna -drakarnas -drakars -drake -draken -drakens -drakes -dram -drama -dramas -dramat -dramatik -dramatiken -dramatikens -dramatiker -dramatikern -dramatikerna -dramatikernas -dramatikerns -dramatikers -dramatisera -dramatiserad -dramatiserade -dramatiserades -dramatiserar -dramatiseras -dramatiserat -dramatiserats -dramatisk -dramatiska -dramatiskare -dramatiskast -dramatiskaste -dramatiskt -dramats -dramaturg -dramaturgen -dramaturgens -dramaturger -dramaturgerna -dramaturgernas -dramaturgers -dramaturgi -dramaturgin -dramaturgins -dramaturgs -dramer -dramerna -dramernas -dramers -drapa -drapan -drapans -drapera -draperad -draperade -draperades -draperar -draperas -draperat -draperats -draperi -draperier -draperierna -draperiernas -draperiers -draperiet -draperiets -drapor -draporna -drapornas -drapors -drar -dras -drastisk -drastiska -drastiskt -dreja -drejad -drejade -drejades -drejar -drejat -drejats -dress -dressar -dressarna -dressarnas -dressars -dressen -dressens -dresser -dressera -dresserad -dresserade -dresserades -dresserar -dresseras -dresserat -dresserats -dresserna -dressernas -dressers -dressing -dressingar -dressingarna -dressingarnas -dressingars -dressingen -dressingens -dressings -dressyr -dressyren -dressyrens -drev -dreven -drevens -drevet -drevets -drevs -drick -dricka -drickande -drickas -drickbart -dricker -dricks -dricksen -dricksens -dricksvatten -dricksvattens -dricksvattnet -dricksvattnets -drift -driften -driftens -drifter -drifterna -drifternas -drifters -driftig -driftiga -driftigare -driftigast -driftigaste -driftige -driftighet -driftigheten -driftighetens -driftighets -driftigt -drifts -drink -drinkar -drinkare -drinkaren -drinkarens -drinkares -drinkarna -drinkarnas -drinkars -drinken -drinkens -drinks -drista -dristade -dristar -dristat -dristig -dristiga -dristige -dristighet -dristigheten -dristighetens -dristighets -dristigt -driv -driva -drivan -drivande -drivandet -drivandets -drivans -drivas -driven -driver -drives -drivet -drivhus -drivhusen -drivhusens -drivit -drivits -drivkraft -drivkraften -drivkraftens -drivkrafter -drivkrafterna -drivkrafternas -drivkrafters -drivna -drivor -drivorna -drivornas -drivors -drivrem -drivremmar -drivremmarna -drivremmarnas -drivremmars -drivremmen -drivremmens -drivrems -drivs -drivved -drivveden -drivvedens -drog -drogen -drogens -droger -drogerna -drogernas -drogers -drogs -dropp -droppa -droppad -droppade -droppades -droppar -dropparna -dropparnas -droppars -droppas -droppat -droppats -droppe -droppen -droppens -droppet -droppets -dropps -droska -droskan -droskans -droskas -droskor -droskorna -droskornas -droskors -drott -drottar -drottarna -drottarnas -drottars -drotten -drottens -drottning -drottningar -drottningarna -drottningarnas -drottningars -drottningen -drottningens -drottnings -drucken -drucket -druckit -druckits -druckna -drucknare -drucknast -drucknaste -druckne -drunkna -drunknad -drunknade -drunknades -drunknande -drunknandet -drunknandets -drunknar -drunknas -drunknat -drunknats -drunkning -drunkningar -drunkningarna -drunkningarnas -drunkningars -drunkningen -drunkningens -drunknings -drupit -druva -druvan -druvans -druvas -druvor -druvorna -druvornas -druvors -dryck -drycken -dryckens -drycker -dryckerna -dryckernas -dryckers -dryckeskanna -dryckeskannan -dryckeskannans -dryckeskannas -dryckesoffer -dryckesvisa -dryckesvisan -dryckesvisans -dryckesvisas -drycks -dryfta -dryftad -dryftade -dryftades -dryftar -dryftas -dryftat -dryftats -dryg -dryga -drygade -drygades -drygar -drygare -drygas -drygast -drygaste -drygat -drygats -drygt -drypa -drypande -drypandet -drypandets -dryper -drypt -dua -duade -duar -duat -dubb -dubba -dubbad -dubbade -dubbades -dubbar -dubbarna -dubbarnas -dubbars -dubbas -dubbat -dubbats -dubben -dubbens -ducka -duckade -duckar -duckat -duenna -duennan -duennans -duennas -duennor -duennorna -duennornas -duennors -duett -duetten -duettens -duetter -duetterna -duetternas -duetters -duetts -duga -dugde -duger -dugg -dugga -duggade -duggande -duggandet -duggandets -duggar -duggat -duggregn -duggregnen -duggregnens -duggregnet -duggregnets -duggregns -dugt -duk -duka -dukad -dukade -dukades -dukande -dukandet -dukandets -dukar -dukarna -dukarnas -dukars -dukas -dukat -dukaten -dukatens -dukater -dukaterna -dukaternas -dukaters -dukats -duken -dukens -duktig -duktiga -duktigare -duktigast -duktigaste -duktige -duktigt -dum -dumbom -dumbommar -dumbommarna -dumbommarnas -dumbommars -dumbommen -dumbommens -dumboms -dumdristig -dumdristiga -dumdristige -dumdristigt -dumhet -dumheten -dumhetens -dumheter -dumheterna -dumheternas -dumheters -dumhets -dumma -dummade -dummar -dummare -dummast -dummaste -dummat -dumme -dumpa -dumpade -dumpades -dumpar -dumpas -dumpat -dumpats -dumpning -dumpningar -dumpningarna -dumpningarnas -dumpningars -dumpningen -dumpningens -dumpnings -dumsnut -dumsnutar -dumsnutarna -dumsnutarnas -dumsnutars -dumsnuten -dumsnutens -dumt -dun -dunder -dundra -dundrade -dundrar -dundrat -dundren -dundrens -dundret -dundrets -dunen -dunens -dunet -dunets -dungar -dungarna -dungarnas -dungars -dunge -dungen -dungens -dunk -dunka -dunkad -dunkade -dunkades -dunkar -dunkarna -dunkarnas -dunkars -dunkas -dunkat -dunkats -dunken -dunkens -duns -dunsa -dunsade -dunsar -dunsarna -dunsarnas -dunsars -dunsat -dunsen -dunsens -dunst -dunsta -dunstade -dunstar -dunstat -dunsten -dunstens -dunster -dunsterna -dunsternas -dunsters -duo -duon -duons -dupera -duperad -duperade -duperades -duperar -duperas -duperat -duperats -dur -dus -dusch -duscha -duschad -duschade -duschades -duschar -duscharna -duscharnas -duschars -duschas -duschat -duschats -duschen -duschens -dussin -dussinen -dussinens -dussinet -dussinets -dussins -dust -dusten -dustens -duster -dusterna -dusternas -dusters -duva -duvan -duvans -duvas -duved -duveds -duven -duvet -duvna -duvor -duvorna -duvornas -duvors -dyft -dygd -dygden -dygdens -dygder -dygderna -dygdernas -dygders -dygdig -dygdiga -dygdigare -dygdigast -dygdigaste -dygdige -dygdigt -dygn -dygnen -dygnens -dygnet -dygnets -dygns -dyk -dyka -dykare -dykaren -dykarens -dykares -dykarna -dykarnas -dyker -dykning -dykningar -dykningarna -dykningarnas -dykningars -dykningen -dykningens -dyknings -dykt -dykte -dyn -dyna -dynamik -dynamiken -dynamikens -dynamisk -dynamiska -dynamiske -dynamiskt -dynamit -dynamiten -dynamitens -dynamo -dynamon -dynamons -dynamor -dynamorna -dynamornas -dynamors -dynan -dynans -dynasti -dynastier -dynastierna -dynastiernas -dynastiers -dynastin -dynastins -dynastis -dynen -dynens -dyner -dynerna -dynernas -dyners -dynga -dyngan -dyngans -dyning -dyningar -dyningarna -dyningarnas -dyningars -dyningen -dyningens -dynings -dynor -dynorna -dynornas -dynors -dyns -dyr -dyra -dyrare -dyrast -dyraste -dyrbar -dyrbara -dyrbarare -dyrbarast -dyrbaraste -dyrbart -dyre -dyrgrip -dyrgripar -dyrgriparna -dyrgriparnas -dyrgripars -dyrgripen -dyrgripens -dyrgrips -dyrk -dyrka -dyrkad -dyrkade -dyrkades -dyrkan -dyrkande -dyrkandet -dyrkandets -dyrkar -dyrkarna -dyrkarnas -dyrkars -dyrkas -dyrkat -dyrkats -dyrken -dyrkens -dyrks -dyrt -dyster -dystert -dystopi -dystopier -dystopierna -dystopiernas -dystopiers -dystopin -dystopins -dystopis -dystra -dystrare -dystrast -dystraste -dystre -ebb -ebba -ebbade -ebbar -ebbas -ebbat -ecuador -ecuadors -edane -edanes -edberg -edbergs -edda -eddan -eddans -eden -edens -eder -ederna -edernas -eders -edert -edet -edets -edit -editera -editerad -editerade -editerades -editerar -editeras -editerat -editerats -edith -ediths -edition -editionen -editionens -editions -editor -editorer -editorerna -editorernas -editorers -editorn -editorns -editors -edits -edman -edmans -edra -eds -edsbro -edsbros -edsbruk -edsbruks -edsbyn -edsbyns -edsvuren -edsvuret -edsvurna -edvard -edvards -edvin -edvins -effekt -effekten -effektens -effekter -effekterna -effekternas -effekters -effektiv -effektiva -effektivare -effektivast -effektivaste -effektivisera -effektiviserad -effektiviserade -effektiviserades -effektiviserande -effektiviserar -effektiviseras -effektiviserat -effektiviserats -effektivisering -effektiviseringar -effektiviseringarna -effektiviseringarnas -effektiviseringars -effektiviseringen -effektiviseringens -effektiviserings -effektiviseringskrav -effektiviseringskraven -effektiviseringskravens -effektivitet -effektiviteten -effektivitetens -effektivitets -effektivt -effektuera -effektuerad -effektuerade -effektuerades -effektuerar -effektueras -effektuerat -effektuerats -efter -efterapa -efterapade -efterapar -efterapare -efteraparen -efteraparens -efterapares -efteraparna -efteraparnas -efterapat -efterapning -efterapningar -efterapningarna -efterapningarnas -efterapningars -efterapningen -efterapningens -efterapnings -efterforska -efterforskade -efterforskar -efterforskat -efterforskning -efterforskningar -efterforskningarna -efterforskningarnas -efterforskningars -efterforskningen -efterforskningens -efterforsknings -eftergift -eftergiften -eftergiftens -eftergifter -eftergifterna -eftergifternas -eftergifters -eftergifts -eftergivenhet -eftergivenheten -eftergivenhetens -eftergivenhets -efterhand -efterkom -efterkomma -efterkommande -efterkommas -efterkommer -efterkommes -efterkommit -efterkommits -efterkoms -efterkonstruktion -efterkonstruktionen -efterkonstruktionens -efterkonstruktioner -efterkonstruktionerna -efterkonstruktionernas -efterkonstruktioners -efterkonstruktions -efterkrigstid -efterkrigstiden -efterkrigstidens -efterkrigstids -eftermiddag -eftermiddagar -eftermiddagarna -eftermiddagarnas -eftermiddagars -eftermiddagen -eftermiddagens -eftermiddags -efternamn -efternamnen -efternamnens -efternamnet -efternamnets -efternamns -eftersatt -eftersatta -efterskicka -efterskickad -efterskickade -efterskickades -efterskickar -efterskickas -efterskickat -efterskickats -efterskott -efterskotts -efterskrift -efterskriften -efterskriftens -efterskrifts -eftersmak -eftersmaken -eftersmakens -eftersom -eftertanke -eftertanken -eftertankens -eftertrakta -eftertraktad -eftertraktade -eftertraktades -eftertraktar -eftertraktas -eftertraktat -eftertraktats -eftertryck -eftertrycket -eftertryckets -eftertrycks -egen -egenart -egenartad -egenartade -egenartat -egendom -egendomar -egendomarna -egendomarnas -egendomars -egendomen -egendomens -egendoms -egenhet -egenheten -egenhetens -egenheter -egenheterna -egenheternas -egenheters -egenhets -egennamn -egennamnen -egennamnens -egennamnet -egennamnets -egennytta -egennyttan -egennyttans -egennyttas -egensinnig -egensinniga -egensinnigare -egensinnigast -egensinnigaste -egensinnige -egensinnigt -egenskap -egenskapen -egenskapens -egenskaper -egenskaperna -egenskapernas -egenskapers -eget -egg -egga -eggad -eggade -eggades -eggande -eggar -eggarna -eggarnas -eggars -eggas -eggat -eggats -eggen -eggens -egna -ego -egocentricitet -egocentriciteten -egocentricitetens -egoism -egoismen -egoismens -egoist -egoisten -egoistens -egoister -egoisterna -egoisternas -egoisters -egoistisk -egoistiska -egoistiskt -egot -egots -egypten -egyptens -egyptier -egyptiern -egyptierna -egyptiernas -egyptierns -egyptiers -egyptisk -egyptiska -egyptiske -egyptiskt -ehuru -einar -einars -ejder -ejdern -ejderns -ejdrar -ejdrarna -ejdrarnas -ejdrars -eka -ekade -ekan -ekans -ekar -ekarna -ekarnas -ekars -ekat -ekberg -ekbergs -ekeby -ekebys -eken -ekens -eket -ekets -ekfat -ekfaten -ekfatens -ekfatet -ekfatets -ekfats -ekipage -ekipagen -ekipagens -ekipaget -ekipagets -ekivok -ekivoka -ekivokt -ekmark -ekmarks -eko -ekon -ekona -ekonas -ekonom -ekonomen -ekonomens -ekonomer -ekonomerna -ekonomernas -ekonomers -ekonomi -ekonomier -ekonomierna -ekonomiernas -ekonomiers -ekonomin -ekonomins -ekonomis -ekonomisering -ekonomiseringen -ekonomiseringens -ekonomiserings -ekonomisk -ekonomiska -ekonomiske -ekonomiskt -ekonoms -ekons -ekonyhet -ekonyheten -ekonyhetens -ekonyheter -ekonyheterna -ekonyheternas -ekonyheters -ekor -ekorna -ekornas -ekorrar -ekorrarna -ekorrarnas -ekorrars -ekorrbo -ekorrboen -ekorrboens -ekorrboet -ekorrboets -ekorre -ekorren -ekorrens -ekorres -ekors -ekos -ekosystem -ekosystemen -ekosystemens -ekosystemet -ekosystemets -ekot -ekots -eks -eksem -eksemen -eksemens -eksemet -eksemets -ekumenik -ekumeniken -ekumenikens -ekumenisk -ekumeniska -ekumeniskt -ekvation -ekvationen -ekvationens -ekvationer -ekvationerna -ekvationernas -ekvationers -ekvations -ekvator -ekvatorn -ekvatorns -emancipation -emancipationen -emancipationens -emancipations -emanera -emanerade -emanerande -emanerar -emanerat -embargo -embargon -embargona -embargonas -embargons -embargot -embargots -embarkera -embarkerad -embarkerade -embarkerades -embarkerar -embarkerat -embarkerats -embryo -embryon -embryons -embryot -embryots -emedan -emfas -emfasen -emfasens -emfatisk -emfatiska -emfatiskt -emigrant -emigranten -emigrantens -emigranter -emigranterna -emigranternas -emigranters -emigrants -emigration -emigrationen -emigrationens -emigrations -emigrera -emigrerade -emigrerar -emigrerat -eminens -eminensen -eminensens -eminenser -eminenserna -eminensernas -eminensers -eminent -eminenta -eminente -emission -emissionen -emissionens -emissioner -emissionerna -emissionernas -emissioners -emittera -emitterad -emitterade -emitterades -emitterar -emitteras -emitterat -emitterats -emma -emmaboda -emmabodas -emmas -emot -emotion -emotionen -emotionens -emotioner -emotionerna -emotionernas -emotioners -emotse -emotsedd -emotsedda -emotser -emotses -emotsett -emotsetts -emottaga -emottagen -emottager -emottaget -emottagna -empati -empatin -empatins -empatisk -empatiska -empatiskt -empiri -empirin -empirins -empirisk -empiriska -empiriskt -empirism -empirismen -empirismens -emu -emuer -emuerna -emuernas -emuers -emun -emuns -ena -enad -enade -enades -enahanda -enande -enar -enare -enaren -enarens -enares -enarmad -enarmade -enarmat -enarna -enarnas -enars -enas -enat -enats -enbart -enbent -enbenta -enda -endast -ende -endera -endiv -endiven -endivens -endiver -endiverna -endivernas -endivers -endokrin -endokrina -endokrint -ene -enea -enebyberg -enebybergs -enen -enens -energi -energin -energins -energirik -energirika -energirikt -energisk -energiska -energiske -energiskt -enervera -enerverad -enerverade -enerverades -enerverande -enerverar -enerveras -enerverat -enerverats -eneryda -enerydas -enes -enformig -enformiga -enformigare -enformigast -enformigaste -enformighet -enformigheten -enformighetens -enformigt -engagemang -engagemangen -engagemangens -engagemanget -engagemangets -engagemangs -engagera -engagerad -engagerade -engagerades -engagerande -engagerar -engageras -engagerat -engagerats -enhet -enheten -enhetens -enheter -enheterna -enheternas -enheters -enhets -enig -eniga -enighet -enigheten -enighetens -enighets -enigt -enkom -enkrona -enkronan -enkronans -enkronor -enkronorna -enkronornas -enkronors -enorm -enorma -enormare -enormast -enormaste -enormt -enrum -ens -ensak -ensam -ensamhet -ensamheten -ensamhetens -ensamma -ensammare -ensammas -ensammast -ensammaste -ensamme -ensammes -ensamt -ensamvandring -ensamvandringar -ensamvandringarna -ensamvandringarnas -ensamvandringars -ensamvandringen -ensamvandringens -ensamvandrings -ense -ensidig -ensidiga -ensidigt -enskede -enskedes -enskog -enskogar -enskogarna -enskogarnas -enskogars -enskogen -enskogens -enstaberga -enstabergas -enstaka -enstavig -enstaviga -enstavigt -entonig -entoniga -entonigt -entrecote -entrecoten -entrecotens -entrecoter -entrecoterna -entrecoternas -entrecoters -entreprenad -entreprenaden -entreprenadens -entreprenader -entreprenaderna -entreprenadernas -entreprenaders -entropi -entropin -entropins -entusiasm -entusiasmen -entusiasmens -entusiasmera -entusiasmerad -entusiasmerade -entusiasmerades -entusiasmerande -entusiasmerar -entusiasmeras -entusiasmerat -entusiasmerats -entusiast -entusiasten -entusiastens -entusiaster -entusiasterna -entusiasternas -entusiasters -entusiastisk -entusiastiska -entusiastiskare -entusiastiskast -entusiastiskaste -entusiastiske -entusiastiskt -entydig -entydiga -entydigare -entydigast -entydigaste -entydigt -envar -enveten -envetet -envetna -envetne -envig -envigen -envigens -enviget -envigets -enviken -envikens -envis -envisa -envisades -envisare -envisas -envisast -envisaste -envisats -envise -envises -envishet -envisheten -envishetens -envishets -envist -enzym -enzymen -enzymens -enzymer -enzymerna -enzymernas -enzymers -enzymet -enzymets -eon -eonen -eonens -eoner -eonerna -eonernas -eoners -epidemi -epidemien -epidemiens -epidemier -epidemierna -epidemiernas -epidemiers -epidemin -epidemins -epidemis -epidemisk -epidemiska -epidemiskt -epigram -epigrammer -epigrammerna -epigrammernas -epigrammers -epik -epiken -epikens -epiker -epikern -epikerna -epikernas -epikerns -epikers -episk -episka -episkt -episod -episoden -episodens -episoder -episoderna -episodernas -episoders -epitaf -epitafer -epitaferna -epitafernas -epitafers -epitafet -epitafets -epitet -epiteten -epitetens -epitetet -epitetets -epok -epoken -epokens -epoker -epokerna -epokernas -epokers -epoks -epos -eposen -eposens -eposet -eposets -era -eran -erans -eras -erbjud -erbjuda -erbjudande -erbjudanden -erbjudandena -erbjudandenas -erbjudandens -erbjudandet -erbjudandets -erbjudas -erbjuden -erbjuder -erbjudes -erbjudet -erbjudit -erbjudits -erbjudna -erbjuds -eremit -eremiten -eremitens -eremiter -eremiterna -eremiternas -eremiters -eremits -erfar -erfara -erfaras -erfaren -erfarenhet -erfarenheten -erfarenhetens -erfarenheter -erfarenheterna -erfarenheternas -erfarenheters -erfaret -erfarit -erfarna -erfarnare -erfarnast -erfarnaste -erfarne -erfor -erfordra -erfordrad -erfordrade -erfordrades -erfordrar -erfordras -erfordrat -erfordrats -ergonom -ergonomen -ergonomens -ergonomer -ergonomerna -ergonomernas -ergonomers -ergonomi -ergonomin -ergonomins -ergonomisk -ergonomiska -ergonomiskt -ergonoms -eric -erics -ericsson -ericssons -erik -erika -erikas -eriks -eriksgata -eriksgatan -eriksgatans -eriksgatas -eriksson -erikssons -eringsboda -eringsbodas -erinra -erinrad -erinrade -erinrades -erinran -erinrande -erinrar -erinras -erinrat -erinrats -eritrea -eritreas -ernst -ernsts -erodera -eroderad -eroderade -eroderades -eroderar -eroderas -eroderat -eroderats -erogen -erogena -erogent -erosion -erosionen -erosionens -erotik -erotiken -erotikens -erotisk -erotiska -erotiskt -ers -ersatt -ersatta -ersatte -ersattes -ersatts -ersmark -ersmarks -ert -ertappa -ertappad -ertappade -ertappades -ertappande -ertappandet -ertappandets -ertappar -ertappas -ertappat -ertappats -escher -eschers -eskort -eskorten -eskortens -eskorter -eskortera -eskorterad -eskorterade -eskorterades -eskorterar -eskorteras -eskorterat -eskorterats -eskorterna -eskorternas -eskorters -esoterisk -esoteriska -esoteriskt -esperanto -espresso -espresson -espressons -ess -essay -essayen -essayens -essayer -essayerna -essayernas -essayers -esse -essen -essens -essensen -essensens -essenser -essenserna -essensernas -essensers -esset -essets -est -esten -estens -ester -esterna -esters -estet -esteten -estetens -esteter -esteterna -esteternas -esteters -estetik -estetiken -estetikens -estetiker -estetikern -estetikerna -estetikernas -estetikerns -estetikers -estetisk -estetiska -estetiskt -estnisk -estniska -estniske -estniskt -estrad -estraden -estradens -estrader -estraderna -estradernas -estraders -estrads -etage -etagen -etagens -etager -etagerna -etagernas -etagers -etaget -etagets -etapp -etappen -etappens -etapper -etapperna -etappernas -etappers -etcetera -eten -etenen -etenens -etenet -etenets -eter -eterisk -eteriska -eteriskt -etermedia -etermedias -etermedier -etermedierna -etermediernas -etermediers -etern -eterns -etik -etiken -etikens -etiker -etikern -etikerna -etikernas -etikerns -etikers -etikett -etiketten -etikettens -etiketter -etikettera -etiketterade -etiketterar -etiketterat -etiketterna -etiketternas -etiketters -etiketts -etiopien -etiopiens -etiopier -etiopiern -etiopierna -etiopiernas -etiopierns -etiopiers -etiopisk -etiopiska -etiopiskt -etisk -etiska -etiskt -etnisk -etniska -etniskt -etsa -etsad -etsade -etsades -etsar -etsas -etsat -etsats -etsning -etsningar -etsningarna -etsningarnas -etsningars -etsningen -etsningens -etsnings -ett -etta -ettan -ettans -ettas -ettdera -etter -ettor -ettorna -ettornas -ettors -ettrig -ettriga -ettrigare -ettrigast -ettrigaste -ettrige -ettrigt -ettusen -etui -etuien -etuiens -etuier -etuierna -etuiernas -etuiers -etuiet -etuiets -etyd -etyden -etydens -etyder -etyderna -etydernas -etyders -eufemism -eufemismen -eufemismens -eufemismer -eufemismerna -eufemismernas -eufemismers -eufori -euforin -euforins -euforisk -euforiska -euforiskt -europa -europas -europeisk -europeiska -europeiske -europeiskt -eva -evad -evakuera -evakuerad -evakuerade -evakuerades -evakuerar -evakueras -evakuerat -evakuerats -evakuering -evakueringar -evakueringarna -evakueringarnas -evakueringars -evakueringen -evakueringens -evakuerings -evas -evenemang -evenemangen -evenemangens -evenemanget -evenemangets -evenemangs -evert -everts -evidens -evidensen -evidensens -evig -eviga -evige -evighet -evigheten -evighetens -evigheter -evigheterna -evigheternas -evigheters -evigt -evy -evys -exakt -exakta -exaktare -exaktast -exaktaste -exakthet -exaktheten -exakthetens -exakthets -examen -examens -examensarbete -examensarbetet -examensarbetets -examensuppsats -examensuppsatsen -examensuppsatsens -examensuppsatser -examensuppsatserna -examensuppsatsernas -examensuppsatsers -examina -examination -examinationen -examinationens -examinationer -examinationerna -examinationernas -examinationers -examinations -examinator -examinatorer -examinatorerna -examinatorernas -examinatorers -examinatorn -examinatorns -examinators -examinera -examinerad -examinerade -examinerades -examinerar -examineras -examinerat -examinerats -excentrisk -excentriska -excentriske -excentriskt -excitera -exciterad -exciterade -exciterades -exciterar -exciteras -exciterat -exciterats -exeget -exegeten -exegetens -exegeter -exegeterna -exegeternas -exegeters -exekutiv -exekutiva -exekutivt -exekvera -exekverad -exekverade -exekverades -exekverar -exekveras -exekverat -exekverats -exekverbar -exekverbara -exekverbart -exekvering -exekveringar -exekveringarna -exekveringarnas -exekveringars -exekveringen -exekveringens -exekverings -exercis -exercisen -exercisens -exerciser -exerciserna -exercisernas -exercisers -exhibitionism -exhibitionismen -exhibitionismens -exhibitionist -exhibitionisten -exhibitionistens -exhibitionister -exhibitionisterna -exhibitionisternas -exhibitionisters -existens -existensen -existensens -existenser -existenserna -existensernas -existensers -existensminimum -existera -existerade -existerades -existerande -existerandet -existerandets -existerar -existeras -existerat -existerats -exkursion -exkursionen -exkursionens -exkursioner -exkursionerna -exkursionernas -exkursioners -exotisk -exotiska -exotiskt -expandera -expanderad -expanderade -expanderades -expanderar -expanderat -expanderats -expansion -expansionen -expansionens -expansionistisk -expansionistiska -expansionistiskt -expansiv -expansiva -expansivt -expediera -expedierad -expedierade -expedierades -expedierar -expedieras -expedierat -expedierats -expedit -expediten -expeditens -expediter -expediterna -expediternas -expediters -expedition -expeditionen -expeditionens -expeditioner -expeditionerna -expeditionernas -expeditioners -expeditions -experiment -experimenten -experimentens -experimentera -experimenterade -experimenterades -experimenterande -experimenterar -experimenteras -experimenterat -experimenterats -experimentet -experimentets -expert -experten -expertens -experter -experterna -experternas -experters -expertis -expertisen -expertisens -experts -exponent -exponenten -exponentens -exponenter -exponenterna -exponenternas -exponenters -exponentiera -exponentierad -exponentierade -exponentierades -exponentierar -exponentieras -exponentierat -exponentierats -exponents -exponera -exponerad -exponerade -exponerades -exponerar -exponeras -exponerat -exponerats -exponering -exponeringar -exponeringarna -exponeringarnas -exponeringars -exponeringen -exponeringens -exponerings -export -exporten -exportens -exportera -exporterad -exporterade -exporterades -exporterar -exporteras -exporterat -exporterats -exports -express -expressen -expressens -expresser -expresserna -expressernas -expressers -expressfart -expressionism -expressionismen -expressionismens -expressionist -expressionisten -expressionistens -expressionister -expressionisterna -expressionisternas -expressionisters -expressionistisk -expressionistiska -expressionistiskt -expressiv -expressiva -expressivt -expropriation -expropriationen -expropriationens -expropriationer -expropriationerna -expropriationernas -expropriationers -expropriations -expropriera -exproprierade -exproprierades -exproprierar -exproprieras -exproprierat -exproprierats -expropriering -exproprieringen -exproprieringens -exproprierings -extas -extasen -extasens -extatisk -extatiska -extatiskt -extern -externa -externt -extra -extrahera -extraherad -extraherade -extraherades -extraherar -extraherat -extraherats -extrapris -extrapriser -extrapriserna -extraprisernas -extraprisers -extrapriset -extraprisets -extravagans -extravagansen -extravagansens -extravaganser -extravaganserna -extravagansernas -extravagansers -extravagant -extravaganta -extrem -extrema -extremare -extremast -extremaste -extremism -extremismen -extremismens -extremist -extremisten -extremistens -extremister -extremisterna -extremisternas -extremisters -extremistisk -extremistiska -extremistiskt -extremt -extrovert -extroverta -fabricera -fabricerade -fabricerades -fabricerar -fabriceras -fabricerat -fabricerats -fabrik -fabrikant -fabrikanten -fabrikantens -fabrikanter -fabrikanterna -fabrikanternas -fabrikanters -fabrikants -fabrikat -fabrikaten -fabrikatens -fabrikatet -fabrikatets -fabrikation -fabrikationen -fabrikationens -fabrikations -fabriken -fabrikens -fabriker -fabrikerna -fabrikernas -fabrikers -fabriks -fabriksny -fabriksnya -fabriksnytt -facit -fack -facken -fackens -facket -fackets -fackman -fackmannen -fackmannens -fackmans -facks -facto -fadd -fadda -fadder -faddern -fadderns -fadders -faddrar -faddrarna -faddrarnas -faddrars -fader -fadern -faderns -faders -fager -fagersanna -fagersannas -fagersta -fagerstas -fagert -fagervik -fagerviks -faggorna -fagott -fagotten -fagottens -fagotter -fagotterna -fagotternas -fagotters -fagra -fagrare -fagrast -fagraste -fagre -fahrenheit -fairway -fairwayen -fairwayens -fakir -fakiren -fakirens -fakirer -fakirerna -fakirernas -fakirers -fakta -faktisk -faktiska -faktiskt -faktor -faktorer -faktorerna -faktorernas -faktorers -faktoriet -faktorn -faktorns -faktors -faktum -faktumet -faktumets -faktura -fakturan -fakturans -fakturera -fakturerad -fakturerade -fakturerades -fakturerar -faktureras -fakturerat -fakturerats -fakturering -faktureringar -faktureringarna -faktureringarnas -faktureringars -faktureringen -faktureringens -fakturerings -fakturor -fakturorna -fakturornas -fakturors -famn -famna -famnade -famnades -famnar -famnarna -famnarnas -famnars -famnas -famnat -famnats -famnen -famnens -famntag -famntagen -famntagens -famntaget -famntagets -famntags -fana -fanan -fanans -fanas -fanatiker -fanatikern -fanatikerna -fanatikernas -fanatikerns -fanatikers -fanatisk -fanatiska -fanatiske -fanatiskt -fanatism -fanatismen -fanatismens -fanerogam -fanerogamen -fanerogamens -fanerogamer -fanerogamerna -fanerogamernas -fanerogamers -fanfar -fanfaren -fanfarens -fanfarer -fanfarerna -fanfarernas -fanfarers -fanjunkare -fanjunkaren -fanjunkarens -fanjunkares -fanjunkarna -fanjunkarnas -fann -fanns -fanor -fanorna -fanornas -fanors -fantasi -fantasien -fantasiens -fantasier -fantasierna -fantasiernas -fantasiers -fantasin -fantasins -fantasis -fantast -fantasten -fantastens -fantaster -fantasterna -fantasternas -fantasters -fantastisk -fantastiska -fantastiske -fantastiskt -fantisera -fantiserad -fantiserade -fantiserades -fantiserande -fantiserandet -fantiserandets -fantiserar -fantiseras -fantiserat -fantiserats -fantom -fantomen -fantomens -fantomer -fantomerna -fantomernas -fantomers -fantoms -far -fara -faran -farande -farandet -farandets -farans -farao -faraon -faraoner -faraonerna -faraonernas -faraoners -faraons -faraos -faras -farbroder -farbrodern -farbroderns -farbroders -farbror -farbrorn -farbrorns -farbrors -farfader -farfadern -farfaderns -farfaders -farfar -farfars -farfarsfar -farfarsfars -farit -farkost -farkosten -farkostens -farkoster -farkosterna -farkosternas -farkosters -farm -farmaceutisk -farmaceutiska -farmaceutiskt -farmar -farmarna -farmarnas -farmars -farmen -farmens -farmor -farmorn -farmorns -farmors -farms -faror -farorna -farornas -farors -fars -farsot -farsoten -farsotens -farsoter -farsoterna -farsoternas -farsoters -farsta -farstas -farstu -farstun -farstuns -farstus -fart -farten -fartens -farter -farterna -farternas -farters -fartyg -fartygen -fartygens -fartyget -fartygets -fartygs -fas -fasa -fasad -fasade -fasaden -fasadens -fasader -fasaderna -fasadernas -fasaders -fasan -fasanen -fasanens -fasaner -fasanerna -fasanernas -fasaners -fasans -fasar -fasat -fascination -fascinationen -fascinationens -fascinations -fascinera -fascinerad -fascinerade -fascinerades -fascinerande -fascinerandet -fascinerandets -fascinerar -fascineras -fascinerat -fascinerats -fascism -fascismen -fascismens -fascist -fascisten -fascistens -fascister -fascisterna -fascisternas -fascisters -fascistisk -fascistiska -fascistiskt -fasen -fasens -faser -faserna -fasernas -fasers -fason -fasonen -fasonens -fasoner -fasonerna -fasonernas -fasoners -fasor -fasorna -fasornas -fasors -fast -fasta -fastade -fastades -fastan -fastande -fastandet -fastandets -fastans -fastar -fastare -fastas -fastast -fastaste -fastat -fastats -fastbunden -fastbundet -fastbundna -faster -fastern -fasterns -fasters -fasthet -fastheten -fasthetens -fasthets -fastighet -fastigheten -fastighetens -fastigheter -fastigheterna -fastigheternas -fastigheters -fastighets -fastmer -fastmonterad -fastmonterade -fastmonterat -fastna -fastnade -fastnades -fastnar -fastnas -fastnat -fastnats -fastor -fastorna -fastornas -fastors -fastrar -fastrarna -fastrarnas -fastrars -fastsatta -fastskruvad -fastskruvade -fastskruvat -fastspikad -fastspikade -fastspikat -faststucken -faststucket -faststuckna -fasttaga -fat -faten -fatens -fatet -fatets -fatt -fatta -fattad -fattade -fattades -fattar -fattas -fattat -fattats -fattbar -fattbara -fattbart -fattig -fattiga -fattigare -fattigas -fattigast -fattigaste -fattigdom -fattigdomen -fattigdomens -fattigdoms -fattige -fattiges -fattigt -fattning -fattningar -fattningarna -fattningarnas -fattningars -fattningen -fattningens -fattnings -faun -fauna -faunan -faunans -faunas -faunen -faunens -fauner -faunerna -faunernas -fauners -faunor -faunorna -faunornas -faunors -fauns -favorisera -favoriserad -favoriserade -favoriserades -favoriserande -favoriserar -favoriseras -favoriserat -favoriserats -favorit -favoriten -favoritens -favoriter -favoriterna -favoriternas -favoriters -favorits -feber -febern -feberns -februari -februaris -federation -federationen -federationens -federationer -federationerna -federationernas -federationers -federations -feedback -feer -feerna -feernas -feers -feg -fega -fegare -fegast -fegaste -fege -fegen -fegens -feghet -fegheten -feghetens -fegis -fegisar -fegisarna -fegisarnas -fegisars -fegisen -fegisens -fegt -feja -fejad -fejade -fejades -fejar -fejas -fejat -fejats -fejd -fejden -fejdens -fejder -fejderna -fejdernas -fejders -fejka -fejkade -fejkar -fejkat -fem -femhundra -feminin -feminina -feminint -femininum -femininumer -femininumerna -femininumernas -femininumers -femininumet -femininumets -feminism -feminismen -feminismens -feminist -feministen -feministens -feminister -feministerna -feministernas -feministers -feministisk -feministiska -feministiskt -femma -femman -femmans -femmas -femmor -femmorna -femmornas -femmors -femte -femti -femtio -femtioen -femtioett -femtiofem -femtiofyra -femtionde -femtionio -femtiosex -femtiosju -femtiotre -femton -femtonde -femtonhundra -femtontusen -femtusen -fen -fena -fenan -fenans -fenas -fengersfors -fenomen -fenomenen -fenomenens -fenomenet -fenomenets -fenor -fenorna -fenornas -fenors -fens -ferie -ferien -feriens -ferier -ferierna -feriernas -feriers -fernissa -fernissan -fernissans -ferrari -ferrarin -ferrarins -ferraris -fest -festa -festade -festades -festande -festandet -festandets -festar -festas -festat -festats -festen -festens -fester -festerna -festernas -festers -fet -feta -fetare -fetast -fetaste -fete -fetisch -fetischen -fetischens -fetischer -fetischerna -fetischernas -fetischers -fetischism -fetischismen -fetischismens -fetma -fetman -fetmans -fetmas -fett -fetter -fetterna -fetternas -fetters -fettet -fettets -fiasko -fiaskon -fiaskona -fiaskonas -fiaskons -fiaskos -fiaskot -fiaskots -fiber -fibern -fiberns -fibers -fibrer -fibrerna -fibrernas -fibrers -fick -ficka -fickan -fickans -fickas -fickor -fickorna -fickornas -fickors -ficks -fiction -fiende -fiendefarkost -fiendefarkosten -fiendefarkostens -fiendefarkoster -fiendefarkosterna -fiendefarkosternas -fiendefarkosters -fienden -fiendens -fiender -fienderna -fiendernas -fienders -fiendes -fiendskap -fiendskapen -fiendskapens -fiffig -fiffiga -fiffigare -fiffigast -fiffigaste -fiffige -fiffigt -figur -figurativ -figurativa -figurativt -figuren -figurens -figurer -figurera -figurerad -figurerade -figurerades -figurerar -figureras -figurerat -figurerats -figurerna -figurernas -figurers -figurs -fika -fikade -fikar -fikat -fikon -fikonen -fikonens -fikonet -fikonets -fikons -fiktion -fiktionen -fiktionens -fiktions -fiktiv -fiktiva -fiktivt -fikus -fikusar -fikusarna -fikusarnas -fikusars -fikusen -fikusens -fimp -fimpa -fimpad -fimpade -fimpades -fimpar -fimparna -fimparnas -fimpars -fimpas -fimpat -fimpats -fimpen -fimpens -fimps -fin -fina -finans -finanschef -finanschefen -finanschefens -finanschefer -finanscheferna -finanschefernas -finanschefers -finanser -finanserna -finansernas -finansers -finansiera -finansierad -finansierade -finansierades -finansierar -finansieras -finansierat -finansierats -finansiering -finansieringen -finansieringens -finansminister -finansministern -finansministerns -finansministers -finansministrar -finansministrarna -finansministrarnas -finansministrars -finare -finast -finaste -fine -finess -finessen -finessens -finesser -finesserna -finessernas -finessers -finfin -finfina -finfine -finfint -finge -finger -fingera -fingerad -fingerade -fingerades -fingerar -fingeras -fingerat -fingerats -fingeravtryck -fingeravtrycken -fingeravtryckens -fingeravtrycket -fingeravtryckets -fingeravtrycks -fingern -fingerns -fingers -fingertopp -fingertoppar -fingertopparna -fingertopparnas -fingertoppars -fingertoppen -fingertoppens -fingertopps -fingra -fingrade -fingrande -fingrar -fingrarna -fingrarnas -fingrars -fingrat -fingren -fingrens -fingret -fingrets -finhacka -finhackad -finhackade -finhackades -finhackar -finhackas -finhackat -finhackats -finish -finishen -finishens -finit -finita -finja -finjas -fink -finka -finkade -finkamma -finkammad -finkammade -finkammades -finkammande -finkammandet -finkammandets -finkammar -finkammas -finkammat -finkammats -finkar -finkarna -finkarnas -finkars -finkat -finken -finkens -finmaskig -finmaskiga -finmaskigare -finmaskigast -finmaskigaste -finmaskigt -finn -finna -finnande -finnandet -finnandets -finnar -finnarna -finnarnas -finnars -finnas -finne -finnen -finnens -finner -finnes -finnig -finniga -finnigt -finns -finputsa -finputsad -finputsade -finputsades -finputsar -finputsas -finputsat -finputsats -finsk -finska -finskan -finskans -finske -finskor -finskorna -finskornas -finskors -finskt -finsmakare -finsmakaren -finsmakarens -finsmakares -finsmakarna -finsmakarnas -finsnickeri -fint -finten -fintens -finter -finterna -finternas -finters -fints -fira -firad -firade -firades -firande -firandet -firandets -firar -firare -firaren -firarens -firares -firarna -firarnas -firas -firat -firats -firma -firmament -firmamentet -firmamentets -firmaments -firman -firmans -firmas -firmatecknare -firmatecknaren -firmatecknarens -firmatecknares -firmatecknarna -firmatecknarnas -firmor -firmorna -firmornas -firmors -fisk -fiska -fiskade -fiskades -fiskar -fiskare -fiskaren -fiskarens -fiskares -fiskarna -fiskarnas -fiskars -fiskas -fiskat -fiskats -fiskbit -fiskbitar -fiskbitarna -fiskbitarnas -fiskbitars -fiskbiten -fiskbitens -fiske -fisken -fiskens -fiskeri -fiskerier -fiskerierna -fiskeriernas -fiskeriers -fiskeriet -fiskeriets -fisket -fiskets -fiskgjusar -fiskgjusarna -fiskgjusarnas -fiskgjusars -fiskgjuse -fiskgjusen -fiskgjusens -fission -fissionen -fissionens -fissioner -fissionerna -fissionernas -fissioners -fix -fixa -fixad -fixade -fixades -fixar -fixare -fixaren -fixarens -fixares -fixarna -fixarnas -fixas -fixat -fixats -fixera -fixerad -fixerade -fixerades -fixerande -fixerandet -fixerandets -fixerar -fixeras -fixerat -fixerats -fixering -fixeringar -fixeringarna -fixeringarnas -fixeringars -fixeringen -fixeringens -fixerings -fixpunkt -fixpunkten -fixpunktens -fixt -fjant -fjanta -fjantade -fjantar -fjantarna -fjantarnas -fjantars -fjantat -fjanten -fjantens -fjantig -fjantiga -fjantigare -fjantigast -fjantigaste -fjantigt -fjor -fjord -fjordar -fjordarna -fjordarnas -fjordars -fjorden -fjordens -fjorton -fjortonde -fjortonhundra -fjortontusen -fjugesta -fjugestas -fjun -fjunen -fjunens -fjunet -fjunets -fjuns -fniss -fnissa -fnissade -fnissar -fnissat -fnisset -fnissets -fnitter -fnittra -fnittrade -fnittrar -fnittrat -fnittret -fnittrets -fnoskig -fnoskiga -fnoskigare -fnoskigast -fnoskigaste -fnoskigt -fnysa -fnyser -fnyst -fnyste -focka -fockade -fockades -fockar -fockas -fockat -fockats -foder -fodra -fodrad -fodrade -fodrades -fodrar -fodras -fodrat -fodrats -fodren -fodrens -fodret -fodrets -fog -foga -fogad -fogade -fogades -fogar -fogarna -fogarnas -fogars -fogas -fogat -fogats -fogdar -fogdarna -fogdarnas -fogdars -fogde -fogden -fogdens -fogen -fogens -fogning -fogningar -fogningarna -fogningarnas -fogningars -fogningen -fogningens -fognings -fogsvans -fogsvansar -fogsvansarna -fogsvansarnas -fogsvansars -fogsvansen -fogsvansens -fokus -fokusen -fokusens -fokusera -fokuserad -fokuserade -fokuserades -fokuserande -fokuserandet -fokuserandets -fokuserar -fokuseras -fokuserat -fokuserats -fokusering -fokuseringen -fokuseringens -fokuserings -fokuset -fokusets -fond -fonden -fondens -fonder -fonderna -fondernas -fonders -fonem -fonemen -fonemens -fonemet -fonemets -fonetik -fonetisk -fonetiska -fonetiskt -font -fonten -fontens -fonter -fonterna -fonternas -fonters -for -fora -foran -forans -foras -forcera -forcerad -forcerade -forcerades -forcerar -forcerat -forcerats -ford -fordom -fordomdags -fordon -fordonen -fordonens -fordonet -fordonets -fordons -fordra -fordrade -fordrades -fordran -fordrande -fordrandet -fordrandets -fordrar -fordras -fordrat -fordrats -fordring -fordringar -fordringarna -fordringarnas -fordringars -fordringen -fordringens -fordrings -form -forma -formad -formade -formades -formar -formas -format -formaten -formatens -formatera -formaterad -formaterade -formaterades -formaterar -formateras -formaterat -formaterats -formatering -formateringar -formateringarna -formateringarnas -formateringars -formateringen -formateringens -formaterings -formatet -formatets -formation -formationen -formationens -formationer -formationerna -formationernas -formationers -formations -formats -formattera -formatterad -formatterade -formatterades -formatterar -formatterat -formatterats -formen -formens -former -formera -formerad -formerade -formerades -formerar -formeras -formerat -formerats -formerna -formernas -formers -formgav -formgavs -formge -formger -formges -formgett -formgetts -formgivit -formgivning -formgivningen -formgivningens -formgivnings -forms -forn -forna -fornas -forne -fornes -fornnordisk -fornnordiska -fornnordiskt -fornt -forntid -forntida -forntiden -forntidens -forntids -foror -fororna -forornas -forors -fors -forsa -forsade -forsar -forsarna -forsarnas -forsars -forsas -forsat -forsbacka -forsbackas -forsen -forsens -forserum -forserums -forshaga -forshagas -forsheda -forshedas -forska -forskade -forskades -forskande -forskandet -forskandets -forskar -forskare -forskaren -forskarens -forskares -forskarna -forskarnas -forskas -forskat -forskats -forskning -forskningar -forskningarna -forskningarnas -forskningars -forskningen -forskningens -forsknings -forsman -forsmans -forsvik -forsviks -fort -fortare -fortast -fortfar -fortfara -fortfarande -fortfor -fortgick -fortran -fortsatt -fortsatta -fortsatte -fortskred -fortskrida -fortskrider -fortskridit -forum -forumet -forumets -forums -forward -forwardar -forwardarna -forwardarnas -forwardars -forwarden -forwardens -forwards -fosfat -fosfaten -fosfatens -fosfater -fosfaterna -fosfaternas -fosfaters -fosfor -fosforn -fosforns -foster -fosterbror -fosterdotter -fosterfader -fosterfadern -fosterfaderns -fosterjord -fosterjorden -fosterjordens -fosterson -fostersyster -fostersysters -fostra -fostrad -fostrade -fostrades -fostran -fostrar -fostrare -fostraren -fostrarens -fostrares -fostrarna -fostrarnas -fostras -fostrat -fostrats -fostren -fostrens -fostret -fostrets -fot -fotboja -fotbojan -fotbojans -fotbojor -fotbojorna -fotbojornas -fotbojors -foten -fotens -fotnot -fotnoten -fotnotens -fotnoter -fotnoterna -fotnoternas -fotnoters -fotnots -foto -fotogen -fotogenet -fotogenets -fotograf -fotografen -fotografens -fotografer -fotografera -fotograferad -fotograferade -fotograferades -fotograferar -fotograferas -fotograferat -fotograferats -fotografering -fotograferingar -fotograferingarna -fotograferingarnas -fotograferingars -fotograferingen -fotograferingens -fotograferings -fotograferna -fotografernas -fotografers -fotografi -fotografier -fotografierna -fotografiernas -fotografiers -fotografiet -fotografiets -fotografisk -fotografiska -fotografiskt -fotokopia -fotokopian -fotokopians -fotokopias -fotokopiera -fotokopierad -fotokopierade -fotokopierades -fotokopierar -fotokopierat -fotokopierats -fotokopior -fotokopiorna -fotokopiornas -fotokopiors -foton -fotona -fotonas -fotonen -fotonens -fotoner -fotonerna -fotonernas -fotoners -fotons -fotos -fotostatkopiering -fotostatkopieringen -fotostatkopieringens -fotot -fotots -fots -fotsid -fotsida -fotsitt -fotsteg -fotstegen -fotstegens -fotsteget -fotstegets -foxtrot -foxtroten -foxtrotens -foxtroter -foxtroterna -foxtroternas -foxtroters -foxtrots -frack -frackar -frackarna -frackarnas -frackars -fracken -frackens -fradga -fradgan -fradgans -fragment -fragmentarisk -fragmentariska -fragmentariskt -fragmenten -fragmentens -fragmentering -fragmenteringen -fragmenteringens -fragmenterings -fragmentet -fragmentets -frakt -frakta -fraktad -fraktade -fraktades -fraktar -fraktas -fraktat -fraktats -frakten -fraktens -frakter -frakterna -frakternas -frakters -fraktion -fraktionen -fraktionens -fraktioner -fraktionerna -fraktionernas -fraktioners -fraktions -frakts -fram -frambars -frambesvuren -frambesvuret -frambesvurit -frambesvurna -frambragte -frambringa -frambringad -frambringade -frambringades -frambringande -frambringandet -frambringandets -frambringar -frambringas -frambringat -frambringats -frambrutit -frambryta -frambryter -framburet -framemot -framfart -framfarten -framfartens -framfusig -framfusiga -framfusigare -framfusigast -framfusigaste -framfusige -framfusigt -framgent -framgick -framkasta -framkastad -framkastade -framkastades -framkastar -framkastas -framkastat -framkastats -framkom -framkomma -framkommer -framkommit -framkomst -framkomsten -framkomstens -frammana -frammanad -frammanade -frammanades -frammanar -frammanas -frammanat -frammanats -framme -framom -framsade -framsagd -framsagda -framsagt -framsida -framsidan -framsidans -framsidas -framsidor -framsidorna -framsidornas -framsidors -framskjutande -framskjuten -framskjutet -framskjutna -framskred -framskrida -framskriden -framskrider -framskridet -framskridit -framskridna -framskymta -framskymtade -framskymtades -framskymtar -framskymtas -framskymtat -framskymtats -framsprungen -framsprunget -framsprungna -framstamma -framstammad -framstammade -framstammades -framstammar -framstammas -framstammat -framstammats -framsteg -framstegen -framstegens -framsteget -framstegets -framstegs -framstod -framstormande -framstupa -framsynt -framsynta -framtagande -framtagandet -framtagandets -framtid -framtida -framtiden -framtidens -framtids -framtoning -framtoningen -framtoningens -framtonings -framtvinga -framtvingad -framtvingade -framtvingades -framtvingande -framtvingandet -framtvingandets -framtvingar -framtvingas -framtvingat -framtvingats -franc -francen -francens -franchising -franchisingen -franchisingens -frank -franka -frankera -frankerad -frankerade -frankerades -frankerar -frankeras -frankerat -frankerats -frankrike -frankrikes -frankt -frans -fransar -fransarna -fransarnas -fransars -fransen -fransens -fransk -franska -franskan -franskans -franskas -franske -franskt -fransman -fransmannen -fransmannens -fransmans -fransyska -fransyskan -fransyskans -fransyskor -fransyskorna -fransyskornas -fransyskors -frappera -frapperad -frapperade -frapperades -frapperande -frapperar -frapperas -frapperat -frapperats -fras -frasa -frasade -frasande -frasandet -frasandets -frasar -frasat -frasen -frasens -fraser -frasering -fraseringen -fraseringens -fraserings -fraserna -frasernas -frasers -fred -freda -fredad -fredade -fredades -fredag -fredagar -fredagarna -fredagarnas -fredagars -fredagen -fredagens -fredags -fredar -fredas -fredat -fredats -freden -fredens -fredrik -fredrika -fredrikas -fredriks -fredriksberg -fredriksbergs -freds -fredsdomare -fredsdomaren -fredsdomarens -fredsdomares -fredsdomarna -fredsdomarnas -fredstid -fredstiden -fredstidens -fregatt -fregatten -fregattens -fregatter -fregatterna -fregatternas -fregatters -freja -frejas -frejdad -frejdade -frejdat -frejdig -frejdiga -frejdigt -frekvens -frekvensen -frekvensens -frekvenser -frekvenserna -frekvensernas -frekvensers -frekvent -frekventa -frekventare -frekventast -frekventaste -frekventera -frekventerad -frekventerade -frekventerar -frekventerat -frenesi -frenesien -frenesiens -frenesin -frenesins -frenetisk -frenetiska -frenetiskt -freon -freonen -freonens -freoner -freonerna -freonernas -freoners -freonet -freonets -frescati -fresk -fresken -freskens -fresker -freskerna -freskernas -freskers -fresta -frestad -frestade -frestades -frestande -frestar -frestare -frestaren -frestarens -frestares -frestarna -frestarnas -frestas -frestat -frestats -fresterska -fresterskan -fresterskans -fresterskor -fresterskorna -fresterskornas -fresterskors -freud -freudianism -freudianismen -freudianismens -freudiansk -freudianska -freudianske -freudianskt -freuds -fri -fria -friade -friades -friar -friare -friaren -friarens -friares -friarna -friarnas -frias -friat -friats -frid -frida -fridas -friden -fridens -frids -fridsam -fridsamma -fridsammare -fridsammast -fridsammaste -fridsamt -fridsfurste -fridsfursten -fridsfurstens -frie -frieri -frierier -frierierna -frieriernas -frieriers -frieriet -frieriets -frieris -frigav -frigavs -frige -friger -friges -frigett -frigetts -frigid -frigida -frigiven -frigivet -frigivit -frigivits -frigivna -frigivnas -frigivne -frigivnes -frigivning -frigivningar -frigivningarna -frigivningarnas -frigivningars -frigivningen -frigivningens -frigivnings -frigjordhet -frigjordheten -frigjordhetens -frigjordhets -frigjort -frihet -friheten -frihetens -friheter -friheterna -friheternas -friheters -frihets -friidrott -friidrottare -friidrottaren -friidrottarens -friidrottares -friidrottarna -friidrottarnas -friidrotten -friidrottens -friidrotts -frikostig -frikostiga -frikostigare -frikostigast -frikostigaste -frikostigt -friktion -friktionen -friktionens -friktions -frimodig -frimodiga -frimodighet -frimodigheten -frimodighetens -frimodighets -frimodigt -frinnaryd -frinnaryds -fripassagerare -fripassageraren -fripassagerarens -fripassagerares -fripassagerarna -fripassagerarnas -fris -frisen -frisens -friser -frisera -friserade -friserades -friserar -friseras -friserat -friserats -friserna -frisernas -frisers -frisinthet -frisintheten -frisinthetens -frisinthets -frisk -friska -friskad -friskade -friskades -friskar -friskare -friskas -friskast -friskaste -friskat -friskats -friske -friskes -friskt -frist -fristad -fristaden -fristadens -fristads -fristen -fristens -frister -fristerna -fristernas -fristers -frisyr -frisyren -frisyrens -frisyrer -frisyrerna -frisyrernas -frisyrers -frisyrs -fritera -friterad -friterade -friterades -friterar -friteras -friterat -friterats -fritid -fritiden -fritidens -fritids -fritjof -fritjofs -fritt -froda -frodad -frodade -frodades -frodar -frodas -frodat -frodats -frodig -frodiga -frodigt -from -fromhet -fromheten -fromhetens -fromma -frommare -frommas -frommast -frommaste -fromme -frommes -fromt -frondera -fronderade -fronderar -fronderas -fronderat -front -fronten -frontens -fronter -fronterna -fronternas -fronters -frossa -frossad -frossade -frossades -frossan -frossande -frossandet -frossandets -frossans -frossar -frossare -frossaren -frossarens -frossares -frossarna -frossarnas -frossas -frossat -frossats -frossor -frossorna -frossornas -frossors -frost -frosten -frostens -frostig -frostiga -frostigare -frostigast -frostigaste -frostigt -fru -fruar -fruarna -fruarnas -fruars -frukost -frukostar -frukostarna -frukostarnas -frukostars -frukosten -frukostens -frukosts -frukt -frukta -fruktad -fruktade -fruktades -fruktan -fruktande -fruktandet -fruktandets -fruktans -fruktar -fruktas -fruktat -fruktats -fruktbar -fruktbara -fruktbarhet -fruktbarheten -fruktbarhetens -fruktbart -frukten -fruktens -frukter -frukterna -frukternas -frukters -frukts -frun -fruns -fruntimmer -fruntimmers -fruntimren -fruntimrens -fruntimret -fruntimrets -frus -frusen -fruset -frusit -frusna -frusta -frustade -frustande -frustar -frustat -frustration -frustrationen -frustrationens -frustrationer -frustrationerna -frustrationernas -frustrationers -frustrations -frustrera -frustrerad -frustrerade -frustrerades -frustrerande -frustrerar -frustreras -frustrerat -frustrerats -frys -frysa -frysar -frysarna -frysarnas -frysars -frysas -frysen -frysens -fryser -fryst -fryste -frystes -frysts -fuga -fugan -fugans -fugas -fugor -fugorna -fugornas -fugors -fukt -fukta -fuktad -fuktade -fuktades -fuktar -fuktat -fuktats -fukten -fuktens -fuktig -fuktiga -fuktigare -fuktigast -fuktigaste -fuktighet -fuktigheten -fuktighetens -fuktighets -fuktigt -fukts -fundament -fundamenten -fundamentens -fundamentet -fundamentets -fundaments -fundera -funderade -funderades -funderande -funderandet -funderandets -funderar -funderare -funderaren -funderarens -funderares -funderarna -funderarnas -funderas -funderat -funderats -fundering -funderingar -funderingarna -funderingarnas -funderingars -funderingen -funderingens -funderings -fundersam -fundersamhet -fundersamheten -fundersamhetens -fundersamhets -fundersamma -fundersamt -fungera -fungerade -fungerades -fungerande -fungerandet -fungerandets -fungerar -fungeras -fungerat -fungerats -funka -funkade -funkar -funkat -funktion -funktionen -funktionens -funktioner -funktionerna -funktionernas -funktioners -funktions -funna -funnen -funnes -funnet -funnit -funnits -funtad -funtade -funtat -fur -fura -furan -furans -furas -furie -furien -furiens -furier -furierna -furiernas -furiers -furies -furir -furiren -furirens -furirer -furirerna -furirernas -furirers -furor -furorna -furornas -furors -furstar -furstarna -furstarnas -furstars -furste -fursten -furstens -furstes -furu -furuskog -furuskogen -furuskogens -furusund -furusunds -furuvik -furuviks -fusion -fusionen -fusionens -fusioner -fusionerna -fusionernas -fusioners -fusions -fusk -fuska -fuskade -fuskades -fuskar -fuskare -fuskaren -fuskarens -fuskares -fuskarna -fuskarnas -fuskas -fuskat -fuskats -fusket -fuskets -futtig -futtiga -futtigare -futtigast -futtigaste -futtigt -futurism -futurismen -futurismens -futurist -futuristen -futuristens -futurister -futuristerna -futuristernas -futuristers -futuristisk -futuristiska -futuristiskt -futurum -fynd -fynda -fyndade -fyndar -fyndat -fynden -fyndens -fyndet -fyndets -fyndig -fyndiga -fyndigare -fyndigast -fyndigaste -fyndigheterna -fyndigt -fynds -fyr -fyra -fyrade -fyrades -fyrahundra -fyran -fyrans -fyrar -fyrarna -fyrarnas -fyrars -fyras -fyrat -fyrats -fyratusen -fyrbent -fyrbenta -fyrbente -fyren -fyrens -fyrfotad -fyrfotade -fyrfotat -fyrk -fyrkant -fyrkanten -fyrkantens -fyrkanter -fyrkanterna -fyrkanternas -fyrkanters -fyrkantig -fyrkantiga -fyrkantigt -fyrkar -fyrkarna -fyrkarnas -fyrkars -fyrken -fyrkens -fyror -fyrorna -fyrornas -fyrors -fyrsiffrig -fyrsiffriga -fyrsiffrigt -fyrti -fyrtio -fyrtioen -fyrtioett -fyrtiofem -fyrtiofyra -fyrtionde -fyrtionio -fyrtiosex -fyrtiosju -fyrtiotre -fyrverkeri -fyrverkerier -fyrverkerierna -fyrverkeriernas -fyrverkeriers -fyrverkeriet -fyrverkeriets -fyrverkeris -fysik -fysiken -fysikens -fysiker -fysikern -fysikerna -fysikernas -fysikerns -fysikers -fysionomi -fysionomier -fysionomierna -fysionomiernas -fysionomiers -fysionomin -fysionomins -fysisk -fysiska -fysiskt -gabon -gabons -gadd -gadda -gaddade -gaddar -gaddarna -gaddarnas -gaddars -gaddat -gadden -gaddens -gage -gager -gagerna -gagernas -gagers -gaget -gagets -gaggig -gaggiga -gaggigare -gaggigast -gaggigaste -gaggigt -gagn -gagna -gagnad -gagnade -gagnades -gagnar -gagnas -gagnat -gagnats -gagnef -gagnefs -gagnet -gagnets -gagnrik -gagnrika -gagnrikt -gam -gamar -gamarna -gamarnas -gamars -gambia -gambias -gambit -gambitar -gambitarna -gambitarnas -gambitars -gambiten -gambitens -gamen -gamens -gamma -gammafunktion -gammafunktionen -gammafunktionens -gammafunktioner -gammafunktionerna -gammafunktionernas -gammafunktioners -gammafunktions -gamman -gangster -gangstern -gangsterns -gangsters -gangstrar -gangstrarna -gangstrarnas -gangstrars -ganska -gap -gapa -gapade -gapades -gapande -gapandet -gapandets -gapar -gapas -gapat -gapats -gapen -gapens -gapet -gapets -gapskratt -gapskratten -gapskrattens -gapskrattet -gapskrattets -gapskratts -garage -garagen -garagens -garaget -garagets -garant -garanten -garantens -garanter -garantera -garanterad -garanterade -garanterades -garanterande -garanterandet -garanterandets -garanterar -garanteras -garanterat -garanterats -garanterna -garanternas -garanters -garanti -garantier -garantierna -garantiernas -garantiers -garantin -garantins -garantis -gard -garde -garden -gardena -gardenas -gardens -gardera -garderad -garderade -garderades -garderar -garderas -garderat -garderats -garderob -garderoben -garderobens -garderober -garderoberna -garderobernas -garderobers -gardes -gardet -gardets -gardin -gardinen -gardinens -gardiner -gardinerna -gardinernas -gardiners -gardins -garn -garnen -garnens -garnera -garnerad -garnerade -garnerades -garnerar -garneras -garnerat -garnerats -garnering -garneringar -garneringarna -garneringarnas -garneringars -garneringen -garneringens -garnerings -garnet -garnets -garnison -garnisonen -garnisonens -garnisoner -garnisonerna -garnisonernas -garnisoners -garnityr -garnityren -garnityrens -garnityret -garnityrets -garpenberg -garpenbergs -garphyttan -garphyttans -garva -garvad -garvade -garvades -garvar -garvare -garvaren -garvarens -garvares -garvarna -garvarnas -garvas -garvat -garvats -gas -gasa -gasad -gasade -gasades -gasar -gasas -gasat -gasats -gasen -gasens -gaser -gaserna -gasernas -gasers -gask -gaskar -gaskarna -gaskarnas -gaskars -gasken -gaskens -gaskognisk -gaskogniska -gaskogniskt -gassa -gassade -gassande -gassar -gassat -gast -gasta -gastade -gastar -gastarna -gastarnas -gastars -gastat -gasten -gastens -gastronomisk -gastronomiska -gastronomiskt -gata -gatan -gatans -gator -gatorna -gatornas -gators -gatsopare -gatsoparen -gatsoparens -gatsopares -gatsoparna -gatsoparnas -gatsten -gatstenar -gatstenarna -gatstenarnas -gatstenars -gatstenen -gatstenens -gatstens -gatuadress -gatubarn -gatubarnen -gatubarnens -gatubarns -gatunummer -gatunummers -gatunumren -gatunumrens -gatunumret -gatunumrets -gav -gavott -gavotten -gavottens -gavotter -gavotterna -gavotternas -gavotters -gavs -gay -gebit -gebiten -gebitens -gebitet -gebitets -gedigen -gediget -gedigna -gem -gemak -gemaken -gemakens -gemaket -gemakets -gemen -gemena -gemene -gemener -gemenerna -gemenernas -gemeners -gemens -gemensam -gemensamma -gemensammma -gemensamt -gemenskap -gemenskapen -gemenskapens -gemenskaps -gement -gemet -gemets -gemyt -gemytet -gemytets -gemyts -gen -gena -genade -genant -genanta -genantare -genantast -genantaste -genar -genarp -genarps -genast -genat -gendarm -gendarmen -gendarmens -gendarmer -gendarmerna -gendarmernas -gendarmers -gendarms -genen -genens -gener -genera -generad -generade -generades -generar -generas -generat -generation -generationen -generationens -generationer -generationerna -generationernas -generationers -generations -generationsskifte -generator -generatorer -generatorerna -generatorernas -generatorers -generatorn -generatorns -generators -generats -generera -genererad -genererade -genererades -genererar -genererat -genererats -generering -genereringen -genereringens -genererings -generna -genernas -generositet -generositeten -generositetens -geners -genes -genesen -genesens -genetik -genetiken -genetikens -genetiker -genetikerna -genetikernas -genetikers -genetisk -genetiska -genetiskt -genevad -genevads -genever -genevern -geneverns -geni -genien -geniens -genier -genierna -geniernas -geniers -geniet -geniets -genitiv -genitiven -genitivens -genius -genom -genomarbetad -genomarbetade -genomarbetat -genomborra -genomborrad -genomborrade -genomborrades -genomborrar -genomborras -genomborrat -genomborrats -genombrott -genombrotten -genombrottens -genombrottet -genombrottets -genombrotts -genombruten -genombrutet -genombrutna -genomdrev -genomdrevs -genomdriva -genomdrivande -genomdrivas -genomdriven -genomdriver -genomdrivet -genomdrivit -genomdrivits -genomdrivna -genomfarit -genomfart -genomfarten -genomfartens -genomfor -genomfors -genomforska -genomforskad -genomforskade -genomforskades -genomforskar -genomforskat -genomforskats -genomgick -genomgicks -genomgripande -genomkokt -genomkokta -genomsnitt -genomsnitten -genomsnittens -genomsnittet -genomsnittets -genomsnitts -genomstungen -genomstunget -genomstungna -genomsyra -genomsyrad -genomsyrade -genomsyrades -genomsyrar -genomsyras -genomsyrat -genomsyrats -genre -genren -genrens -genrer -genrerna -genrernas -genrers -genres -gens -genskjuten -genskjutet -genskjutna -gensvar -gensvaren -gensvarens -gensvaret -gensvarets -genteknik -gentekniken -genteknikens -gentemot -genuin -genuina -genuint -genus -geodet -geodeten -geodetens -geodeter -geodeterna -geodeternas -geodeters -geofysik -geofysiken -geofysikens -geofysiker -geofysikerna -geofysikernas -geofysikers -geograf -geografen -geografens -geografer -geograferna -geografernas -geografers -geografi -geografin -geografins -geografisk -geografiska -geografiskt -geometri -geometrin -geometrins -geometrisk -geometriska -geometriskt -georg -georgien -georgiens -georgier -georgierna -georgiernas -georgiers -georgisk -georgiska -georgiske -georgiskt -georgs -geovetenskap -geovetenskapen -geovetenskapens -geovetenskaps -gepard -geparden -gepardens -geparder -geparderna -gepardernas -geparders -gepards -ger -gerd -gerda -gerdas -gerds -gerhard -gerhards -german -germanen -germanens -germaner -germanerna -germanernas -germaners -germans -germansk -germanska -germanske -germanskt -gert -gertrud -gertruds -gerts -ges -gest -gesten -gestens -gester -gesterna -gesternas -gesters -gestik -gestiken -gestikens -get -getabock -getabockar -getabockarna -getabockarnas -getabockars -getabocken -getabockens -getabocks -geten -getens -geting -getingar -getingarna -getingarnas -getingars -getinge -getingen -getingens -getinges -getings -gett -getter -getterna -getternas -getters -getto -getton -gettona -gettonas -gettons -gettos -gettot -gettots -getts -ghana -ghanas -gick -gicks -gift -gifta -giftas -giftbesprutning -giftbesprutningar -giftbesprutningarna -giftbesprutningarnas -giftbesprutningars -giftbesprutningen -giftbesprutningens -giftbesprutnings -gifte -giften -giftens -gifter -giftes -giftet -giftets -giftig -giftiga -giftigare -giftigast -giftigaste -giftigt -gifts -gigant -giganten -gigantens -giganter -giganterna -giganternas -giganters -gigantisk -gigantiska -gigantiskt -gigants -gikt -gikten -giktens -gimo -gimos -gin -ginge -ginst -ginsten -ginstens -ginster -ginsterna -ginsternas -ginsters -gipsa -gipsad -gipsade -gipsades -gipsar -gipsas -gipsat -gipsats -gipyr -gipyren -gipyrens -gir -gira -girade -giraff -giraffen -giraffens -giraffer -girafferna -giraffernas -giraffers -giraffs -girar -girarna -girarnas -girars -girat -giren -girens -girera -girerade -girerar -girerat -girering -gireringar -gireringarna -gireringarnas -gireringars -gireringen -gireringens -girerings -girig -giriga -girigare -girigas -girigast -girigaste -girige -giriges -girighet -girigheten -girighetens -girigt -giro -gironummer -gironummers -gironumren -gironumrens -gironumret -gironumrets -girot -girots -gissa -gissade -gissar -gissat -gissning -gissningar -gissningarna -gissningarnas -gissningars -gissningen -gissningens -gissnings -gissningsvis -gitarr -gitarren -gitarrens -gitarrer -gitarrerna -gitarrernas -gitarrers -giv -giva -givakt -givande -givare -givaren -givarens -givares -givarna -givarnas -givas -give -given -giver -gives -givet -givetvis -givit -givits -givna -gjord -gjorda -gjorde -gjordes -gjort -gjorts -gjut -gjuta -gjutas -gjuten -gjuter -gjutes -gjutet -gjutit -gjutits -gjutna -gjuts -gnabbades -gnabbas -gnabbats -gnaga -gnagare -gnagaren -gnagarens -gnagares -gnagarna -gnagarnas -gnagde -gnager -gnagt -gnarp -gnarps -gned -gneds -gnesta -gnestas -gnid -gnida -gnidas -gnider -gnidit -gnidits -gnids -gnista -gnistan -gnistans -gnistor -gnistorna -gnistornas -gnistors -gnistra -gnistrade -gnistrande -gnistrandet -gnistrandets -gnistrar -gnistrat -gno -gnodde -gnoddes -gnom -gnomen -gnomens -gnomer -gnomerna -gnomernas -gnomers -gnoms -gnor -gnos -gnott -gnotts -gnu -gnuer -gnuerna -gnuernas -gnuers -gnugga -gnuggad -gnuggade -gnuggades -gnuggar -gnuggas -gnuggat -gnuggats -gnun -gnuns -gnus -gnutta -gnuttan -gnuttans -gnuttas -gnuttor -gnuttorna -gnuttornas -gnuttors -gny -gnydde -gnyddes -gnyende -gnyr -gnys -gnytt -gnytts -god -goda -godan -godare -godas -godast -godaste -godbit -godbitar -godbitarna -godbitarnas -godbitars -godbiten -godbitens -godbits -goddag -gode -godes -godhet -godheten -godhetens -godhets -goding -godingar -godingarna -godingarnas -godingars -godingen -godingens -godings -godis -godiset -godisets -godmorgon -godnatt -godo -gods -godsen -godsens -godset -godsets -godsint -godsinta -godta -godtagbar -godtagbara -godtagbart -godtagit -godtagits -godtar -godtas -godtog -godtogs -godtycke -gom -gommar -gommarna -gommarnas -gommars -gommen -gommens -gordisk -gordiska -gordiskt -gorma -gormade -gormades -gormande -gormandet -gormandets -gormar -gormare -gormaren -gormarens -gormares -gormarna -gormarnas -gormas -gormat -gormats -gossar -gossarna -gossarnas -gossars -gosse -gossen -gossens -gosses -got -goter -goterna -goternas -goters -gotik -gotiken -gotikens -gotisk -gotiska -gotiskt -gott -gotta -gottade -gottar -gottat -grabb -grabba -grabbade -grabbar -grabbarna -grabbarnas -grabbars -grabbat -grabben -grabbens -grabbs -grace -gracen -gracens -gracer -gracerna -gracernas -gracers -grad -gradbeteckning -gradbeteckningar -gradbeteckningarna -gradbeteckningarnas -gradbeteckningars -gradbeteckningen -gradbeteckningens -gradbetecknings -graden -gradens -grader -gradera -graderad -graderade -graderades -graderar -graderat -graderats -gradering -graderingar -graderingarna -graderingarnas -graderingars -graderingen -graderingens -graderings -graderna -gradernas -graders -grads -gradvis -graf -grafen -grafens -grafer -graferna -grafernas -grafers -grafik -grafiken -grafikens -grafiker -grafikern -grafikerna -grafikernas -grafikerns -grafikers -grafisk -grafiska -grafiskt -grafit -grafiten -grafitens -gram -grammatik -grammatiken -grammatikens -grammatisk -grammatiska -grammatiskt -grammen -grammens -grammet -grammets -grammofon -grammofonen -grammofonens -grammofoner -grammofonerna -grammofonernas -grammofoners -grammofons -grammofonskiva -grammofonskivan -grammofonskivans -grammofonskivas -grams -gramse -gran -granar -granarna -granarnas -granars -granat -granaten -granatens -granater -granaterna -granaternas -granaters -grand -grandet -grandets -grandios -grandiosa -grandiosare -grandiosast -grandiosaste -grandiost -granen -granens -graninge -graninges -granit -graniten -granitens -grann -granna -grannar -grannare -grannarna -grannarnas -grannars -grannast -grannaste -granne -grannen -grannens -grannes -grannskap -grannskapet -grannskapets -grannstaten -grannstatens -granska -granskad -granskade -granskades -granskande -granskandet -granskandets -granskar -granskare -granskaren -granskarens -granskares -granskarna -granskarnas -granskas -granskat -granskats -granskning -granskningar -granskningarna -granskningarnas -granskningars -granskningen -granskningens -gransknings -grant -grassera -grasserade -grasserande -grasserar -grasserat -gratis -grattis -grav -grava -gravad -gravade -gravar -gravarna -gravarnas -gravars -gravat -graven -gravens -gravera -graverad -graverade -graverades -graverar -graveras -graverat -graverats -gravid -gravida -graviditet -graviditeten -graviditetens -graviditeter -graviditeterna -graviditeternas -graviditeters -graviditets -gravitation -gravitationen -gravitationens -gravitations -gravs -gravsten -gravstenar -gravstenarna -gravstenarnas -gravstenars -gravstenen -gravstenens -gravt -gravyr -gravyren -gravyrens -gravyrer -gravyrerna -gravyrernas -gravyrers -gravyrs -grebbestad -grebbestads -gregoriansk -gregorianska -gregorianskt -greja -grejad -grejade -grejades -grejar -grejas -grejat -grejats -grek -greken -grekens -greker -grekerna -grekernas -grekers -grekisk -grekiska -grekiskan -grekiskans -grekiske -grekiskor -grekiskorna -grekiskornas -grekiskors -grekiskt -gren -grena -grenada -grenadas -grenade -grenar -grenarna -grenarnas -grenars -grenat -grenen -grenens -grens -grep -grepar -greparna -greparnas -grepars -grepe -grepen -grepens -grepp -greppa -greppade -greppar -greppat -greppbar -greppbara -greppbart -greppen -greppens -greppet -greppets -grepps -greps -greta -gretas -grevar -grevarna -grevarnas -grevars -greve -greven -grevens -greves -grevinna -grevinnan -grevinnans -grevinnas -grevinnor -grevinnorna -grevinnornas -grevinnors -grift -griften -griftens -grifter -grifterna -grifternas -grifters -grifts -grimas -grimasen -grimasens -grimaser -grimasera -grimaserade -grimaserande -grimaserar -grimaserat -grimaserna -grimasernas -grimasers -grimma -grimman -grimmans -grimmas -grimmor -grimmorna -grimmornas -grimmors -grimstorp -grimstorps -grin -grina -grinade -grinades -grinande -grinandet -grinandets -grinar -grinas -grinat -grinats -grind -grindar -grindarna -grindarnas -grindars -grinden -grindens -grinet -grinets -grinig -griniga -grinigare -grinigast -grinigaste -grinigt -grip -gripa -gripande -gripanden -gripandena -gripandenas -gripandens -gripandes -gripandet -gripandets -gripare -griparen -griparens -gripares -griparna -griparnas -gripas -gripen -griper -gripes -gripet -gripit -gripits -gripna -grips -gris -grisar -grisarna -grisarnas -grisars -grisen -grisens -gro -grobian -grobianen -grobianens -grobianer -grobianerna -grobianernas -grobianers -grobians -groda -grodan -grodans -grodd -groddar -groddarna -groddarnas -groddars -grodde -grodden -groddens -groddes -grodor -grodorna -grodornas -grodors -groende -grogg -groggar -groggarna -groggarnas -groggars -groggen -groggens -grogrund -grogrunden -grogrundens -grogrunder -grogrunderna -grogrundernas -grogrunders -grop -gropar -groparna -groparnas -gropars -gropen -gropens -gropig -gropiga -gropigare -gropigast -gropigaste -gropigt -gror -gros -gross -grosset -grossets -grossist -grossisten -grossistens -grossister -grossisterna -grossisternas -grossisters -grotesk -groteska -groteskare -groteskast -groteskaste -groteskt -grott -grotta -grottan -grottans -grottor -grottorna -grottornas -grottors -grotts -grov -grova -grove -grovkornig -grovkorniga -grovkornigare -grovkornigast -grovkornigaste -grovkornigt -grovt -grums -grumset -grumsets -grund -grunda -grundad -grundade -grundades -grundande -grundandet -grundandets -grundar -grundare -grundaren -grundarens -grundares -grundarna -grundarnas -grundas -grundast -grundaste -grundat -grundats -grundbok -grundboken -grundbokens -grunden -grundens -grunder -grunderna -grundernas -grunders -grundet -grundets -grundmurad -grundmurade -grundmurat -grundritning -grundritningar -grundritningarna -grundritningarnas -grundritningars -grundritningen -grundritningens -grundritnings -grundsats -grundsatsen -grundsatsens -grundsatser -grundsatserna -grundsatsernas -grundsatsers -grundstomme -grundstommen -grundstommens -grundsund -grundsunds -grundtext -grundtexter -grundtexterna -grundtexternas -grundtexters -grundtrygghet -grundtryggheten -grundtrygghetens -grundtrygghets -grunna -grunnade -grunnar -grunnat -grunt -grupp -grupparbete -grupparbeten -grupparbetena -grupparbetenas -grupparbetens -grupparbetes -grupparbetet -grupparbetets -gruppen -gruppens -grupper -gruppera -grupperad -grupperade -grupperades -grupperar -grupperas -grupperat -grupperats -gruppering -grupperingar -grupperingarna -grupperingarnas -grupperingars -grupperingen -grupperingens -grupperings -grupperna -gruppernas -gruppers -grupprabatt -grupprabatter -grupprabatterna -grupprabatternas -grupprabatters -grupps -gruppvis -grus -grusa -grusad -grusade -grusades -grusande -grusandet -grusandets -grusar -grusas -grusat -grusats -grusen -grusens -gruset -grusets -grustag -grustagen -grustagens -grustaget -grustagets -grustags -gruva -gruvade -gruvan -gruvans -gruvar -gruvas -gruvat -gruvor -gruvorna -gruvornas -gruvors -gry -grycksbo -grycksbos -grydde -gryddes -gryende -grym -grymhet -grymheten -grymhetens -grymheter -grymheterna -grymheternas -grymheters -grymhets -grymma -grymmare -grymmas -grymmast -grymmaste -grymme -grymmes -grymt -grymta -grymtade -grymtades -grymtande -grymtandet -grymtandets -grymtar -grymtas -grymtat -grymtats -grymtning -grymtningar -grymtningarna -grymtningarnas -grymtningars -grymtningen -grymtningens -grymtnings -gryn -grynen -grynens -grynet -grynets -grynig -gryniga -grynigare -grynigast -grynigaste -grynigt -gryning -gryningar -gryningarna -gryningarnas -gryningars -gryningen -gryningens -grynings -gryns -gryr -grys -gryt -gryta -grytan -grytans -grytas -grytbit -grytbitar -grytbitarna -grytbitarnas -grytbitars -grytbiten -grytbitens -gryten -grytens -grytet -grytets -grythyttan -grythyttans -grytor -grytorna -grytornas -grytors -gryts -grytt -grytts -gubbar -gubbarna -gubbarnas -gubbars -gubbe -gubben -gubbens -gubbes -gud -gudaboning -gudaboningar -gudaboningarna -gudaboningarnas -gudaboningars -gudaboningen -gudaboningens -gudabonings -gudagod -gudagoda -gudagott -gudar -gudarna -gudarnas -gudars -guden -gudens -gudfruktig -gudfruktiga -gudfruktigt -gudhem -gudhems -gudinna -gudinnan -gudinnans -gudinnor -gudinnorna -gudinnornas -gudinnors -gudmundsson -gudmundssons -gudom -gudomen -gudomens -gudrun -gudruns -guds -gudsfruktan -gudsfruktans -guida -guidade -guidar -guidat -guide -guiden -guidens -guider -guiderna -guidernas -guiders -guinea -guineas -gumma -gumman -gummans -gummas -gummi -gummin -gummins -gummisnodd -gummisnoddar -gummisnoddarna -gummisnoddarnas -gummisnoddars -gummisnodden -gummisnoddens -gummit -gummits -gummor -gummorna -gummornas -gummors -gump -gumpar -gumparna -gumparnas -gumpars -gumpen -gumpens -gun -gunborg -gunborgs -gunga -gungad -gungade -gungades -gungan -gungande -gungandet -gungandets -gungans -gungar -gungas -gungat -gungats -gungor -gungorna -gungornas -gungors -gunnar -gunnarn -gunnarns -gunnars -gunnarsbyn -gunnarsbyns -gunnarskog -gunnarskogs -gunnebo -gunnebos -guns -gunst -gunsten -gunstens -gunstig -gunstiga -gunstigt -gunvor -gunvors -gupp -guppet -guppets -gurka -gurkan -gurkans -gurkas -gurkmeja -gurkmejan -gurkmejans -gurkor -gurkorna -gurkornas -gurkors -guru -guruer -guruerna -guruernas -guruers -gurun -guruns -gurus -gustaf -gustafs -gustav -gustavian -gustavianen -gustavianens -gustavianer -gustavianerna -gustavianernas -gustavianers -gustavians -gustaviansk -gustavianska -gustavianskt -gustavs -gustavsberg -gustavsbergs -gustavsfors -gustavsson -gustavssons -gusum -gusums -guvernant -guvernanten -guvernantens -guvernanter -guvernanterna -guvernanternas -guvernanters -guvernants -guyana -guyanas -gymnasier -gymnasierna -gymnasiernas -gymnasiers -gymnasiet -gymnasiets -gymnasist -gymnasisten -gymnasistens -gymnasister -gymnasisterna -gymnasisternas -gymnasisters -gymnasium -gymnasiums -gymnast -gymnasten -gymnastens -gymnaster -gymnasterna -gymnasternas -gymnasters -gymnastik -gymnastiken -gymnastikens -gymnasts -gynna -gynnad -gynnade -gynnades -gynnar -gynnare -gynnaren -gynnarens -gynnares -gynnarna -gynnarnas -gynnas -gynnat -gynnats -gynnsam -gynnsamma -gynnsammare -gynnsammast -gynnsammaste -gynnsamt -gysinge -gysinges -gytter -gytters -gyttja -gyttjan -gyttjans -gyttjas -gyttorp -gyttorps -gyttren -gyttrens -gyttret -gyttrets -habo -habos -hack -hacka -hackad -hackade -hackades -hackan -hackans -hackar -hackas -hackat -hackats -hacken -hackens -hacket -hackets -hackig -hackiga -hackigt -hackor -hackorna -hackornas -hackors -hackspett -hackspettar -hackspettarna -hackspettarnas -hackspettars -hackspetten -hackspettens -hackspetts -hade -haffa -haffad -haffade -haffades -haffar -haffas -haffat -haffats -hafs -hafset -hafsets -hafsig -hafsiga -hafsigare -hafsigast -hafsigaste -hafsigt -haft -hagar -hagarna -hagarnas -hagars -hage -hagen -hagens -hages -hagfors -hagmark -hagmarken -hagmarkens -hagmarker -hagmarkerna -hagmarkernas -hagmarkers -hagmarks -hagtorn -hagtornar -hagtornarna -hagtornarnas -hagtornars -hagtornen -hagtornens -hagtorns -haiti -haitis -haj -haja -hajade -hajar -hajarna -hajarnas -hajars -hajat -hajen -hajens -hajom -hajoms -hajs -haka -hakad -hakade -hakades -hakan -hakans -hakar -hakarna -hakarnas -hakars -hakas -hakat -hakats -hake -haken -hakens -hakes -hakkas -hakkors -hakkorsen -hakkorsens -hakkorset -hakkorsets -hakor -hakorna -hakornas -hakors -hakparentes -hakparentesen -hakparentesens -hakparenteser -hakparenteserna -hakparentesernas -hakparentesers -hambraeus -hamburg -hamburgare -hamburgaren -hamburgarens -hamburgares -hamburgarna -hamburgarnas -hamburgerrestaurang -hamburgerrestaurangen -hamburgerrestaurangens -hamburgs -hamburgsund -hamburgsunds -hammar -hammarby -hammarbys -hammare -hammaren -hammarens -hammares -hammars -hammarstrand -hammarstrands -hammock -hammockar -hammockarna -hammockarnas -hammockars -hammocken -hammockens -hammocks -hamn -hamna -hamnade -hamnar -hamnarna -hamnarnas -hamnars -hamnat -hamneda -hamnedas -hamnen -hamnens -hamns -hampa -hampan -hampans -hamra -hamrade -hamrades -hamrar -hamras -hamrat -hamrats -hamster -hamstern -hamsterns -hamstra -hamstrade -hamstrar -hamstrarna -hamstrarnas -hamstrars -hamstrat -han -hanar -hanarna -hanarnas -hanars -hanaskog -hanaskogs -hand -handa -handarbete -handarbeten -handarbetena -handarbetenas -handarbetens -handarbetes -handarbetet -handarbetets -handboja -handbojan -handbojans -handbojas -handbojor -handbojorna -handbojornas -handbojors -handbok -handboken -handbokens -handboks -handdriven -handdrivet -handdrivna -handduk -handdukar -handdukarna -handdukarnas -handdukars -handduken -handdukens -handduks -handen -handens -handfast -handfasta -handfat -handfaten -handfatens -handfatet -handfatets -handfats -handgranat -handgranaten -handgranatens -handgranater -handgranaterna -handgranaternas -handgranaters -handgranats -handgrepp -handgreppen -handgreppens -handgreppet -handgreppets -handgrepps -handha -handhar -handhas -handikapp -handikappad -handikappade -handikappades -handikappat -handikappen -handikappens -handikappet -handikappets -handikapps -handjur -handjuren -handjurens -handjuret -handjurets -handjurs -hands -handskades -handskar -handskarna -handskarnas -handskars -handskas -handskats -handske -handsken -handskens -handskes -handskrift -handskriften -handskriftens -handskrifter -handskrifterna -handskrifternas -handskrifters -handskrifts -handskriven -handskrivet -handskrivna -handtag -handtagen -handtagens -handtaget -handtagets -handtags -hane -hanen -hanens -hanes -hangar -hangaren -hangarens -hangarer -hangarerna -hangarernas -hangarers -hangars -haninge -haninges -hanka -hankade -hankar -hankat -hankontakt -hankontakten -hankontaktens -hankontakter -hankontakterna -hankontakternas -hankontakters -hankontakts -hann -hanna -hannar -hannarna -hannarnas -hannars -hannas -hanne -hannen -hannens -hannes -hanns -hanrej -hanrejen -hanrejens -hanrejs -hans -hansson -hanssons -hantera -hanterad -hanterade -hanterades -hanterande -hanterandet -hanterandets -hanterar -hanterare -hanteraren -hanterarens -hanterares -hanterarna -hanterarnas -hanteras -hanterat -hanterats -hantering -hanteringar -hanteringarna -hanteringarnas -hanteringars -hanteringen -hanteringens -hanterings -hantverk -hantverkare -hantverkaren -hantverkarens -hantverkares -hantverkarna -hantverkarnas -hantverken -hantverkens -hantverket -hantverkets -hantverks -haparanda -haparandas -happening -happeningar -happeningarna -happeningarnas -happeningars -happeningen -happeningens -happenings -har -harads -harakiri -harakirin -harakirins -harakirit -harakirits -harang -harangen -harangens -haranger -harangerna -harangernas -harangers -harangs -harar -hararna -hararnas -harars -harbo -harbos -hare -harem -haremet -haremets -harems -haren -harens -hares -harestad -harestads -hargshamn -hargshamns -harm -harma -harmad -harmade -harmades -harmar -harmas -harmat -harmats -harmen -harmens -harmoni -harmonier -harmoniera -harmonierade -harmonierar -harmonierat -harmonierna -harmoniernas -harmoniers -harmonin -harmonins -harmonis -harmonisera -harmoniserade -harmoniserar -harmoniserat -harmonisk -harmoniska -harmoniske -harmoniskt -harms -harmsen -harmset -harmsna -harnesk -harnesken -harneskens -harnesket -harneskets -harnesks -harpa -harpan -harpans -harpas -harpor -harporna -harpornas -harpors -harriet -harriets -harry -harrys -hart -harts -hartser -hartserna -hartsernas -hartsers -hartset -hartsets -harv -harva -harvade -harvar -harvard -harvarna -harvarnas -harvars -harvat -harven -harvens -harvs -hasa -hasade -hasande -hasar -hasard -hasarden -hasardens -hasat -hasch -haschen -haschens -haschet -haschets -haschisch -haschischen -haschischens -haschischet -haschischets -hasor -hasorna -hasornas -hasp -haspar -hasparna -hasparnas -haspars -haspen -haspens -hasse -hasses -hast -hasta -hastad -hastade -hastades -hastande -hastandet -hastandets -hastar -hastas -hastat -hastats -hastig -hastiga -hastigare -hastigast -hastigaste -hastige -hastighet -hastigheten -hastighetens -hastigheter -hastigheterna -hastigheternas -hastigheters -hastigt -hastverk -hastverken -hastverkens -hastverket -hastverkets -hastverks -hat -hata -hatad -hatade -hatades -hatande -hatar -hatare -hataren -hatarens -hatares -hatarna -hatarnas -hatas -hatat -hatats -hatet -hatets -hatisk -hatiska -hatiskt -hatt -hatta -hattade -hattar -hattarna -hattarnas -hattars -hattat -hatten -hattens -hatts -haussa -haussade -haussades -haussar -haussas -haussat -haussats -hausse -haussen -haussens -hav -hava -havande -havdhem -havdhems -haven -havens -haverera -havererade -havererar -havererat -haveri -haverier -haverierna -haveriernas -haveriers -haveriet -haveriets -haveris -havet -havets -havre -havren -havrens -havres -havs -havsbad -havsbaden -havsbadens -havsbadet -havsbadets -havsbotten -havsbottnar -havsbottnarna -havsbottnarnas -havsbottnars -havsbottnen -havsbottnens -havstenssund -havstenssunds -havsvatten -havsvattnet -havsvattnets -havsyta -havsytan -havsytans -heat -heaten -heatens -heatet -heatets -heberg -hebergs -hebreisk -hebreiska -hebreiskan -hebreiskans -hebreiske -hebreiskt -heby -hebys -hed -hedar -hedared -hedareds -hedarna -hedarnas -hedars -hede -hedekas -hedemora -hedemoras -heden -hedens -heder -hedern -hederns -heders -hedersam -hedersamma -hedersammare -hedersammast -hedersammaste -hedersamt -hedersman -hedersmannen -hedersmannens -hedersmans -hedes -hedesunda -hedesundas -hedet -hedna -hedning -hedningar -hedningarna -hedningarnas -hedningars -hedningen -hedningens -hednings -hednisk -hedniska -hedniskt -hedonism -hedonismen -hedonismens -hedra -hedrad -hedrade -hedrades -hedrande -hedrandet -hedrandets -hedrar -hedras -hedrat -hedrats -heds -hegemoni -hegemonien -hegemoniens -hegemonin -hegemonins -hej -heja -hejad -hejade -hejades -hejar -hejas -hejat -hejats -hejd -hejda -hejdad -hejdade -hejdades -hejdar -hejdas -hejdat -hejdats -hejduk -hejdukar -hejdukarna -hejdukarnas -hejdukars -hejduken -hejdukens -hejduks -hejsan -hektar -hektaren -hektarens -hektaret -hektarets -hektisk -hektiska -hektiskt -hekto -hekton -hektona -hektonas -hektons -hektos -hektot -hektots -hem -hemavan -hemavans -hemby -hembygd -hembygden -hembygdens -hembygds -hembyn -hembyns -hembys -hemgift -hemgiften -hemgiftens -hemgifts -hemgjord -hemgjorda -hemgjort -hemkommen -hemkommet -hemkomna -hemkomne -hemkomst -hemkomsten -hemkomstens -hemkomster -hemkomsterna -hemkomsternas -hemkomsters -hemma -hemmabruk -hemmafru -hemmafruar -hemmafruarna -hemmafruarnas -hemmafruars -hemmafrun -hemmafruns -hemmafrus -hemmagjord -hemmagjorda -hemmagjort -hemmamarknad -hemmamarknaden -hemmamarknadens -hemmamarknader -hemmamarknaderna -hemmamarknadernas -hemmamarknaders -hemmamatch -hemmamatchen -hemmamatchens -hemmamatcher -hemmamatcherna -hemmamatchernas -hemmamatchers -hemman -hemmanen -hemmanens -hemmanet -hemmanets -hemmans -hemmastadd -hemmastadda -hemmastatt -hemmen -hemmens -hemmet -hemmets -hemmingsmark -hemmingsmarks -hemort -hemorten -hemortens -hemorts -hemresa -hemresan -hemresans -hemresas -hemresor -hemresorna -hemresornas -hemresors -hems -hemse -hemses -hemsk -hemska -hemskare -hemskast -hemskaste -hemskickad -hemskickade -hemskickat -hemskt -hemstad -hemstaden -hemstadens -hemstads -henne -hennes -henning -hennings -henrik -henriks -henriksson -henrikssons -henry -henrys -hepatit -hepatiten -hepatitens -hepatiter -hepatiterna -hepatiternas -hepatiters -hepatits -herbarier -herbarierna -herbariernas -herbariers -herbariet -herbariets -herbarium -herbert -herberts -hercegovina -hercegovinas -herdar -herdarna -herdarnas -herdars -herde -herden -herdens -herdes -herdinna -herdinnan -herdinnans -herdinnas -herdinnor -herdinnorna -herdinnornas -herdinnors -hermafrodit -hermafroditen -hermafroditens -hermafroditer -hermafroditerna -hermafroditernas -hermafroditers -hermafrodits -hermetisk -hermetiska -hermetiskt -heroer -heroerna -heroernas -heroers -heroin -heroinet -heroinets -heroinist -heroinisten -heroinistens -heroins -heroisk -heroiska -heroiske -heroiskt -heroism -heroismen -heroismens -herpes -herr -herrar -herrarna -herrarnas -herrars -herre -herren -herrens -herres -hertig -hertigar -hertigarna -hertigarnas -hertigars -hertigen -hertigens -hertigs -hertz -hes -hesa -hesare -hesast -hesaste -hesperisk -hesperiska -hesperiskt -hest -hestra -hestras -het -heta -hetare -hetast -hetaste -hetat -heter -heterogen -heterogena -heterogent -hets -hetsa -hetsad -hetsade -hetsades -hetsar -hetsare -hetsaren -hetsarens -hetsares -hetsarna -hetsarnas -hetsas -hetsat -hetsats -hetsen -hetsens -hetsig -hetsiga -hetsigare -hetsigas -hetsigast -hetsigaste -hetsige -hetsiges -hetsigt -hett -hetta -hettade -hettan -hettans -hettar -hettas -hettat -hette -hexaeder -hexaedern -hexaederns -hexaeders -hexaedrar -hexaedrarna -hexaedrarnas -hexaedrars -hexagon -hexagonen -hexagonens -hexagoner -hexagonerna -hexagonernas -hexagoners -hexagons -hexameter -hexametern -hexameterns -hicka -hickade -hickan -hickande -hickandet -hickandets -hickans -hickar -hickat -hickning -hickningar -hickningarna -hickningarnas -hickningars -hickningen -hickningens -hicknings -hierarki -hierarkien -hierarkiens -hierarkier -hierarkierna -hierarkiernas -hierarkiers -hierarkin -hierarkins -hierarkisk -hierarkiska -hierarkiskt -hind -hindar -hindarna -hindarnas -hindars -hinden -hindens -hinder -hinders -hindra -hindrad -hindrade -hindrades -hindrande -hindrandet -hindrandets -hindrar -hindras -hindrat -hindrats -hindren -hindrens -hindret -hindrets -hinds -hindu -hinduen -hinduens -hinduer -hinduerna -hinduernas -hinduers -hinduism -hinduismen -hinduismens -hindun -hinduns -hindus -hingst -hingstar -hingstarna -hingstarnas -hingstars -hingsten -hingstens -hingsts -hink -hinkar -hinkarna -hinkarnas -hinkars -hinken -hinkens -hinks -hinna -hinnan -hinnans -hinnas -hinner -hinnor -hinnorna -hinnornas -hinnors -hinns -hipp -hippa -hippie -hippien -hippiens -hippies -hippt -hirs -hirsen -hirsens -hisings -hisna -hisnade -hisnades -hisnande -hisnar -hisnas -hisnat -hisnats -hiss -hissa -hissad -hissade -hissades -hissar -hissarna -hissarnas -hissars -hissas -hissat -hissats -hissen -hissens -histogram -histogrammen -histogrammens -histogrammet -histogrammets -histograms -historia -historian -historians -historias -historien -historiens -historier -historierna -historiernas -historiers -historik -historiken -historikens -historiker -historikern -historikerna -historikernas -historikerns -historikers -historiks -historisk -historiska -historiske -historiskt -hit -hitin -hitkommen -hitkommet -hitkomna -hitta -hittad -hittade -hittades -hittar -hittas -hittat -hittats -hittebarn -hittebarnen -hittebarnens -hittebarnet -hittebarnets -hittebarns -hittegods -hittegodset -hittegodsets -hiva -hivad -hivade -hivades -hivar -hivat -hivats -hjo -hjon -hjonen -hjonens -hjonet -hjonets -hjons -hjord -hjordar -hjordarna -hjordarnas -hjordars -hjorden -hjordens -hjords -hjort -hjortar -hjortarna -hjortarnas -hjortars -hjorted -hjorteds -hjorten -hjortens -hjortkvarn -hjortkvarns -hjortron -hjortronen -hjortronens -hjortronet -hjortronets -hjorts -hjos -hoar -hoarna -hoarnas -hoars -hobby -hobbyn -hobbyns -hoby -hobys -hockey -hockeyn -hockeyns -hofors -hojta -hojtade -hojtades -hojtande -hojtar -hojtas -hojtat -hojtats -hok -hoks -homogen -homogena -homogenare -homogenast -homogenaste -homogenitet -homogeniteten -homogenitetens -homogenitets -homogent -hon -hona -honan -honans -honas -honduras -honkontakt -honkontakten -honkontaktens -honkontakter -honkontakterna -honkontakternas -honkontakters -honkontakts -honom -honor -honorar -honoraren -honorarens -honoraret -honorarets -honorars -honorna -honornas -honors -hons -honung -honungen -honungens -honungs -hop -hopa -hopad -hopade -hopades -hopar -hoparna -hoparnas -hopars -hopas -hopat -hopats -hopen -hopens -hopfogad -hopfogade -hopfogat -hopknipen -hopknipet -hopknipna -hopknuten -hopknutet -hopknutna -hopkok -hopkoket -hopkokets -hopkrupen -hopkrupet -hopkrupna -hopkrupne -hopp -hoppa -hoppade -hoppades -hoppar -hoppare -hopparen -hopparens -hoppares -hopparna -hopparnas -hoppas -hoppat -hoppats -hoppen -hoppens -hoppet -hoppets -hoppjerka -hoppjerkan -hoppjerkans -hoppjerkor -hoppjerkorna -hoppjerkornas -hoppjerkors -hopps -hoppsan -hopsjunken -hopsjunket -hopsjunkna -hopsydd -hopsydda -hopsytt -hoptagning -hoptagningar -hoptagningarna -hoptagningarnas -hoptagningars -hoptagningen -hoptagningens -hoptagnings -hor -hord -horda -hordas -horden -hordens -horder -horderna -hordernas -horders -hords -horet -horets -horisont -horisonten -horisontens -horisonter -horisonterna -horisonternas -horisonters -horisonts -hormon -hormoner -hormonerna -hormonernas -hormoners -hormonet -hormonets -hormons -horn -hornen -hornens -hornet -hornets -horney -hornmyr -hornmyrs -horns -horoskop -horoskopen -horoskopens -horoskopet -horoskopets -horoskops -horred -horreds -hos -hosta -hostade -hostan -hostande -hostans -hostar -hostas -hostat -hostmedicin -hostmedicinen -hostmedicinens -hostning -hostningar -hostningarna -hostningarnas -hostningars -hostningen -hostningens -hostnings -hot -hota -hotad -hotade -hotades -hotande -hotandet -hotandets -hotar -hotas -hotat -hotats -hoten -hotens -hotet -hotets -hoting -hotings -hots -hottentott -hottentotten -hottentottens -hottentotter -hottentotterna -hottentotternas -hottentotters -hottentotts -hov -hova -hovar -hovarna -hovarnas -hovars -hovas -hoven -hovens -hovet -hovets -hovmantorp -hovmantorps -hovs -hovsam -hovsamma -hovsammare -hovsammast -hovsammaste -hovsamt -hud -hudar -hudarna -hudarnas -hudars -huddinge -huddinges -huddungeby -huddungebys -huden -hudens -huds -hug -hugad -hugade -hugat -hugen -hugens -hugg -hugga -huggare -huggaren -huggarens -huggares -huggarna -huggarnas -huggen -huggens -hugger -hugget -huggets -huggit -huggits -huggna -huggorm -huggormar -huggormarna -huggormarnas -huggormars -huggormen -huggormens -huggorms -huggs -hugnad -hugnaden -hugnadens -hugo -hugos -hugskott -hugskotten -hugskottens -hugskottet -hugskottets -hugskotts -huj -huk -huka -hukad -hukade -hukades -hukande -hukandet -hukandets -hukar -hukas -hukat -hukats -hum -human -humana -humanare -humanast -humanaste -humane -humaniora -humanisera -humaniserad -humaniserade -humaniserades -humaniserar -humaniseras -humaniserat -humaniserats -humanism -humanismen -humanismens -humanist -humanisten -humanistens -humanister -humanisterna -humanisternas -humanisters -humanistisk -humanistiska -humanistiskt -humanitet -humaniteten -humanitetens -humanitets -humant -humbug -humbugar -humbugarna -humbugarnas -humbugars -humbugen -humbugens -humbugs -humma -hummade -hummande -hummandet -hummandets -hummar -hummat -hummer -hummern -hummerns -humor -humorist -humoristen -humoristens -humorister -humoristerna -humoristernas -humoristers -humoristisk -humoristiska -humoristiskt -humorn -humorns -humors -humrar -humrarna -humrarnas -humrars -hund -hundar -hundarna -hundarnas -hundars -hunden -hundens -hundra -hundrade -hundraprocentig -hundraprocentiga -hundraprocentigt -hunds -hunger -hungern -hungerns -hungers -hungra -hungrade -hungrande -hungrar -hungrat -hungrig -hungriga -hungrigare -hungrigast -hungrigaste -hungrige -hungrigt -hunna -hunnebostrand -hunnebostrands -hunnen -hunnet -hunnit -hunnits -hunsa -hunsad -hunsade -hunsades -hunsar -hunsas -hunsat -hunsats -hur -hurdan -hurra -hurrade -hurrades -hurrande -hurrandet -hurrandets -hurrar -hurras -hurrat -hurrats -hurtig -hurtiga -hurtigt -hurts -hurtsar -hurtsarna -hurtsarnas -hurtsars -hurtsen -hurtsens -huru -hurudan -hurudana -hurusom -huruvida -hus -husar -husaren -husarens -husarer -husarerna -husarernas -husarers -husbonde -husbonden -husbondens -husbondes -husby -husbys -husdjur -husdjuren -husdjurens -husdjuret -husdjurets -husdjurs -huse -husen -husens -husera -huserade -huserar -huserat -huset -husets -huskvarna -huskvarnas -husmanskost -husmanskosten -husmanskostens -husmoder -husmodern -husmoderns -husmoders -husrannsakan -husrannsakans -husrum -hussar -hussarna -hussarnas -hussars -husse -hussen -hussens -husses -hustru -hustrun -hustruns -hustrur -hustrurna -hustrurnas -hustrurs -hustrus -husum -husums -husvagn -husvagnar -husvagnarna -husvagnarnas -husvagnars -husvagnen -husvagnens -husvagns -hut -huta -hutade -hutar -hutat -huttra -huttrade -huttrades -huttrande -huttrar -huttras -huttrat -huttrats -huv -huva -huvan -huvans -huvar -huvarna -huvarnas -huvars -huvas -huven -huvens -huvor -huvorna -huvornas -huvors -huvud -huvudansvarig -huvudansvariga -huvudansvarigt -huvuden -huvudena -huvudenas -huvudens -huvudet -huvudets -huvuds -huvudsak -huvudsaken -huvudsakens -huvudsaker -huvudsakerna -huvudsakernas -huvudsakers -huvudstad -huvudstaden -huvudstadens -huvudstads -huvudstupa -hybrid -hybriden -hybridens -hybrider -hybriderna -hybridernas -hybriders -hybrids -hybris -hydda -hyddan -hyddans -hyddas -hyddor -hyddorna -hyddornas -hyddors -hydra -hydran -hydrans -hydras -hydrofon -hydrofonen -hydrofonens -hydrofoner -hydrofonerna -hydrofonernas -hydrofoners -hydror -hydrorna -hydrornas -hydrors -hyena -hyenan -hyenans -hyenas -hyenor -hyenorna -hyenornas -hyenors -hyfs -hyfsa -hyfsad -hyfsade -hyfsades -hyfsar -hyfsas -hyfsat -hyfsats -hygge -hyggen -hyggena -hyggenas -hyggens -hygges -hygget -hyggets -hygien -hygienen -hygienens -hygiens -hygrometer -hygrometern -hygrometerns -hygrometers -hygrometrar -hygrometrarna -hygrometrarnas -hygrometrars -hymen -hymens -hymn -hymnen -hymnens -hymner -hymnerna -hymnernas -hymners -hymns -hyn -hynda -hyndan -hyndans -hyndas -hyndor -hyndorna -hyndornas -hyndors -hyns -hypnos -hypnosen -hypnosens -hypnotisera -hypnotiserad -hypnotiserade -hypnotiserades -hypnotiserande -hypnotiserar -hypnotiseras -hypnotiserat -hypnotiserats -hypnotisk -hypnotiska -hypnotiskt -hypokondriker -hypokondrikern -hypokondrikerna -hypokondrikernas -hypokondrikerns -hypokondrikers -hypokondrisk -hypokondriska -hypokondriskt -hypotes -hypotesen -hypotesens -hypoteser -hypoteserna -hypotesernas -hypotesers -hypotetisk -hypotetiska -hypotetiske -hypotetiskt -hyr -hyra -hyran -hyrans -hyras -hyrd -hyrda -hyrde -hyrdes -hyres -hyreshus -hyreshusen -hyreshusens -hyreshuset -hyreshusets -hyror -hyrorna -hyrornas -hyrors -hyrs -hyrt -hyrts -hys -hysa -hysas -hysch -hyser -hyses -hyss -hyssen -hyssens -hysset -hyssets -hyssna -hyssnas -hyst -hysta -hyste -hysteri -hysteriet -hysteriets -hysterin -hysterins -hysterisk -hysteriska -hysteriske -hysteriskt -hystes -hysts -hytt -hytta -hytten -hyttens -hytter -hytterna -hytternas -hytters -hytts -iaktta -iakttaga -iakttagande -iakttagandet -iakttagandets -iakttagare -iakttagaren -iakttagarens -iakttagares -iakttagarna -iakttagarnas -iakttagas -iakttagen -iakttages -iakttaget -iakttagit -iakttagits -iakttagna -iakttar -iakttas -iakttog -iakttogs -ian -ians -ibb -ibbs -ibidem -icing -icingen -icingens -icke -ida -idag -idar -idarna -idarnas -idars -idas -iddes -ide -idegran -idegranar -idegranarna -idegranarnas -idegranars -idegranen -idegranens -idegrans -iden -idens -identifiera -identifierad -identifierade -identifierades -identifierar -identifierare -identifieraren -identifierarens -identifierares -identifierarna -identifierarnas -identifieras -identifierat -identifierats -identifiering -identifieringar -identifieringarna -identifieringarnas -identifieringars -identifieringen -identifieringens -identifierings -identifikation -identifikationen -identifikationens -identifikationer -identifikationerna -identifikationernas -identifikationers -identifikations -identisk -identiska -identiskt -identitet -identiteten -identitetens -identiteter -identiteterna -identiteternas -identiteters -identitets -ides -idet -idets -idiom -idiomatisk -idiomatiska -idiomatiskt -idiomen -idiomens -idiomet -idiomets -idioms -idiosynkrasi -idiosynkrasier -idiosynkrasierna -idiosynkrasiernas -idiosynkrasiers -idiosynkrasin -idiosynkrasins -idiosynkrasis -idiot -idioten -idiotens -idioter -idioterna -idioternas -idioters -idioti -idiotien -idiotiens -idiotier -idiotierna -idiotiernas -idiotiers -idiotin -idiotins -idiotisk -idiotiska -idiotiskare -idiotiskast -idiotiskaste -idiotiskt -idiots -idka -idkad -idkade -idkades -idkande -idkandet -idkandets -idkar -idkare -idkaren -idkarens -idkares -idkarna -idkarnas -idkas -idkat -idkats -idkerberget -idkerbergets -idog -idoga -idogare -idogast -idogaste -idoge -idogt -idre -idres -idrott -idrotta -idrottade -idrottar -idrottare -idrottaren -idrottarens -idrottares -idrottarna -idrottarnas -idrottat -idrotten -idrottens -idrotter -idrotterna -idrotternas -idrotters -idrotts -ids -ifatt -ifred -igen -igenkorkad -igenkorkade -igenkorkat -igenom -iggesund -iggesunds -ignorans -ignoransen -ignoransens -ignorant -ignoranten -ignorantens -ignoranter -ignoranterna -ignoranternas -ignoranters -ignorera -ignorerad -ignorerade -ignorerades -ignorerar -ignoreras -ignorerat -ignorerats -ihop -ikapp -ikast -ikea -ikeas -ikon -ikonen -ikonens -ikoner -ikonerna -ikonernas -ikoners -ikons -ikraft -ikring -image -imagen -imagens -imitation -imitationen -imitationens -imitationer -imitationerna -imitationernas -imitationers -imitations -imitera -imiterad -imiterade -imiterades -imiterande -imiterar -imiteras -imiterat -imiterats -imma -immade -imman -immande -immanent -immanenta -immans -immar -immas -immat -immigrant -immigranten -immigrantens -immigranter -immigranterna -immigranternas -immigranters -immigrants -immigration -immigrationen -immigrationens -immigrations -immun -immuna -immunitet -immuniteten -immunitetens -immunitets -immunt -imorgon -impedans -impedansen -impedansens -imperativ -imperativa -imperativen -imperativens -imperativer -imperativerna -imperativernas -imperativers -imperativet -imperativets -imperativt -imperfekt -imperfektet -imperfektets -imperier -imperierna -imperiernas -imperiers -imperiet -imperiets -imperium -imperiums -imponera -imponerad -imponerade -imponerades -imponerande -imponerar -imponeras -imponerat -imponerats -import -importen -importens -importer -importera -importerad -importerade -importerades -importerande -importerar -importerat -importerats -importerna -importernas -importers -impotens -impotensen -impotensens -impotent -impotenta -impotente -improduktiv -improduktiva -improduktivt -improvisation -improvisationen -improvisationens -improvisationer -improvisationerna -improvisationernas -improvisationers -improvisations -improvisera -improviserad -improviserade -improviserades -improviserande -improviserar -improviseras -improviserat -improviserats -inackordering -inackorderingar -inackorderingarna -inackorderingarnas -inackorderingars -inackorderingen -inackorderingens -inackorderings -inaktiv -inaktiva -inaktivare -inaktivast -inaktivaste -inaktivitet -inaktiviteten -inaktivitetens -inaktivitets -inaktivt -inandades -inandas -inandats -inarbeta -inarbetad -inarbetade -inarbetades -inarbetar -inarbetas -inarbetat -inarbetats -inatt -inbaka -inbakad -inbakade -inbakades -inbakar -inbakas -inbakat -inbakats -inbegrep -inbegreps -inbegripa -inbegripande -inbegripas -inbegripen -inbegriper -inbegripet -inbegripit -inbegripits -inbegripna -inbegrips -inbesparad -inbesparade -inbesparat -inbesparing -inbesparingar -inbesparingarna -inbesparingarnas -inbesparingars -inbesparingen -inbesparingens -inbesparings -inbiten -inbitet -inbitna -inbitne -inbjud -inbjuda -inbjudan -inbjudande -inbjudare -inbjudaren -inbjudarens -inbjudares -inbjudarna -inbjudarnas -inbjudas -inbjuden -inbjuder -inbjudes -inbjudet -inbjudit -inbjudits -inbjudna -inbjudnas -inbjudne -inbjudnes -inbjudning -inbjudningar -inbjudningarna -inbjudningarnas -inbjudningars -inbjudningen -inbjudningens -inbjudnings -inbjuds -inbokad -inbokade -inbokat -inbringa -inbringad -inbringade -inbringades -inbringande -inbringar -inbringat -inbringats -inbromsning -inbromsningar -inbromsningarna -inbromsningarnas -inbromsningars -inbromsningen -inbromsningens -inbromsnings -inbrott -inbrotten -inbrottens -inbrottet -inbrottets -inbrotts -inbrutit -inbrutits -inbryt -inbryta -inbrytande -inbrytandet -inbrytandets -inbrytas -inbryter -inbrytning -inbrytningar -inbrytningarna -inbrytningarnas -inbrytningars -inbrytningen -inbrytningens -inbrytnings -inbryts -inbunden -inbundet -inbundna -inbundnare -inbundnast -inbundne -inburad -inburade -inburat -inbygg -inbygga -inbyggas -inbyggd -inbyggda -inbyggde -inbyggdes -inbygger -inbyggnad -inbyggnaden -inbyggnadens -inbyggs -inbyggt -inbyggts -inbyte -inbyten -inbytena -inbytenas -inbytens -inbytes -inbytet -inbytets -incest -incesten -incestens -incident -incidenten -incidentens -incidenter -incidenterna -incidenternas -incidenters -incitament -incitamenten -incitamentens -incitamentet -incitamentets -incitaments -indata -indatan -indatans -indatas -indefinit -indefinita -indentera -indenterad -indenterade -indenterades -indenterar -indenteras -indenterat -indenterats -indentering -indenteringar -indenteringarna -indenteringarnas -indenteringars -indenteringen -indenteringens -indenterings -independent -independenten -independentens -independenter -independenterna -independenternas -independenters -indeterministisk -indeterministiska -indeterministiskt -index -indexen -indexens -indexet -indexets -indian -indianen -indianens -indianer -indianerna -indianernas -indianers -indicier -indicierna -indiciernas -indiciers -indiciet -indiciets -indicium -indien -indiens -indier -indiern -indierna -indiernas -indierns -indiers -indifferens -indifferensen -indifferensens -indifferent -indifferenta -indignation -indignationen -indignationens -indignationer -indignationerna -indignationernas -indignationers -indignations -indignera -indignerad -indignerade -indignerades -indignerar -indigneras -indignerat -indignerats -indigo -indigon -indigons -indikation -indikationen -indikationens -indikationer -indikationerna -indikationernas -indikationers -indikations -indikativ -indikativa -indikativen -indikativens -indikativer -indikativerna -indikativernas -indikativers -indikativt -indikator -indikatorer -indikatorerna -indikatorernas -indikatorers -indikatorn -indikatorns -indikators -indikera -indikerade -indikerades -indikerande -indikerandet -indikerandets -indikerar -indikeras -indikerat -indikerats -indikering -indikeringar -indikeringarna -indikeringarnas -indikeringars -indikeringen -indikeringens -indikerings -indirekt -indirekta -indirektare -indirektast -indirektaste -indisk -indiska -indiskan -indiskans -indiskas -indiske -indiskor -indiskorna -indiskornas -indiskors -indiskret -indiskreta -indiskt -individ -individen -individens -individer -individerna -individernas -individers -individs -indoeuropeisk -indoeuropeiska -indoeuropeiskt -indokina -indoktrinera -indoktrinerad -indoktrinerade -indoktrinerades -indoktrinerar -indoktrineras -indoktrinerat -indoktrinerats -indoktrinering -indoktrineringen -indoktrineringens -indoktrinerings -indonesien -indonesiens -indonesisk -indonesiska -indonesiske -indonesiskt -indraga -indragande -indragas -indragen -indrages -indraget -indragit -indragits -indragna -indragning -indragningar -indragningarna -indragningarnas -indragningars -indragningen -indragningens -indragnings -indrivning -indrivningar -indrivningarna -indrivningarnas -indrivningars -indrivningen -indrivningens -indrivnings -indrog -indrogs -induktans -induktansen -induktansens -induktanser -induktanserna -induktansernas -induktansers -induktion -induktionen -induktionens -induktioner -induktionerna -induktionernas -induktioners -induktions -industri -industrien -industriens -industrier -industrierna -industriernas -industriers -industrin -industrins -industris -industrisemester -industrisemestern -industrisemesterns -ineffektiv -ineffektiva -ineffektive -ineffektivitet -ineffektiviteten -ineffektivitetens -ineffektivt -inexakt -inexakta -infam -infama -infamt -infann -infanteri -infanteriet -infanteriets -infarkt -infarkten -infarktens -infarkter -infarkterna -infarkternas -infarkters -infarkts -infart -infarten -infartens -infarter -infarterna -infarternas -infarters -infatta -infattad -infattade -infattades -infattar -infattas -infattat -infattats -infektera -infekterad -infekterade -infekterades -infekterar -infekteras -infekterat -infekterats -infektion -infektionen -infektionens -infektioner -infektionerna -infektionernas -infektioners -infektions -infektionssjukdom -infektionssjukdomar -infektionssjukdomarna -infektionssjukdomarnas -infektionssjukdomars -infektionssjukdomen -infektionssjukdomens -inferno -infernon -infernons -infernos -infernot -infernots -infetta -infettad -infettade -infettades -infettar -infettas -infettat -infettats -infinitiv -infinitiven -infinitivens -infinitiver -infinitiverna -infinitivernas -infinitivers -infinna -infinnas -infinner -infoga -infogad -infogade -infogades -infogande -infogandet -infogandets -infogar -infogas -infogat -infogats -infordra -infordrad -infordrade -infordrades -infordrar -infordras -infordrat -infordrats -information -informationen -informationens -informationer -informationerna -informationernas -informationers -informations -informationskampanj -informationskampanjen -informationskampanjens -informationskampanjer -informationskampanjerna -informationskampanjernas -informationskampanjers -informativ -informativa -informativt -informera -informerad -informerade -informerades -informerande -informerar -informeras -informerat -informerats -infrastruktur -infrastrukturen -infrastrukturens -infrastrukturer -infrastrukturerna -infrastrukturernas -infrastrukturers -infria -infriad -infriade -infriades -infriande -infriar -infrias -infriat -infriats -infrusen -infruset -infrusna -infunnit -infusion -infusionen -infusionens -infusioner -infusionerna -infusionernas -infusioners -infusions -inga -ingas -ingatorp -ingatorps -ingav -ingavs -inge -ingeborg -ingeborgs -ingemar -ingemars -ingen -ingendera -ingenderas -ingens -ingenstans -ingenting -inger -ingers -inges -inget -ingetdera -ingett -ingetts -ingick -ingicks -ingift -ingifta -inginge -ingivit -ingjut -ingjuta -ingjutas -ingjuten -ingjuter -ingjutet -ingjutit -ingjutits -ingjutna -ingjuts -ingrediens -ingrediensen -ingrediensens -ingredienser -ingredienserna -ingrediensernas -ingrediensers -ingrep -ingrepp -ingreppen -ingreppens -ingreppet -ingreppets -ingress -ingressen -ingressens -ingresser -ingresserna -ingressernas -ingressers -ingrid -ingrids -ingrip -ingripa -ingripande -ingripanden -ingripandena -ingripandenas -ingripandens -ingripandes -ingripandet -ingripandets -ingripas -ingriper -ingripit -ingrodd -ingrodda -ingrott -ingvar -ingvars -inhemsk -inhemska -inhemske -inhemskt -inhopp -inhoppare -inhopparen -inhopparens -inhoppares -inhopparna -inhopparnas -inhoppen -inhoppens -inhoppet -inhoppets -inhuman -inhumana -inhumant -inhyrd -inhyrda -inhyrde -inhyrt -inhys -inhysa -inhysas -inhyser -inhyses -inhyst -inhyste -inhystes -inhysts -initiation -initiationen -initiationens -initiationer -initiationerna -initiationernas -initiationers -initiations -initiationsrit -initiationsriten -initiationsritens -initiationsriter -initiationsriterna -initiationsriternas -initiationsriters -initiationsrits -initiativ -initiativen -initiativens -initiativet -initiativets -initiativs -initiativtagare -initiativtagaren -initiativtagarens -initiativtagares -initiativtagarna -initiativtagarnas -initiera -initierad -initierade -initierades -initierande -initierar -initieras -initierat -initierats -initiering -initieringar -initieringarna -initieringarnas -initieringars -initieringen -initieringens -initierings -injektion -injektionen -injektionens -injektioner -injektionerna -injektionernas -injektioners -injektions -injicera -injicerad -injicerade -injicerades -injicerande -injicerar -injiceras -injicerat -injicerats -injicering -injiceringar -injiceringarna -injiceringarnas -injiceringars -injiceringen -injiceringens -injicerings -inka -inkan -inkans -inkarnation -inkarnationen -inkarnationens -inkarnationer -inkarnationerna -inkarnationernas -inkarnationers -inkarnations -inkas -inkassering -inkasseringen -inkasseringens -inkasserings -inkast -inkasta -inkastad -inkastade -inkastades -inkastar -inkastas -inkastat -inkastats -inkasten -inkastens -inkastet -inkastets -inkodning -inkodningar -inkodningarna -inkodningarnas -inkodningars -inkodningen -inkodningens -inkodnings -inkom -inkomma -inkommande -inkommen -inkommer -inkommet -inkommit -inkomna -inkompetens -inkompetensen -inkompetensens -inkompetent -inkompetenta -inkomst -inkomstbringande -inkomsten -inkomstens -inkomster -inkomsterna -inkomsternas -inkomsters -inkomsts -inkomsttagare -inkomsttagaren -inkomsttagarens -inkomsttagares -inkomsttagarna -inkomsttagarnas -inkonsekvens -inkonsekvensen -inkonsekvensens -inkonsekvenser -inkonsekvenserna -inkonsekvensernas -inkonsekvensers -inkonsekvent -inkonsekventa -inkonsistens -inkonsistenser -inkonsistenserna -inkonsistensernas -inkonsistensers -inkonsistent -inkonsistenta -inkontinens -inkontinensen -inkontinensens -inkontinent -inkontinenta -inkorporera -inkorporerad -inkorporerade -inkorporerades -inkorporerar -inkorporeras -inkorporerat -inkorporerats -inkorrekt -inkorrekta -inkrement -inkrementet -inkrementets -inkrements -inkvartering -inkvarteringar -inkvarteringarna -inkvarteringarnas -inkvarteringars -inkvarteringen -inkvarteringens -inkvarterings -inkvisition -inkvisitionen -inkvisitionens -inkvisitions -inmata -inmatad -inmatade -inmatades -inmatande -inmatar -inmatas -inmatat -inmatats -inmatning -inmatningar -inmatningarna -inmatningarnas -inmatningars -inmatningen -inmatningens -inmatnings -inmundiga -inmundigad -inmundigade -inmundigades -inmundigande -inmundigandet -inmundigandets -inmundigar -inmundigas -inmundigat -inmundigats -inmura -inmurad -inmurade -inmurar -inmurat -inmuta -inmutad -inmutade -inmutat -inmutning -inmutningar -inmutningarna -inmutningarnas -inmutningars -inmutningen -inmutningens -inmutnings -innan -innanhav -innanhaven -innanhavens -innanhavet -innanhavets -inne -innebar -innebo -innebodde -inneboddes -inneboende -innebor -innebos -innebott -innebotts -inneburit -innefatta -innefattad -innefattade -innefattades -innefattande -innefattar -innefattas -innefattat -innefattats -inneha -innehade -innehades -innehaft -innehafts -innehar -innehas -innehav -innehavare -innehavaren -innehavarens -innehavares -innehavarna -innehavarnas -innehaven -innehavens -innehavet -innehavets -innehavs -innekrets -innekretsar -innekretsarna -innekretsarnas -innekretsars -innekretsen -innekretsens -inner -innerficka -innerfickan -innerfickans -innerfickor -innerfickorna -innerfickornas -innerfickors -innern -innerns -innerst -innersta -innerstad -innerstaden -innerstadens -innerstads -innevarande -innovation -innovationen -innovationens -innovationer -innovationerna -innovationernas -innovationers -innovations -inom -inombords -inombordsmotor -inombordsmotorer -inombordsmotorerna -inombordsmotorernas -inombordsmotorers -inombordsmotorn -inombordsmotorns -inomhus -inomhusbruk -inopererad -inopererade -inopererat -inordna -inordnad -inordnade -inordnades -inordnande -inordnar -inordnas -inordnat -inordnats -inordning -inordningen -inordningens -inordnings -inpacka -inpackad -inpackade -inpackades -inpackar -inpackas -inpackat -inpackats -inpassad -inpassade -inpassat -inpassering -inpasseringen -inpasseringens -inpasserings -inpiskad -inpiskade -inpiskat -inrama -inramad -inramade -inramades -inramar -inramas -inramat -inramats -inramning -inramningar -inramningarna -inramningarnas -inramningars -inramningen -inramningens -inramnings -inrangera -inrangerad -inrangerade -inrangerades -inrangerar -inrangeras -inrangerat -inrangerats -inrapportera -inrapporterad -inrapporterade -inrapporterades -inrapporterar -inrapporteras -inrapporterat -inrapporterats -inrar -inrarna -inrarnas -inrars -inre -inred -inreda -inredande -inredandet -inredandets -inredare -inredaren -inredarens -inredares -inredarna -inredarnas -inredas -inredd -inredda -inredde -inreddes -inreder -inredning -inredningar -inredningarna -inredningarnas -inredningars -inredningen -inredningens -inrednings -inreds -inregistrerad -inregistrerade -inregistrerat -inregistrering -inregistreringen -inregistreringens -inregistrerings -inresa -inresan -inresans -inresor -inresorna -inresornas -inresors -inrett -inretts -inrikes -inrikesminister -inrikesministern -inrikesministerns -inrikesministers -inrikesministrar -inrikesministrarna -inrikesministrarnas -inrikesministrars -inrikta -inriktad -inriktade -inriktades -inriktar -inriktas -inriktat -inriktats -inriktning -inriktningar -inriktningarna -inriktningarnas -inriktningars -inriktningen -inriktningens -inriktnings -inrista -inristad -inristade -inristades -inristar -inristas -inristat -inristats -inrop -inropa -inropad -inropade -inropades -inropande -inropandet -inropandets -inropar -inropare -inroparen -inroparens -inropares -inroparna -inroparnas -inropas -inropat -inropats -inropen -inropens -inropet -inropets -inrotad -inrotade -inrotat -inrusande -inrutad -inrutade -inrutat -inrym -inrymd -inrymda -inrymde -inrymdes -inrymma -inrymmande -inrymmandet -inrymmandets -inrymmas -inrymmer -inrymmes -inryms -inrymt -inrymts -insats -insatsen -insatsens -insatser -insatserna -insatsernas -insatsers -insatt -insatta -insatte -insattes -inse -insedd -insedda -inseende -insekt -insekten -insektens -insekter -insekterna -insekternas -insekters -insekts -insemination -inseminationen -inseminationens -inseminationer -inseminationerna -inseminationernas -inseminationers -inseminations -inser -inses -insett -insetts -insida -insidan -insidans -insidas -insider -insidern -insiderns -insiders -insides -insidor -insidorna -insidornas -insidors -insikt -insikten -insiktens -insikter -insikterna -insikternas -insikters -insikts -insinuant -insinuanta -insinuation -insinuationen -insinuationens -insinuationer -insinuationerna -insinuationernas -insinuationers -insinuations -insinuera -insinuerad -insinuerade -insinuerades -insinuerar -insinueras -insinuerat -insinuerats -insistera -insisterade -insisterades -insisterar -insisteras -insisterat -insisterats -insjuken -insjuket -insjukna -insjuknad -insjuknade -insjuknande -insjuknanden -insjuknandena -insjuknandenas -insjuknandens -insjuknandet -insjuknandets -insjuknar -insjuknat -inskickad -inskickade -inskickat -inskifta -inskiftad -inskiftade -inskiftades -inskiftar -inskiftas -inskiftat -inskiftats -inskjuta -inskjuten -inskjuter -inskjutet -inskjutit -inskjutna -inskrev -inskrevs -inskrift -inskriften -inskriftens -inskrifter -inskrifterna -inskrifternas -inskrifters -inskription -inskriptionen -inskriptionens -inskriptioner -inskriptionerna -inskriptionernas -inskriptioners -inskriptions -inskriva -inskrivare -inskrivaren -inskrivarens -inskrivares -inskrivarna -inskrivarnas -inskrivas -inskriven -inskriver -inskrivet -inskrivit -inskrivits -inskrivna -inskrivning -inskrivningar -inskrivningarna -inskrivningarnas -inskrivningars -inskrivningen -inskrivningens -inskrivnings -inskrivs -insmickrande -insomnad -insomnade -insomnat -insortering -insorteringen -insorteringens -insorterings -inspektera -inspekterad -inspekterade -inspekterades -inspekterande -inspekterar -inspekteras -inspekterat -inspekterats -inspektion -inspektionen -inspektionens -inspektioner -inspektionerna -inspektionernas -inspektioners -inspektions -inspiration -inspirationen -inspirationens -inspirations -inspirera -inspirerad -inspirerade -inspirerades -inspirerande -inspirerar -inspireras -inspirerat -inspirerats -insprirerad -insprirerade -insprirerat -insprutare -insprutaren -insprutarens -insprutares -insprutarna -insprutarnas -insprutning -insprutningar -insprutningarna -insprutningarnas -insprutningars -insprutningen -insprutningens -insprutnings -instans -instansen -instansens -instanser -instanserna -instansernas -instansers -insteg -insteget -instegets -instifta -instiftad -instiftade -instiftades -instiftande -instiftar -instiftare -instiftaren -instiftarens -instiftares -instiftarna -instiftarnas -instiftas -instiftat -instiftats -instinkt -instinkten -instinktens -instinkter -instinkterna -instinkternas -instinkters -instinktiv -instinktiva -instinktivt -instinkts -institut -instituten -institutens -institutet -institutets -institution -institutionen -institutionens -institutioner -institutionerna -institutionernas -institutioners -institutions -instituts -instoppad -instoppade -instoppat -instorma -instormade -instormande -instormar -instormat -instruera -instruerad -instruerade -instruerades -instruerar -instrueras -instruerat -instruerats -instruktion -instruktionen -instruktionens -instruktioner -instruktionerna -instruktionernas -instruktioners -instruktions -instruktionsbok -instruktionsboken -instruktionsbokens -instruktionsboks -instruktiv -instruktiva -instruktivt -instrument -instrumenten -instrumentens -instrumentering -instrumenteringar -instrumenteringarna -instrumenteringarnas -instrumenteringars -instrumenteringen -instrumenteringens -instrumenterings -instrumentet -instrumentets -instruments -insup -insupa -insupas -insuper -insupit -insupits -insups -insvep -insvepa -insvepas -insveper -insveps -insvept -insvepte -insveptes -insvepts -insydd -insydda -insyn -insynen -insynens -insytt -inta -intag -intaga -intagande -intagandet -intagandets -intagas -intagen -intager -intages -intaget -intagets -intagit -intagits -intagna -intagnas -intagne -intagnes -intagning -intagningar -intagningarna -intagningarnas -intagningars -intagningen -intagningens -intagnings -intakt -intakta -intar -intas -inte -inteckna -intecknad -intecknade -intecknades -intecknande -intecknandet -intecknandets -intecknar -intecknas -intecknat -intecknats -inteckning -inteckningar -inteckningarna -inteckningarnas -inteckningars -inteckningen -inteckningens -intecknings -integrand -integranden -integrandens -integrander -integranderna -integrandernas -integranders -integration -integrationen -integrationens -integrations -integrera -integrerad -integrerade -integrerades -integrerande -integrerar -integreras -integrerat -integrerats -integrering -integreringen -integreringens -integrerings -integritet -integriteten -integritetens -intendent -intendenten -intendentens -intendenter -intendenterna -intendenternas -intendenters -intendents -intensifiera -intensifierad -intensifierade -intensifierades -intensifierar -intensifieras -intensifierat -intensifierats -intensitet -intensiteten -intensitetens -intensiv -intensiva -intensivare -intensivast -intensivaste -intensive -intensiven -intensivens -intensivt -intention -intentionen -intentionens -intentioner -intentionerna -intentionernas -intentioners -intentions -interaktion -interaktionen -interaktionens -interaktions -interaktiv -interaktiva -interaktivt -interferens -interferensen -interferensens -interferenser -interferenserna -interferensernas -interferensers -interjektion -interjektionen -interjektionens -interjektioner -interjektionerna -interjektionernas -interjektioners -interjektions -intermezzo -intermezzon -intermezzona -intermezzonas -intermezzons -intermezzos -intermezzot -intermezzots -intermittent -intern -interna -internat -internaten -internatens -internatet -internatets -internen -internens -interner -internera -internerad -internerade -internerades -internerar -interneras -internerat -internerats -internerna -internernas -interners -internnummmer -internt -interpretation -interpretationen -interpretationens -interpretationer -interpretationerna -interpretationernas -interpretationers -interpretations -interpretator -interpretatorn -interpretatorns -interpretators -interpunktion -interpunktionen -interpunktionens -interpunktions -intervenera -intervenerade -intervenerande -intervenerar -intervenerat -intervention -interventionen -interventionens -interventioner -interventionerna -interventionernas -interventioners -interventions -intervju -intervjua -intervjuad -intervjuade -intervjuades -intervjuande -intervjuandet -intervjuandets -intervjuar -intervjuare -intervjuaren -intervjuarens -intervjuares -intervjuarna -intervjuarnas -intervjuas -intervjuat -intervjuats -intervjuer -intervjuerna -intervjuernas -intervjuers -intervjun -intervjuns -intervjus -intet -intig -intiga -intighet -intigheten -intighetens -intigt -intim -intima -intimare -intimast -intimaste -intime -intimitet -intimiteten -intimitetens -intimiteter -intimiteterna -intimiteternas -intimiteters -intimt -intog -intogs -intonation -intonationen -intonationens -intonationer -intonationerna -intonationernas -intonationers -intonations -intorka -intorkad -intorkade -intorkades -intorkar -intorkas -intorkat -intorkats -intransitiv -intransitiva -intransitivt -intressant -intressanta -intressantare -intressantast -intressantaste -intressante -intresse -intressen -intressena -intressenas -intressens -intressent -intressenten -intressentens -intressenter -intressenterna -intressenternas -intressenters -intressera -intresserad -intresserade -intresserades -intresserar -intresseras -intresserat -intresserats -intresses -intresset -intressets -intrig -intrigant -intriganta -intrigen -intrigens -intriger -intrigera -intrigerade -intrigerades -intrigerande -intrigerandet -intrigerandets -intrigerar -intrigeras -intrigerat -intrigerats -intrigerna -intrigernas -intrigers -intrikat -intrikata -intrikatare -intrikatast -intrikataste -introducera -introducerad -introducerade -introducerades -introducerande -introducerandet -introducerandets -introducerar -introduceras -introducerat -introducerats -introduktion -introduktionen -introduktionens -introduktioner -introduktionerna -introduktionernas -introduktioners -introduktions -introspektion -introspektionen -introspektionens -introspektions -introvert -introverta -intryck -intrycken -intryckens -intrycket -intryckets -intrycks -intryckt -intryckta -intuition -intuitionen -intuitionens -intuitions -intuitiv -intuitiva -intuitivare -intuitivast -intuitivaste -intuitivt -intyg -intyga -intygad -intygade -intygades -intygande -intygandet -intygandets -intygar -intygas -intygat -intygats -intygen -intygens -intyget -intygets -intygs -inunder -inuti -invadera -invaderad -invaderade -invaderades -invaderande -invaderar -invaderas -invaderat -invaderats -invagga -invaggad -invaggade -invaggades -invaggande -invaggandet -invaggandets -invaggar -invaggas -invaggat -invaggats -invand -invanda -invandra -invandrad -invandrade -invandrades -invandrande -invandrandet -invandrandets -invandrar -invandrare -invandraren -invandrarens -invandrares -invandrarminister -invandrarministern -invandrarministerns -invandrarministers -invandrarministrar -invandrarministrarna -invandrarministrarnas -invandrarministrars -invandrarna -invandrarnas -invandras -invandrat -invandrats -invandring -invandringen -invandringens -invandrings -invant -invariant -invarianta -invasion -invasionen -invasionens -invasioner -invasionerna -invasionernas -invasioners -invasions -invektiv -invektiven -invektivens -invektivet -invektivets -inventarier -inventarierna -inventariernas -inventariers -inventariet -inventariets -inventarium -inventera -inventerad -inventerade -inventerades -inventerar -inventeras -inventerat -inventerats -inventering -inventeringar -inventeringarna -inventeringarnas -inventeringars -inventeringen -inventeringens -inventerings -inverka -inverkad -inverkade -inverkades -inverkan -inverkande -inverkandet -inverkandets -inverkar -inverkas -inverkat -inverkats -inverkning -inverkningar -inverkningarna -inverkningarnas -inverkningars -invers -inversen -inversens -inverser -inverserna -inversernas -inversers -inversion -inversionen -inversionens -inversions -invertera -inverterad -inverterade -inverterades -inverterande -inverterandet -inverterandets -inverterar -inverterare -inverteraren -inverterarens -inverterares -inverterarna -inverterarnas -inverteras -inverterat -inverterats -investera -investerad -investerade -investerades -investerar -investeras -investerat -investerats -investering -investeringar -investeringarna -investeringarnas -investeringars -investeringen -investeringens -investerings -invid -invig -inviga -invigande -invigandet -invigandets -invigas -invigd -invigda -invigdas -invigde -invigdes -inviger -inviges -invigning -invigningar -invigningarna -invigningarnas -invigningars -invigningen -invigningens -invignings -invigs -invigt -invigts -invit -invitation -invitationen -invitationens -invitationer -invitationerna -invitationernas -invitationers -invitations -inviten -invitens -inviter -inviterna -inviternas -inviters -invokation -invokationen -invokationens -invokations -inympa -inympad -inympade -inympades -inympas -inympat -inympats -iordning -irak -irakier -irakiern -irakierna -irakiernas -irakierns -irakiers -irakisk -irakiska -irakiske -irakiskt -iraks -iran -iranier -iraniern -iranierna -iraniernas -iranierns -iraniers -irans -iransk -iranska -iranske -iranskt -irene -irenes -irisk -iriska -iriskt -ironi -ironier -ironierna -ironiernas -ironiers -ironin -ironins -ironisera -ironiserade -ironiserades -ironiserande -ironiserar -ironiseras -ironiserat -ironiserats -ironisk -ironiska -ironiske -ironiskt -irra -irrade -irrades -irrande -irrandet -irrandets -irrar -irras -irrat -irrats -irritation -irritationen -irritationens -irritations -irritera -irriterad -irriterade -irriterades -irriterande -irriterandet -irriterandets -irriterar -irriteras -irriterat -irriterats -isa -isacsson -isacssons -isad -isade -isades -isaksson -isakssons -isande -isandet -isandets -isar -isarna -isarnas -isars -isas -isat -isats -isatt -isatta -isberg -isbergen -isbergens -isberget -isbergets -isbergs -isbit -isbitar -isbitarna -isbitarnas -isbitars -isbiten -isbitens -isbits -isbrytare -isbrytaren -isbrytarens -isbrytares -isbrytarna -isbrytarnas -iscensatt -iscensatta -iscensatte -iscensattes -iscensatts -isen -isens -ishav -ishaven -ishavens -ishavet -ishavets -ishavs -ishockey -ishockeyn -ishockeyns -ishockeys -isig -isiga -isigt -ism -ismen -ismens -ismer -ismerna -ismernas -ismers -isotop -isotopen -isotopens -isotoper -isotoperna -isotopernas -isotopers -isotops -isstycke -isstycken -isstyckena -isstyckenas -isstyckens -isstycket -isstyckets -istapp -istappar -istapparna -istapparnas -istappars -istappen -istappens -ister -istid -istiden -istidens -istider -istiderna -istidernas -istiders -istids -istret -istrets -isvatten -isvattnet -isvattnets -isynnerhet -iteration -iterationen -iterationens -iterationer -iterationerna -iterationernas -iterationers -iterations -iterativ -iterativa -iterativt -itts -itu -ity -ivan -ivans -ivar -ivars -iver -ivern -iverns -ivers -ivra -ivrade -ivrades -ivrar -ivrare -ivraren -ivrarens -ivrares -ivrarna -ivrarnas -ivras -ivrat -ivrats -ivrig -ivriga -ivrigare -ivrigas -ivrigast -ivrigaste -ivrige -ivriges -ivrigt -jack -jacka -jackan -jackans -jackas -jacken -jackens -jacket -jackets -jackor -jackorna -jackornas -jackors -jacob -jacobs -jag -jaga -jagad -jagade -jagades -jagande -jagandet -jagandets -jagar -jagare -jagaren -jagarens -jagares -jagarna -jagarnas -jagas -jagat -jagats -jaget -jagets -jaguar -jaguaren -jaguarens -jaguarer -jaguarerna -jaguarernas -jaguarers -jaha -jak -jaka -jakade -jakades -jakande -jakandet -jakandets -jakar -jakarna -jakarnas -jakars -jakas -jakat -jakats -jaken -jakens -jakob -jakobs -jakobsberg -jakobsbergs -jakt -jakten -jaktens -jakter -jakterna -jakternas -jakters -jaktstyrka -jaktstyrkan -jaktstyrkans -jaktstyrkor -jaktstyrkorna -jaktstyrkornas -jaktstyrkors -jama -jamade -jamaica -jamaicas -jamande -jamar -jamat -jan -janne -jannes -janos -jans -januari -januaris -japan -japanen -japanens -japaner -japanerna -japanernas -japaners -japans -japansk -japanska -japanskan -japanskans -japanske -japanskor -japanskorna -japanskornas -japanskors -japanskt -jargong -jargongen -jargongens -jargonger -jargongerna -jargongernas -jargongers -jargongs -jasmin -jasminen -jasminens -jasminer -jasminerna -jasminernas -jasminers -jaspis -jaspisar -jaspisarna -jaspisarnas -jaspisars -jaspisen -jaspisens -javisst -jazz -jazzen -jazzens -jeanette -jeanettes -jeans -jeansen -jeansens -jeep -jeepar -jeeparna -jeeparnas -jeepars -jeepen -jeepens -jeeps -jehu -jenny -jennys -jens -jernberg -jernbergs -jesper -jessica -jessicas -jesu -jesuit -jesuiten -jesuitens -jesuiter -jesuiterna -jesuiternas -jesuiters -jesus -jetmotor -jetmotorer -jetmotorerna -jetmotorernas -jetmotorers -jetmotorn -jetmotorns -jiddisch -jiddischen -jiddischens -jimmy -jimmys -jippo -jippon -jippons -jippos -jippot -jippots -joachim -joachims -joakim -joakims -jobb -jobba -jobbade -jobbar -jobbare -jobbaren -jobbarens -jobbares -jobbarna -jobbarnas -jobbat -jobben -jobbens -jobbet -jobbets -jobbig -jobbiga -jobbigare -jobbigast -jobbigaste -jobbigt -jobbs -jockey -jockeyn -jockeyns -jockeys -jod -joden -jodens -jogga -joggade -joggande -joggar -joggare -joggaren -joggarens -joggares -joggarna -joggarnas -joggat -joggning -joggningen -joggningens -joggnings -johan -johanna -johannas -johannes -johanneshov -johanneshovs -johannesson -johannessons -johannishus -johannisson -johannissons -johans -johansson -john -johns -jojo -jojon -jojons -jojor -jojorna -jojornas -jojors -joker -jokern -jokerns -jokers -jokkmokk -jokkmokks -jokrar -jokrarna -jokrarnas -jokrars -jon -jonas -jonasson -jonassons -jonen -jonens -joner -jonerna -jonernas -joners -jones -jonisera -joniserade -joniserande -joniserar -joniserat -jonny -jonnys -jons -jonsered -jonsereds -jonsson -jonssons -jonstorp -jonstorps -jord -jorda -jordad -jordade -jordades -jordagods -jordanien -jordaniens -jordansk -jordanska -jordanske -jordanskt -jordar -jordarna -jordarnas -jordars -jordas -jordat -jordats -jordbruk -jordbrukare -jordbrukaren -jordbrukarens -jordbrukares -jordbrukarna -jordbrukarnas -jordbruket -jordbrukets -jordbruks -jordbruksbygd -jordbruksbygder -jordbruksbygderna -jordbruksbygdernas -jordbruksbygders -jorden -jordens -jordgubbar -jordgubbarna -jordgubbarnas -jordgubbars -jordgubbe -jordgubben -jordgubbens -jordgubbes -jordisk -jordiska -jordiske -jordiskt -jordrike -jordriket -jordrikets -jords -jordyta -jordytan -jordytans -josef -josefin -josefina -josefinas -josefins -josefs -jour -jouren -jourens -jourer -jourerna -jourernas -jourers -jourhavande -jovisst -judakonung -judakonungar -judakonungarna -judakonungarnas -judakonungars -judakonungen -judakonungens -judar -judarna -judarnas -judars -jude -judekristen -judekristet -judekristna -juden -judendom -judendomen -judendomens -judendoms -judens -judes -judinna -judinnan -judinnans -judinnas -judinnor -judinnorna -judinnornas -judinnors -judisk -judiska -judiske -judiskt -judit -judits -judo -juice -juicen -juicens -juicer -juicerna -juicernas -juicers -jukebox -jukeboxar -jukeboxarna -jukeboxarnas -jukeboxars -jukeboxen -jukeboxens -jumbo -jumbon -jumbons -jumper -jumpern -jumperns -jumpers -jumprar -jumprarna -jumprarnas -jumprars -jungfru -jungfrun -jungfruns -jungfrur -jungfrurna -jungfrurnas -jungfrurs -jungfrus -jungman -juni -junior -junioren -juniorens -juniorer -juniorerna -juniorernas -juniorers -juniors -junis -junker -junkern -junkerns -junkrar -junkrarna -junkrars -junosuando -junosuandos -junta -juntan -juntans -juntor -juntorna -juntornas -juntors -juoksengi -juoksengis -jupiter -jupiters -juridik -juridiken -juridikens -juridisk -juridiska -juridiske -juridiskt -jurisdiktion -jurisdiktionen -jurisdiktionens -jurisdiktions -jurist -juristen -juristens -jurister -juristerna -juristernas -juristers -jurists -jury -juryer -juryerna -juryernas -juryers -juryn -juryns -jurys -just -justera -justerad -justerade -justerades -justerar -justeras -justerat -justerats -justering -justeringar -justeringarna -justeringarnas -justeringars -justeringen -justeringens -justerings -justeringsman -justeringsmannen -justeringsmannens -justeringsmans -justitiedepartement -justitiedepartementen -justitiedepartementens -justitiedepartementet -justitiedepartementets -justitiedepartements -justitieminister -justitieministern -justitieministerns -justitieministers -justitieministrar -justitieministrarna -justitieministrarnas -justitieministrars -kabin -kabinen -kabinens -kabiner -kabinerna -kabinernas -kabiners -kabinett -kabinetter -kabinetterna -kabinetternas -kabinetters -kabinettet -kabinettets -kabinetts -kabyss -kabyssen -kabyssens -kabysser -kabysserna -kabyssernas -kabyssers -kadaver -kadavren -kadavrens -kadavret -kadavrets -kadens -kadensen -kadensens -kadenser -kadenserna -kadensernas -kadensers -kader -kadern -kaderns -kadett -kadetten -kadettens -kadetter -kadetterna -kadetternas -kadetters -kadrar -kadrarna -kadrarnans -kadrars -kadrer -kadrerna -kadrernas -kadrers -kaffe -kafferast -kafferasten -kafferastens -kafferaster -kafferasterna -kafferasternas -kafferasters -kafferasts -kaffes -kaffet -kaffets -kaj -kaja -kajak -kajaken -kajakens -kajaker -kajakerna -kajakernas -kajakers -kajan -kajans -kajas -kajen -kajens -kajer -kajerna -kajernas -kajers -kajor -kajorna -kajornas -kajors -kajs -kajsa -kajsas -kajuta -kajutan -kajutans -kajutas -kajutor -kajutorna -kajutornas -kajutors -kaka -kakadu -kakaduer -kakaduerna -kakaduernas -kakaduers -kakadun -kakaduns -kakadus -kakan -kakans -kakao -kakofoni -kakofonier -kakofonierna -kakofoniernas -kakofoniers -kakofonin -kakofonins -kakor -kakorna -kakornas -kakors -kaktus -kaktusar -kaktusarna -kaktusarnas -kaktusars -kaktusen -kaktusens -kam -kambrisk -kambriska -kambriskt -kamera -kameran -kamerans -kameror -kamerorna -kamerornas -kamerors -kamerun -kameruns -kamfer -kamfern -kamferns -kamfers -kamin -kaminen -kaminens -kaminer -kaminerna -kaminernas -kaminers -kamins -kamma -kammad -kammade -kammades -kammar -kammare -kammaren -kammarens -kammares -kammarna -kammarnas -kammars -kammarskrivare -kammarskrivaren -kammarskrivarens -kammarskrivares -kammarskrivarna -kammarskrivarnas -kammas -kammat -kammats -kammen -kammens -kamp -kampanj -kampanjen -kampanjens -kampanjer -kampanjerna -kampanjernas -kampanjers -kampen -kampens -kamper -kampera -kamperade -kamperande -kamperar -kamperat -kamperna -kampernas -kampers -kampsport -kampsporten -kampsportens -kampsporter -kampsporterna -kampsporternas -kampsporters -kamrar -kamrarna -kamrarnas -kamrars -kamrat -kamraten -kamratens -kamrater -kamraterna -kamraternas -kamraters -kamrats -kamratskap -kamratskapet -kamratskapets -kamratskaps -kamrer -kamreren -kamrerens -kamrerer -kamrererna -kamrerernas -kamrerers -kamrern -kamrerns -kamrers -kams -kan -kana -kanada -kanadas -kanade -kanadensare -kanadensaren -kanadensarens -kanadensares -kanadensarna -kanadensarnas -kanadensisk -kanadensiska -kanadensiskan -kanadensiskans -kanadensiske -kanadensiskor -kanadensiskorna -kanadensiskornas -kanadensiskors -kanadensiskt -kananeisk -kananeiska -kananeiskt -kanar -kanat -kandidat -kandidaten -kandidatens -kandidater -kandidaterna -kandidaternas -kandidaters -kandidats -kandidatur -kandidaturen -kandidaturens -kandidaturer -kandidaturerna -kandidaturernas -kandidaturers -kandidera -kandiderade -kandiderar -kandiderat -kangos -kanin -kaninen -kaninens -kaniner -kaninerna -kaninernas -kaniners -kanins -kanna -kannan -kannans -kannor -kannorna -kannornas -kannors -kanon -kanonad -kanonaden -kanonadens -kanonader -kanonaderna -kanonadernas -kanonaders -kanonen -kanonens -kanoner -kanonerna -kanonernas -kanoners -kanonisk -kanoniska -kanoniskt -kanons -kanot -kanoten -kanotens -kanoter -kanoterna -kanoternas -kanoters -kanots -kanske -kant -kanta -kantad -kantade -kantades -kantar -kantas -kantat -kantaten -kantatens -kantater -kantaterna -kantaternas -kantaters -kantats -kanten -kantens -kanter -kanterna -kanternas -kanters -kantig -kantiga -kantigare -kantigast -kantigaste -kantigt -kanton -kantonen -kantonens -kantoner -kantonerna -kantonernas -kantoners -kantor -kantorn -kantorns -kantors -kantra -kantrade -kantrande -kantrar -kantrat -kaos -kaoset -kaosets -kaotisk -kaotiska -kaotiskt -kap -kapa -kapacitans -kapacitet -kapaciteten -kapacitetens -kapaciteter -kapaciteterna -kapaciteternas -kapaciteters -kapad -kapade -kapades -kapar -kapare -kaparen -kaparens -kapares -kaparna -kaparnas -kapas -kapat -kapats -kapen -kapens -kapet -kapets -kapning -kapningar -kapningarna -kapningarnas -kapningars -kapningen -kapningens -kapnings -kapp -kappa -kappan -kappans -kappor -kapporna -kappornas -kappors -kapsejsa -kapsejsad -kapsejsade -kapsejsar -kapsejsat -kapten -kaptenen -kaptenens -kaptener -kaptenerna -kaptenernas -kapteners -kaptens -kaputt -kaputta -kar -karaff -karaffen -karaffens -karaffer -karafferna -karaffernas -karaffers -karaffs -karakterisera -karakteriserad -karakteriserade -karakteriserades -karakteriserande -karakteriserandet -karakteriserandets -karakteriserar -karakteriseras -karakteriserat -karakteriserats -karakterisering -karakteriseringar -karakteriseringarna -karakteriseringarnas -karakteriseringars -karakteriseringen -karakteriseringens -karakteriserings -karakteristik -karakteristika -karakteristiken -karakteristikens -karakteristiker -karakteristikerna -karakteristikernas -karakteristikers -karakteristiks -karakteristisk -karakteristiska -karakteristiskt -karat -karate -karaten -karatens -karats -karda -kardad -kardade -kardades -kardande -kardandet -kardandets -kardar -kardas -kardat -kardats -kardborrar -kardborrarna -kardborrarnas -kardborrars -kardborre -kardborren -kardborrens -kardemumma -kardemumman -kardemummans -kardemummas -karen -karens -karensdag -karensdagar -karensdagarna -karensdagarnas -karensdagars -karensdagen -karensdagens -karensdags -karensen -karensens -karenstid -karenstiden -karenstidens -karesuando -karesuandos -karet -karets -karg -karga -kargare -kargast -kargaste -kargt -karikatyr -karikatyren -karikatyrens -karikatyrer -karikatyrerna -karikatyrernas -karikatyrers -karikatyrs -karikera -karikerad -karikerade -karikerande -karikerar -karikerat -karikerats -karin -karins -karisma -karisman -karismans -karm -karma -karman -karmans -karmar -karmarna -karmarnas -karmars -karmas -karmen -karmens -karms -kaross -karossen -karossens -karosser -karosserna -karossernas -karossers -karott -karotten -karottens -karotter -karotternas -karp -karpar -karparna -karparnas -karpars -karpen -karpens -karps -kars -karsk -karska -karskade -karskar -karskare -karskas -karskast -karskaste -karskat -karske -karskes -karskt -kart -karta -kartan -kartans -kartering -karteringen -karteringens -karterings -kartesisk -kartesiska -kartesiskt -kartong -kartongen -kartongens -kartonger -kartongerna -kartongernas -kartongers -kartongs -kartor -kartorna -kartornas -kartors -kartotek -kartoteken -kartotekens -kartoteket -kartotekets -kartoteks -kartskiss -kartskissen -kartskissens -kartskisser -kartskisserna -kartskissernas -kartskissers -karttecken -kartteckens -karttecknen -karttecknens -karttecknet -karttecknets -karungi -karungis -karup -karups -karva -karvad -karvade -karvades -karvar -karvas -karvat -karvats -kasern -kasernen -kasernens -kaserner -kasernerna -kasernernas -kaserners -kaskad -kaskaden -kaskadens -kaskader -kaskaderna -kaskadernas -kaskaders -kassa -kassan -kassans -kassar -kassarna -kassarnas -kassars -kasse -kassen -kassens -kassera -kasserad -kasserade -kasserades -kasserar -kasseras -kasserat -kasserats -kassett -kassetten -kassettens -kassetter -kassetterna -kassetternas -kassetters -kassor -kassorna -kassornas -kassors -kast -kasta -kastad -kastade -kastades -kastanj -kastanjen -kastanjens -kastanjer -kastanjerna -kastanjernas -kastanjers -kastar -kastare -kastaren -kastarens -kastares -kastarna -kastarnas -kastas -kastat -kastats -kasten -kastens -kaster -kasterna -kasternas -kasters -kastet -kastets -kastrat -kastraten -kastratens -kastrater -kastraterna -kastraternas -kastraters -kastrera -kastrerad -kastrerade -kastrerades -kastrerar -kastreras -kastrerat -kastrerats -kastrering -kastreringar -kastreringarna -kastreringarnas -kastreringars -kastreringen -kastreringens -kastrerings -kasus -katakomb -katakomben -katakombens -katakomber -katakomberna -katakombernas -katakombers -katarina -katarinas -katarr -katarren -katarrens -katarrer -katarrerna -katarrernas -katarrers -katastrof -katastrofen -katastrofens -katastrofer -katastroferna -katastrofernas -katastrofers -katastrofs -kateder -katedern -katederns -kateders -katedrar -katedrarna -katedrarnas -katedrars -kategori -kategorien -kategoriens -kategorier -kategorierna -kategoriernas -kategoriers -kategorin -kategorins -kategoris -kategorisera -kategoriserad -kategoriserade -kategoriserades -kategoriserar -kategoriseras -kategoriserat -kategoriserats -kategorisering -kategoriseringar -kategoriseringarna -kategoriseringarnas -kategoriseringars -kategoriseringen -kategoriseringens -kategoriserings -kategorisk -kategoriska -kategoriskt -katekes -katekesen -katekesens -katekeser -katekeserna -katekesernas -katekesers -kateter -katetern -kateterns -katetrar -katetrarna -katetrarnas -katetrars -katrin -katt -kattarp -kattarps -kattegatt -kattegatts -katten -kattens -katter -katterna -katternas -katters -katts -kautschuk -kautschuken -kautschukens -kavaj -kavajen -kavajens -kavajer -kavajerna -kavajernas -kavajers -kavajs -kaviar -kaviarn -kaviarns -kaxig -kaxiga -kaxigare -kaxigast -kaxigaste -kaxige -kaxigt -kazachstan -kazachstans -kebab -kedja -kedjad -kedjade -kedjades -kedjan -kedjans -kedjar -kedjas -kedjat -kedjats -kedjereaktion -kedjereaktionen -kedjereaktionens -kedjereaktioner -kedjereaktionerna -kedjereaktionernas -kedjereaktioners -kedjereaktions -kedjor -kedjorna -kedjornas -kedjors -kejsare -kejsaren -kejsarens -kejsares -kejsarinna -kejsarinnan -kejsarinnans -kejsarinnor -kejsarinnorna -kejsarinnornas -kejsarinnors -kejsarna -kejsarnas -kemi -kemin -kemins -kemisk -kemiska -kemiskt -kemist -kemisten -kemistens -kemister -kemisterna -kemisternas -kemisters -kemists -kenneth -kenneths -kenny -kennys -kent -kents -kenya -kenyas -keps -kepsar -kepsarna -kepsarnas -kepsars -kepsen -kepsens -keramik -keramiken -keramikens -keramiker -keramikern -keramikerna -keramikernas -keramikerns -keramikers -keramisk -keramiska -keramiskt -kerstin -kerstins -kerub -keruben -kerubens -keruber -keruberna -kerubernas -kerubers -keso -keson -kesons -ketchup -ketchupen -ketchupens -kex -kexen -kexens -kexet -kexets -khmer -khmeren -khmerens -khmerer -khmererna -khmerernas -khmerers -kibbutz -kibbutzen -kibbutzens -kibbutzer -kibbutzerna -kibbutzernas -kibbutzers -kid -kiden -kidens -kidet -kidets -kidnappa -kidnappad -kidnappade -kidnappades -kidnappande -kidnappar -kidnappare -kidnapparen -kidnapparens -kidnappares -kidnapparna -kidnapparnas -kidnappas -kidnappat -kidnappats -kidnappning -kidnappningar -kidnappningarna -kidnappningarnas -kidnappningars -kidnappningen -kidnappningens -kidnappnings -kika -kikade -kikande -kikar -kikare -kikaren -kikarens -kikares -kikarna -kikarnas -kikat -kikna -kiknade -kiknande -kiknar -kiknat -kim -kimono -kimonon -kimonons -kimonor -kimonorna -kimonornas -kimonors -kimonos -kims -kimstad -kimstads -kina -kinas -kind -kinden -kindens -kinder -kinderna -kindernas -kinders -kindknota -kindknotan -kindknotans -kindknotor -kindknotorna -kindknotornas -kindknotors -kines -kinesen -kinesens -kineser -kineserna -kinesernas -kinesers -kinesisk -kinesiska -kinesiskan -kinesiskans -kinesiskas -kinesiskor -kinesiskorna -kinesiskornas -kinesiskors -kinesiskt -kinetisk -kinetiska -kinetiskt -kinkig -kinkiga -kinkigare -kinkigast -kinkigaste -kinkigt -kinna -kinnared -kinnareds -kinnarp -kinnarps -kinnarumma -kinnarummas -kinnas -kiosk -kiosken -kioskens -kiosker -kioskerna -kioskernas -kioskers -kiosks -kirgizistan -kiruna -kirunas -kirurg -kirurgen -kirurgens -kirurger -kirurgerna -kirurgernas -kirurgers -kirurgi -kirurgin -kirurgins -kirurgisk -kirurgiska -kirurgiskt -kirurgs -kisa -kisade -kisades -kisande -kisandet -kisandets -kisar -kisas -kisat -kisats -kiss -kissa -kissad -kissade -kissades -kissande -kissandet -kissandets -kissar -kissas -kissat -kissats -kisset -kissets -kista -kistan -kistans -kistas -kistor -kistorna -kistornas -kistors -kitt -kittet -kittets -kiv -kiva -kivade -kivades -kivar -kivas -kivat -kivats -kivet -kivets -kivik -kiviks -kiwi -kiwifrukt -kiwifrukten -kiwifruktens -kiwifrukter -kiwifrukterna -kiwifrukternas -kiwifrukters -kiwifrukts -knacka -knackade -knackades -knackande -knackar -knackas -knackat -knackats -knackig -knackiga -knackigt -knackning -knackningar -knackningarna -knackningarnas -knackningars -knackningen -knackningens -knacknings -knak -knaka -knakade -knakar -knakat -knaket -knakets -knaper -knapert -knapp -knappa -knappar -knappare -knapparna -knapparnas -knappars -knappast -knappaste -knappen -knappens -knapphet -knappheten -knapphetens -knapphets -knapps -knappt -knapra -knaprade -knaprande -knaprar -knaprat -knaprig -knapriga -knaprigt -knark -knarka -knarkade -knarkande -knarkandet -knarkandets -knarkar -knarkare -knarkaren -knarkarens -knarkares -knarkarna -knarkarnas -knarkat -knarket -knarkets -knarks -knarr -knarra -knarrade -knarrades -knarrande -knarrandet -knarrandets -knarrar -knarrarna -knarrarnas -knarrars -knarras -knarrat -knarrats -knarret -knarrets -knasig -knasiga -knasigare -knasigast -knasigaste -knasigt -knaster -knastra -knastrade -knastrades -knastrande -knastrar -knastras -knastrat -knastrats -knastret -knastrets -knastrig -knastriga -knastrigt -knattar -knattarna -knattarnas -knattars -knatte -knatten -knattens -knekt -knektar -knektarna -knektarnas -knektars -knekten -knektens -knekts -knep -knepen -knepens -knepet -knepets -knepig -knepiga -knepigare -knepigast -knepigaste -knepige -knepigt -kneps -knip -knipa -knipan -knipans -knipas -knipen -kniper -knipet -knipets -knipit -knipits -knipna -knipor -kniporna -knipornas -knipors -knippa -knippan -knippans -knippas -knippe -knippen -knippens -knippes -knippet -knippets -knippor -knipporna -knippornas -knippors -knips -knipsa -knipsade -knipsades -knipsar -knipsas -knipsat -knipsats -kniv -knivar -knivarna -knivarnas -knivars -kniven -knivens -knivhugga -knivhuggas -knivhugger -knivhuggit -knivhuggits -knivig -kniviga -knivigare -knivigast -knivigaste -knivigt -knivs -knivsta -knivstas -knock -knocka -knockad -knockade -knockades -knockar -knockarna -knockarnas -knockars -knockas -knockat -knockats -knocken -knockens -knog -knogar -knogarna -knogarnas -knogars -knoge -knogen -knogens -knoges -knoget -knogets -knop -knopar -knoparna -knoparnas -knopars -knopen -knopens -knopp -knoppades -knoppar -knopparna -knopparnas -knoppars -knoppas -knoppats -knoppen -knoppens -knoppningstid -knoppningstider -knoppningstiderna -knoppningstidernas -knoppningstiders -knopps -knops -knorr -knorra -knorrade -knorrande -knorrandet -knorrandets -knorrar -knorrarna -knorrarnas -knorrars -knorrat -knorren -knorrens -knot -knota -knotade -knotan -knotans -knotar -knotat -knotet -knotets -knotig -knotiga -knotigt -knotor -knotorna -knotornas -knotors -knott -knotten -knottens -knottet -knottets -knottra -knottrade -knottrades -knottrar -knottras -knottrat -knottrats -knowhow -knubbig -knubbiga -knubbigt -knuff -knuffa -knuffad -knuffade -knuffades -knuffar -knuffarna -knuffarnas -knuffars -knuffas -knuffat -knuffats -knuffen -knuffens -knut -knutar -knutarna -knutarnas -knutars -knutby -knutbys -knuten -knutens -knutet -knutit -knutits -knutna -knuts -knuttar -knuttarna -knuttarnas -knuttars -knutte -knutten -knuttens -knuttes -knyck -knycka -knyckande -knyckar -knyckarna -knyckarnas -knyckars -knyckas -knycken -knyckens -knycker -knyckig -knyckiga -knyckigt -knycks -knyckt -knyckta -knyckte -knycktes -knyckts -knyst -knysta -knystade -knystar -knystarna -knystarnas -knystars -knystat -knysten -knystens -knyt -knyta -knytande -knytas -knyte -knyten -knytena -knytenas -knytens -knyter -knytes -knytet -knytets -knyts -kobbar -kobbarna -kobbarnas -kobbars -kobbe -kobben -kobbens -kobbes -kobra -kobran -kobrans -kobras -kobror -kobrorna -kobrornas -kobrors -kock -kockar -kockarna -kockarnas -kockars -kocken -kockens -kocks -kockums -kod -koda -kodad -kodade -kodades -kodar -kodas -kodat -kodats -kode -koden -kodens -koder -koderna -kodernas -koders -kodes -kodex -kodexar -kodexarna -kodexarnas -kodexars -kodexen -kodexens -kodning -kodningen -kodningens -koefficient -koefficienten -koefficientens -koefficienter -koefficienterna -koefficienternas -koefficienters -koefficients -koffein -koffeinet -koffeinets -koffert -koffertar -koffertarna -koffertarnas -koffertars -kofferten -koffertens -kofferts -kofot -kofotar -kofotarna -kofotarnas -kofotars -kofoten -kofotens -kofots -kofta -koftan -koftans -koftas -koftor -koftorna -koftornas -koftors -koger -kogerna -kogernas -kogers -kognition -kognitionen -kognitionens -kognitions -kognitiv -kognitiva -kognitivt -kogren -kogrens -kogret -kogrets -kohage -kohagen -kohagens -kohort -kohorten -kohortens -kohorter -kohorterna -kohorternas -kohorters -kohorts -koj -koja -kojan -kojans -kojas -kojen -kojens -kojer -kojerna -kojernas -kojers -kojor -kojorna -kojornas -kojors -kojs -kok -koka -kokad -kokade -kokades -kokain -kokainet -kokainets -kokar -kokare -kokaren -kokarens -kokares -kokarna -kokarnas -kokas -kokat -kokats -koken -kokens -koket -kokets -kokettera -koketterade -koketterar -koketterat -koketteri -koketterier -koketterierna -koketteriernas -koketteriers -koketteriet -koketteriets -kokning -kokningen -kokningens -kokong -kokongen -kokongens -kokonger -kokongerna -kokongernas -kokongers -kokos -kokosen -kokosens -kokott -kokotten -kokottens -kokotter -kokotterna -kokotternas -kokotters -kokotts -kokpunkt -kokpunkten -kokpunktens -koks -kokt -kokta -kokte -kom -koma -koman -komans -komas -kombattant -kombattanten -kombattantens -kombattanter -kombattanterna -kombattanternas -kombattanters -kombination -kombinationen -kombinationens -kombinationer -kombinationerna -kombinationernas -kombinationers -kombinations -kombinatorisk -kombinatoriska -kombinatoriskt -kombinera -kombinerad -kombinerade -kombinerades -kombinerar -kombineras -kombinerat -kombinerats -komedi -komedier -komedierna -komediernas -komediers -komedin -komedins -komedis -komet -kometen -kometens -kometer -kometerna -kometernas -kometers -komets -komfort -komforten -komfortens -komik -komiken -komikens -komiker -komikern -komikerna -komikerns -komisk -komiska -komiskt -komma -komman -kommande -kommando -kommandobrygga -kommandobryggan -kommandobryggans -kommandobryggas -kommandobryggor -kommandobryggorna -kommandobryggornas -kommandobryggors -kommandon -kommandona -kommandonas -kommandons -kommandot -kommandots -kommans -kommas -kommat -kommatecken -kommateckens -kommatecknen -kommatecknens -kommatecknet -kommatecknets -kommatera -kommaterad -kommaterade -kommaterades -kommaterar -kommateras -kommaterat -kommaterats -kommatering -kommateringen -kommateringens -kommats -kommen -kommendera -kommenderad -kommenderade -kommenderades -kommenderande -kommenderar -kommenderas -kommenderat -kommenderats -kommentar -kommentaren -kommentarens -kommentarer -kommentarerna -kommentarernas -kommentarers -kommentator -kommentatorer -kommentatorerna -kommentatorernas -kommentatorers -kommentatorn -kommentatorns -kommentators -kommentera -kommenterad -kommenterade -kommenterades -kommenterande -kommenterandet -kommenterandets -kommenterar -kommenteras -kommenterat -kommenterats -kommer -kommers -kommersen -kommersens -kommet -kommissariat -kommissariatet -kommissariatets -kommissarie -kommissarien -kommissariens -kommissarier -kommissarierna -kommissariernas -kommissariers -kommissaries -kommission -kommissionen -kommissionens -kommissioner -kommissionerna -kommissionernas -kommissioners -kommissions -kommit -kommun -kommunen -kommunens -kommuner -kommunerna -kommunernas -kommuners -kommunicera -kommunicerade -kommunicerande -kommunicerar -kommunicerat -kommunikation -kommunikationen -kommunikationens -kommunikationer -kommunikationerna -kommunikationernas -kommunikationers -kommunikations -kommunikativ -kommunikativa -kommunikativt -kommunism -kommunismen -kommunismens -kommunist -kommunisten -kommunistens -kommunister -kommunisterna -kommunisternas -kommunisters -kommunistisk -kommunistiska -kommunistiske -kommunistiskt -kommunists -kommuns -kommutativ -kommutativa -kommutativt -komna -kompakt -kompakta -kompaktare -kompaktast -kompaktaste -kompaktifiera -kompaktifierade -kompaktifierades -kompaktifierar -kompaktifieras -kompaktifierat -kompaktifierats -kompani -kompanier -kompanierna -kompaniernas -kompaniers -kompaniet -kompaniets -kompanis -kompanjon -kompanjonen -kompanjonens -kompanjoner -kompanjonerna -kompanjonernas -kompanjoners -kompanjons -kompanjonskap -kompanjonskapet -kompanjonskapets -komparativ -komparativa -komparativt -kompass -kompassen -kompassens -kompasser -kompasserna -kompassernas -kompassers -kompendier -kompendierna -kompendiernas -kompendiers -kompendiet -kompendiets -kompendium -kompensation -kompensationen -kompensationens -kompensationer -kompensationerna -kompensationernas -kompensationers -kompensations -kompensera -kompenserad -kompenserade -kompenserades -kompenserande -kompenserar -kompenseras -kompenserat -kompenserats -kompensering -kompenseringar -kompenseringarna -kompenseringarnas -kompenseringars -kompenseringen -kompenseringens -kompenserings -kompetens -kompetensen -kompetensens -kompetenser -kompetenserna -kompetensernas -kompetensers -kompetent -kompetenta -kompetentare -kompetentast -kompetentaste -kompetente -kompis -kompisar -kompisarna -kompisarnas -kompisars -kompisen -kompisens -komponent -komponenten -komponentens -komponenter -komponenterna -komponenternas -komponenters -komponents -komponera -komponerad -komponerade -komponerades -komponerande -komponerandet -komponerandets -komponerar -komponeras -komponerat -komponerats -komposition -kompositionen -kompositionens -kompositioner -kompositionerna -kompositionernas -kompositioners -kompositions -kompost -komposten -kompostens -komposter -kompostera -komposterade -komposterar -komposterna -komposternas -komposters -kompott -kompotten -kompottens -kompotter -kompotterna -kompotternas -kompotters -kompression -kompressionen -kompressionens -kompressor -kompressorer -kompressorerna -kompressorernas -kompressorers -kompressorn -kompressorns -komprimerad -komprimerade -komprimerades -komprimerar -komprimeras -komprimerat -komprimerats -komprimering -komprimeringen -komprimeringens -komprimerings -kompromettera -komprometterad -komprometterade -komprometterades -komprometterande -komprometterandet -komprometterandets -komprometterar -komprometteras -komprometterat -komprometterats -kompromiss -kompromissa -kompromissade -kompromissades -kompromissande -kompromissandet -kompromissandets -kompromissar -kompromissas -kompromissat -kompromissats -kompromissen -kompromissens -kompromisser -kompromisserna -kompromissernas -kompromissers -kon -koncentrat -koncentraten -koncentratens -koncentratet -koncentratets -koncentration -koncentrationen -koncentrationens -koncentrations -koncentrator -koncentratorn -koncentratorns -koncentrera -koncentrerad -koncentrerade -koncentrerades -koncentrerande -koncentrerandet -koncentrerandets -koncentrerar -koncentreras -koncentrerat -koncentrerats -koncept -koncepten -konceptens -koncepter -koncepterna -koncepternas -koncepters -konceptet -konceptets -koncern -koncernen -koncernens -koncerner -koncernerna -koncernernas -koncerners -koncerns -koncession -koncessionen -koncessionens -koncessioner -koncessionerna -koncessionernas -koncessioners -koncessions -koncis -koncisa -koncisare -koncisast -koncisaste -koncist -kondens -kondensation -kondensationen -kondensationens -kondensations -kondensator -kondensatorer -kondensatorerna -kondensatorernas -kondensatorers -kondensen -kondensens -kondenset -kondensets -kondition -konditionen -konditionens -konditions -kondom -kondomen -kondomens -kondomer -kondomerna -kondomernas -kondomers -kondoms -konen -konens -koner -konerna -konernas -koners -konfekt -konfekten -konfektens -konfektion -konfektionen -konfektionens -konfektions -konfekts -konferencier -konferencierer -konferenciererna -konferencierernas -konferencierers -konferenciern -konferencierns -konferenciers -konferens -konferensen -konferensens -konferenser -konferenserna -konferensernas -konferensers -konferensrum -konferensrummen -konferensrummens -konferensrummet -konferensrummets -konferensrums -konferera -konfererade -konfererades -konfererar -konfereras -konfererat -konfererats -konfiguration -konfigurationen -konfigurationens -konfigurationer -konfigurationerna -konfigurationernas -konfigurationers -konfigurations -konfigurera -konfigurerad -konfigurerade -konfigurerades -konfigurerar -konfigureras -konfigurerat -konfigurerats -konfigurering -konfigureringen -konfigureringens -konfigurerings -konfirmation -konfirmationen -konfirmationens -konfirmationer -konfirmationerna -konfirmationernas -konfirmationers -konfirmations -konfirmera -konfirmerad -konfirmerade -konfirmerades -konfirmerar -konfirmeras -konfirmerat -konfirmerats -konfiskation -konfiskationen -konfiskationens -konfiskationer -konfiskationerna -konfiskationernas -konfiskationers -konfiskations -konfiskera -konfiskerad -konfiskerade -konfiskerades -konfiskerar -konfiskeras -konfiskerat -konfiskerats -konfiskering -konfiskeringen -konfiskeringens -konfiskerings -konformism -konformismen -konformismens -konformistisk -konformistiska -konformistiske -konformistiskt -konformitet -konformiteten -konformitetens -konformitets -konfrontation -konfrontationen -konfrontationens -konfrontationer -konfrontationerna -konfrontationernas -konfrontationers -konfrontations -konfrontera -konfronterad -konfronterade -konfronterades -konfronterar -konfronteras -konfronterat -konfronterats -konfundera -konfunderad -konfunderade -konfunderades -konfunderande -konfunderar -konfunderas -konfunderat -konfunderats -konga -kongas -kongo -kongos -kongress -kongressen -kongressens -kongresser -kongresserna -kongressernas -kongressers -kongruens -kongruensen -kongruensens -kongruent -kongruenta -konjak -konjaken -konjakens -konjaks -konjugera -konjugerad -konjugerade -konjugerades -konjugerar -konjugeras -konjugerat -konjugerats -konjunktion -konjunktionen -konjunktionens -konjunktioner -konjunktionerna -konjunktionernas -konjunktioners -konjunktions -konjunktiv -konjunktiven -konjunktivens -konjunktiver -konjunktiverna -konjunktivernas -konjunktivers -konjunktur -konjunkturen -konjunkturens -konjunkturer -konjunkturerna -konjunkturernas -konjunkturers -konjunkturs -konkatenera -konkatenerade -konkatenerades -konkatenerar -konkateneras -konkatenerat -konkatenerats -konkav -konkava -konkavt -konkordans -konkordansen -konkordansens -konkordanser -konkordanserna -konkordansernas -konkordansers -konkret -konkreta -konkretare -konkretast -konkretaste -konkretisera -konkretiserad -konkretiserade -konkretiserades -konkretiserar -konkretiseras -konkretiserat -konkretiserats -konkurrens -konkurrensen -konkurrensens -konkurrent -konkurrenten -konkurrentens -konkurrenter -konkurrenterna -konkurrenternas -konkurrenters -konkurrera -konkurrerade -konkurrerades -konkurrerande -konkurrerar -konkurreras -konkurrerat -konkurrerats -konkurs -konkursbo -konkursboen -konkursboens -konkursboet -konkursboets -konkursbon -konkursbona -konkursbonas -konkursbons -konkursbos -konkursen -konkursens -konkurser -konkurserna -konkursernas -konkursers -kons -konsekutiv -konsekutiva -konsekutivt -konsekvens -konsekvensen -konsekvensens -konsekvenser -konsekvenserna -konsekvensernas -konsekvensers -konsekvent -konsekventa -konsekventare -konsekventast -konsekventaste -konsekvente -konsert -konserten -konsertens -konserter -konserterna -konserternas -konserters -konsertprogram -konsertprogrammen -konsertprogrammens -konsertprogrammet -konsertprogrammets -konsertprograms -konserv -konservatism -konservatismen -konservatismens -konservativ -konservativa -konservativare -konservativas -konservativast -konservativaste -konservative -konservatives -konservativt -konservator -konservatorn -konservatorns -konservators -konservburk -konservburkar -konservburkarna -konservburkarnas -konservburkars -konservburken -konservburkens -konservburks -konserven -konservens -konserver -konservera -konserverad -konserverade -konserverades -konserverande -konserverar -konserveras -konserverat -konserverats -konservering -konserveringar -konserveringarna -konserveringarnas -konserveringars -konserveringen -konserveringens -konserverings -konserverna -konservernas -konservers -konsistens -konsistensen -konsistensens -konsistent -konsistenta -konsonans -konsonansen -konsonansens -konsonanser -konsonanserna -konsonansernas -konsonansers -konsonant -konsonanten -konsonantens -konsonanter -konsonanterna -konsonanternas -konsonanters -konsortier -konsortierna -konsortiernas -konsortiers -konsortiet -konsortiets -konsortium -konspiration -konspirationen -konspirationens -konspirationer -konspirationerna -konspirationernas -konspirationers -konspirations -konspirationsteori -konspirationsteorien -konspirationsteoriens -konspirationsteorier -konspirationsteorierna -konspirationsteoriernas -konspirationsteoriers -konspiratorisk -konspiratoriska -konspiratoriskt -konspirera -konspirerade -konspirerande -konspirerar -konspirerat -konst -konstant -konstanta -konstanten -konstantens -konstanter -konstanterna -konstanternas -konstanters -konstatera -konstaterad -konstaterade -konstaterades -konstaterande -konstateranden -konstaterandena -konstaterandenas -konstaterandens -konstaterandes -konstaterandet -konstaterandets -konstaterar -konstateras -konstaterat -konstaterats -konstbevattning -konstbevattningen -konstbevattningens -konstbevattnings -konsten -konstens -konster -konsterna -konsternas -konsters -konstgjord -konstgjorda -konstgjort -konstig -konstiga -konstigare -konstigast -konstigaste -konstige -konstighet -konstigheten -konstighetens -konstigheter -konstigheterna -konstigheternas -konstigheters -konstigt -konstituera -konstituerad -konstituerade -konstituerades -konstituerande -konstituerar -konstitueras -konstituerat -konstituerats -konstitution -konstitutionen -konstitutionens -konstitutioner -konstitutionerna -konstitutionernas -konstitutioners -konstitutions -konstra -konstrade -konstrande -konstrar -konstrat -konstruera -konstruerad -konstruerade -konstruerades -konstruerande -konstruerandet -konstruerandets -konstruerar -konstrueras -konstruerat -konstruerats -konstruktion -konstruktionen -konstruktionens -konstruktioner -konstruktionerna -konstruktionernas -konstruktioners -konstruktions -konstruktiv -konstruktiva -konstruktivism -konstruktivismen -konstruktivismens -konstruktivist -konstruktivisten -konstruktivistens -konstruktivister -konstruktivisterna -konstruktivisternas -konstruktivisters -konstruktivists -konstruktivt -konststycke -konststycken -konststyckena -konststyckenas -konststyckens -konststyckes -konststycket -konststyckets -konstverk -konstverken -konstverkens -konstverket -konstverkets -konstverks -konsument -konsumenten -konsumentens -konsumenter -konsumenterna -konsumenternas -konsumenters -konsumentprisindex -konsumera -konsumerad -konsumerade -konsumerades -konsumerar -konsumeras -konsumerat -konsumerats -konsumtion -konsumtionen -konsumtionens -konsumtions -kontakt -kontakta -kontaktad -kontaktade -kontaktades -kontaktar -kontaktas -kontaktat -kontaktats -kontakten -kontaktens -kontakter -kontakterna -kontakternas -kontakters -kontant -kontanta -kontanter -kontanterna -kontanternas -kontanters -kontenta -kontentan -kontentans -kontext -kontexten -kontextens -kontexter -kontexterna -kontexternas -kontexters -kontinent -kontinenten -kontinentens -kontinenter -kontinenterna -kontinenternas -kontinenters -kontinents -kontingent -kontingenten -kontingentens -kontingenter -kontingenterna -kontingenternas -kontingenters -kontinuitet -kontinuiteten -kontinuitetens -konto -kontokort -kontokorten -kontokortens -kontokortet -kontokortets -kontokorts -konton -kontona -kontonas -kontons -kontor -kontoren -kontorens -kontoret -kontorets -kontorist -kontoristen -kontoristens -kontorister -kontoristerna -kontoristernas -kontoristers -kontors -kontot -kontots -kontra -kontrade -kontrades -kontradiktion -kontradiktionen -kontradiktionens -kontradiktioner -kontradiktionerna -kontradiktionernas -kontradiktioners -kontradiktions -kontrahent -kontrahenten -kontrahentens -kontrahenter -kontrahenterna -kontrahenternas -kontrahenters -kontrakt -kontrakten -kontraktens -kontraktera -kontrakterad -kontrakterade -kontrakterades -kontrakterar -kontrakteras -kontrakterat -kontrakterats -kontraktet -kontraktets -kontraktion -kontraktionen -kontraktionens -kontraktioner -kontraktionerna -kontraktionernas -kontraktioners -kontraktions -kontrakts -kontrande -kontrar -kontrast -kontrasten -kontrastens -kontraster -kontrastera -kontrasterad -kontrasterade -kontrasterades -kontrasterande -kontrasterar -kontrasteras -kontrasterat -kontrasterats -kontrasterna -kontrasternas -kontrasters -kontrat -kontrats -kontring -kontringar -kontringarna -kontringarnas -kontringars -kontringen -kontringens -kontrings -kontrovers -kontroversen -kontroversens -kontroverser -kontroverserna -kontroversernas -kontroversers -kontur -konturen -konturens -konturer -konturerna -konturernas -konturers -konung -konungar -konungarike -konungarikena -konungarikenas -konungariket -konungarikets -konungarna -konungarnas -konungars -konungason -konungasonen -konungasonens -konungen -konungens -konungs -konvenans -konvenansen -konvenansens -konvent -konventen -konventens -konventet -konventets -konvention -konventionen -konventionens -konventioner -konventionerna -konventionernas -konventioners -konventions -konvents -konvergens -konvergensen -konvergensens -konvergent -konvergenta -konvergera -konvergerade -konvergerande -konvergerar -konvergerat -konversation -konversationen -konversationens -konversationer -konversationerna -konversationernas -konversationers -konversations -konversera -konverserad -konverserade -konverserades -konverserande -konverserar -konverseras -konverserat -konverserats -konverter -konvertera -konverterad -konverterade -konverterades -konverterar -konverteras -konverterat -konverterats -konvertering -konverteringar -konverteringarna -konverteringarnas -konverteringars -konverteringen -konverteringens -konverterings -konvertern -konverterns -konvertrar -konvertrarna -konvertrarnas -konvertrars -konvex -konvexa -konvext -konvoj -konvojen -konvojens -konvojer -konvojerna -konvojernas -konvojers -kooperation -kooperationen -kooperationens -kooperations -kooperativ -kooperativa -kooperativt -koordinat -koordinaten -koordinatens -koordinater -koordinaterna -koordinaternas -koordinaters -koordination -koordinationen -koordinationens -koordinations -koordinera -koordinerad -koordinerade -koordinerades -koordinerande -koordinerar -koordineras -koordinerat -koordinerats -kopia -kopian -kopians -kopiator -kopiatorer -kopiatorerna -kopiatorernas -kopiatorers -kopiatorn -kopiatorns -kopiera -kopierad -kopierade -kopierades -kopierar -kopierat -kopierats -kopiering -kopieringen -kopieringens -kopierings -kopieringsapparat -kopieringsapparaten -kopieringsapparatens -kopieringsapparater -kopieringsapparaterna -kopieringsapparaternas -kopieringsapparaters -kopieringsmaskin -kopieringsmaskinen -kopieringsmaskinens -kopieringsmaskiner -kopieringsmaskinerna -kopieringsmaskinernas -kopieringsmaskiners -kopieringsutrustning -kopieringsutrustningen -kopieringsutrustningens -kopieringsutrustnings -kopior -kopiorna -kopiornas -kopiors -kopist -kopisten -kopistens -kopp -koppar -kopparberg -kopparbergs -kopparen -kopparens -kopparn -kopparna -kopparnas -kopparns -kopparorm -kopparormar -kopparormarna -kopparormarnas -kopparormars -kopparormen -kopparormens -koppars -kopparstick -kopparsticket -kopparstickets -koppen -koppens -koppom -koppoms -koppor -kopporna -koppornas -koppors -koptisk -koptiska -koptiskt -kor -kora -korad -korade -korades -koranen -koranens -korar -koras -korat -korats -korda -kordan -kordans -kordas -korea -korean -koreanen -koreanens -koreaner -koreanerna -koreanernas -koreaners -koreansk -koreanska -koreanskan -koreanskans -koreanskas -koreanskor -koreanskorna -koreanskornas -koreanskors -koreanskt -koreas -koreograf -koreografi -koret -korets -korg -korgar -korgarna -korgarnas -korgars -korgen -korgens -korgs -korint -korinten -korintens -korinter -korinterna -korinternas -korinters -korist -koristen -koristens -korister -koristerna -koristernas -koristers -kork -korka -korkad -korkade -korkades -korkar -korkarna -korkarnas -korkars -korkas -korkat -korkats -korkek -korkekar -korkekarna -korkekarnas -korkekars -korkeken -korkekens -korken -korkens -korn -korna -kornas -kornen -kornens -kornet -kornets -kornett -kornetten -kornettens -kornetter -kornetterna -kornetternas -kornetters -kornig -korniga -kornigare -kornigast -kornigaste -kornigt -kornknarr -kornknarrar -kornknarrarna -kornknarrarnas -kornknarrars -kornknarren -kornknarrens -kornknarrs -korp -korpar -korparna -korparnas -korpars -korpen -korpens -korporation -korporationen -korporationens -korporationer -korporationerna -korporationernas -korporationers -korporations -korporativ -korporativa -korporativism -korporativismen -korporativismens -korporativt -korrekt -korrekta -korrektare -korrektast -korrektaste -korrekte -korrekthet -korrektheten -korrekthetens -korrekthets -korrektion -korrektionen -korrektionens -korrektioner -korrektionerna -korrektionernas -korrektioners -korrektions -korrektiv -korrektiven -korrektivens -korrektivet -korrektivets -korrektur -korrekturen -korrekturens -korrekturet -korrekturets -korrekturs -korrespondens -korrespondensen -korrespondensens -korrespondenser -korrespondenserna -korrespondensernas -korrespondensers -korrespondent -korrespondenten -korrespondentens -korrespondenter -korrespondenterna -korrespondenternas -korrespondenters -korrespondera -korresponderade -korresponderande -korresponderar -korresponderat -korridor -korridoren -korridorens -korridorer -korridorerna -korridorernas -korridorers -korrigera -korrigerad -korrigerade -korrigerades -korrigerande -korrigerar -korrigeras -korrigerat -korrigerats -korrigering -korrigeringar -korrigeringarna -korrigeringarnas -korrigeringars -korrigeringen -korrigeringens -korrigerings -korrosion -korrosionen -korrosionens -korrugerad -korrugerade -korrugerat -korrumpera -korrumperad -korrumperade -korrumperades -korrumperande -korrumperar -korrumperas -korrumperat -korrumperats -korrupt -korrupta -korrupte -korruption -korruptionen -korruptionens -korruptions -kors -korsa -korsad -korsade -korsades -korsande -korsar -korsas -korsat -korsats -korsberga -korsbergas -korsen -korsens -korset -korsets -korsett -korsetten -korsettens -korsetter -korsetterna -korsetternas -korsetters -korsfarare -korsfararen -korsfararens -korsfarares -korsfararna -korsfararnas -korsikansk -korsikanska -korsikanskt -korskrogen -korskrogens -korsning -korsningar -korsningarna -korsningarnas -korsningars -korsningen -korsningens -korsnings -korsord -korsordet -korsordets -korsvis -kort -korta -kortade -kortades -kortar -kortare -kortas -kortast -kortaste -kortat -kortats -korte -korten -kortens -kortet -kortets -kortfattad -kortfattade -kortfattat -korthet -kortsiktig -kortsiktiga -kortsiktigare -kortsiktigast -kortsiktigaste -kortsiktigt -kortsynt -kortsynta -kortsynthet -kortsyntheten -kortsynthetens -kortsynthets -kortvarig -kortvariga -kortvarigare -kortvarigast -kortvarigaste -kortvarigt -korus -korv -korvar -korvarna -korvarnas -korvars -korven -korvens -korvstoppning -korvstoppningen -korvstoppningens -korvstoppnings -kos -kosa -kosack -kosacken -kosackens -kosacker -kosackerna -kosackernas -kosackers -kosan -kosans -kosmetik -kosmetika -kosmetiken -kosmetikens -kosmetisk -kosmetiska -kosmetiskt -kosmisk -kosmiska -kosmiskt -kosmonaut -kosmonauten -kosmonautens -kosmonauter -kosmonauterna -kosmonauternas -kosmonauters -kosmos -kossa -kossan -kossans -kossor -kossorna -kossornas -kossors -kost -kosta -kostade -kostar -kostas -kostat -kosten -kostens -kostnad -kostnaden -kostnadens -kostnader -kostnaderna -kostnadernas -kostnaders -kostnads -kostnadsfri -kostnadsfria -kostnadsfritt -kostsam -kostsamma -kostsammare -kostsammast -kostsammaste -kostsamt -kostym -kostymen -kostymens -kostymer -kostymerna -kostymernas -kostymers -kota -kotan -kotans -kotas -kotor -kotorna -kotornas -kotors -kottar -kottarna -kottarnas -kottars -kotte -kotten -kottens -kotteri -kotteriet -kotteriets -kottes -krabba -krabban -krabbans -krabbor -krabborna -krabbornas -krabbors -krafs -krafsa -krafsade -krafsades -krafsar -krafsas -krafsat -krafsats -krafset -krafsets -kraft -kraften -kraftens -krafter -krafterna -krafternas -krafters -kraftig -kraftiga -kraftigare -kraftigast -kraftigaste -kraftige -kraftigt -krafttag -kraftverk -kraftverken -kraftverkens -kraftverket -kraftverkets -kraftverks -kraftyttring -kraftyttringar -kraftyttringarna -kraftyttringarnas -kraftyttringars -kraftyttringen -kraftyttringens -kraftyttrings -kragar -kragarna -kragarnas -kragars -krage -kragen -kragens -krages -krake -kram -krama -kramad -kramade -kramades -kramar -kramarna -kramarnas -kramars -kramas -kramat -kramats -kramen -kramens -kramfors -kramp -krampaktig -krampaktiga -krampaktigt -krampen -krampens -kramper -kramperna -krampernas -krampers -krams -kran -kranar -kranarna -kranarnas -kranars -kranen -kranens -kranier -kranierna -kraniernas -kraniers -kraniet -kraniets -kranium -krank -kranka -krankhet -krankheten -krankhetens -krankhets -krankt -krans -kransa -kransad -kransade -kransades -kransar -kransarna -kransarnas -kransars -kransas -kransat -kransats -kransen -kransens -kras -krasch -krascha -kraschad -kraschade -kraschades -kraschar -kraschas -kraschat -kraschats -kraschen -kraschens -krascher -krascherna -kraschernas -kraschers -krass -krassa -krassare -krassast -krassaste -krasse -krassen -krassens -krasst -krater -kratern -kraterns -kratrar -kratrarna -kratrarnas -kratrars -kratta -krattad -krattade -krattades -krattan -krattande -krattans -krattar -krattas -krattat -krattats -krattor -krattorna -krattornas -krattors -krav -kraven -kravens -kravet -kravets -kravs -kreation -kreationen -kreationens -kreationer -kreationerna -kreationernas -kreationers -kreations -kreativ -kreativa -kreativare -kreativast -kreativaste -kreativitet -kreativiteten -kreativitetens -kreativt -kreatur -kreaturen -kreaturens -kreaturet -kreaturets -kredit -krediten -kreditens -krediter -krediterna -krediternas -krediters -kreditkonto -kreditkontot -kreditkontots -kreditkort -kreditkorten -kreditkortens -kreditkortet -kreditkortets -kreditkorts -krematorier -krematorierna -krematoriernas -krematoriers -krematoriet -krematoriets -krematorium -kreti -kretin -kretinen -kretinens -kretiner -kretinerna -kretinernas -kretiners -krets -kretsa -kretsade -kretsar -kretsarna -kretsarnas -kretsars -kretsat -kretsen -kretsens -kricket -krig -kriga -krigade -krigades -krigar -krigare -krigaren -krigarens -krigares -krigarna -krigarnas -krigas -krigat -krigats -krigen -krigens -kriget -krigets -krigisk -krigiska -krigiskt -krigs -krigsgud -krigsgudar -krigsgudarna -krigsgudarnas -krigsgudars -krigsguden -krigsgudens -krigskamrat -krigskamraten -krigskamratens -krigskamrater -krigskamraterna -krigskamraternas -krigskamraters -krigsmakt -krigsmakten -krigsmaktens -krigsmakts -krigsman -krigsmans -krigstid -krigstiden -krigstidens -krigstider -krigstiderna -krigstidernas -krigstiders -krigstids -kring -kringgick -kringgicks -kringresande -kringsmygande -kris -krisen -krisens -kriser -kriserna -krisernas -krisers -krispunkt -krispunkter -krispunkterna -krispunkternas -krispunkters -kristen -kristendom -kristendomen -kristendomens -kristenhet -kristenheten -kristenhetens -krister -kristers -kristet -kristi -kristian -kristianstad -kristianstads -kristineberg -kristinebergs -kristinehamn -kristinehamns -kristna -kristnas -kristne -kristnes -kristoffer -kristoffers -kristoffersson -kristofferssons -kristus -krita -kritan -kritans -kritas -kriterier -kriterierna -kriteriernas -kriteriers -kriteriet -kriteriets -kriterium -kritik -kritiken -kritikens -kritiker -kritikern -kritikerna -kritikernas -kritikerns -kritikers -kritisera -kritiserad -kritiserade -kritiserades -kritiserar -kritiseras -kritiserat -kritiserats -kritisk -kritiska -kritiskt -kritor -kritorna -kritornas -kritors -kroat -kroaten -kroatens -kroater -kroaterna -kroaternas -kroaters -kroatien -kroatiens -kroatisk -kroatiska -kroatiskt -krock -krocka -krockade -krockar -krockarna -krockarnas -krockars -krockat -krocken -krockens -krocket -krocks -krog -krogar -krogarna -krogarnas -krogars -krogen -krogens -krogs -krok -krokar -krokarna -krokarnas -krokars -krokben -krokbent -krokbenta -kroken -krokens -kroki -krokier -krokierna -krokiernas -krokiers -krokig -krokiga -krokigare -krokigast -krokigaste -krokigt -krokin -krokins -krokom -krokoms -krokus -krokusar -krokusarna -krokusarnas -krokusars -krokusen -krokusens -krom -kromen -kromens -kromet -kromets -kromosom -kromosomen -kromosomens -kromosomer -kromosomerna -kromosomernas -kromosomers -krona -kronan -kronans -kronas -kroniker -kronikern -kronikerna -kronikernas -kronikerns -kronikers -kronisk -kroniska -kroniskt -kronoberg -kronobergs -kronofogdar -kronofogdarna -kronofogdarnas -kronofogdars -kronofogde -kronofogden -kronofogdens -kronofogdes -kronokusk -kronometer -kronometern -kronometerns -kronometrar -kronometrarna -kronometrarnas -kronometrars -kronor -kronorna -kronornas -kronors -kronprins -kronprinsar -kronprinsarna -kronprinsarnas -kronprinsars -kronprinsen -kronprinsens -kropp -kroppar -kropparna -kropparnas -kroppars -kroppen -kroppens -kropps -kroppshydda -kroppshyddan -kroppshyddans -kroppshyddas -kroppsvisitation -kroppsvisitationen -kroppsvisitationens -kroppsvisitations -kroppsvisitera -kroppsvisiterad -kroppsvisiterade -kroppsvisiterades -kroppsvisiterar -kroppsvisiterat -kroppsvisiterats -kross -krossa -krossad -krossade -krossades -krossande -krossar -krossas -krossat -krossats -krossen -krossens -krosset -krossets -krubba -krubban -krubbans -krubbas -krubbor -krubborna -krubbornas -krubbors -kruka -krukan -krukans -krukas -krukmakare -krukmakaren -krukmakarens -krukmakares -krukmakarna -krukmakarnas -krukor -krukorna -krukornas -krukors -krum -krumbukta -krumbuktade -krumbuktar -krumbuktat -krumma -krumt -krupen -krupet -krupit -krupits -krupna -krupp -kruppen -kruppens -krus -krusa -krusade -krusar -krusas -krusat -krusen -krusens -kruset -krusets -krusig -krusiga -krusigt -krusning -krusningar -krusningarna -krusningarnas -krusningars -krusningen -krusningens -krusnings -krut -krutet -krutets -krux -kruxen -kruxens -kruxet -kruxets -kry -krya -kryade -kryar -kryare -kryast -kryaste -kryat -krycka -kryckan -kryckans -kryckor -kryckorna -kryckornas -kryckors -krydda -kryddad -kryddade -kryddades -kryddan -kryddans -kryddar -kryddas -kryddat -kryddats -kryddor -kryddorna -kryddornas -kryddors -kryddpeppar -krymp -krympa -krympande -krympas -krymper -krympning -krympningar -krympningarna -krympningarnas -krympningars -krympningen -krympningens -krympnings -krymps -krympt -krympta -krympte -krymptes -krympts -kryp -krypa -krypande -krypandet -krypandets -krypas -krypen -krypens -kryper -krypet -krypets -krypning -krypningen -krypningens -krypnings -kryps -krypta -kryptan -kryptans -kryptera -krypterad -krypterade -krypterades -krypterar -krypteras -krypterat -krypterats -kryptering -krypteringen -krypteringens -krypterings -kryptisk -kryptiska -kryptiskt -kryptor -kryptorna -kryptornas -kryptors -kryss -kryssa -kryssad -kryssade -kryssades -kryssar -kryssare -kryssaren -kryssarens -kryssares -kryssarna -kryssarnas -kryssas -kryssat -kryssats -kryssen -kryssens -krysset -kryssets -krysta -krystade -krystades -krystande -krystar -krystas -krystat -krystats -krytt -kub -kuba -kuban -kubanen -kubanens -kubaner -kubanerna -kubanernas -kubaners -kubansk -kubanska -kubanskan -kubanskans -kubanskas -kubanske -kubanskt -kubas -kuben -kubens -kuber -kuberna -kubernas -kubers -kubik -kubikmeter -kubiks -kubisk -kubiska -kubiskt -kubism -kubismen -kubismens -kuddar -kuddarna -kuddarnas -kuddars -kudde -kudden -kuddens -kuddes -kufisk -kufiska -kufiskt -kugga -kuggad -kuggade -kuggades -kuggande -kuggar -kuggarna -kuggarnas -kuggars -kuggas -kuggat -kuggats -kugge -kuggen -kuggens -kummin -kumpan -kumpanen -kumpanens -kumpaner -kumpanerna -kumpanernas -kumpaners -kund -kunde -kunden -kundens -kunder -kunderna -kundernas -kunders -kunds -kung -kungahus -kungahusen -kungahusens -kungahuset -kungahusets -kungar -kungarike -kungarikena -kungarikenas -kungariket -kungarikets -kungarna -kungarnas -kungars -kungen -kungens -kungjord -kungjorda -kungjorde -kungjordes -kungjort -kungjorts -kungs -kungsbacka -kungsbackas -kungshamn -kungshamns -kungsord -kunna -kunnande -kunnandet -kunnandets -kunnat -kunnig -kunniga -kunnigare -kunnigast -kunnigaste -kunnige -kunnigt -kunskap -kunskapen -kunskapens -kunskaper -kunskaperna -kunskapernas -kunskapers -kunskaps -kunskapsbas -kunskapsbasen -kunskapsbasens -kupa -kupad -kupade -kupades -kupan -kupande -kupans -kupar -kupas -kupat -kupats -kupering -kuperingar -kuperingarna -kuperingarnas -kuperingars -kuperingen -kuperingens -kuperings -kupong -kupongen -kupongens -kuponger -kupongerna -kupongernas -kupongers -kupongs -kupor -kuporna -kupornas -kupors -kupp -kuppen -kuppens -kupper -kupperna -kuppernas -kuppers -kur -kura -kurade -kurage -kuragers -kuraget -kurant -kuranta -kurar -kurarna -kurarnas -kurars -kurat -kurator -kuratorer -kuratorerna -kuratorernas -kuratorers -kuratorn -kuratorns -kurators -kurd -kurden -kurdens -kurder -kurderna -kurdernas -kurders -kurdisk -kurdiska -kurdiske -kurdiskt -kuren -kurens -kurer -kurera -kurerad -kurerade -kurerades -kurerar -kureras -kurerat -kurerats -kurerna -kurernas -kurers -kuriosa -kuriositet -kuriositeten -kuriositetens -kuriositeter -kuriositeterna -kuriositeternas -kuriositeters -kuriosum -kurir -kuriren -kurirens -kurirer -kurirerna -kurirernas -kurirers -kurirs -kurs -kursen -kursens -kurser -kurserna -kursernas -kursers -kursiv -kursiva -kursivera -kursiverad -kursiverade -kursiverades -kursiverar -kursiveras -kursiverat -kursiverats -kursivering -kursiveringar -kursiveringarna -kursiveringarnas -kursiveringars -kursiveringen -kursiveringens -kursiverings -kursivt -kurt -kurts -kurva -kurvan -kurvans -kurvig -kurviga -kurvigare -kurvigast -kurvigaste -kurvigt -kurvor -kurvorna -kurvornas -kurvors -kurvritare -kurvritaren -kurvritarens -kurvritares -kurvritarna -kurvritarnas -kurvskrivare -kurvskrivaren -kurvskrivarens -kurvskrivares -kurvskrivarna -kurvskrivarnas -kuscha -kuschad -kuschade -kuschades -kuschar -kuschas -kuschat -kuschats -kusin -kusinen -kusinens -kusiner -kusinerna -kusinernas -kusiners -kusins -kusk -kuskar -kuskarna -kuskarnas -kuskars -kusken -kuskens -kusmark -kusmarks -kust -kusten -kustens -kuster -kusterna -kusternas -kusters -kuta -kutade -kutar -kutat -kuttra -kuttrade -kuttrar -kuttrat -kutym -kutymen -kutymens -kutymer -kutymerna -kutymernas -kutymers -kuva -kuvad -kuvade -kuvades -kuvar -kuvas -kuvat -kuvats -kuvert -kuverten -kuvertens -kuvertet -kuvertets -kuwait -kuwaits -kvad -kvadda -kvaddad -kvaddade -kvaddades -kvaddar -kvaddas -kvaddat -kvaddats -kvadrat -kvadraten -kvadratens -kvadrater -kvadraterna -kvadraternas -kvadraters -kvadratisk -kvadratiska -kvadratiskt -kvadratmeter -kvadratmetern -kvadratmeterns -kvadratmeters -kvadratmetrar -kvadratmetrarna -kvadratmetrarnas -kvadratmetrars -kvadratur -kvadraturen -kvadraturens -kvantfysik -kvantfysiken -kvantfysikens -kvantifiera -kvantifierad -kvantifierade -kvantifierades -kvantifierande -kvantifierar -kvantifieras -kvantifierat -kvantifierats -kvantifiering -kvantifieringar -kvantifieringarna -kvantifieringarnas -kvantifieringars -kvantifieringen -kvantifieringens -kvantifierings -kvantitativ -kvantitativa -kvantitativt -kvantitet -kvantiteten -kvantitetens -kvantiteter -kvantiteterna -kvantiteternas -kvantiteters -kvantmekanik -kvantmekaniken -kvantmekanikens -kvantum -kvar -kvark -kvarka -kvarkan -kvarkans -kvarkar -kvarkarna -kvarkarnas -kvarkars -kvarken -kvarkens -kvarn -kvarnar -kvarnarna -kvarnarnas -kvarnars -kvarnen -kvarnens -kvarnsten -kvarnstenar -kvarnstenarna -kvarnstenarnas -kvarnstenars -kvarnstenen -kvarnstenens -kvarskatt -kvarskatten -kvarskattens -kvarskatter -kvarskatterna -kvarskatternas -kvarskatters -kvarstad -kvarstaden -kvarstadens -kvarstader -kvarstaderna -kvarstadernas -kvarstaders -kvarstads -kvarstanna -kvarstannade -kvarstannande -kvarstannar -kvarstannat -kvarstod -kvart -kvartar -kvartarna -kvartarnas -kvartars -kvarten -kvartens -kvarter -kvarteren -kvarterens -kvarteret -kvarterets -kvartett -kvartetten -kvartettens -kvartetter -kvartetterna -kvartetternas -kvartetters -kvarvara -kvarvarande -kvast -kvastar -kvastarna -kvastarnas -kvastars -kvasten -kvastens -kvav -kvava -kvavt -kved -kvedar -kvedarna -kvedarnas -kvedars -kveden -kvedens -kveder -kvederna -kvedernas -kveders -kvick -kvicka -kvickare -kvickast -kvickaste -kvicke -kvickhet -kvickheten -kvickhetens -kvickheter -kvickheterna -kvickheternas -kvickheters -kvickhets -kvickna -kvicknade -kvicknar -kvicknat -kvicksund -kvicksunds -kvickt -kvid -kvida -kvidande -kvidandet -kvidandets -kvider -kvidinge -kvidinges -kvidit -kviga -kvigan -kvigans -kvigor -kvigorna -kvigornas -kvigors -kvikkjokk -kvikkjokks -kvinna -kvinnan -kvinnans -kvinnas -kvinnodominerad -kvinnodominerade -kvinnodominerat -kvinnor -kvinnorna -kvinnornas -kvinnors -kvinnosakskvinna -kvinnosakskvinnan -kvinnosakskvinnans -kvinnosakskvinnor -kvinnosakskvinnorna -kvinnosakskvinnornas -kvinnosakskvinnors -kvinnotycke -kvint -kvinten -kvintens -kvinter -kvinterna -kvinternas -kvinters -kvist -kvista -kvistade -kvistades -kvistar -kvistarna -kvistarnas -kvistars -kvistas -kvistat -kvistats -kvisten -kvistens -kvistig -kvistiga -kvistigt -kvistning -kvistningar -kvistningarna -kvistningarnas -kvistningars -kvistningen -kvistningens -kvistnings -kvists -kvitt -kvitta -kvittade -kvittades -kvittar -kvittas -kvittat -kvittats -kvitten -kvittens -kvittensen -kvittensens -kvittenser -kvittenserna -kvittensernas -kvittensers -kvitter -kvittera -kvitterad -kvitterade -kvitterades -kvitterar -kvitteras -kvitterat -kvitterats -kvitto -kvitton -kvittona -kvittonas -kvittons -kvittot -kvittots -kvittra -kvittrade -kvittrades -kvittrande -kvittrandet -kvittrandets -kvittrar -kvittras -kvittrat -kvittrats -kvittret -kvittrets -kvot -kvoten -kvotens -kvoter -kvotera -kvoterade -kvoterar -kvoterat -kvotering -kvoteringar -kvoteringarna -kvoteringarnas -kvoteringars -kvoteringen -kvoteringens -kvoterings -kvoterna -kvoternas -kvoters -kyffe -kyffen -kyffena -kyffenas -kyffens -kyffet -kyffets -kynne -kynnen -kynnena -kynnenas -kynnens -kynnet -kynnets -kypare -kyparen -kyparens -kypares -kyparna -kyparnas -kyrka -kyrkan -kyrkans -kyrkas -kyrkbokens -kyrkby -kyrkbyar -kyrkbyarna -kyrkbyarnas -kyrkbyars -kyrkbyn -kyrkbyns -kyrkbys -kyrkesund -kyrkesunds -kyrkoherde -kyrkoherden -kyrkoherdens -kyrkor -kyrkorna -kyrkornas -kyrkors -kyrktorn -kyrktornet -kyrktornets -kyrkvaktare -kyrkvaktaren -kyrkvaktarens -kyrkvaktares -kyrkvaktarna -kyrkvaktarnas -kysk -kyska -kyskhet -kyskheten -kyskhetens -kyskhets -kyskt -kyss -kyssa -kyssar -kyssarna -kyssarnas -kyssars -kyssas -kyssen -kyssens -kysser -kysst -kyssta -kysste -kysstes -kyssts -madagaskar -madagaskars -madam -madame -madammen -madammens -madammer -madammerna -madammernas -madammers -madonna -madonnan -madonnans -madonnor -madonnorna -madonnornas -madonnors -madrass -madrassen -madrassens -madrasser -madrasserna -madrassernas -madrassers -maestro -maestron -maestrons -maestros -maffia -maffian -maffians -maffias -magar -magarna -magarnas -magars -magasin -magasinen -magasinens -magasinet -magasinets -magasins -mage -magen -magens -mager -magert -magi -magien -magiens -magiker -magikern -magikerna -magikernas -magikerns -magikers -magin -magins -magisk -magiska -magiskt -magister -magistern -magisterns -magisters -magistrar -magistrarna -magistrarnas -magistrars -magnet -magnetband -magnetbanden -magnetbandens -magnetbandet -magnetbandets -magnetbands -magneten -magnetens -magneter -magneterna -magneternas -magneters -magnetisera -magnetiserad -magnetiserade -magnetiserades -magnetiserar -magnetiseras -magnetiserat -magnetiserats -magnetisk -magnetiska -magnetiskt -magnetism -magnetismen -magnetismens -magnifik -magnifika -magnifikare -magnifikast -magnifikaste -magnifikt -magnitud -magnituden -magnitudens -magnituder -magnituderna -magnitudernas -magnituders -magnus -magpumpning -magpumpningar -magpumpningarna -magpumpningarnas -magpumpningars -magpumpningen -magpumpningens -magpumpnings -magra -magrare -magrast -magraste -magstark -magstarka -magstarkt -magtrakten -mahogny -maj -maja -majas -majken -majkens -major -majoren -majorens -majorer -majorerna -majorernas -majorers -majoritet -majoriteten -majoritetens -majoriteter -majoriteterna -majoriteternas -majoriteters -majors -majs -majsen -majsens -maka -makaber -makabert -makabra -makad -makade -makades -makan -makande -makandet -makandets -makans -makar -makarna -makarnas -makaroner -makaronerna -makaronernas -makaroners -makaroni -makaronin -makaronins -makars -makas -makat -makats -make -makedonien -makedoniens -maken -makens -makes -makro -makrokosmos -makron -makrona -makronas -makrons -makrot -makrots -makt -maktberusad -maktberusade -maktberusat -makten -maktens -makter -makterna -makternas -makters -maktfaktor -maktfaktorn -maktfaktorns -maktfaktors -makthavande -makthavare -makthavaren -makthavarens -makthavares -makthavarna -makthavarnas -maktkamp -maktkampen -maktkampens -maktposition -maktpositionen -maktpositionens -maktpositioner -maktpositionerna -maktpositionernas -maktpositioners -maktpositions -mamma -mamman -mammans -mammas -man -mana -manad -manade -manades -management -manande -manandet -manandets -manar -manas -manat -manats -mandat -mandaten -mandatens -mandatet -mandatets -mandats -mandom -mandomen -mandomens -manen -manens -maner -maneren -manerens -maneret -manerets -maners -mangrant -mangskog -mangskogs -manhaftig -manhaftiga -manhaftighet -manhaftigheten -manhaftighetens -manhaftighets -manhaftigt -manifest -manifesta -manifestation -manifestationen -manifestationens -manifestationer -manifestationerna -manifestationernas -manifestationers -manifestations -manifesten -manifestens -manifestera -manifesterad -manifesterade -manifesterades -manifesterar -manifesteras -manifesterat -manifesterats -manifestet -manifestets -manikyr -manikyren -manikyrens -maning -maningar -maningarna -maningarnas -maningars -maningen -maningens -manings -maningsrop -manke -mankemang -mankemanget -mankemangets -manken -mankens -manna -mannaminne -mannan -mannans -mannas -mannen -mannens -mans -manschauvinist -manschauvinisten -manschauvinistens -manschauvinister -manschauvinisterna -manschauvinisternas -manschauvinisters -manschett -manschetten -manschettens -manschetter -manschetterna -manschetternas -manschetters -manschetts -manskap -manskapet -manskapets -mantorp -mantorps -manus -manusen -manusens -manuset -manusets -manuskript -manuskripten -manuskriptens -manuskriptet -manuskriptets -mapp -mappar -mapparna -mapparnas -mappars -mappen -mappens -marcus -margareta -margaretas -margaretha -margarethas -margarin -margarinen -margarinens -margarinet -margarinets -margit -margits -margot -margots -maria -marianne -mariannes -marias -marie -mariefred -mariefreds -maries -mariestad -mariestads -marin -marina -marint -marionett -marionetten -marionettens -marionetter -marionetterna -marionetternas -marionetters -marita -maritas -mark -markant -markanta -markaryd -markaryds -marken -markens -marker -markera -markerad -markerade -markerades -markerar -markerat -markerats -markering -markeringar -markeringarna -markeringarnas -markeringars -markeringen -markeringens -markerings -markerna -markernas -markers -markis -markisen -markisens -markiser -markiserna -markisernas -markisers -marknad -marknaden -marknadens -marknader -marknaderna -marknadernas -marknaders -marknads -marks -markus -marmaverken -marmaverkens -marmor -marmorn -marmorns -marockan -marockanen -marockanens -marockaner -marockanerna -marockanernas -marockaners -marocko -marockos -mars -marsch -marschen -marschens -marscher -marschera -marscherad -marscherade -marscherades -marscherande -marscherandet -marscherandets -marscherar -marscheras -marscherat -marscherats -marscherna -marschernas -marschers -marschvisa -marschvisan -marschvisans -marschvisas -marstrand -marstrands -marta -martas -martin -martina -martinas -martins -martyr -martyren -martyrens -martyrer -martyrerna -martyrernas -martyrers -marxism -marxismen -marxismens -marxist -marxisten -marxistens -marxistisk -marxistiska -marxistiskt -mary -marys -mas -masar -masarna -masarnas -masars -masen -masens -mask -maska -maskan -maskans -maskar -maskarna -maskarnas -maskars -masken -maskens -masker -maskera -maskerad -maskerade -maskerades -maskerar -maskeras -maskerat -maskerats -maskering -maskeringar -maskeringarna -maskeringarnas -maskeringars -maskeringen -maskeringens -maskerings -maskerna -maskernas -maskers -maskin -maskinen -maskinens -maskiner -maskineri -maskineriet -maskineriets -maskinerna -maskinernas -maskiners -maskinrum -maskinrummet -maskinrummets -maskopi -maskor -maskorna -maskornas -maskors -maskros -maskrosen -maskrosens -masochistisk -masochistiska -masochistiskt -massa -massachusetts -massaker -massakern -massakerns -massakrer -massakrera -massakrerad -massakrerade -massakrerades -massakrerar -massakrerat -massakrerats -massakrerna -massakrernas -massakrers -massan -massans -massgrav -massgravar -massgravarna -massgravarnas -massgravars -massgraven -massgravens -massiv -massiva -massivare -massivast -massivaste -massivt -massmedia -massmedias -massmedier -massmedierna -massmediernas -massmediers -massmediet -massmediets -massmedium -massor -massorna -massornas -massors -massproducerad -massproducerade -massproducerat -massproduktion -massproduktionen -massproduktionens -massproduktions -massvis -mast -masten -mastens -master -masterna -masternas -masters -mastodont -mastodonten -mastodontens -mastodonter -mastodonterna -mastodonternas -mastodonters -mastodontformat -mastodontprojekt -masturbation -masturbationen -masturbationens -masturbations -masur -mat -mata -matad -matade -matades -matar -matare -mataren -matarens -matares -matarna -matarnas -matas -matat -matats -matbord -matbordet -matbordets -matbords -match -matcha -matchade -matchar -matchat -matchen -matchens -matcher -matcherna -matchernas -matchers -matematik -matematiken -matematikens -matematiker -matematikern -matematikerna -matematikernas -matematikerns -matematikers -matematikprofessor -matematikprofessorer -matematikprofessorerna -matematikprofessorernas -matematikprofessorers -matematikprofessorn -matematikprofessorns -matematikprofessors -matematisk -matematiska -matematiskt -maten -matens -materia -materian -materians -materien -materiens -matfors -mathiss -mathissen -mathissens -matning -matningar -matningarna -matningarnas -matningars -matningen -matningens -matnings -matnyttighet -matnyttigheten -matnyttighetens -matnyttigheter -matnyttigheterna -matnyttigheternas -matnyttigheters -matnyttighets -matris -matrisen -matrisens -matriser -matriserna -matrisernas -matrisers -matros -matrosen -matrosens -matroser -matroserna -matrosernas -matrosers -mats -matservering -matserveringar -matserveringarna -matserveringarnas -matserveringars -matserveringen -matserveringens -matserverings -matsked -matskedar -matskedarna -matskedarnas -matskedars -matskeden -matskedens -matskeds -matt -matta -mattad -mattade -mattan -mattans -mattare -mattast -mattaste -mattat -mattias -mattisudden -mattisuddens -mattmar -mattmars -mattor -mattorna -mattornas -mattors -maud -mauds -mauretanien -mauretaniens -mauritius -max -maxim -maximen -maximens -maximer -maximera -maximerad -maximerade -maximerades -maximerar -maximeras -maximerat -maximerats -maximerna -maximernas -maximers -maximum -mazarin -mazarinen -mazarinens -mazariner -mazarinerna -mazarinernas -mazariners -mazarins -med -medan -medarbetare -medarbetaren -medarbetarens -medarbetares -medarbetarna -medarbetarnas -medborgare -medborgaren -medborgarens -medborgares -medborgarna -medborgarnas -medfaren -medfaret -medfarna -medgav -medge -medger -medges -medgiva -medgivande -medgivandet -medgivandets -medgiven -medgivet -medgivna -medhavd -medhavda -medhavt -media -median -medicin -medicine -medicinen -medicinens -mediciner -medicinering -medicineringen -medicineringens -medicinerna -medicinernas -mediciners -medicins -medicinsk -medicinska -medicinskt -medier -medierna -mediernas -mediers -mediet -mediets -medioker -mediokert -mediokra -meditation -meditationen -meditationens -meditations -meditativ -meditativa -meditativt -meditera -mediterade -mediterar -mediterat -medium -medpassagerare -medpassageraren -medpassagerarens -medpassagerares -medpassagerarna -medpassagerarnas -medrycka -medryckande -medryckandet -medryckandets -medryckas -medrycker -medrycks -medryckt -medryckte -medrycktes -medryckts -medtagas -medtagen -medtages -medtaget -medtagna -medurs -medverka -medverkade -medverkan -medverkande -medverkandet -medverkandets -medverkar -medverkat -medvetande -medvetandet -medvetandets -medveten -medvetenhet -medvetenheten -medvetenhetens -medvetenhets -medvetet -medvetna -medvind -medvinden -medvindens -medvinds -mefitisk -mefitiska -mefitiskt -meja -mejad -mejade -mejades -mejar -mejat -mejats -mejeri -mejerier -mejerierna -mejeriernas -mejeriers -mejeriet -mejeriets -mejerist -mejeristen -mejeristens -mejerister -mejeristerna -mejeristernas -mejeristers -mekanik -mekaniken -mekanikens -mekaniker -mekanikern -mekanikerna -mekanikernas -mekanikerns -mekanikers -mekanisera -mekaniserad -mekaniserade -mekaniserades -mekaniserar -mekaniserat -mekaniserats -mekanisering -mekaniseringen -mekaniseringens -mekaniserings -mekanisk -mekaniska -mekaniskt -mekanism -mekanismen -mekanismens -mekanismer -mekanismerna -mekanismernas -mekanismers -mekanisms -memoar -memoarer -memoarerna -memoarernas -memoarers -memoranda -memorandum -memorera -memorerade -memorerar -memorerat -men -mena -menad -menade -menades -menande -menandet -menandets -menar -menas -menat -menats -mened -menedare -menedaren -menedarens -menedares -menedarna -menedarnas -meneden -menedens -meneder -menederna -menedernas -meneders -menig -meniga -menige -menighet -menigheten -menighetens -menigt -mening -meningar -meningarna -meningarnas -meningars -meningen -meningens -menings -meningsutbyte -meningsutbyten -meningsutbytens -ment -menuett -menuetten -menuettens -menuetter -menuetterna -menuetternas -menuetters -menuetts -meny -menyer -menyerna -menyernas -menyers -menyn -menyns -menys -mer -mera -meridian -meridianen -meridianens -meridianer -meridianerna -meridianernas -meridianers -meridians -merit -meriten -meritens -meriter -meritera -meriterad -meriterade -meriterades -meriterande -meriterar -meriterat -meriterats -meriterna -meriternas -meriters -merits -merkurius -meromorf -meromorfa -meromorft -merpart -merparten -merpartens -mesig -mesiga -mesigt -mest -mesta -meta -metad -metade -metades -metafor -metaforen -metaforens -metaforer -metaforerna -metaforernas -metaforers -metaforisk -metaforiska -metaforiskt -metafors -metafysik -metafysiken -metafysikens -metafysisk -metafysiska -metafysiskt -metamorfos -metamorfosen -metamorfosens -metamorfoser -metamorfoserna -metamorfosernas -metamorfosers -metande -metandet -metandets -metar -metas -metat -metats -meteor -meteoren -meteorens -meteorer -meteorerna -meteorernas -meteorers -meteorit -meteoriten -meteoritens -meteoriter -meteoriterna -meteoriternas -meteoriters -meteorits -meter -metern -meterns -meters -metod -metoden -metodens -metoder -metoderna -metodernas -metoders -metodik -metodiken -metodikens -metodisk -metodiska -metodiskt -metods -metrar -metrarna -metrarnas -metrars -metrostation -metrostationen -metrostationens -metrostationer -metrostationerna -metrostationernas -metrostationers -metrostations -mexico -mexicos -mexikan -mexikanen -mexikanens -mexikaner -mexikanerna -mexikanernas -mexikaners -mexikanska -mexikanskan -mexikanskans -mexikanskas -mexikanskor -mexikanskorna -mexikanskornas -mexikanskors -mexiko -mexikos -middag -middagar -middagarna -middagarnas -middagars -middagen -middagens -middags -middagsbord -middagsborden -middagsbordens -middagsbordet -middagsbordets -middagsbords -middagsdisk -middagsdisken -middagsdiskens -middagsrast -middagsrasten -middagsrastens -middagsraster -middagsrasterna -middagsrasternas -middagsrasters -middagsrasts -middagsrest -middagsresten -middagsrestens -middagsrester -middagsresterna -middagsresternas -middagsresters -middagstid -middagstiden -middagstidens -midja -midjan -midjans -midjor -midjorna -midjornas -midjors -midnatt -midnatten -midnattens -midnatts -midnattstid -midnattstiden -midnattstidens -midnattstimma -midnattstimman -midnattstimmans -midsommar -midsommaren -midsommarens -midvinternatt -midvinternatten -midvinternattens -mig -mikrofon -mikrofonen -mikrofonens -mikrofoner -mikrofonerna -mikrofonernas -mikrofoners -mikrofons -mikrokosmos -mikroskop -mikroskopen -mikroskopens -mikroskopet -mikroskopets -mikroskops -mimosa -mimosan -mimosans -mimosas -min -mina -mindes -mindre -minen -minens -miner -minera -minerad -minerade -minerades -minerar -mineras -minerat -minerats -minerna -minernas -miners -miniatyr -miniatyren -miniatyrens -miniatyrer -miniatyrerna -miniatyrernas -miniatyrers -miniatyrs -minidator -minidatorer -minidatorerna -minidatorernas -minidatorers -minidatorn -minidatorns -minidators -minima -minimera -minimerad -minimerade -minimerades -minimerar -minimeras -minimerat -minimerats -minimering -minimeringen -minimeringens -minimum -minimumen -minimumens -minimumet -minimumets -minimums -minister -ministerier -ministerierna -ministeriernas -ministeriers -ministeriet -ministeriets -ministerium -ministern -ministerns -ministers -ministrar -ministrarna -ministrarnas -ministrars -mink -minkar -minkarna -minkarnas -minkars -minken -minkens -minks -minnas -minne -minnen -minnena -minnenas -minnens -minnes -minnesanteckning -minnesanteckningar -minnesanteckningarna -minnesanteckningarnas -minnesanteckningars -minnesanteckningen -minnesanteckningens -minnesantecknings -minnesgod -minnesgoda -minnesgott -minnesstarka -minnet -minnets -minns -minoritet -minoriteten -minoritetens -minoriteter -minoriteterna -minoriteternas -minoriteters -minoritets -minoritetsregering -minoritetsregeringar -minoritetsregeringarna -minoritetsregeringarnas -minoritetsregeringars -minoritetsregeringen -minoritetsregeringens -minoritetsregerings -mins -minsann -minska -minskad -minskade -minskades -minskande -minskandet -minskandets -minskar -minskas -minskat -minskats -minskning -minskningar -minskningarna -minskningarnas -minskningars -minskningen -minskningens -minsknings -minst -minsta -minstas -minste -minstes -minus -minusgrad -minusgraden -minusgradens -minusgrader -minusgraderna -minusgradernas -minusgraders -minusgrads -minustecken -minusteckens -minustecknen -minustecknens -minustecknet -minustecknets -minut -minuten -minutens -minuter -minuterna -minuternas -minuters -minuts -miss -missa -missad -missade -missades -missakta -missaktad -missaktade -missaktades -missaktar -missaktas -missaktat -missaktats -missaktning -missaktningen -missaktningens -missaktnings -missande -missandet -missandets -missanpassning -missanpassningen -missanpassningens -missanpassnings -missar -missarna -missarnas -missars -missas -missat -missats -missbruk -missbruka -missbrukad -missbrukade -missbrukades -missbrukar -missbrukare -missbrukaren -missbrukarens -missbrukares -missbrukarna -missbrukarnas -missbrukas -missbrukat -missbrukats -missbruket -missbrukets -missbruks -missen -missens -missgrepp -missgreppen -missgreppens -missgreppet -missgreppets -missgrepps -misshaga -misshagade -misshagar -misshagat -mission -missionen -missionens -missioner -missionerna -missionernas -missioners -missions -missmod -missmodet -missmodets -missmods -missta -misstag -misstagen -misstagens -misstaget -misstagets -misstagit -misstags -misstankar -misstankarna -misstankarnas -misstankars -misstanke -misstanken -misstankens -misstankes -misstog -misstro -misstrodd -misstrodda -misstrodde -misstroddes -misstror -misstros -misstrott -misstrotts -missuppfatta -missuppfattad -missuppfattade -missuppfattades -missuppfattar -missuppfattas -missuppfattat -missuppfattats -missuppfattning -missuppfattningar -missuppfattningarna -missuppfattningarnas -missuppfattningars -missuppfattningen -missuppfattningens -missuppfattnings -missvisning -missvisningar -missvisningarna -missvisningarnas -missvisningars -missvisningen -missvisningens -missvisnings -mist -mista -mistas -mistat -miste -mister -mistes -mists -mitt -mittbena -mittbenan -mittbenans -mittbenor -mittbenorna -mittbenornas -mittbenors -mittemot -mitten -mittens -mittpunkt -mittpunkten -mittpunktens -mittpunkter -mittpunkterna -mittpunkternas -mittpunkters -mittpunkts -mjuk -mjuka -mjukare -mjukas -mjukast -mjukaste -mjuke -mjukes -mjukna -mjuknade -mjuknar -mjuknat -mjukt -mjukvara -mjukvaran -mjukvarans -mjukvaras -moar -moarna -moarnas -moars -mobba -mobbad -mobbade -mobbades -mobbar -mobbas -mobbat -mobbats -mod -mode -modem -modemen -modemens -modemet -modemets -modems -moder -moderat -moderata -moderbundenhet -moderbundenheten -moderbundenhetens -moderbundenhets -modern -moderna -modernare -modernas -modernast -modernaste -moderne -modernes -modernisera -moderniserad -moderniserade -moderniserades -moderniserar -moderniseras -moderniserat -moderniserats -modernisering -moderniseringar -moderniseringarna -moderniseringarnas -moderniseringars -moderniseringen -moderniseringens -moderniserings -modernism -modernismen -modernismens -modernitet -moderniteten -modernitetens -moderniteter -moderniteterna -moderniteternas -moderniteters -modernitets -moderns -modernt -moders -modet -modets -modifiera -modifierad -modifierade -modifierades -modifierar -modifieras -modifierat -modifierats -modifiering -modifieringar -modifieringarna -modifieringarnas -modifieringars -modifieringen -modifieringens -modifierings -modifikation -modifikationen -modifikationens -modifikationer -modifikationerna -modifikationernas -modifikationers -modifikations -modig -modiga -modigare -modigast -modigaste -modigt -mods -mogen -moget -mogna -mognad -mognaden -mognadens -mognads -mognare -mognast -mognaste -moheda -mohedas -mojna -mojnade -mojnar -mojnat -moment -momenten -momentens -momentet -momentets -moments -moms -momsen -momsens -mon -mona -monaco -monacos -monark -monarken -monarkens -monarker -monarkerna -monarkernas -monarkers -monarki -monarkier -monarkierna -monarkiernas -monarkiers -monarkin -monarkins -monarkis -monarks -monas -monica -monicas -monika -monikas -monistisk -monistiska -monistiskt -monitor -monitorer -monitorerna -monitorernas -monitorers -monitorn -monitorns -monitors -monoton -monotona -monotonare -monotonast -monotonaste -monotoni -monotonin -monotonins -monotonis -monotont -mons -monster -monsterna -monsternas -monsters -monstren -monstrens -monstret -monstrets -montage -montagen -montagens -montaget -montagets -monter -montera -monterad -monterade -monterades -monterar -monteras -monterat -monterats -montering -monteringen -monteringens -monterings -montern -monterns -monters -montrar -montrarna -montrarnas -montrars -monument -monumenten -monumentens -monumentet -monumentets -monuments -mor -mora -moran -morans -moras -morasen -morasens -moraset -morasets -morbroder -morbrodern -morbroderns -morbroders -morbror -morbrorn -morbrorns -morbrors -mord -mordbrand -mordbranden -mordbrandens -mordbrands -morden -mordens -mordet -mordets -mordisk -mordiska -mordiskt -mords -moren -morens -morer -morerna -morernas -morers -morfar -morfars -morgnar -morgnarna -morgnarnas -morgnars -morgon -morgondag -morgondagen -morgondagens -morgonen -morgonens -morgonkonversation -morgonkonversationen -morgonkonversationens -morgonkonversationer -morgonkonversationerna -morgonkonversationernas -morgonkonversationers -morgonkonversations -morgonrodnad -morgonrodnaden -morgonrodnadens -morgonrodnader -morgonrodnaderna -morgonrodnadernas -morgonrodnaders -morgonrodnads -morgons -morgonstund -morgonstunden -morgonstundens -mormor -mormors -mormorsmor -mormorsmors -morna -mornade -mornar -mornat -morot -moroten -morotens -morots -mors -morse -morsk -morska -morskare -morskas -morskast -morskaste -morske -morskes -morskt -mos -moset -mosets -moskovit -moskoviten -moskovitens -moskoviter -moskoviterna -moskoviternas -moskoviters -moskovitisk -moskovitiska -moskovitiskt -moskva -moskvas -mossa -mossan -mossans -mossar -mossarna -mossarnas -mossars -mosse -mossen -mossens -mosses -mossig -mossiga -mossigt -mossor -mossorna -mossornas -mossors -moster -mostern -mosterns -mosters -mostrar -mostrarna -mostrarnas -mostrars -mot -mota -motad -motade -motades -motar -motarbeta -motarbetad -motarbetade -motarbetades -motarbetar -motarbetas -motarbetat -motarbetats -motas -motat -motats -motbevisa -motbevisad -motbevisade -motbevisades -motbevisar -motbevisat -motbevisats -motbjudande -motbok -motboken -motbokens -motboks -motdrag -motdragen -motdragens -motdraget -motdragets -motdrags -motion -motionen -motionens -motioner -motionera -motionerade -motionerar -motionerat -motionerna -motionernas -motioners -motions -motiv -motivation -motivationen -motivationens -motivations -motiven -motivens -motivera -motiverad -motiverade -motiverades -motiverar -motiveras -motiverat -motiverats -motivering -motiveringar -motiveringarna -motiveringarnas -motiveringars -motiveringen -motiveringens -motiverings -motivet -motivets -motivs -motocross -motocrossen -motocrossens -motor -motorer -motorerna -motorernas -motorers -motorik -motoriken -motorikens -motoriks -motorn -motorns -motors -motpart -motsagt -motsats -motsatsen -motsatsens -motsatser -motsatserna -motsatsernas -motsatsers -motsatt -motsatta -motser -motstod -motstods -motstridig -motstridiga -motstridigt -motsvara -motsvarad -motsvarade -motsvarades -motsvarande -motsvarandet -motsvarandets -motsvarar -motsvaras -motsvarat -motsvarats -motsvarighet -motsvarigheten -motsvarighetens -motsvarigheter -motsvarigheterna -motsvarigheternas -motsvarigheters -motta -mottaga -mottagare -mottagaren -mottagarens -mottagares -mottagarna -mottagarnas -mottagas -mottagen -mottager -mottages -mottaget -mottagit -mottagits -mottagna -mottagning -mottagningen -mottagningens -mottagnings -motto -mottog -mottogs -motton -mottons -mottos -mottot -mottots -moturs -motverka -motverkad -motverkade -motverkades -motverkande -motverkandet -motverkandets -motverkar -motverkas -motverkat -motverkats -motvikt -motvind -motvinden -motvindens -motvinds -muddra -muddrad -muddrade -muddrades -muddrar -muddras -muddrat -muddrats -muff -muffar -muffarna -muffarnas -muffars -muffen -muffens -muffs -mugg -muggar -muggarna -muggarnas -muggars -muggen -muggens -muggs -mumsa -mumsade -mumsades -mumsande -mumsandet -mumsandets -mumsar -mumsas -mumsat -mumsats -mun -mund -mungipa -mungipan -mungipans -mungipas -mungipor -mungiporna -mungipornas -mungipors -munhuggas -munin -munins -munk -munka -munkar -munkarna -munkarnas -munkars -munkas -munken -munkens -munkfors -munks -munnar -munnarna -munnarnas -munnars -munnen -munnens -muns -munter -munters -muntert -muntra -muntrade -muntrades -muntrar -muntrare -muntras -muntrast -muntraste -muntrat -muntrats -munvighet -munvigheten -munvighetens -munvighets -mur -mura -murad -murade -murades -murar -murare -muraren -murarens -murares -murarna -murarnas -murars -muras -murat -murats -murbruk -murbruken -murbrukens -murbruket -murbrukets -murbruks -muren -murens -murjek -murjeks -murken -murket -murkna -murknade -murknades -murknande -murknandet -murknandets -murknar -murknare -murknas -murknast -murknaste -murknat -murknats -murs -mus -musch -muschen -muschens -muscher -muscherna -muschernas -muschers -museer -museerna -museernas -museers -museet -museets -musen -musens -museum -musik -musikdramatik -musikdramatiken -musikdramatikens -musiken -musikens -musiker -musikerna -musikernas -musikers -musikform -musikformen -musikformens -musikformer -musikformerna -musikformernas -musikformers -musikgenre -musikgenren -musikgenrens -musikinstrument -musikinstrumenten -musikinstrumentens -musikinstrumentet -musikinstrumentets -musikinstruments -musiks -musiksmak -musiksmaken -musiksmakens -musiksmaks -musikstycke -musikstycken -musikstyckena -musikstyckenas -musikstyckens -musikstyckes -musikstycket -musikstyckets -must -mustasch -mustaschen -mustaschens -mustascher -mustascherna -mustaschernas -mustaschers -musten -mustens -mustig -mustiga -mustigt -mutation -mutationen -mutationens -mutationer -mutationerna -mutationernas -mutationers -mutations -muterad -muterade -muterat -mutter -muttra -muttrade -muttrar -muttrat -mycken -mycket -myckna -mygg -mygga -myggan -myggans -myggen -myggens -mygget -myggets -myggor -myggorna -myggornas -myggors -myggs -myndig -myndiga -myndighet -myndigheten -myndighetens -myndigheter -myndigheterna -myndigheternas -myndigheters -myndighets -myndighetsstat -myndigt -mynna -mynnade -mynnar -mynnat -mynning -mynningar -mynningarna -mynningarnas -mynningars -mynningen -mynningens -mynnings -mynt -mynta -myntad -myntade -myntades -myntar -myntas -myntat -myntats -myntet -myntets -myr -myra -myran -myrans -myrar -myrarna -myrarnas -myrars -myren -myrens -myror -myrorna -myrornas -myrors -myrra -myrran -myrrans -myrras -myrstack -myrstackar -myrstackarna -myrstackarnas -myrstackars -myrstacken -myrstackens -myrten -myrtenkrans -mys -mysa -myser -mysig -mysiga -mysigare -mysigast -mysigaste -mysigt -mysko -myst -myste -mysterier -mysterierna -mysteriernas -mysteriers -mysteriet -mysteriets -mysterium -mystik -mystiken -mystikens -mystiker -mystikern -mystikerna -mystikernas -mystikerns -mystikers -mystisk -mystiska -mystiskt -myt -myten -mytens -myter -myteri -myteriet -myteriets -myterna -myternas -myters -mytomspunna -mytomspunnen -mytomspunnet -nacka -nackad -nackade -nackades -nackar -nackas -nackat -nackats -nacke -nacken -nackens -nackskinn -nackskinnet -nackskinnets -nadja -nadjas -naiv -naiva -naivare -naivas -naivast -naivaste -naive -naives -naivism -naivismen -naivismens -naivitet -naiviteten -naivitetens -naivt -najad -najader -najaderna -najadernas -najaders -naken -nakenhet -nakenheten -nakenhetens -nakenhets -naket -nakna -nakne -nakterhus -nakterhuset -nakterhusets -namn -namna -namnad -namnade -namnades -namnar -namnas -namnat -namnats -namnen -namnet -namnets -namngav -namnge -namnkunnig -namnkunniga -namnkunnigare -namnkunnigast -namnkunnigaste -namnkunnigt -namns -namnsdag -namnsdagen -namnsdagens -namnsdags -namnteckning -namnteckningar -namnteckningarna -namnteckningarnas -namnteckningars -namnteckningen -namnteckningens -namntecknings -nancy -nancys -napp -nappa -nappad -nappade -nappades -nappar -napparna -napparnas -nappars -nappas -nappat -nappats -nappen -nappens -nappet -nappets -napps -narkoman -narkomanen -narkomanens -narkomaner -narkomanerna -narkomanernas -narkomaners -narkomans -narkotika -narkotikan -narkotikans -narkotikas -narkotikum -narkotisk -narkotiska -narkotiskt -narr -narrar -narrarna -narrarnas -narrars -narren -narrens -narv -narven -narvens -narvs -nasare -nasaren -nasarens -nasares -nasarna -nasarnas -nation -nationen -nationens -nationer -nationerna -nationernas -nationers -nations -nativiteten -nativitetens -nativitetskurva -nativitetskurvan -nativitetskurvans -natrium -natt -nattavaara -nattavaaraby -nattavaarabys -nattavaaras -nattduksbord -nattduksborden -nattduksbordens -nattduksbordet -nattduksbordets -natten -nattens -nattetid -natthuva -natthuvan -natthuvans -nattvakt -nattvakten -nattvaktens -nattvakter -nattvakterna -nattvakternas -nattvakters -nattvard -nattvarden -nattvardens -nattyxne -natur -naturen -naturens -naturer -naturerna -naturernas -naturers -naturgeografin -naturhistorisk -naturhistoriska -naturhistoriskt -naturtrogen -naturtroget -naturtrogna -naturvetare -naturvetaren -naturvetarens -naturvetares -naturvetarna -naturvetarnas -naturvetenskap -naturvetenskapen -naturvetenskapens -naturvetenskaper -naturvetenskaperna -naturvetenskapernas -naturvetenskapers -naturvetenskaps -navigation -navigationen -navigationens -navigations -navigera -navigerad -navigerade -navigerades -navigerar -navigeras -navigerat -navigerats -nazism -nazismen -nazismens -nazist -nazisten -nazistens -nazister -nazisterna -nazisternas -nazisters -nazistisk -nazistiska -nazistiskt -ned -nedan -nedborrad -nedborrade -nedborrat -nedbruten -nedbrutet -nedbrutna -nedbrytning -nedbrytningen -nedbrytningens -nedbrytnings -nedbrytningsprocess -nedbrytningsprocesser -nedbrytningsprocesserna -nedbrytningsprocessernas -nedbrytningsprocessers -neddraga -neddragning -neddragningar -neddragningarna -neddragningarnas -neddragningars -neddragningen -neddragningens -neddragnings -neder -nederst -nedersta -nedfryst -nedfrysta -nedgjord -nedgjorda -nedgjort -nedom -nedre -nedsatt -nedsatta -nedskrev -nedskriva -nedskriver -nedskrivit -nedstiga -nedstigande -nedstigandet -nedstigandets -nedstiger -nedtaga -nedtager -nedtecknad -nedtecknade -nedtecknat -nedtona -nedtonad -nedtonade -nedtonades -nedtonar -nedtonas -nedtonat -nedtonats -nedtoning -nedtoningen -nedtoningens -nedtonings -nedtrampad -nedtrampade -nedtrampat -nedtryckt -nedtryckta -nedtvinga -nedtvingad -nedtvingade -nedtvingades -nedtvingar -nedtvingas -nedtvingat -nedtvingats -neg -negation -negationen -negationens -negations -negativ -negativa -negativism -negativismen -negativismens -negativt -neger -negera -negerad -negerade -negerades -negerar -negeras -negerat -negerats -negern -negerns -negers -negrer -negrerna -negrernas -negrers -nej -nejd -nejden -nejdens -nejder -nejders -neka -nekad -nekade -nekades -nekar -nekas -nekat -nekats -nektar -nektarn -nektarns -neofobi -neon -neptunus -ner -nerdragen -nerdraget -nerdragna -nere -neri -nersjunken -nersjunket -nersjunkna -nerv -nerven -nervens -nerver -nerverna -nervernas -nervers -nervid -nervositet -nervositeten -nervositetens -nervsystem -nervsystemet -nervsystemets -nesa -nesan -nesans -netto -nettot -nettots -neuros -neurosen -neurosens -neuroser -neuroserna -neurosernas -neurosers -neurotiker -neurotikern -neurotikerna -neurotikernas -neurotikerns -neurotikers -neurotisk -neurotiska -neurotiskt -neutron -neutronen -neutronens -neutroner -neutronerna -neutronernas -neutroners -new -nia -nian -nians -nicaragua -nicaraguas -nick -nicka -nickade -nickar -nickarna -nickarnas -nickars -nickat -nicken -nickens -nickning -nickningar -nickningarna -nickningarnas -nickningars -nickningen -nickningens -nicknings -nidvisa -nidvisan -nidvisans -nidvisas -niga -niger -nigeria -nigerias -nigers -nina -ninas -nio -niohundra -nionde -nior -niorna -niornas -niors -niotusen -nipper -nisch -nischen -nischens -nischer -nischerna -nischernas -nischers -nissafors -nisse -nisses -nit -nita -nitad -nitade -nitades -nitar -nitarna -nitarnas -nitars -nitas -nitat -nitats -niten -nitens -nitisk -nitiska -nitiskt -nitrat -nitratet -nitratets -nitti -nittio -nittioen -nittioett -nittiofem -nittiofyra -nittionde -nittionio -nittiosex -nittiosju -nittiotre -nitton -nittonde -nittonhundra -nittontusen -nittorp -nittorps -njurar -njurarna -njurarnas -njurars -njure -njuren -njurens -njursvikt -njurunda -njurundas -njut -njuta -njutas -njutbar -njutbara -njutbart -njuter -njutit -njutits -njutning -njutningar -njutningarna -njutningarnas -njutningars -njutningen -njutningens -njutnings -njuts -noak -noaks -nod -noden -nodens -noder -noderna -nodernas -noders -nods -nog -noga -noggrann -noggranna -noggrannare -noggrannas -noggrannast -noggrannaste -noggranne -noggrannes -noggrannhet -noggrannheten -noggrannhetens -noggrannhets -noggrant -nokia -nokias -nomad -nomader -nomaderna -nomadernas -nomaders -nominera -nominerad -nominerade -nominerades -nominerar -nomineras -nominerat -nominerats -nominering -nomineringar -nomineringarna -nomineringarnas -nomineringars -nomineringen -nomineringens -nominerings -nonsens -nora -noras -norberg -norbergs -nord -nordan -nordanvind -nordanvinden -nordanvindens -nordbo -nordbon -nordbons -nordbor -nordborna -nordbornas -nordbors -norden -nordens -nordin -nordins -nordisk -nordiska -nordiskt -nordkorea -nordkoreas -nordkoster -nordkosters -nordmarkshyttan -nordmarkshyttans -nordost -norge -norges -norm -normen -normens -normer -normera -normerad -normerade -normerades -normerar -normeras -normerat -normerats -normering -normeringen -normeringens -normerna -normernas -normers -normgrupp -normgruppen -normgruppens -norna -nornan -nornans -nornas -nornor -nornorna -nornornas -nornors -norr -norra -norrahammar -norrahammars -norrfors -norrman -norrmannen -norrmannens -norrmans -norrsken -norrskenet -norrskenets -norrskens -norrsundet -norrsundets -norrut -norsborg -norsborgs -norsk -norska -norskt -norstetds -nos -nosen -nosens -nossebro -nossebros -not -nota -notariat -notarie -notarier -notarierna -notariernas -notariers -notarius -notation -notationen -notationens -notations -noten -notens -noter -notera -noterad -noterade -noterades -noterar -noterat -noterats -notering -noteringar -noteringarna -noteringarnas -noteringars -noteringen -noteringens -noterings -noterna -noternas -noters -notifikation -notifikationen -notifikationens -notifikations -notis -notisen -notisens -notiser -notiserna -notisernas -notisers -notorisk -notoriska -notoriskt -nots -nova -novan -novans -novas -november -novembers -novis -novisen -novisens -noviser -noviserna -novisernas -novisers -nubb -nuet -nuets -numer -numera -numerisk -numeriska -numeriskt -nummer -nummerordning -nummerordningen -nummerordningens -nummerordnings -nummers -numren -numrens -numrera -numrerad -numrerade -numrerades -numrerar -numreras -numrerat -numrerats -numrering -numreringen -numreringens -numret -numrets -numro -nunna -nunnan -nunnans -nunnor -nunnorna -nunnornas -nunnors -nupit -nupits -nutid -nutida -nutiden -nutidens -nuvarande -nya -nyans -nyansen -nyansens -nyanser -nyansera -nyanserad -nyanserade -nyanserades -nyanserar -nyanseras -nyanserat -nyanserats -nyanserna -nyansernas -nyansers -nyanskaffning -nyanskaffningar -nyanskaffningarna -nyanskaffningarnas -nyanskaffningars -nyanskaffningen -nyanskaffningens -nyanskaffnings -nyare -nyas -nyast -nyaste -nybakad -nybakade -nybakat -nyberg -nybergs -nyborg -nyborgs -nybro -nybros -nybyggare -nybyggaren -nybyggarens -nybyggares -nybyggarna -nybyggarnas -nybyggd -nybyggda -nybyggnad -nybyggnaden -nybyggnadens -nybyggt -nyck -nycken -nyckens -nycker -nyckerna -nyckernas -nyckers -nydiskad -nydiskade -nydiskat -nye -nyes -nyfiken -nyfikenhet -nyfikenheten -nyfikenhetens -nyfiket -nyfikna -nyfiknare -nyfiknast -nyfiknaste -nygift -nygifta -nygiftas -nygifte -nygiftes -nyhammar -nyhammars -nyhet -nyheten -nyhetens -nyheter -nyheterna -nyheternas -nyheters -nyhets -nyhetsprogram -nyhetsprogrammen -nyhetsprogrammens -nyhetsprogrammet -nyhetsprogrammets -nyhetsprograms -nyhetsrapportering -nyhetsrapporteringen -nyhetsrapporteringens -nyhetsrapporterings -nyinstiftad -nyinstiftade -nyinstiftat -nykommen -nykommet -nykomna -nykroppa -nykroppas -nykter -nykterist -nykteristen -nykteristens -nyktert -nyktra -nyktrade -nyktrar -nyktrare -nyktrast -nyktraste -nyktrat -nykvarn -nykvarns -nymf -nymfen -nymfens -nymfer -nymferna -nymfernas -nymfers -nymfs -nymodig -nymodiga -nymodigare -nymodigas -nymodigast -nymodigaste -nymodige -nymodiges -nymodighet -nymodigheten -nymodighetens -nymodigheter -nymodigheterna -nymodigheternas -nymodigheters -nymodighets -nymodigt -nyordning -nyordningar -nyordningarna -nyordningarnas -nyordningars -nyordningen -nyordningens -nyordnings -nyp -nypa -nypan -nypans -nypas -nyper -nypor -nyporna -nypornas -nypors -nypris -nyps -nyqvist -nyqvists -nyregistrera -nyregistrerad -nyregistrerade -nyregistrerades -nyregistrerar -nyregistreras -nyregistrerat -nyregistrerats -nyrekrytering -nyrekryteringar -nyrekryteringarna -nyrekryteringarnas -nyrekryteringars -nyrekryteringen -nyrekryteringens -nyrekryterings -nys -nysa -nysas -nyser -nyskapa -nyskapade -nyskapades -nyskapande -nyskapandet -nyskapandets -nyskapar -nyskapas -nyskapat -nyskapats -nyskick -nyskriven -nyskrivet -nyskrivna -nyss -nyst -nysta -nystade -nystar -nystartad -nystartade -nystartat -nystat -nyste -nystes -nysts -nytt -nytta -nyttan -nyttans -nyttig -nyttiga -nyttigare -nyttigas -nyttigast -nyttigaste -nyttige -nyttiges -nyttighet -nyttigheten -nyttighetens -nyttighets -nyttigt -nyttja -nyttjad -nyttjade -nyttjades -nyttjande -nyttjandet -nyttjandets -nyttjar -nyttjas -nyttjat -nyttjats -nyutgiven -nyutgivet -nyutgivna -nyutkommen -nyutkommet -nyutkomna -nyvaknande -oadresserad -oadresserade -oadresserat -oaktat -oaktsamhet -oaktsamheten -oaktsamhetens -oaktsamhets -oanad -oanade -oanat -oansvarig -oansvariga -oansvarigare -oansvarigas -oansvarigast -oansvarigaste -oansvarige -oansvariges -oansvarigt -oas -oasen -oasens -oaser -oaserna -oasernas -oasers -oavbruten -oavbrutet -oavbrutna -oavgjord -oavgjorda -oavgjort -oavkortad -oavkortade -oavkortat -oavsedd -oavsedda -oavsett -obduktion -obduktionen -obduktionens -obduktioner -obduktionerna -obduktionernas -obduktioners -obduktions -obearbetad -obearbetade -obearbetat -obebodd -obebodda -obebott -obedd -obedda -obefogad -obefogade -obefogat -obehag -obehagen -obehagens -obehaget -obehagets -obehags -obehindrad -obehindrade -obehindrat -obekant -obekanta -obekantare -obekantas -obekantast -obekantaste -obekante -obekantes -obekymrad -obekymrade -obekymrat -obemannad -obemannade -obemannat -oberoende -obesmittad -obesmittade -obesmittat -obett -obevakad -obevakade -obevakat -obevandrad -obevandrade -obevandrat -objekt -objekten -objektens -objektiv -objektiva -objektivare -objektivast -objektivaste -objektivism -objektivismen -objektivismens -objektivitet -objektiviteten -objektivitetens -objektivt -objuden -objudet -objudna -objudne -oboe -oboen -oboens -oboer -oboerna -oboernas -oboers -obrukbar -obrukbara -obrukbart -obruten -obrutet -obrutna -observant -observanta -observantare -observantast -observantaste -observation -observationen -observationens -observationer -observationerna -observationernas -observationers -observations -observatorier -observatorierna -observatoriernas -observatoriers -observatoriet -observatoriets -observatorium -observera -observerad -observerade -observerades -observerar -observeras -observerat -observerats -obskyr -obskyra -obskyrt -obstinat -obstinata -obunden -obundet -obundna -ocean -oceanen -oceanens -oceaner -oceanerna -oceanernas -oceaners -ocensurerad -ocensurerade -ocensurerat -och -ock -ocker -ockrare -ockraren -ockrarens -ockrares -ockrarna -ockrarnas -ockupation -ockupationen -ockupationens -ockupations -ockupera -ockuperad -ockuperade -ockuperades -ockuperar -ockuperas -ockuperat -ockuperats -odaterad -odaterade -odaterat -odds -oddsen -oddsens -oddset -oddsets -ode -odefinierad -odefinierade -odefinierat -odefinierbar -odefinierbara -odefinierbart -odemokratisk -odemokratiska -odemokratiskt -oden -odens -odensbacken -odensbackens -odense -odenses -odifferentierad -odifferentierade -odifferentierat -odjur -odjuret -odjurets -odokumenterad -odokumenterade -odokumenterat -oegennyttig -oegennyttiga -oegennyttigt -oengagerad -oengagerade -oengagerat -oenig -oeniga -oenighet -oenigheten -oenighetens -oenighets -oenigt -oense -oerfaren -oerfarenhet -oerfarenheten -oerfarenhetens -oerfarenhets -oerfaret -oerfarna -ofattbar -ofattbara -ofattbart -offensiv -offensiven -offensivens -offensiver -offensiverna -offensivernas -offensivers -offer -offers -offert -offerten -offertens -offerter -offerterna -offerternas -offerters -officer -officerare -officeraren -officerarens -officerares -officerarna -officerarnas -officeren -officerens -officers -officrar -officrarna -officrarnas -officrars -offra -offrad -offrade -offrades -offrar -offras -offrat -offrats -offren -offrens -offret -offrets -ofin -ofina -ofint -ofog -oformaterad -oformaterade -oformaterat -oformatterad -oformatterade -oformatterat -ofrihet -ofriheten -ofrihetens -ofrihets -ofruktbar -ofruktbara -ofruktbart -ofta -oftare -oftast -ogenerad -ogenerade -ogenerat -ogift -ogifta -ogiftas -ogjord -ogjorda -ogjort -ograderad -ograderade -ograderat -ograverad -ograverade -ograverat -ogripbar -ogripbara -ogripbart -ogrundad -ogrundade -ogrundat -ogudaktig -ogudaktiga -ogudaktigas -ogudaktige -ogudaktiges -ogudaktighet -ogudaktigheten -ogudaktighetens -ogudaktigt -ogynnsam -ogynnsamma -ogynnsammare -ogynnsammast -ogynnsammaste -ogynnsamt -ohejdbar -ohejdbara -ohejdbart -ohyfsad -ohyfsade -ohyfsat -ohygienisk -ohygieniska -ohygieniskt -oidentifierad -oidentifierade -oidentifierat -oinitierad -oinitierade -oinitierat -oinsatt -oinsatta -oinspirerad -oinspirerade -oinspirerat -oinsprirerad -oinsprirerade -oinsprirerat -ointressant -ointressanta -ointresse -ointresserad -ointresserade -ointresserat -oinvigd -oinvigda -oinvigt -oja -ojade -ojar -ojat -oken -okens -oket -okets -okritisk -okritiska -okritiskt -okryddad -okryddade -okryddat -oktagon -oktagoner -oktagonerna -oktagonernas -oktagoners -oktav -oktaven -oktavens -oktaver -oktaverna -oktavernas -oktavers -oktett -oktetten -oktettens -oktetter -oktetterna -oktetternas -oktetters -oktober -oktobers -okunnig -okunniga -okunnigare -okunnigast -okunnigaste -okunnighet -okunnigheten -okunnighetens -okunnighets -okunnigt -okunskap -okynne -okynnet -okynnets -omak -omaka -oman -omans -omarbeta -omarbetad -omarbetade -omarbetades -omarbetar -omarbetas -omarbetat -omarbetats -omarbetning -omarbetningar -omarbetningarna -omarbetningarnas -omarbetningars -omarbetningen -omarbetningens -omarbetnings -ombads -ombedd -ombedda -ombedes -ombeds -ombett -ombonad -ombonade -ombonat -ombord -ombud -ombuden -ombudens -ombudet -ombudets -ombuds -ombudsman -ombudsmannen -ombudsmannens -ombudsmans -ombunden -ombundet -ombundna -ombyggd -ombyggda -ombyggnad -ombyggnaden -ombyggnadens -ombyggnads -ombyggt -ombyte -ombytes -ombytet -ombytets -ombytt -ombytta -omdefiniera -omdefinierad -omdefinierade -omdefinierades -omdefinierar -omdefinieras -omdefinierat -omdefinierats -omdirigera -omdirigerad -omdirigerade -omdirigerades -omdirigerar -omdirigeras -omdirigerat -omdirigerats -omdirigering -omdirigeringar -omdirigeringarna -omdirigeringarnas -omdirigeringars -omdirigeringen -omdirigeringens -omdirigerings -omdiskuterad -omdiskuterade -omdiskuterat -omdisponera -omdisponerad -omdisponerade -omdisponerades -omdisponerar -omdisponeras -omdisponerat -omdisponerats -omdisposition -omdispositionen -omdispositionens -omdispositions -omedveten -omedvetet -omedvetna -omega -omen -omfamna -omfamnad -omfamnade -omfamnades -omfamnar -omfamnas -omfamnat -omfamnats -omfatta -omfattad -omfattade -omfattades -omfattande -omfattandet -omfattandets -omfattar -omfattas -omfattat -omfattats -omfattning -omfattningar -omfattningarna -omfattningarnas -omfattningars -omfattningen -omfattningens -omfattnings -omforma -omformad -omformade -omformades -omformandet -omformar -omformas -omformat -omformatera -omformaterad -omformaterade -omformaterades -omformaterar -omformaterat -omformaterats -omformatering -omformateringar -omformateringarna -omformateringarnas -omformateringars -omformateringen -omformateringens -omformaterings -omformats -omgav -omgavs -omge -omger -omges -omgift -omgifta -omgiva -omgivas -omgiven -omgivet -omgivna -omgivning -omgivningar -omgivningarna -omgivningarnas -omgivningars -omgivningen -omgivningens -omgivnings -omgjord -omgjorda -omgjort -omgripande -omigen -omkast -omkasta -omkastad -omkastade -omkastat -omkoda -omkodad -omkodade -omkodades -omkodar -omkodas -omkodat -omkodats -omkom -omkomma -omkommer -omkommit -omkonfigurering -omkonfigureringar -omkonfigureringarna -omkonfigureringarnas -omkonfigureringars -omkonfigureringen -omkonfigureringens -omkonfigurerings -omkostnad -omkostnaden -omkostnadens -omkostnader -omkostnaderna -omkostnadernas -omkostnaders -omkostnads -omkrets -omkretsen -omkretsens -omkring -omnejd -omnipotens -omnipotent -omnipotenta -omnumrering -omnumreringar -omnumreringarna -omnumreringarnas -omnumreringars -omnumreringen -omnumreringens -omnumrerings -omodern -omoderna -omodernt -omogen -omoget -omogna -omognare -omognast -omognaste -omonterad -omonterade -omonterat -omorganisation -omorganisationen -omorganisationens -omorganisations -omorganisera -omorganiserad -omorganiserade -omorganiserades -omorganiserar -omorganiseras -omorganiserat -omorganiserats -omotiverad -omotiverade -omotiverat -omprioritera -omprioriterad -omprioriterade -omprioriterades -omprioriterar -omprioriteras -omprioriterat -omprioriterats -omredigera -omredigerad -omredigerade -omredigerades -omredigerar -omredigeras -omredigerat -omredigerats -omregistrering -omregistreringen -omregistreringens -omregistrerings -omsatt -omsatte -omsider -omskakande -omskapa -omskapad -omskapade -omskapades -omskapar -omskapas -omskapat -omskapats -omskrev -omskriva -omskrivas -omskriven -omskriver -omskrivet -omskrivit -omskrivna -omskrivning -omskrivningar -omskrivningarna -omskrivningarnas -omskrivningars -omskrivningen -omskrivningens -omskrivnings -omskruten -omskrutet -omskrutna -omskuren -omskuret -omskurna -omsorg -omsorgen -omsorgens -omsorger -omsorgerna -omsorgernas -omsorgers -omsorgs -omstart -omstarten -omstartens -omstarter -omstarterna -omstarternas -omstarters -omstarts -omstrukturera -omstrukturerad -omstrukturerade -omstrukturerades -omstrukturerande -omstrukturerandet -omstrukturerandets -omstrukturerar -omstrukturerat -omstrukturerats -omsvep -omtanke -omtyckt -omtyckta -omtydning -omtydningar -omtydningarna -omtydningarnas -omtydningars -omtydningen -omtydningens -omtydnings -ond -onda -ondas -onde -ondes -ondo -ondsint -ondsinta -ondska -ondskan -ondskans -onjutbar -onjutbara -onjutbart -onsdag -onsdagar -onsdagarna -onsdagarnas -onsdagars -onsdagen -onsdagens -onsdags -ont -onyanserad -onyanserade -onyanserat -onykter -onyktert -onyktra -onyttig -onyttiga -onyttigas -onyttigt -onyx -onyxar -onyxarna -onyxarnas -onyxars -onyxen -onyxens -oomskuren -oomskuret -oomskurna -oordning -oordningen -oordningens -oordnings -opak -opaka -opakt -opartisk -opartiska -opartiskt -opassande -opera -operan -operand -operanden -operandens -operander -operanderna -operandernas -operanders -operands -operans -operas -operation -operationen -operationens -operationer -operationerna -operationernas -operationers -operations -operativ -operativa -operativsystem -operativsystemen -operativsystemens -operativsystemet -operativsystemets -operativsystems -operativt -operator -operatorn -operatorns -operators -operaverk -operaverken -operaverkens -operaverket -operaverkets -operaverks -operera -opererad -opererade -opererades -opererar -opererat -opererats -operor -operorna -operornas -operors -opinion -opinionen -opinionens -opinioner -opinionerna -opinionernas -opinioners -opinions -opp -opponent -opponenten -opponentens -opponenter -opponenterna -opponenternas -opponenters -opponents -opponera -opponerad -opponerade -opponerades -opponerande -opponerandet -opponerandets -opponerar -opponeras -opponerat -opponerats -opportun -opportuna -opportunare -opportunas -opportunast -opportunaste -opportune -opportunes -opportunt -opposition -oppositionen -oppositionens -oppositions -opraktisk -opraktiska -opraktiskt -optik -optiken -optikens -optimera -optimerad -optimerade -optimerades -optimerande -optimerandet -optimerandets -optimerar -optimeras -optimerat -optimerats -optimering -optimeringen -optimeringens -optimerings -optimism -optimismen -optimismens -optimist -optimisten -optimistens -optimister -optimisterna -optimisternas -optimisters -optimistisk -optimistiska -optimistiskt -option -optionen -optionens -optioner -optionerna -optionernas -optioners -options -optisk -optiska -optiskt -opus -orakad -orakade -orakat -orange -ord -orda -ordade -ordades -ordar -ordas -ordat -ordats -ordbok -ordboken -ordbokens -ordboks -ordbrytning -ordbrytningar -ordbrytningarna -ordbrytningarnas -ordbrytningars -ordbrytningen -ordbrytningens -ordbrytnings -orden -ordens -order -ordermottagare -ordermottagaren -ordermottagarens -ordermottagares -ordermottagarna -ordermottagarnas -ordermottagning -ordermottagningen -ordermottagningens -ordern -orderna -ordernas -orderns -orders -ordet -ordets -ordfattig -ordfattiga -ordfattigt -ordinarie -ordinera -ordinerad -ordinerade -ordinerades -ordinerar -ordineras -ordinerat -ordinerats -ordna -ordnad -ordnade -ordnades -ordnande -ordnandet -ordnandets -ordnar -ordnas -ordnat -ordnats -ordning -ordningar -ordningarna -ordningarnas -ordningars -ordningen -ordningens -ordnings -ordningsvakt -ordningsvakten -ordningsvaktens -ordningsvakter -ordningsvakterna -ordningsvakternas -ordningsvakters -ordningsvakts -ords -ordvits -ordvitsar -ordvitsarna -ordvitsarnas -ordvitsars -ordvitsen -ordvitsens -oreda -oredan -oredans -oredas -oredigerad -oredigerade -oredigerat -oren -orena -orene -orent -orera -orerade -orerar -orerat -orering -oreringen -oreringens -orerings -oreserverad -oreserverade -oreserverat -oret -organ -organen -organens -organet -organets -organisation -organisationen -organisationens -organisationer -organisationerna -organisationernas -organisationers -organisations -organisationsteori -organisationsteorin -organisationsteorins -organisatorisk -organisatoriska -organisatoriskt -organisera -organiserad -organiserade -organiserades -organiserar -organiseras -organiserat -organiserats -organisk -organiska -organiskt -organism -organismen -organismens -organismer -organismerna -organismernas -organismers -organisms -organist -organisten -organistens -organister -organisterna -organisternas -organisters -organists -organs -orgasm -orgasmen -orgasmens -orgasmer -orgasmerna -orgasmernas -orgasmers -orientera -orienterad -orienterade -orienterades -orienterar -orienterat -orienterats -origo -oriktig -oriktiga -oriktigt -orimmad -orimmade -orimmat -ork -orka -orkade -orkan -orkanen -orkanens -orkaner -orkanerna -orkanernas -orkaners -orkans -orkar -orkas -orkat -orken -orkens -orkester -orkestern -orkesterns -orkestrar -orkestrarna -orkestrarnas -orkestrars -orm -ormar -ormarna -ormarnas -ormars -ormaryd -ormaryds -ormbett -ormbetten -ormbettens -ormbettet -ormbettets -ormbetts -ormbunkar -ormbunkarna -ormbunkarnas -ormbunkars -ormbunke -ormbunken -ormbunkens -ormen -ormens -orms -orna -oro -oroa -oroad -oroade -oroades -oroande -oroar -oroas -oroat -oroats -oron -orons -orosmoment -orosmomentet -orosmomentets -orosmoments -orrar -orrarna -orrarnas -orrars -orre -orrefors -orren -orrens -orres -orsa -orsak -orsaka -orsakad -orsakade -orsakades -orsakande -orsakandet -orsakandets -orsakar -orsakas -orsakat -orsakats -orsaken -orsakens -orsaker -orsakerna -orsakernas -orsakers -orsaks -orsakskedja -orsakskedjan -orsakskedjans -orsakskedjor -orsakskedjorna -orsakskedjornas -orsakskedjors -orsas -ort -orten -ortens -orter -orterna -orternas -orters -ortograf -ortografen -ortografens -ortografer -ortograferna -ortografernas -ortografers -ortografi -ortografien -ortografiens -ortografier -ortografierna -ortografiernas -ortografiers -ortografin -ortografins -ortografisk -ortografiska -ortografiskt -ortografs -ortoped -ortopeden -ortopedens -ortopeder -ortopederna -ortopedernas -ortopeders -ortopedisk -ortopediska -ortopediskt -ortopeds -orts -orvar -orvars -osagd -osagda -osagt -osams -osann -osanna -osant -osby -osbys -oscar -oscars -osedd -osedda -osett -oskadad -oskadade -oskadat -oskadd -oskadda -oskar -oskars -oskarshamn -oskarshamns -oskatt -oskattbar -oskattbara -oskattbart -oskiftad -oskiftade -oskiftat -oskodd -oskodda -oskotsk -oskotska -oskotskt -oskott -oskriven -oskrivet -oskrivna -oskyddad -oskyddade -oskyddat -osorterad -osorterade -osorterat -oss -ost -ostadig -ostadiga -ostadigt -osten -ostens -ostron -ostronen -ostronens -ostronet -ostronets -ostrons -ostrukturerad -ostrukturerade -ostrukturerat -osund -osunda -osunt -osvensk -osvenska -osvenskt -osympatisk -osympatiska -osympatiskare -osympatiskast -osympatiskaste -osympatiske -osympatiskt -osyrad -osyrade -osyrat -osystematiserad -osystematiserade -osystematiserat -otack -otacksam -otacksamhet -otacksamheten -otacksamhetens -otacksamhets -otacksamma -otacksammare -otacksammast -otacksammaste -otacksamt -otid -otro -otrogen -otroget -otrogna -otrogne -otrohet -otroheten -otrohetens -otrohets -otron -otrons -otros -otrygg -otrygga -otrygghet -otryggheten -otrygghetens -otrygghets -otryggt -otto -ottos -otukt -otukten -otuktens -otukts -otur -oturen -oturens -oturs -otvagen -otvaget -otvagna -otvetydig -otvetydiga -otvetydigt -otvungen -otvunget -otvungna -otyg -otygen -otygens -otyget -otygets -outbyggd -outbyggda -outbyggt -outforskad -outforskade -outforskat -ovan -ovana -ovane -ovanjords -ovansida -ovansidan -ovansidans -ovansidas -ovant -ovarsam -ovarsamhet -ovarsamheten -ovarsamhetens -ovarsamma -ovarsammare -ovarsammast -ovarsammaste -ovarsamt -ove -oves -ovetande -ovett -ovidkommande -oviken -ovikens -oviktig -oviktiga -oviktigt -ovis -ovisa -oviss -ovissa -ovisshet -ovissheten -ovisshetens -ovisst -ovist -oxar -oxarna -oxarnas -oxars -oxe -oxen -oxens -oxes -oxford -oxfords -oxid -oxidation -oxidationen -oxidationens -oxidations -oxiden -oxidens -oxider -oxidera -oxiderad -oxiderade -oxiderades -oxiderar -oxideras -oxiderat -oxiderats -oxiderna -oxidernas -oxiders -oxie -oxies -oxvagn -oxvagnar -oxvagnarna -oxvagnarnas -oxvagnars -oxvagnen -oxvagnens -pacifistisk -pacifistiska -pacifistiskt -pack -packa -packad -packade -packades -packande -packandet -packandets -packar -packas -packat -packats -packe -packen -packens -packning -packningar -packningarna -packningarnas -packningars -packningen -packningens -packnings -padda -paddan -paddans -paddor -paddorna -paddornas -paddors -paff -paffa -paffare -paffas -paffast -paffaste -paffe -paffes -pafft -page -pagen -pagens -pager -pagerna -pagernas -pagers -paginering -pagineringen -pagineringens -paginerings -paket -paketen -paketens -paketet -paketets -pakistan -pakistans -pakt -pakten -paktens -pakter -pakterna -pakternas -pakters -pakts -pamp -pampar -pamparna -pamparnas -pampars -pampen -pampens -pampig -pampiga -pampigare -pampigast -pampigaste -pampighet -pampigheten -pampighetens -pampigt -pamps -panama -panamas -panik -paniken -panikens -paniks -panna -pannan -pannans -pannkaka -pannkakan -pannkakans -pannkakas -pannkakor -pannkakorna -pannkakornas -pannkakors -pannor -pannorna -pannornas -pannors -pannrum -pannrummen -pannrummens -pannrummet -pannrummets -pansar -pansaren -pansarens -pansaret -pansarets -pansarna -pansarnas -pansarvagn -pansarvagnar -pansarvagnarna -pansarvagnarnas -pansarvagnars -pansarvagnen -pansarvagnens -pansarvagns -pant -panta -pantad -pantade -pantades -pantar -pantas -pantat -pantats -panten -pantens -pantning -pantningen -pantningens -pantnings -papaya -papayan -papayans -papayor -papayorna -papayornas -papayors -papegoja -papegojan -papegojans -papegojor -papegojorna -papegojornas -papegojors -papp -pappa -pappan -pappans -pappen -pappens -papper -papperen -papperens -papperet -papperets -pappers -pappersark -pappersarken -pappersarkens -pappersarket -pappersarkets -pappersbunt -pappersbuntar -pappersbuntarna -pappersbuntarnas -pappersbuntars -pappersbunten -pappersbuntens -papperskorg -papperskorgar -papperskorgarna -papperskorgarnas -papperskorgars -papperskorgen -papperskorgens -papperstiger -papperstigern -papperstigerns -papperstigrar -papperstigrarna -papperstigrarnas -papperstigrars -pappet -pappets -pappor -papporna -pappornas -pappors -pappret -papprets -paprika -paprikan -paprikans -paprikor -paprikorna -paprikornas -paprikors -papua -papyrus -par -para -parad -parade -paraden -paradens -parader -paraderna -paradernas -paraders -parades -paradigm -paradis -paradiset -paradisets -paradox -paradoxen -paradoxens -paradoxer -paradoxerna -paradoxernas -paradoxers -parads -parafrasera -parafraserad -parafraserade -parafraserades -parafraserar -parafraseras -parafraserat -parafraserats -paragraf -paragrafen -paragrafens -paragrafer -paragraferna -paragrafernas -paragrafers -paraguay -paraguays -parameter -parametern -parameterns -parameters -parametrar -parametrarna -parametrarnas -parametrars -parametrisera -parametriserad -parametriserade -parametriserades -parametriserar -parametriseras -parametriserat -parametriserats -paranoia -paranoian -paranoians -paranoias -paranoid -paranoida -paranoidare -paranoidast -paranoidaste -parant -paranta -parar -paras -parasit -parat -parats -paren -parens -parentes -parentesen -parentesens -parenteser -parenteserna -parentesernas -parentesers -parentetisk -parentetiska -parentetiskt -parera -parerad -parerade -parerades -parerande -parerandet -parerandets -parerar -pareras -parerat -parerats -paret -parets -paris -paritet -pariteten -paritetens -park -parken -parkens -parker -parkera -parkerad -parkerade -parkerades -parkerar -parkeras -parkerat -parkerats -parkering -parkeringar -parkeringarna -parkeringarnas -parkeringars -parkeringen -parkeringens -parkerings -parkeringsautomat -parkeringsautomaten -parkeringsautomatens -parkeringsautomater -parkeringsautomaterna -parkeringsautomaternas -parkeringsautomaters -parkeringsautomats -parkeringshus -parkeringshusen -parkeringshusens -parkeringshuset -parkeringshusets -parkerna -parkernas -parkers -parning -parningen -parningens -parodi -parodier -parodierna -parodiernas -parodiers -parodin -parodins -parodis -pars -part -parten -partens -parter -parterna -parternas -parters -parti -particip -partier -partierna -partiernas -partiers -partiet -partiets -partisk -partiska -partiskt -partition -partitionen -partitionens -partitioner -partitionerna -partitionernas -partitioners -partitions -partitur -partituren -partiturens -partituret -partiturets -partner -partnern -partnerns -partners -party -partyt -partyts -parvis -pascha -paschan -paschans -paschas -pass -passa -passad -passade -passades -passage -passagen -passagens -passagerare -passageraren -passagerarens -passagerares -passagerarna -passagerarnas -passande -passandet -passandets -passar -passas -passat -passats -passen -passens -passera -passerad -passerade -passerades -passerande -passerandet -passerandets -passerar -passeras -passerat -passerats -passering -passeringar -passeringarna -passeringarnas -passeringars -passeringen -passeringens -passerings -passet -passets -passform -passion -passionen -passionens -passionerad -passionerade -passionerat -passiv -passiva -passivare -passivast -passivaste -passivisera -passiviserad -passiviserade -passiviserades -passiviserar -passiviseras -passiviserat -passiviserats -passivitet -passiviteten -passivitetens -passivt -passning -passningar -passningarna -passningarnas -passningars -passningen -passningens -passnings -passus -pasta -pastan -pastans -pastej -pastejen -pastejens -pastejer -pastejerna -pastejernas -pastejers -pastisch -pastor -pastorer -pastorerna -pastorernas -pastorers -pastorn -pastorns -pastors -pastorsexpedition -pastorsexpeditionen -pastorsexpeditionens -pastorsexpeditioner -pastorsexpeditionerna -pastorsexpeditionernas -pastorsexpeditioners -pastorsexpeditions -patent -patenten -patentens -patentet -patentets -patents -paternoster -patetisk -patetiska -patetiskt -patient -patienten -patientens -patienter -patienterna -patienternas -patienters -patina -patos -patrik -patriks -patriot -patrioten -patriotens -patrioter -patrioterna -patrioternas -patrioters -patriotisk -patriotiska -patriotiskt -patronat -paus -pausen -pausens -pauser -pauserna -pausernas -pausers -pedagog -pedagogen -pedagogens -pedagoger -pedagogerna -pedagogernas -pedagogers -pedagogik -pedagogiken -pedagogikens -pedagogisk -pedagogiska -pedagogiskt -pedagogs -pedant -pedanten -pedantens -pedanter -pedanteri -pedanterna -pedanternas -pedanters -pedantisk -pedantiska -pedantiskt -pedants -pehr -pehrs -peka -pekade -pekar -pekare -pekaren -pekarens -pekares -pekarna -pekarnas -pekas -pekat -pekfinger -pekfingret -pekfingrets -pekpinnar -pekpinnarna -pekpinnarnas -pekpinnars -pekpinne -pekpinnen -pekpinnens -penetrera -penetrerad -penetrerade -penetrerades -penetrerar -penetreras -penetrerat -penetrerats -peng -pengar -pengarna -pengarnas -pengars -pengen -pengens -pengs -penna -pennan -pennans -penndrag -penning -penningar -penningarna -penningarnas -penningars -penningen -penningens -penningkista -penningkistan -penningkistans -penningkistor -penningkistorna -penningkistornas -penningkistors -pennings -penningskrin -penningstinna -pennor -pennorna -pennornas -pennors -pension -pensionat -pensionaten -pensionatens -pensionatet -pensionatets -pensionen -pensionens -pensioner -pensionera -pensionerad -pensionerade -pensionerades -pensionerar -pensioneras -pensionerat -pensionerats -pensionerna -pensionernas -pensioners -pensions -pentagon -pentagons -pentry -pep -peppa -peppad -peppade -peppades -peppar -pepparkaka -pepparkakan -pepparkakans -pepparkakor -pepparkakorna -pepparkakornas -pepparkakors -peppas -peppat -peppats -peps -per -perception -perceptionen -perceptionens -perceptions -perestrojka -perestrojkan -perestrojkans -perestrojkas -perfekt -perfekta -perforera -perforerad -perforerade -perforerades -perforerar -perforeras -perforerat -perforerats -perforering -perforeringar -perforeringarna -perforeringarnas -perforeringars -perforeringen -perforeringens -perforerings -pergament -pergamenten -pergamentens -pergamentet -pergamentets -perifer -perifera -periferi -periferier -periferierna -periferiernas -periferiers -periferin -periferins -perifert -period -perioden -periodens -perioder -perioderna -periodernas -perioders -periodicitet -periodiciteten -periodicitetens -periodvis -permanent -permanenta -permission -permissionen -permissionens -permutation -permutationen -permutationens -permutationer -permutationerna -permutationernas -permutationers -permutations -permutera -permuterad -permuterade -permuterades -permuterar -permuteras -permuterat -permuterats -perrong -perrongen -perrongens -perronger -perrongerna -perrongernas -perrongers -pers -persisk -persiska -persiskt -person -personbeskrivning -personbeskrivningar -personbeskrivningarna -personbeskrivningarnas -personbeskrivningars -personbeskrivningen -personbeskrivningens -personbeskrivnings -persondator -persondatorer -persondatorerna -persondatorernas -persondatorers -persondatorn -persondatorns -personen -personens -personer -personerna -personernas -personers -personifiera -personifierad -personifierade -personifierades -personifierar -personifierat -personifierats -personkonto -personkrets -personkretsen -personkretsens -personnummer -personnummers -personnumren -personnumrens -personnumret -personnumrets -persons -personteckning -personteckningar -personteckningarna -personteckningarnas -personteckningars -personteckningen -personteckningens -persontecknings -personuppgift -personuppgifter -personuppgifterna -personuppgifternas -personuppgifters -perspektiv -perspektiven -perspektivens -perspektivet -perspektivets -perspektivs -persson -perssons -perstorp -perstorps -peru -peruk -peruken -perukens -peruker -perukerna -perukernas -perukers -peruks -perus -pervers -perversa -perverst -perverterad -perverterade -perverterat -pessimism -pessimismen -pessimismens -pessimist -pessimisten -pessimistens -pessimister -pessimisterna -pessimisternas -pessimisters -pessimistisk -pessimistiska -pessimistiskare -pessimistiskast -pessimistiskaste -pessimistiskt -pest -pestdrabbad -pestdrabbade -pestdrabbat -pesten -pestens -peta -petad -petade -petades -petar -petas -petat -petats -peter -peters -petig -petiga -petigt -petita -petitess -petitessen -petitessens -petitesser -petitesserna -petitessernas -petitessers -petitum -petra -petras -pettersson -petterssons -pia -pianist -pianisten -pianistens -pianister -pianisterna -pianisternas -pianisters -piano -pias -pick -pierre -pierres -pietet -piga -pigan -pigans -pigg -pigga -piggt -pigment -pigor -pigorna -pigornas -pigors -pik -pikar -pikarna -pikarnas -pikars -piken -pikens -pin -pina -pinad -pinade -pinades -pinande -pinandet -pinandets -pinar -pinas -pinat -pinats -pingst -pingstdag -pingstdagen -pingstdagens -pingvin -pingvinen -pingvinens -pingviner -pingvinerna -pingvinernas -pingviners -pingvins -pinnar -pinnarna -pinnarnas -pinnars -pinne -pinnen -pinnens -pinnes -pinsam -pinsamhet -pinsamheten -pinsamhetens -pinsamma -pinsammare -pinsammast -pinsammaste -pinsamt -pip -pipa -pipan -pipans -pipas -piper -pipig -pipiga -pipigt -pipit -pipits -pipor -piporna -pipornas -pipors -pips -pirat -piraten -piratens -pirater -piraterna -piraternas -piraters -piratkopiering -piratkopieringen -piratkopieringens -piratkopierings -pirats -piska -piskad -piskade -piskades -piskan -piskans -piskar -piskas -piskat -piskats -piskor -piskorna -piskornas -piskors -pissoar -pissoaren -pissoarens -pittoresk -pittoreska -pittoreskt -pizza -pizzan -pizzans -pizzeria -pizzerian -pizzerians -pizzerior -pizzeriorna -pizzeriornas -pizzeriors -pizzor -pizzorna -pizzornas -pizzors -pjosk -pocka -pockade -pockades -pockande -pockandet -pockandets -pockar -pockas -pockat -pockats -podier -podierna -podiernas -podiers -podiet -podiets -podium -poem -poemen -poemens -poemet -poemets -poems -poesi -poesin -poesins -poet -poeten -poetens -poeter -poeterna -poeternas -poeters -poetisk -poetiska -poetiskt -pojkar -pojkarna -pojkarnas -pojkars -pojke -pojken -pojkens -pojkes -pompa -pompan -pompans -pompas -ponera -ponerade -ponerar -ponerat -pontus -pop -popcorn -popcornen -popcornens -popcornet -popcornets -popcorns -poppig -poppiga -poppigt -poppis -porjus -pornograf -pornografen -pornografens -pornografi -pornografin -pornografins -pornografis -porr -porren -porrens -port -portar -portarna -portarnas -portars -porten -portens -portion -portionen -portionens -portioner -portionerna -portionernas -portioners -portions -porto -portot -portots -ports -portugis -portugisen -portugisens -portugiser -portugiserna -portugisernas -portugisers -portvakt -portvaktare -portvaktaren -portvaktarens -portvaktares -portvaktarna -portvaktarnas -portvakten -portvaktens -portvakter -portvakterna -portvakternas -portvakters -posera -poserade -poserades -poserande -poserandet -poserandets -poserar -poseras -poserat -poserats -position -positionen -positionens -positioner -positionerna -positionernas -positioners -positions -positiv -positiva -positivare -positivas -positivast -positivaste -positive -positives -positivt -post -posta -postadress -posten -postens -poster -postera -posterad -posterade -posterar -posterat -posterna -posternas -posters -postgiro -postgirokonto -postgirokontot -postgirokontots -postgironummer -postgirot -postgirots -postman -postmodern -postmoderna -postmodernt -postning -postningen -postningens -postnings -postnumret -postorder -potatis -potatisar -potatisarna -potatisarnas -potatisars -potatisen -potatisens -potatissoppa -potatissoppan -potatissoppans -potatissoppor -potatissopporna -potatissoppornas -potatissoppors -potens -potensen -potensens -potenser -potenserna -potensernas -potensers -potentat -potentater -potentaterna -potentaternas -potentaters -pott -potta -pottan -pottans -pottas -potten -pottens -potter -potterna -potternas -potters -pottor -pottorna -pottornas -pottors -prag -pragmatisk -pragmatiska -pragmatiskt -prags -prakt -prakten -praktens -praktik -praktikant -praktikanten -praktikantens -praktikanter -praktikanterna -praktikanternas -praktikanters -praktikants -praktiken -praktikens -praktiker -praktikerna -praktikernas -praktikers -praktiks -praktisera -praktiserad -praktiserade -praktiserades -praktiserande -praktiserandet -praktiserandets -praktiserar -praktiserat -praktiserats -praktisk -praktiska -praktiskt -prat -prata -pratad -pratade -pratades -pratande -pratandet -pratandets -pratar -pratas -pratat -pratats -pratet -pratets -pratig -pratiga -pratigt -pratstund -pratstunden -pratstundens -pratstunder -pratstunderna -pratstundernas -pratstunders -praxis -precis -precisa -precisare -precisast -precisaste -precisera -preciserad -preciserade -preciserades -preciserande -preciserandet -preciserandets -preciserar -preciseras -preciserat -preciserats -precisering -preciseringar -preciseringarna -preciseringarnas -preciseringars -preciseringen -preciseringens -preciserings -precision -precisionen -precisionens -precisions -precist -predika -predikad -predikade -predikades -predikan -predikande -predikandet -predikandets -predikans -predikant -predikanten -predikantens -predikanter -predikanterna -predikanternas -predikanters -predikants -predikar -predikare -predikaren -predikarens -predikares -predikarna -predikarnas -predikas -predikat -predikats -prefekt -prefekten -prefektens -prefekter -prefekterna -prefekternas -prefekters -prefekts -preferens -preferensen -preferensens -preferenser -preferenserna -preferensernas -preferensers -prefix -prefixen -prefixens -prefixet -prefixets -pregnant -pregnanta -pregnantare -pregnantast -pregnantaste -prejudikat -prejudikaten -prejudikatens -prejudikatet -prejudikatets -premie -premien -premiens -premier -premiera -premierad -premierade -premierades -premierar -premieras -premierat -premierats -premierna -premiernas -premiers -premiss -premissen -premissens -premisser -premisserna -premissernas -premissers -prentice -prenumeration -prenumerationen -prenumerationens -prenumerationer -prenumerationerna -prenumerationernas -prenumerationers -prenumerations -preparand -preparanden -preparandens -preparander -preparanderna -preparandernas -preparanders -preparat -preparaten -preparatens -preparatet -preparatets -preparera -preparerad -preparerade -preparerades -preparerande -preparerandet -preparerandets -preparerar -prepareras -preparerat -preparerats -preposition -prepositionen -prepositionens -prepositioner -prepositionerna -prepositionernas -prepositioners -prepositions -presenning -presenningar -presenningarna -presenningarnas -presenningars -presenningen -presenningens -presennings -presens -present -presentation -presentationen -presentationens -presentationer -presentationerna -presentationernas -presentationers -presentations -presenten -presentens -presenter -presentera -presenterad -presenterade -presenterades -presenterar -presenteras -presenterat -presenterats -presenterna -presenternas -presenters -presentkort -presentkorten -presentkortens -presentkortet -presentkortets -presentkorts -presents -president -presidenten -presidentens -presidenter -presidenterna -presidenternas -presidenters -presidents -press -pressa -pressad -pressade -pressades -pressar -pressas -pressat -pressats -pressen -pressens -presstopp -presstoppen -presstoppens -presstoppet -presstoppets -presstopps -prestanda -prestandan -prestandans -prestandas -prestation -prestationen -prestationens -prestationer -prestationerna -prestationernas -prestationers -prestations -prestera -presterade -presterar -presterat -prestige -prestigen -prestigens -presumtiv -presumtiva -presumtivt -pretention -pretentionen -pretentionens -pretentioner -pretentionerna -pretentionernas -pretentioners -pretentions -preussisk -preussiska -preussiskt -preventiv -preventiva -preventivt -prick -pricka -prickad -prickade -prickades -prickande -prickandet -prickandets -prickar -prickarna -prickarnas -prickars -prickas -prickat -prickats -pricken -prickens -prickfri -prickfria -prickfritt -prickig -prickiga -prickigare -prickigast -prickigaste -prickigt -pricks -prima -primfaktor -primfaktorer -primfaktorerna -primfaktorernas -primfaktorers -primfaktorn -primfaktorns -primfaktors -primitiv -primitiva -primitivare -primitivast -primitivaste -primitivt -princip -principen -principens -principer -principerna -principernas -principers -prins -prinsar -prinsarna -prinsarnas -prinsars -prinsen -prinsens -prinsessa -prinsessan -prinsessans -prinsessor -prinsessorna -prinsessornas -prinsessors -priori -prioritera -prioriterad -prioriterade -prioriterades -prioriterar -prioriteras -prioriterat -prioriterats -prioritering -prioriteringar -prioriteringarna -prioriteringarnas -prioriteringars -prioriteringen -prioriteringens -prioriterings -prioritet -prioriteten -prioritetens -pris -prisa -prisad -prisade -prisades -prisande -prisandet -prisandets -prisar -prisas -prisat -prisats -prisen -prisens -priser -priserna -prisernas -prisers -priset -prisets -prisgiva -priskrig -priskrigen -priskrigens -priskriget -priskrigets -priskrigs -prisma -prisman -prismans -prismas -prismor -prismorna -prismornas -prismors -prisnominerad -prisnominerade -prisnominerat -pristagare -pristagaren -pristagarens -pristagares -pristagarna -pristagarnas -privat -privata -privategendom -privatperson -procedur -proceduren -procedurens -procedurer -procedurerna -procedurernas -procedurers -procent -procenten -procentens -procentsats -procentsatsen -procentsatsens -procentsatser -procentsatserna -procentsatsernas -procentsatsers -process -processa -processad -processade -processades -processande -processandet -processandets -processar -processas -processat -processats -processen -processens -processer -processerna -processernas -processers -procession -processionen -processionens -processioner -processionerna -processionernas -processioners -processions -processor -processorer -processorerna -processorernas -processorers -processorn -processorns -processors -producent -producenten -producentens -producenter -producenterna -producenternas -producenters -producera -producerad -producerade -producerades -producerar -producerat -producerats -produkt -produkten -produktens -produkter -produkterna -produkternas -produkters -produktion -produktionen -produktionens -produktioner -produktionerna -produktionernas -produktioners -produktions -produktionsstyrningssystem -produktionsstyrningssystemen -produktionsstyrningssystemens -produktionsstyrningssystemet -produktionsstyrningssystemets -produktiv -produktiva -produktivare -produktivas -produktivast -produktivaste -produktive -produktives -produktivitet -produktiviteten -produktivitetens -produktivt -produkts -profan -profana -profant -professor -professorer -professorerna -professorernas -professorers -professorn -professorns -professors -professur -professuren -professurens -professurer -professurerna -professurernas -professurers -professurs -profet -profeten -profetens -profeter -profetera -profeterad -profeterade -profeterades -profeterande -profeterandet -profeterandets -profeterar -profeteras -profeterat -profeterats -profeterna -profeternas -profeters -profetia -profetian -profetians -profetior -profetiorna -profetiornas -profetiors -profetisk -profetiska -profetiskt -profetissa -profetissan -profetissans -profetissas -profetissor -profets -proffsig -proffsiga -proffsigt -profit -profiten -profitens -prognos -prognosen -prognosens -prognoser -prognoserna -prognosernas -prognosers -prognostisera -prognostiserad -prognostiserade -prognostiserades -prognostiserar -prognostiserat -prognostiserats -program -programansvarig -programbok -programboken -programbokens -programkod -programkoden -programkodens -programmen -programmens -programmera -programmerad -programmerade -programmerades -programmerande -programmerandet -programmerandets -programmerar -programmerare -programmeraren -programmerarens -programmerares -programmerarna -programmerarnas -programmeras -programmerat -programmerats -programmerbar -programmerbara -programmerbart -programmering -programmeringen -programmeringens -programmerings -programmet -programmets -programpunkt -programpunkten -programpunktens -programpunkter -programpunkterna -programpunkternas -programpunkters -programs -programvara -programvaran -programvarans -programvaror -programvarorna -programvarornas -programvarors -progressiv -progressiva -progressivare -progressivast -progressivaste -progressivt -projekt -projektarbete -projektarbeten -projektarbetena -projektarbetenas -projektarbetens -projektarbetes -projektarbetet -projektarbetets -projekten -projektens -projektet -projektets -projektion -projektionen -projektionens -projektioner -projektionerna -projektionernas -projektioners -projektions -projektor -projektorer -projektorerna -projektorernas -projektorers -projektorn -projektorns -projekts -promemoria -promemorian -promemorians -promenad -promenaden -promenadens -promenader -promenaderna -promenadernas -promenaders -promenera -promenerade -promenerar -promenerat -prompt -pronomen -propaganda -propagandaministerier -propagandaministerierna -propagandaministeriernas -propagandaministeriers -propagandaministeriet -propagandaministeriets -propagandaministerium -propagandan -propagandans -propagandas -propagera -propagerade -propagerande -propagerar -propagerat -propexus -proportion -proportionen -proportionens -proportioner -proportionerna -proportionernas -proportioners -proportions -proposition -propositionen -propositionens -propositioner -propositionerna -propositionernas -propositioners -propositions -propp -proppa -proppad -proppade -proppades -proppande -proppandet -proppandets -proppar -propparna -propparnas -proppars -proppas -proppat -proppats -proppen -proppens -propps -prosa -prosaisk -prosaiska -prosaiskt -prosan -prosans -prosas -prosit -prost -prosten -prostens -proster -prosterna -prosternas -prosters -prostituera -prostituerad -prostituerade -prostituerades -prostituerar -prostituerat -prostituerats -prosts -protes -protesen -protesens -proteser -proteserna -protesernas -protesers -protest -protestaktion -protestaktionen -protestaktionens -protestaktioner -protestaktionerna -protestaktionernas -protestaktioners -protestaktions -protesten -protestens -protester -protestera -protesterade -protesterar -protesterat -protesterna -protesternas -protesters -protests -prototyp -prototypen -prototypens -prototyper -prototyperna -prototypernas -prototypers -prototyps -proust -prousts -prov -prova -provad -provade -provades -provande -provandet -provandets -provar -provas -provat -provats -proven -provens -prover -proverna -provernas -provers -provet -provets -proviantera -provianterade -provianterande -provianterandet -provianterandets -provianterar -provianterat -provins -provinsen -provinsens -provinser -provinserna -provinsernas -provinsers -provision -provisionen -provisionens -provisioner -provisionerna -provisionernas -provisioners -provisions -provisorisk -provisoriska -provisoriskt -provning -provningar -provningarna -provningarnas -provningars -provningen -provningens -provnings -provocera -provocerad -provocerade -provocerades -provocerande -provocerandet -provocerandets -provocerar -provoceras -provocerat -provocerats -provokation -provokationen -provokationens -provokationer -provokationerna -provokationernas -provokationers -provokations -provs -provsmakning -provsmakningar -provsmakningarna -provsmakningarnas -provsmakningars -provsmakningen -provsmakningens -provsmaknings -prunka -prunkade -prunkande -prunkandet -prunkandets -prunkar -prunkat -prut -pruta -prutade -prutar -prutas -prutat -prutning -prutningar -prutningarna -prutningarnas -prutningars -prutningen -prutningens -prutnings -pryd -pryda -prydande -prydandet -prydandets -prydas -prydd -prydda -prydde -pryddes -pryder -prydnad -prydnaden -prydnadens -prydnader -prydnaderna -prydnadernas -prydnaders -prydnads -pryds -prytt -prytts -pseudonym -pseudonymen -pseudonymens -pseudonymer -pseudonymerna -pseudonymernas -pseudonymers -pseudonyms -psyke -psykena -psykenas -psyket -psykets -psykiater -psykiatri -psykiatrin -psykiatrins -psykiatris -psykiatrisk -psykiatriska -psykiatriskt -psykisk -psykiska -psykiskt -psykodynamisk -psykodynamiska -psykodynamiskt -psykometriker -psykos -psykosen -psykosens -psykoser -psykoserna -psykosernas -psykosers -psykotekniker -psykoteknisk -psykotekniska -psykotekniskt -psykoterapeut -psykoterapeutisk -psykoterapeutiska -psykoterapeutiskt -psykoterapi -psykotisk -psykotiska -psykotiske -psykotiskt -pub -pubar -pubarna -pubarnas -pubars -puben -pubens -pubertet -puberteten -pubertetens -pubs -puder -pudra -pudrad -pudrade -pudrades -pudrar -pudras -pudrat -pudrats -puff -puffa -puffade -puffar -puffat -puka -pukan -pukans -pukor -pukorna -pukornas -pukors -pump -pumpa -pumpar -pumparna -pumparnas -pumpars -pumpas -pumpen -pumpens -pund -punden -pundens -pundet -pundets -pung -pungar -pungarna -pungarnas -pungars -pungen -pungens -punk -punkare -punkaren -punkarens -punkares -punkarna -punkarnas -punken -punkens -punkt -punkten -punktens -punkter -punktera -punkterad -punkterade -punkterades -punkterar -punkterat -punkterats -punkterna -punkternas -punkters -punsch -punschen -punschens -puppa -puppan -puppans -puppor -pupporna -puppornas -puppors -pur -pura -purgatorium -purism -purismen -purismens -puritan -puritanen -puritanens -puritaner -puritanerna -puritanernas -puritaners -puritansk -puritanska -puritanskt -purpra -purprad -purprade -purprades -purprar -purpras -purprat -purprats -purpur -purpurn -purpurns -purra -purrade -purrar -purrat -purt -puss -pussen -pussens -pust -pusta -pustade -pustar -pustat -puta -putade -putar -putat -putsa -putsad -putsade -putsades -putsande -putsandet -putsandets -putsar -putsas -putsat -putsats -putsning -putsningen -putsningens -putsnings -puttra -puttrade -puttrar -puttrat -pyjamas -pyjamasen -pyjamasens -pynta -pyntad -pyntade -pyntades -pyntar -pyntas -pyntat -pyntats -pyramid -pyramiden -pyramidens -pyramider -pyramiderna -pyramidernas -pyramiders -pyramids -pyre -pyret -pyrets -pys -pysa -pyser -pyst -pyste -pyton -pyts -pytsar -pytsarna -pytsarnas -pytsars -pytsen -pytsens -pyttipanna -pyttipannan -pyttipannans -pyttipannas -qatar -qatars -rabarber -rabarbern -rabarberns -rabarbers -rabatt -rabatten -rabattens -rabatter -rabatterna -rabatternas -rabatters -rabatts -rabbi -rabiat -rabiata -rack -rad -rada -radade -radades -radar -radas -radat -radats -radband -radbanden -radbandens -radbandet -radbandets -raden -radens -rader -radera -raderad -raderade -raderades -raderar -raderas -raderat -raderats -raderingstangent -raderingstangenten -raderingstangentens -raderingstangenter -raderingstangenterna -raderingstangenternas -raderingstangenters -raderna -radernas -raders -radhus -radhusen -radhusens -radhuset -radhusets -radian -radianen -radianens -radianer -radianerna -radianernas -radianers -radie -radien -radiens -radier -radierna -radiernas -radiers -radio -radioaktiv -radioaktiva -radioaktivt -radioapparat -radioapparaten -radioapparatens -radioapparater -radioapparaterna -radioapparaternas -radioapparaters -radioapparats -radion -radions -radioprogram -radioserie -radioserien -radioseriens -radiostation -radiostationen -radiostationens -radiostationer -radiostationerna -radiostationernas -radiostationers -radiostations -radium -radvis -radvisa -raffinera -raffinerad -raffinerade -raffinerades -raffinerar -raffineras -raffinerat -raffinerats -ragg -raggig -raggiga -raggigt -ragnar -ragnars -rak -raka -rakad -rakade -rakapparat -rakapparaten -rakapparatens -rakapparater -rakapparaterna -rakapparaternas -rakapparaters -rakar -rakare -rakast -rakaste -rakat -raket -raketen -raketens -raketer -raketerna -raketernas -raketers -raketuppskjutning -raketuppskjutningar -raketuppskjutningarna -raketuppskjutningarnas -raketuppskjutningars -raketuppskjutningen -raketuppskjutningens -raketuppskjutnings -rakna -raknade -raknar -raknat -rakt -ram -rama -ramade -ramar -ramas -ramaskri -ramat -ramen -ramens -ramp -rampen -rampens -ramper -ramperna -rampernas -rampers -ramsa -ramsan -ramsans -ramsas -ramsberg -ramsbergs -ramverk -ramverket -ramverkets -ramvik -ramviks -rand -randa -randad -randade -randades -randar -randas -randat -randats -randen -randens -randig -randiga -randigt -randijaur -randijaurs -rang -rangordna -rangordnad -rangordnade -rangordnades -rangordnar -rangordnas -rangordnat -rangordnats -rangordning -rangordningar -rangordningarna -rangordningarnas -rangordningars -rangordningen -rangordningens -rangordnings -rank -ranka -rankad -rankade -rankades -rankande -rankandet -rankandets -rankar -rankare -rankas -rankast -rankaste -rankat -rankats -rankt -rann -rannsaka -rannsakad -rannsakade -rannsakades -rannsakande -rannsakandet -rannsakandets -rannsakar -rannsakas -rannsakat -rannsakats -rannsakning -rannsakningar -rannsakningarna -rannsakningarnas -rannsakningars -rannsakningen -rannsakningens -rannsaknings -ranson -ransonen -ransonens -ransoner -ransonera -ransonerad -ransonerade -ransonerades -ransonerande -ransonerandet -ransonerandets -ransonerar -ransoneras -ransonerat -ransonerats -ransonering -ransoneringar -ransoneringarna -ransoneringarnas -ransoneringars -ransoneringen -ransoneringens -ransonerings -ransonerna -ransonernas -ransoners -ransons -ransta -ranstas -rapp -rappen -rappens -rappet -rappets -rapport -rapporten -rapportens -rapporter -rapportera -rapporterad -rapporterade -rapporterades -rapporterande -rapporterandet -rapporterandets -rapporterar -rapporteras -rapporterat -rapporterats -rapportering -rapporteringar -rapporteringarna -rapporteringarnas -rapporteringars -rapporteringen -rapporteringens -rapporterings -rapporterna -rapporternas -rapporters -rapports -rapportskrivning -rapportskrivningen -rapportskrivningens -rapportskrivnings -raps -rapsbagge -rar -rara -rarare -rarast -raraste -raritet -rariteten -raritetens -rart -ras -rasa -rasad -rasade -rasades -rasande -rasandes -rasandet -rasandets -rasar -rasas -rasat -rasats -rasen -rasens -raser -rasera -raserad -raserade -raserades -raserar -raseras -raserat -raserats -raseri -raserna -rasernas -rasers -rashygien -rask -raska -raskade -raskar -raskare -raskas -raskast -raskaste -raskat -raske -raskes -rasket -raskets -raskt -raspa -raspade -raspar -raspat -rast -rasta -rastad -rastade -rastades -rastar -rastas -rastat -rastats -raster -rasterna -rasternas -rasters -ratt -rattar -rattarna -rattarnas -rattars -ratten -rattens -rattonykterhet -rattonykterheten -rattonykterhetens -rattonykterhets -rauk -raukar -raukarna -raukarnas -raukars -rauken -raukens -ravin -raviner -ravinerna -ravinernas -raviners -razzia -razzian -razzians -razzias -razzior -razziorna -razziornas -razziors -rea -reagera -reagerade -reagerades -reagerande -reagerandet -reagerandets -reagerar -reageras -reagerat -reagerats -reaktion -reaktionen -reaktionens -reaktioner -reaktionerna -reaktionernas -reaktioners -reaktions -reaktor -reaktorn -reaktorns -reaktors -rean -reans -reas -rebecka -rebeckas -recensent -recensenten -recensentens -recensenter -recensenterna -recensenternas -recensenters -recensera -recenserad -recenserade -recenserades -recenserandet -recenserandets -recenserar -recenseras -recenserat -recenserats -recension -recensionen -recensionens -recensioner -recensionerna -recensionernas -recensioners -recept -recepten -receptens -receptet -receptets -reception -receptionen -receptionens -receptioner -receptionerna -receptionernas -receptioners -receptions -receptor -receptorn -receptorns -receptors -recepts -recessiv -recessiva -recessivt -recitera -reciterad -reciterade -reciterades -reciterar -reciteras -reciterat -reciterats -red -reda -redaktion -redaktionen -redaktionens -redaktioner -redaktionerna -redaktionernas -redaktioners -redaktions -redan -redas -redd -redda -redde -reddes -rede -reden -redens -reder -rederi -rederien -rederiens -rederiet -rederiets -redet -redets -redig -rediga -redigera -redigerad -redigerade -redigerades -redigerar -redigerare -redigeraren -redigerarens -redigerares -redigerarna -redigerarnas -redigeras -redigerat -redigerats -redigering -redigeringen -redigeringens -redigerings -redigt -redo -redogjorde -redovisa -redovisad -redovisade -redovisades -redovisar -redovisas -redovisat -redovisats -redovisning -redovisningar -redovisningarna -redovisningarnas -redovisningars -redovisningen -redovisningens -redovisnings -redovisningsdatum -redovisningsdatumen -redovisningsdatumens -redovisningsdatumet -redovisningsdatumets -redovisningssystem -redovisningssystemen -redovisningssystemens -redovisningssystemet -redovisningssystemets -redovisningsuppgift -redovisningsuppgifter -redovisningsuppgifterna -redovisningsuppgifternas -redovisningsuppgifters -reds -redskap -redskapen -redskapens -redskapet -redskapets -redskaps -reducera -reducerad -reducerade -reducerades -reducerande -reducerandet -reducerandets -reducerar -reduceras -reducerat -reducerats -reducering -reduceringar -reduceringarna -reduceringarnas -reduceringars -reduceringen -reduceringens -reducerings -reduktion -reduktionen -reduktionens -reduktioner -reduktionerna -reduktionernas -reduktioners -reduktionism -reduktionismen -reduktionismens -reduktions -redundans -redundant -redundanta -redutt -redutten -reduttens -redutter -redutterna -redutternas -redutters -redutts -referat -referaten -referatens -referatet -referatets -referens -referensen -referensens -referenser -referenserna -referensernas -referensers -referensram -referensramar -referensramarna -referensramarnas -referensramars -referera -refererad -refererade -refererades -refererande -refererar -refereras -refererat -refererats -reform -reformarbete -reformarbetet -reformarbetets -reformation -reformationen -reformationens -reformationer -reformationerna -reformationernas -reformationers -reformations -reformen -reformens -reformer -reformera -reformerad -reformerade -reformerades -reformerar -reformeras -reformerat -reformerats -reformering -reformeringar -reformeringarna -reformeringarnas -reformeringars -reformeringen -reformeringens -reformerings -reformerna -reformernas -reformers -reforms -refug -refugen -refugens -refuger -refugerna -refugernas -refugers -regemente -regementen -regementena -regementenas -regementens -regementes -regementet -regementets -regent -regenten -regentens -regenter -regenterna -regenternas -regenters -regents -regera -regerad -regerade -regerades -regerar -regeras -regerat -regerats -regering -regeringar -regeringarna -regeringarnas -regeringars -regeringen -regeringens -regerings -regi -regim -regimen -regimens -regimer -regimerna -regimernas -regimers -regims -region -regionen -regionens -regioner -regionerna -regionernas -regioners -regions -regissera -regisserad -regisserade -regisserades -regisserar -regisseras -regisserat -regisserats -register -registerpost -registerposten -registerpostens -registeruppdatering -registeruppdateringar -registeruppdateringarna -registeruppdateringarnas -registeruppdateringars -registeruppdateringen -registeruppdateringens -registeruppdaterings -registren -registrens -registrera -registrerad -registrerade -registrerades -registrerande -registrerandet -registrerandets -registrerar -registrerare -registreraren -registrerarens -registrerares -registrerarna -registrerarnas -registreras -registrerat -registrerats -registrering -registreringen -registreringens -registret -registrets -regn -regna -regnade -regnar -regnat -regndroppar -regndropparna -regndropparnas -regndroppars -regndroppe -regndroppen -regndroppens -regnen -regnens -regnet -regnets -regnrock -regnrockar -regnrockarna -regnrockarnas -regnrockars -regnrocken -regnrockens -regnrocks -regression -reinkarnation -reinkarnationen -reinkarnationens -reinkarnationer -reinkarnationerna -reinkarnationernas -reinkarnationers -reinkarnations -rejmyre -rejmyres -rekarne -rekarnes -rekommendation -rekommendationen -rekommendationens -rekommendationer -rekommendationerna -rekommendationernas -rekommendationers -rekommendations -rekommendera -rekommenderad -rekommenderade -rekommenderades -rekommenderar -rekommenderas -rekommenderat -rekommenderats -rekommenera -rekommenerad -rekommenerade -rekommenerades -rekommenerar -rekommeneras -rekommenerat -rekommenerats -rekonstruera -rekonstruerad -rekonstruerade -rekonstruerades -rekonstruerande -rekonstruerandet -rekonstruerandets -rekonstruerar -rekonstrueras -rekonstruerat -rekonstruerats -rekonstruktion -rekonstruktionen -rekonstruktionens -rekonstruktioner -rekonstruktionerna -rekonstruktionernas -rekonstruktioners -rekonstruktions -rekord -rekorden -rekordens -rekordet -rekordets -rekords -rekordtid -rekreation -rekreationen -rekreationens -rekreations -rekreationsresa -rekreationsresan -rekreationsresans -rekreationsresas -rekryt -rekryten -rekrytens -rekryter -rekrytera -rekryterad -rekryterade -rekryterades -rekryterar -rekryteras -rekryterat -rekryterats -rekrytering -rekryteringen -rekryteringens -rekryterings -rekryterna -rekryternas -rekryters -rekryts -rektor -rektorer -rektorerna -rektorernas -rektorers -rektorn -rektorns -rektors -rekursion -rekursionen -rekursionens -rekursiv -rekursiva -rekursivt -rekvirera -rekvirerad -rekvirerade -rekvirerades -rekvirerande -rekvirerandet -rekvirerandets -rekvirerar -rekvireras -rekvirerat -rekvirerats -rekvisita -rekvisitan -rekvisitans -rekvisitas -rekvisition -rekvisitionen -rekvisitionens -rekvisitioner -rekvisitionerna -rekvisitionernas -rekvisitioners -rekvisitions -rem -remiss -remissen -remissens -remisser -remisserna -remissernas -remissers -remissvar -remissvaren -remissvarens -remissvaret -remissvarets -remittera -remitterad -remitterade -remitterades -remitterar -remitterat -remitterats -remittering -remitteringen -remitteringens -remitterings -remmar -remmarna -remmarnas -remmars -remsa -remsan -remsans -remsas -ren -rena -renade -renades -renande -renandet -renandets -renar -renare -renarna -renarnas -renars -renas -renast -renaste -renat -renats -renen -renens -rengjort -renhet -renheten -renhetens -renhets -rening -reningar -reningarna -reningarnas -reningars -reningen -reningens -renings -reningsbad -reningsbaden -reningsbadens -reningsbadet -reningsbadets -reningsverk -renovera -renoverad -renoverade -renoverades -renoverande -renoverandet -renoverandets -renoverar -renoveras -renoverat -renoverats -rensa -rensad -rensade -rensades -rensande -rensandet -rensandets -rensar -rensas -rensat -rensats -renskrev -renskrevs -renskriv -renskriva -renskrivas -renskriver -renskrivit -renskrivits -renskrivs -rensning -rensningen -rensningens -rensnings -rent -rentav -rentvagit -reor -reorna -reornas -reors -rep -repa -repad -repade -repades -repande -repandet -repandets -repar -reparation -reparationen -reparationens -reparationer -reparationerna -reparationernas -reparationers -reparations -reparera -reparerad -reparerade -reparerades -reparerande -reparerandet -reparerandets -reparerar -repareras -reparerat -reparerats -repas -repat -repats -repen -repens -repertoar -repertoaren -repertoarens -repertoarer -repertoarerna -repertoarernas -repertoarers -repet -repetera -repeterad -repeterade -repeterades -repeterande -repeterandet -repeterandets -repeterar -repeteras -repeterat -repeterats -repetition -repetitionen -repetitionens -repetitioner -repetitionerna -repetitionernas -repetitioners -repetitions -repetitiv -repetitiva -repetitivt -repets -reportage -reporter -representant -representanten -representantens -representanter -representanterna -representanternas -representanters -representants -representation -representationen -representationens -representationer -representationerna -representationernas -representationers -representations -representativ -representativa -representativitet -representativiteten -representativitetens -representativt -representera -representerad -representerade -representerades -representerar -representeras -representerat -representerats -repris -reprisen -reprisens -repriser -repriserna -reprisernas -reprisers -reproducera -reproducerad -reproducerade -reproducerades -reproducerar -reproduceras -reproducerat -reproducerats -reproduktion -reproduktionen -reproduktionens -reproduktioner -reproduktionerna -reproduktionernas -reproduktioners -reproduktions -reps -res -resa -resan -resande -resandet -resandets -resans -resas -reseanteckning -reseanteckningar -reseanteckningarna -reseanteckningarnas -reseanteckningars -reseanteckningen -reseanteckningens -reseantecknings -reseavdrag -resebokning -resebokningar -resebokningarna -resebokningarnas -resebokningars -resebokningen -resebokningens -reseboknings -resebransch -resebranschen -resebranschens -resekostnad -resekostnaden -resekostnadens -resekostnader -resekostnaderna -resekostnadernas -resekostnaders -resekostnads -resen -reser -reserv -reservat -reservaten -reservatens -reservatet -reservatets -reservation -reservationen -reservationens -reservationer -reservationerna -reservationernas -reservationers -reservations -reserven -reservens -reserver -reservera -reserverad -reserverade -reserverades -reserverar -reserveras -reserverat -reserverats -reserverna -reservernas -reservers -reservoar -reservoaren -reservoarens -reservoarer -reservoarerna -reservoarernas -reservoarers -reservoarpenna -reservoarpennan -reservoarpennans -reservoarpennor -reservoarpennorna -reservoarpennornas -reservoarpennors -reset -resets -residens -residensen -residensens -residenset -residensets -resident -residenta -residue -resignation -resignationen -resignationens -resignations -resignera -resignerad -resignerade -resignerar -resignerat -reskontra -reskontran -reskontrans -reskontror -reskontrorna -reskontrornas -reskontrors -reskost -reskosten -reskostens -reson -resonemang -resonemangen -resonemangens -resonemanget -resonemangets -resonemangs -resonera -resonerade -resonerades -resonerar -resoneras -resonerat -resonerats -resor -resorna -resornas -resors -respekt -respektera -respekterad -respekterade -respekterades -respekterar -respekteras -respekterat -respekterats -respektive -respit -respiten -respitens -respons -responsen -responsens -rest -restaurang -restaurangen -restaurangens -restauranger -restaurangerna -restaurangernas -restaurangers -restaurangs -restaurera -restaurerad -restaurerade -restaurerades -restaurerar -restaureras -restaurerat -restaurerats -reste -resten -restens -rester -resterande -resterna -resternas -resters -restes -restid -restiden -restidens -restresa -restresan -restresans -restresas -restresor -restresorna -restresornas -restresors -restriktion -restriktionen -restriktionens -restriktioner -restriktionerna -restriktionernas -restriktioners -restriktions -restriktiv -restriktiva -restriktivare -restriktivast -restriktivaste -restriktivt -rests -resurs -resursen -resursens -resurser -resurserna -resursernas -resursers -reta -retad -retade -retades -retar -retas -retat -retats -retina -retinan -retinans -retirera -retirerade -retirerar -retirerat -retorik -retorisk -retoriska -retoriskt -retroaktiv -retroaktiva -retroaktivt -rett -retts -retur -returnera -returnerad -returnerade -returnerades -returnerar -returnerat -returnerats -retuschera -retuscherad -retuscherade -retuscherades -retuscherar -retuscheras -retuscherat -retuscherats -rev -reva -revade -revan -revans -revar -revat -revers -reversen -reversens -reverser -reverserna -reversernas -reversers -revidera -reviderad -reviderade -reviderades -reviderar -revideras -reviderat -reviderats -revidering -revideringar -revideringarna -revideringarnas -revideringars -revideringen -revideringens -reviderings -revir -revision -revisionen -revisionens -revisor -revisorer -revisorerna -revisorernas -revisorers -revisorn -revisorns -revisors -revor -revorna -revornas -revors -revs -revy -revyer -revyerna -revyernas -revyers -revyn -revyns -rhen -rhens -ribba -ribban -ribbans -ribbas -ribbor -ribborna -ribbornas -ribbors -rica -richard -richards -rickard -rickards -rid -rida -ridande -ridas -riddare -riddaren -riddarens -riddares -riddarhus -riddarhusen -riddarhusens -riddarhuset -riddarhusets -riddarhyttan -riddarhyttans -riddarna -riddarnas -ridderskap -ridderskapet -ridderskapets -ridderskaps -rider -ridit -ridits -rids -rigga -riggad -riggade -riggades -riggar -riggas -riggat -riggats -rigid -rigida -rik -rika -rikard -rikards -rikare -rikas -rikast -rikaste -rike -rikedom -rikedomar -rikedomarna -rikedomarnas -rikedomars -rikedomen -rikedomens -riken -rikena -rikenas -rikens -rikes -riket -rikets -rikoschett -rikoschetten -rikoschettens -rikoschetter -rikoschetterna -rikoschetternas -rikoschetters -riksdag -riksdagen -riksdagens -riksdags -riksdagsdebatt -riksdagsdebatten -riksdagsdebattens -riksdagsdebatter -riksdagsdebatterna -riksdagsdebatternas -riksdagsdebatters -riksdagsdebatts -riksdagsman -riksdagsmannen -riksdagsmannens -riksdagsmans -riksdagsparti -riksmuseets -riksomfattande -riksteater -riksteatern -riksteaterns -rikt -rikta -riktad -riktade -riktades -riktar -riktas -riktat -riktats -riktig -riktiga -riktigare -riktigast -riktigaste -riktighet -riktigheten -riktighetens -riktigt -riktning -riktningar -riktningarna -riktningarnas -riktningars -riktningen -riktningens -riktnings -rim -rimbo -rimbos -rimforsa -rimforsas -rimma -rimmad -rimmade -rimmades -rimmar -rimmat -rimmats -rimmen -rimmens -rimmet -rimmets -rimsmed -rimsmeden -rimsmedens -ring -ringa -ringakta -ringaktad -ringaktade -ringaktades -ringaktar -ringaktas -ringaktat -ringaktats -ringar -ringare -ringaren -ringarens -ringarna -ringarnas -ringars -ringarum -ringarums -ringas -ringast -ringaste -ringde -ringdes -ringduva -ringduvan -ringduvans -ringduvas -ringe -ringen -ringens -ringer -ringes -ringhet -ringheten -ringhetens -ringhets -ringning -ringningar -ringningarna -ringningarnas -ringningars -ringningen -ringningens -ringnings -rings -ringt -ringts -rinkaby -rinkabys -rinna -rinnande -rinnandet -rinnandets -rinner -ripa -ripan -ripans -ripas -ripost -ris -risen -risens -riset -risets -risgryn -risgryns -risig -risiga -risigare -risigast -risigaste -risigt -risk -risken -riskens -risker -riskera -riskerad -riskerade -riskerades -riskerar -riskerat -riskerats -riskerna -riskernas -riskers -riskgrupp -riskgruppen -riskgruppens -riskgrupper -riskgrupperna -riskgruppernas -riskgruppers -riskgrupps -risks -rispa -rispad -rispade -rispades -rispar -rispas -rispat -rispats -rist -rista -ristad -ristade -ristades -ristar -ristas -ristat -ristats -riste -rister -ristes -rists -rit -rita -ritad -ritade -ritades -ritar -ritas -ritat -ritats -riten -ritens -riter -riterna -riternas -riters -ritning -ritningar -ritningarna -ritningarnas -ritningars -ritningen -ritningens -ritnings -rits -ritt -ritten -rittens -ritter -ritterna -ritternas -ritters -riv -riva -rivas -riven -river -rivet -rivieran -rivierans -rivit -rivits -rivna -rivs -roa -road -roade -roades -roande -roar -roas -roat -roats -robert -roberts -robertsfors -robin -robins -robot -robotar -robotarna -robotarnas -robotars -roboten -robotens -robots -robust -robusta -robustare -robustast -robustaste -rock -rockar -rockarna -rockarnas -rockars -rocken -rockens -rockig -rockiga -rockigare -rockigast -rockigaste -rockigt -rockkonsert -rockkonserten -rockkonsertens -rockkonserter -rockkonserterna -rockkonserternas -rockkonserters -rockkonserts -rockmusik -rockmusiken -rockmusikens -rockneby -rocknebys -rocksvarvare -rocksvarvaren -rocksvarvarens -rocksvarvares -rocksvarvarna -rocksvarvarnas -rodd -rodda -roddare -roddaren -roddarens -roddares -roddarna -roddarnas -rodde -roddes -roder -rodna -rodnad -rodnade -rodnades -rodnande -rodnandet -rodnandets -rodnar -rodnas -rodnat -rodnats -rodret -rodrets -rofferi -roger -rogers -rom -roman -romanen -romanens -romaner -romanerna -romanernas -romaners -romans -romansk -romanska -romanskt -romantik -romantiken -romantikens -romantisera -romantiserad -romantiserade -romantiserades -romantiserar -romantiseras -romantiserat -romantiserats -romantisk -romantiska -romantiske -romantiskt -romare -romaren -romarens -romares -romarna -romarnas -romersk -romerska -romerskt -rond -ronneby -ronnebys -ronny -ronnys -rop -ropa -ropad -ropade -ropades -ropande -ropandet -ropandets -ropar -ropas -ropat -ropats -ropen -ropens -ropet -ropets -rops -ror -ros -rosa -rosander -rosanders -rosen -rosenfors -rosenknopp -rosenknoppar -rosenknopparna -rosenknopparnas -rosenknoppars -rosenknoppen -rosenknoppens -rosens -rosersberg -rosersbergs -rosig -rosiga -rosigt -rosmarin -rosor -rosorna -rosornas -rosors -rospigg -rost -rosta -rostad -rostade -rostades -rostande -rostandet -rostandets -rostar -rostas -rostat -rostats -rostbiff -rostfri -rostfria -rostfritt -rostig -rostiga -rostigt -rostock -rostocks -rosvik -rosviks -rot -rota -rotad -rotade -rotades -rotar -rotas -rotat -rotation -rotationen -rotationens -rotations -rotats -rotborste -roten -rotens -rotera -roterad -roterade -roterades -roterar -roteras -roterat -roterats -rotkonsonant -rotkonsonanten -rotkonsonantens -rotkonsonanter -rotkonsonanterna -rotkonsonanternas -rotkonsonanters -rots -rott -rottne -rottneros -rottnes -rotts -rov -rovdjur -rovdjuren -rovdjurens -rovdjuret -rovdjurets -rovdjurs -rovdrift -rovdriften -rovdriftens -rovdrifts -rovet -rovets -rubb -rubba -rubbad -rubbade -rubbades -rubbande -rubbandet -rubbandets -rubbar -rubbas -rubbat -rubbats -rubbet -rubbets -rubin -rubricera -rubricerad -rubricerade -rubricerades -rubricerar -rubriceras -rubricerat -rubricerats -rubricering -rubriceringen -rubriceringens -rubricerings -rubrik -rubriken -rubrikens -rubriker -rubrikerna -rubrikernas -rubrikers -rucka -ruckade -ruckades -ruckar -ruckas -ruckat -ruckats -ruda -rudas -rudiment -rugby -ruin -ruinen -ruinens -ruiner -ruinera -ruinerad -ruinerade -ruinerades -ruinerar -ruineras -ruinerat -ruinerats -ruinerna -ruinernas -ruiners -rum -rummen -rummens -rummet -rummets -rumstemperatur -runa -runan -runans -rund -runda -rundad -rundade -rundades -rundar -rundare -rundas -rundast -rundaste -rundat -rundats -rundvik -rundviks -rune -runes -runnit -runor -runorna -runornas -runors -runsten -runstenar -runstenarna -runstenarnas -runstenars -runstenen -runstenens -runt -runtom -runtomkring -rus -rusa -rusade -rusades -rusande -rusar -rusas -rusat -rusats -rusch -ruschen -ruschens -rusen -rusens -ruset -rusets -rusig -rusiga -rusigt -ruska -ruskad -ruskade -ruskades -ruskar -ruskas -ruskat -ruskats -ruskig -ruskiga -ruskigt -rusningstid -russin -russinen -russinens -russinet -russinets -russins -rusta -rustad -rustade -rustades -rustar -rustas -rustat -rustats -rustik -rustning -rustningar -rustningarna -rustningarnas -rustningars -rustningen -rustningens -rustnings -rut -ruta -rutan -rutans -rutin -rutinen -rutinens -rutiner -rutinerad -rutinerade -rutinerat -rutinerna -rutinernas -rutiners -rutit -rutits -rutor -rutorna -rutornas -rutors -ruts -rutscha -rutschade -rutschar -rutschat -rutt -rutten -ruttens -rutter -rutterna -rutternas -rutters -ruttet -ruttna -ruttnade -ruttnar -ruttnat -rutts -ruva -ruvade -ruvades -ruvar -ruvas -ruvat -ruvats -rwanda -rwandas -rybs -ryck -rycka -ryckas -rycken -ryckens -rycker -ryckig -ryckiga -ryckigt -ryckning -ryckningar -ryckningarna -ryckningarnas -ryckningars -ryckningen -ryckningens -rycknings -rycks -ryckt -ryckte -rycktes -ryckts -ryd -ryds -rygg -rygga -ryggade -ryggar -ryggarna -ryggarnas -ryggars -ryggat -ryggen -ryggens -rygginstitut -rygginstitutet -rygginstitutets -ryggrad -ryggraden -ryggradens -ryggrader -ryggraderna -ryggradernas -ryggraders -ryggrads -ryggs -ryk -ryka -rykande -rykandet -rykandets -rykas -ryker -ryks -rykt -ryktas -ryktbar -ryktbara -ryktbart -rykte -rykten -ryktena -ryktenas -ryktens -ryktes -ryktesspridning -ryktesspridningen -ryktesspridningens -ryktesspridnings -ryktet -ryktets -rykts -rym -rymd -rymdbas -rymdbasen -rymdbasens -rymdbaser -rymdbaserna -rymdbasernas -rymdbasers -rymde -rymden -rymdens -rymder -rymderna -rymdernas -rymders -rymdes -rymdfarare -rymdfararen -rymdfararens -rymdfarares -rymdfararna -rymdfararnas -rymdfarkost -rymdfarkosten -rymdfarkostens -rymdfarkoster -rymdfarkosterna -rymdfarkosternas -rymdfarkosters -rymdimperier -rymdimperierna -rymdimperiernas -rymdimperiers -rymdimperiet -rymdimperiets -rymdimperium -rymdprojekt -rymdprojektet -rymdprojektets -rymdresa -rymdresan -rymdresans -rymdresor -rymdresorna -rymdresornas -rymdresors -rymdsatsning -rymdsatsningar -rymdsatsningarna -rymdsatsningarnas -rymdsatsningars -rymdsatsningen -rymdsatsningens -rymdsatsnings -rymdskepp -rymdskeppen -rymdskeppens -rymdskeppet -rymdskeppets -rymdsond -rymdsonden -rymdsondens -rymdsonder -rymdsonderna -rymdsondernas -rymdsonders -rymdstation -rymdstationen -rymdstationens -rymdstationer -rymdstationerna -rymdstationernas -rymdstationers -rymdstations -rymma -rymmande -rymmandet -rymmandets -rymmas -rymmer -ryms -rymt -rymts -rynka -rynkad -rynkade -rynkades -rynkan -rynkande -rynkandet -rynkandets -rynkans -rynkar -rynkas -rynkat -rynkats -rynkor -rynkorna -rynkornas -rynkors -rys -rysa -rysande -rysandet -rysandets -rysare -rysaren -rysarens -rysares -rysarna -rysarnas -ryser -rysk -ryska -ryske -ryskt -rysning -rysningar -rysningarna -rysningarnas -rysningars -rysningen -rysningens -rysnings -ryss -ryssar -ryssarna -ryssarnas -ryssars -ryssby -ryssbys -ryssen -ryssens -ryst -ryste -ryt -ryta -rytande -rytandet -rytandets -rytas -ryter -rytm -rytmen -rytmens -rytmer -rytmerna -rytmernas -rytmers -rytms -ryts -ryttare -ryttaren -ryttarens -ryttares -ryttarna -ryttarnas -rytteri -saab -saabs -sabbat -sabbaten -sabbatens -sabbats -sabbatsdag -sabbatsdagen -sabbatsdagens -sabbatsfirande -sabbatsfirandet -sabbatsfirandets -sabotage -sabotera -saboterad -saboterade -saboterades -saboterar -saboteras -saboterat -saboterats -sade -sades -sadist -sadisten -sadistens -sadister -sadisterna -sadisternas -sadisters -sadomasochism -sadomasochismen -sadomasochismens -sadomasochistisk -sadomasochistiska -sadomasochistiskt -safir -safiren -safirens -safirer -safirerna -safirernas -safirers -safirs -saft -safta -saftade -saftar -saftat -saften -saftens -safter -safterna -safternas -safters -saftig -saftiga -saftigare -saftigast -saftigaste -saftigt -saga -sagan -sagans -sagas -sagd -sagda -sagde -sagesman -sagoaktig -sagoaktiga -sagoaktigare -sagoaktigast -sagoaktigaste -sagoaktigt -sagofigur -sagofiguren -sagofigurens -sagofigurer -sagofigurerna -sagofigurernas -sagofigurers -sagor -sagorna -sagornas -sagors -sagt -sagts -sak -saken -sakens -saker -sakerna -sakernas -sakers -sakkunnig -sakkunniga -sakkunnigt -sakna -saknad -saknade -saknaden -saknadens -saknades -saknar -saknas -saknat -saknats -sakrament -sakramenten -sakramentens -sakramentet -sakramentets -saks -sakta -saktad -saktade -saktades -saktar -saktas -saktat -saktats -saktmod -saktmodig -saktmodiga -saktmodigt -sakuppgift -sakuppgiften -sakuppgiftens -sakuppgifter -sakuppgifterna -sakuppgifternas -sakuppgifters -samarbeta -samarbetade -samarbetar -samarbetat -samarbete -samarbetet -samarbetets -samarit -samariten -samaritens -samariter -samariterna -samariternas -samariters -samaritisk -samaritiska -samaritiskt -samband -sambanden -sambandens -sambandet -sambandets -sambo -sambon -sambons -sambos -same -samen -samens -samer -samerna -samernas -samers -samfund -samfunden -samfundens -samfundet -samfundets -samma -samman -sammanbinder -sammanbiten -sammanbitet -sammanbitna -sammanboende -sammanbrott -sammanbrotten -sammanbrottens -sammanbrottet -sammanbrottets -sammandrag -sammandragen -sammandragens -sammandraget -sammandragets -sammandragna -sammandragning -sammandragningar -sammandragningarna -sammandragningarnas -sammandragningars -sammandragningen -sammandragningens -sammandragnings -sammanfatta -sammanfattad -sammanfattade -sammanfattades -sammanfattande -sammanfattandet -sammanfattandets -sammanfattar -sammanfattas -sammanfattat -sammanfattats -sammanfattning -sammanfattningar -sammanfattningarna -sammanfattningarnas -sammanfattningars -sammanfattningen -sammanfattningens -sammanfattnings -sammanfattningsvis -sammanfoga -sammanfogad -sammanfogade -sammanfogades -sammanfogande -sammanfogandet -sammanfogandets -sammanfogar -sammanfogas -sammanfogat -sammanfogats -sammanhang -sammanhangen -sammanhangens -sammanhanget -sammanhangets -sammankomst -sammankomsten -sammankomstens -sammankomster -sammankomsterna -sammankomsternas -sammankomsters -sammansatt -sammansatta -sammansvetsad -sammansvetsade -sammansvetsat -sammansvuren -sammansvuret -sammansvurna -sammantagen -sammantaget -sammantagna -samme -sammet -sammeten -sammetens -sammetsrock -sammetsrocken -sammetsrockens -samordna -samordnad -samordnade -samordnades -samordnar -samordnare -samordnaren -samordnarens -samordnares -samordnarna -samordnarnas -samordnas -samordnat -samordnats -samordning -samordningar -samordningarna -samordningarnas -samordningars -samordningen -samordningens -samordnings -samordningsansvar -samordningsansvaren -samordningsansvarens -samordningsansvaret -samordningsansvarets -sams -samsades -samsas -samt -samtid -samtida -samtiden -samtidens -samtidig -samtidiga -samtidigt -samtids -samtyck -samtycka -samtyckas -samtycke -samtycker -samtycket -samtyckets -samtycks -samtyckt -samtyckte -samtycktes -samtyckts -samvaro -samvaron -samvarons -samverka -samverkade -samverkan -samverkande -samverkar -samverkat -samvete -samveten -samvetena -samvetenas -samvetens -samvetes -samvetet -samvetets -sanatorier -sanatorierna -sanatoriernas -sanatoriers -sanatoriet -sanatoriets -sanatorium -sand -sandared -sandareds -sandarne -sandarnes -sandby -sandbys -sanden -sandens -sandhamn -sandhamns -sandhem -sandhems -sandra -sandras -sandstrand -sandstranden -sandstrandens -sandstrands -sandviken -sandvikens -sangis -sank -sanka -sankt -sankta -sankte -sanktion -sanktionen -sanktionens -sanktioner -sanktionera -sanktionerad -sanktionerade -sanktionerades -sanktionerar -sanktioneras -sanktionerat -sanktionerats -sanktionerna -sanktionernas -sanktioners -sanktions -sankts -sann -sanna -sannare -sannast -sannaste -sanning -sanningar -sanningarna -sanningarnas -sanningars -sanningen -sanningens -sannings -sans -sansad -sansade -sansat -sant -sara -sarajevo -sarajevos -saras -sarga -sargad -sargade -sargades -sargande -sargandet -sargandets -sargar -sargas -sargat -sargats -sas -satan -satanist -satanisten -satanistens -satanister -satanisterna -satanisternas -satanisters -satin -satir -satiren -satirens -satirer -satirerna -satirernas -satirers -satirisk -satiriska -satiriskt -satirs -satisfiera -satisfierad -satisfierade -satisfierades -satisfierar -satisfieras -satisfierat -satisfierats -sats -satsa -satsad -satsade -satsades -satsar -satsat -satsats -satsen -satsens -satser -satserna -satsernas -satsers -satsning -satsningar -satsningarna -satsningarnas -satsningars -satsningen -satsningens -satsnings -satt -satta -satte -sattes -satts -sattyg -saturnus -saudiarabien -saudiarabiens -sav -save -saven -savens -sax -saxa -saxade -saxar -saxarna -saxarnas -saxars -saxat -saxen -saxens -saxofon -saxofonen -saxofonens -saxofoner -saxofonerna -saxofonernas -saxofoners -saxofons -scania -scanias -scen -scenario -scenarion -scenarions -scenariot -scenariots -scenen -scenens -scener -sceneri -sceneriet -sceneriets -scenerna -scenernas -sceners -scenisk -sceniska -sceniskt -schack -schah -schahen -schahens -schaher -schaherna -schahernas -schahers -schaktmassor -schema -scheman -schemans -schemat -schematisk -schematiska -schematiskt -schemats -schimpans -schimpansen -schimpansens -schimpanser -schimpanserna -schimpansernas -schimpansers -schism -schismen -schismens -schizofren -schizofrena -schizofreni -schizofrent -schweiz -science -scout -scouter -scouterna -scouternas -scouters -sed -sedan -sedd -sedda -seden -sedens -seder -sedermera -sederna -sedernas -seders -sediment -sedimentet -sedimentets -seds -seende -seendet -seendets -sefir -sefiren -sefirens -sefiret -sefirets -sefyr -sefyren -sefyrens -sefyret -sefyrets -seg -sega -segare -segast -segaste -seger -segergudinna -segergudinnan -segergudinnans -segerherre -segerherren -segerherrens -segerkrans -segerkransen -segerkransens -segern -segerns -segersta -segerstas -segerviss -segervissa -segervisst -segment -segmenten -segmentens -segmentera -segmenterad -segmenterade -segmenterades -segmenterar -segmenteras -segmenterat -segmenterats -segmentering -segmenteringar -segmenteringarna -segmenteringarnas -segmenteringars -segmenteringen -segmenteringens -segmenterings -segmentet -segmentets -segmon -segmons -segna -segnade -segnar -segnat -segra -segrade -segrande -segrandet -segrandets -segrar -segrare -segraren -segrarens -segrares -segrarna -segrarnas -segrars -segrat -segregera -segregerad -segregerade -segregerades -segregerar -segregeras -segregerat -segregerats -segt -sej -sejar -sejarna -sejarnas -sejars -sejen -sejens -sejour -sejouren -sejourens -sejourer -sejourerna -sejourernas -sejourers -sekret -sekretariat -sekretariaten -sekretariatens -sekretariatet -sekretariatets -sekreterare -sekreteraren -sekreterarens -sekreterares -sekreterarna -sekreterarnas -sekretess -sekretessen -sekretessens -sekretet -sekretets -sekt -sekten -sektens -sekter -sekterna -sekternas -sekters -sektion -sektionen -sektionens -sektioner -sektionerna -sektionernas -sektioners -sektions -sektor -sektorer -sektorerna -sektorernas -sektorers -sektorn -sektorns -sektors -sekts -sekund -sekunden -sekundens -sekunder -sekunderna -sekundernas -sekunders -sekvens -sekvensen -sekvensens -sekvenser -sekvenserna -sekvensernas -sekvensers -semafor -semaforen -semaforens -semaforer -semaforerna -semaforernas -semaforers -semantik -semantiken -semantikens -semantisk -semantiska -semantiskt -semester -semestern -semesterns -semesters -semestra -semestrar -semestrarna -semestrarnas -semestrars -seminarier -seminarierna -seminariernas -seminariers -seminarierum -seminariet -seminariets -seminarium -semitism -semitismen -semitismens -sen -sena -senan -senans -senap -senapen -senapens -senaps -senapskorn -senare -senast -senaste -senat -senaten -senatens -senator -senatorn -senatorns -senators -sene -senig -seniga -senigt -senior -senioren -seniorens -seniorer -seniorerna -seniorernas -seniorers -senkommen -senkommet -senkomna -sennan -sennans -senor -senorna -senornas -senors -sensation -sensationen -sensationens -sensationer -sensationerna -sensationernas -sensationers -sensations -sent -sentida -separat -separata -separera -separerad -separerade -separerades -separerar -separeras -separerat -separerats -september -septembers -ser -seraf -serafen -serafens -serafer -seraferna -serafernas -serafers -serenad -serenaden -serenadens -serenader -serenaderna -serenadernas -serenaders -sergeant -sergeanten -sergeantens -sergeanter -sergeanterna -sergeanternas -sergeanters -serie -seriefigur -seriefiguren -seriefigurens -seriefigurer -seriefigurerna -seriefigurernas -seriefigurers -seriefigurs -serien -seriens -serier -serierna -seriernas -seriers -series -serietecknare -serietecknaren -serietecknarens -serietecknares -serietecknarna -serietecknarnas -serietidning -serietidningar -serietidningarna -serietidningarnas -serietidningars -serietidningen -serietidningens -serietidnings -serva -servade -servar -servarna -servarnas -servars -servat -serve -serven -servens -servera -serverad -serverade -serverades -serverar -serveras -serverat -serverats -serveringsfat -service -servicen -servicens -ses -session -sessionen -sessionens -sessioner -sessionerna -sessionernas -sessioners -set -sett -setts -sex -sexa -sexan -sexans -sexdrega -sexdregas -sexhundra -sexig -sexiga -sexigt -sexti -sextio -sextioen -sextioett -sextiofem -sextiofyra -sextionde -sextionio -sextiosex -sextiosju -sextiotre -sexton -sextonde -sextonhundra -sextontusen -sextusen -sfinx -sfinxen -sfinxens -sheriff -sheriffen -sheriffens -shoppa -shoppade -shoppar -shoppat -shopping -shoppingen -shoppingens -shoppings -show -sia -siade -siades -siande -siandet -siandets -siar -siare -siaren -siarens -siares -siarna -siarnas -sias -siat -siats -sibirien -sibiriens -sic -sid -sida -sidan -sidans -sidas -siden -sidnummer -sidnumrering -sidnumreringar -sidnumreringarna -sidnumreringarnas -sidnumreringars -sidnumreringen -sidnumreringens -sidnumrerings -sidoeffekt -sidoeffekter -sidoeffekterna -sidoeffekternas -sidoeffekters -sidor -sidorna -sidornas -sidors -sierra -siffra -siffran -siffrans -siffror -siffrorna -siffrornas -siffrors -sig -signa -signad -signade -signades -signar -signas -signat -signats -signatur -signaturen -signaturens -signaturer -signaturerna -signaturernas -signaturers -signaturs -signe -signera -signerad -signerade -signerades -signerar -signeras -signerat -signerats -signes -signifikans -signifikant -signifikanta -signifikativ -signifikativa -signifikativt -sigrid -sigrids -sigtuna -sigtunas -sigurd -sigurds -sigvard -sigvards -sik -sikar -sikarna -sikarnas -sikars -siken -sikens -sikfors -siks -sikt -sikta -siktad -siktade -siktades -siktar -siktas -siktat -siktats -sikte -sikten -siktena -siktenas -siktens -siktes -siktet -siktets -siktning -siktningen -siktningens -siktnings -simma -simmade -simmar -simmare -simmaren -simmarens -simmares -simmarna -simmarnas -simmat -simon -simons -simrishamn -simrishamns -sin -sina -sinade -sinande -sinandet -sinandets -sinar -sinat -singapore -singapores -sinka -sinkad -sinkade -sinkades -sinkar -sinkas -sinkat -sinkats -sinnad -sinnade -sinnat -sinne -sinnen -sinnena -sinnenas -sinnens -sinnes -sinnesfrid -sinnesfriden -sinnesfridens -sinnesrubbad -sinnesrubbade -sinnesrubbat -sinnessjuk -sinnessjuka -sinnessjukan -sinnessjukans -sinnessjukas -sinnessjukhus -sinnessjukhusen -sinnessjukhusens -sinnessjukhuset -sinnessjukhusets -sinnessjukt -sinnessvaghet -sinnessvagheten -sinnessvaghetens -sinnessvaghets -sinnet -sinnets -sinnrik -sinnrika -sinnrikt -sinom -sippa -sippan -sippans -sippor -sipporna -sippornas -sippors -sippra -sipprade -sipprar -sipprat -sir -sira -sirade -sirap -sirapen -sirapens -sirar -sirat -siraten -siratens -sirater -siraterna -siraternas -siraters -siren -sirenen -sirenens -sirener -sirenerna -sirenernas -sireners -sirens -siret -sirets -siri -siris -sist -sista -sistas -siste -sistes -sistone -sits -sitsar -sitsarna -sitsarnas -sitsars -sitsen -sitsens -sitt -sitta -sittande -sittandet -sittandets -sitter -sittning -sittningar -sittningarna -sittningarnas -sittningars -sittningen -sittningens -sittnings -situation -situationen -situationens -situationer -situationerna -situationernas -situationers -situations -situationskomik -siv -sivert -siverts -sivs -sixten -sixtens -sjok -sju -sjua -sjuan -sjuans -sjuarmad -sjuarmade -sjuarmat -sjuda -sjuder -sjudit -sjuhundra -sjuk -sjuka -sjukare -sjukas -sjukast -sjukaste -sjukbidrag -sjukdom -sjukdomar -sjukdomarna -sjukdomarnas -sjukdomars -sjukdomen -sjukdomens -sjukdoms -sjuke -sjukes -sjukhus -sjukhusen -sjukhusens -sjukhuset -sjukhusets -sjukkassa -sjukkassan -sjukkassans -sjukkassor -sjukkassorna -sjukkassornas -sjukkassors -sjukna -sjuknade -sjuknar -sjuknat -sjukpeng -sjukpengen -sjukpengens -sjukpenning -sjukpenningen -sjukpenningens -sjukpennings -sjukskrev -sjukskrevs -sjukskriv -sjukskriva -sjukskrivas -sjukskriven -sjukskriver -sjukskrivet -sjukskrivit -sjukskrivits -sjukskrivna -sjukskrivnas -sjukskrivne -sjukskrivnes -sjukskrivning -sjukskrivningar -sjukskrivningarna -sjukskrivningarnas -sjukskrivningars -sjukskrivningen -sjukskrivningens -sjukskrivnings -sjukskrivningsgrad -sjukskrivningsgraden -sjukskrivningsgradens -sjukskrivs -sjuksyster -sjukt -sjunde -sjung -sjunga -sjungande -sjungandet -sjungandets -sjungen -sjunger -sjunges -sjunget -sjungit -sjungits -sjungna -sjunka -sjunkande -sjunkandet -sjunkandets -sjunken -sjunker -sjunket -sjunkit -sjunkna -sjuntorp -sjuntorps -sjuor -sjuorna -sjuornas -sjuors -sjutti -sjuttio -sjuttioen -sjuttioett -sjuttiofem -sjuttiofyra -sjuttionde -sjuttionio -sjuttiosex -sjuttiosju -sjuttiotre -sjutton -sjuttonde -sjuttonhundra -sjuttontusen -sjutusen -ska -skada -skadad -skadade -skadades -skadan -skadande -skadandet -skadandets -skadans -skadar -skadas -skadat -skadats -skadedjur -skadedjuren -skadedjurens -skadedjuret -skadedjurets -skadeinsekt -skadeinsekten -skadeinsektens -skadeinsekter -skadeinsekterna -skadeinsekternas -skadeinsekters -skadesjukdom -skadesjukdomar -skadesjukdomarna -skadesjukdomarnas -skadesjukdomars -skadesjukdomen -skadesjukdomens -skador -skadorna -skadornas -skadors -skaffa -skaffad -skaffade -skaffades -skaffar -skaffas -skaffat -skaffats -skafferi -skafferier -skafferierna -skafferiernas -skafferiers -skaft -skaften -skaftens -skaftet -skaftets -skagersvik -skagersviks -skaka -skakad -skakade -skakades -skakande -skakar -skakas -skakat -skakats -skakning -skakningar -skakningarna -skakningarnas -skakningars -skakningen -skakningens -skaknings -skam -skammen -skammens -skamsen -skamset -skamsna -skandia -skandias -skandinav -skandinavien -skandinaviens -skans -skansen -skansens -skapa -skapad -skapade -skapades -skapande -skapandet -skapandets -skapar -skapare -skaparen -skaparens -skapares -skaparna -skaparnas -skapas -skapat -skapats -skar -skara -skaran -skarans -skaras -skaror -skarorna -skarornas -skarors -skarp -skarpa -skarpare -skarpast -skarpaste -skarpe -skarpsinnighet -skarpsinnigheten -skarpsinnighetens -skarpsinnigheter -skarpsinnigheterna -skarpsinnigheternas -skarpsinnigheters -skarpsinnighets -skarpt -skarv -skarvar -skarvarna -skarvarnas -skarvars -skarven -skarvens -skarvning -skarvningar -skarvningarna -skarvningarnas -skarvningars -skarvningen -skarvningens -skarvnings -skarvs -skata -skatan -skatans -skatas -skatbo -skatbon -skatbons -skatt -skatta -skattad -skattade -skattades -skattar -skattas -skattat -skattats -skatteavdrag -skatteavdragen -skatteavdragens -skatteavdraget -skatteavdragets -skatteavdrags -skattefri -skattefria -skattefritt -skattefusk -skattefusket -skattefuskets -skattemyndighet -skattemyndigheten -skattemyndighetens -skattemyndigheter -skattemyndigheterna -skattemyndigheternas -skattemyndigheters -skattemyndighets -skatten -skattens -skattepenning -skattepenningen -skattepenningens -skattepennings -skatter -skatterna -skatternas -skatters -skattesats -skattesatsen -skattesatsens -skattesatser -skattesatserna -skattesatsernas -skattesatsers -skattesmitare -skattesmitaren -skattesmitarens -skattesmitares -skattesmitarna -skattesmitarnas -skattkammare -skattkammaren -skattkammarens -skattkammares -skattkammarna -skattkammarnas -skattmas -skattning -skattningar -skattningarna -skattningarnas -skattningars -skattningen -skattningens -skattnings -skattskrev -skattskriva -skattskrivas -skattskriver -skattskrivit -skattskrivning -skattskrivningen -skattskrivningens -skattskrivnings -skava -skavde -skaver -skavt -ske -skebobruk -skebobruks -sked -skedar -skedarna -skedarnas -skedars -skedd -skedda -skedde -skede -skeden -skedena -skedenas -skedens -skedet -skedets -skedvi -skedvis -skee -skeende -skeenden -skeendens -skeendet -skeendets -skees -sken -skena -skenan -skenande -skenandet -skenandets -skenans -skenbar -skenbara -skenbart -skene -skenes -skenet -skenets -skenor -skenorna -skenornas -skenors -skepnad -skepnaden -skepnadens -skepnader -skepnaderna -skepnadernas -skepnaders -skepnads -skepp -skeppa -skeppad -skeppade -skeppades -skeppar -skeppare -skepparen -skepparens -skeppares -skepparna -skepparnas -skeppas -skeppat -skeppats -skeppen -skeppens -skeppet -skeppets -skepps -skeppsbrott -skepsis -skeptisk -skeptiska -skeptiskt -sker -sket -sketch -sketchen -sketchens -sketcher -sketcherna -sketchernas -sketchers -skets -skett -skev -skeva -skevt -skick -skicka -skickad -skickade -skickades -skickar -skickas -skickat -skickats -skicket -skickets -skida -skidan -skidans -skidas -skidor -skidorna -skidornas -skidors -skidresa -skidresan -skidresans -skidresor -skidresorna -skidresornas -skidresors -skift -skifta -skiftad -skiftade -skiftades -skiftande -skiftandet -skiftandets -skiftar -skiftas -skiftat -skiftats -skifte -skiften -skiftens -skiftes -skiftet -skiftets -skiftning -skiftningar -skiftningarna -skiftningarnas -skiftningars -skiftningen -skiftningens -skiftnings -skikt -skiktad -skiktade -skiktat -skikten -skiktens -skiktet -skiktets -skimmer -skimra -skimrade -skimrande -skimrandet -skimrandets -skimrar -skimrat -skimret -skimrets -skin -skina -skinande -skinandet -skinandets -skiner -skingra -skingrad -skingrade -skingrades -skingrar -skingras -skingrat -skingrats -skinka -skinkan -skinkans -skinkor -skinkorna -skinkornas -skinkors -skinn -skinnbyxa -skinnbyxan -skinnbyxans -skinnbyxor -skinnbyxorna -skinnbyxornas -skinnbyxors -skinnet -skinnets -skinnskatteberg -skinnskattebergs -skippa -skippad -skippade -skippades -skippar -skippas -skippat -skippats -skir -skira -skirt -skiss -skissa -skissad -skissade -skissades -skissar -skissartad -skissartade -skissartat -skissas -skissat -skissats -skissen -skissens -skisser -skissera -skisserad -skisserade -skisserades -skisserar -skisseras -skisserat -skisserats -skisserna -skissernas -skissers -skit -skita -skitar -skitarna -skitarnas -skitars -skitas -skitbra -skiten -skitens -skiter -skitig -skitiga -skitigt -skitit -skitits -skitprat -skits -skiva -skivan -skivans -skivarp -skivarps -skivminne -skivminnena -skivminnenas -skivminnes -skivminnet -skivminnets -skivor -skivorna -skivornas -skivors -skjorta -skjortan -skjortans -skjortas -skjortor -skjortorna -skjortornas -skjortors -skjut -skjuta -skjutas -skjuten -skjuter -skjutet -skjutit -skjutits -skjutna -skjutning -skjutningar -skjutningarna -skjutningarnas -skjutningars -skjutningen -skjutningens -skjutnings -skjuts -skjutsa -skjutsad -skjutsade -skjutsades -skjutsar -skjutsas -skjutsat -skjutsats -sko -skock -skocka -skockade -skockades -skockar -skockarna -skockarnas -skockars -skockas -skockat -skockats -skocken -skockens -skodd -skodda -skodde -skog -skogar -skogarna -skogarnas -skogars -skogen -skogens -skogs -skogsbevuxen -skogsbevuxet -skogsbevuxna -skogsbrukets -skogsdungar -skogsdungarna -skogsdungarnas -skogsdungars -skogsdunge -skogsdungen -skogsdungens -skogstorp -skogstorps -skogsvandring -skogsvandringar -skogsvandringarna -skogsvandringarnas -skogsvandringars -skogsvandringen -skogsvandringens -skogsvandrings -skoj -skojig -skojiga -skojigare -skojigast -skojigaste -skojigt -skomakare -skomakaren -skomakarens -skomakares -skomakarna -skomakarnas -skon -skona -skonad -skonade -skonades -skonar -skonat -skonats -skons -skopa -skopan -skopans -skopas -skopor -skoporna -skopornas -skopors -skor -skorna -skornas -skorpa -skorpan -skorpans -skorpas -skorped -skorpeds -skorpion -skorpionen -skorpionens -skorpioner -skorpionerna -skorpionernas -skorpioners -skorpions -skorpor -skorporna -skorpornas -skorpors -skors -skorsten -skorstenar -skorstenarna -skorstenarnas -skorstenars -skorstenen -skorstenens -skos -skotsk -skotska -skotskt -skott -skottar -skottarna -skottarnas -skottars -skotte -skotten -skottens -skottes -skottet -skottets -skottning -skottningen -skottningens -skottorp -skottorps -skrank -skranket -skrankets -skrapa -skrapade -skrapades -skrapande -skrapandet -skrapandets -skrapar -skrapas -skrapat -skrapats -skratt -skratta -skrattade -skrattades -skrattande -skrattandet -skrattandets -skrattar -skrattas -skrattat -skrattats -skratten -skrattens -skrattet -skrattets -skrattretande -skratts -skred -skrek -skreks -skrev -skreva -skrevan -skrevans -skrevet -skrevets -skrevor -skrevorna -skrevornas -skrevors -skrevs -skri -skria -skriade -skriades -skriande -skriandet -skriandets -skriar -skrias -skriat -skriats -skribent -skribenten -skribentens -skribenter -skribenterna -skribenternas -skribenters -skribents -skrida -skrider -skridit -skridsko -skridskon -skridskons -skridskor -skridskorna -skridskornas -skridskors -skrift -skriften -skriftens -skrifter -skrifterna -skrifternas -skrifters -skrifts -skrik -skrika -skriker -skrin -skrinen -skrinens -skrinet -skrinets -skrins -skriv -skriva -skrivande -skrivandet -skrivandets -skrivare -skrivaren -skrivarens -skrivares -skrivarhastighet -skrivarhastigheten -skrivarhastighetens -skrivarna -skrivarnas -skrivas -skrivbord -skrivborden -skrivbordens -skrivbordet -skrivbordets -skrivbords -skriven -skriver -skriveri -skriverier -skriverierna -skriveriernas -skriveriers -skrives -skrivet -skrivit -skrivits -skrivkramp -skrivmaskin -skrivmaskinen -skrivmaskinens -skrivmaskiner -skrivmaskinerna -skrivmaskinernas -skrivmaskiners -skrivmaskins -skrivna -skrivning -skrivningar -skrivningarna -skrivningarnas -skrivningars -skrivningen -skrivningens -skrivnings -skrivs -skrock -skrocka -skrockade -skrockar -skrockat -skrocket -skrockets -skrot -skrotet -skrotets -skrov -skrovet -skrovets -skrubb -skrubben -skrubbens -skrud -skruden -skrudens -skrumpen -skrumpet -skrumpna -skrutit -skrutits -skruv -skruva -skruvad -skruvade -skruvades -skruvar -skruvarna -skruvarnas -skruvars -skruvas -skruvat -skruvats -skruven -skruvens -skruvs -skrymma -skrymmade -skrymmar -skrymmat -skrymtaktig -skrymtaktiga -skrymtaktigt -skrymtare -skrymtaren -skrymtarens -skrymtares -skrymtarna -skrymtarnas -skrymteri -skryt -skryta -skrytas -skryter -skryts -skuffa -skuffad -skuffade -skuffades -skuffar -skuffas -skuffat -skuffats -skugga -skuggad -skuggade -skuggades -skuggan -skuggans -skuggar -skuggas -skuggat -skuggats -skuggor -skuggorna -skuggornas -skuggors -skuggrik -skuggrika -skuggrikt -skum -skumma -skummade -skummades -skummande -skummandet -skummandets -skummar -skummas -skummat -skummats -skummet -skummets -skummig -skummiga -skummigt -skumpa -skumpade -skumpande -skumpandet -skumpandets -skumpar -skumpat -skumt -skur -skura -skurad -skurade -skurades -skurar -skurarna -skurarnas -skurars -skurat -skurats -skuren -skurens -skuret -skurit -skurk -skurkar -skurkarna -skurkarnas -skurkars -skurken -skurkens -skurks -skurna -skurs -skurup -skurups -skurvis -skuta -skutan -skutans -skutor -skutorna -skutornas -skutors -skutta -skuttade -skuttar -skuttat -skvadron -skvadronen -skvadronens -skvadroner -skvadronerna -skvadronernas -skvadroners -skvatt -sky -skyar -skyarna -skyarnas -skyars -skydd -skydda -skyddad -skyddade -skyddades -skyddande -skyddandet -skyddandets -skyddar -skyddas -skyddat -skyddats -skydde -skydden -skyddens -skyddes -skyddet -skyddets -skydds -skyddsutrustning -skyddsutrustningen -skyddsutrustningens -skyddsutrustnings -skygd -skygdet -skygdets -skygg -skygga -skyggare -skyggast -skyggaste -skyggt -skym -skymd -skymda -skymde -skymdes -skymf -skymfa -skymfad -skymfade -skymfades -skymfar -skymfas -skymfat -skymfats -skymma -skymmande -skymmandet -skymmandets -skymmas -skymmer -skymning -skymningar -skymningarna -skymningarnas -skymningars -skymningen -skymningens -skymnings -skyms -skymt -skymta -skymtade -skymtades -skymtar -skymtas -skymtat -skymtats -skymten -skymtens -skymts -skymundan -skyn -skynda -skyndade -skyndades -skyndande -skyndandet -skyndandets -skyndar -skyndaren -skyndas -skyndat -skyndats -skyndsam -skyndsamma -skyndsammare -skyndsammast -skyndsammaste -skyndsamt -skynke -skyns -skyr -skys -skyskrapa -skyskrapan -skyskrapans -skyskrapas -skytt -skyttar -skyttarna -skyttarnas -skyttars -skytte -skytten -skyttens -skyttorp -skyttorps -skytts -smack -smacka -smackade -smackar -smackat -smak -smaka -smakad -smakade -smakades -smakar -smakat -smakats -smaken -smakens -smaker -smakerna -smakernas -smakers -smakriktning -smakriktningar -smakriktningarna -smakriktningarnas -smakriktningars -smaksak -smaksatt -smaksatta -smaksensation -smaksensationen -smaksensationens -smaksensationer -smaksensationerna -smaksensationernas -smaksensationers -smaksensations -smart -smarta -smaskens -smaskig -smaskiga -smaskigare -smaskigast -smaskigaste -smaskigt -smatter -smattra -smattrade -smattrades -smattrande -smattrandet -smattrandets -smattrar -smattras -smattrat -smattrats -smed -smeden -smedens -smeder -smederna -smedernas -smeders -smedja -smedjan -smedjans -smedjebacken -smedjebackens -smedjor -smedjorna -smedjornas -smedjors -smedstorp -smedstorps -smek -smeka -smekande -smekandet -smekandets -smekas -smeker -smeknamn -smeknamnet -smeknamnets -smekning -smekningar -smekningarna -smekningarnas -smekningars -smekningen -smekningens -smeknings -smeks -smeksamhet -smeksamheten -smeksamhetens -smeksamhets -smekt -smekte -smektes -smekts -smet -smeta -smetad -smetade -smetades -smetar -smetat -smetats -smetig -smetiga -smetigt -smets -smicker -smickra -smickrad -smickrade -smickrades -smickrar -smickras -smickrat -smickrats -smickret -smickrets -smida -smidande -smidandet -smidandets -smidare -smidaren -smidarens -smidares -smidarna -smidarnas -smidas -smidd -smidda -smidde -smiddes -smide -smiden -smidens -smider -smideskonst -smidet -smidets -smidig -smidiga -smidigare -smidigast -smidigaste -smidighet -smidigheten -smidighetens -smidighets -smidigt -smink -sminka -sminkad -sminkade -sminkades -sminkar -sminkas -sminkat -sminkats -sminket -sminkets -sminkning -sminkningen -sminkningens -sminknings -sminks -smit -smita -smitare -smitaren -smitarens -smitares -smitarna -smitarnas -smitas -smiter -smitit -smitits -smits -smitt -smitta -smittad -smittade -smittades -smittar -smittat -smittats -smittorisk -smittorisken -smittoriskens -smitts -smittsam -smittsamma -smittsammare -smittsammast -smittsammaste -smittsamt -smog -smoking -smokingar -smokingarna -smokingarnas -smokingars -smokingen -smokingens -smokings -smord -smorda -smorde -smordes -smort -smorts -smugit -smurf -smurfar -smurfarna -smurfarnas -smurfars -smurfen -smurfens -smuts -smutsa -smutsade -smutsar -smutsat -smutsig -smutsiga -smutsigare -smutsigast -smutsigaste -smutsigt -smutskastning -smutskastningen -smutskastningens -smycka -smyckad -smyckade -smyckades -smyckar -smyckas -smyckat -smyckats -smycke -smycken -smyckens -smyg -smyga -smygande -smygandet -smygandets -smygehamn -smygehamns -smyger -snabb -snabba -snabbade -snabbar -snabbare -snabbas -snabbast -snabbaste -snabbat -snabbe -snabbes -snabbhet -snabbheten -snabbhetens -snabbhets -snabbt -snabbvisit -snack -snacka -snackade -snackades -snackande -snackandet -snackandets -snackar -snackas -snackat -snackats -snacket -snackets -snappa -snappade -snappar -snappat -snaps -snar -snara -snaran -snarans -snarare -snarast -snaraste -snarka -snarkade -snarkar -snarkat -snaror -snarorna -snarornas -snarors -snart -snaskig -snaskiga -snaskigare -snaskigast -snaskigaste -snaskigt -snatta -snattade -snattar -snattat -snava -snavade -snavar -snavat -sned -sneda -snedare -snedast -snedaste -snedda -sneddade -sneddande -sneddandet -sneddandets -sneddar -sneddat -snedstreck -snedvridning -snedvridningar -snedvridningarna -snedvridningarnas -snedvridningars -snedvridningen -snedvridningens -snedvridnings -snesudden -snesuddens -snett -snickare -snickaren -snickarens -snickares -snickarna -snickarnas -snickeri -snickra -snickrad -snickrade -snickrades -snickrar -snickras -snickrat -snickrats -snida -snidade -snidades -snidar -snidas -snidat -snidats -sniken -sniket -snikna -snitt -snittet -snittets -sno -snobberi -snobbism -snobbismen -snobbismens -snodd -snodda -snodde -snoddes -snok -snoka -snokade -snokades -snokar -snokarna -snokarnas -snokars -snokas -snokat -snokats -snoken -snokens -snopen -snopet -snopna -snor -snoret -snorets -snorkig -snorkiga -snorkigare -snorkigast -snorkigaste -snorkigt -snos -snott -snotts -snudda -snuddade -snuddar -snuddat -snurr -snurra -snurrad -snurrade -snurrades -snurrande -snurrandet -snurrandets -snurrar -snurras -snurrat -snurrats -snus -snuset -snusets -snut -snutar -snutarna -snutarnas -snutars -snuten -snutens -snutit -snutits -snutt -snuttar -snuttarna -snuttarnas -snuttars -snutten -snuttens -snuva -snuvad -snuvade -snuvan -snuvans -snuvas -snuvat -snuvor -snuvorna -snuvornas -snuvors -snyfta -snyftade -snyftades -snyftande -snyftandet -snyftandets -snyftar -snyftare -snyftaren -snyftarens -snyftares -snyftarna -snyftarnas -snyftas -snyftat -snyftats -snyftning -snyftningar -snyftningarna -snyftningarnas -snyftningars -snyftningen -snyftningens -snyftnings -snygg -snygga -snyggare -snyggast -snyggaste -snyggt -snyt -snyta -snytas -snytbagge -snyter -snyts -sober -sobert -sobra -societet -societeten -societetens -societeter -societeterna -societeternas -societeters -socioekonomisk -socioekonomiska -socioekonomiskt -socka -sockan -sockans -socken -socker -sockerbit -sockerbitar -sockerbitarna -sockerbitarnas -sockerbitars -sockerbiten -sockerbitens -sockerkaka -sockerkakan -sockerkakans -sockerkakas -socknen -socknens -sockor -sockorna -sockornas -sockors -soffa -soffan -soffans -soffas -soffor -sofforna -soffornas -soffors -sofia -sofias -sofie -sofies -sofistikerad -sofistikerade -sofistikerat -soja -sojan -sojans -sojas -som -somatisk -somatiska -somatiskt -sommar -sommararbete -sommararbetet -sommararbetets -sommardag -sommardagar -sommardagarna -sommardagarnas -sommardagars -sommardagen -sommardagens -sommardags -sommaren -sommarens -sommarnatt -sommarnatten -sommarnattens -sommarstuga -sommarstugan -sommarstugans -sommarstugas -sommarstugor -sommarstugorna -sommarstugornas -sommarstugors -sommartid -sommartiden -sommartidens -sommartids -sommarvarm -sommarvarma -sommarvarmt -sommen -sommens -somna -somnad -somnade -somnades -somnande -somnandet -somnandets -somnar -somnat -somnats -somrar -somrarna -somrarnas -somrars -somras -somt -son -sona -sonad -sonade -sonades -sonar -sonas -sonat -sonats -sond -sondera -sonderad -sonderade -sonderades -sonderar -sonderas -sonderat -sonderats -sondotter -sondottern -sondotterns -sonen -sonens -sonhustru -sonhustrun -sonhustruns -sonika -sonja -sonjas -sons -sonson -sonsonen -sonsonens -sonsons -sopa -sopad -sopade -sopades -sopan -sopans -sopar -sopas -sopat -sopats -sopberg -sophink -sopmaja -sopmajan -sopmajans -sopmajor -sopmajorna -sopmajornas -sopmajors -sopor -soporna -sopornas -sopors -soppa -soppan -soppans -soppas -soppero -sopperos -sopran -sopranen -sopranens -sopraner -sopranerna -sopranernas -sopraners -sopstation -sopstationen -sopstationens -sopstations -soptipp -soptippar -soptipparna -soptipparnas -soptippars -soptippen -soptippens -sorg -sorgebud -sorgebudet -sorgebudets -sorgedag -sorgedagar -sorgedagarna -sorgedagarnas -sorgedagars -sorgedagen -sorgedagens -sorgen -sorgens -sorger -sorgerna -sorgernas -sorgers -sorgfri -sorgfria -sorgfritt -sorgsen -sorgset -sorgsna -sorgsne -sork -sorkar -sorkarna -sorkarnas -sorkars -sorken -sorkens -sort -sorten -sortens -sorter -sortera -sorterad -sorterade -sorterades -sorterar -sorteras -sorterat -sorterats -sortering -sorteringen -sorteringens -sorterings -sorterna -sorternas -sorters -sorti -sortien -sortiens -sortiment -sortimenten -sortimentens -sortimentet -sortimentets -sortin -sortins -sorts -sorunda -sorundas -sot -sotare -sotaren -sotarens -sotares -sotarna -sotarnas -sotig -sotiga -sotigt -souvenir -souveniren -souvenirens -souvenirer -souvenirerna -souvenirernas -souvenirers -sov -sova -sovande -sovandet -sovandets -sover -sovit -sovjet -sovjetisk -sovjetiska -sovjetiskt -sovjets -sovra -sovrade -sovrades -sovrar -sovras -sovrat -sovrats -sovrum -sovrummen -sovrummens -sovrummet -sovrummets -sovrums -sovvagn -sovvagnar -sovvagnarna -sovvagnarnas -sovvagnars -sovvagnen -sovvagnens -sovvagns -spad -spadar -spadarna -spadarnas -spadars -spade -spaden -spadens -spader -spaderna -spadernas -spaders -spades -spads -spagetti -spaghetti -spak -spakar -spakarna -spakarnas -spakars -spaken -spakens -spana -spanade -spanades -spanande -spanandet -spanandets -spanar -spanare -spanaren -spanarens -spanares -spanarna -spanarnas -spanas -spanat -spanats -spanien -spaniens -spaning -spaningar -spaningarna -spaningarnas -spaningars -spaningen -spaningens -spanings -spanjor -spanjoren -spanjorens -spanjorer -spanjorerna -spanjorernas -spanjorers -spanjors -spann -spannet -spannets -spanns -spansk -spanska -spanskan -spanskans -spanskt -spara -sparad -sparade -sparades -sparande -sparar -sparare -spararen -spararens -sparares -spararna -spararnas -sparas -sparat -sparats -sparbeting -sparbetingen -sparbetingens -sparbetings -spargris -spark -sparka -sparkad -sparkade -sparkades -sparkande -sparkandet -sparkandets -sparkar -sparkarna -sparkarnas -sparkars -sparkas -sparkat -sparkats -sparken -sparkens -sparra -sparrad -sparrade -sparrades -sparrar -sparrat -sparrats -sparsam -sparsamma -sparsammare -sparsammast -sparsammaste -sparsamt -spartansk -spartanska -spartanskt -sparv -sparvar -sparvarna -sparvarnas -sparvars -sparven -sparvens -spatt -spe -specificera -specificerad -specificerade -specificerades -specificerande -specificerandet -specificerandets -specificerar -specificeras -specificerat -specificerats -specifik -specifika -specifikation -specifikationen -specifikationens -specifikationer -specifikationerna -specifikationernas -specifikationers -specifikations -specifikt -speditionsfirma -speditionsfirman -speditionsfirmans -speditionsfirmor -speditionsfirmorna -speditionsfirmornas -speditionsfirmors -speja -spejade -spejande -spejandet -spejandets -spejar -spejare -spejaren -spejarens -spejares -spejarna -spejarnas -spejat -spektrum -spenar -spenarna -spenarnas -spenars -spendera -spenderad -spenderade -spenderades -spenderar -spenderas -spenderat -spenderats -spene -spenen -spenens -sperma -sperman -spermans -spermas -spets -spetsa -spetsad -spetsade -spetsades -spetsar -spetsarna -spetsarnas -spetsars -spetsat -spetsats -spetsen -spetsens -spetsfundighet -spetsfundigheten -spetsfundighetens -spetsfundigheter -spetsfundigheterna -spetsfundigheternas -spetsfundigheters -spetsfundighets -spetsig -spetsiga -spetsigare -spetsigast -spetsigaste -spetsigt -spex -spigg -spiggar -spiggarna -spiggarnas -spiggars -spiggen -spiggens -spik -spika -spikar -spikarna -spikarnas -spikars -spiken -spikens -spikrak -spikraka -spikrakt -spinn -spinna -spinner -spinnerska -spinnerskan -spinnerskans -spinnerskor -spinnerskorna -spinnerskornas -spinnerskors -spion -spionage -spionaget -spionagets -spionen -spionens -spioner -spionera -spionerad -spionerade -spionerades -spionerar -spioneras -spionerat -spionerats -spionerna -spionernas -spioners -spira -spirade -spiran -spirande -spirandet -spirandets -spirans -spirar -spirat -spiror -spirorna -spirornas -spirors -spis -spisa -spisade -spisades -spisar -spisas -spisat -spisats -spisen -spisens -spjut -spjuten -spjutens -spjutet -spjutets -sponsra -sponsrad -sponsrade -sponsrades -sponsrar -sponsras -sponsrat -sponsrats -spontan -spontana -spontanare -spontanast -spontanaste -spontant -sporadisk -sporadiska -sporadiskt -spord -sporde -spordes -sporra -sporrad -sporrade -sporrades -sporrande -sporrandet -sporrandets -sporrar -sporras -sporrat -sporrats -sporre -sport -sporten -sportens -sporter -sporterna -sporternas -sporters -sports -spotsk -spotska -spotskhet -spotskheten -spotskhetens -spotskhets -spotskt -spott -spotta -spottade -spottades -spottar -spottas -spottat -spottats -spottstyver -sprack -spraka -sprakade -sprakande -sprakandet -sprakandets -sprakar -sprakat -sprang -spratt -spratten -sprattens -spray -spred -spreds -spreja -spricka -sprickan -sprickans -sprickas -sprid -sprida -spridande -spridandet -spridandets -spridas -spridd -spridda -spridde -spriddes -sprider -sprides -spridning -spridningar -spridningarna -spridningarnas -spridningars -spridningen -spridningens -spridnings -sprids -spring -springa -springan -springande -springandet -springandets -springans -springare -springaren -springarens -springares -springarna -springarnas -springbrunn -springbrunnar -springbrunnarna -springbrunnarnas -springbrunnars -springbrunnen -springbrunnens -springer -springor -springorna -springornas -springors -sprint -sprintar -sprintarna -sprintarnas -sprintars -sprinten -sprintens -sprit -spriten -spritens -spritt -spritta -sprittande -sprittandet -sprittandets -spritter -spritts -sprucken -sprucket -spruckit -spruckna -sprund -sprundet -sprundets -sprungen -sprunget -sprungit -sprungna -spruta -sprutade -sprutan -sprutande -sprutandet -sprutandets -sprutans -sprutar -sprutas -sprutat -sprutor -sprutorna -sprutornas -sprutors -spunnit -spurt -spy -spydde -spyddes -spyr -spys -spytt -spytts -sri -stab -staben -stabens -stack -stacka -stackare -stackaren -stackarens -stackares -stackarna -stackarnas -stackars -stacken -stackens -stacks -stad -stadd -stadda -staden -stadens -stadga -stadgad -stadgade -stadgades -stadgan -stadgar -stadgarna -stadgarnas -stadgars -stadgas -stadgat -stadgats -stadier -stadierna -stadiernas -stadiers -stadiet -stadiets -stadig -stadiga -stadigare -stadigast -stadigaste -stadigt -stadigvarande -stadium -stads -stadshus -stadsmur -stadsmuren -stadsmurens -stadsport -stadsportar -stadsportarna -stadsportarnas -stadsportars -stadsporten -stadsportens -stadsteater -stadsteatern -stadsteaterns -stadsvakt -stadsvakten -stadsvaktens -stafett -stafetten -stafettens -staffan -staffans -staffanstorp -staffanstorps -stagnera -stagnerad -stagnerade -stagnerar -stagnerat -stakar -stakarna -stakarnas -stakars -stake -staken -stakens -stakes -staket -staketen -staketens -staketet -staketets -stam -stamfader -stamfadern -stamfaderns -stamfaders -stamma -stammade -stammande -stammandet -stammandets -stammar -stammarna -stammarnas -stammars -stammat -stammen -stammens -stammis -stammisar -stammisarna -stammisarnas -stammisars -stammisen -stammisens -stampa -stampade -stampande -stampandet -stampandets -stampar -stampat -stams -standar -standard -standarden -standardens -standarder -standarderna -standardernas -standarders -standardformat -standardformaten -standardformatens -standardformatet -standardformatets -standardisera -standardiserad -standardiserade -standardiserades -standardiserar -standardiserat -standardiserats -standardisering -standardiseringen -standardiseringens -standardiserings -standaren -standarens -standaret -standarets -stank -stanna -stannade -stannades -stannande -stannandet -stannandets -stannar -stannas -stannat -stannats -stansa -stansad -stansade -stansades -stansar -stansas -stansat -stansats -stansning -stansningar -stansningarna -stansningarnas -stansningars -stansningen -stansningens -stansnings -starar -stararna -stararnas -starars -stare -staren -starens -stares -stark -starka -starkare -starkast -starkaste -starke -starkhet -starkheten -starkhetens -starkhets -starkt -start -starta -startad -startade -startades -startande -startandet -startandets -startar -startas -startat -startats -starten -startens -startpunkt -startpunkten -startpunktens -startraket -startraketen -startraketens -startraketer -startraketerna -startraketernas -startraketers -startrakets -startskott -startskotten -startskottens -startskottet -startskottets -starttid -starttiden -starttidens -stat -statare -stataren -statarens -statares -statarna -statarnas -staten -statens -stater -staterna -staternas -staters -station -stationen -stationens -stationer -stationerna -stationernas -stationers -stations -statisk -statiska -statiskt -statist -statisten -statistens -statister -statisterna -statisternas -statisters -statistik -statistiken -statistikens -statistiker -statistikerna -statistikernas -statistikers -statistikprogram -statistikprogrammen -statistikprogrammens -statistikprogrammet -statistikprogrammets -statistikprograms -statistisk -statistiska -statistiskt -stativ -stativen -stativens -stativet -stativets -stats -statsbidrag -statsbidragen -statsbidragens -statsbidraget -statsbidragets -statsfiende -statsfienden -statsfiendens -statsfiender -statsfienderna -statsfiendernas -statsfienders -statsmakt -statsmakten -statsmaktens -statsmakter -statsmakterna -statsmakternas -statsmakters -statsman -statsmannen -statsmannens -statsmans -statsminister -statsministern -statsministerns -statsministers -statsministrar -statsministrarna -statsministrarnas -statsministrars -statssekreterare -statssekreteraren -statssekreterarens -statssekreterares -statssekreterarna -statssekreterarnas -statt -status -staty -statyer -statyerna -statyernas -statyers -statyn -statyns -stav -stava -stavade -stavar -stavarna -stavarnas -stavars -stavas -stavat -staven -stavens -stavning -stavningar -stavningarna -stavningarnas -stavningars -stavningen -stavningens -stavnings -stavsudda -stavsuddas -stefan -stefans -steg -stega -stegade -stegades -stegar -stegas -stegat -stegats -stege -stegen -stegens -steget -stegets -stegning -stegningar -stegningarna -stegningarnas -stegningars -stegningen -stegningens -stegnings -stegra -stegrade -stegrades -stegrande -stegrandet -stegrandets -stegrar -stegras -stegrat -stegrats -stegvis -stehag -stehags -stek -steka -stekande -stekandet -stekandets -stekar -stekarna -stekarnas -stekars -stekas -steken -stekens -steker -stekpanna -stekpannan -stekpannans -stekpannas -stekpannor -stekpannorna -stekpannornas -stekpannors -steks -stekt -stekte -stektes -stekts -sten -stena -stenad -stenade -stenades -stenansikte -stenansikten -stenansiktens -stenar -stenarna -stenarnas -stenars -stenas -stenat -stenats -stenbock -stenbocken -stenbockens -stenbocks -stenen -stenens -stenget -stengeten -stengetens -stengrund -stengrunden -stengrundens -stenhamra -stenhamras -stenhuggare -stenhuggaren -stenhuggarens -stenhuggares -stenhuggarna -stenhuggarnas -stenig -steniga -stenigt -stenograf -stens -stenstorp -stenstorps -stentrappa -stentrappan -stentrappans -stentrappor -stentrapporna -stentrappornas -stentrappors -stenungsund -stenungsunds -stenur -stereo -stereon -stereons -stereoskop -stereoskopen -stereoskopens -stereoskopet -stereoskopets -stereoskops -stereotyp -stereotypa -stereotypt -stick -sticka -stickande -stickandet -stickandets -sticken -stickens -sticker -sticket -stickets -stickning -stickningar -stickningarna -stickningarnas -stickningars -stickningen -stickningens -sticknings -stift -stifta -stiftad -stiftade -stiftades -stiftar -stiftas -stiftat -stiftats -stiften -stiftens -stiftet -stiftets -stifts -stig -stiga -stigande -stigar -stigarna -stigarnas -stigars -stigen -stigens -stiger -stiget -stigit -stigmata -stigmatisering -stigmatiseringen -stigmatiseringens -stigmatiserings -stigna -stigs -stigtomta -stigtomtas -stim -stimma -stimmade -stimmar -stimmat -stina -stinas -sting -stinga -stingen -stingens -stings -stinka -stinkande -stinkandet -stinkandets -stinker -stipendier -stipendierna -stipendiernas -stipendiers -stipendiet -stipendiets -stipendium -stirra -stirrade -stirrades -stirrande -stirrandet -stirrandets -stirrar -stirras -stirrat -stirrats -stoby -stobys -stock -stocka -stockar -stockarna -stockarnas -stockars -stockaryd -stockaryds -stockas -stocken -stockens -stocksund -stocksunds -stod -stoden -stodens -stoder -stoderna -stodernas -stoders -stoff -stoffet -stoffets -stoft -stoftet -stoftets -stoj -stoja -stojade -stojades -stojande -stojandet -stojandets -stojar -stojas -stojat -stojats -stokastisk -stokastiska -stokastiskt -stommar -stommarna -stommarnas -stommars -stomme -stommen -stommens -stop -stopet -stopets -stopp -stoppa -stoppade -stoppades -stoppande -stoppandet -stoppandets -stoppar -stoppas -stoppat -stoppats -stor -stora -storartad -storartade -storartat -storas -storbritannien -storbritanniens -stordator -store -storebro -storebror -storebros -stores -storfors -storhet -storheten -storhetens -storheter -storheterna -storheternas -storheters -storhets -stork -storkar -storkarna -storkarnas -storkars -storken -storkens -storkna -storknade -storknar -storknat -storm -storma -stormad -stormade -stormades -stormakt -stormakten -stormaktens -stormakter -stormakterna -stormakternas -stormakters -stormakts -storman -stormande -stormannen -stormannens -stormans -stormar -stormare -stormaren -stormarens -stormares -stormarknad -stormarknaden -stormarknadens -stormarknader -stormarknaderna -stormarknadernas -stormarknaders -stormarknads -stormarna -stormarnas -stormars -stormas -stormat -stormats -stormen -stormens -stormig -stormiga -stormigt -stormning -stormningar -stormningarna -stormningarnas -stormningars -stormningen -stormningens -stormnings -storms -stormvind -stormvindar -stormvindarna -stormvindarnas -stormvindars -stormvinden -stormvindens -storsint -storsinta -storspov -storspovar -storspovarna -storspovarnas -storspovars -storspoven -storspovens -storstad -storstaden -storstadens -storstads -storstadsregion -storstadsregionen -storstadsregionens -storstadsregioner -storstadsregionerna -storstadsregionernas -storstadsregioners -storstuga -storstugan -storstugans -storstugor -storstugorna -storstugornas -storstugors -storsund -storsunds -stort -storting -stortinget -stortingets -stortings -storuman -storumans -storverk -storverken -storverkens -storverket -storverkets -storverks -storvik -storviks -storvreta -storvretas -storvuxen -storvuxet -storvuxna -storvuxnas -storvuxne -storvuxnes -story -storyn -storyns -straff -straffa -straffad -straffade -straffades -straffande -straffandet -straffandets -straffar -straffarbete -straffarbeten -straffarbetena -straffarbetenas -straffarbetens -straffarbetet -straffarbetets -straffas -straffat -straffats -straffbar -straffbara -straffbart -straffen -straffens -straffet -straffets -stram -strama -stramade -stramades -stramar -stramare -stramas -stramast -stramat -stramats -stramhet -stramheten -stramhetens -stramhets -stramt -strand -stranda -strandad -strandade -strandades -strandar -strandat -strandats -stranden -strandens -strandkant -strandkanten -strandkantens -strands -strandsatt -strandsatta -strapats -strapatsen -strapatsens -strapatser -strapatserna -strapatsernas -strapatsers -strateg -strategen -strategens -strateger -strategerna -strategernas -strategers -strategi -strategier -strategierna -strategiernas -strategiers -strategin -strategins -strategisk -strategiska -strategiskt -strax -straxt -streck -strecka -streckad -streckade -streckades -streckar -streckat -streckats -strecken -streckens -strecket -streckets -stred -strejk -strejka -strejkade -strejkades -strejkande -strejkandet -strejkandets -strejkar -strejkas -strejkat -strejkats -strejken -strejkens -strejker -strejkerna -strejkernas -strejkers -stress -stressa -stressad -stressade -stressades -stressande -stressandet -stressandets -stressar -stressas -stressat -stressats -stressen -stressens -stressfaktor -stressfaktorn -stressfaktorns -stressig -stressiga -stressigt -streta -stretade -stretar -stretat -strid -strida -stridande -stridandet -stridandets -stridare -stridast -stridaste -stridbar -stridbara -stridbart -striden -stridens -strider -striderna -stridernas -striders -stridit -strids -stridskamrat -stridskamraten -stridskamratens -stridskamrater -stridskamraterna -stridskamraternas -stridskamraters -strikt -strikta -striktare -striktast -striktaste -strimma -strimmad -strimmade -strimmades -strimman -strimmans -strimmar -strimmat -strimmats -strimmor -strimmorna -strimmornas -strimmors -strindberg -strindbergs -stringent -stringenta -stringentare -stringentast -stringentaste -stritt -strof -strofen -strofens -strofer -stroferna -strofernas -strofers -stropp -struken -struket -strukit -strukna -struktur -strukturen -strukturens -strukturera -strukturerad -strukturerade -strukturerades -strukturerande -strukturerandet -strukturerandets -strukturerar -strukturerat -strukturerats -strukturering -struktureringar -struktureringarna -struktureringarnas -struktureringars -struktureringen -struktureringens -strukturerings -strumpa -strumpan -strumpans -strumpor -strumporna -strumpornas -strumpors -strunt -strunta -struntade -struntar -struntat -struntprat -strupar -struparna -struparnas -strupars -strupe -strupen -strupens -strut -struts -strutsar -strutsarna -strutsarnas -strutsars -strutsen -strutsens -stryk -stryka -strykande -strykandet -strykandets -stryker -strykes -strykning -strykningar -strykningarna -strykningarnas -strykningars -strykningen -strykningens -stryknings -stryp -stubb -stubbar -stubbarna -stubbarnas -stubbars -stubbe -stubben -stubbens -stubbes -stubbig -stubbiga -stubbigt -stubin -stuckit -student -studenten -studentens -studenter -studenterna -studenternas -studenters -studera -studerade -studerades -studerande -studerandet -studerandets -studerar -studeras -studerat -studerats -studie -studieintyg -studieintyget -studieintygets -studien -studiens -studier -studierektor -studierektorn -studierektorns -studierektors -studierna -studiernas -studiers -studies -studiet -studiets -studio -studion -studions -studium -studs -studsa -studsade -studsades -studsande -studsandet -studsandets -studsar -studsas -studsat -studsats -studsen -studsens -stuga -stugan -stugans -stugas -stugby -stugbyar -stugbyarna -stugbyarnas -stugbyars -stugor -stugorna -stugornas -stugors -stugun -stuguns -stukturera -stukturerade -stukturerades -stukturerande -stukturerandet -stukturerandets -stukturerar -stuktureras -stukturerat -stukturerats -stum -stumma -stumme -stump -stumpar -stumparna -stumparnas -stumpars -stumpen -stumpens -stumt -stund -stunda -stundade -stundande -stundar -stundat -stunden -stundens -stunder -stunderna -stundernas -stunders -stundom -stunds -stungen -stunget -stungna -stup -stupa -stupade -stupades -stupande -stupandet -stupandets -stupar -stupas -stupat -stupats -stupen -stupens -stupet -stupets -stupid -sture -sturefors -stures -stursk -sturska -sturskt -sturup -sturups -stut -stutar -stutarna -stutarnas -stutars -stuten -stutens -stuva -stuvad -stuvade -stuvades -stuvar -stuvas -stuvat -stuvats -styck -stycka -styckad -styckade -styckades -styckar -styckas -styckat -styckats -stycke -styckebruk -styckebruks -stycken -styckena -styckenas -styckens -styckes -stycket -styckets -styckvis -stygg -stygga -styggt -stygn -stygnen -stygnens -stygnet -stygnets -stympa -stympad -stympade -stympades -stympar -stympas -stympat -stympats -styr -styra -styrande -styrandet -styrandets -styras -styrd -styrda -styrde -styrdes -styre -styrena -styrenas -styrenhet -styrenheten -styrenhetens -styrenheter -styrenheterna -styrenheternas -styrenheters -styret -styrets -styrk -styrka -styrkan -styrkans -styrkas -styrker -styrks -styrkt -styrkta -styrkte -styrktes -styrkts -styrmotor -styrmotorer -styrmotorerna -styrmotorernas -styrmotorers -styrning -styrningar -styrningarna -styrningarnas -styrningars -styrningen -styrningens -styrnings -styrs -styrt -styrts -styv -styva -styvare -styvast -styvaste -styver -styvern -styverns -styvnad -styvnade -styvnat -styvt -subjekt -subjektiv -subjektiva -subjektivitet -subjektiviteten -subjektivitetens -subjektivt -substans -substansen -substansens -substanser -substanserna -substansernas -substansers -substantiv -substantiven -substantivens -substantivet -substantivets -substitut -substituten -substitutens -substitutet -substitutets -substitution -substitutionen -substitutionens -substitutioner -substitutionerna -substitutionernas -substitutioners -substitutions -subtrahera -subtraherad -subtraherade -subtraherades -subtraherar -subtraheras -subtraherat -subtraherats -subtraktion -subtraktionen -subtraktionens -subtraktioner -subtraktionerna -subtraktionernas -subtraktioners -subtraktions -subventionera -subventionerad -subventionerade -subventionerades -subventionerar -subventioneras -subventionerat -subventionerats -successiv -successiva -successivt -suck -sucka -suckade -suckades -suckande -suckandet -suckandets -suckar -suckarna -suckarnas -suckars -suckas -suckat -suckats -sucken -suckens -sudan -sudans -sudda -suddade -suddades -suddar -suddas -suddat -suddats -suddig -suddiga -suddigare -suddigast -suddigaste -suddigt -suffix -suffixen -suffixens -suffixet -suffixets -sug -suga -sugande -sugandet -sugandets -sugas -suger -suget -sugets -suggerera -suggererade -suggererades -suggererande -suggererandet -suggererandets -suggererar -suggereras -suggererat -suggererats -suggestion -suggestionen -suggestionens -suggestioner -suggestionerna -suggestionernas -suggestioners -suggestions -suggestiv -suggestiva -suggestivt -sugit -sugits -sugs -sukta -suktade -suktar -suktat -summa -summan -summans -summarisk -summariska -summariskt -summation -summationen -summationens -summations -summera -summerad -summerade -summerades -summerar -summeras -summerat -summerats -summering -summeringen -summeringens -summor -summorna -summornas -summors -sump -sumpar -sumparna -sumparnas -sumpars -sumpen -sumpens -sund -sunda -sundare -sundast -sundaste -sundborn -sundborns -sundby -sundbyberg -sundbybergs -sundbys -sunden -sundens -sunderbyn -sunderbyns -sundet -sundets -sundsbruk -sundsbruks -sune -sunes -sunne -sunnemo -sunnemos -sunnes -sunt -sup -supa -supar -suparna -suparnas -supars -supas -supen -supens -super -superb -superba -superbt -superdator -superdatorn -superdatorns -superego -superegot -superegots -superintendent -superintendenten -superintendentens -supernova -supernovan -supernovans -supernovas -supit -supits -supporter -sups -sur -sura -surahammar -surahammars -surare -surast -suraste -surdeg -surdegar -surdegarna -surdegarnas -surdegars -surdegen -surdegens -surdegs -surinam -surinams -surna -surnad -surnade -surnades -surnar -surnat -surnats -surr -surra -surrad -surrade -surrades -surrar -surras -surrat -surrats -surren -surrens -surret -surrets -surrogat -surrogaten -surrogatens -surrogatet -surrogatets -surt -surte -surtes -sus -susa -susade -susande -susandet -susandets -susanne -susannes -susar -susat -susen -susens -suset -susets -susning -susningar -susningarna -susningarnas -susningars -susningen -susningens -susnings -suspekt -suspekta -suspendera -suspenderad -suspenderade -suspenderades -suspenderar -suspenderas -suspenderat -suspenderats -suttit -svacka -svackan -svackans -svackas -svackor -svackorna -svackornas -svackors -svag -svaga -svagare -svagas -svagast -svagaste -svagdricka -svagdrickan -svagdrickans -svagdrickas -svage -svages -svaghet -svagheten -svaghetens -svagt -svaj -svaja -svajade -svajande -svajandet -svajandets -svajar -svajat -svamp -svampar -svamparna -svamparnas -svampars -svampen -svampens -svan -svanar -svanarna -svanarnas -svanars -svanavattnet -svanavattnets -svanen -svanens -svanesund -svanesunds -svanor -svanorna -svanornas -svans -svansa -svansar -svansarna -svansarnas -svansars -svansen -svansens -svanskog -svanskogs -svante -svantes -svappavaara -svappavaaras -svar -svara -svarade -svarades -svarar -svarare -svararen -svararens -svarares -svararna -svararnas -svaras -svarat -svarats -svaren -svarens -svaret -svarets -svars -svarsporto -svart -svarta -svartare -svartas -svartast -svartaste -svarte -svartes -svartkonst -svartmuskig -svartmuskiga -svartmuskigt -svartna -svartnade -svartnar -svartnat -svartsjuk -svartsjuka -svartsjukan -svartsjukans -svartsjukas -svartsjuke -svartsjukt -svartvit -svartvita -svartvitt -svarv -svarva -svarvad -svarvade -svarvades -svarvar -svarvas -svarvat -svarvats -svea -svears -sveas -sved -svedde -svedjebruk -sveg -svegs -svek -sveken -svekens -sveket -svekets -sven -svenner -svennerna -svennernas -svens -svensbyn -svensbyns -svensk -svenska -svenskan -svenskans -svenskar -svenskars -svenske -svensken -svenskens -svenskes -svenskor -svenskorna -svenskornas -svenskors -svenskt -svensson -svenssons -svenstavik -svenstaviks -svep -svepa -sveper -svepning -svepningar -svepningarna -svepningarnas -svepningars -svepningen -svepningens -svepnings -sveps -svepte -sverige -sveriges -sverre -sverres -svetsa -svetsad -svetsade -svetsades -svetsar -svetsas -svetsat -svetsats -svetsning -svetsningar -svetsningarna -svetsningarnas -svetsningars -svetsningen -svetsningens -svetsnings -svett -svetta -svettad -svettade -svettades -svettar -svettas -svettat -svettats -svettdroppar -svettdropparna -svettdropparnas -svettdroppars -svettdroppe -svettdroppen -svettdroppens -svettdrypande -svetten -svettens -svettig -svettiga -svettigt -svid -svida -svidande -svidandet -svidandets -svider -svidit -svika -sviken -sviker -sviket -svikit -svikna -svikta -sviktade -sviktande -sviktandet -sviktandets -sviktar -sviktat -svimma -svimmade -svimmar -svimmat -svimning -svimningar -svimningarna -svimningarnas -svimningars -svimningen -svimningens -svimnings -svin -svinaherde -svinaherden -svinaherdens -svinen -svinens -svinet -svinets -svinga -svingad -svingade -svingades -svingar -svingas -svingat -svingats -svinhjord -svinhjorden -svinhjordens -svinn -svinnet -svinnets -svit -sviten -svitens -sviter -sviterna -sviternas -sviters -svor -svunna -svunnen -svunnet -svunnit -svurit -syd -sydafrika -sydafrikas -sydd -sydda -sydde -syddes -sydkorea -sydkoreas -sydkoster -sydkosters -sydost -sydsverige -syfta -syftade -syftades -syftande -syftandet -syftandets -syftar -syftas -syftat -syftats -syfte -syften -syftena -syftenas -syftens -syftet -syftets -syftning -syftningar -syftningarna -syftningarnas -syftningars -syftningen -syftningens -syftnings -symaskin -symaskiner -symaskinerna -symaskinernas -symaskiners -symbios -symbiosen -symbiosens -symbioser -symbioserna -symbiosernas -symbiosers -symfoni -symfonisk -symfoniska -symfoniskt -symmetri -symmetrisk -symmetriska -symmetriskt -sympati -sympatier -sympatierna -sympatiernas -sympatiers -sympatin -sympatins -sympatisera -sympatiserade -sympatiserar -sympatiserat -sympatisk -sympatiska -sympatiskt -symposier -symposierna -symposiernas -symposiers -symposiet -symposiets -symposium -symptom -symptomatisk -symptomatiska -symptomatiskt -symptomen -symptomens -syn -syna -synad -synade -synades -synagoga -synagogan -synagogans -synagogas -synagogor -synagogorna -synagogornas -synagogors -synar -synas -synat -synats -synbar -synbara -synbart -synd -synda -syndabock -syndade -syndades -syndar -syndare -syndaren -syndarens -syndares -syndarna -syndarnas -syndas -syndat -syndats -synden -syndens -synder -synderna -syndernas -synders -synderska -synderskan -synderskans -synderskas -syndig -syndiga -syndigt -syndrom -syndromen -syndromens -syndromet -syndromets -syne -synen -synens -syner -synerna -synernas -syners -synes -synkron -synkrona -synkronisator -synkronisatorn -synkronisatorns -synkronisators -synkronisera -synkroniserad -synkroniserade -synkroniserades -synkroniserar -synkroniseras -synkroniserat -synkroniserats -synkronism -synkronismen -synkronismens -synkront -synnerhet -synonym -synonyma -synonymt -synopsis -synpunkt -synpunkten -synpunktens -synpunkter -synpunkterna -synpunkternas -synpunkters -synrand -synranden -synrandens -syns -syntax -syntaxen -syntaxens -syntes -syntesen -syntesens -synteser -synteserna -syntesernas -syntesers -syntetisering -syntetiseringen -syntetiseringens -syntetiserings -syntetisk -syntetiska -syntetiskt -synts -syr -syra -syrad -syrade -syran -syrans -syrat -syre -syrebrist -syrebristen -syrebristens -syren -syrenen -syrenens -syrener -syrenerna -syrenernas -syreners -syrens -syres -syret -syrets -syrien -syriens -syriska -syriskan -syriskans -syriskor -syriskorna -syriskornas -syriskors -syror -syrorna -syrornas -syrors -syrsa -syrsan -syrsans -syrsas -syrsor -syrsorna -syrsornas -syrsors -syrtut -syrtuten -syrtutens -sys -syskon -syskonen -syskonens -syskonet -syskonets -syskons -system -systematik -systematisera -systematiserad -systematiserade -systematiserades -systematiserar -systematiseras -systematiserat -systematiserats -systematisering -systematiseringen -systematiseringens -systematiserings -systematisk -systematiska -systematiskt -systemen -systemens -systemerare -systemeraren -systemerarens -systemerares -systemerarna -systemerarnas -systemet -systemets -systems -syster -systern -systerns -systers -systrar -systrarna -systrarnas -systrars -sytt -sytts -tabbe -taberg -tabergs -tabu -tabun -tabuns -tabut -tabuts -tack -tacka -tackad -tackade -tackades -tackande -tackandet -tackandets -tackar -tackas -tackat -tackats -tacken -tackoffer -tacksam -tacksamhet -tacksamheten -tacksamhetens -tacksamhets -tacksamma -tacksammare -tacksammast -tacksammaste -tacksamt -tadzjikistan -tadzjikistans -tafatt -tafatta -tag -taga -tagande -tagandet -tagandets -tagare -tagaren -tagarens -tagares -tagarna -tagarnas -tagas -tage -tagen -tager -tages -taget -tagets -tagg -taggen -taggens -taggig -taggiga -taggigt -tagit -tagits -tagna -tagning -tagningar -tagningarna -tagningarnas -tagningars -tagningen -tagningens -tagnings -taiwan -taiwans -tak -taken -takens -taket -takets -takt -takten -taktens -takterrass -takterrassen -takterrassens -takterrasser -takterrasserna -takterrassernas -takterrassers -taktfast -taktfasta -taktik -taktiken -taktikens -taktisk -taktiska -taktiskt -tam -tama -tamare -tamast -tamp -tampades -tampas -tampats -tamt -tand -tandad -tandade -tandat -tandem -tandemen -tandemens -tandemet -tandemets -tandems -tanden -tandens -tandpetare -tandpetaren -tandpetarens -tandpetares -tandpetarna -tandpetarnas -tandrad -tandraden -tandradens -tandrader -tandraderna -tandradernas -tandraders -tandsbyn -tandsbyns -tangent -tangentbord -tangentborden -tangentbordens -tangentbordet -tangentbordets -tangentbords -tangenten -tangentens -tangenter -tangenterna -tangenternas -tangenters -tangera -tangerad -tangerade -tangerades -tangerar -tangerat -tangerats -tank -tanka -tankar -tankarna -tankarnas -tankars -tanke -tanken -tankens -tankes -tankspridd -tankspridda -tankspritt -tankstreck -tant -tanten -tantens -tanter -tanterna -tanternas -tanters -tanumshede -tanumshedes -tanzania -tanzanias -tanzanisk -tanzaniska -tanzaniskt -tapet -tapeten -tapetens -tapeter -tapeterna -tapeternas -tapeters -tapir -tapiren -tapirens -tapirer -tapirerna -tapirernas -tapirers -tapirs -tapp -tappa -tappad -tappade -tappades -tappande -tappandet -tappandets -tappar -tappas -tappat -tappats -tapper -tapperhet -tapperheten -tapperhetens -tapperhets -tappert -tappning -tappningar -tappningarna -tappningarnas -tappningars -tappningen -tappningens -tappnings -tappra -tapprare -tappras -tapprast -tappraste -tappre -tappres -tappt -tapto -tar -tariff -tariffen -tariffens -tariffer -tarifferna -tariffernas -tariffers -tarm -tarmar -tarmarna -tarmarnas -tarmars -tarmen -tarmens -tarva -tarvade -tarvar -tarvas -tarvat -tarzan -tarzans -tas -taskig -taskiga -taskigare -taskigast -taskigaste -taskigt -tassa -tassade -tassar -tassat -tatuera -tatuerad -tatuerade -tatuerades -tatuerar -tatueras -tatuerat -tatuerats -tatuering -tatueringar -tatueringarna -tatueringarnas -tatueringars -tatueringen -tatueringens -tatuerings -tax -taxa -taxan -taxans -taxar -taxarna -taxarnas -taxars -taxeinformation -taxeinformationen -taxeinformationens -taxeinformations -taxen -taxens -taxera -taxerad -taxerade -taxerades -taxerar -taxerare -taxeraren -taxerarens -taxerares -taxerarna -taxerarnas -taxeras -taxerat -taxerats -taxi -taxin -taxins -taxonomi -taxonomin -taxonomins -taxor -taxorna -taxornas -taxors -tchad -tchads -team -teater -teatern -teaterns -teatrar -teatrarna -teatrarnas -teatrars -tecken -teckens -teckenvis -teckna -tecknad -tecknade -tecknades -tecknande -tecknandet -tecknandets -tecknar -tecknare -tecknaren -tecknarens -tecknares -tecknarna -tecknarnas -tecknas -tecknat -tecknats -tecknen -tecknens -tecknet -tecknets -teckning -teckningar -teckningarna -teckningarnas -teckningars -teckningen -teckningens -tecknings -teckomatorp -teckomatorps -tedde -teer -teerna -teernas -teers -teet -teets -tefat -tefaten -tefatens -tefatet -tefatets -teg -tegar -tegarna -tegarnas -tegars -tegen -tegens -tejp -tejpa -tejpad -tejpade -tejpades -tejpar -tejpas -tejpat -tejpats -teknik -tekniken -teknikens -tekniker -teknikern -teknikerns -teknisk -tekniska -tekniskt -teknokratisk -teknokratiska -teknokratiskt -tema -teman -temans -temas -temat -tematisk -tematiska -tematiskt -temats -temperament -temperamenten -temperamentens -temperamentet -temperamentets -temperaments -temperatur -temperaturen -temperaturens -temperaturer -temperaturerna -temperaturernas -temperaturers -temperaturs -tempo -tempon -tempons -tempot -tempots -ten -tenar -tenarna -tenarnas -tenars -tendens -tendensen -tendensens -tendenser -tendenserna -tendensernas -tendensers -tendera -tenderade -tenderar -tenderat -tenen -tenens -tenn -tennet -tennets -tennis -tennisen -tennisens -tenns -tentamen -tentamens -tentamina -teorem -teoremen -teoremens -teoremet -teoremets -teorems -teoretiker -teoretikern -teoretikerna -teoretikernas -teoretikerns -teoretikers -teoretisk -teoretiska -teoretiskt -teori -teorier -teorierna -teoriernas -teoriers -teorin -teorins -teoris -teosof -teosofen -teosofens -teosofer -teosoferna -teosofernas -teosofers -teosofs -ter -terapeutisk -terapeutiska -terapeutiskt -terapi -terapier -terapierna -terapiernas -terapiers -terapin -terapins -terapis -teresia -teresias -term -termen -termens -termer -termerna -termernas -termers -termin -terminator -terminatorer -terminatorerna -terminatorernas -terminatorers -terminatorn -terminatorns -terminators -terminen -terminens -terminer -terminerna -terminernas -terminers -termins -termit -termiten -termitens -termiter -termiterna -termiternas -termiters -termits -termometer -termometern -termometerns -termometers -termometrar -termometrarna -termometrarnas -termometrars -termostat -termostaten -termostatens -termostater -termostaterna -termostaternas -termostaters -termostats -terms -terrass -terrassen -terrassens -terrasser -terrasserna -terrassernas -terrassers -territorier -territorierna -territoriernas -territoriers -territoriet -territoriets -territorium -terror -terrorist -terroristen -terroristens -terrorister -terroristerna -terroristernas -terroristers -terrorn -terrorns -terrors -tes -tesen -tesens -teser -teserna -tesernas -tesers -tesked -teskedar -teskedarna -teskedarnas -teskedars -teskeden -teskedens -teskeds -test -testa -testad -testade -testades -testamente -testamenten -testamentena -testamentenas -testamentens -testamentera -testamenterad -testamenterade -testamenterades -testamenterar -testamenteras -testamenterat -testamenterats -testamentes -testamentet -testamentets -testar -testare -testaren -testarens -testares -testarna -testarnas -testas -testat -testats -testen -testens -tester -testerna -testernas -testers -testning -testningar -testningarna -testningarnas -testningars -testningen -testningens -testnings -tet -tets -tett -texas -text -texta -textad -textade -textades -textar -textas -textat -textats -texten -textens -texter -texterna -texternas -texters -therese -thereses -thomas -thorsson -thorssons -tia -tian -tians -tias -tibro -tibros -ticka -tickade -tickar -tickat -tid -tidan -tidans -tiden -tidens -tider -tiderna -tidernas -tiders -tidevarv -tidevarven -tidevarvens -tidevarvet -tidevarvets -tidig -tidiga -tidigare -tidigast -tidigaste -tidigt -tidning -tidningar -tidningarna -tidningarnas -tidningars -tidningen -tidningens -tidnings -tidpunkt -tidpunkten -tidpunktens -tidpunkter -tidpunkterna -tidpunkternas -tidpunkters -tidpunkts -tids -tidsbrist -tidsbristen -tidsbristens -tidskrift -tidskriften -tidskriftens -tidskrifter -tidskrifterna -tidskrifternas -tidskrifters -tidskrifts -tidsperiod -tidsperioden -tidsperiodens -tidtagning -tidtagningar -tidtagningarna -tidtagningarnas -tidtagningars -tidtagningen -tidtagningens -tidtagnings -tidvis -tierp -tierps -tig -tiga -tigande -tigandes -tigandet -tigandets -tiger -tigern -tigerns -tigers -tigg -tigga -tiggare -tiggaren -tiggarens -tiggares -tiggarna -tiggarnas -tiggas -tiggde -tiggdes -tigger -tiggeri -tiggs -tiggt -tiggts -tigit -tigrar -tigrarna -tigrarnas -tigrars -tik -tikar -tikarna -tikarnas -tikars -tiken -tikens -tim -tima -timade -timar -timat -timkostnad -timkostnaden -timkostnadens -timkostnader -timkostnaderna -timkostnadernas -timkostnaders -timkostnads -timma -timmar -timmarna -timmarnas -timmars -timme -timmen -timmens -timmer -timmerman -timmermannen -timmermannens -timmernabben -timmernabbens -timmers -timmes -timra -timrade -timrar -timrat -timret -timrets -tims -tina -tinade -tinar -tinas -tinat -tindra -tindrade -tindrar -tindrat -ting -tingen -tingens -tingest -tingestar -tingestarna -tingestarnas -tingestars -tingesten -tingestens -tinget -tingets -tingsryd -tingsryds -tinktur -tinnar -tinnarna -tinnarnas -tinnars -tinne -tinnen -tinnens -tinnes -tinning -tinningar -tinningarna -tinningarnas -tinningars -tinningen -tinningens -tinnings -tio -tiomannagrupp -tiomannagruppen -tiomannagruppens -tionde -tiopotens -tiopotensen -tiopotensens -tiopotenser -tiopotenserna -tiopotensernas -tiopotensers -tior -tiorna -tiornas -tiors -tiotusen -tippa -tippad -tippade -tippades -tippar -tippas -tippat -tippats -tips -tipsa -tipsad -tipsade -tipsades -tipsar -tipsas -tipsat -tipsats -tipsen -tipsens -tipset -tipsets -tisdag -tisdagar -tisdagarna -tisdagarnas -tisdagars -tisdagen -tisdagens -tisdags -titan -titt -titta -tittade -tittades -tittande -tittandes -tittandet -tittandets -tittar -tittare -tittaren -tittarens -tittares -tittarna -tittarnas -tittas -tittat -tittats -titten -tittens -tittut -tived -tiveds -tjabb -tjabba -tjabbade -tjabbar -tjabbat -tjabbet -tjabbets -tjabbig -tjabbiga -tjabbigt -tjack -tjacka -tjackade -tjackar -tjackat -tjacket -tjackets -tjafs -tjafsa -tjafsade -tjafsar -tjafsat -tjafset -tjafsets -tjafsig -tjafsiga -tjafsighet -tjafsigheten -tjafsighetens -tjafsighets -tjafsigt -tjat -tjata -tjatade -tjatar -tjatas -tjatat -tjatet -tjatets -tjatig -tjatiga -tjatighet -tjatigheten -tjatighetens -tjatighets -tjatigt -tjatter -tjattra -tjattrade -tjattrar -tjattrat -tjattret -tjattrets -tjattrig -tjattriga -tjattrigt -tjeckien -tjeckiens -tjej -tjejen -tjejens -tjejer -tjejerna -tjejernas -tjejers -tjejs -tjoa -tjoade -tjoar -tjoat -tjock -tjocka -tjockare -tjockas -tjockast -tjockaste -tjocke -tjockes -tjockna -tjocknade -tjocknar -tjocknat -tjockt -tjog -tjoget -tjogets -tjugo -tjugoen -tjugoett -tjugofem -tjugofyra -tjugohundra -tjugonde -tjugondedag -tjugondedagen -tjugondedagens -tjugonio -tjugosex -tjugosju -tjugotre -tjugotusen -tjugu -tjur -tjura -tjurade -tjurar -tjurarna -tjurarnas -tjurars -tjurat -tjuren -tjurens -tjusa -tjusad -tjusade -tjusades -tjusande -tjusandet -tjusandets -tjusar -tjusas -tjusat -tjusats -tjusig -tjusiga -tjusigt -tjusning -tjusningen -tjusningens -tjut -tjuta -tjutas -tjuter -tjutit -tjutits -tjuts -tjuv -tjuvar -tjuvarna -tjuvarnas -tjuvars -tjuven -tjuvens -tjuveri -tjuvnad -tjuvnaden -tjuvnadens -tjuvnader -tjuvnaderna -tjuvnadernas -tjuvnaders -tjuvs -tjuvskytt -tjuvskytten -tjuvskyttens -tobago -tobagos -tobak -tobaken -tobakens -tobaks -tobias -tobo -tobos -tocken -tofs -tofsar -tofsarna -tofsarnas -tofsars -tofsen -tofsens -tofsvipa -tofsvipan -tofsvipans -tofsvipas -tog -toga -togan -togans -togas -togs -tok -token -tokens -tokeri -tokerier -tokerierna -tokeriernas -tokeriers -tokeriet -tokeriets -tokig -tokiga -tokigare -tokigast -tokigaste -tokighet -tokigheten -tokighetens -tokigheter -tokigheterna -tokigheternas -tokigheters -tokighets -tokigt -tom -tomas -tomat -tomaten -tomatens -tomater -tomaterna -tomaternas -tomaters -tomhet -tomheten -tomhetens -tomma -tommare -tommarp -tommarps -tommast -tommaste -tommy -tommys -tomrum -tomrummet -tomrummets -toms -tomt -tomtar -tomtarna -tomtarnas -tomtars -tomte -tomteboda -tomtebodas -tomten -tomtens -tomter -tomterna -tomternas -tomters -tomtes -tomts -ton -tona -tonade -tonades -tonar -tonart -tonarten -tonartens -tonarter -tonarterna -tonarternas -tonarters -tonas -tonat -tonats -tonen -tonens -toner -tonerna -tonernas -toners -tongivande -tonnet -tonnets -tons -tonsur -tonsuren -tonsurens -tonsurer -tonsurerna -tonsurernas -tonsurers -tonsurs -tonvikt -tonvikten -tonviktens -tony -tonys -topp -toppa -toppade -toppar -topparna -topparnas -toppars -toppat -toppen -toppens -toppig -toppiga -toppigt -topps -tord -torde -tordes -tords -tore -torekov -torekovs -tores -torestorp -torestorps -torftig -torftiga -torftigare -torftigast -torftigaste -torftiges -torftighet -torftigheten -torftighetens -torftighets -torftigt -torg -torgen -torgens -torget -torgets -torgs -torhamn -torhamns -torka -torkad -torkade -torkades -torkan -torkans -torkar -torkas -torkat -torkats -tormestorp -tormestorps -torn -torna -tornade -tornades -tornar -tornas -tornat -tornats -torne -tornen -tornens -tornet -tornets -torp -torpare -torparen -torparens -torpares -torparna -torparnas -torped -torpeden -torpedens -torpeder -torpederna -torpedernas -torpeders -torpeds -torpen -torpens -torpet -torpets -torps -torpsbruk -torpsbruks -torpshammar -torpshammars -torr -torra -torrare -torrast -torraste -torrt -torsby -torsbys -torsdag -torsdagar -torsdagarna -torsdagarnas -torsdagars -torsdagen -torsdagens -torsdags -torsk -torskar -torskarna -torskarnas -torskars -torsken -torskens -torsten -torstens -tortyr -tortyren -tortyrens -tortyrs -torup -torups -torv -torva -torvan -torvans -torvas -torvbrytning -torvbrytningen -torvbrytningens -torvbrytnings -torven -torvens -torvs -totebo -totebos -tovig -toviga -tovigt -toxisk -toxiska -toxiskt -tradition -traditionen -traditionens -traditioner -traditionerna -traditionernas -traditioners -traditions -trafik -trafikant -trafikanten -trafikantens -trafikanter -trafikanterna -trafikanternas -trafikanters -trafikants -trafiken -trafikens -trafikera -trafikerad -trafikerade -trafikerades -trafikerar -trafikeras -trafikerat -trafikerats -trafikstockning -trafikstockningar -trafikstockningarna -trafikstockningarnas -trafikstockningars -trafikstockningen -trafikstockningens -trafikstocknings -tragedi -tragedier -tragedierna -tragediernas -tragediers -tragedin -tragedins -tragedis -tragik -tragiken -tragikens -tragikomisk -tragikomiska -tragikomiskt -tragiks -tragisk -tragiska -tragiskt -trakt -trakta -traktade -traktades -traktamente -traktamenten -traktamentens -traktar -traktas -traktat -traktatet -traktatets -traktats -trakten -traktens -trakter -traktera -trakterad -trakterade -trakterades -trakterar -trakteras -trakterat -trakterats -trakterna -trakternas -trakters -traktor -traktorer -traktorerna -traktorernas -traktorers -traktorn -traktorns -traktors -tramp -trampa -trampad -trampade -trampades -trampande -trampandet -trampandets -trampar -trampas -trampat -trampats -trampet -trampets -tramps -trams -tramsa -tramsade -tramsar -tramsat -tramset -tramsets -tranemo -tranemos -transaktion -transaktionen -transaktionens -transaktioner -transaktionerna -transaktionernas -transaktioners -transaktions -transfer -transferering -transfereringar -transfereringarna -transfereringarnas -transfereringars -transfereringen -transfereringens -transfererings -transfern -transferns -transfers -transform -transformation -transformationen -transformationens -transformationer -transformationerna -transformationernas -transformationers -transformations -transformator -transformatorn -transformatorns -transformators -transformen -transformens -transformer -transformera -transformerad -transformerade -transformerades -transformerande -transformerandet -transformerandets -transformerar -transformerat -transformerats -transformerna -transformernas -transformers -transforms -transistor -transistorn -transistorns -transistors -transkribera -transkriberad -transkriberade -transkriberades -transkriberar -transkriberare -transkriberaren -transkriberarens -transkriberares -transkriberarna -transkriberarnas -transkriberat -transkriberats -transkribering -transkriberingar -transkriberingarna -transkriberingarnas -transkriberingars -transkriberingen -transkriberingens -transkriberings -transkription -transkriptionen -transkriptionens -transkriptioner -transkriptionerna -transkriptionernas -transkriptioners -transkriptions -transmission -transmitter -transmittera -transmitterad -transmitterade -transmitterades -transmitterar -transmitteras -transmitterat -transmitterats -transparent -transparenta -transponera -transponerad -transponerade -transponerades -transponerar -transponeras -transponerat -transponerats -transponering -transponeringen -transponeringens -transponeringer -transponeringerna -transponeringernas -transponeringers -transponerings -transport -transporten -transportens -transporter -transportera -transporterad -transporterade -transporterades -transporterar -transporterat -transporterats -transporterna -transporternas -transporters -transports -transtrand -transtrands -trapets -trapetsen -trapetsens -trapetser -trapetserna -trapetsernas -trapetsers -trappa -trappan -trappans -trappas -trappavsats -trappavsatsen -trappavsatsens -trappavsatser -trappavsatserna -trappavsatsernas -trappavsatsers -trappor -trapporna -trappornas -trappors -trappsteg -trappstegen -trappstegens -trappsteget -trappstegets -trappstegs -traryd -traryds -trasa -trasan -trasans -trashank -trashankar -trashankarna -trashankarnas -trashankars -trashanken -trashankens -trasig -trasiga -trasigare -trasigast -trasigaste -trasigt -traska -traskade -traskar -traskat -trasor -trasorna -trasornas -trasors -trast -trasten -trastens -tratt -trauma -trauman -traumans -traumas -traumatisk -traumatiska -traumatiskt -trav -trava -travade -travades -travande -travandet -travandets -travar -travas -travat -travats -trave -traven -travens -travestera -travesterad -travesterade -travesterades -travesterar -travesteras -travesterat -travesterats -travestering -travesteringar -travesteringarna -travesteringarnas -travesteringars -travesteringen -travesteringens -travesterings -travesti -tre -trea -trean -treans -treas -tredje -tredska -tredskade -tredskades -tredskar -tredskas -tredskat -tredskats -treenig -treeniga -treenighet -treenigheten -treenighetens -treenighets -treenigt -trefot -treggehanda -trehundra -trekanten -trekantens -trend -trendbrott -trendbrotten -trendbrottens -trendbrottet -trendbrottets -trendbrotts -trenden -trendens -trender -trenderna -trendernas -trenders -trends -trenne -trensum -trensums -tresiffrig -tresiffriga -tresiffrigt -tretti -trettio -trettioen -trettioett -trettiofem -trettiofyra -trettionde -trettionio -trettiosex -trettiosju -trettiotre -tretton -trettonde -trettonhundra -trettontusen -tretusen -treva -trevade -trevades -trevande -trevandet -trevandets -trevar -trevare -trevaren -trevarens -trevares -trevarna -trevarnas -trevas -trevat -trevats -trevnad -trick -tricken -trickens -tricket -trickets -trigonometrisk -trigonometriska -trigonometriskt -trim -trimeter -trimetern -trimeterns -trimetrar -trimetrarna -trimetrarnas -trimetrars -trimma -trimmad -trimmade -trimmades -trimmande -trimmandet -trimmandets -trimmar -trimmas -trimmat -trimmats -trimning -trimningar -trimningarna -trimningarnas -trimningars -trimningen -trimningens -trimnings -trind -trinda -trinidad -trinidads -trint -trio -tripp -trist -trista -tristare -tristast -tristaste -tristess -triumf -triumfen -triumfens -triumfer -triumfera -triumferad -triumferade -triumferades -triumferar -triumferas -triumferat -triumferats -triumferna -triumfernas -triumfers -triumfs -trivas -trivdes -trivs -trivsam -trivsamma -trivsammare -trivsammast -trivsammaste -trivsamt -trivts -trixa -trixade -trixades -trixar -trixas -trixat -trixats -trixig -trixiga -trixigt -tro -trodd -trodda -trodde -troddes -troende -troendet -troendets -trofast -trofasta -trofaste -trofasthet -trofastheten -trofasthetens -trofasthets -trogen -troget -trogna -trognare -trognast -trognaste -trogne -trohet -troheten -trohetens -trohetsbrott -tron -trona -tronade -tronar -tronat -tronen -tronens -troner -tronerna -tronernas -troners -trons -trop -tropen -tropens -troper -troperna -tropernas -tropers -tropik -tropiken -tropikens -tropiker -tropikerna -tropikernas -tropikers -tropisk -tropiska -tropiskt -tropp -troppar -tropparna -tropparnas -troppars -troppen -troppens -tror -tros -trosa -trosan -trosans -trosas -trosor -trosorna -trosornas -trosors -tross -trossen -trossens -trosskusk -trosskusken -trosskuskens -trosvittne -trosvittnen -trosvittnens -trots -trotsa -trotsade -trotsades -trotsande -trotsandet -trotsandets -trotsar -trotsas -trotsat -trotsats -trotsen -trotsens -trotset -trotsets -trotsig -trotsiga -trotsigare -trotsigast -trotsigaste -trotsige -trotsigt -trott -trottoar -trottoaren -trottoarens -trottoarer -trottoarerna -trottoarernas -trottoarers -trotts -trubadur -trubaduren -trubadurens -truck -truckar -truckarna -truckarnas -truckars -trucken -truckens -truga -trugad -trugade -trugades -trugar -trugas -trugat -trugats -truism -truismen -truismens -truismer -truismerna -truismernas -truismers -trumf -trumfa -trumfad -trumfade -trumfades -trumfar -trumfas -trumfat -trumfats -trumhinna -trumhinnan -trumhinnans -trumhinnor -trumhinnorna -trumhinnornas -trumhinnors -trumma -trummade -trumman -trummans -trummar -trummat -trummor -trummorna -trummornas -trummors -trumpen -trumpet -trumpeten -trumpetens -trumpeter -trumpeterna -trumpeternas -trumpeters -trumpna -trumpnare -trumpnast -trumpnaste -trumpne -trunkera -trunkerad -trunkerade -trunkerades -trunkerar -trunkeras -trunkerat -trunkerats -trupp -truppen -truppens -trupper -trupperna -truppernas -truppers -trupps -trust -trusten -trustens -truster -trusterna -trusternas -trusters -trut -trutar -trutarna -trutarnas -trutars -truten -trutens -trutit -trutits -truts -tryck -trycka -tryckande -tryckandet -tryckandets -tryckas -trycken -tryckens -trycker -tryckeri -tryckeriet -tryckeriets -trycket -tryckets -tryckning -tryckningar -tryckningarna -tryckningarnas -tryckningars -tryckningen -tryckningens -trycknings -tryckpress -tryckpressar -tryckpressarna -tryckpressarnas -tryckpressars -tryckpressen -tryckpressens -trycks -trycksak -trycksaker -trycksakerna -trycksakernas -trycksakers -tryckt -tryckta -tryckte -trycktes -tryckts -trygg -trygga -tryggad -tryggade -tryggades -tryggar -tryggare -tryggas -tryggast -tryggaste -tryggat -tryggats -trygge -trygges -trygghet -tryggheten -trygghetens -tryggt -tryne -tryt -tryta -trytas -tryter -tryts -tub -tuba -tuban -tubans -tubas -tuben -tubens -tuber -tuberna -tubernas -tubers -tubor -tuborna -tubornas -tubors -tubs -tuff -tuffa -tuffade -tuffar -tuffat -tufft -tugga -tuggad -tuggade -tuggades -tuggar -tuggas -tuggat -tuggats -tuggbuss -tuggbussar -tuggbussarna -tuggbussarnas -tuggbussars -tuggbussen -tuggbussens -tukt -tukta -tuktan -tuktig -tuktiga -tuktigare -tuktigast -tuktigaste -tuktigt -tum -tumba -tumbas -tumma -tummad -tummade -tummades -tummar -tummarna -tummarnas -tummars -tummat -tummats -tumme -tummen -tummens -tums -tumsbredd -tumstock -tun -tung -tunga -tungan -tungans -tungas -tungor -tungorna -tungornas -tungors -tungsint -tungsinta -tungsintas -tungsinte -tungsintes -tungt -tunisien -tunisiens -tunn -tunna -tunnan -tunnans -tunnare -tunnast -tunnaste -tunnor -tunnorna -tunnornas -tunnors -tuns -tunt -tupp -tuppar -tupparna -tupparnas -tuppars -tuppen -tuppens -tur -turades -turas -turats -turbin -turbinen -turbinens -turbiner -turbinerna -turbinernas -turbiners -turbins -turbo -ture -turen -turens -turer -turerna -turernas -turers -tures -turing -turings -turism -turismen -turismens -turist -turisten -turistens -turister -turisterna -turisternas -turisters -turk -turken -turkens -turkiet -turkiets -turkisk -turkiska -turkiskt -turkmenistan -turkmenistans -turnera -turnerade -turnerar -turnerat -turs -tursam -tursamma -tursammare -tursammast -tursammaste -tursamt -turturduva -turturduvan -turturduvans -turturduvor -turturduvorna -turturduvornas -turturduvors -tusan -tusch -tusen -tusende -tusenfoting -tusenfotingar -tusenfotingarna -tusenfotingarnas -tusenfotingars -tusenfotingen -tusenfotingens -tusenfotings -tuss -tussar -tussarna -tussarnas -tussars -tussen -tussens -tuta -tutad -tutade -tutades -tutande -tutandet -tutandets -tutar -tutas -tutat -tutats -tutning -tutningar -tutningarna -tutningarnas -tutningars -tutningen -tutningens -tutnings -tuva -tuvan -tuvans -tuvor -tuvorna -tuvornas -tuvors -tvagit -tvang -tvangs -tveka -tvekade -tvekan -tvekar -tvekat -tveksam -tveksamhet -tveksamheten -tveksamhetens -tveksamheter -tveksamheterna -tveksamheternas -tveksamheters -tveksamhets -tveksamma -tveksammare -tveksammast -tveksammaste -tveksamt -tvenne -tvetydig -tvetydiga -tvetydighet -tvetydigheten -tvetydighetens -tvetydigheter -tvetydigheterna -tvetydigheternas -tvetydigheters -tvetydighets -tvetydigt -tvi -tvina -tvinade -tvinades -tvinar -tvinas -tvinat -tvinats -tving -tvinga -tvingad -tvingade -tvingades -tvingande -tvingandet -tvingandets -tvingar -tvingas -tvingat -tvingats -tvings -tvinna -tvinnad -tvinnade -tvinnades -tvinnar -tvinnas -tvinnat -tvinnats -tvinsjuk -tvinsjuka -tvinsjukt -tvist -tvista -tvistade -tvistar -tvistat -tvisten -tvistens -tvister -tvisterna -tvisternas -tvisters -tvungen -tvunget -tvungit -tvungits -tvungna -tyck -tycka -tyckande -tyckandet -tyckandets -tyckas -tycke -tycker -tyckes -tycket -tyckets -tycks -tyckt -tyckte -tycktes -tyckts -tyd -tyda -tydas -tydd -tydda -tydde -tyddes -tyder -tydning -tydningen -tydningens -tydnings -tyds -tyg -tygen -tygens -tyger -tygerna -tygernas -tygers -tyget -tygets -tyna -tynade -tynande -tynandet -tynandets -tynar -tynat -tyng -tynga -tyngas -tyngd -tyngda -tyngde -tyngden -tyngdens -tyngder -tyngderna -tyngdernas -tyngders -tyngdes -tyngdkraft -tyngdkraften -tyngdkraftens -tyngdkrafts -tyngdpunkt -tyngdpunkten -tyngdpunktens -tyngdpunkter -tyngdpunkterna -tyngdpunkternas -tyngdpunkters -tyngdpunkts -tynger -tynges -tyngre -tyngs -tyngst -tyngsta -tyngt -tyngts -typ -typen -typens -typer -typerna -typernas -typers -typisk -typiska -typiske -typiskt -typografi -typografin -typografins -typografisk -typografiska -typografiskt -typsatt -typsatta -typsnitt -typsnitten -typsnittens -typsnittet -typsnittets -typsnitts -tyr -tyrann -tyrannen -tyrannens -tyranner -tyrannerna -tyrannernas -tyranners -tyrannisk -tyranniska -tyranniske -tyranniskt -tyranns -tyre -tyringe -tyringes -tysk -tyska -tyskan -tyskans -tyskar -tyskarna -tyskarnas -tyskars -tysken -tyskens -tyskor -tyskorna -tyskornas -tyskors -tyskt -tyst -tysta -tystad -tystade -tystades -tystar -tystare -tystas -tystast -tystaste -tystat -tystats -tystberga -tystbergas -tyste -tysthet -tystheten -tysthetens -tysthets -tystna -tystnad -tystnade -tystnaden -tystnadens -tystnads -tystnande -tystnandet -tystnandets -tystnar -tystnat -tytt -tytts -udd -udda -uddar -uddarna -uddarnas -uddars -udde -uddebo -uddebos -udden -uddens -uddvass -uddvassa -uddvasst -uganda -ugandas -ugn -ugnar -ugnarna -ugnarnas -ugnars -ugnen -ugnens -ugns -ukraina -ukrainas -umgicks -undan -undanskymd -undanskymda -undanskymt -undanta -undantag -undantaget -undantagets -undantar -under -underbar -underbara -underbarare -underbarast -underbaraste -underbart -underbygg -underbygga -underbyggande -underbyggandet -underbyggandets -underbyggas -underbyggd -underbyggde -underbyggdes -underbygger -underbyggs -underbyggt -underbyggts -underfund -underfundig -underfundiga -underfundigt -undergick -undergiven -undergivenhet -undergivenheten -undergivenhetens -undergivenhets -undergivet -undergivna -undergrupp -undergruppen -undergruppens -undergrupper -undergrupperna -undergruppernas -undergruppers -undergrupps -underhuggare -underhuggaren -underhuggarens -underhuggares -underhuggarna -underhuggarnas -underjord -underjorden -underjordens -underjordisk -underjordiska -underjordiskt -underjords -underkant -underkasta -underkastad -underkastade -underkastades -underkastar -underkastas -underkastat -underkastats -underkuva -underkuvad -underkuvade -underkuvades -underkuvar -underkuvas -underkuvat -underkuvats -undermedveten -undermedvetet -undermedvetna -underminera -underminerad -underminerade -underminerades -underminerar -undermineras -underminerat -underminerats -underordna -underordnad -underordnade -underordnades -underordnads -underordnar -underordnas -underordnat -underordnats -undersida -undersidan -undersidans -undersidas -undersidor -undersidorna -undersidornas -undersidors -underskatta -underskattad -underskattade -underskattades -underskattande -underskattandet -underskattandets -underskattar -underskattas -underskattat -underskattats -underskott -underskotten -underskottens -underskottet -underskottets -underskotts -underskred -underskreds -underskrid -underskrida -underskridas -underskrider -underskridit -underskridits -underskrids -underskrift -underskriften -underskriftens -underskrifter -underskrifterna -underskrifternas -underskrifters -underskrifts -understa -understiga -understigande -understod -understrukit -understryka -understrykning -understrykningar -understrykningarna -understrykningarnas -understrykningars -understrykningen -understrykningens -understryknings -understundom -underteckna -undertecknad -undertecknade -undertecknades -undertecknads -undertecknande -undertecknandet -undertecknandets -undertecknar -undertecknare -undertecknaren -undertecknarens -undertecknares -undertecknarna -undertecknarnas -undertecknas -undertecknat -undertecknats -undertext -undertexten -undertextens -undertexter -undertexterna -undertexternas -undertexters -undertexts -underton -undertryck -undertrycka -undertryckas -undertrycker -undertrycks -undertryckt -undertryckta -undertryckte -undertrycktes -undertryckts -underverk -undervisa -undervisad -undervisade -undervisades -undervisande -undervisandet -undervisandets -undervisar -undervisas -undervisat -undervisats -undervisning -undervisningen -undervisningens -undervisnings -undfick -undgick -undgicks -undkom -undkomma -undkommer -undkommit -undra -undrad -undrade -undrades -undran -undrande -undrandet -undrandets -undrar -undras -undrat -undrats -undre -undret -undrets -undrom -undroms -undvara -undvarade -undvarades -undvarar -undvaras -undvarat -undvarats -undvek -undvik -undvika -undvikande -undvikandet -undvikandets -undvikas -undviker -undvikits -ung -unga -ungar -ungarna -ungarnas -ungars -ungas -ungdom -ungdomar -ungdomarna -ungdomarnas -ungdomars -ungdomen -ungdomens -ungdoms -unge -ungen -ungens -ungern -ungerns -ungersk -ungerska -ungerskt -ungersven -unges -ungt -uniform -uniformen -uniformens -uniformer -uniformerna -uniformernas -uniformers -uniforms -unik -unika -unikt -union -unionen -unionens -unioner -unionerna -unionernas -unioners -unions -universitet -universiteten -universitetens -universitetet -universitetets -universitets -universum -universums -unix -unken -unket -unkna -unna -unnad -unnade -unnades -unnar -unnaryd -unnaryds -unnas -unnat -unnats -uno -unos -uns -upp -uppackad -uppackade -uppackat -uppackning -uppackningar -uppackningarna -uppackningarnas -uppackningars -uppackningen -uppackningens -uppacknings -uppamma -uppammad -uppammade -uppammades -uppammande -uppammandet -uppammandets -uppammar -uppammas -uppammat -uppammats -uppassa -uppassad -uppassade -uppassades -uppassande -uppassandet -uppassandets -uppassar -uppassas -uppassat -uppassats -uppbar -uppbjud -uppbjuda -uppbjudas -uppbjuder -uppbjudit -uppbjudits -uppbjuds -uppbrott -uppbrotten -uppbrottens -uppbrottet -uppbrottets -uppbrotts -uppbrutit -uppbrutits -uppbryt -uppbryta -uppbrytas -uppbryter -uppbryts -uppburen -uppburet -uppburit -uppburna -uppbygga -uppbyggande -uppbyggandet -uppbyggandets -uppbyggas -uppbyggd -uppbyggda -uppbyggde -uppbyggdes -uppbygger -uppbyggnad -uppbyggnaden -uppbyggnadens -uppbyggs -uppbyggt -uppbyggts -uppdatera -uppdaterad -uppdaterade -uppdaterades -uppdaterar -uppdateras -uppdaterat -uppdaterats -uppdatering -uppdateringar -uppdateringarna -uppdateringarnas -uppdateringars -uppdateringen -uppdateringens -uppdaterings -uppdrag -uppdragen -uppdragens -uppdraget -uppdragets -uppdrags -uppdragsgivare -uppdragsgivaren -uppdragsgivarens -uppdragsgivares -uppdragsgivarna -uppdragsgivarnas -uppdrogs -uppdyker -uppe -uppegga -uppeggad -uppeggade -uppeggades -uppeggande -uppeggandet -uppeggandets -uppeggar -uppeggas -uppeggat -uppeggats -uppenbar -uppenbara -uppenbarad -uppenbarade -uppenbarades -uppenbarande -uppenbarandet -uppenbarandets -uppenbarar -uppenbaras -uppenbarat -uppenbarats -uppenbart -uppfann -uppfatta -uppfattad -uppfattade -uppfattades -uppfattar -uppfattas -uppfattat -uppfattats -uppfattning -uppfattningar -uppfattningarna -uppfattningarnas -uppfattningars -uppfattningen -uppfattningens -uppfattnings -uppfinna -uppfinnare -uppfinnaren -uppfinnarens -uppfinnares -uppfinnarna -uppfinnarnas -uppfinner -uppfinning -uppfinningar -uppfinningarna -uppfinningarnas -uppfinningars -uppfinningen -uppfinningens -uppfinnings -uppfinningsrik -uppfinningsrika -uppfinningsrikedom -uppfinningsrikt -uppfordra -uppfordrade -uppfordran -uppfordrande -uppfordrar -uppfordrat -uppfostra -uppfostrad -uppfostrade -uppfostrades -uppfostran -uppfostrar -uppfostras -uppfostrat -uppfostrats -uppfriska -uppfriskad -uppfriskade -uppfriskades -uppfriskande -uppfriskar -uppfriskas -uppfriskat -uppfriskats -uppfunna -uppfunnen -uppfunnet -uppfunnit -uppgav -uppgavs -uppge -uppger -uppges -uppgick -uppgift -uppgiften -uppgiftens -uppgifter -uppgifterna -uppgifternas -uppgifters -uppgivas -uppgiven -uppgivenhet -uppgivenheten -uppgivenhetens -uppgivenhets -uppgiver -uppgivet -uppgivit -uppgivits -uppgivna -uppgradering -uppgraderingar -uppgraderingarna -uppgraderingarnas -uppgraderingars -uppgraderingen -uppgraderingens -uppgraderings -upphetsa -upphetsad -upphetsade -upphetsades -upphetsande -upphetsandet -upphetsandets -upphetsar -upphetsas -upphetsat -upphetsats -upphitta -upphittad -upphittade -upphittades -upphittar -upphittas -upphittat -upphittats -upphov -upphoven -upphovens -upphovet -upphovets -upphovs -upphovsman -upphovsmannen -upphovsmannens -upphovsmans -uppkastad -uppkastade -uppkastat -uppkom -uppkomma -uppkommen -uppkommer -uppkommet -uppkommit -uppkomna -uppkomst -uppkomsten -uppkomstens -uppkrupen -uppkrupet -uppkrupna -uppmana -uppmanad -uppmanade -uppmanades -uppmanar -uppmanas -uppmanat -uppmanats -uppmaning -uppmaningar -uppmaningarna -uppmaningarnas -uppmaningars -uppmaningen -uppmaningens -uppmanings -uppmuntra -uppmuntrad -uppmuntrade -uppmuntrades -uppmuntran -uppmuntrande -uppmuntrandet -uppmuntrandets -uppmuntrar -uppmuntras -uppmuntrat -uppmuntrats -uppoffra -uppoffrad -uppoffrade -uppoffrades -uppoffrar -uppoffras -uppoffrat -uppoffrats -uppoffring -uppoffringar -uppoffringarna -uppoffringarnas -uppoffringars -uppoffringen -uppoffringens -uppoffrings -upprada -uppradade -uppradades -uppradar -uppradas -uppradat -uppradats -upprepa -upprepad -upprepade -upprepades -upprepande -upprepandet -upprepandets -upprepar -upprepas -upprepat -upprepats -upprepning -upprepningar -upprepningarna -upprepningarnas -upprepningars -upprepningen -upprepningens -upprepnings -uppres -uppresa -uppresas -uppreser -upprest -uppreste -upprestes -upprests -uppriktig -uppriktiga -uppriktigare -uppriktigast -uppriktigaste -uppriktighet -uppriktigheten -uppriktighetens -uppriktigheter -uppriktigheterna -uppriktigheternas -uppriktigheters -uppriktighets -uppriktigt -uppringd -uppringda -uppringning -uppringningar -uppringningarna -uppringningarnas -uppringningars -uppringningen -uppringningens -uppringnings -uppringt -uppriven -upprivet -upprivna -upprop -uppropa -uppropad -uppropade -uppropades -uppropande -uppropandet -uppropandets -uppropar -uppropas -uppropat -uppropats -uppropen -uppropens -uppropet -uppropets -upprops -uppror -upproren -upprorens -upprorisk -upproriska -upproriskt -upprors -upprusta -upprustad -upprustade -upprustades -upprustar -upprustas -upprustat -upprustats -upprustning -upprustningar -upprustningarna -upprustningarnas -upprustningars -upprustningen -upprustningens -upprustnings -uppsats -uppsatsen -uppsatsens -uppsatser -uppsatserna -uppsatsernas -uppsatsers -uppsatt -uppsatta -uppsattas -uppsatte -uppsattes -uppseende -uppskaka -uppskakad -uppskakade -uppskakades -uppskakar -uppskakas -uppskakat -uppskakats -uppskatta -uppskattad -uppskattade -uppskattades -uppskattande -uppskattandet -uppskattandets -uppskattar -uppskattas -uppskattat -uppskattats -uppskattning -uppskattningar -uppskattningarna -uppskattningarnas -uppskattningars -uppskattningen -uppskattningens -uppskattnings -uppskattningsvis -uppskjut -uppskjuta -uppskjutas -uppskjuten -uppskjuter -uppskjutet -uppskjutit -uppskjutits -uppskjutna -uppskjutning -uppskjutningar -uppskjutningarna -uppskjutningarnas -uppskjutningars -uppskjutningen -uppskjutningens -uppskjutnings -uppskjuts -uppskov -uppskovet -uppskovets -uppskuren -uppskuret -uppskurna -uppsnappad -uppsnappade -uppsnappat -uppspira -uppspirade -uppspirar -uppspirat -uppstart -uppstartning -uppstartningar -uppstartningarna -uppstartningarnas -uppstartningars -uppstartningen -uppstartningens -uppstartnings -uppsteg -uppstickande -uppstiga -uppstiger -uppstod -uppsyn -uppta -upptaga -upptagas -upptagen -upptagenhet -upptagenheten -upptagenhetens -upptages -upptaget -upptagit -upptagna -upptagne -upptagning -upptagningar -upptagningarna -upptagningarnas -upptagningars -upptagningen -upptagningens -upptagnings -upptakt -upptar -upptas -uppteckna -upptecknad -upptecknade -upptecknades -upptecknande -upptecknandet -upptecknandets -upptecknar -upptecknas -upptecknat -upptecknats -uppteckning -uppteckningar -uppteckningarna -uppteckningarnas -uppteckningars -uppteckningen -uppteckningens -upptecknings -upptorna -upptornade -upptornades -upptornar -upptornas -upptornat -upptornats -upptryckt -upptryckta -uppvaknande -uppvaknandet -uppvaknandets -uppvakta -uppvaktad -uppvaktade -uppvaktades -uppvaktande -uppvaktandet -uppvaktandets -uppvaktar -uppvaktare -uppvaktaren -uppvaktarens -uppvaktares -uppvaktarna -uppvaktarnas -uppvaktas -uppvaktat -uppvaktats -uppvaktning -uppvaktningar -uppvaktningarna -uppvaktningarnas -uppvaktningars -uppvaktningen -uppvaktningens -uppvaktnings -uppvisa -uppvisad -uppvisade -uppvisades -uppvisande -uppvisandet -uppvisandets -uppvisar -uppvisas -uppvisat -uppvisats -uran -uranus -urarta -urartade -urartar -urartat -urartning -urartningen -urartningens -urartnings -urban -urbana -urbaniserad -urbaniserade -urbaniserat -urbanisering -urbaniseringen -urbaniseringens -urbaniserings -urbans -urbant -urberg -urberget -urbergets -uren -urens -uret -urets -urin -urkramning -urkramningen -urkramningens -urkramnings -urminnes -urmoder -urmodig -urmodiga -urmodigt -urna -urnan -urnans -urnor -urnorna -urnornas -urnors -urs -ursinnig -ursinniga -ursinnigt -urskog -urskogar -urskogarna -urskogarnas -urskogars -urskogen -urskogens -urskrift -ursprung -ursprunget -ursprungets -ursviken -ursvikens -urtid -urtiden -urtidens -uruguay -uruguays -urverk -usa -usch -utagera -utagerade -utagerande -utagerar -utagerat -utan -utandades -utandas -utandats -utannonsera -utannonserad -utannonserade -utannonserades -utannonserande -utannonserandet -utannonserandets -utannonserar -utannonseras -utannonserat -utannonserats -utanverk -utarbeta -utarbetad -utarbetade -utarbetades -utarbetande -utarbetandet -utarbetandets -utarbetar -utarbetas -utarbetat -utarbetats -utarma -utarmad -utarmade -utarmar -utarmat -utav -utbad -utbads -utbedja -utbjud -utbjuda -utbjudas -utbjuden -utbjuder -utbjudet -utbjudit -utbjudits -utbjudna -utbjuds -utbrast -utbred -utbreda -utbredas -utbredd -utbredda -utbredde -utbreddes -utbreder -utbredning -utbredningar -utbredningarna -utbredningarnas -utbredningars -utbredningen -utbredningens -utbrednings -utbreds -utbrett -utbretts -utbrista -utbrister -utbrott -utbrotten -utbrottens -utbrottet -utbrottets -utbrotts -utbrustit -utbrutit -utbrutits -utbryt -utbryta -utbrytas -utbryter -utbrytning -utbrytningar -utbrytningarna -utbrytningarnas -utbrytningars -utbrytningen -utbrytningens -utbrytnings -utbryts -utbud -utbuden -utbudens -utbudet -utbudets -utbuds -utbyggande -utbyggandet -utbyggandets -utbyggbar -utbyggbara -utbyggbart -utbyggd -utbyggda -utbyggnad -utbyggt -utbyt -utbyta -utbytas -utbyte -utbytet -utbytets -utbytt -utbytta -utdata -utdatan -utdatans -utdatas -utdrag -utdraga -utdragas -utdragen -utdragens -utdrages -utdraget -utdragets -utdrags -utdriven -utdrivet -utdrivna -utdrog -ute -utefter -utenhet -utenheten -utenhetens -utenheter -utenheterna -utenheternas -utenheters -utenhets -utexaminera -utexaminerad -utexaminerade -utexaminerades -utexaminerar -utexamineras -utexaminerat -utexaminerats -utfattig -utfattiga -utfattigt -utfiskning -utfiskningen -utfiskningens -utfisknings -utfodra -utfodrad -utfodrade -utfodrades -utfodrar -utfodras -utfodrat -utfodrats -utforma -utformad -utformade -utformades -utformar -utformas -utformat -utformats -utformning -utformningen -utformningens -utformnings -utforska -utforskad -utforskade -utforskades -utforskar -utforskat -utforskats -utgav -utgavs -utge -utger -utgett -utgick -utgift -utgifter -utgifterna -utgifternas -utgifters -utgiva -utgivare -utgivaren -utgivarens -utgivares -utgivarna -utgivarnas -utgivas -utgiven -utgivet -utgivits -utgivna -utgivning -utgivningen -utgivningens -utgivnings -utgjorde -utgjut -utgjuta -utgjutas -utgjuten -utgjuter -utgjutet -utgjutit -utgjutits -utgjutna -utgjuts -uthuggen -uthugget -uthuggna -uthus -uthusen -uthusens -uthuset -uthusets -uthyr -uthyra -uthyras -uthyrde -uthyrdes -uthyres -uthyrning -uthyrningen -uthyrningens -uthyrnings -uthyrs -uthyrt -uthyrts -uti -utkant -utkanten -utkantens -utkanter -utkanterna -utkanternas -utkanters -utkast -utkastad -utkastade -utkastat -utkasten -utkastens -utkastet -utkastets -utkasts -utkik -utkiks -utkom -utkomma -utkommande -utkommen -utkommer -utkommet -utkommit -utkomna -utkomst -utkonkurrera -utkonkurrerad -utkonkurrerade -utkonkurrerades -utkonkurrerar -utkonkurreras -utkonkurrerat -utkonkurrerats -utkora -utkorad -utkorade -utkorades -utkorar -utkoras -utkorat -utkorats -utmana -utmanad -utmanade -utmanades -utmanar -utmanas -utmanat -utmanats -utmaning -utmaningar -utmaningarna -utmaningarnas -utmaningars -utmaningen -utmaningens -utmanings -utmatningsenhet -utmatningsenheten -utmatningsenhetens -utmatningsenheter -utmatningsenheterna -utmatningsenheternas -utmatningsenheters -utmatningsenhets -utmattad -utmattade -utmattat -utmed -utmynna -utmynnade -utmynnande -utmynnandet -utmynnandets -utmynnar -utmynnat -utnyttja -utnyttjad -utnyttjade -utnyttjades -utnyttjande -utnyttjandet -utnyttjandets -utnyttjar -utnyttjas -utnyttjat -utnyttjats -utom -utomhus -utopi -utpeka -utpekad -utpekade -utpekades -utpekar -utpekas -utpekat -utpekats -utpost -utprickad -utprickade -utprickat -utpris -utprova -utprovad -utprovade -utprovades -utprovar -utprovas -utprovat -utprovats -utrangerad -utrangerade -utrangerat -utred -utreda -utredande -utredandet -utredandets -utredare -utredaren -utredarens -utredares -utredarna -utredarnas -utredas -utredd -utredda -utredde -utreddes -utreder -utredning -utredningar -utredningarna -utredningarnas -utredningars -utredningen -utredningens -utrednings -utredningsenhet -utredningsenheten -utredningsenhetens -utredningsenheter -utredningsenheterna -utredningsenheternas -utredningsenheters -utreds -utrensad -utrensade -utrensat -utrett -utretts -utrikes -utrikesminister -utrikesministern -utrikesministerns -utrikesministers -utrikesministrar -utrikesministrarna -utrikesministrarnas -utrikesministrars -utrop -utropa -utropad -utropade -utropades -utropande -utropandet -utropandets -utropar -utropare -utroparen -utroparens -utropares -utroparna -utroparnas -utropas -utropat -utropats -utropen -utropens -utropet -utropets -utrops -utropstecken -utrota -utrotad -utrotade -utrotades -utrotar -utrotas -utrotat -utrotats -utrotning -utrotningar -utrotningarna -utrotningarnas -utrotningars -utrotningen -utrotningens -utrotnings -utrotningshotad -utrotningshotade -utrotningshotat -utrusande -utrusta -utrustad -utrustade -utrustades -utrustar -utrustas -utrustat -utrustats -utrustning -utrustningar -utrustningarna -utrustningarnas -utrustningars -utrustningen -utrustningens -utrustnings -utryckning -utryckningar -utryckningarna -utryckningarnas -utryckningars -utryckningen -utryckningens -utrycknings -utrym -utrymd -utrymde -utrymdes -utrymma -utrymmande -utrymmandet -utrymmandets -utrymmas -utrymme -utrymmen -utrymmena -utrymmenas -utrymmens -utrymmer -utrymmes -utrymmet -utrymmets -utryms -utrymt -utrymts -utsaga -utsagan -utsagans -utsagas -utsago -utsagor -utsagorna -utsagornas -utsagors -utsatt -utsatta -utse -utsedd -utsedda -utseende -utseendet -utseendets -utser -utses -utsett -utsetts -utsida -utsidan -utsidans -utsidas -utsidor -utsidorna -utsidornas -utsidors -utsikt -utsikten -utsiktens -utsikter -utsikterna -utsikternas -utsikters -utsira -utsirad -utsirade -utsirades -utsirar -utsiras -utsirat -utsirats -utskick -utskicken -utskickens -utskicket -utskickets -utskicks -utskifta -utskiftad -utskiftade -utskiftades -utskiftar -utskiftas -utskiftat -utskiftats -utskott -utskotten -utskottens -utskottet -utskottets -utskotts -utskrev -utskrevs -utskrift -utskriften -utskriftens -utskrifter -utskrifterna -utskrifternas -utskrifters -utskrifts -utskriv -utskriva -utskrivas -utskriven -utskriver -utskrives -utskrivet -utskrivit -utskrivits -utskrivna -utskrivning -utskrivningar -utskrivningarna -utskrivningarnas -utskrivningars -utskrivningen -utskrivningens -utskrivnings -utskrivs -utsmycka -utsmyckad -utsmyckade -utsmyckades -utsmyckar -utsmyckas -utsmyckat -utsmyckats -utsmyckning -utsmyckningar -utsmyckningarna -utsmyckningarnas -utsmyckningars -utsmyckningen -utsmyckningens -utsmycknings -utspred -utspreds -utsprida -utspridas -utspridd -utspridda -utspridde -utspriddes -utspritt -utspritts -utstod -utstyra -utstyras -utstyrd -utstyrda -utstyrde -utstyrdes -utstyrs -utstyrt -utstyrts -utsuga -utsugning -utsugningen -utsugningens -utsugnings -uttag -uttagen -uttagens -uttages -uttaget -uttagets -uttagna -uttags -utter -uttern -utterns -utters -uttesta -uttestad -uttestade -uttestades -uttestar -uttestas -uttestat -uttestats -uttestning -uttestningar -uttestningarna -uttestningarnas -uttestningars -uttestningen -uttestningens -uttestnings -uttorka -uttorkad -uttorkade -uttorkades -uttorkar -uttorkas -uttorkat -uttorkats -uttorkning -uttorkningen -uttorkningens -uttorknings -uttran -uttrans -uttrar -uttrarna -uttrarnas -uttrars -uttryck -uttrycka -uttryckas -uttrycken -uttryckens -uttrycker -uttrycket -uttryckets -uttrycks -uttryckt -uttryckte -uttrycktes -uttryckts -uttyd -uttyda -uttydas -uttydd -uttydda -uttydde -uttyddes -uttyder -uttyds -uttytt -uttytts -utvandra -utvandrad -utvandrade -utvandrades -utvandrande -utvandrandet -utvandrandets -utvandrar -utvandras -utvandrat -utvandrats -utvandring -utvandringen -utvandringens -utvandrings -utverka -utverkad -utverkade -utverkades -utverkar -utverkas -utverkat -utverkats -utvidga -utvidgad -utvidgade -utvidgades -utvidgande -utvidgandet -utvidgandets -utvidgar -utvidgas -utvidgat -utvidgats -utvidgning -utvidgningar -utvidgningarna -utvidgningarnas -utvidgningars -utvidgningen -utvidgningens -utvidgnings -utvinna -utvinnas -utvinner -utvinning -utvinningen -utvinningens -utvinnings -utvisa -utvisad -utvisade -utvisades -utvisande -utvisandet -utvisandets -utvisar -utvisas -utvisat -utvisats -uvar -uvarna -uvarnas -uvars -uven -uvens -uzbekistan -uzbekistans -vacker -vackert -vackra -vackrare -vackras -vackrast -vackraste -vackre -vackres -vad -vada -vadade -vadan -vadar -vadat -vaden -vadens -vadet -vadets -vads -vadstena -vadstenas -vag -vagga -vaggad -vaggade -vaggades -vaggan -vaggande -vaggandet -vaggandets -vaggans -vaggar -vaggas -vaggat -vaggats -vaggeryd -vaggeryds -vaggor -vaggorna -vaggornas -vaggors -vaggvisa -vaggvisan -vaggvisans -vaggvisas -vaggvisor -vaggvisorna -vaggvisornas -vaggvisors -vagn -vagnar -vagnarna -vagnarnas -vagnars -vagnen -vagnens -vagns -vaja -vajade -vajar -vajat -vak -vaka -vakad -vakade -vakades -vakande -vakandet -vakandets -vakant -vakanta -vakar -vakas -vakat -vakats -vaken -vaket -vakna -vaknad -vaknade -vaknades -vaknande -vaknandet -vaknandets -vaknar -vaknas -vaknat -vaknats -vaksam -vaksamhet -vaksamheten -vaksamhetens -vaksamma -vaksammare -vaksammast -vaksammaste -vaksamt -vakt -vakta -vaktad -vaktade -vaktades -vaktande -vaktandet -vaktandets -vaktar -vaktare -vaktaren -vaktarens -vaktares -vaktarna -vaktarnas -vaktas -vaktat -vaktats -vakten -vaktens -vakter -vakterna -vakternas -vakters -vaktmanskap -vakuum -van -vana -vanan -vanans -vanartig -vanartiga -vanartigt -vanas -vande -vandra -vandrad -vandrade -vandrades -vandrande -vandrandet -vandrandets -vandrar -vandrare -vandraren -vandrarens -vandrares -vandrarna -vandrarnas -vandras -vandrat -vandrats -vandrerska -vandrerskan -vandrerskans -vandrerskas -vandring -vandringar -vandringarna -vandringarnas -vandringars -vandringen -vandringens -vandrings -vanesak -vank -vanka -vankade -vankar -vankas -vankat -vankats -vankiva -vankivas -vanmakt -vann -vanor -vanorna -vanornas -vanors -vanprydnad -vansbro -vansbros -vansinnighet -vansinnigheten -vansinnighetens -vansinnigheter -vansinnigheterna -vansinnigheternas -vansinnigheters -vant -vantar -vantarna -vantarnas -vantars -vante -vanten -vantens -vantes -vantrivas -vantrivdes -vantrivs -vantrivts -vanvettig -vanvettiga -vanvettigt -vapen -vapens -vapnen -vapnens -vapnet -vapnets -var -vara -varade -varaktig -varaktiga -varaktighet -varaktigheten -varaktighetens -varaktighets -varaktigt -varan -varande -varandra -varandras -varann -varannan -varans -varar -varas -varat -varav -varberg -varbergs -varda -vardag -vardagar -vardagarna -vardagarnas -vardagars -vardagen -vardagens -vardags -vardagsrum -vardagsrummen -vardagsrummens -vardagsrummet -vardagsrummets -vardande -vardandet -vardandets -varde -vardera -vare -varefter -varemot -varenda -varet -varets -vareviga -varg -vargar -vargarna -vargarnas -vargars -vargen -vargens -vargs -vari -varia -varian -varians -variansen -variansens -varianser -varianserna -variansernas -variansers -variant -varianten -variantens -varianter -varianterna -varianternas -varianters -variation -variationen -variationens -variationer -variationerna -variationernas -variationers -variations -variationsrik -variationsrika -variationsrikedom -variationsrikt -variera -varierade -varierades -varierande -varierandet -varierandets -varierar -varieras -varierat -varierats -varigenom -varit -varje -varjehanda -varken -varm -varma -varmare -varmast -varmaste -varmbad -varmbaden -varmbadens -varmbadet -varmbadets -varmed -varmt -varmvatten -varmvattenberedare -varmvattenberedaren -varmvattenberedarens -varmvattenberedares -varmvattenberedarna -varmvattenberedarnas -varmvattens -varmvattnet -varmvattnets -varna -varnad -varnade -varnades -varnande -varnandet -varnandets -varnar -varnas -varnat -varnats -varnhem -varnhems -varning -varningar -varningarna -varningarnas -varningars -varningen -varningens -varnings -varningsord -varom -varor -varorna -varornas -varors -varp -varpar -varparna -varparnas -varpars -varpen -varpens -varpet -varpets -varps -vars -varsam -varsamma -varsammare -varsammas -varsammast -varsammaste -varsamme -varsammes -varsamt -varse -varsin -varsina -varsitt -varsna -varsnade -varsnades -varsnande -varsnandet -varsnandets -varsnar -varsnas -varsnat -varsnats -varstans -vart -vartannat -vartdera -vartenda -varteviga -vartofta -vartoftas -varuhus -varuhusen -varuhusens -varuhuset -varuhusets -varumottagare -varumottagaren -varumottagarens -varumottagares -varumottagarna -varumottagarnas -varuti -varutransport -varutransporten -varutransportens -varutransporter -varutransporterna -varutransporternas -varutransporters -varutransports -varv -varva -varvad -varvade -varvades -varvar -varvas -varvat -varvats -varven -varvens -varvet -varvets -varvid -varvs -vas -vasen -vasens -vaser -vaserna -vasernas -vasers -vass -vassa -vassare -vassast -vassaste -vassen -vassens -vasset -vassets -vasst -vatikanstaten -vatikanstatens -vatten -vattenbryn -vattenbrynen -vattenbrynens -vattenbrynet -vattenbrynets -vattendrag -vattendragen -vattendragens -vattendraget -vattendragets -vattenyta -vattenytan -vattenytans -vattenytor -vattenytorna -vattenytornas -vattenytors -vattna -vattnad -vattnade -vattnades -vattnar -vattnas -vattnat -vattnats -vattnen -vattnens -vattnet -vattnets -vattumannen -vattusot -vax -vaxa -vaxad -vaxade -vaxades -vaxar -vaxas -vaxat -vaxats -vaxen -vaxens -vaxer -vaxerna -vaxernas -vaxers -vaxmora -veck -vecka -veckan -veckans -veckas -vecken -veckens -vecket -veckets -veckodag -veckodagen -veckodagens -veckor -veckorna -veckornas -veckors -veckovis -vecks -ved -veddige -veddiges -veden -vedens -vederfaras -vederfarits -vederkvick -vederkvicka -vederkvickas -vederkvicker -vederkvicks -vederkvickt -vederkvickte -vederkvicktes -vederkvickts -vedernamn -vedersakare -vedersakaren -vedersakarens -vedersakares -vedersakarna -vedersakarnas -vedertagen -vedertaget -vedertagna -vedum -vedums -vegan -veganen -veganens -veganer -veganerna -veganernas -veganers -vegans -vegby -vegbys -vegetarian -vegetarianen -vegetarianens -vegetarianer -vegetarianerna -vegetarianernas -vegetarianers -vegetarians -vegetarisk -vegetariska -vegetariskt -vegetation -vegetationen -vegetationens -vegetationer -vegetationerna -vegetationernas -vegetationers -vegetations -veinge -veinges -vejbystrand -vejbystrands -vek -veka -vekar -vekare -vekarna -vekarnas -vekars -vekas -vekast -vekaste -veke -veken -vekens -vekes -vekhet -vekheten -vekhetens -vekna -veknade -veknar -veknat -veks -vekt -vektor -vektorer -vektorerna -vektorernas -vektorers -vektorn -vektorns -vektors -vem -vemod -vemodig -vemodiga -vemodigt -vems -ven -venetiansk -venetianska -venetianskt -venjan -venjans -venus -veranda -verandan -verandans -verandas -verandor -verandorna -verandornas -verandors -verb -verben -verbens -verbet -verbets -verde -verifiera -verifierad -verifierade -verifierades -verifierande -verifierandet -verifierandets -verifierar -verifieras -verifierat -verifierats -verifikation -verifikationen -verifikationens -verifikationer -verifikationerna -verifikationernas -verifikationers -verifikations -verk -verka -verkad -verkade -verkades -verkan -verkande -verkandet -verkandets -verkar -verkas -verkat -verkats -verken -verkens -verket -verkets -verkning -verkningar -verkningarna -verkningarnas -verkningars -verkningen -verkningens -verknings -verksam -verksamhet -verksamheten -verksamhetens -verksamheter -verksamheterna -verksamheternas -verksamheters -verksamhets -verksamma -verksammare -verksammas -verksammast -verksammaste -verksamme -verksammes -verksamt -verkstad -verkstaden -verkstadens -verkstads -verkstadsindustri -verkstadsindustrin -verkstadsindustrins -verktyg -verktygen -verktygens -verktyget -verktygets -verktygs -verner -verners -vernissage -verop -vers -versen -versens -verser -verserna -versernas -versers -version -versionen -versionens -versioner -versionerna -versionernas -versioners -versions -vessigebro -vessigebros -vet -veta -vetande -vetandet -vetandets -vetat -vete -vetenskap -vetenskapen -vetenskapens -vetenskaper -vetenskaperna -vetenskapernas -vetenskapers -vetenskaps -vetenskapsman -vetenskapsmannen -vetenskapsmannens -vetenskapsmans -veteran -veteranen -veteranens -veteraner -veteranerna -veteranernas -veteraners -veterans -vetet -vetets -veto -veton -vetons -vetskap -vetskapen -vetskapens -vett -vetta -vettat -vette -vetter -vettet -vettets -vettig -vettiga -vettigare -vettigast -vettigaste -vettigt -vev -veva -vevad -vevade -vevades -vevar -vevas -vevat -vevats -veven -vevens -via -vibration -vibrationen -vibrationens -vibrationer -vibrationerna -vibrationernas -vibrationers -vibrations -vibrator -vibratorn -vibratorns -vibrators -vibrera -vibrerade -vibrerande -vibrerandet -vibrerandets -vibrerar -vibrerat -vice -vicka -vickad -vickade -vickades -vickande -vickandet -vickandets -vickar -vickas -vickat -vickats -vid -vida -vidare -vidarebefordra -vidarebefordrad -vidarebefordrade -vidarebefordrades -vidarebefordrar -vidarebefordras -vidarebefordrat -vidarebefordrats -vidast -vidaste -vidd -vidden -viddens -vide -video -videon -videons -videor -videorna -videornas -videors -videos -vidga -vidgad -vidgade -vidgades -vidgande -vidgandet -vidgandets -vidgar -vidgas -vidgat -vidgats -vidimera -vidimerad -vidimerade -vidimerades -vidimerar -vidimerat -vidimerats -vidrig -vidriga -vidrigare -vidrigas -vidrigast -vidrigaste -vidrige -vidriges -vidrigt -vidta -vidtaga -vidtager -vidtagits -vidtar -vidtog -vidunder -vidunders -vidundren -vidundrens -vidundret -vidundrets -vietnam -vietnams -vifta -viftad -viftade -viftades -viftande -viftandet -viftandets -viftar -viftas -viftat -viftats -viftning -viftningar -viftningarna -viftningarnas -viftningars -viftningen -viftningens -viftnings -vig -viga -vigande -vigandet -vigandets -vigas -vigd -vigde -vigdes -viger -vigs -vigt -vigts -vigvatten -vigvattens -vigvattnet -vigvattnets -vik -vika -vikande -vikar -vikarbyn -vikarbyns -vikariat -vikariaten -vikariatens -vikariatet -vikariatets -vikarie -vikarien -vikariens -vikarier -vikariera -vikarierade -vikarierande -vikarierandet -vikarierandets -vikarierar -vikarierat -vikarierna -vikariernas -vikariers -vikaries -vikarna -vikarnas -vikars -vikas -viken -vikens -viker -viking -vikingar -vikingarna -vikingarnas -vikingars -vikingen -vikingens -vikings -vikingstad -vikingstads -vikit -vikmanshyttan -vikmanshyttans -vikt -vikta -vikten -viktens -vikter -vikterna -vikternas -vikters -viktig -viktiga -viktigare -viktigast -viktigaste -viktigt -viktor -viktoria -viktorias -viktors -vikts -vimmerby -vimmerbys -vin -vina -vinande -vinandet -vinandets -vinberg -vinbergs -vind -vinda -vindan -vindans -vindar -vindarna -vindarnas -vindars -vindas -vinddrag -vinden -vindens -vindor -vindorna -vindornas -vindors -vindrinkare -vindrinkaren -vindrinkarens -vindrinkares -vindrinkarna -vindrinkarnas -vindruta -vindrutan -vindrutans -vindrutas -vindrutor -vindrutorna -vindrutornas -vindrutors -vindruva -vindruvan -vindruvans -vindruvas -vindruvor -vindruvorna -vindruvornas -vindruvors -vinds -viner -vinerna -vinernas -viners -vinet -vinets -vingar -vingarna -vingarnas -vingars -vinge -vingen -vingens -vinges -vink -vinka -vinkad -vinkade -vinkades -vinkande -vinkandet -vinkandets -vinkar -vinkarna -vinkarnas -vinkars -vinkas -vinkat -vinkats -vinken -vinkens -vinna -vinnare -vinnaren -vinnarens -vinnares -vinnarna -vinnarnas -vinnas -vinner -vinning -vinninga -vinningas -vinningen -vinningens -vinnings -vinns -vinprovare -vinprovaren -vinprovarens -vinprovares -vinprovarna -vinprovarnas -vins -vinst -vinsten -vinstens -vinster -vinsterna -vinsternas -vinsters -vinter -vinterdag -vinterdagar -vinterdagarna -vinterdagarnas -vinterdagars -vinterdagen -vinterdagens -vinterdags -vintern -vinterns -vinters -vintertid -vintertiden -vintertidens -vintertids -vintrampare -vintramparen -vintramparens -vintrampares -vintramparna -vintramparnas -vintrar -vintrarna -vintrarnas -vintrars -vintras -vintrosa -vintrosas -vipa -vipan -vipans -vipor -viporna -vipornas -vipors -vippa -vippan -vippans -vippas -vips -vira -virad -virade -virades -virar -viras -virat -virats -virestad -virestads -virka -virkad -virkade -virkades -virkar -virkas -virkat -virkats -virke -virket -virkets -virra -virrade -virrar -virrat -virrig -virriga -virrigas -virrige -virriges -virrigt -virrvarr -virrvarren -virrvarrens -virrvarret -virrvarrets -virrvarrs -virsbo -virsbos -virserum -virserums -virtuos -virtuosen -virtuosens -virtuoser -virtuoserna -virtuosernas -virtuosers -virus -virusen -virusens -viruset -virusets -vis -visa -visad -visade -visades -visan -visande -visandet -visandets -visans -visar -visare -visarna -visarnas -visars -visas -visast -visaste -visat -visats -visavi -visby -visbys -visdom -visdomen -visdomens -visdoms -vise -visen -visens -vises -vishet -visheten -vishetens -vishets -vision -visionen -visionens -visioner -visionerna -visionernas -visioners -visions -visit -visiten -visitens -visiter -visiterna -visiternas -visiters -visits -viska -viskad -viskade -viskades -viskafors -viskande -viskandet -viskandets -viskar -viskas -viskat -viskats -viskning -viskningar -viskningarna -viskningarnas -viskningars -viskningen -viskningens -visknings -visning -visningar -visningarna -visningarnas -visningars -visningen -visningens -visnings -visor -visorna -visornas -visors -visp -vispa -vispad -vispade -vispades -vispande -vispandet -vispandets -vispar -visparna -visparnas -vispars -vispas -vispat -vispats -vispen -vispens -visps -viss -vissa -vissen -visset -visshet -vissheten -visshetens -vissna -vissnad -vissnade -vissnades -vissnande -vissnandet -vissnandets -vissnar -vissnas -vissnat -vissnats -visso -visst -visste -vist -vistades -vistas -vistats -visthus -visthusen -visthusens -visthuset -visthusets -vit -vita -vitaby -vitabys -vitare -vitarmad -vitarmade -vitarmat -vitas -vitast -vitaste -vite -vites -vitmenad -vitmenade -vitmenat -vitmossa -vitmossan -vitmossans -vitmossas -vitna -vitnad -vitnade -vitnar -vitnat -vits -vitsig -vitsiga -vitsigt -vitsorda -vitsordad -vitsordade -vitsordades -vitsordar -vitsordas -vitsordat -vitsordats -vitt -vittangi -vittangis -vittaryd -vittaryds -vittberyktad -vittberyktade -vittberyktat -vitter -vitterhet -vitterheten -vitterhetens -vitterhets -vittert -vittinge -vittinges -vittna -vittnad -vittnade -vittnades -vittnande -vittnandet -vittnandets -vittnar -vittnas -vittnat -vittnats -vittne -vittnen -vittnena -vittnenas -vittnens -vittnes -vittnet -vittnets -vittra -vittrade -vittrar -vittrat -viv -vivet -vivets -von -vorden -vordet -vordna -vore -votera -voterade -voterar -voterat -voxnabruk -voxnabruks -vrak -vraka -vrakade -vrakar -vrakat -vraken -vrakens -vraket -vrakets -vraks -vred -vreda -vrede -vreden -vredens -vredes -vredga -vredgad -vredgade -vredgades -vredgar -vredgas -vredgat -vredgats -vreds -vrena -vrenas -vresig -vresiga -vresigare -vresigas -vresigast -vresigaste -vresige -vresiges -vresigt -vreta -vretas -vretstorp -vretstorps -vricka -vrickad -vrickade -vrickades -vrickande -vrickandet -vrickandets -vrickar -vrickas -vrickat -vrickats -vrid -vrida -vridas -vriden -vrider -vrides -vridet -vridit -vridits -vridna -vridning -vridningar -vridningarna -vridningarnas -vridningars -vridningen -vridningens -vridnings -vrids -vrigstad -vrigstads -vrist -vristen -vristens -vrister -vristerna -vristernas -vristers -vunna -vunnen -vunnet -vunnit -vunnits -vuxen -vuxet -vuxit -vuxna -vuxne -vyer -vyerna -vyernas -vyers -vykort -vykorten -vykortens -vykortet -vykortets -vykorts -vyn -vyns -washington -washingtons -watt -werner -werners -westerberg -westerbergs -westman -westmans -wien -wiens -winchester -wirth -xerox -yemen -yemens -ymnig -ymniga -ymnigt -yngre -yngres -yngst -yngsta -yngve -yngves -ynkedom -ynnest -york -yorks -yppa -yppad -yppade -yppades -yppande -yppandet -yppandets -yppar -yppas -yppat -yppats -ypperst -yppersta -yppig -yppiga -yppigare -yppigast -yppigaste -yppigt -yra -yrade -yran -yrande -yrandet -yrandets -yrans -yrar -yrat -yrde -yrka -yrkad -yrkade -yrkades -yrkande -yrkandena -yrkandenas -yrkandet -yrkandets -yrkar -yrkas -yrkat -yrkats -yrke -yrken -yrkena -yrkenas -yrkens -yrkes -yrkesgrupp -yrkesgruppen -yrkesgruppens -yrkesgrupper -yrkesgrupperna -yrkesgruppernas -yrkesgruppers -yrkesgrupps -yrkesman -yrkesmannen -yrkesmannens -yrkesmans -yrket -yrkets -yrt -yrvaken -yrvaket -yrvakna -ystad -ystads -yster -ystert -ystra -ystrare -ystrast -ystraste -yta -ytan -ytans -ytenhet -ytenheten -ytenhetens -ytenheter -ytenheterna -ytenheternas -ytenheters -ytenhets -ytor -ytorna -ytornas -ytors -ytter -ytterby -ytterbys -yttermera -yttern -ytterns -ytters -yttersida -ytterst -yttersta -yttra -yttrade -yttrades -yttrande -yttranden -yttrandena -yttrandenas -yttrandet -yttrandets -yttrar -yttrarna -yttrarnas -yttrars -yttras -yttrat -yttrats -yttre -yttring -yttringar -yttringarna -yttringarnas -yttringars -yttringen -yttringens -yttrings -yvades -yvas -yvats -yvig -yviga -yvigt -yvonne -yvonnes -yvs -yxa -yxan -yxans -yxor -yxorna -yxornas -yxors -zaire -zaires -zambia -zambias -zebra -zebran -zebrans -zebras -zebror -zebrorna -zebrornas -zebrors -zetterberg -zetterbergs -zigenare -zigenaren -zigenarens -zigenares -zigenarna -zigenarnas -zimbabwe -zimbabwes -zinkgruvan -zinkgruvans -zon -zonen -zonens -zoner -zonerna -zonernas -zoners -zons -zoo diff --git a/extras/english-custom b/extras/english-custom deleted file mode 100644 index 4e12a49..0000000 --- a/extras/english-custom +++ /dev/null @@ -1,8 +0,0 @@ -bitcoin -bos -btc -dac -eos -eosio -swe -wax diff --git a/scripts/generate-dict.sh b/scripts/generate-dict.sh deleted file mode 100755 index 6038206..0000000 --- a/scripts/generate-dict.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash -# Generates a dictionary file for usage with eosio-keygen -# - input is read from stdin and should have words separated by newline. -# - output is written to stdout. - -BASE58_ALPHABET=123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz - -# 1. Remove lines that are 2 or less characters long -# 2. Convert to lowercase -# 3. Remove any line that contains non base58 characters -# 4. Sort and remove duplicate lines. -LC_CTYPE=C sed -r '/^.{,2}$/d' < /dev/stdin 2> /dev/null \ - | tr '[:upper:]' '[:lower:]' \ - | awk "! /[^${BASE58_ALPHABET}]/" \ - | sort | uniq diff --git a/scripts/update-dict.sh b/scripts/update-dict.sh deleted file mode 100755 index 634a4f9..0000000 --- a/scripts/update-dict.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -# Updates the dictionary files defined in extras/dict.json. - -BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -EXTRAS_DIR=${BASE_DIR}/../extras -CONFIG=${EXTRAS_DIR}/dict.json - -for lang in $(jq -r 'keys[]' $CONFIG); do - - echo "- Generating: $lang" - - files=() - for f in $(jq -r ".$lang | if type==\"array\" then .[] else . end" $CONFIG); do - - if [ "${f:0:1}" != "/" ]; then - f="$EXTRAS_DIR/$f" - fi - files+=( "$f" ) - done - - grep -hs ^ ${files[@]} | $BASE_DIR/generate-dict.sh > $EXTRAS_DIR/dict/$lang -done - -echo "Done" From 72a74fcb5a6a442f93ff0e00594e4e60d5dad416 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 13:31:47 +0100 Subject: [PATCH 163/404] build.sh: fixing getopts. --- build.sh | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/build.sh b/build.sh index 27c9fdd..000f124 100755 --- a/build.sh +++ b/build.sh @@ -4,11 +4,11 @@ mkdir build 2> /dev/null pushd build > /dev/null function usage() { - echo "Usage: ${0##*/} [ -h ] [ -t Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]" exit 1 } -options=$(getopt -n "${0##*/}" -o lht: --long disable-threads --long force-ansi -- "$@") +options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,disable-threads,force-ansi" -- "$@") [ $? -eq 0 ] || usage @@ -18,26 +18,26 @@ ONLY_CONFIG=0 ARGS="" while true; do - case "${1}" in - -t) - shift - [[ ! "$1" =~ ^(Debug|Release|RelWithDebInfo|MinSizeRel)$ ]] && { - echo "Incorrect type '$1' provided" - usage - } - ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}" - ;; - --disable-threads) - ARGS="${ARGS} -DUSE_THREADS=OFF" ;; - --force-ansi) - ARGS="${ARGS} -DFORCE_ANSI=ON" ;; - -l) - ARGS="${ARGS} -LH" - ONLY_CONFIG=1 ;; - -h) usage ;; - --) shift - break - ;; + case $1 in + -t|--type) + shift + [[ ! "$1" =~ ^(Debug|Release|RelWithDebInfo|MinSizeRel)$ ]] && { + echo "Incorrect type '$1' provided" + usage + } + ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}" + ;; + --disable-threads) + ARGS="${ARGS} -DUSE_THREADS=OFF" ;; + --force-ansi) + ARGS="${ARGS} -DFORCE_ANSI=ON" ;; + -l) + ARGS="${ARGS} -LH" + ONLY_CONFIG=1 ;; + -h|--help) usage ;; + --) shift + break + ;; esac shift done From 9a0bd26f83a0f4418c17f367c4b04133d01d7d9d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 21:04:14 +0100 Subject: [PATCH 164/404] build.sh: Should not assume that cmake generates a Makefile. use cmake only commands to configure/build. --- build.sh | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/build.sh b/build.sh index 000f124..ae356b0 100755 --- a/build.sh +++ b/build.sh @@ -1,8 +1,5 @@ #!/bin/bash -mkdir build 2> /dev/null -pushd build > /dev/null - function usage() { echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]" exit 1 @@ -42,9 +39,7 @@ while true; do shift done -cmake $ARGS .. +cmake -B build $ARGS . if [ ${ONLY_CONFIG} -eq 0 ]; then - make -B + cmake --build build --clean-first --target fi - -popd > /dev/null From df7a8a3c8cde7d4b0598ca64fd9ccaf1bc0acc98 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 20:28:03 +0100 Subject: [PATCH 165/404] Add CMakeModules/cpack_custom.cmake --- CMakeModules/cpack_custom.cmake | 113 ++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 CMakeModules/cpack_custom.cmake diff --git a/CMakeModules/cpack_custom.cmake b/CMakeModules/cpack_custom.cmake new file mode 100644 index 0000000..91e52e2 --- /dev/null +++ b/CMakeModules/cpack_custom.cmake @@ -0,0 +1,113 @@ +# Custom script to setup cpack properly. + +# -------------------------------- +# System variables +# -------------------------------- + +if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + + # Set CPACK_SYSTEM_NAME, CPACK_SYSTEM_VERSION + # and CPACK_DEBIAN_PACKAGE_ARCHITECTURE correctly for debian based systems. + execute_process(COMMAND lsb_release -is OUTPUT_VARIABLE SYS OUTPUT_STRIP_TRAILING_WHITESPACE) + if (SYS) + string(TOLOWER "${SYS}" CPACK_SYSTEM_NAME ) + + # Set CPACK_SYSTEM_VERSION + execute_process(COMMAND lsb_release -rs OUTPUT_VARIABLE SYS_VER OUTPUT_STRIP_TRAILING_WHITESPACE) + if (SYS_VER) + set( CPACK_SYSTEM_VERSION ${SYS_VER} ) + endif(SYS_VER) + + # Try setting CPACK_DEBIAN_PACKAGE_ARCHITECTURE based on dpkg + if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + execute_process( + COMMAND dpkg --print-architecture + OUTPUT_VARIABLE ARCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ) + + if (ARCH) + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) + endif() + endif() + endif(SYS) + + + # set CPACK_DEBIAN_PACKAGE_ARCHITECTURE to somthing sane by default. + if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) + + # check CMAKE_SIZEOF_VOID_P to know if we are 32 or 64 bit. + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set( ARCH "amd64" ) + else() + set( ARCH "i386" ) + endif() + + set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) + endif() + +endif() + +# CPACK_SYSTEM_NAME defaults are weird. so we set good default here. +if (NOT CPACK_SYSTEM_NAME) + set (CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}) +endif() + +# CPACK_SYSTEM_VERSION does not exist in original CPack. so we set a default here. +if (NOT CPACK_SYSTEM_VERSION) + set (CPACK_SYSTEM_VERSION ${CMAKE_SYSTEM_VERSION}) +endif() + + +# -------------------------------- +# Package variables +# -------------------------------- + + +# Forward some variables not handled by CPack. +if (NOT CPACK_PACKAGE_CONTACT AND PROJECT_MAINTAINER) + set( CPACK_PACKAGE_CONTACT ${PROJECT_MAINTAINER} ) +endif() + +# Set "correct" filename that also include system version. +if (CPACK_SYSTEM_VERSION) + set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}" ) +endif() + + +# .deb specific + +# Set release version default 1. +set( CPACK_DEBIAN_PACKAGE_RELEASE "1" CACHE STRING "Debian package release version" ) + +# For some reason CPackDeb does not honor CPACK_PACKAGE_HOMEPAGE_URL (that is set correctly) +# if CPACK_DEBIAN_PACKAGE_HOMEPAGE (that the docs says it should.) +# So we have to do it here. +set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" ) + +# Set "correct" filename that also include system version and architecture. +set( CPACK_DEBIAN_FILE_NAME + "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb" +) + + +# -------------------------------- +# Generator default +# -------------------------------- + + +# Defult to gzip tar on unix. zip otherwise. +if (NOT CPACK_GENERATOR) + if (UNIX) + set( CPACK_GENERATOR "TGZ" ) + else() + set( CPACK_GENERATOR "ZIP" ) + endif() +endif() + + +# -------------------------------- +# Include original CPack module. +# -------------------------------- + +include( CPack ) From f601824e025336041429025d6158348698ebc6e1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 20:31:41 +0100 Subject: [PATCH 166/404] CMake: create packages with CPack and cpack_custom module. --- CMakeLists.txt | 10 ++++++ CMakeModules/package.cmake | 65 -------------------------------------- cli/CMakeLists.txt | 2 -- cli/debian_control.in | 9 ------ 4 files changed, 10 insertions(+), 76 deletions(-) delete mode 100644 CMakeModules/package.cmake delete mode 100644 cli/debian_control.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 9633d16..d714cab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,3 +51,13 @@ add_subdirectory( docs ) install(FILES README.md LICENSE LICENSE.bitcoin DESTINATION ${CMAKE_INSTALL_SHAREDIR}) + +# -------------------------------- +# Package +# -------------------------------- + +set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) +set( CPACK_DEBIAN_PACKAGE_SECTION "misc" ) +set( CPACK_DEBIAN_PACKAGE_DEPENDS "libssl1.1, libc6" ) + +include( cpack_custom ) diff --git a/CMakeModules/package.cmake b/CMakeModules/package.cmake deleted file mode 100644 index a5ba51f..0000000 --- a/CMakeModules/package.cmake +++ /dev/null @@ -1,65 +0,0 @@ - -# -------------------------------- -# Info -# -------------------------------- -set( PACKAGE_NAME ${PROJECT_NAME} ) -set( PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION} ) -set( PACKAGE_VERSION "${PROJECT_VERSION}" ) -set( PACKAGE_HOMEPAGE_URL ${PROJECT_HOMEPAGE_URL} ) -set( PACKAGE_MAINTAINER ${PROJECT_MAINTAINER}) - -set( PACKAGE_PLATFORM "x86" ) -if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set( PACKAGE_PLATFORM "${PACKAGE_PLATFORM}_64" ) -endif() - -# -------------------------------- -# Debian script -# -------------------------------- - -if (UNIX) # Only include in bash environments. - - execute_process( - COMMAND lsb_release -rs - OUTPUT_VARIABLE UBUNTU_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - - # Debian uses different names for 32 and 64 bit. - if (PACKAGE_PLATFORM EQUAL "x86") - set( PACKAGE_DEB_PLATFORM "i386" ) - else() - set( PACKAGE_DEB_PLATFORM "amd64" ) - endif() - - set( PACKAGE_DEB_RELEASE 1 CACHE STRING "Debian package release number") - set( PACKAGE_DEB_VERSION ${PACKAGE_VERSION}-${PACKAGE_DEB_RELEASE} ) - set( PACKAGE_DEB_FILENAME ${PACKAGE_NAME}_${PACKAGE_DEB_VERSION}-ubuntu-${UBUNTU_VERSION}_${PACKAGE_DEB_PLATFORM}.deb ) - set( DEB_ROOT "${CMAKE_CURRENT_BINARY_DIR}/debroot" ) - - configure_file(debian_control.in ${DEB_ROOT}/DEBIAN/control @ONLY) - - add_custom_target(package_deb - COMMAND ${CMAKE_COMMAND} --install . --prefix "${DEB_ROOT}${CMAKE_INSTALL_PREFIX}" - COMMAND fakeroot dpkg-deb --build ${DEB_ROOT} ${PACKAGE_DEB_FILENAME} > /dev/null - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - - add_dependencies(package_deb ${PROGRAM_EXE}) -endif (UNIX) - -# -------------------------------- -# Windows -# -------------------------------- -if (WIN32) - - set ( PACKAGE_FILENAME "${PACKAGE_NAME}_${PACKAGE_VERSION}-windows-${PACKAGE_PLATFORM}" ) - - add_custom_target(package - COMMAND ${CMAKE_COMMAND} --install . --prefix "${PACKAGE_FILENAME}" - COMMAND ${CMAKE_COMMAND} -E tar c "${PACKAGE_FILENAME}.zip" --format=zip "${PACKAGE_FILENAME}" - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - ) - - add_dependencies(package ${PROGRAM_EXE}) -endif (WIN32) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 9d9a555..469c6c5 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -79,5 +79,3 @@ if (WIN32) # We also need to copy libcrypto dll during install install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) endif (WIN32) - -include( package ) diff --git a/cli/debian_control.in b/cli/debian_control.in deleted file mode 100644 index e8f3f23..0000000 --- a/cli/debian_control.in +++ /dev/null @@ -1,9 +0,0 @@ -Package: @PACKAGE_NAME@ -Version: @PACKAGE_DEB_VERSION@ -Description: @PACKAGE_DESCRIPTION@ -Section: misc -Priority: optional -Architecture: @PACKAGE_DEB_PLATFORM@ -Homepage: @PACKAGE_HOMEPAGE_URL@ -Maintainer: @PACKAGE_MAINTAINER@ -Depends: libssl1.1, libc6 From 006fb9478681852f1d931ee436b687099a78129f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 21:05:02 +0100 Subject: [PATCH 167/404] build.sh: Adding pkg-type option. --- build.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index ae356b0..05ef766 100755 --- a/build.sh +++ b/build.sh @@ -1,11 +1,11 @@ #!/bin/bash function usage() { - echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" exit 1 } -options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,disable-threads,force-ansi" -- "$@") +options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,pkg-type:,disable-threads,force-ansi" -- "$@") [ $? -eq 0 ] || usage @@ -24,6 +24,15 @@ while true; do } ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}" ;; + --pkg-type) + shift + [[ ! "$1" =~ ^(deb|zip|tgz)$ ]] && { + echo "Incorrect package type '$1' provided" + usage + } + TARGET="package" + ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}" + ;; --disable-threads) ARGS="${ARGS} -DUSE_THREADS=OFF" ;; --force-ansi) @@ -41,5 +50,5 @@ done cmake -B build $ARGS . if [ ${ONLY_CONFIG} -eq 0 ]; then - cmake --build build --clean-first --target + cmake --build build --clean-first --target ${TARGET} fi From c3640c034fd47827c7d523025ab5b0a89b4deb7a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 14 Mar 2020 21:07:13 +0100 Subject: [PATCH 168/404] .github/workflows/package.yml: update to trigger CPack for building packages. --- .github/workflows/package.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 06e8de3..fecd67b 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -15,13 +15,10 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Build - run: ./build.sh - - name: Package id: package run: | - cmake --build build --config Release --target package_deb + ./build.sh -t Release --pkg-type deb FILE=$(ls build/*.deb | head -1) echo "::set-output name=filename::$FILE" echo "::set-output name=name::$(basename $FILE)" From 1075481b2ea74ba1faf98b0ef6d3289110e0ea83 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 16 Mar 2020 14:10:10 +0100 Subject: [PATCH 169/404] move cli/src to src and combine all CMakeLists.txt --- CMakeLists.txt | 91 ++++++++++++++++++++++-- cli/CMakeLists.txt | 81 --------------------- docs/CMakeLists.txt | 7 -- {cli/src => src}/benchmark.cpp | 0 {cli/src => src}/benchmark.h | 0 {cli/src => src}/config.h.in | 0 {cli/src => src}/console.cpp | 0 {cli/src => src}/console.h | 0 {cli/src => src}/console_ansi.cpp | 0 {cli/src => src}/console_win32.cpp | 0 {cli/src => src}/core/dictionary.cpp | 0 {cli/src => src}/core/dictionary.h | 0 {cli/src => src}/core/file.cpp | 0 {cli/src => src}/core/file.h | 0 {cli/src => src}/core/isatty.cpp | 0 {cli/src => src}/core/isatty.h | 0 {cli/src => src}/core/string.cpp | 0 {cli/src => src}/core/string.h | 0 {cli/src => src}/crypto/WIF.cpp | 0 {cli/src => src}/crypto/WIF.h | 0 {cli/src => src}/crypto/base58.cpp | 0 {cli/src => src}/crypto/base58.h | 0 {cli/src => src}/crypto/checksum.h | 0 {cli/src => src}/crypto/ec.h | 0 {cli/src => src}/crypto/hash.h | 0 {cli/src => src}/crypto/openssl/ec.cpp | 0 {cli/src => src}/crypto/openssl/hash.cpp | 0 {cli/src => src}/crypto/types.h | 0 {cli/src => src}/key_search.cpp | 0 {cli/src => src}/key_search.h | 0 {cli/src => src}/key_search_helpers.cpp | 0 {cli/src => src}/key_search_helpers.h | 0 {cli/src => src}/key_search_mt.cpp | 0 {cli/src => src}/main.cpp | 0 34 files changed, 87 insertions(+), 92 deletions(-) delete mode 100644 cli/CMakeLists.txt delete mode 100644 docs/CMakeLists.txt rename {cli/src => src}/benchmark.cpp (100%) rename {cli/src => src}/benchmark.h (100%) rename {cli/src => src}/config.h.in (100%) rename {cli/src => src}/console.cpp (100%) rename {cli/src => src}/console.h (100%) rename {cli/src => src}/console_ansi.cpp (100%) rename {cli/src => src}/console_win32.cpp (100%) rename {cli/src => src}/core/dictionary.cpp (100%) rename {cli/src => src}/core/dictionary.h (100%) rename {cli/src => src}/core/file.cpp (100%) rename {cli/src => src}/core/file.h (100%) rename {cli/src => src}/core/isatty.cpp (100%) rename {cli/src => src}/core/isatty.h (100%) rename {cli/src => src}/core/string.cpp (100%) rename {cli/src => src}/core/string.h (100%) rename {cli/src => src}/crypto/WIF.cpp (100%) rename {cli/src => src}/crypto/WIF.h (100%) rename {cli/src => src}/crypto/base58.cpp (100%) rename {cli/src => src}/crypto/base58.h (100%) rename {cli/src => src}/crypto/checksum.h (100%) rename {cli/src => src}/crypto/ec.h (100%) rename {cli/src => src}/crypto/hash.h (100%) rename {cli/src => src}/crypto/openssl/ec.cpp (100%) rename {cli/src => src}/crypto/openssl/hash.cpp (100%) rename {cli/src => src}/crypto/types.h (100%) rename {cli/src => src}/key_search.cpp (100%) rename {cli/src => src}/key_search.h (100%) rename {cli/src => src}/key_search_helpers.cpp (100%) rename {cli/src => src}/key_search_helpers.h (100%) rename {cli/src => src}/key_search_mt.cpp (100%) rename {cli/src => src}/main.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index d714cab..5192dfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,19 +39,102 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endif() # -------------------------------- -# Additional project dirs +# Program # -------------------------------- -add_subdirectory( cli ) -add_subdirectory( docs ) +set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) + +set (PROGRAM_SOURCE + src/core/file.cpp + src/core/dictionary.cpp + src/core/string.cpp + src/core/isatty.cpp + src/crypto/base58.cpp + src/crypto/WIF.cpp + src/console.cpp + src/key_search.cpp + src/key_search_helpers.cpp + src/benchmark.cpp + src/main.cpp +) + +if (WIN32 AND NOT FORCE_ANSI) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) +else() + # *nix should have ansi support. + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) +endif() + +# Libraries +find_package(OpenSSL 1.1 REQUIRED) +set (PROGRAM_SOURCE ${PROGRAM_SOURCE} + src/crypto/openssl/ec.cpp + src/crypto/openssl/hash.cpp +) + +if (USE_THREADS) + find_package(Threads) + if (Threads_FOUND) + # Add preprocessor flag + add_definitions( "-DHAVE_THREADS=1" ) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) + endif (Threads_FOUND) +endif (USE_THREADS) + +# Project config file +configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) +include_directories(${PROJECT_BINARY_DIR}) + +# Include OpenSSL headers +include_directories( ${OPENSSL_INCLUDE_DIR} ) + +add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) + +target_link_libraries( ${PROGRAM_EXE} + PUBLIC + ${OPENSSL_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} +) # -------------------------------- -# Additional install files +# Install # -------------------------------- +install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +# Win32 specific. +if (WIN32) + if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64) + else() + set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1) + endif() + set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll ) + + # Need to copy libcrypto dll to binary folder. + add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + ${OPENSSL_LIBCRYPTO_DLL} + ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} + ) + + # We also need to copy libcrypto dll during install + install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) +endif (WIN32) + +# Readme and license install(FILES README.md LICENSE LICENSE.bitcoin DESTINATION ${CMAKE_INSTALL_SHAREDIR}) +# Documentation + +if (UNIX) + configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) + + install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 + DESTINATION ${CMAKE_INSTALL_MANDIR}) +endif (UNIX) + # -------------------------------- # Package # -------------------------------- diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt deleted file mode 100644 index 469c6c5..0000000 --- a/cli/CMakeLists.txt +++ /dev/null @@ -1,81 +0,0 @@ -cmake_minimum_required(VERSION 3.15) - -# -------------------------------- -# Program -# -------------------------------- - -set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) - -set (PROGRAM_SOURCE - src/core/file.cpp - src/core/dictionary.cpp - src/core/string.cpp - src/core/isatty.cpp - src/crypto/base58.cpp - src/crypto/WIF.cpp - src/console.cpp - src/key_search.cpp - src/key_search_helpers.cpp - src/benchmark.cpp - src/main.cpp -) - -if (WIN32 AND NOT FORCE_ANSI) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) -else() - # *nix should have ansi support. - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) -endif() - -# Libraries -find_package(OpenSSL 1.1 REQUIRED) -set (PROGRAM_SOURCE ${PROGRAM_SOURCE} - src/crypto/openssl/ec.cpp - src/crypto/openssl/hash.cpp -) - -if (USE_THREADS) - find_package(Threads) - if (Threads_FOUND) - # Add preprocessor flag - add_definitions( "-DHAVE_THREADS=1" ) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) - endif (Threads_FOUND) -endif (USE_THREADS) - -# Project config file -configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) -include_directories(${PROJECT_BINARY_DIR}) - -# Include OpenSSL headers -include_directories( ${OPENSSL_INCLUDE_DIR} ) - -add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) - -target_link_libraries( ${PROGRAM_EXE} - PUBLIC - ${OPENSSL_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) - -install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - -# Win32 specific. -if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64) - else() - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1) - endif() - set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll ) - - # Need to copy libcrypto dll to binary folder. - add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${OPENSSL_LIBCRYPTO_DLL} - ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} - ) - - # We also need to copy libcrypto dll during install - install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif (WIN32) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt deleted file mode 100644 index 2ca518c..0000000 --- a/docs/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ - -if (UNIX) - configure_file( eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) - - install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 - DESTINATION ${CMAKE_INSTALL_MANDIR}) -endif (UNIX) diff --git a/cli/src/benchmark.cpp b/src/benchmark.cpp similarity index 100% rename from cli/src/benchmark.cpp rename to src/benchmark.cpp diff --git a/cli/src/benchmark.h b/src/benchmark.h similarity index 100% rename from cli/src/benchmark.h rename to src/benchmark.h diff --git a/cli/src/config.h.in b/src/config.h.in similarity index 100% rename from cli/src/config.h.in rename to src/config.h.in diff --git a/cli/src/console.cpp b/src/console.cpp similarity index 100% rename from cli/src/console.cpp rename to src/console.cpp diff --git a/cli/src/console.h b/src/console.h similarity index 100% rename from cli/src/console.h rename to src/console.h diff --git a/cli/src/console_ansi.cpp b/src/console_ansi.cpp similarity index 100% rename from cli/src/console_ansi.cpp rename to src/console_ansi.cpp diff --git a/cli/src/console_win32.cpp b/src/console_win32.cpp similarity index 100% rename from cli/src/console_win32.cpp rename to src/console_win32.cpp diff --git a/cli/src/core/dictionary.cpp b/src/core/dictionary.cpp similarity index 100% rename from cli/src/core/dictionary.cpp rename to src/core/dictionary.cpp diff --git a/cli/src/core/dictionary.h b/src/core/dictionary.h similarity index 100% rename from cli/src/core/dictionary.h rename to src/core/dictionary.h diff --git a/cli/src/core/file.cpp b/src/core/file.cpp similarity index 100% rename from cli/src/core/file.cpp rename to src/core/file.cpp diff --git a/cli/src/core/file.h b/src/core/file.h similarity index 100% rename from cli/src/core/file.h rename to src/core/file.h diff --git a/cli/src/core/isatty.cpp b/src/core/isatty.cpp similarity index 100% rename from cli/src/core/isatty.cpp rename to src/core/isatty.cpp diff --git a/cli/src/core/isatty.h b/src/core/isatty.h similarity index 100% rename from cli/src/core/isatty.h rename to src/core/isatty.h diff --git a/cli/src/core/string.cpp b/src/core/string.cpp similarity index 100% rename from cli/src/core/string.cpp rename to src/core/string.cpp diff --git a/cli/src/core/string.h b/src/core/string.h similarity index 100% rename from cli/src/core/string.h rename to src/core/string.h diff --git a/cli/src/crypto/WIF.cpp b/src/crypto/WIF.cpp similarity index 100% rename from cli/src/crypto/WIF.cpp rename to src/crypto/WIF.cpp diff --git a/cli/src/crypto/WIF.h b/src/crypto/WIF.h similarity index 100% rename from cli/src/crypto/WIF.h rename to src/crypto/WIF.h diff --git a/cli/src/crypto/base58.cpp b/src/crypto/base58.cpp similarity index 100% rename from cli/src/crypto/base58.cpp rename to src/crypto/base58.cpp diff --git a/cli/src/crypto/base58.h b/src/crypto/base58.h similarity index 100% rename from cli/src/crypto/base58.h rename to src/crypto/base58.h diff --git a/cli/src/crypto/checksum.h b/src/crypto/checksum.h similarity index 100% rename from cli/src/crypto/checksum.h rename to src/crypto/checksum.h diff --git a/cli/src/crypto/ec.h b/src/crypto/ec.h similarity index 100% rename from cli/src/crypto/ec.h rename to src/crypto/ec.h diff --git a/cli/src/crypto/hash.h b/src/crypto/hash.h similarity index 100% rename from cli/src/crypto/hash.h rename to src/crypto/hash.h diff --git a/cli/src/crypto/openssl/ec.cpp b/src/crypto/openssl/ec.cpp similarity index 100% rename from cli/src/crypto/openssl/ec.cpp rename to src/crypto/openssl/ec.cpp diff --git a/cli/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp similarity index 100% rename from cli/src/crypto/openssl/hash.cpp rename to src/crypto/openssl/hash.cpp diff --git a/cli/src/crypto/types.h b/src/crypto/types.h similarity index 100% rename from cli/src/crypto/types.h rename to src/crypto/types.h diff --git a/cli/src/key_search.cpp b/src/key_search.cpp similarity index 100% rename from cli/src/key_search.cpp rename to src/key_search.cpp diff --git a/cli/src/key_search.h b/src/key_search.h similarity index 100% rename from cli/src/key_search.h rename to src/key_search.h diff --git a/cli/src/key_search_helpers.cpp b/src/key_search_helpers.cpp similarity index 100% rename from cli/src/key_search_helpers.cpp rename to src/key_search_helpers.cpp diff --git a/cli/src/key_search_helpers.h b/src/key_search_helpers.h similarity index 100% rename from cli/src/key_search_helpers.h rename to src/key_search_helpers.h diff --git a/cli/src/key_search_mt.cpp b/src/key_search_mt.cpp similarity index 100% rename from cli/src/key_search_mt.cpp rename to src/key_search_mt.cpp diff --git a/cli/src/main.cpp b/src/main.cpp similarity index 100% rename from cli/src/main.cpp rename to src/main.cpp From 51081aaf3cabe694396196e4e8f5db18cc9e6885 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 16 Mar 2020 14:29:51 +0100 Subject: [PATCH 170/404] CMakeModules/cpack_custom.cmake: set CPACK_SYSTEM_ARCH and append to CPACK_PACKAGE_FILE_NAME --- CMakeModules/cpack_custom.cmake | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeModules/cpack_custom.cmake b/CMakeModules/cpack_custom.cmake index 91e52e2..650fd53 100644 --- a/CMakeModules/cpack_custom.cmake +++ b/CMakeModules/cpack_custom.cmake @@ -4,6 +4,12 @@ # System variables # -------------------------------- +# check CMAKE_SIZEOF_VOID_P to know if we are 32 or 64 bit. +set( CPACK_SYSTEM_ARCH "x86" ) +if (CMAKE_SIZEOF_VOID_P EQUAL 8) + set( CPACK_SYSTEM_ARCH "${CPACK_SYSTEM_ARCH}_64" ) +endif() + if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # Set CPACK_SYSTEM_NAME, CPACK_SYSTEM_VERSION @@ -36,11 +42,11 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") # set CPACK_DEBIAN_PACKAGE_ARCHITECTURE to somthing sane by default. if (NOT CPACK_DEBIAN_PACKAGE_ARCHITECTURE) - # check CMAKE_SIZEOF_VOID_P to know if we are 32 or 64 bit. - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set( ARCH "amd64" ) - else() + # debian uses different names for 32/64 bit. + if (CPACK_SYSTEM_ARCH STREQUAL "x86") set( ARCH "i386" ) + else() + set( ARCH "amd64" ) endif() set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE ${ARCH}) @@ -71,7 +77,7 @@ endif() # Set "correct" filename that also include system version. if (CPACK_SYSTEM_VERSION) - set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}" ) + set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_SYSTEM_ARCH}" ) endif() From ac4e2f9e9d7e02d74d32f86486e92ff27f3ca7b0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 16 Mar 2020 14:31:27 +0100 Subject: [PATCH 171/404] CMakeModules/cpack_custom.cmake: include else case for CPACK_PACKAGE_FILE_NAME if CPACK_SYSTEM_VERSION is not set. --- CMakeModules/cpack_custom.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeModules/cpack_custom.cmake b/CMakeModules/cpack_custom.cmake index 650fd53..6a23457 100644 --- a/CMakeModules/cpack_custom.cmake +++ b/CMakeModules/cpack_custom.cmake @@ -78,6 +78,8 @@ endif() # Set "correct" filename that also include system version. if (CPACK_SYSTEM_VERSION) set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_SYSTEM_ARCH}" ) +else() + set( CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}_${CPACK_SYSTEM_NAME}_${CPACK_SYSTEM_ARCH}" ) endif() From 6bf611f7d091070d912110339d3324ac46802931 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 19 Mar 2020 07:25:10 +0100 Subject: [PATCH 172/404] src/key_search.h: include the right file. --- src/key_search.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/key_search.h b/src/key_search.h index da26772..39cee28 100644 --- a/src/key_search.h +++ b/src/key_search.h @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_KEY_SEARCH_H #include "core/dictionary.h" -#include "string.h" +#include "core/string.h" namespace eoskeygen { From 8035e3233cda3d3fe8c9ebac985e7b1d90e2680c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 19 Mar 2020 08:11:58 +0100 Subject: [PATCH 173/404] move some of the headers that should be included in the library to "include/eoskeygen" folder. --- CMakeLists.txt | 2 ++ {src => include/eoskeygen}/core/dictionary.h | 0 {src => include/eoskeygen}/core/string.h | 0 {src => include/eoskeygen}/crypto/WIF.h | 2 +- {src => include/eoskeygen}/crypto/base58.h | 0 {src => include/eoskeygen}/crypto/checksum.h | 2 +- {src => include/eoskeygen}/crypto/ec.h | 2 +- {src => include/eoskeygen}/crypto/hash.h | 2 +- {src => include/eoskeygen}/crypto/types.h | 0 {src => include/eoskeygen}/key_search.h | 4 ++-- src/benchmark.cpp | 2 +- src/core/dictionary.cpp | 4 ++-- src/core/file.h | 2 +- src/core/string.cpp | 4 ++-- src/crypto/WIF.cpp | 6 +++--- src/crypto/base58.cpp | 2 +- src/crypto/openssl/ec.cpp | 2 +- src/crypto/openssl/hash.cpp | 2 +- src/key_search.cpp | 4 ++-- src/key_search_helpers.cpp | 4 ++-- src/key_search_helpers.h | 4 ++-- src/key_search_mt.cpp | 4 ++-- src/main.cpp | 14 +++++++------- 23 files changed, 35 insertions(+), 33 deletions(-) rename {src => include/eoskeygen}/core/dictionary.h (100%) rename {src => include/eoskeygen}/core/string.h (100%) rename {src => include/eoskeygen}/crypto/WIF.h (97%) rename {src => include/eoskeygen}/crypto/base58.h (100%) rename {src => include/eoskeygen}/crypto/checksum.h (98%) rename {src => include/eoskeygen}/crypto/ec.h (97%) rename {src => include/eoskeygen}/crypto/hash.h (97%) rename {src => include/eoskeygen}/crypto/types.h (100%) rename {src => include/eoskeygen}/key_search.h (96%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5192dfb..bfdeb95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -88,6 +88,8 @@ include_directories(${PROJECT_BINARY_DIR}) # Include OpenSSL headers include_directories( ${OPENSSL_INCLUDE_DIR} ) +include_directories( include ) + add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) target_link_libraries( ${PROGRAM_EXE} diff --git a/src/core/dictionary.h b/include/eoskeygen/core/dictionary.h similarity index 100% rename from src/core/dictionary.h rename to include/eoskeygen/core/dictionary.h diff --git a/src/core/string.h b/include/eoskeygen/core/string.h similarity index 100% rename from src/core/string.h rename to include/eoskeygen/core/string.h diff --git a/src/crypto/WIF.h b/include/eoskeygen/crypto/WIF.h similarity index 97% rename from src/crypto/WIF.h rename to include/eoskeygen/crypto/WIF.h index 14a1855..5572ce3 100644 --- a/src/crypto/WIF.h +++ b/include/eoskeygen/crypto/WIF.h @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_CRYPTO_WIF_H #include -#include "types.h" +#include namespace eoskeygen { diff --git a/src/crypto/base58.h b/include/eoskeygen/crypto/base58.h similarity index 100% rename from src/crypto/base58.h rename to include/eoskeygen/crypto/base58.h diff --git a/src/crypto/checksum.h b/include/eoskeygen/crypto/checksum.h similarity index 98% rename from src/crypto/checksum.h rename to include/eoskeygen/crypto/checksum.h index a5f48f8..85ad8c4 100644 --- a/src/crypto/checksum.h +++ b/include/eoskeygen/crypto/checksum.h @@ -27,7 +27,7 @@ #include #include #include -#include "hash.h" +#include namespace eoskeygen { diff --git a/src/crypto/ec.h b/include/eoskeygen/crypto/ec.h similarity index 97% rename from src/crypto/ec.h rename to include/eoskeygen/crypto/ec.h index e8558dd..7fa9af4 100644 --- a/src/crypto/ec.h +++ b/include/eoskeygen/crypto/ec.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_CRYPTO_EC_H #define EOSIOKEYGEN_CRYPTO_EC_H -#include "types.h" +#include namespace eoskeygen { diff --git a/src/crypto/hash.h b/include/eoskeygen/crypto/hash.h similarity index 97% rename from src/crypto/hash.h rename to include/eoskeygen/crypto/hash.h index 783ba57..7219e22 100644 --- a/src/crypto/hash.h +++ b/include/eoskeygen/crypto/hash.h @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_CRYPTO_HASH_H #include -#include "types.h" +#include namespace eoskeygen { diff --git a/src/crypto/types.h b/include/eoskeygen/crypto/types.h similarity index 100% rename from src/crypto/types.h rename to include/eoskeygen/crypto/types.h diff --git a/src/key_search.h b/include/eoskeygen/key_search.h similarity index 96% rename from src/key_search.h rename to include/eoskeygen/key_search.h index 39cee28..78c7f6d 100644 --- a/src/key_search.h +++ b/include/eoskeygen/key_search.h @@ -24,8 +24,8 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_H #define EOSIOKEYGEN_KEY_SEARCH_H -#include "core/dictionary.h" -#include "core/string.h" +#include +#include namespace eoskeygen { diff --git a/src/benchmark.cpp b/src/benchmark.cpp index bc8e69f..43d8b35 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "crypto/ec.h" +#include #include "benchmark.h" using std::chrono::steady_clock; diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index ffa8b89..6aebcb9 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -3,9 +3,9 @@ #include #include #include +#include +#include #include "file.h" -#include "string.h" -#include "dictionary.h" namespace eoskeygen { diff --git a/src/core/file.h b/src/core/file.h index 72cb5ab..2167a6b 100644 --- a/src/core/file.h +++ b/src/core/file.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_CORE_FILE_H #define EOSIOKEYGEN_CORE_FILE_H -#include "string.h" +#include #include namespace eoskeygen { diff --git a/src/core/string.cpp b/src/core/string.cpp index f9f0da6..aeb2a7d 100644 --- a/src/core/string.cpp +++ b/src/core/string.cpp @@ -24,8 +24,8 @@ #include #include #include -#include "../crypto/base58.h" -#include "string.h" +#include +#include namespace eoskeygen { diff --git a/src/crypto/WIF.cpp b/src/crypto/WIF.cpp index d31aff4..a86a207 100644 --- a/src/crypto/WIF.cpp +++ b/src/crypto/WIF.cpp @@ -23,9 +23,9 @@ */ #include #include -#include "base58.h" -#include "checksum.h" -#include "WIF.h" +#include +#include +#include namespace eoskeygen { diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp index a1d112f..47581f5 100644 --- a/src/crypto/base58.cpp +++ b/src/crypto/base58.cpp @@ -27,7 +27,7 @@ #include #include #include -#include "base58.h" +#include namespace eoskeygen { diff --git a/src/crypto/openssl/ec.cpp b/src/crypto/openssl/ec.cpp index 4b43a70..9fc5431 100644 --- a/src/crypto/openssl/ec.cpp +++ b/src/crypto/openssl/ec.cpp @@ -24,7 +24,7 @@ #include #include #include -#include "../ec.h" +#include namespace eoskeygen { diff --git a/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp index 424c46a..f79abc2 100644 --- a/src/crypto/openssl/hash.cpp +++ b/src/crypto/openssl/hash.cpp @@ -23,7 +23,7 @@ */ #include #include -#include "../hash.h" +#include namespace eoskeygen { diff --git a/src/key_search.cpp b/src/key_search.cpp index 7c99a94..a40dbce 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -22,9 +22,9 @@ * SOFTWARE. */ #include -#include "crypto/ec.h" +#include +#include #include "key_search_helpers.h" -#include "key_search.h" namespace eoskeygen { diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 661b6e0..0ea5608 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ #include -#include "core/dictionary.h" -#include "crypto/WIF.h" +#include +#include #include "console.h" #include "key_search_helpers.h" diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 9b2862c..2340897 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -24,8 +24,8 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H -#include "core/string.h" -#include "crypto/types.h" +#include +#include namespace eoskeygen { diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 35fcbfe..56c2907 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -25,9 +25,9 @@ #include #include #include -#include "crypto/ec.h" +#include +#include #include "key_search_helpers.h" -#include "key_search.h" namespace eoskeygen { diff --git a/src/main.cpp b/src/main.cpp index 7fb38ee..bca286c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,16 +26,16 @@ #endif /* HAVE_THREADS */ #include #include -#include "config.h" +#include +#include +#include +#include +#include +#include #include "core/file.h" -#include "core/dictionary.h" -#include "core/string.h" -#include "crypto/base58.h" -#include "crypto/ec.h" -#include "crypto/WIF.h" #include "console.h" -#include "key_search.h" #include "benchmark.h" +#include "config.h" // Command line options. bool option_l33t = false; From a417390bb7035eec0d15a616e47302e8c46eecc4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 19 Mar 2020 15:43:49 +0100 Subject: [PATCH 174/404] refactor struct key_search_result from src/key_search_helpers.h to include/eoskeygen/key_search.h --- include/eoskeygen/key_search.h | 11 +++++++++++ src/key_search.cpp | 22 ++++++++++++++++++++-- src/key_search_helpers.cpp | 19 +------------------ src/key_search_helpers.h | 12 ++---------- src/key_search_mt.cpp | 4 ++-- 5 files changed, 36 insertions(+), 32 deletions(-) diff --git a/include/eoskeygen/key_search.h b/include/eoskeygen/key_search.h index 78c7f6d..19a385d 100644 --- a/include/eoskeygen/key_search.h +++ b/include/eoskeygen/key_search.h @@ -31,6 +31,13 @@ namespace eoskeygen { class KeySearch { +public : + + struct result { + size_t pos; // position where the word was found. + size_t len; // the length of the word. + }; + public : // Add a word to search for. void addWord(const std::string& str); @@ -56,6 +63,10 @@ public : protected : + // Check if any word in appears in 's public key. + // returns true if a word was found (stored in ), false otherwise. + bool _contains_word(const struct ec_keypair* key, struct result& result); + #ifdef HAVE_THREADS void _thr_proc(); diff --git a/src/key_search.cpp b/src/key_search.cpp index a40dbce..8adfc2d 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -23,6 +23,7 @@ */ #include #include +#include #include #include "key_search_helpers.h" @@ -63,9 +64,9 @@ void KeySearch::_search_linear(size_t n) { struct ec_keypair pair; while (count < n) { - struct key_result res; + struct result res; ec_generate_key(&pair); - if (key_contains_word(&pair, m_words, &res)) { + if (_contains_word(&pair, res)) { key_search_result(&pair, &res, m_dict); count++; } @@ -85,4 +86,21 @@ void KeySearch::find(size_t num_results) { _search_linear(num_results); } +bool KeySearch::_contains_word(const struct ec_keypair* key, struct result& result) { + + // skip first 3 chars, as those are always "EOS" + std::string pubstr = wif_pub_encode(key->pub).substr(3); + strtolower(pubstr); + + for(auto const& w: m_words) { + size_t p = pubstr.find(w); + if (p != std::string::npos) { + result.pos = p + 3; + result.len = w.length(); + return true; + } + } + return false; +} + } // namespace eoskeygen diff --git a/src/key_search_helpers.cpp b/src/key_search_helpers.cpp index 0ea5608..124d014 100644 --- a/src/key_search_helpers.cpp +++ b/src/key_search_helpers.cpp @@ -37,7 +37,7 @@ static size_t highlight(console::Color color, const std::string& str, size_t pos return len; } -void key_search_result(const struct ec_keypair* key, const struct key_result* result, const Dictionary& dict) { +void key_search_result(const struct ec_keypair* key, const struct KeySearch::result* result, const Dictionary& dict) { std::string pub = wif_pub_encode(key->pub); Dictionary::search_result_t dict_res = dict.search(pub); @@ -66,21 +66,4 @@ void key_search_result(const struct ec_keypair* key, const struct key_result* re << "Private: " << wif_priv_encode(key->secret) << std::endl; } -bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result) { - - // skip first 3 chars, as those are always "EOS" - std::string pubstr = wif_pub_encode(key->pub).substr(3); - strtolower(pubstr); - - for(auto const& w: word_list) { - size_t p = pubstr.find(w); - if (p != std::string::npos) { - result->pos = p + 3; - result->len = w.length(); - return true; - } - } - return false; -} - } // namespace eoskeygen diff --git a/src/key_search_helpers.h b/src/key_search_helpers.h index 2340897..d3dcf0d 100644 --- a/src/key_search_helpers.h +++ b/src/key_search_helpers.h @@ -26,21 +26,13 @@ #include #include +#include namespace eoskeygen { class Dictionary; -struct key_result { - size_t pos; // position where the word was found. - size_t len; // the length of the word. -}; - -void key_search_result(const struct ec_keypair* key, const struct key_result* result, const Dictionary& dict); - -// Check if any word in appears in 's public key. -// returns true if a word was found (stored in ), false otherwise. -bool key_contains_word(const struct ec_keypair* key, const strlist_t& word_list, struct key_result *result); +void key_search_result(const struct ec_keypair* key, const struct KeySearch::result* result, const Dictionary& dict); } // namespace eoskeygen diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 56c2907..1310caa 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -46,10 +46,10 @@ void KeySearch::_thr_proc() { struct ec_keypair pair; while (g_count < g_max) { - struct key_result res; + struct result res; ec_generate_key(&pair); - if (key_contains_word(&pair, m_words, &res)) { + if (_contains_word(&pair, res)) { // Guard output with mutex, so we don't get // interrupted mid write and can write to g_count safely. From d9634f334b2f6ce5eee54e09bdabf3e0455e5da9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 19 Mar 2020 18:12:33 +0100 Subject: [PATCH 175/404] Decouple key_search_result() and KeySearch class with an interface. --- CMakeLists.txt | 2 +- include/eoskeygen/key_search.h | 11 ++--- include/eoskeygen/key_search_result.h | 40 +++++++++++++++++++ ..._helpers.cpp => cli_key_search_result.cpp} | 17 +++++--- ...arch_helpers.h => cli_key_search_result.h} | 13 +++++- src/key_search.cpp | 14 +++---- src/key_search_mt.cpp | 8 ++-- src/main.cpp | 4 +- 8 files changed, 84 insertions(+), 25 deletions(-) create mode 100644 include/eoskeygen/key_search_result.h rename src/{key_search_helpers.cpp => cli_key_search_result.cpp} (81%) rename src/{key_search_helpers.h => cli_key_search_result.h} (83%) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfdeb95..fc1bef7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,9 +51,9 @@ set (PROGRAM_SOURCE src/core/isatty.cpp src/crypto/base58.cpp src/crypto/WIF.cpp + src/cli_key_search_result.cpp src/console.cpp src/key_search.cpp - src/key_search_helpers.cpp src/benchmark.cpp src/main.cpp ) diff --git a/include/eoskeygen/key_search.h b/include/eoskeygen/key_search.h index 19a385d..a5c8fc5 100644 --- a/include/eoskeygen/key_search.h +++ b/include/eoskeygen/key_search.h @@ -29,6 +29,8 @@ namespace eoskeygen { +class IKeySearchResult; + class KeySearch { public : @@ -45,14 +47,14 @@ public : // Add a list of words to search for. void addList(const strlist_t& list); - void addDictionary(const Dictionary& dictionary); - // get the list of words to search for. const strlist_t& getList(); // Clears the search list. void clear(); + void setCallback(IKeySearchResult* callback); + #ifdef HAVE_THREADS // Set the number of threads to use while searching. void setThreadCount(size_t num); @@ -79,13 +81,12 @@ protected : // List of words to search for. strlist_t m_words; - // Dictionary to use when we find a search result. - Dictionary m_dict; - #ifdef HAVE_THREADS // Number of threads to use. size_t m_threads; #endif /* HAVE_THREADS */ + + IKeySearchResult* m_callback; }; } // namespace eoskeygen diff --git a/include/eoskeygen/key_search_result.h b/include/eoskeygen/key_search_result.h new file mode 100644 index 0000000..6e48675 --- /dev/null +++ b/include/eoskeygen/key_search_result.h @@ -0,0 +1,40 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_KEY_SEARCH_RESULT_H +#define EOSIOKEYGEN_KEY_SEARCH_RESULT_H + +#include + +namespace eoskeygen { + +class IKeySearchResult +{ +public : + + virtual void onResult(const struct ec_keypair* key, const struct KeySearch::result& result) = 0; +}; + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_KEY_SEARCH_RESULT_H */ diff --git a/src/key_search_helpers.cpp b/src/cli_key_search_result.cpp similarity index 81% rename from src/key_search_helpers.cpp rename to src/cli_key_search_result.cpp index 124d014..b61ea3a 100644 --- a/src/key_search_helpers.cpp +++ b/src/cli_key_search_result.cpp @@ -25,7 +25,7 @@ #include #include #include "console.h" -#include "key_search_helpers.h" +#include "cli_key_search_result.h" namespace eoskeygen { @@ -37,19 +37,24 @@ static size_t highlight(console::Color color, const std::string& str, size_t pos return len; } -void key_search_result(const struct ec_keypair* key, const struct KeySearch::result* result, const Dictionary& dict) { +CliKeySearchResult::CliKeySearchResult(const Dictionary& dict) : +m_dict (dict) +{ +} + +void CliKeySearchResult::onResult(const struct ec_keypair* key, const struct KeySearch::result& result) { std::string pub = wif_pub_encode(key->pub); - Dictionary::search_result_t dict_res = dict.search(pub); + Dictionary::search_result_t dict_res = m_dict.search(pub); std::cout << "----" << std::endl; - std::cout << "Found: " << pub.substr(result->pos, result->len) << std::endl; + std::cout << "Found: " << pub.substr(result.pos, result.len) << std::endl; std::cout << "Public: EOS"; for(size_t i = 3; i < pub.length(); ) { - if (i == result->pos) { - i += highlight(console::red, pub, result->pos, result->len); + if (i == result.pos) { + i += highlight(console::red, pub, result.pos, result.len); continue; } diff --git a/src/key_search_helpers.h b/src/cli_key_search_result.h similarity index 83% rename from src/key_search_helpers.h rename to src/cli_key_search_result.h index d3dcf0d..2645aeb 100644 --- a/src/key_search_helpers.h +++ b/src/cli_key_search_result.h @@ -27,12 +27,23 @@ #include #include #include +#include namespace eoskeygen { class Dictionary; -void key_search_result(const struct ec_keypair* key, const struct KeySearch::result* result, const Dictionary& dict); +class CliKeySearchResult : public IKeySearchResult +{ +public: + CliKeySearchResult(const Dictionary& dict); + + virtual void onResult(const struct ec_keypair* key, const struct KeySearch::result& result); + +protected : + + const Dictionary& m_dict; +}; } // namespace eoskeygen diff --git a/src/key_search.cpp b/src/key_search.cpp index 8adfc2d..72dd714 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -24,8 +24,8 @@ #include #include #include +#include #include -#include "key_search_helpers.h" namespace eoskeygen { @@ -43,11 +43,6 @@ void KeySearch::addList(const strlist_t& list) } } -void KeySearch::addDictionary(const Dictionary& dictionary) -{ - m_dict = dictionary; -} - const strlist_t& KeySearch::getList() { return m_words; @@ -58,6 +53,11 @@ void KeySearch::clear() m_words.clear(); } +void KeySearch::setCallback(IKeySearchResult* callback) +{ + m_callback = callback; +} + void KeySearch::_search_linear(size_t n) { size_t count = 0; @@ -67,7 +67,7 @@ void KeySearch::_search_linear(size_t n) { struct result res; ec_generate_key(&pair); if (_contains_word(&pair, res)) { - key_search_result(&pair, &res, m_dict); + m_callback->onResult(&pair, res); count++; } } diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp index 1310caa..d9f02c9 100644 --- a/src/key_search_mt.cpp +++ b/src/key_search_mt.cpp @@ -26,8 +26,8 @@ #include #include #include +#include #include -#include "key_search_helpers.h" namespace eoskeygen { @@ -52,7 +52,7 @@ void KeySearch::_thr_proc() { if (_contains_word(&pair, res)) { // Guard output with mutex, so we don't get - // interrupted mid write and can write to g_count safely. + // interrupted mid write and can write to g_count and res safely. const std::lock_guard lock(g_count_mtx); // It is possible g_count was updated by another thread @@ -62,9 +62,9 @@ void KeySearch::_thr_proc() { return; } - // Update count and print result. + // Update count and call result function. g_count++; - key_search_result(&pair, &res, m_dict); + m_callback->onResult(&pair, res); } } } diff --git a/src/main.cpp b/src/main.cpp index bca286c..3b6a206 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -32,6 +32,7 @@ #include #include #include +#include "cli_key_search_result.h" #include "core/file.h" #include "console.h" #include "benchmark.h" @@ -47,8 +48,9 @@ int option_num_threads = std::thread::hardware_concurrency(); int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { eoskeygen::KeySearch ks; + eoskeygen::CliKeySearchResult rs(dict); - ks.addDictionary(dict); + ks.setCallback(&rs); for(auto it = words.begin(); it != words.end(); it++) { size_t p = eoskeygen::is_base58(*it); From 2851490b3eeefe1c0b12fee42caa8a71b994166a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 20 Mar 2020 13:07:24 +0100 Subject: [PATCH 176/404] include/eoskeygen/core/dictionary.h: improved documentation. --- include/eoskeygen/core/dictionary.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/eoskeygen/core/dictionary.h b/include/eoskeygen/core/dictionary.h index 903b3a5..335ca89 100644 --- a/include/eoskeygen/core/dictionary.h +++ b/include/eoskeygen/core/dictionary.h @@ -45,12 +45,13 @@ public : // Load words from file. bool loadFromFile(const std::string& filename); - // Add a word + // Add a word to the dictionary. void add(const std::string& word); // Add words from another dictionary. void add(const Dictionary& dictionary); + // Clear all words from the dictionary. void clear(); // Returns true if word exists in the dictionary. From bc90c2e9efda39c22ee189a161c5af881c2e51ea Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 20 Mar 2020 13:11:57 +0100 Subject: [PATCH 177/404] fixing includes. --- include/eoskeygen/core/dictionary.h | 1 - include/eoskeygen/crypto/WIF.h | 1 - include/eoskeygen/crypto/checksum.h | 2 +- include/eoskeygen/crypto/hash.h | 2 +- src/core/dictionary.cpp | 1 + src/core/file.h | 1 - 6 files changed, 3 insertions(+), 5 deletions(-) diff --git a/include/eoskeygen/core/dictionary.h b/include/eoskeygen/core/dictionary.h index 335ca89..acf7820 100644 --- a/include/eoskeygen/core/dictionary.h +++ b/include/eoskeygen/core/dictionary.h @@ -24,7 +24,6 @@ #ifndef EOSIOKEYGEN_CORE_DICTIONARY_H #define EOSIOKEYGEN_CORE_DICTIONARY_H -#include #include #include #include diff --git a/include/eoskeygen/crypto/WIF.h b/include/eoskeygen/crypto/WIF.h index 5572ce3..244f6ac 100644 --- a/include/eoskeygen/crypto/WIF.h +++ b/include/eoskeygen/crypto/WIF.h @@ -24,7 +24,6 @@ #ifndef EOSIOKEYGEN_CRYPTO_WIF_H #define EOSIOKEYGEN_CRYPTO_WIF_H -#include #include namespace eoskeygen { diff --git a/include/eoskeygen/crypto/checksum.h b/include/eoskeygen/crypto/checksum.h index 85ad8c4..953a5d8 100644 --- a/include/eoskeygen/crypto/checksum.h +++ b/include/eoskeygen/crypto/checksum.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H #define EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H -#include +#include #include #include #include diff --git a/include/eoskeygen/crypto/hash.h b/include/eoskeygen/crypto/hash.h index 7219e22..4d487c2 100644 --- a/include/eoskeygen/crypto/hash.h +++ b/include/eoskeygen/crypto/hash.h @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_CRYPTO_HASH_H #define EOSIOKEYGEN_CRYPTO_HASH_H -#include +#include #include namespace eoskeygen { diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index 6aebcb9..b0d570d 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -1,4 +1,5 @@ +#include #include #include #include diff --git a/src/core/file.h b/src/core/file.h index 2167a6b..dac2790 100644 --- a/src/core/file.h +++ b/src/core/file.h @@ -25,7 +25,6 @@ #define EOSIOKEYGEN_CORE_FILE_H #include -#include namespace eoskeygen { From ac00821a384cbd11e3b4ee4becfc30cd9dfb4c26 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 20 Mar 2020 13:19:17 +0100 Subject: [PATCH 178/404] include/eoskeygen/key_search.h: improved documentation. --- include/eoskeygen/key_search.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/eoskeygen/key_search.h b/include/eoskeygen/key_search.h index a5c8fc5..5d13716 100644 --- a/include/eoskeygen/key_search.h +++ b/include/eoskeygen/key_search.h @@ -53,6 +53,7 @@ public : // Clears the search list. void clear(); + // Set callback for search result. void setCallback(IKeySearchResult* callback); #ifdef HAVE_THREADS From ddc1af895776185fd5bdd3d9992c44f8fd10d28c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 20 Mar 2020 18:14:53 +0100 Subject: [PATCH 179/404] move core/file.h to library also. --- {src => include/eoskeygen}/core/file.h | 0 src/core/dictionary.cpp | 2 +- src/core/file.cpp | 2 +- src/main.cpp | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename {src => include/eoskeygen}/core/file.h (100%) diff --git a/src/core/file.h b/include/eoskeygen/core/file.h similarity index 100% rename from src/core/file.h rename to include/eoskeygen/core/file.h diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp index b0d570d..e3431ba 100644 --- a/src/core/dictionary.cpp +++ b/src/core/dictionary.cpp @@ -6,7 +6,7 @@ #include #include #include -#include "file.h" +#include namespace eoskeygen { diff --git a/src/core/file.cpp b/src/core/file.cpp index 72c01b8..6bdc497 100644 --- a/src/core/file.cpp +++ b/src/core/file.cpp @@ -1,6 +1,6 @@ #include -#include "file.h" +#include namespace eoskeygen { diff --git a/src/main.cpp b/src/main.cpp index 3b6a206..384d2fc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -26,14 +26,14 @@ #endif /* HAVE_THREADS */ #include #include -#include +#include #include +#include #include #include #include #include #include "cli_key_search_result.h" -#include "core/file.h" #include "console.h" #include "benchmark.h" #include "config.h" From 6c26ce8ac6f0a7092890202e491f18a04befeb7d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 23 Mar 2020 13:38:30 +0100 Subject: [PATCH 180/404] Adding CMakeModules/libeoskeygen.cmake --- CMakeModules/libeoskeygen.cmake | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 CMakeModules/libeoskeygen.cmake diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake new file mode 100644 index 0000000..61a95e8 --- /dev/null +++ b/CMakeModules/libeoskeygen.cmake @@ -0,0 +1,25 @@ + +# If we have a custom libeoskeygen +if(CUSTOM_LIBEOSKEYGEN) + + message ("Using libeoskeygen in: ${CUSTOM_LIBEOSKEYGEN}") + + # Include targets. + include(${CUSTOM_LIBEOSKEYGEN}/libeoskeygenTargets.cmake) +else() + + # TODO: find_package() here if libeoskeygen is installed on the system. + # otherwise we will download with FetchContent. + + message ("Using libeoskeygen from: https://github.com/eosswedenorg/libeoskeygen.git") + + include(FetchContent) + FetchContent_Declare( + libeoskeygen + GIT_REPOSITORY https://github.com/eosswedenorg/libeoskeygen.git + GIT_TAG master + ) + + FetchContent_MakeAvailable(libeoskeygen) + +endif() From 086d9e12418e7f911db4829dc2ad63a9eb6b1d81 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 23 Mar 2020 13:43:39 +0100 Subject: [PATCH 181/404] Use remove library files and use libeoskeygen --- CMakeLists.txt | 54 +-------- README.md | 46 ++++++-- include/eoskeygen/core/dictionary.h | 72 ------------ include/eoskeygen/core/file.h | 35 ------ include/eoskeygen/core/string.h | 52 --------- include/eoskeygen/crypto/WIF.h | 39 ------- include/eoskeygen/crypto/base58.h | 46 -------- include/eoskeygen/crypto/checksum.h | 54 --------- include/eoskeygen/crypto/ec.h | 39 ------- include/eoskeygen/crypto/hash.h | 41 ------- include/eoskeygen/crypto/types.h | 55 ---------- include/eoskeygen/key_search.h | 95 ---------------- include/eoskeygen/key_search_result.h | 40 ------- src/core/dictionary.cpp | 103 ------------------ src/core/file.cpp | 26 ----- src/core/string.cpp | 151 -------------------------- src/crypto/WIF.cpp | 66 ----------- src/crypto/base58.cpp | 113 ------------------- src/crypto/openssl/ec.cpp | 70 ------------ src/crypto/openssl/hash.cpp | 43 -------- src/key_search.cpp | 106 ------------------ src/key_search_mt.cpp | 101 ----------------- 22 files changed, 40 insertions(+), 1407 deletions(-) delete mode 100644 include/eoskeygen/core/dictionary.h delete mode 100644 include/eoskeygen/core/file.h delete mode 100644 include/eoskeygen/core/string.h delete mode 100644 include/eoskeygen/crypto/WIF.h delete mode 100644 include/eoskeygen/crypto/base58.h delete mode 100644 include/eoskeygen/crypto/checksum.h delete mode 100644 include/eoskeygen/crypto/ec.h delete mode 100644 include/eoskeygen/crypto/hash.h delete mode 100644 include/eoskeygen/crypto/types.h delete mode 100644 include/eoskeygen/key_search.h delete mode 100644 include/eoskeygen/key_search_result.h delete mode 100644 src/core/dictionary.cpp delete mode 100644 src/core/file.cpp delete mode 100644 src/core/string.cpp delete mode 100644 src/crypto/WIF.cpp delete mode 100644 src/crypto/base58.cpp delete mode 100644 src/crypto/openssl/ec.cpp delete mode 100644 src/crypto/openssl/hash.cpp delete mode 100644 src/key_search.cpp delete mode 100644 src/key_search_mt.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index fc1bef7..b371bd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,8 @@ option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") +include(libeoskeygen) + # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) @@ -45,15 +47,9 @@ endif() set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE - src/core/file.cpp - src/core/dictionary.cpp - src/core/string.cpp src/core/isatty.cpp - src/crypto/base58.cpp - src/crypto/WIF.cpp src/cli_key_search_result.cpp src/console.cpp - src/key_search.cpp src/benchmark.cpp src/main.cpp ) @@ -65,38 +61,16 @@ else() set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) endif() -# Libraries -find_package(OpenSSL 1.1 REQUIRED) -set (PROGRAM_SOURCE ${PROGRAM_SOURCE} - src/crypto/openssl/ec.cpp - src/crypto/openssl/hash.cpp -) - -if (USE_THREADS) - find_package(Threads) - if (Threads_FOUND) - # Add preprocessor flag - add_definitions( "-DHAVE_THREADS=1" ) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/key_search_mt.cpp) - endif (Threads_FOUND) -endif (USE_THREADS) - # Project config file configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) include_directories(${PROJECT_BINARY_DIR}) # Include OpenSSL headers -include_directories( ${OPENSSL_INCLUDE_DIR} ) - -include_directories( include ) +#include_directories( ${OPENSSL_INCLUDE_DIR} ) add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) -target_link_libraries( ${PROGRAM_EXE} - PUBLIC - ${OPENSSL_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) +target_link_libraries( ${PROGRAM_EXE} PUBLIC eoskeygen ) # -------------------------------- # Install @@ -104,26 +78,6 @@ target_link_libraries( ${PROGRAM_EXE} install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -# Win32 specific. -if (WIN32) - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1-x64) - else() - set (OPENSSL_LIBCRYPTO_NAME libcrypto-1_1) - endif() - set( OPENSSL_LIBCRYPTO_DLL ${OPENSSL_ROOT_DIR}/bin/${OPENSSL_LIBCRYPTO_NAME}.dll ) - - # Need to copy libcrypto dll to binary folder. - add_custom_command(TARGET ${PROGRAM_EXE} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different - ${OPENSSL_LIBCRYPTO_DLL} - ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR} - ) - - # We also need to copy libcrypto dll during install - install(FILES ${OPENSSL_LIBCRYPTO_DLL} DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif (WIN32) - # Readme and license install(FILES README.md LICENSE LICENSE.bitcoin DESTINATION ${CMAKE_INSTALL_SHAREDIR}) diff --git a/README.md b/README.md index 069af15..3b72adf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This program generates public and private keypair for [EOS](https://eos.io/) ## Compile -You will need `openssl` development files (version 1.1 or later) to compile and `cmake 3.15` or later to compile this project. +You will need `libeoskeygen` and `cmake 3.15` or later to compile this project. ### Linux/MacOS @@ -18,11 +18,37 @@ You will need `openssl` development files (version 1.1 or later) to compile and #### Linux **Ubuntu:** + +First you need to have a compiler. this can be installed with apt. + ```sh -$ apt-get install gcc g++ libssl-dev +$ apt-get install gcc g++ ``` -**Other**: Consult the manual for you package manager. +You then need `libeoskeygen`. + +This can be installed from [EOS Sweden's APT Repository](https://eosswedenorg.github.io/apt) like this: + +```sh +$ sudo apt-get install software-properties-common +$ curl https://apt.eossweden.org/key 2> /dev/null | sudo apt-key add - +$ sudo apt-add-repository -y 'deb [arch=amd64] https://apt.eossweden.org/main `lsb_release -cs` stable' +$ sudo apt-get install libeoskeygen-dev +``` + +or manually via `.deb` file from [github](https://github.com/eosswedenorg/libeoskeygen/releases) + +```sh +$ wget +$ sudo apt install ./libeoskeygen-dev-.deb +``` + +**Other**: + +Consult the manual for you package manager. +`libeoskeygen` will be downloaded and compiled if it's not installed automatically (however this is slower). + +Consult [libeoskeygen's github](https://github.com/eosswedenorg/libeoskeygen) if you want to compile and install it manually. **CMake** @@ -48,13 +74,15 @@ Other methods is documanted at https://cmake.org/download You must have a compiler installed. This project is known to build with `Xcode 11.0` but other versions should work. -You need to have opessl and cmake installed also, this can be done with this `brew` command: +You need to have cmake installed also, this can be done with this `brew` command: ```sh -$ brew install openssl cmake +$ brew install cmake ``` If you need a newer version of cmake, you can download the official `.dmg` file: [cmake-3.15.7-Darwin-x86_64.dmg](https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.dmg). or see https://cmake.org/download for other versions. +`libeoskeygen` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libeoskeygen) + #### Build Run `./build.sh` to trigger cmake. @@ -73,13 +101,12 @@ $ cmake .. && make #### Dependencies -Download and install `cmake` version `3.15` or newer from [cmake.org](https://cmake.org) and download -[openssl](https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip) - -unpack `openssl-1.1.1e-dev.zip` somewhere on the filesystem. +Download and install `cmake` version `3.15` or newer from [cmake.org](https://cmake.org) You will also need a compiler. [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16) (Selecting C++ during installation) is recommended. + + #### Build. you need to set `OPENSSL_ROOT_DIR` to the directory where you unpacked @@ -103,7 +130,6 @@ These compile options are available: | Cmake | build.sh | Description | |--------------------------- | ----------------- | ------------------------------------------| | -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | -| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | | -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA` diff --git a/include/eoskeygen/core/dictionary.h b/include/eoskeygen/core/dictionary.h deleted file mode 100644 index acf7820..0000000 --- a/include/eoskeygen/core/dictionary.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CORE_DICTIONARY_H -#define EOSIOKEYGEN_CORE_DICTIONARY_H - -#include -#include -#include - -namespace eoskeygen { - -class Dictionary -{ -public : - // Map that contains position and length for substrings. - // - // key = position in the search string. - // value = length of the word from this position. - typedef std::map< size_t, size_t > search_result_t; - -public : - - // Load words from file. - bool loadFromFile(const std::string& filename); - - // Add a word to the dictionary. - void add(const std::string& word); - - // Add words from another dictionary. - void add(const Dictionary& dictionary); - - // Clear all words from the dictionary. - void clear(); - - // Returns true if word exists in the dictionary. - bool contains(const std::string& word) const; - - // Searches the subject for words defined in the dictionary. - // Returns a search_result_t with the words found in subject. - // See search_result_t for more details. - search_result_t search(const std::string& subject) const; - -protected : - - // Words in the dictionary. - std::set m_words; -}; - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CORE_DICTIONARY_H */ diff --git a/include/eoskeygen/core/file.h b/include/eoskeygen/core/file.h deleted file mode 100644 index dac2790..0000000 --- a/include/eoskeygen/core/file.h +++ /dev/null @@ -1,35 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CORE_FILE_H -#define EOSIOKEYGEN_CORE_FILE_H - -#include - -namespace eoskeygen { - -bool readLines(const std::string& filename, strlist_t& lines); - -} // namespace - -#endif /* EOSIOKEYGEN_CORE_FILE_H */ diff --git a/include/eoskeygen/core/string.h b/include/eoskeygen/core/string.h deleted file mode 100644 index 1662c7b..0000000 --- a/include/eoskeygen/core/string.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CORE_STRING_H -#define EOSIOKEYGEN_CORE_STRING_H - -#include -#include - -namespace eoskeygen { - -typedef std::vector strlist_t; - -strlist_t strsplitwords(const std::string& str, const std::string& delim = ","); - -strlist_t strsplit(const std::string& str, const std::string& delim); - -std::string strjoin(const strlist_t& list, const std::string& delim); - -std::string& strtolower(std::string& str); - -std::string& rtrim(std::string& str); -std::string& ltrim(std::string& str); -std::string& trim(std::string& str); - -strlist_t& base58_strip(strlist_t& list); - -strlist_t l33twords(std::string str); - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CORE_STRING_H */ diff --git a/include/eoskeygen/crypto/WIF.h b/include/eoskeygen/crypto/WIF.h deleted file mode 100644 index 244f6ac..0000000 --- a/include/eoskeygen/crypto/WIF.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_WIF_H -#define EOSIOKEYGEN_CRYPTO_WIF_H - -#include - -namespace eoskeygen { - -std::string wif_priv_encode(ec_privkey_t priv); - -std::string wif_pub_encode(ec_pubkey_t pub); - -void wif_print_key(const struct ec_keypair *key); - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CRYPTO_WIF_H */ diff --git a/include/eoskeygen/crypto/base58.h b/include/eoskeygen/crypto/base58.h deleted file mode 100644 index 4d52f31..0000000 --- a/include/eoskeygen/crypto/base58.h +++ /dev/null @@ -1,46 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_BASE58_H -#define EOSIOKEYGEN_CRYPTO_BASE58_H - -#include -#include - -namespace eoskeygen { - -std::string base58_encode(const std::string& str); -std::string base58_encode(const std::vector& vch); -std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend); - -bool is_base58(char ch); - -// Returns std::string::npos if the string contains only base58 characters -// Otherwise the position of the first non base58 character is returned. -size_t is_base58(const std::string& str); - -std::string& base58_strip(std::string& str); - -} //namespace eoskeygen - -#endif /* EOSIOKEYGEN_CRYPTO_BASE58_H */ diff --git a/include/eoskeygen/crypto/checksum.h b/include/eoskeygen/crypto/checksum.h deleted file mode 100644 index 953a5d8..0000000 --- a/include/eoskeygen/crypto/checksum.h +++ /dev/null @@ -1,54 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H -#define EOSIOKEYGEN_CRYPTO_EOS_CHECKSUM_H - -#include -#include -#include -#include - -namespace eoskeygen { - -#define CHECKSUM_SIZE 4 - -typedef std::array checksum_t; - -template -inline checksum_t checksum(const unsigned char* data, std::size_t len) { - checksum_t crc; - T hash; - - F(data, len, &hash); - std::memcpy(crc.data(), &hash, crc.size()); - return crc; -} - -#define checksum_sha256 checksum -#define checksum_sha256d checksum -#define checksum_ripemd160 checksum - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CHECKSUM_H */ diff --git a/include/eoskeygen/crypto/ec.h b/include/eoskeygen/crypto/ec.h deleted file mode 100644 index 7fa9af4..0000000 --- a/include/eoskeygen/crypto/ec.h +++ /dev/null @@ -1,39 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_EC_H -#define EOSIOKEYGEN_CRYPTO_EC_H - -#include - -namespace eoskeygen { - -/** - * Generates a keypair using the secp256k1 curve. - * public key is in compressed format. - */ -int ec_generate_key(struct ec_keypair *pair); - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CRYPTO_EC_H */ diff --git a/include/eoskeygen/crypto/hash.h b/include/eoskeygen/crypto/hash.h deleted file mode 100644 index 4d487c2..0000000 --- a/include/eoskeygen/crypto/hash.h +++ /dev/null @@ -1,41 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_HASH_H -#define EOSIOKEYGEN_CRYPTO_HASH_H - -#include -#include - -namespace eoskeygen { - -sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out); - -// sha256 double. -sha256_t* sha256d(const unsigned char *data, std::size_t len, sha256_t* out); - -ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out); - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CRYPTO_HASH_H */ diff --git a/include/eoskeygen/crypto/types.h b/include/eoskeygen/crypto/types.h deleted file mode 100644 index 23e2585..0000000 --- a/include/eoskeygen/crypto/types.h +++ /dev/null @@ -1,55 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_CRYPTO_TYPES_H -#define EOSIOKEYGEN_CRYPTO_TYPES_H - -#include - -namespace eoskeygen { - -#define EC_PRIVKEY_SIZE 32 - -/* - * Compressed format! - * z||x, where byte z specifies which (of the 2) solutions of the quadratic equation y is. - * Each cordinate is 32 bytes. - */ -#define EC_PUBKEY_SIZE (32 + 1) - -typedef std::array ec_privkey_t; -typedef std::array ec_pubkey_t; - -struct ec_keypair { - ec_privkey_t secret; - ec_pubkey_t pub; -}; - -// Hashes. - -typedef struct { unsigned char data[20]; } ripemd160_t; -typedef struct { unsigned char data[32]; } sha256_t; - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_CRYPTO_TYPES_H */ diff --git a/include/eoskeygen/key_search.h b/include/eoskeygen/key_search.h deleted file mode 100644 index 5d13716..0000000 --- a/include/eoskeygen/key_search.h +++ /dev/null @@ -1,95 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_KEY_SEARCH_H -#define EOSIOKEYGEN_KEY_SEARCH_H - -#include -#include - -namespace eoskeygen { - -class IKeySearchResult; - -class KeySearch -{ -public : - - struct result { - size_t pos; // position where the word was found. - size_t len; // the length of the word. - }; - -public : - // Add a word to search for. - void addWord(const std::string& str); - - // Add a list of words to search for. - void addList(const strlist_t& list); - - // get the list of words to search for. - const strlist_t& getList(); - - // Clears the search list. - void clear(); - - // Set callback for search result. - void setCallback(IKeySearchResult* callback); - -#ifdef HAVE_THREADS - // Set the number of threads to use while searching. - void setThreadCount(size_t num); -#endif /* HAVE_THREADS */ - - // Perform a search. - void find(size_t num_results); - -protected : - - // Check if any word in appears in 's public key. - // returns true if a word was found (stored in ), false otherwise. - bool _contains_word(const struct ec_keypair* key, struct result& result); - -#ifdef HAVE_THREADS - void _thr_proc(); - - void _search_mt(size_t n); -#endif /* HAVE_THREADS */ - - void _search_linear(size_t n); - -protected : - // List of words to search for. - strlist_t m_words; - -#ifdef HAVE_THREADS - // Number of threads to use. - size_t m_threads; -#endif /* HAVE_THREADS */ - - IKeySearchResult* m_callback; -}; - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_KEY_SEARCH_H */ diff --git a/include/eoskeygen/key_search_result.h b/include/eoskeygen/key_search_result.h deleted file mode 100644 index 6e48675..0000000 --- a/include/eoskeygen/key_search_result.h +++ /dev/null @@ -1,40 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_KEY_SEARCH_RESULT_H -#define EOSIOKEYGEN_KEY_SEARCH_RESULT_H - -#include - -namespace eoskeygen { - -class IKeySearchResult -{ -public : - - virtual void onResult(const struct ec_keypair* key, const struct KeySearch::result& result) = 0; -}; - -} // namespace eoskeygen - -#endif /* EOSIOKEYGEN_KEY_SEARCH_RESULT_H */ diff --git a/src/core/dictionary.cpp b/src/core/dictionary.cpp deleted file mode 100644 index e3431ba..0000000 --- a/src/core/dictionary.cpp +++ /dev/null @@ -1,103 +0,0 @@ - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace eoskeygen { - -struct StringContains { - StringContains(const std::string& str, std::vector& pos) : m_str(str), m_pos(pos) {} - bool operator()(const std::string& w) { - for(size_t p = m_str.find(w); p != std::string::npos; p = m_str.find(w, p+1)) { - m_pos.push_back(p); - } - return !m_pos.empty(); - } - std::string m_str; - std::vector& m_pos; -}; - -bool Dictionary::loadFromFile(const std::string& filename) -{ - strlist_t lines; - - // Clear before adding. - clear(); - - if (readLines(filename, lines)) { - - // Read each line and add to the dictionary. - for(auto it = lines.begin(); it != lines.end(); it++) { - add(*it); - } - return true; - } - return false; -} - -void Dictionary::add(const std::string& word) -{ - // Do not insert a empty string. - if (word.length()) { - m_words.insert(word); - } -} - -void Dictionary::add(const Dictionary& dictionary) -{ - std::set_union( - m_words.begin(), m_words.end(), - dictionary.m_words.begin(), dictionary.m_words.end(), - std::inserter(m_words, m_words.begin()) - ); -} - -void Dictionary::clear() -{ - m_words.clear(); -} - -bool Dictionary::contains(const std::string& word) const -{ - return m_words.find(word) != m_words.cend(); -} - -Dictionary::search_result_t Dictionary::search(const std::string& subject) const -{ - search_result_t res; - - std::vector pos; - StringContains pred(subject, pos); - - // Find all words. - for(auto it = std::find_if(m_words.begin(), m_words.end(), pred); - it != m_words.end(); - it = std::find_if(++it, m_words.end(), pred)) { - - // Go through all found positions. - for (auto it2 = pos.begin(); it2 != pos.end(); it2++) { - - // Insert - auto rit = res.find(*it2); - if (rit == res.end()) { - res.emplace(*it2, it->length()); - } - // Update length if it's longer then the previous we found. - else if (rit->second < it->length()) { - rit->second = it->length(); - } - } - - // Clear positions - pos.clear(); - } - - return res; -} - -} // namespace eoskeygen diff --git a/src/core/file.cpp b/src/core/file.cpp deleted file mode 100644 index 6bdc497..0000000 --- a/src/core/file.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include -#include - -namespace eoskeygen { - -bool readLines(const std::string& filename, strlist_t& lines) { - - FILE *fd; - char buf[1024]; - - fd = fopen(filename.c_str(), "r"); - if (!fd) { - return false; - } - - while(fgets(buf, sizeof(buf), fd) != NULL) { - std::string line(buf); - lines.push_back(trim(line)); - } - - fclose(fd); - return true; -} - -} // namespace eoskeygen diff --git a/src/core/string.cpp b/src/core/string.cpp deleted file mode 100644 index aeb2a7d..0000000 --- a/src/core/string.cpp +++ /dev/null @@ -1,151 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include -#include -#include - -namespace eoskeygen { - -strlist_t strsplitwords(const std::string& str, const std::string& delim) { - - strlist_t words = strsplit(str, delim); - std::for_each(words.begin(), words.end(), trim); - return words; -} - -strlist_t strsplit(const std::string& str, const std::string& delim) { - - strlist_t r; - size_t s = 0, e = 0, dlen = delim.length(); - - while((e = str.find(delim, s)) != std::string::npos) { - r.push_back(str.substr(s, e - s)); - s = e + dlen; - } - - r.push_back(str.substr(s)); - return r; -} - -std::string strjoin(const strlist_t& list, const std::string& delim) { - - std::string out; - - for(const std::string& item : list) { - if (item.length() < 1) { - continue; - } - out += item + delim; - } - - if (out.length() > 0) { - out.erase(out.end() - delim.length()); - } - - return out; -} - -std::string& strtolower(std::string& str) { - std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); }); - return str; -} - -std::string& ltrim(std::string& str) { - auto it = std::find_if(str.begin(), str.end(), [](char ch){ return !std::isspace(ch); }); - str.erase(str.begin(), it); - return str; -} - -std::string& rtrim(std::string& str) { - auto it = std::find_if(str.rbegin(), str.rend(), [](char ch){ return !std::isspace(ch); }); - str.erase(it.base(), str.end()); - return str; -} - -std::string& trim(std::string& str) { - return ltrim(rtrim(str)); -} - -strlist_t& base58_strip(strlist_t& list) { - - std::transform(list.begin(), list.end(), list.begin(), [](std::string& str){ return base58_strip(str); }); - return list; -} - -static bool is_l33t(char ch, char& r) { - - // '1', '2', '3', '4', '5', '6', '7', '8', '9' - static char alphabet[9] = { 'l', 'z', 'e', 'a', 's', 'G', 't', 'B', 'g' }; - - for(std::size_t i = 0; i < sizeof(alphabet) / sizeof(char); i++) { - - if (ch == alphabet[i]) { - r = static_cast('1' + i); - return true; - } - } - return false; -} - -static void _l33t(strlist_t& list, const std::string& a, std::size_t pos) { - - // Find the next character to be replaced. - for(std::size_t i = pos; i < a.length(); i++) { - - char ch; - if (is_l33t(a[i], ch)) { - // create a new string and replace the character. - std::string b = a; - b[i] = ch; - - // Store the new string as the result. - list.push_back(b); - - // Perform the same algorithm for both strings - // at the next position. - _l33t(list, a, i + 1); - _l33t(list, b, i + 1); - break; - } - } -} - -strlist_t l33twords(std::string str) { - - strlist_t list; - - // "l" is abit special and are not included in base58 so we set it to 1. - // All other characters in "l33t" are valid. - std::transform(str.begin(), str.end(), str.begin(), [](char c){ return c == 'l' ? '1' : c; }); - - // Store the original string as the first in list. - list.push_back(str); - - _l33t(list, str, 0); - return list; -} - -} // namespace eoskeygen diff --git a/src/crypto/WIF.cpp b/src/crypto/WIF.cpp deleted file mode 100644 index a86a207..0000000 --- a/src/crypto/WIF.cpp +++ /dev/null @@ -1,66 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include -#include -#include - -namespace eoskeygen { - -#define PRIV_KEY_PREFIX 0x80 /* 0x80 for "Bitcoin mainnet". Always used by EOS. */ - -std::string wif_priv_encode(ec_privkey_t priv) { - - checksum_t check; - // 1 byte extra for prefix. - unsigned char buf[1 + EC_PRIVKEY_SIZE + CHECKSUM_SIZE] = { PRIV_KEY_PREFIX }; - - memcpy(buf + 1, priv.data(), priv.size()); - - // Checksum - check = checksum_sha256d(buf, 1 + EC_PRIVKEY_SIZE); - memcpy(buf + 1 + EC_PRIVKEY_SIZE, check.data(), check.size()); - - return base58_encode(buf, buf + sizeof(buf)); -} - -std::string wif_pub_encode(ec_pubkey_t pub) { - - checksum_t check = checksum_ripemd160(pub.data(), pub.size()); - unsigned char buf[EC_PUBKEY_SIZE + CHECKSUM_SIZE]; - - memcpy(buf, pub.data(), pub.size()); - memcpy(buf + EC_PUBKEY_SIZE, check.data(), check.size()); - - return "EOS" + base58_encode(buf, buf + sizeof(buf)); -} - -void wif_print_key(const struct ec_keypair *key) { - - std::cout << "Public: " << wif_pub_encode(key->pub) << std::endl; - std::cout << "Private: " << wif_priv_encode(key->secret) << std::endl; -} - -} // namespace eoskeygen diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp deleted file mode 100644 index 47581f5..0000000 --- a/src/crypto/base58.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2009-2019 The Bitcoin Core developers - * Copyright (c) 2009-2019 Bitcoin Developers - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * Based on code from https://github.com/bitcoin/bitcoin/blob/f1e2f2a85962c1664e4e55471061af0eaa798d40/src/base58.cpp - */ -#include -#include -#include -#include - -namespace eoskeygen { - -static const char charmap[59] = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; - -std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend) { - - // Skip & count leading zeroes. - int zeroes = 0; - int length = 0; - while (pbegin != pend && *pbegin == 0) { - pbegin++; - zeroes++; - } - // Allocate enough space in big-endian base58 representation. - std::size_t size = (pend - pbegin) * 138 / 100 + 1; // log(256) / log(58), rounded up. - std::vector b58(size); - // Process the bytes. - while (pbegin != pend) { - int carry = *pbegin; - int i = 0; - // Apply "b58 = b58 * 256 + ch". - for (std::vector::reverse_iterator it = b58.rbegin(); (carry != 0 || i < length) && (it != b58.rend()); it++, i++) { - carry += 256 * (*it); - *it = static_cast(carry % 58); - carry /= 58; - } - - assert(carry == 0); - length = i; - pbegin++; - } - // Skip leading zeroes in base58 result. - std::vector::iterator it = b58.begin() + (size - length); - while (it != b58.end() && *it == 0) - it++; - // Translate the result into a string. - std::string str; - str.reserve(zeroes + (b58.end() - it)); - str.assign(zeroes, '1'); - while (it != b58.end()) - str += charmap[*(it++)]; - return str; -} - -std::string base58_encode(const std::string& str) { - - const unsigned char *ptr = (const unsigned char *) str.c_str(); - return base58_encode(ptr, ptr + str.length()); -} - -std::string base58_encode(const std::vector& vch) { - - return base58_encode(vch.data(), vch.data() + vch.size()); -} - -bool is_base58(char ch) { - for(unsigned int i=0; i < sizeof(charmap); i++) { - if (ch == charmap[i]) { - return true; - } - } - return false; -} - -size_t is_base58(const std::string& str) { - - auto p = std::find_if_not(str.begin(), str.end(), static_cast(is_base58)); - - if (p == str.end()) { - return std::string::npos; - } - return p - str.begin(); -} - -std::string& base58_strip(std::string &str) { - str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) - { return is_base58(ch) == false; } - ), str.end()); - return str; -} - -} // namespace eoskeygen diff --git a/src/crypto/openssl/ec.cpp b/src/crypto/openssl/ec.cpp deleted file mode 100644 index 9fc5431..0000000 --- a/src/crypto/openssl/ec.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include -#include - -namespace eoskeygen { - -int ec_generate_key(struct ec_keypair *pair) { - - int ret = -1; - EC_KEY *k; - BN_CTX *ctx; - - // Create BIGNUM context. - ctx = BN_CTX_new(); - if (ctx == NULL) { - return -1; - } - - // Construct curve. - k = EC_KEY_new_by_curve_name(NID_secp256k1); - if (k == NULL) { - goto fail1; - } - - // Generate new key pair. - if (EC_KEY_generate_key(k) != 1) { - goto fail2; - } - - // Copy private key to binary format. - EC_KEY_priv2oct(k, pair->secret.data(), EC_PRIVKEY_SIZE); - - // Copy public key - EC_POINT_point2oct(EC_KEY_get0_group(k), - EC_KEY_get0_public_key(k), POINT_CONVERSION_COMPRESSED, - pair->pub.data(), EC_PUBKEY_SIZE, ctx); - - ret = 0; -fail2: - EC_KEY_free(k); -fail1: - BN_CTX_free(ctx); - return ret; -} - -} // namespace eoskeygen diff --git a/src/crypto/openssl/hash.cpp b/src/crypto/openssl/hash.cpp deleted file mode 100644 index f79abc2..0000000 --- a/src/crypto/openssl/hash.cpp +++ /dev/null @@ -1,43 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include - -namespace eoskeygen { - -sha256_t* sha256(const unsigned char *data, std::size_t len, sha256_t* out) { - return (sha256_t *) SHA256(data, len, out->data); -} - -sha256_t* sha256d(const unsigned char *data, std::size_t len, sha256_t* out) { - SHA256(data, len, out->data); - return (sha256_t *) SHA256(out->data, 32, out->data); -} - -ripemd160_t* ripemd160(const unsigned char *data, std::size_t len, ripemd160_t* out) { - return (ripemd160_t *) RIPEMD160(data, len, out->data); -} - -} // namespace eoskeygen diff --git a/src/key_search.cpp b/src/key_search.cpp deleted file mode 100644 index 72dd714..0000000 --- a/src/key_search.cpp +++ /dev/null @@ -1,106 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include -#include -#include - -namespace eoskeygen { - -void KeySearch::addWord(const std::string& str) -{ - std::string tmp = str; - strtolower(tmp); - m_words.push_back(tmp); -} - -void KeySearch::addList(const strlist_t& list) -{ - for(const std::string& item : list) { - addWord(item); - } -} - -const strlist_t& KeySearch::getList() -{ - return m_words; -} - -void KeySearch::clear() -{ - m_words.clear(); -} - -void KeySearch::setCallback(IKeySearchResult* callback) -{ - m_callback = callback; -} - -void KeySearch::_search_linear(size_t n) { - - size_t count = 0; - struct ec_keypair pair; - - while (count < n) { - struct result res; - ec_generate_key(&pair); - if (_contains_word(&pair, res)) { - m_callback->onResult(&pair, res); - count++; - } - } -} - -void KeySearch::find(size_t num_results) { - -#ifdef HAVE_THREADS - // Only do multithread if number of threads makes sense. - if (m_threads >= 2) { - _search_mt(num_results); - return; - } -#endif /* HAVE_THREADS */ - - _search_linear(num_results); -} - -bool KeySearch::_contains_word(const struct ec_keypair* key, struct result& result) { - - // skip first 3 chars, as those are always "EOS" - std::string pubstr = wif_pub_encode(key->pub).substr(3); - strtolower(pubstr); - - for(auto const& w: m_words) { - size_t p = pubstr.find(w); - if (p != std::string::npos) { - result.pos = p + 3; - result.len = w.length(); - return true; - } - } - return false; -} - -} // namespace eoskeygen diff --git a/src/key_search_mt.cpp b/src/key_search_mt.cpp deleted file mode 100644 index d9f02c9..0000000 --- a/src/key_search_mt.cpp +++ /dev/null @@ -1,101 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include -#include -#include -#include -#include -#include -#include - -namespace eoskeygen { - -// Max keys to search for, -std::size_t g_max; - -// How many keys we have found so far. -std::size_t g_count; - -// Mutex guard for g_count. -std::mutex g_count_mtx; - -// Thread process. -void KeySearch::_thr_proc() { - - struct ec_keypair pair; - - while (g_count < g_max) { - struct result res; - - ec_generate_key(&pair); - if (_contains_word(&pair, res)) { - - // Guard output with mutex, so we don't get - // interrupted mid write and can write to g_count and res safely. - const std::lock_guard lock(g_count_mtx); - - // It is possible g_count was updated by another thread - // after we checked it in the while loop. - // So while we have the lock, we need to check it again. - if (g_count >= g_max) { - return; - } - - // Update count and call result function. - g_count++; - m_callback->onResult(&pair, res); - } - } -} - -void KeySearch::setThreadCount(size_t num) -{ - m_threads = num; -} - -void KeySearch::_search_mt(size_t n) -{ - std::vector t; - - t.resize(m_threads - 1); - - // Setup global variables for the threads. - g_max = n; - g_count = 0; - - // Launch them. - for(std::size_t i = 0; i < t.size(); i++) { - t[i] = std::thread(&KeySearch::_thr_proc, this); - } - - // Use main thread for 1 search - _thr_proc(); - - // Wait for all threads to compelete. - for(std::size_t i = 0; i < t.size(); i++) { - t[i].join(); - } -} - -} // namespace eoskeygen From fc00d97d40ae067aebbf71a688912796310c1235 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 23 Mar 2020 13:44:37 +0100 Subject: [PATCH 182/404] move src/core/isatty to src/isatty --- CMakeLists.txt | 2 +- src/console.cpp | 2 +- src/{core => }/isatty.cpp | 0 src/{core => }/isatty.h | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename src/{core => }/isatty.cpp (100%) rename src/{core => }/isatty.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index b371bd8..882a3b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,7 @@ endif() set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE - src/core/isatty.cpp + src/isatty.cpp src/cli_key_search_result.cpp src/console.cpp src/benchmark.cpp diff --git a/src/console.cpp b/src/console.cpp index 99472f3..2208856 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "core/isatty.h" +#include "isatty.h" #include "console.h" namespace eoskeygen { namespace console { diff --git a/src/core/isatty.cpp b/src/isatty.cpp similarity index 100% rename from src/core/isatty.cpp rename to src/isatty.cpp diff --git a/src/core/isatty.h b/src/isatty.h similarity index 100% rename from src/core/isatty.h rename to src/isatty.h From a9a45363dfc03ed0a7f1d023606ea5428f3087fe Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 16:20:00 +0100 Subject: [PATCH 183/404] CMakeModules/libeoskeygen.cmake: adding find_package() and use git repo as fallback. --- CMakeModules/libeoskeygen.cmake | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 61a95e8..9edbef7 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -8,18 +8,24 @@ if(CUSTOM_LIBEOSKEYGEN) include(${CUSTOM_LIBEOSKEYGEN}/libeoskeygenTargets.cmake) else() - # TODO: find_package() here if libeoskeygen is installed on the system. - # otherwise we will download with FetchContent. + set( LIBEOSKEYGEN_WANTED_VERSION 0.1.0 ) - message ("Using libeoskeygen from: https://github.com/eosswedenorg/libeoskeygen.git") + # Try finding the package on the system. + find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) + if (libeoskeygen_FOUND) + message ("Using libeoskeygen in: ${libeoskeygen_DIR}") + # Not found, download from git. + else() + message ("Using libeoskeygen from: https://github.com/eosswedenorg/libeoskeygen.git@v${LIBEOSKEYGEN_WANTED_VERSION}") - include(FetchContent) - FetchContent_Declare( - libeoskeygen - GIT_REPOSITORY https://github.com/eosswedenorg/libeoskeygen.git - GIT_TAG master - ) + include(FetchContent) + FetchContent_Declare( + libeoskeygen + GIT_REPOSITORY https://github.com/eosswedenorg/libeoskeygen.git + GIT_TAG v${LIBEOSKEYGEN_WANTED_VERSION} + ) - FetchContent_MakeAvailable(libeoskeygen) + FetchContent_MakeAvailable(libeoskeygen) + endif() endif() From 1924feacb027c4e3bd0cac742ff37e0a94627062 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 16:24:37 +0100 Subject: [PATCH 184/404] CMakeModules/libeoskeygen.cmake: define fromGit macro and use it. --- CMakeModules/libeoskeygen.cmake | 35 ++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 9edbef7..4a8e19d 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -1,4 +1,26 @@ +# -------------------------------- +# Variables +# -------------------------------- +set( LIBEOSKEYGEN_GIT_URL "https://github.com/eosswedenorg/libeoskeygen.git" ) +set( LIBEOSKEYGEN_WANTED_VERSION 0.1.0 ) + +# -------------------------------- +# Macros +# -------------------------------- +macro(fromGit tag) + + message ("Using libeoskeygen from: ${LIBEOSKEYGEN_GIT_URL}@${tag}") + + include(FetchContent) + FetchContent_Declare(libeoskeygen + GIT_REPOSITORY ${LIBEOSKEYGEN_GIT_URL} + GIT_TAG ${tag} + ) + + FetchContent_MakeAvailable(libeoskeygen) +endmacro() + # If we have a custom libeoskeygen if(CUSTOM_LIBEOSKEYGEN) @@ -8,24 +30,13 @@ if(CUSTOM_LIBEOSKEYGEN) include(${CUSTOM_LIBEOSKEYGEN}/libeoskeygenTargets.cmake) else() - set( LIBEOSKEYGEN_WANTED_VERSION 0.1.0 ) - # Try finding the package on the system. find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) if (libeoskeygen_FOUND) message ("Using libeoskeygen in: ${libeoskeygen_DIR}") # Not found, download from git. else() - message ("Using libeoskeygen from: https://github.com/eosswedenorg/libeoskeygen.git@v${LIBEOSKEYGEN_WANTED_VERSION}") - - include(FetchContent) - FetchContent_Declare( - libeoskeygen - GIT_REPOSITORY https://github.com/eosswedenorg/libeoskeygen.git - GIT_TAG v${LIBEOSKEYGEN_WANTED_VERSION} - ) - - FetchContent_MakeAvailable(libeoskeygen) + fromGit( v${LIBEOSKEYGEN_WANTED_VERSION} ) endif() endif() From 47767e344378cfd71aab3ac635f4b43e57dd9be5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 16:52:27 +0100 Subject: [PATCH 185/404] CMakeModules/libeoskeygen.cmake: handle custom libeoskeygen via LIBEOSKEYGEN_SOURCE_DIR variable correctly. by include()'ing the targets file. cmake only knows how to link but not to build. The proper ways is to use add_subdirectory() --- CMakeModules/libeoskeygen.cmake | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 4a8e19d..2159c05 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -21,15 +21,15 @@ macro(fromGit tag) FetchContent_MakeAvailable(libeoskeygen) endmacro() -# If we have a custom libeoskeygen -if(CUSTOM_LIBEOSKEYGEN) +macro(buildLocal src) + message ("Using local libeoskeygen at: ${src}") + add_subdirectory(${src} ${src}/build) +endmacro() - message ("Using libeoskeygen in: ${CUSTOM_LIBEOSKEYGEN}") - - # Include targets. - include(${CUSTOM_LIBEOSKEYGEN}/libeoskeygenTargets.cmake) +# If we have a local libeoskeygen +if (LIBEOSKEYGEN_SOURCE_DIR) + buildLocal( ${LIBEOSKEYGEN_SOURCE_DIR} ) else() - # Try finding the package on the system. find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) if (libeoskeygen_FOUND) @@ -38,5 +38,4 @@ else() else() fromGit( v${LIBEOSKEYGEN_WANTED_VERSION} ) endif() - endif() From ba95dbbf93bac3519f669a242ab63da716e2f07c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 17:03:41 +0100 Subject: [PATCH 186/404] CMakeModules/cpack_custom.cmake: typo fix. --- CMakeModules/cpack_custom.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeModules/cpack_custom.cmake b/CMakeModules/cpack_custom.cmake index 6a23457..d4fad9b 100644 --- a/CMakeModules/cpack_custom.cmake +++ b/CMakeModules/cpack_custom.cmake @@ -104,7 +104,7 @@ set( CPACK_DEBIAN_FILE_NAME # -------------------------------- -# Defult to gzip tar on unix. zip otherwise. +# Default to gzip tar on unix. zip otherwise. if (NOT CPACK_GENERATOR) if (UNIX) set( CPACK_GENERATOR "TGZ" ) From cf082919ccf0e1eb7cb65e547206ef4a5661b43c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 17:04:08 +0100 Subject: [PATCH 187/404] CMakeLists.txt: remove unused openssl code. --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 882a3b4..9ab1f71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,9 +65,6 @@ endif() configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) include_directories(${PROJECT_BINARY_DIR}) -# Include OpenSSL headers -#include_directories( ${OPENSSL_INCLUDE_DIR} ) - add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) target_link_libraries( ${PROGRAM_EXE} PUBLIC eoskeygen ) From 9f28dfcc295d5a086a7875ffe9162b095393356d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 25 Mar 2020 18:47:49 +0100 Subject: [PATCH 188/404] CMakeModules/libeoskeygen.cmake: allow LIBEOSKEYGEN_WANTED_VERSION to contain a git branch. --- CMakeModules/libeoskeygen.cmake | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 2159c05..19c8eb1 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -30,12 +30,19 @@ endmacro() if (LIBEOSKEYGEN_SOURCE_DIR) buildLocal( ${LIBEOSKEYGEN_SOURCE_DIR} ) else() - # Try finding the package on the system. - find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) - if (libeoskeygen_FOUND) - message ("Using libeoskeygen in: ${libeoskeygen_DIR}") - # Not found, download from git. + + # Check if version is in fact a version. + if (LIBEOSKEYGEN_WANTED_VERSION MATCHES "^[0-9]+(.[0-9]+)?(.[0-9]+)(-[a-zA-Z0-9]+)?$") + # Try finding the package on the system. + find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) + if (libeoskeygen_FOUND) + message ("Using libeoskeygen in: ${libeoskeygen_DIR}") + # Not found, download from git. + else() + fromGit( v${LIBEOSKEYGEN_WANTED_VERSION} ) + endif() + # Assume version contains a git branch. else() - fromGit( v${LIBEOSKEYGEN_WANTED_VERSION} ) + fromGit( ${LIBEOSKEYGEN_WANTED_VERSION} ) endif() endif() From 7266699db9c68c8edf44432f130622593eb4abca Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 15:19:10 +0100 Subject: [PATCH 189/404] CMake: use CPACK_DEBIAN_PACKAGE_SHLIBDEPS to autogenerate "Depends" field. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ab1f71..b6bc750 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,6 +94,6 @@ endif (UNIX) set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) set( CPACK_DEBIAN_PACKAGE_SECTION "misc" ) -set( CPACK_DEBIAN_PACKAGE_DEPENDS "libssl1.1, libc6" ) +set( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON ) include( cpack_custom ) From 9cba57d1ab85a13c97f95262ac5ce0befbc55f80 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 21:18:06 +0100 Subject: [PATCH 190/404] .github/workflows/ci.yml: we package for both ubuntu 16.04 and 18.04. so lets build for those also. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1dd50e..a108da7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: compile: strategy: matrix: - os: [ ubuntu-latest, macos-latest, windows-latest ] + os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] name: ${{matrix.os}} (${{matrix.build-opts}}) From aa2fd02884802227056d069607e741d9d8a1c6e9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 15:55:24 +0100 Subject: [PATCH 191/404] Github Actions: Remove OpenSSL from firedaemon on windows (its bundled). --- .github/workflows/ci.yml | 12 +----------- .github/workflows/package.yml | 8 -------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f1dd50e..d308364 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,14 +26,9 @@ jobs: mkdir -p build if [ "$RUNNER_OS" == "macOS" ]; then brew install openssl - elif [ "$RUNNER_OS" == "Windows" ]; then - cd build - curl https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -O - 7z x openssl-1.1.1e-dev.zip fi - - name: Configure (nix) - if: runner.os != 'Windows' + - name: Configure shell: bash run: | if [ "$RUNNER_OS" == "macOS" ]; then @@ -41,11 +36,6 @@ jobs: fi cd build && cmake ${SSL_OPTS} ${{matrix.build-opts}} .. - - name: Configure (win) - if: runner.os == 'Windows' - # cmake in windows bash can't find openssl. so we use windows cli. - run: cd build; cmake ${{matrix.build-opts}} -D OPENSSL_ROOT_DIR="$pwd\openssl-1.1\x64" .. - - name: Build shell: bash run: cmake --build build diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index fecd67b..18c0e6b 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -43,14 +43,6 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Dependancies - shell: bash - run: | - mkdir -p build - cd build - curl https://mirror.firedaemon.com/OpenSSL/openssl-1.1.1e-dev.zip -O - 7z x openssl-1.1.1e-dev.zip - - name: Configure run: | if ("${{matrix.arch}}" -eq "x86") { From 384ad2537b95fd21cd3ce7a58ab8e1974f4880ac Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 21:09:02 +0100 Subject: [PATCH 192/404] CMake: require libeoskeygen 0.1.1 --- CMakeModules/libeoskeygen.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 19c8eb1..99e62b8 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -3,7 +3,7 @@ # Variables # -------------------------------- set( LIBEOSKEYGEN_GIT_URL "https://github.com/eosswedenorg/libeoskeygen.git" ) -set( LIBEOSKEYGEN_WANTED_VERSION 0.1.0 ) +set( LIBEOSKEYGEN_WANTED_VERSION 0.1.1 ) # -------------------------------- # Macros From 44a1ea16bdf554f30db7b746668a8d7969c05e54 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 22:08:47 +0100 Subject: [PATCH 193/404] CMakeModules/libeoskeygen.cmake: call add_subdirectory() with EXCLUDE_FROM_ALL so we don't run all targets (install, cpack etc). --- CMakeModules/libeoskeygen.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake index 99e62b8..d58803f 100644 --- a/CMakeModules/libeoskeygen.cmake +++ b/CMakeModules/libeoskeygen.cmake @@ -18,12 +18,16 @@ macro(fromGit tag) GIT_TAG ${tag} ) - FetchContent_MakeAvailable(libeoskeygen) + FetchContent_GetProperties(libeoskeygen) + if (NOT libeoskeygen_POPULATED) + FetchContent_Populate(libeoskeygen) + add_subdirectory(${libeoskeygen_SOURCE_DIR} ${libeoskeygen_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() endmacro() macro(buildLocal src) message ("Using local libeoskeygen at: ${src}") - add_subdirectory(${src} ${src}/build) + add_subdirectory(${src} ${src}/build EXCLUDE_FROM_ALL) endmacro() # If we have a local libeoskeygen From 522c9ccfd5627d50ce7e4d8d34a65317e2559f1a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 13:53:37 +0100 Subject: [PATCH 194/404] CPack: add CPACK_RESOURCE_FILE_LICENSE for NSIS generator. --- CMakeLists.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6bc750..76bb598 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,6 +92,16 @@ endif (UNIX) # Package # -------------------------------- +if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") + set( NSIS_LICENSE_FILE ${PROJECT_BINARY_DIR}/NSIS_LICENSE ) + file(WRITE ${NSIS_LICENSE_FILE} "") + foreach(file IN ITEMS LICENSE LICENSE.bitcoin) + file(READ ${CMAKE_CURRENT_LIST_DIR}/${file} content) + file(APPEND ${NSIS_LICENSE_FILE} "--- ${file}\n\n${content}\n") + endforeach() + set( CPACK_RESOURCE_FILE_LICENSE ${NSIS_LICENSE_FILE} ) +endif() + set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) set( CPACK_DEBIAN_PACKAGE_SECTION "misc" ) set( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON ) From dd1fe841adeeb7eac3ca96d69aee065067146e05 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 28 Mar 2020 15:57:00 +0100 Subject: [PATCH 195/404] .github/workflows/package.yml: build windows installer instead of zip file. --- .github/workflows/package.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 18c0e6b..8398b5e 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -33,7 +33,7 @@ jobs: asset_path: ${{ steps.package.outputs.filename }} asset_content_type: application/x-deb - # Windows zip file + # Windows installer windows: strategy: matrix: @@ -50,7 +50,7 @@ jobs: } else { $PLATFORM="${{matrix.arch}}" } - cmake -A $PLATFORM -D OPENSSL_ROOT_DIR="$pwd/build/openssl-1.1/${{matrix.arch}}" -S . -B build + cmake -A $PLATFORM -D CPACK_GENERATOR=NSIS -S . -B build - name: Build run: cmake --build build --config Release @@ -58,10 +58,10 @@ jobs: - name: Package id: package run: | - cmake --build build --config Release --target package - $FILE=(ls build/eosio-keygen*.zip) + cmake --build build --target package + $FILE=(ls build/*.exe) echo "::set-output name=filename::$FILE" - echo "::set-output name=name::$(([io.fileinfo]"$FILE").basename).zip" + echo "::set-output name=name::$(([io.fileinfo]"$FILE").basename).exe" - name: Upload uses: actions/upload-release-asset@v1 @@ -71,4 +71,4 @@ jobs: upload_url: ${{ github.event.release.upload_url }} asset_name: ${{ steps.package.outputs.name }} asset_path: ${{ steps.package.outputs.filename }} - asset_content_type: application/zip + asset_content_type: application/vnd.microsoft.portable-executable From 920d422ff868aec2190e9880967d2be95fe3d404 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 30 Mar 2020 14:18:49 +0200 Subject: [PATCH 196/404] .github/workflows/ci.yml: pass "-B build" to cmake at configure stage. So we don't have to use mkdir/cd --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d8b29d..effe63a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,6 @@ jobs: - name: Dependancies shell: bash run: | - mkdir -p build if [ "$RUNNER_OS" == "macOS" ]; then brew install openssl fi @@ -34,7 +33,7 @@ jobs: if [ "$RUNNER_OS" == "macOS" ]; then SSL_OPTS="-D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1" fi - cd build && cmake ${SSL_OPTS} ${{matrix.build-opts}} .. + cmake ${SSL_OPTS} ${{matrix.build-opts}} -B build - name: Build shell: bash From 710a41a6f4ba64d30d6d667e083e3bd17563bb2a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 31 Mar 2020 10:34:04 +0200 Subject: [PATCH 197/404] src/main.cpp: update to use LIBEOSKEYGEN_HAVE_THREADS from and eoskeygen::KeySearch::max_threads() --- src/main.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 384d2fc..8dfb1fd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,11 +21,9 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifdef HAVE_THREADS -#include -#endif /* HAVE_THREADS */ #include #include +#include #include #include #include @@ -41,9 +39,9 @@ // Command line options. bool option_l33t = false; -#ifdef HAVE_THREADS -int option_num_threads = std::thread::hardware_concurrency(); -#endif /* HAVE_THREADS */ +#ifdef LIBEOSKEYGEN_HAVE_THREADS +size_t option_num_threads = eoskeygen::KeySearch::max_threads(); +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { @@ -70,15 +68,15 @@ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& d ks.addList(words); } -#ifdef HAVE_THREADS +#ifdef LIBEOSKEYGEN_HAVE_THREADS ks.setThreadCount(option_num_threads); -#endif /* HAVE_THREADS */ +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ std::cout << "Searching for " << count << " keys containing: " << eoskeygen::strjoin(ks.getList(), ",") -#ifdef HAVE_THREADS +#ifdef LIBEOSKEYGEN_HAVE_THREADS << ", Using: " << option_num_threads << " threads" -#endif /* HAVE_THREADS */ +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ << std::endl; ks.find(count); @@ -90,9 +88,9 @@ void usage(const char *name) { std::cout << name << " [ -h | --help | -v | search [ -m | --l33t" -#ifdef HAVE_THREADS +#ifdef LIBEOSKEYGEN_HAVE_THREADS << " | --threads=" -#endif /* HAVE_THREADS */ +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ << " | --dict= ... " << " | --lang= ... ] |file: [ ]" << " | benchmark [ ]" @@ -120,11 +118,11 @@ void usage(const char *name) { << std::endl << std::endl << " --l33t: Takes each word in and find all l33tspeak" << std::endl << " combinations of that word and uses the new list for the search." -#ifdef HAVE_THREADS +#ifdef LIBEOSKEYGEN_HAVE_THREADS << std::endl << std::endl << " --threads=: Use of parallel threads for searching." << std::endl << " Default is what the operating system recomend." -#endif /* HAVE_THREADS */ +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ << std::endl << std::endl << " --dict=: Use words found in (separated by newline) to" << std::endl << " highlight words in the keys found (note that the words in this" << std::endl @@ -192,7 +190,7 @@ int main(int argc, char **argv) { } else if (!strcmp(argv[p], "--l33t")) { option_l33t = true; } else if (!memcmp(argv[p], "--threads=", 10)) { -#ifdef HAVE_THREADS +#ifdef LIBEOSKEYGEN_HAVE_THREADS option_num_threads = atoi(argv[p] + 10); if (option_num_threads < 2) { std::cerr << "NOTICE: Number of threads less than 2 does not make sense." @@ -204,7 +202,7 @@ int main(int argc, char **argv) { // otherwise we might break scripts. Print a nice message instead. std::cerr << "NOTICE: eosio-keygen is not compiled with" << " thread support. this option is ignored." << std::endl; -#endif /* HAVE_THREADS */ +#endif /* LIBEOSKEYGEN_HAVE_THREADS */ } // Dictionary. else if (!memcmp(argv[p], "--dict=", 7)) { From ef9358821198af6c5525e2506d81be6f6e785819 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 31 Mar 2020 10:36:06 +0200 Subject: [PATCH 198/404] CMake: remove USE_THREADS --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 76bb598..2338012 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,7 +9,6 @@ project(eosio-keygen set( PROJECT_MAINTAINER "Henrik Hautakoski ") # Options -option(USE_THREADS "Compile with support for threads (if available)." ON) option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") From 9c86841612560f4792bcd3945d70600a96dba3e7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 31 Mar 2020 10:38:25 +0200 Subject: [PATCH 199/404] .github/workflows/ci.yml: set FORCE_ANSI as build opts and remove USE_THREADS --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index effe63a..ef1fafb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,7 @@ jobs: strategy: matrix: os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] - build-opts: [ "-DUSE_THREADS=ON", "-DUSE_THREADS=OFF" ] + build-opts: [ "-DFORCE_ANSI=ON", "-DFORCE_ANSI=OFF" ] name: ${{matrix.os}} (${{matrix.build-opts}}) runs-on: ${{matrix.os}} From 043900845f3f6a1478c436a4e96663af03037602 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 31 Mar 2020 11:00:48 +0200 Subject: [PATCH 200/404] Version 1.0.4 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2338012..d5c1d1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.15) # Project name and version project(eosio-keygen - VERSION 1.0.3 + VERSION 1.0.4 DESCRIPTION "Keygenerator for EOSIO" HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From f181bddc4f08f9bd599e84cae4d7d067e9ad4a8d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 3 Apr 2020 16:36:04 +0200 Subject: [PATCH 201/404] src/main.cpp: make changes for newer version of libeoskeygen --- src/main.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 8dfb1fd..d7834a7 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "cli_key_search_result.h" #include "console.h" @@ -73,7 +74,7 @@ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& d #endif /* LIBEOSKEYGEN_HAVE_THREADS */ std::cout << "Searching for " << count - << " keys containing: " << eoskeygen::strjoin(ks.getList(), ",") + << " keys containing: " << eoskeygen::strlist::join(ks.getList(), ",") #ifdef LIBEOSKEYGEN_HAVE_THREADS << ", Using: " << option_num_threads << " threads" #endif /* LIBEOSKEYGEN_HAVE_THREADS */ @@ -250,7 +251,7 @@ int main(int argc, char **argv) { } // List else { - words = eoskeygen::strsplitwords(arg); + words = eoskeygen::strlist::splitw(arg); } if (p + 1 < argc) { From 654a53698f660c465d6cf8b803ad12d598c2f3bd Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 3 Apr 2020 16:39:43 +0200 Subject: [PATCH 202/404] Importing libeoskeygen as "common" module in this repo (the amount of git repos is too damn high!) --- common/.gitignore | 1 + common/CMakeLists.txt | 49 ++++++++ common/cmake/libeosio.cmake | 51 ++++++++ common/include/eoskeygen/config.h | 30 +++++ common/include/eoskeygen/core/dictionary.h | 72 +++++++++++ common/include/eoskeygen/core/file.h | 35 ++++++ common/include/eoskeygen/core/leet.h | 36 ++++++ common/include/eoskeygen/core/string.h | 41 ++++++ common/include/eoskeygen/core/strlist.h | 50 ++++++++ common/include/eoskeygen/key_search.h | 104 +++++++++++++++ common/include/eoskeygen/key_search_result.h | 40 ++++++ common/src/config.h.in | 30 +++++ common/src/core/dictionary.cpp | 125 +++++++++++++++++++ common/src/core/file.cpp | 49 ++++++++ common/src/core/leet.cpp | 82 ++++++++++++ common/src/core/string.cpp | 52 ++++++++ common/src/core/strlist.cpp | 75 +++++++++++ common/src/key_search.cpp | 115 +++++++++++++++++ common/src/key_search_mt.cpp | 106 ++++++++++++++++ 19 files changed, 1143 insertions(+) create mode 100644 common/.gitignore create mode 100644 common/CMakeLists.txt create mode 100644 common/cmake/libeosio.cmake create mode 100644 common/include/eoskeygen/config.h create mode 100644 common/include/eoskeygen/core/dictionary.h create mode 100644 common/include/eoskeygen/core/file.h create mode 100644 common/include/eoskeygen/core/leet.h create mode 100644 common/include/eoskeygen/core/string.h create mode 100644 common/include/eoskeygen/core/strlist.h create mode 100644 common/include/eoskeygen/key_search.h create mode 100644 common/include/eoskeygen/key_search_result.h create mode 100644 common/src/config.h.in create mode 100644 common/src/core/dictionary.cpp create mode 100644 common/src/core/file.cpp create mode 100644 common/src/core/leet.cpp create mode 100644 common/src/core/string.cpp create mode 100644 common/src/core/strlist.cpp create mode 100644 common/src/key_search.cpp create mode 100644 common/src/key_search_mt.cpp diff --git a/common/.gitignore b/common/.gitignore new file mode 100644 index 0000000..9375aee --- /dev/null +++ b/common/.gitignore @@ -0,0 +1 @@ +include/eoskeygen/config.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt new file mode 100644 index 0000000..fa9e2d5 --- /dev/null +++ b/common/CMakeLists.txt @@ -0,0 +1,49 @@ +# ------------------------------------------------------------ +# Common CMake file +# +# Compiles the code that should be shared between the cli +# and gui programs into a static library. +# ------------------------------------------------------------ + +# Options +option(USE_THREADS "Compile with support for threads (if available)." ON) + +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") + +# -------------------------------- +# Library +# -------------------------------- +set( COMMON_NAME common ) + +set( COMMON_SOURCE + src/core/file.cpp + src/core/dictionary.cpp + src/core/string.cpp + src/core/strlist.cpp + src/core/leet.cpp + src/key_search.cpp +) + +# Threads support +if (USE_THREADS) + find_package(Threads) + if (Threads_FOUND) + set( EOSIOKEYGEN_HAVE_THREADS TRUE ) + set( COMMON_SOURCE ${COMMON_SOURCE} src/key_search_mt.cpp ) + endif (Threads_FOUND) +endif (USE_THREADS) + +# Project config file +configure_file(src/config.h.in "${CMAKE_CURRENT_LIST_DIR}/include/eoskeygen/config.h" @ONLY) + +add_library( ${COMMON_NAME} STATIC ${COMMON_SOURCE} ) + +target_include_directories( ${COMMON_NAME} PUBLIC include ) + +# Link with libeosio and threads library. +include( libeosio ) +target_link_libraries( ${COMMON_NAME} + PUBLIC + libeosio + ${CMAKE_THREAD_LIBS_INIT} +) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake new file mode 100644 index 0000000..6427170 --- /dev/null +++ b/common/cmake/libeosio.cmake @@ -0,0 +1,51 @@ +# -------------------------------- +# Variables +# -------------------------------- +set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) +set( LIBEOSIO_WANTED_VERSION 0.1.0 ) + +# -------------------------------- +# Macros +# -------------------------------- +macro(fromGit tag) + + message ("Using libeosio from: ${LIBEOSIO_GIT_URL}@${tag}") + + include(FetchContent) + FetchContent_Declare(libeosio + GIT_REPOSITORY ${LIBEOSIO_GIT_URL} + GIT_TAG ${tag} + ) + + FetchContent_GetProperties(libeosio) + if (NOT libeosio_POPULATED) + FetchContent_Populate(libeosio) + add_subdirectory(${libeosio_SOURCE_DIR} ${libeosio_BINARY_DIR} EXCLUDE_FROM_ALL) + endif() +endmacro() + +macro(buildLocal src) + message ("Using local libeosio at: ${src}") + add_subdirectory(${src} ${src}/build EXCLUDE_FROM_ALL) +endmacro() + +# If we have a locallibeosio +if (LIBEOSIO_SOURCE_DIR) + buildLocal( ${LIBEOSIO_SOURCE_DIR} ) +else() + + # Check if version is in fact a version. + if (LIBEOSIO_WANTED_VERSION MATCHES "^[0-9]+(.[0-9]+)?(.[0-9]+)(-[a-zA-Z0-9]+)?$") + # Try finding the package on the system. + find_package(libeosio ${LIBEOSIO_WANTED_VERSION} QUIET) + if (libeoskeygen_FOUND) + message ("Using libeosio in: ${libeosio_DIR}") + # Not found, download from git. + else() + fromGit( v${LIBEOSIO_WANTED_VERSION} ) + endif() + # Assume version contains a git branch. + else() + fromGit( ${LIBEOSIO_WANTED_VERSION} ) + endif() +endif() diff --git a/common/include/eoskeygen/config.h b/common/include/eoskeygen/config.h new file mode 100644 index 0000000..5728f1f --- /dev/null +++ b/common/include/eoskeygen/config.h @@ -0,0 +1,30 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CONFIG_H +#define EOSIOKEYGEN_COMMON_CONFIG_H + +// Defined if we have thread support. +#define EOSIOKEYGEN_HAVE_THREADS + +#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */ diff --git a/common/include/eoskeygen/core/dictionary.h b/common/include/eoskeygen/core/dictionary.h new file mode 100644 index 0000000..3197108 --- /dev/null +++ b/common/include/eoskeygen/core/dictionary.h @@ -0,0 +1,72 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H +#define EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H + +#include +#include +#include + +namespace eoskeygen { + +class Dictionary +{ +public : + // Map that contains position and length for substrings. + // + // key = position in the search string. + // value = length of the word from this position. + typedef std::map< size_t, size_t > search_result_t; + +public : + + // Load words from file. + bool loadFromFile(const std::string& filename); + + // Add a word to the dictionary. + void add(const std::string& word); + + // Add words from another dictionary. + void add(const Dictionary& dictionary); + + // Clear all words from the dictionary. + void clear(); + + // Returns true if word exists in the dictionary. + bool contains(const std::string& word) const; + + // Searches the subject for words defined in the dictionary. + // Returns a search_result_t with the words found in subject. + // See search_result_t for more details. + search_result_t search(const std::string& subject) const; + +protected : + + // Words in the dictionary. + std::set m_words; +}; + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H */ diff --git a/common/include/eoskeygen/core/file.h b/common/include/eoskeygen/core/file.h new file mode 100644 index 0000000..fffebaa --- /dev/null +++ b/common/include/eoskeygen/core/file.h @@ -0,0 +1,35 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CORE_FILE_H +#define EOSIOKEYGEN_COMMON_CORE_FILE_H + +#include + +namespace eoskeygen { + +bool readLines(const std::string& filename, strlist_t& lines); + +} // namespace + +#endif /* EOSIOKEYGEN_COMMON_CORE_FILE_H */ diff --git a/common/include/eoskeygen/core/leet.h b/common/include/eoskeygen/core/leet.h new file mode 100644 index 0000000..01289fc --- /dev/null +++ b/common/include/eoskeygen/core/leet.h @@ -0,0 +1,36 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CORE_LEET_H +#define EOSIOKEYGEN_COMMON_CORE_LEET_H + +#include +#include + +namespace eoskeygen { + +strlist_t l33twords(std::string str); + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_CORE_LEET_H */ diff --git a/common/include/eoskeygen/core/string.h b/common/include/eoskeygen/core/string.h new file mode 100644 index 0000000..b9ae23a --- /dev/null +++ b/common/include/eoskeygen/core/string.h @@ -0,0 +1,41 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CORE_STRING_H +#define EOSIOKEYGEN_COMMON_CORE_STRING_H + +#include +#include +#include + +namespace eoskeygen { + +std::string& strtolower(std::string& str); + +std::string& rtrim(std::string& str); +std::string& ltrim(std::string& str); +std::string& trim(std::string& str); + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_CORE_STRING_H */ diff --git a/common/include/eoskeygen/core/strlist.h b/common/include/eoskeygen/core/strlist.h new file mode 100644 index 0000000..b1e8d99 --- /dev/null +++ b/common/include/eoskeygen/core/strlist.h @@ -0,0 +1,50 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CORE_STRLIST_H +#define EOSIOKEYGEN_COMMON_CORE_STRLIST_H + +#include +#include + +namespace eoskeygen { + +typedef std::vector strlist_t; + +typedef std::string& (*strlist_stripfunc_t)(std::string& str); + +namespace strlist { + +strlist_t splitw(const std::string& str, const std::string& delim = ","); + +strlist_t split(const std::string& str, const std::string& delim); + +std::string join(const strlist_t& list, const std::string& delim); + +strlist_t& strip(strlist_t& list, strlist_stripfunc_t fn); + +} // namespace strlist + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_CORE_STRLIST_H */ diff --git a/common/include/eoskeygen/key_search.h b/common/include/eoskeygen/key_search.h new file mode 100644 index 0000000..226b9cc --- /dev/null +++ b/common/include/eoskeygen/key_search.h @@ -0,0 +1,104 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_KEY_SEARCH_H +#define EOSIOKEYGEN_COMMON_KEY_SEARCH_H + +#include +#include +#include +#include +#include + +namespace eoskeygen { + +class IKeySearchResult; + +class KeySearch +{ +public : + + struct result { + size_t pos; // position where the word was found. + size_t len; // the length of the word. + }; + +public : + KeySearch(); + + // Add a word to search for. + void addWord(const std::string& str); + + // Add a list of words to search for. + void addList(const strlist_t& list); + + // get the list of words to search for. + const strlist_t& getList(); + + // Clears the search list. + void clear(); + + // Set callback for search result. + void setCallback(IKeySearchResult* callback); + +#ifdef EOSIOKEYGEN_HAVE_THREADS + // Returns the maximum number of threads + // reported by the operating system. + static size_t max_threads(); + + // Set the number of threads to use while searching. + void setThreadCount(size_t num); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ + + // Perform a search. + void find(size_t num_results); + +protected : + + // Check if any word in appears in 's public key. + // returns true if a word was found (stored in ), false otherwise. + bool _contains_word(const struct libeosio::ec_keypair* key, struct result& result); + +#ifdef EOSIOKEYGEN_HAVE_THREADS + void _thr_proc(); + + void _search_mt(size_t n); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ + + void _search_linear(size_t n); + +protected : + // List of words to search for. + strlist_t m_words; + +#ifdef EOSIOKEYGEN_HAVE_THREADS + // Number of threads to use. + size_t m_threads; +#endif /* EOSIOKEYGEN_HAVE_THREADS */ + + IKeySearchResult* m_callback; +}; + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_KEY_SEARCH_H */ diff --git a/common/include/eoskeygen/key_search_result.h b/common/include/eoskeygen/key_search_result.h new file mode 100644 index 0000000..943e6d9 --- /dev/null +++ b/common/include/eoskeygen/key_search_result.h @@ -0,0 +1,40 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H +#define EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H + +#include + +namespace eoskeygen { + +class IKeySearchResult +{ +public : + + virtual void onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result) = 0; +}; + +} // namespace eoskeygen + +#endif /* EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H */ diff --git a/common/src/config.h.in b/common/src/config.h.in new file mode 100644 index 0000000..7871d9f --- /dev/null +++ b/common/src/config.h.in @@ -0,0 +1,30 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CONFIG_H +#define EOSIOKEYGEN_COMMON_CONFIG_H + +// Defined if we have thread support. +#cmakedefine EOSIOKEYGEN_HAVE_THREADS + +#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */ diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp new file mode 100644 index 0000000..0e74906 --- /dev/null +++ b/common/src/core/dictionary.cpp @@ -0,0 +1,125 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include + +namespace eoskeygen { + +struct StringContains { + StringContains(const std::string& str, std::vector& pos) : m_str(str), m_pos(pos) {} + bool operator()(const std::string& w) { + for(size_t p = m_str.find(w); p != std::string::npos; p = m_str.find(w, p+1)) { + m_pos.push_back(p); + } + return !m_pos.empty(); + } + std::string m_str; + std::vector& m_pos; +}; + +bool Dictionary::loadFromFile(const std::string& filename) +{ + strlist_t lines; + + // Clear before adding. + clear(); + + if (readLines(filename, lines)) { + + // Read each line and add to the dictionary. + for(auto it = lines.begin(); it != lines.end(); it++) { + add(*it); + } + return true; + } + return false; +} + +void Dictionary::add(const std::string& word) +{ + // Do not insert a empty string. + if (word.length()) { + m_words.insert(word); + } +} + +void Dictionary::add(const Dictionary& dictionary) +{ + std::set_union( + m_words.begin(), m_words.end(), + dictionary.m_words.begin(), dictionary.m_words.end(), + std::inserter(m_words, m_words.begin()) + ); +} + +void Dictionary::clear() +{ + m_words.clear(); +} + +bool Dictionary::contains(const std::string& word) const +{ + return m_words.find(word) != m_words.cend(); +} + +Dictionary::search_result_t Dictionary::search(const std::string& subject) const +{ + search_result_t res; + + std::vector pos; + StringContains pred(subject, pos); + + // Find all words. + for(auto it = std::find_if(m_words.begin(), m_words.end(), pred); + it != m_words.end(); + it = std::find_if(++it, m_words.end(), pred)) { + + // Go through all found positions. + for (auto it2 = pos.begin(); it2 != pos.end(); it2++) { + + // Insert + auto rit = res.find(*it2); + if (rit == res.end()) { + res.emplace(*it2, it->length()); + } + // Update length if it's longer then the previous we found. + else if (rit->second < it->length()) { + rit->second = it->length(); + } + } + + // Clear positions + pos.clear(); + } + + return res; +} + +} // namespace eoskeygen diff --git a/common/src/core/file.cpp b/common/src/core/file.cpp new file mode 100644 index 0000000..ac73356 --- /dev/null +++ b/common/src/core/file.cpp @@ -0,0 +1,49 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include + +namespace eoskeygen { + +bool readLines(const std::string& filename, strlist_t& lines) { + + FILE *fd; + char buf[1024]; + + fd = fopen(filename.c_str(), "r"); + if (!fd) { + return false; + } + + while(fgets(buf, sizeof(buf), fd) != NULL) { + std::string line(buf); + lines.push_back(trim(line)); + } + + fclose(fd); + return true; +} + +} // namespace eoskeygen diff --git a/common/src/core/leet.cpp b/common/src/core/leet.cpp new file mode 100644 index 0000000..bf0e7f1 --- /dev/null +++ b/common/src/core/leet.cpp @@ -0,0 +1,82 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include + +namespace eoskeygen { + +static bool is_l33t(char ch, char& r) { + + // '1', '2', '3', '4', '5', '6', '7', '8', '9' + static char alphabet[9] = { 'l', 'z', 'e', 'a', 's', 'G', 't', 'B', 'g' }; + + for(std::size_t i = 0; i < sizeof(alphabet) / sizeof(char); i++) { + + if (ch == alphabet[i]) { + r = static_cast('1' + i); + return true; + } + } + return false; +} + +static void _l33t(strlist_t& list, const std::string& a, std::size_t pos) { + + // Find the next character to be replaced. + for(std::size_t i = pos; i < a.length(); i++) { + + char ch; + if (is_l33t(a[i], ch)) { + // create a new string and replace the character. + std::string b = a; + b[i] = ch; + + // Store the new string as the result. + list.push_back(b); + + // Perform the same algorithm for both strings + // at the next position. + _l33t(list, a, i + 1); + _l33t(list, b, i + 1); + break; + } + } +} + +strlist_t l33twords(std::string str) { + + strlist_t list; + + // "l" is abit special and are not included in base58 so we set it to 1. + // All other characters in "l33t" are valid. + std::transform(str.begin(), str.end(), str.begin(), [](char c){ return c == 'l' ? '1' : c; }); + + // Store the original string as the first in list. + list.push_back(str); + + _l33t(list, str, 0); + return list; +} + +} // namespace eoskeygen diff --git a/common/src/core/string.cpp b/common/src/core/string.cpp new file mode 100644 index 0000000..164e362 --- /dev/null +++ b/common/src/core/string.cpp @@ -0,0 +1,52 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include + +namespace eoskeygen { + +std::string& strtolower(std::string& str) { + std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); }); + return str; +} + +std::string& ltrim(std::string& str) { + auto it = std::find_if(str.begin(), str.end(), [](char ch){ return !std::isspace(ch); }); + str.erase(str.begin(), it); + return str; +} + +std::string& rtrim(std::string& str) { + auto it = std::find_if(str.rbegin(), str.rend(), [](char ch){ return !std::isspace(ch); }); + str.erase(it.base(), str.end()); + return str; +} + +std::string& trim(std::string& str) { + return ltrim(rtrim(str)); +} + +} // namespace eoskeygen diff --git a/common/src/core/strlist.cpp b/common/src/core/strlist.cpp new file mode 100644 index 0000000..ea12151 --- /dev/null +++ b/common/src/core/strlist.cpp @@ -0,0 +1,75 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include + +namespace eoskeygen { + +strlist_t strlist::splitw(const std::string& str, const std::string& delim) { + + strlist_t words = strlist::split(str, delim); + std::for_each(words.begin(), words.end(), trim); + return words; +} + +strlist_t strlist::split(const std::string& str, const std::string& delim) { + + strlist_t r; + size_t s = 0, e = 0, dlen = delim.length(); + + while((e = str.find(delim, s)) != std::string::npos) { + r.push_back(str.substr(s, e - s)); + s = e + dlen; + } + + r.push_back(str.substr(s)); + return r; +} + +std::string strlist::join(const eoskeygen::strlist_t& list, const std::string& delim) { + + std::string out; + + for(const std::string& item : list) { + if (item.length() < 1) { + continue; + } + out += item + delim; + } + + if (out.length() > 0) { + out.erase(out.end() - delim.length()); + } + + return out; +} + +strlist_t& strlist::strip(strlist_t& list, strlist_stripfunc_t fn) { + + std::transform(list.begin(), list.end(), list.begin(), fn); + return list; +} + +} // namespace eoskeygen diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp new file mode 100644 index 0000000..e97e14a --- /dev/null +++ b/common/src/key_search.cpp @@ -0,0 +1,115 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include + +namespace eoskeygen { + +KeySearch::KeySearch() : +#ifdef EOSIOKEYGEN_HAVE_THREADS + m_threads(0), +#endif + m_callback(NULL) +{ +} + +void KeySearch::addWord(const std::string& str) +{ + std::string tmp = str; + strtolower(tmp); + m_words.push_back(tmp); +} + +void KeySearch::addList(const strlist_t& list) +{ + for(const std::string& item : list) { + addWord(item); + } +} + +const strlist_t& KeySearch::getList() +{ + return m_words; +} + +void KeySearch::clear() +{ + m_words.clear(); +} + +void KeySearch::setCallback(IKeySearchResult* callback) +{ + m_callback = callback; +} + +void KeySearch::_search_linear(size_t n) { + + size_t count = 0; + struct libeosio::ec_keypair pair; + + while (count < n) { + struct result res; + libeosio::ec_generate_key(&pair); + if (_contains_word(&pair, res)) { + m_callback->onResult(&pair, res); + count++; + } + } +} + +void KeySearch::find(size_t num_results) { + +#ifdef EOSIOKEYGEN_HAVE_THREADS + // Only do multithread if number of threads makes sense. + if (m_threads >= 2) { + _search_mt(num_results); + return; + } +#endif /* HAVE_THREADS */ + + _search_linear(num_results); +} + +bool KeySearch::_contains_word(const struct libeosio::ec_keypair* key, struct result& result) { + + // skip first 3 chars, as those are always "EOS" + std::string pubstr = libeosio::wif_pub_encode(key->pub).substr(3); + strtolower(pubstr); + + for(auto const& w: m_words) { + size_t p = pubstr.find(w); + if (p != std::string::npos) { + result.pos = p + 3; + result.len = w.length(); + return true; + } + } + return false; +} + +} // namespace eoskeygen diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp new file mode 100644 index 0000000..2e498ff --- /dev/null +++ b/common/src/key_search_mt.cpp @@ -0,0 +1,106 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include + +namespace eoskeygen { + +// Max keys to search for, +std::size_t g_max; + +// How many keys we have found so far. +std::size_t g_count; + +// Mutex guard for g_count. +std::mutex g_count_mtx; + +// Thread process. +void KeySearch::_thr_proc() { + + struct libeosio::ec_keypair pair; + + while (g_count < g_max) { + struct result res; + + libeosio::ec_generate_key(&pair); + if (_contains_word(&pair, res)) { + + // Guard output with mutex, so we don't get + // interrupted mid write and can write to g_count and res safely. + const std::lock_guard lock(g_count_mtx); + + // It is possible g_count was updated by another thread + // after we checked it in the while loop. + // So while we have the lock, we need to check it again. + if (g_count >= g_max) { + return; + } + + // Update count and call result function. + g_count++; + m_callback->onResult(&pair, res); + } + } +} + +void KeySearch::setThreadCount(size_t num) +{ + m_threads = num; +} + +size_t KeySearch::max_threads() +{ + return std::thread::hardware_concurrency(); +} + +void KeySearch::_search_mt(size_t n) +{ + std::vector t; + + t.resize(m_threads - 1); + + // Setup global variables for the threads. + g_max = n; + g_count = 0; + + // Launch them. + for(std::size_t i = 0; i < t.size(); i++) { + t[i] = std::thread(&KeySearch::_thr_proc, this); + } + + // Use main thread for 1 search + _thr_proc(); + + // Wait for all threads to compelete. + for(std::size_t i = 0; i < t.size(); i++) { + t[i].join(); + } +} + +} // namespace eoskeygen From dd9dd484e378a079aceb37109da357009f0a03f9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 3 Apr 2020 16:53:32 +0200 Subject: [PATCH 203/404] Use the "common" subfolder instead of libeoskeygen repository. --- CMakeLists.txt | 9 ++++-- CMakeModules/libeoskeygen.cmake | 52 --------------------------------- src/benchmark.cpp | 6 ++-- src/cli_key_search_result.cpp | 8 ++--- src/cli_key_search_result.h | 4 +-- src/main.cpp | 38 ++++++++++++------------ 6 files changed, 34 insertions(+), 83 deletions(-) delete mode 100644 CMakeModules/libeoskeygen.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index d5c1d1d..197a292 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,6 @@ option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") -include(libeoskeygen) - # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) @@ -39,6 +37,11 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") add_definitions( "-D_CRT_SECURE_NO_WARNINGS=1" ) endif() +# -------------------------------- +# Common code +# -------------------------------- +add_subdirectory( common ) + # -------------------------------- # Program # -------------------------------- @@ -66,7 +69,7 @@ include_directories(${PROJECT_BINARY_DIR}) add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) -target_link_libraries( ${PROGRAM_EXE} PUBLIC eoskeygen ) +target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) # -------------------------------- # Install diff --git a/CMakeModules/libeoskeygen.cmake b/CMakeModules/libeoskeygen.cmake deleted file mode 100644 index d58803f..0000000 --- a/CMakeModules/libeoskeygen.cmake +++ /dev/null @@ -1,52 +0,0 @@ - -# -------------------------------- -# Variables -# -------------------------------- -set( LIBEOSKEYGEN_GIT_URL "https://github.com/eosswedenorg/libeoskeygen.git" ) -set( LIBEOSKEYGEN_WANTED_VERSION 0.1.1 ) - -# -------------------------------- -# Macros -# -------------------------------- -macro(fromGit tag) - - message ("Using libeoskeygen from: ${LIBEOSKEYGEN_GIT_URL}@${tag}") - - include(FetchContent) - FetchContent_Declare(libeoskeygen - GIT_REPOSITORY ${LIBEOSKEYGEN_GIT_URL} - GIT_TAG ${tag} - ) - - FetchContent_GetProperties(libeoskeygen) - if (NOT libeoskeygen_POPULATED) - FetchContent_Populate(libeoskeygen) - add_subdirectory(${libeoskeygen_SOURCE_DIR} ${libeoskeygen_BINARY_DIR} EXCLUDE_FROM_ALL) - endif() -endmacro() - -macro(buildLocal src) - message ("Using local libeoskeygen at: ${src}") - add_subdirectory(${src} ${src}/build EXCLUDE_FROM_ALL) -endmacro() - -# If we have a local libeoskeygen -if (LIBEOSKEYGEN_SOURCE_DIR) - buildLocal( ${LIBEOSKEYGEN_SOURCE_DIR} ) -else() - - # Check if version is in fact a version. - if (LIBEOSKEYGEN_WANTED_VERSION MATCHES "^[0-9]+(.[0-9]+)?(.[0-9]+)(-[a-zA-Z0-9]+)?$") - # Try finding the package on the system. - find_package(libeoskeygen ${LIBEOSKEYGEN_WANTED_VERSION} QUIET) - if (libeoskeygen_FOUND) - message ("Using libeoskeygen in: ${libeoskeygen_DIR}") - # Not found, download from git. - else() - fromGit( v${LIBEOSKEYGEN_WANTED_VERSION} ) - endif() - # Assume version contains a git branch. - else() - fromGit( ${LIBEOSKEYGEN_WANTED_VERSION} ) - endif() -endif() diff --git a/src/benchmark.cpp b/src/benchmark.cpp index 43d8b35..da384a4 100644 --- a/src/benchmark.cpp +++ b/src/benchmark.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include +#include #include "benchmark.h" using std::chrono::steady_clock; @@ -43,8 +43,8 @@ void benchmark(size_t num_keys, struct benchmark_result* res) { start = steady_clock::now(); for(size_t i = 0; i < num_keys; i++) { - struct ec_keypair k; - ec_generate_key(&k); + struct libeosio::ec_keypair k; + libeosio::ec_generate_key(&k); } res->sec = duration(steady_clock::now() - start).count(); diff --git a/src/cli_key_search_result.cpp b/src/cli_key_search_result.cpp index b61ea3a..05d5b57 100644 --- a/src/cli_key_search_result.cpp +++ b/src/cli_key_search_result.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ #include +#include #include -#include #include "console.h" #include "cli_key_search_result.h" @@ -42,9 +42,9 @@ m_dict (dict) { } -void CliKeySearchResult::onResult(const struct ec_keypair* key, const struct KeySearch::result& result) { +void CliKeySearchResult::onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result) { - std::string pub = wif_pub_encode(key->pub); + std::string pub = libeosio::wif_pub_encode(key->pub); Dictionary::search_result_t dict_res = m_dict.search(pub); std::cout << "----" << std::endl; @@ -68,7 +68,7 @@ void CliKeySearchResult::onResult(const struct ec_keypair* key, const struct Key } std::cout << std::endl - << "Private: " << wif_priv_encode(key->secret) << std::endl; + << "Private: " << libeosio::wif_priv_encode(key->secret) << std::endl; } } // namespace eoskeygen diff --git a/src/cli_key_search_result.h b/src/cli_key_search_result.h index 2645aeb..0d7e6b2 100644 --- a/src/cli_key_search_result.h +++ b/src/cli_key_search_result.h @@ -24,8 +24,8 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H +#include #include -#include #include #include @@ -38,7 +38,7 @@ class CliKeySearchResult : public IKeySearchResult public: CliKeySearchResult(const Dictionary& dict); - virtual void onResult(const struct ec_keypair* key, const struct KeySearch::result& result); + virtual void onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result); protected : diff --git a/src/main.cpp b/src/main.cpp index d7834a7..eb74b8b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -23,13 +23,13 @@ */ #include #include +#include +#include +#include #include #include #include #include -#include -#include -#include #include #include #include "cli_key_search_result.h" @@ -40,9 +40,9 @@ // Command line options. bool option_l33t = false; -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS size_t option_num_threads = eoskeygen::KeySearch::max_threads(); -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { @@ -52,7 +52,7 @@ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& d ks.setCallback(&rs); for(auto it = words.begin(); it != words.end(); it++) { - size_t p = eoskeygen::is_base58(*it); + size_t p = libeosio::is_base58(*it); if (p != std::string::npos) { std::cerr << "The word '" << *it << "' contains an invalid non-base58 character '" @@ -69,15 +69,15 @@ int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& d ks.addList(words); } -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS ks.setThreadCount(option_num_threads); -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ std::cout << "Searching for " << count << " keys containing: " << eoskeygen::strlist::join(ks.getList(), ",") -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS << ", Using: " << option_num_threads << " threads" -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ << std::endl; ks.find(count); @@ -89,9 +89,9 @@ void usage(const char *name) { std::cout << name << " [ -h | --help | -v | search [ -m | --l33t" -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS << " | --threads=" -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ << " | --dict= ... " << " | --lang= ... ] |file: [ ]" << " | benchmark [ ]" @@ -119,11 +119,11 @@ void usage(const char *name) { << std::endl << std::endl << " --l33t: Takes each word in and find all l33tspeak" << std::endl << " combinations of that word and uses the new list for the search." -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS << std::endl << std::endl << " --threads=: Use of parallel threads for searching." << std::endl << " Default is what the operating system recomend." -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ << std::endl << std::endl << " --dict=: Use words found in (separated by newline) to" << std::endl << " highlight words in the keys found (note that the words in this" << std::endl @@ -163,9 +163,9 @@ int main(int argc, char **argv) { // No args, just print a key. if (argc <= 1) { - struct eoskeygen::ec_keypair pair; - eoskeygen::ec_generate_key(&pair); - eoskeygen::wif_print_key(&pair); + struct libeosio::ec_keypair pair; + libeosio::ec_generate_key(&pair); + libeosio::wif_print_key(&pair); return 0; } @@ -191,7 +191,7 @@ int main(int argc, char **argv) { } else if (!strcmp(argv[p], "--l33t")) { option_l33t = true; } else if (!memcmp(argv[p], "--threads=", 10)) { -#ifdef LIBEOSKEYGEN_HAVE_THREADS +#ifdef EOSIOKEYGEN_HAVE_THREADS option_num_threads = atoi(argv[p] + 10); if (option_num_threads < 2) { std::cerr << "NOTICE: Number of threads less than 2 does not make sense." @@ -203,7 +203,7 @@ int main(int argc, char **argv) { // otherwise we might break scripts. Print a nice message instead. std::cerr << "NOTICE: eosio-keygen is not compiled with" << " thread support. this option is ignored." << std::endl; -#endif /* LIBEOSKEYGEN_HAVE_THREADS */ +#endif /* EOSIOKEYGEN_HAVE_THREADS */ } // Dictionary. else if (!memcmp(argv[p], "--dict=", 7)) { From 9a5f0cff1cd9e496af0f647c2b7570437b160470 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 7 Apr 2020 16:05:18 +0200 Subject: [PATCH 204/404] common/cmake/libeosio.cmake: Use commit 137d5cbe31666a748954dd233e54c5703480ebbf --- common/cmake/libeosio.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index 6427170..8373f2d 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION 0.1.0 ) +set( LIBEOSIO_WANTED_VERSION 137d5cbe31666a748954dd233e54c5703480ebbf ) # -------------------------------- # Macros From 526b87670be850987fd5a5d7b5ba5b25c51cba27 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 7 Apr 2020 17:16:07 +0200 Subject: [PATCH 205/404] remove LICENSE.bitcoin (this code exist in libeosio) --- CMakeLists.txt | 10 ++-------- LICENSE.bitcoin | 22 ---------------------- 2 files changed, 2 insertions(+), 30 deletions(-) delete mode 100644 LICENSE.bitcoin diff --git a/CMakeLists.txt b/CMakeLists.txt index 197a292..13db013 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,7 +78,7 @@ target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) # Readme and license -install(FILES README.md LICENSE LICENSE.bitcoin +install(FILES README.md LICENSE DESTINATION ${CMAKE_INSTALL_SHAREDIR}) # Documentation @@ -95,13 +95,7 @@ endif (UNIX) # -------------------------------- if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") - set( NSIS_LICENSE_FILE ${PROJECT_BINARY_DIR}/NSIS_LICENSE ) - file(WRITE ${NSIS_LICENSE_FILE} "") - foreach(file IN ITEMS LICENSE LICENSE.bitcoin) - file(READ ${CMAKE_CURRENT_LIST_DIR}/${file} content) - file(APPEND ${NSIS_LICENSE_FILE} "--- ${file}\n\n${content}\n") - endforeach() - set( CPACK_RESOURCE_FILE_LICENSE ${NSIS_LICENSE_FILE} ) + set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_LIST_DIR}/LICENSE ) endif() set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) diff --git a/LICENSE.bitcoin b/LICENSE.bitcoin deleted file mode 100644 index 9d54ecb..0000000 --- a/LICENSE.bitcoin +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2009-2019 The Bitcoin Core developers -Copyright (c) 2009-2019 Bitcoin Developers - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. From ba0efa2dd7bec122fd41723f5e3b27a2794fc4a2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 7 Apr 2020 22:37:05 +0200 Subject: [PATCH 206/404] move src dir to cli and add it's own cmake file. --- CMakeLists.txt | 49 ++++---------------------- cli/CMakeLists.txt | 42 ++++++++++++++++++++++ {src => cli}/benchmark.cpp | 0 {src => cli}/benchmark.h | 0 {src => cli}/cli_key_search_result.cpp | 0 {src => cli}/cli_key_search_result.h | 0 {src => cli}/console.cpp | 0 {src => cli}/console.h | 0 {src => cli}/console_ansi.cpp | 0 {src => cli}/console_win32.cpp | 0 {docs => cli/docs}/eosio-keygen.1.in | 0 {src => cli}/isatty.cpp | 0 {src => cli}/isatty.h | 0 {src => cli}/main.cpp | 0 src/config.h.in => config.h.in | 0 15 files changed, 48 insertions(+), 43 deletions(-) create mode 100644 cli/CMakeLists.txt rename {src => cli}/benchmark.cpp (100%) rename {src => cli}/benchmark.h (100%) rename {src => cli}/cli_key_search_result.cpp (100%) rename {src => cli}/cli_key_search_result.h (100%) rename {src => cli}/console.cpp (100%) rename {src => cli}/console.h (100%) rename {src => cli}/console_ansi.cpp (100%) rename {src => cli}/console_win32.cpp (100%) rename {docs => cli/docs}/eosio-keygen.1.in (100%) rename {src => cli}/isatty.cpp (100%) rename {src => cli}/isatty.h (100%) rename {src => cli}/main.cpp (100%) rename src/config.h.in => config.h.in (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 13db013..e81fa4d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,9 +8,6 @@ project(eosio-keygen set( PROJECT_MAINTAINER "Henrik Hautakoski ") -# Options -option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") # Use installpath from GNUInstallDirs as default. @@ -37,59 +34,25 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") add_definitions( "-D_CRT_SECURE_NO_WARNINGS=1" ) endif() -# -------------------------------- -# Common code -# -------------------------------- -add_subdirectory( common ) - -# -------------------------------- -# Program -# -------------------------------- - -set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) - -set (PROGRAM_SOURCE - src/isatty.cpp - src/cli_key_search_result.cpp - src/console.cpp - src/benchmark.cpp - src/main.cpp -) - -if (WIN32 AND NOT FORCE_ANSI) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) -else() - # *nix should have ansi support. - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) -endif() - # Project config file -configure_file(src/config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) +configure_file(config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) include_directories(${PROJECT_BINARY_DIR}) -add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) +# -------------------------------- +# Subdirectories +# -------------------------------- -target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) +add_subdirectory( common ) +add_subdirectory( cli ) # -------------------------------- # Install # -------------------------------- -install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - # Readme and license install(FILES README.md LICENSE DESTINATION ${CMAKE_INSTALL_SHAREDIR}) -# Documentation - -if (UNIX) - configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) - - install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 - DESTINATION ${CMAKE_INSTALL_MANDIR}) -endif (UNIX) - # -------------------------------- # Package # -------------------------------- diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt new file mode 100644 index 0000000..9080728 --- /dev/null +++ b/cli/CMakeLists.txt @@ -0,0 +1,42 @@ +# Options +option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) + +# -------------------------------- +# Program +# -------------------------------- + +set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) + +set (PROGRAM_SOURCE + isatty.cpp + cli_key_search_result.cpp + console.cpp + benchmark.cpp + main.cpp +) + +if (WIN32 AND NOT FORCE_ANSI) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} console_win32.cpp) +else() + # *nix should have ansi support. + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} console_ansi.cpp) +endif() + +add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) + +target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) + +# -------------------------------- +# Install +# -------------------------------- + +install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +# Documentation + +if (UNIX) + configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) + + install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 + DESTINATION ${CMAKE_INSTALL_MANDIR}) +endif (UNIX) diff --git a/src/benchmark.cpp b/cli/benchmark.cpp similarity index 100% rename from src/benchmark.cpp rename to cli/benchmark.cpp diff --git a/src/benchmark.h b/cli/benchmark.h similarity index 100% rename from src/benchmark.h rename to cli/benchmark.h diff --git a/src/cli_key_search_result.cpp b/cli/cli_key_search_result.cpp similarity index 100% rename from src/cli_key_search_result.cpp rename to cli/cli_key_search_result.cpp diff --git a/src/cli_key_search_result.h b/cli/cli_key_search_result.h similarity index 100% rename from src/cli_key_search_result.h rename to cli/cli_key_search_result.h diff --git a/src/console.cpp b/cli/console.cpp similarity index 100% rename from src/console.cpp rename to cli/console.cpp diff --git a/src/console.h b/cli/console.h similarity index 100% rename from src/console.h rename to cli/console.h diff --git a/src/console_ansi.cpp b/cli/console_ansi.cpp similarity index 100% rename from src/console_ansi.cpp rename to cli/console_ansi.cpp diff --git a/src/console_win32.cpp b/cli/console_win32.cpp similarity index 100% rename from src/console_win32.cpp rename to cli/console_win32.cpp diff --git a/docs/eosio-keygen.1.in b/cli/docs/eosio-keygen.1.in similarity index 100% rename from docs/eosio-keygen.1.in rename to cli/docs/eosio-keygen.1.in diff --git a/src/isatty.cpp b/cli/isatty.cpp similarity index 100% rename from src/isatty.cpp rename to cli/isatty.cpp diff --git a/src/isatty.h b/cli/isatty.h similarity index 100% rename from src/isatty.h rename to cli/isatty.h diff --git a/src/main.cpp b/cli/main.cpp similarity index 100% rename from src/main.cpp rename to cli/main.cpp diff --git a/src/config.h.in b/config.h.in similarity index 100% rename from src/config.h.in rename to config.h.in From d9976c7f80a086499121af72f8774a33bf8dadc6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 7 Apr 2020 22:42:31 +0200 Subject: [PATCH 207/404] CMakeLists.txt: set default value for CMAKE_BUILD_TYPE --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index e81fa4d..da803cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,11 @@ project(eosio-keygen set( PROJECT_MAINTAINER "Henrik Hautakoski ") +# Default to release build if none is set. +if (NOT CMAKE_BUILD_TYPE) + set( CMAKE_BUILD_TYPE Release ) +endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") # Use installpath from GNUInstallDirs as default. From 70dee5611b9d0a8f97680d0fd3f3d71b8d090482 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 7 Apr 2020 22:43:19 +0200 Subject: [PATCH 208/404] CMakeLists.txt: Add c++ flags for the different types of builds. --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da803cd..9fe5d9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,11 +28,19 @@ if (WIN32) set( CMAKE_INSTALL_MANDIR "." ) endif (WIN32) -# Configure the compiler options +# -------------------------------- +# Compiler settings +# -------------------------------- + set( CMAKE_CXX_STANDARD 11 ) set( CMAKE_CXX_STANDARD_REQUIRED ON ) set( CMAKE_CXX_EXTENSIONS OFF ) +# c++ flags +set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g" ) +set( CMAKE_CXX_FLAGS_RELEASE "-O3" ) +set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os" ) + if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wconversion -Wno-sign-conversion -Wextra" ) elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") From fb85be4f1e629bd8d0eeda5d9a88b096afaa559c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 8 Apr 2020 09:43:51 +0200 Subject: [PATCH 209/404] common/include/eoskeygen/core/string.h: don't include strlist.h --- common/include/eoskeygen/core/string.h | 1 - 1 file changed, 1 deletion(-) diff --git a/common/include/eoskeygen/core/string.h b/common/include/eoskeygen/core/string.h index b9ae23a..a0d8e03 100644 --- a/common/include/eoskeygen/core/string.h +++ b/common/include/eoskeygen/core/string.h @@ -26,7 +26,6 @@ #include #include -#include namespace eoskeygen { From 52474387ca01015453f3a0e977c894f0f3578815 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 8 Apr 2020 09:48:58 +0200 Subject: [PATCH 210/404] common/include/eoskeygen/key_search.h: include libeosio/types.h --- common/include/eoskeygen/key_search.h | 1 + 1 file changed, 1 insertion(+) diff --git a/common/include/eoskeygen/key_search.h b/common/include/eoskeygen/key_search.h index 226b9cc..688def0 100644 --- a/common/include/eoskeygen/key_search.h +++ b/common/include/eoskeygen/key_search.h @@ -26,6 +26,7 @@ #include #include +#include #include #include #include From e80d8c5e34e48d1cfcdc9fe8a48a4b0e76cf5f6e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 8 Apr 2020 09:55:14 +0200 Subject: [PATCH 211/404] rename "CMakeModules" directory to "cmake" --- CMakeLists.txt | 2 +- {CMakeModules => cmake}/cpack_custom.cmake | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename {CMakeModules => cmake}/cpack_custom.cmake (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9fe5d9d..3c6ce03 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ if (NOT CMAKE_BUILD_TYPE) set( CMAKE_BUILD_TYPE Release ) endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") # Use installpath from GNUInstallDirs as default. include(GNUInstallDirs) diff --git a/CMakeModules/cpack_custom.cmake b/cmake/cpack_custom.cmake similarity index 100% rename from CMakeModules/cpack_custom.cmake rename to cmake/cpack_custom.cmake From 4cc6f39da3cc74eeab9a444d0f31a3c224548ff7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 8 Apr 2020 10:07:24 +0200 Subject: [PATCH 212/404] CMakeLists.txt: some restructure/cleanup. --- CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3c6ce03..d6d36b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ cmake_minimum_required(VERSION 3.15) -# Project name and version +# -------------------------------- +# Project Info +# -------------------------------- + project(eosio-keygen VERSION 1.0.4 DESCRIPTION "Keygenerator for EOSIO" @@ -8,14 +11,19 @@ project(eosio-keygen set( PROJECT_MAINTAINER "Henrik Hautakoski ") +# -------------------------------- +# CMake settings +# -------------------------------- + +# Append modules dir +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + # Default to release build if none is set. if (NOT CMAKE_BUILD_TYPE) set( CMAKE_BUILD_TYPE Release ) endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -# Use installpath from GNUInstallDirs as default. +# Install path include(GNUInstallDirs) set( CMAKE_INSTALL_SHAREDIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} ) From 0205e25afb9db1e681e2a44bf44505f3ec6b1733 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 8 Apr 2020 09:50:30 +0200 Subject: [PATCH 213/404] Adding initial GUI code. --- CMakeLists.txt | 1 + gui/CMakeLists.txt | 22 +++++ gui/SearchWindow.cpp | 215 +++++++++++++++++++++++++++++++++++++++++++ gui/SearchWindow.h | 105 +++++++++++++++++++++ gui/main.cpp | 36 ++++++++ 5 files changed, 379 insertions(+) create mode 100644 gui/CMakeLists.txt create mode 100644 gui/SearchWindow.cpp create mode 100644 gui/SearchWindow.h create mode 100644 gui/main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d6d36b3..12dedca 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,6 +65,7 @@ include_directories(${PROJECT_BINARY_DIR}) add_subdirectory( common ) add_subdirectory( cli ) +add_subdirectory( gui ) # -------------------------------- # Install diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt new file mode 100644 index 0000000..01f46bb --- /dev/null +++ b/gui/CMakeLists.txt @@ -0,0 +1,22 @@ + +# Qt5 needs MOC,RCC and UIC +set( CMAKE_AUTOMOC ON ) +set( CMAKE_AUTORCC ON ) +set( CMAKE_AUTOUIC ON ) + +# -------------------------------- +# Program +# -------------------------------- + +set( PROGRAM_EXE ${CMAKE_PROJECT_NAME}-gui ) + +set( PROGRAM_SRC + main.cpp + SearchWindow.cpp +) + +add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) + +# Libraries +find_package( Qt5 COMPONENTS Core Widgets REQUIRED ) +target_link_libraries( ${PROGRAM_EXE} Qt5::Core Qt5::Widgets common ) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp new file mode 100644 index 0000000..fae2321 --- /dev/null +++ b/gui/SearchWindow.cpp @@ -0,0 +1,215 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include "SearchWindow.h" + +SearchWindow::SearchWindow(QWidget *parent, Qt::WindowFlags flags) : +QWidget (parent, flags), +m_worker (NULL), +m_status ("status"), +m_leet_cb ("L33t"), +m_btn_exec ("Search"), +m_btn_clear ("Clear") +{ + setMinimumSize(600, 400); + + // Monospaced font + QFont f_mono("monospace"); + + // Output + m_output.setFont(f_mono); + m_output.setReadOnly(true); + + // Layout + // ------------------------ + setLayout(&m_layout); + m_layout.setColumnStretch(0, 10); + + // First row. + m_layout.addWidget(&m_leet_cb, 0, 1); + + m_num_threads.setValue((int) eoskeygen::KeySearch::max_threads()); + m_num_threads.setRange(1, (int) eoskeygen::KeySearch::max_threads()); + m_num_threads.setSuffix(" Threads"); + m_layout.addWidget(&m_num_threads, 0, 2); + + m_num_results.setValue(10); + m_num_results.setRange(1, 99); + m_num_results.setSuffix(" Results"); + m_layout.addWidget(&m_num_results, 0, 3); + + // Second row. + m_layout.addWidget(&m_status, 1, 0, 1, 2); + m_layout.addWidget(&m_txt_search, 1, 0, 1, 2); + m_layout.addWidget(&m_btn_exec, 1, 2); + m_layout.addWidget(&m_btn_clear, 1, 3); + + + // Third row. + m_layout.addWidget(&m_output, 2, 0, 1, 0); + + // Search + // ------------------------ + + m_ksearch.setCallback(this); + + initSignals(); + + // Focus search field. + m_txt_search.setFocus(); +} + +SearchWindow::~SearchWindow() +{ + // Make sure worker thread exits. + if (m_worker) { + m_worker->quit(); + m_worker->wait(); + } +} + +void SearchWindow::initSignals() +{ + // Buttons + connect(&m_btn_exec, SIGNAL(released()), this, SLOT(search())); + connect(&m_btn_clear, SIGNAL(released()), &m_output, SLOT(clear())); + + connect(this, SIGNAL(addOutput(QString)), this, SLOT(output(QString))); +} + +void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result) +{ + int pos = (int) result.pos; + int len = (int) result.len; + QString pub = QString::fromStdString(libeosio::wif_pub_encode(key->pub)); + QString mid = pub.mid(pos, len); + QString left = pub.left(pos); + QString right = pub.mid(pos + len, pub.size() - pos); + + QString out = "Public: " + pub.left(3); + for(int i = 3; i < pub.length(); ) { + + if (i == pos) { + out += "" + pub.mid(pos, len) + ""; + i += pos; + continue; + } + + out += pub[i++]; + } + + out += "
Private: " + QString::fromStdString(libeosio::wif_priv_encode(key->secret)); + + // As this function could be called from a non-gui thread. we use signals. + emit addOutput("

" + out + "

"); +} + +// -------------------- +// Slots +// -------------------- + +void SearchWindow::search() +{ + if (m_worker && m_worker->isRunning()) { + return; + } + + const std::string& input = m_txt_search.text().toLocal8Bit().constData(); + eoskeygen::strlist_t list; + + if (m_leet_cb.isChecked()) { + list = eoskeygen::l33twords(input); + } else { + list = eoskeygen::strlist::splitw(input); + } + + // Validate that we atleast got something to search for. + if (list.size() < 1 || (list.size() == 1 && list[0] == "")) { + QMessageBox::warning( this, + "Empty search field.", + "You must specify atleast one search string" ); + return; + } + + m_ksearch.clear(); + m_ksearch.addList(list); + m_ksearch.setThreadCount(m_num_threads.value()); + + // Create search thread + m_worker = QThread::create([this] { + m_ksearch.find(m_num_results.value()); + }); + + connect(m_worker, SIGNAL(started()), this, SLOT(searchStarted())); + connect(m_worker, SIGNAL(finished()), this, SLOT(searchFinished())); + + m_status.setText("Searching for: " + QString::fromStdString(eoskeygen::strlist::join(list, ", "))); + m_worker->start(); +} + +void SearchWindow::output(const std::string& html) +{ + output(QString::fromStdString(html)); +} + +void SearchWindow::output(const QString& html) +{ + if (m_output.toPlainText().size()) { + m_output.setHtml(m_output.toHtml() + html); + } else { + m_output.setHtml(html); + } +} + +void SearchWindow::searchStarted() +{ + m_txt_search.setEnabled(false); + m_txt_search.setHidden(true); + m_btn_exec.setEnabled(false); + m_btn_clear.setEnabled(false); + m_num_threads.setEnabled(false); + m_num_results.setEnabled(false); +} + +void SearchWindow::searchFinished() +{ + m_txt_search.setEnabled(true); + m_txt_search.setHidden(false); + m_btn_exec.setEnabled(true); + m_btn_clear.setEnabled(true); + m_num_threads.setEnabled(true); + m_num_results.setEnabled(true); + + // We are done with the worker pointer. + if (m_worker) { + delete m_worker; + m_worker = NULL; + } +} diff --git a/gui/SearchWindow.h b/gui/SearchWindow.h new file mode 100644 index 0000000..2959c02 --- /dev/null +++ b/gui/SearchWindow.h @@ -0,0 +1,105 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef SEARCH_WINDOW_H +#define SEARCH_WINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +class QThread; + +class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult +{ + Q_OBJECT +public: + explicit SearchWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags()); + virtual ~SearchWindow(); + + void onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result); + +private : + void initSignals(); + +private slots: + + // Start a search + void search(); + + // Output html to screen. + void output(const std::string& html); + void output(const QString& html); + + // Called when a search is started. + void searchStarted(); + + // Called when a search is done. + void searchFinished(); + +signals: + void addOutput(const QString& line); + +private: + + // Search worker thread. + QThread* m_worker; + + eoskeygen::KeySearch m_ksearch; + + // Widgets + // ---------------- + + // Status text. + QLabel m_status; + + // Search input. + QLineEdit m_txt_search; + + // Number of Threads. + QSpinBox m_num_threads; + + // Number of Results + QSpinBox m_num_results; + + QCheckBox m_leet_cb; + + // Buttons + QPushButton m_btn_exec; + QPushButton m_btn_clear; + + // Text output. + QTextEdit m_output; + + // Gui Layout. + QGridLayout m_layout; +}; + +#endif /* SEARCH_WINDOW_H */ diff --git a/gui/main.cpp b/gui/main.cpp new file mode 100644 index 0000000..73fe05f --- /dev/null +++ b/gui/main.cpp @@ -0,0 +1,36 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include "SearchWindow.h" + +int main(int argc, char **argv) { + + QApplication app(argc, argv); + + SearchWindow search_win; + + search_win.show(); + + return app.exec(); +} From 69017c7a213790cb3cb77300a3b57b65c6b05596 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 9 Apr 2020 12:39:55 +0200 Subject: [PATCH 214/404] CMake: Adding BUILD_COMPONENT_GUI and BUILD_COMPONENT_CLI (so user's can build either one or both). --- CMakeLists.txt | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 12dedca..b752918 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,6 +11,17 @@ project(eosio-keygen set( PROJECT_MAINTAINER "Henrik Hautakoski ") +# -------------------------------- +# Options +# -------------------------------- + +option(BUILD_COMPONENT_CLI "Build CLI Component" ON) +option(BUILD_COMPONENT_GUI "Build GUI Component (Qt5)" OFF) + +if (NOT BUILD_COMPONENT_CLI AND NOT BUILD_COMPONENT_GUI) + message(FATAL_ERROR "Atleast one of BUILD_COMPONENT_GUI,BUILD_COMPONENT_CLI must be set to ON") +endif() + # -------------------------------- # CMake settings # -------------------------------- @@ -60,12 +71,18 @@ configure_file(config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) include_directories(${PROJECT_BINARY_DIR}) # -------------------------------- -# Subdirectories +# Components # -------------------------------- add_subdirectory( common ) -add_subdirectory( cli ) -add_subdirectory( gui ) + +if (BUILD_COMPONENT_CLI) + add_subdirectory( cli ) +endif() + +if (BUILD_COMPONENT_GUI) + add_subdirectory( gui ) +endif() # -------------------------------- # Install From a2ec5eaaec7164b7ac65db2bb5368fb52934217a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 9 Apr 2020 14:03:01 +0200 Subject: [PATCH 215/404] gui/CMakeLists.txt: Force Qt 5.11 or later. --- gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 01f46bb..fc02215 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -18,5 +18,5 @@ set( PROGRAM_SRC add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) # Libraries -find_package( Qt5 COMPONENTS Core Widgets REQUIRED ) +find_package( Qt5 5.11 COMPONENTS Core Widgets REQUIRED ) target_link_libraries( ${PROGRAM_EXE} Qt5::Core Qt5::Widgets common ) From 8cb3fad9b1b20818c4c95c3b74c828d3ec41c350 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 9 Apr 2020 14:05:03 +0200 Subject: [PATCH 216/404] gui/CMakeLists.txt: Adding install target --- gui/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index fc02215..94b0226 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -8,7 +8,9 @@ set( CMAKE_AUTOUIC ON ) # Program # -------------------------------- -set( PROGRAM_EXE ${CMAKE_PROJECT_NAME}-gui ) +set( COMPONENT_NAME ${CMAKE_PROJECT_NAME}-gui) + +set( PROGRAM_EXE ${COMPONENT_NAME} ) set( PROGRAM_SRC main.cpp @@ -20,3 +22,11 @@ add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) # Libraries find_package( Qt5 5.11 COMPONENTS Core Widgets REQUIRED ) target_link_libraries( ${PROGRAM_EXE} Qt5::Core Qt5::Widgets common ) + +# -------------------------------- +# Install +# -------------------------------- + +install(TARGETS ${PROGRAM_EXE} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT ${COMPONENT_NAME}) From 3c21e27f450a1446751fa26ef84d4019a0b4b8ff Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 10:45:19 +0200 Subject: [PATCH 217/404] gui/SearchWindow: Use QFutureWatcher instead of QThread. By removing the call to QThread::create() that requires version >= 5.11 we can have a lower version as requirement. This is useful because a lot of systems don't ship with 5.11 as default. --- gui/CMakeLists.txt | 4 ++-- gui/SearchWindow.cpp | 35 +++++++++-------------------------- gui/SearchWindow.h | 6 ++---- 3 files changed, 13 insertions(+), 32 deletions(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 94b0226..8c330ed 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -20,8 +20,8 @@ set( PROGRAM_SRC add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) # Libraries -find_package( Qt5 5.11 COMPONENTS Core Widgets REQUIRED ) -target_link_libraries( ${PROGRAM_EXE} Qt5::Core Qt5::Widgets common ) +find_package( Qt5 5.11 COMPONENTS Concurrent Core Widgets REQUIRED ) +target_link_libraries( ${PROGRAM_EXE} Qt5::Concurrent Qt5::Core Qt5::Widgets common ) # -------------------------------- # Install diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index fae2321..e34f556 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -24,7 +24,8 @@ #include #include #include -#include +#include +#include #include #include #include @@ -32,7 +33,6 @@ SearchWindow::SearchWindow(QWidget *parent, Qt::WindowFlags flags) : QWidget (parent, flags), -m_worker (NULL), m_status ("status"), m_leet_cb ("L33t"), m_btn_exec ("Search"), @@ -86,21 +86,16 @@ m_btn_clear ("Clear") m_txt_search.setFocus(); } -SearchWindow::~SearchWindow() -{ - // Make sure worker thread exits. - if (m_worker) { - m_worker->quit(); - m_worker->wait(); - } -} - void SearchWindow::initSignals() { // Buttons connect(&m_btn_exec, SIGNAL(released()), this, SLOT(search())); connect(&m_btn_clear, SIGNAL(released()), &m_output, SLOT(clear())); + // Worker Thread + connect(&m_worker, SIGNAL(started()), this, SLOT(searchStarted())); + connect(&m_worker, SIGNAL(finished()), this, SLOT(searchFinished())); + connect(this, SIGNAL(addOutput(QString)), this, SLOT(output(QString))); } @@ -137,7 +132,7 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct void SearchWindow::search() { - if (m_worker && m_worker->isRunning()) { + if (m_worker.isRunning()) { return; } @@ -162,16 +157,10 @@ void SearchWindow::search() m_ksearch.addList(list); m_ksearch.setThreadCount(m_num_threads.value()); - // Create search thread - m_worker = QThread::create([this] { - m_ksearch.find(m_num_results.value()); - }); - - connect(m_worker, SIGNAL(started()), this, SLOT(searchStarted())); - connect(m_worker, SIGNAL(finished()), this, SLOT(searchFinished())); + QFuture future = QtConcurrent::run(m_ksearch, &eoskeygen::KeySearch::find, m_num_results.value()); + m_worker.setFuture(future); m_status.setText("Searching for: " + QString::fromStdString(eoskeygen::strlist::join(list, ", "))); - m_worker->start(); } void SearchWindow::output(const std::string& html) @@ -206,10 +195,4 @@ void SearchWindow::searchFinished() m_btn_clear.setEnabled(true); m_num_threads.setEnabled(true); m_num_results.setEnabled(true); - - // We are done with the worker pointer. - if (m_worker) { - delete m_worker; - m_worker = NULL; - } } diff --git a/gui/SearchWindow.h b/gui/SearchWindow.h index 2959c02..0bc6a65 100644 --- a/gui/SearchWindow.h +++ b/gui/SearchWindow.h @@ -31,18 +31,16 @@ #include #include #include +#include #include #include #include -class QThread; - class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult { Q_OBJECT public: explicit SearchWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags()); - virtual ~SearchWindow(); void onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result); @@ -70,7 +68,7 @@ signals: private: // Search worker thread. - QThread* m_worker; + QFutureWatcher m_worker; eoskeygen::KeySearch m_ksearch; From 40ddff41dbaee9043804e0985296c6237aadedb1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 10:48:26 +0200 Subject: [PATCH 218/404] gui/CMakeLists.txt: Drop the requirement for QT 5.11 --- gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 8c330ed..cb65710 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -20,7 +20,7 @@ set( PROGRAM_SRC add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) # Libraries -find_package( Qt5 5.11 COMPONENTS Concurrent Core Widgets REQUIRED ) +find_package( Qt5 COMPONENTS Concurrent Core Widgets REQUIRED ) target_link_libraries( ${PROGRAM_EXE} Qt5::Concurrent Qt5::Core Qt5::Widgets common ) # -------------------------------- From 0d44bbc8f65a8cae78ae505a2fd4424ec8039942 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 10:49:26 +0200 Subject: [PATCH 219/404] .github/workflows/ci.yml: Build GUI --- .github/workflows/ci.yml | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef1fafb..6f4e4a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,7 +12,12 @@ jobs: strategy: matrix: os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] - build-opts: [ "-DFORCE_ANSI=ON", "-DFORCE_ANSI=OFF" ] + build-opts: [ + -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON, + -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF, + -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON + ] + name: ${{matrix.os}} (${{matrix.build-opts}}) runs-on: ${{matrix.os}} @@ -20,13 +25,24 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Dependancies + - name: OpenSSL shell: bash run: | if [ "$RUNNER_OS" == "macOS" ]; then brew install openssl fi + - name: Qt - Ubuntu + if: contains(matrix.build-opts, '-DBUILD_COMPONENT_GUI=ON') && runner.os == 'Linux' + shell: bash + run: sudo apt-get install qt5-default + + - name: Qt - Windows/Mac + if: contains(matrix.build-opts, '-DBUILD_COMPONENT_GUI=ON') && runner.os != 'Linux' + uses: jurplel/install-qt-action@v2 + with: + version: '5.9' + - name: Configure shell: bash run: | From bbd2959a0d2d243e12187c3f9ad61b94e0165eaa Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 16:57:58 +0200 Subject: [PATCH 220/404] CMakeLists.txt: adding DOWNLOAD_CACHE_DIR variable. --- .gitignore | 1 + CMakeLists.txt | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 6f31401..02e2c31 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build/ .vscode/ +.cache/ diff --git a/CMakeLists.txt b/CMakeLists.txt index d6d36b3..3748b26 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,10 @@ if (WIN32) set( CMAKE_INSTALL_MANDIR "." ) endif (WIN32) +# Path to a directory outside of CMAKE_BUILD_DIR +# Should be used to cache large downloaded data that won't be deleted on clean builds. +set( DOWNLOAD_CACHE_DIR ${CMAKE_CURRENT_LIST_DIR}/.cache ) + # -------------------------------- # Compiler settings # -------------------------------- From eed3c1cfef22f5ad67f46c26f697af3bce8c7629 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 16:58:20 +0200 Subject: [PATCH 221/404] common/cmake/libeosio.cmake: download source to DOWNLOAD_CACHE_DIR --- common/cmake/libeosio.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index 8373f2d..b37b8a2 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -15,6 +15,7 @@ macro(fromGit tag) FetchContent_Declare(libeosio GIT_REPOSITORY ${LIBEOSIO_GIT_URL} GIT_TAG ${tag} + SOURCE_DIR ${DOWNLOAD_CACHE_DIR}/libeosio ) FetchContent_GetProperties(libeosio) From bc614da0e82c5b8dd1730fb3390a59e42d26e7ea Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 17:06:09 +0200 Subject: [PATCH 222/404] common/cmake/libeosio.cmake: also set stamp directory to DOWNLOAD_CACHE_DIR --- common/cmake/libeosio.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index b37b8a2..b739349 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -15,7 +15,8 @@ macro(fromGit tag) FetchContent_Declare(libeosio GIT_REPOSITORY ${LIBEOSIO_GIT_URL} GIT_TAG ${tag} - SOURCE_DIR ${DOWNLOAD_CACHE_DIR}/libeosio + SOURCE_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/src + STAMP_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/stamp ) FetchContent_GetProperties(libeosio) From 48eb7161654f01bc4d94faa1bfcfa4d187a1a390 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 17:44:19 +0200 Subject: [PATCH 223/404] .github/workflows/ci.yml: add abit more human friendly names than matrix.build-opts. and have the actual cmake flags as matrix includes. --- .github/workflows/ci.yml | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6f4e4a2..1f9186e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,14 +12,17 @@ jobs: strategy: matrix: os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] - build-opts: [ - -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON, - -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF, - -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON - ] + build: [ cli-force-ansi-on, cli-force-ansi-off, gui ] + include: + - build: cli-force-ansi-on + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON + - build: cli-force-ansi-off + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON + - build: gui + cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON - name: ${{matrix.os}} (${{matrix.build-opts}}) + name: ${{matrix.os}} (${{matrix.build}}) runs-on: ${{matrix.os}} steps: @@ -33,12 +36,12 @@ jobs: fi - name: Qt - Ubuntu - if: contains(matrix.build-opts, '-DBUILD_COMPONENT_GUI=ON') && runner.os == 'Linux' + if: matrix.build == 'gui' && runner.os == 'Linux' shell: bash run: sudo apt-get install qt5-default - name: Qt - Windows/Mac - if: contains(matrix.build-opts, '-DBUILD_COMPONENT_GUI=ON') && runner.os != 'Linux' + if: matrix.build == 'gui' && runner.os != 'Linux' uses: jurplel/install-qt-action@v2 with: version: '5.9' @@ -49,7 +52,7 @@ jobs: if [ "$RUNNER_OS" == "macOS" ]; then SSL_OPTS="-D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1" fi - cmake ${SSL_OPTS} ${{matrix.build-opts}} -B build + cmake ${SSL_OPTS} ${{matrix.cmake-opts}} -B build - name: Build shell: bash @@ -58,5 +61,5 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v1 with: - name: ${{matrix.os}}_${{matrix.build-opts}}-build + name: ${{matrix.os}}_${{matrix.build}}-build path: build From c206ec764f4c138f3a6ae1897e3dacd4f85a3ece Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 10 Apr 2020 17:47:45 +0200 Subject: [PATCH 224/404] .github/workflows/ci.yml: some minor cleanup. --- .github/workflows/ci.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1f9186e..af10bb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,12 +28,10 @@ jobs: steps: - uses: actions/checkout@v1 - - name: OpenSSL + - name: OpenSSL OSX + if: runner.os == 'macOS' shell: bash - run: | - if [ "$RUNNER_OS" == "macOS" ]; then - brew install openssl - fi + run: brew install openssl - name: Qt - Ubuntu if: matrix.build == 'gui' && runner.os == 'Linux' @@ -49,10 +47,11 @@ jobs: - name: Configure shell: bash run: | + OPTS="${{matrix.cmake-opts}}" if [ "$RUNNER_OS" == "macOS" ]; then - SSL_OPTS="-D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1" + OPTS="-D OPENSSL_ROOT_DIR=/usr/local/opt/openssl@1.1 ${OPTS}" fi - cmake ${SSL_OPTS} ${{matrix.cmake-opts}} -B build + cmake ${OPTS} -B build - name: Build shell: bash From bfc40bd3e70ccfaba6ed2908e53b41ac7275f49b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 11 Apr 2020 16:29:42 +0200 Subject: [PATCH 225/404] gui/SearchWindow.cpp: Force scrollbar to the bottom when adding text to m_output. --- gui/SearchWindow.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index e34f556..ba3a757 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -23,6 +23,7 @@ */ #include #include +#include #include #include #include @@ -175,6 +176,9 @@ void SearchWindow::output(const QString& html) } else { m_output.setHtml(html); } + + // Force scrollbar to the bottom. + m_output.verticalScrollBar()->setValue(m_output.verticalScrollBar()->maximum()); } void SearchWindow::searchStarted() From 6a53999c14196b30dda0a1f3972bfcbbb1dc927c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 14:24:56 +0200 Subject: [PATCH 226/404] Adding gui/MultiSelect module --- gui/CMakeLists.txt | 1 + gui/MultiSelect.cpp | 137 ++++++++++++++++++++++++++++++++++++++++++++ gui/MultiSelect.h | 89 ++++++++++++++++++++++++++++ 3 files changed, 227 insertions(+) create mode 100644 gui/MultiSelect.cpp create mode 100644 gui/MultiSelect.h diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index cb65710..f681677 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -15,6 +15,7 @@ set( PROGRAM_EXE ${COMPONENT_NAME} ) set( PROGRAM_SRC main.cpp SearchWindow.cpp + MultiSelect.cpp ) add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) diff --git a/gui/MultiSelect.cpp b/gui/MultiSelect.cpp new file mode 100644 index 0000000..6288b89 --- /dev/null +++ b/gui/MultiSelect.cpp @@ -0,0 +1,137 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include "MultiSelect.h" + +MultiSelect::MultiSelect(const QString& text, QWidget *parent) : +QPushButton (text + ": none", parent) +{ + QPushButton* btn; + QVBoxLayout* layout; + + m_prefix = text; + + // Dialog + m_dialog = new QDialog(this); + + // Dialog Widgets + m_list = new QListWidget(); + btn = new QPushButton("Select"); + + // Dialog layout + layout = new QVBoxLayout(m_dialog); + layout->addWidget(m_list); + layout->addWidget(btn); + + // Connections + QObject::connect(btn, SIGNAL(clicked()), m_dialog, SLOT(accept())); + QObject::connect(m_dialog, SIGNAL(accepted()), this, SLOT(selectionConfirmed())); + QObject::connect(m_list, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(listItemClicked(QListWidgetItem*))); +} + +void MultiSelect::addItem(const QString& text) +{ + QListWidgetItem* item = new QListWidgetItem(text, m_list); + item->setFlags(Qt::ItemIsEnabled); + item->setCheckState(Qt::Unchecked); +} + +void MultiSelect::addItems(const QStringList& list) +{ + QStringList::const_iterator it; + + for(it = list.cbegin(); it != list.cend(); it++) { + addItem(*it); + } +} + +void MultiSelect::clearItems() +{ + m_list->clear(); +} + +QStringList MultiSelect::getSelectedItems() const +{ + QListWidgetItem* item; + QStringList ret; + + // Cannot use m_list->selectedItems() as that function only fetches + // _selected_ and not _checked_ items (there is a difference). + for(int i = 0; i < m_list->count(); i++) { + item = m_list->item(i); + // Include in list if checked. + if (item->checkState() == Qt::Checked) { + ret << item->text(); + } + } + return ret; +} + +void MultiSelect::selectionConfirmed() +{ + QStringList selected = getSelectedItems(); + + // Update the text for this widget to + // reflect the selected objects. + QString txt = m_prefix + ": "; + + // Have more than one item. show number of items. + if (selected.count() > 1) { + txt += QString::number(selected.count()) + " selected"; + } + // Just one, we can show the text. + else if (selected.count() == 1) { + txt += selected.at(0); + } + else { + txt += "none"; + } + + setText(txt); + + // Emit the selectionChanged signal with the updated list + emit selectionChanged(selected); +} + +void MultiSelect::listItemClicked(QListWidgetItem *item) +{ + // toggle state when user clicks. + bool checked = item->checkState() == Qt::Checked; + item->setCheckState(checked ? Qt::Unchecked : Qt::Checked); +} + +void MultiSelect::mousePressEvent(QMouseEvent *event) +{ + if (event->button() == Qt::LeftButton) { + // Show select dialog. + m_dialog->show(); + } else { + // pass on other buttons to base class + QPushButton::mousePressEvent(event); + } +} diff --git a/gui/MultiSelect.h b/gui/MultiSelect.h new file mode 100644 index 0000000..fc40731 --- /dev/null +++ b/gui/MultiSelect.h @@ -0,0 +1,89 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef MULTI_SELECT_H +#define MULTI_SELECT_H + +#include +#include +#include + +class QMouseEvent; +class QPushButton; +class QListWidget; +class QListWidgetItem; +class QDialog; +class MultiSelectDialog; + +// +// MultiSelect implements multi selection of items using +// a push button and a dialog with a list of checkbox items. +// +class MultiSelect : public QPushButton +{ + Q_OBJECT +public: + MultiSelect(const QString& text, QWidget *parent = 0); + + // Items. + + void addItem(const QString& text); + + void addItems(const QStringList& list); + + void clearItems(); + + // Get a list of currently selected items. + QStringList getSelectedItems() const; + +signals: + + // This signal is emitted whenever the user has made a new selection. + void selectionChanged(QStringList selected); + +private slots : + + // Called when the dialog is accepted. + void selectionConfirmed(); + + // Called when a list item is clicked on. + void listItemClicked(QListWidgetItem *item); + +protected : + + // Event handlers + void mousePressEvent(QMouseEvent *e) override; + +private : + + // Prefix to show on the button before value. + QString m_prefix; + + // List of items + QListWidget* m_list; + + // Dialog to show if this widget are clicked on. + QDialog* m_dialog; +}; + +#endif /* MULTI_SELECT_H */ From 45005c995073d17330ba36eb22dd12523d795f78 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 14:37:25 +0200 Subject: [PATCH 227/404] adding gui/helpers module --- gui/CMakeLists.txt | 1 + gui/helpers.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ gui/helpers.h | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 gui/helpers.cpp create mode 100644 gui/helpers.h diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index f681677..7dba68c 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -16,6 +16,7 @@ set( PROGRAM_SRC main.cpp SearchWindow.cpp MultiSelect.cpp + helpers.cpp ) add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) diff --git a/gui/helpers.cpp b/gui/helpers.cpp new file mode 100644 index 0000000..3b492b4 --- /dev/null +++ b/gui/helpers.cpp @@ -0,0 +1,42 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "helpers.h" + +QStringList get_files(const QDir& directory) { + + QFileInfoList list; + QStringList ret; + + list = directory.entryInfoList(QDir::Files); + for (int i = 0; i < list.size(); ++i) { + QFileInfo info = list.at(i); + ret << info.fileName(); + } + return ret; +} + +QStringList get_files(const QString& directory) +{ + return get_files(QDir(directory)); +} diff --git a/gui/helpers.h b/gui/helpers.h new file mode 100644 index 0000000..ccb5218 --- /dev/null +++ b/gui/helpers.h @@ -0,0 +1,38 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef HELPERS_H +#define HELPERS_H + +#include +#include +#include + +// +// Get a list of files for a given directory. +// NOTE: only filenames are returned. relative to directory. +// +QStringList get_files(const QDir& directory); +QStringList get_files(const QString& directory); + +#endif /* HELPERS_H */ From 35706c9ba3712629cf03d641135239b5d12413e0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 14:39:46 +0200 Subject: [PATCH 228/404] config.h.in: add CONFIG_DICT_PATH and CONFIG_DICT_FULL_PATH --- config.h.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config.h.in b/config.h.in index ff5de16..a1b4356 100644 --- a/config.h.in +++ b/config.h.in @@ -31,4 +31,7 @@ #define CONFIG_SHARE_PATH "@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@" #define CONFIG_SHARE_FULL_PATH "@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@" +#define CONFIG_DICT_PATH "@CMAKE_INSTALL_DATADIR@/@CMAKE_PROJECT_NAME@/dict" +#define CONFIG_DICT_FULL_PATH "@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict" + #endif /* EOSIOKEYGEN_CONFIG_H */ From 3b1ada9cb771e93ac4242e39d7b44d6aa84b48c8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 16:19:39 +0200 Subject: [PATCH 229/404] gui/SearchWindow.cpp: in onResult() should advance index by word length and not position. --- gui/SearchWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index ba3a757..9543467 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -114,7 +114,7 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct if (i == pos) { out += "" + pub.mid(pos, len) + ""; - i += pos; + i += len; continue; } From 1f8fbfc8caa843908d37e37c521905f1288922e6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 16:33:07 +0200 Subject: [PATCH 230/404] gui/SearchWindow: implement dictionary language --- gui/SearchWindow.cpp | 39 +++++++++++++++++++++++++++++++++++++++ gui/SearchWindow.h | 8 ++++++++ 2 files changed, 47 insertions(+) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index 9543467..bc5d9b7 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -30,12 +30,15 @@ #include #include #include +#include "config.h" +#include "helpers.h" #include "SearchWindow.h" SearchWindow::SearchWindow(QWidget *parent, Qt::WindowFlags flags) : QWidget (parent, flags), m_status ("status"), m_leet_cb ("L33t"), +m_dict_lang ("Dictionary Language"), m_btn_exec ("Search"), m_btn_clear ("Clear") { @@ -54,6 +57,9 @@ m_btn_clear ("Clear") m_layout.setColumnStretch(0, 10); // First row. + m_dict_lang.addItems(get_files(CONFIG_DICT_FULL_PATH)); + m_layout.addWidget(&m_dict_lang, 0, 0); + m_layout.addWidget(&m_leet_cb, 0, 1); m_num_threads.setValue((int) eoskeygen::KeySearch::max_threads()); @@ -98,6 +104,8 @@ void SearchWindow::initSignals() connect(&m_worker, SIGNAL(finished()), this, SLOT(searchFinished())); connect(this, SIGNAL(addOutput(QString)), this, SLOT(output(QString))); + + connect(&m_dict_lang, SIGNAL(selectionChanged(QStringList)), this, SLOT(langSelected(QStringList))); } void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result) @@ -108,6 +116,7 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct QString mid = pub.mid(pos, len); QString left = pub.left(pos); QString right = pub.mid(pos + len, pub.size() - pos); + eoskeygen::Dictionary::search_result_t dict_res = m_dict.search(pub.toStdString()); QString out = "Public: " + pub.left(3); for(int i = 3; i < pub.length(); ) { @@ -118,6 +127,16 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct continue; } + // Look in the dictionary. + auto dp = dict_res.find(i); + if (dp != dict_res.end()) { + int p = (int) dp->first; + int l = (int) dp->second; + out += "" + pub.mid(p, l) + ""; + i += l; + continue; + } + out += pub[i++]; } @@ -181,10 +200,29 @@ void SearchWindow::output(const QString& html) m_output.verticalScrollBar()->setValue(m_output.verticalScrollBar()->maximum()); } +void SearchWindow::langSelected(QStringList selected) +{ + std::string base_path(CONFIG_DICT_FULL_PATH); + + // Clear dictionary first. + m_dict.clear(); + + // Go through all selected languages. + for(QStringList::const_iterator it = selected.cbegin(); it != selected.cend(); it++) { + + // Load and add them to dictionary. + eoskeygen::Dictionary dict; + dict.loadFromFile(base_path + "/" + it->toStdString()); + + m_dict.add(dict); + } +} + void SearchWindow::searchStarted() { m_txt_search.setEnabled(false); m_txt_search.setHidden(true); + m_dict_lang.setEnabled(false); m_btn_exec.setEnabled(false); m_btn_clear.setEnabled(false); m_num_threads.setEnabled(false); @@ -195,6 +233,7 @@ void SearchWindow::searchFinished() { m_txt_search.setEnabled(true); m_txt_search.setHidden(false); + m_dict_lang.setEnabled(true); m_btn_exec.setEnabled(true); m_btn_clear.setEnabled(true); m_num_threads.setEnabled(true); diff --git a/gui/SearchWindow.h b/gui/SearchWindow.h index 0bc6a65..1aff8b1 100644 --- a/gui/SearchWindow.h +++ b/gui/SearchWindow.h @@ -35,6 +35,7 @@ #include #include #include +#include "MultiSelect.h" class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult { @@ -62,6 +63,9 @@ private slots: // Called when a search is done. void searchFinished(); + // Called when dictionary language(s) are selected. + void langSelected(QStringList selected); + signals: void addOutput(const QString& line); @@ -72,6 +76,8 @@ private: eoskeygen::KeySearch m_ksearch; + eoskeygen::Dictionary m_dict; + // Widgets // ---------------- @@ -89,6 +95,8 @@ private: QCheckBox m_leet_cb; + MultiSelect m_dict_lang; + // Buttons QPushButton m_btn_exec; QPushButton m_btn_clear; From 3ca4631bbe2009d7cb040365012798d8b194c02f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 16:34:28 +0200 Subject: [PATCH 231/404] common/include/eoskeygen/core/dictionary.h: adding getWords() method. --- common/include/eoskeygen/core/dictionary.h | 3 +++ common/src/core/dictionary.cpp | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/common/include/eoskeygen/core/dictionary.h b/common/include/eoskeygen/core/dictionary.h index 3197108..bdd9cac 100644 --- a/common/include/eoskeygen/core/dictionary.h +++ b/common/include/eoskeygen/core/dictionary.h @@ -53,6 +53,9 @@ public : // Clear all words from the dictionary. void clear(); + // Returns the list of words in the dictionary. + const std::set& getWords() const; + // Returns true if word exists in the dictionary. bool contains(const std::string& word) const; diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp index 0e74906..7446b34 100644 --- a/common/src/core/dictionary.cpp +++ b/common/src/core/dictionary.cpp @@ -79,6 +79,11 @@ void Dictionary::add(const Dictionary& dictionary) ); } +const std::set& Dictionary::getWords() const +{ + return m_words; +} + void Dictionary::clear() { m_words.clear(); From c14a453f01f45f31bda229cd0ba2c699f8a082c8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 16:38:17 +0200 Subject: [PATCH 232/404] gui/SearchWindow.cpp: disable m_leet_cb during search. --- gui/SearchWindow.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index bc5d9b7..0ae0d5e 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -223,6 +223,7 @@ void SearchWindow::searchStarted() m_txt_search.setEnabled(false); m_txt_search.setHidden(true); m_dict_lang.setEnabled(false); + m_leet_cb.setEnabled(false); m_btn_exec.setEnabled(false); m_btn_clear.setEnabled(false); m_num_threads.setEnabled(false); @@ -234,6 +235,7 @@ void SearchWindow::searchFinished() m_txt_search.setEnabled(true); m_txt_search.setHidden(false); m_dict_lang.setEnabled(true); + m_leet_cb.setEnabled(true); m_btn_exec.setEnabled(true); m_btn_clear.setEnabled(true); m_num_threads.setEnabled(true); From 925ef7e8ad285071dafc2f7caaa6feded71980cf Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 21:49:40 +0200 Subject: [PATCH 233/404] gui/MultiSelect: add variable for default state for addItem() and addItems() --- gui/MultiSelect.cpp | 8 ++++---- gui/MultiSelect.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gui/MultiSelect.cpp b/gui/MultiSelect.cpp index 6288b89..2578eba 100644 --- a/gui/MultiSelect.cpp +++ b/gui/MultiSelect.cpp @@ -54,19 +54,19 @@ QPushButton (text + ": none", parent) QObject::connect(m_list, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(listItemClicked(QListWidgetItem*))); } -void MultiSelect::addItem(const QString& text) +void MultiSelect::addItem(const QString& text, bool checked) { QListWidgetItem* item = new QListWidgetItem(text, m_list); item->setFlags(Qt::ItemIsEnabled); - item->setCheckState(Qt::Unchecked); + item->setCheckState(checked ? Qt::Checked : Qt::Unchecked); } -void MultiSelect::addItems(const QStringList& list) +void MultiSelect::addItems(const QStringList& list, bool checked) { QStringList::const_iterator it; for(it = list.cbegin(); it != list.cend(); it++) { - addItem(*it); + addItem(*it, checked); } } diff --git a/gui/MultiSelect.h b/gui/MultiSelect.h index fc40731..830c4d0 100644 --- a/gui/MultiSelect.h +++ b/gui/MultiSelect.h @@ -47,9 +47,9 @@ public: // Items. - void addItem(const QString& text); + void addItem(const QString& text, bool checked = false); - void addItems(const QStringList& list); + void addItems(const QStringList& list, bool checked = false); void clearItems(); From 50a2805c3fe1db9739d11090bda0cb3a3fa8ffdb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 21:56:04 +0200 Subject: [PATCH 234/404] gui/MultiSelect: Add user_add_item parameter to constructor adds a button and signal to the MultiSelect, allowing client code to implement adding items from user input. --- gui/MultiSelect.cpp | 17 +++++++++++++++-- gui/MultiSelect.h | 9 ++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gui/MultiSelect.cpp b/gui/MultiSelect.cpp index 2578eba..98c6dac 100644 --- a/gui/MultiSelect.cpp +++ b/gui/MultiSelect.cpp @@ -28,8 +28,8 @@ #include #include "MultiSelect.h" -MultiSelect::MultiSelect(const QString& text, QWidget *parent) : -QPushButton (text + ": none", parent) +MultiSelect::MultiSelect(const QString& text, bool user_can_add, QWidget *parent) : +QPushButton (text + ": none", parent) { QPushButton* btn; QVBoxLayout* layout; @@ -52,6 +52,13 @@ QPushButton (text + ": none", parent) QObject::connect(btn, SIGNAL(clicked()), m_dialog, SLOT(accept())); QObject::connect(m_dialog, SIGNAL(accepted()), this, SLOT(selectionConfirmed())); QObject::connect(m_list, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(listItemClicked(QListWidgetItem*))); + + // Configured to let users add items. provide button and signal. + if (user_can_add) { + btn = new QPushButton("Add"); + layout->addWidget(btn); + QObject::connect(btn, SIGNAL(clicked()), this, SLOT(addBtnClicked())); + } } void MultiSelect::addItem(const QString& text, bool checked) @@ -125,6 +132,12 @@ void MultiSelect::listItemClicked(QListWidgetItem *item) item->setCheckState(checked ? Qt::Unchecked : Qt::Checked); } +void MultiSelect::addBtnClicked() +{ + // Just emit addNewItem event. + emit addNewItem(); +} + void MultiSelect::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { diff --git a/gui/MultiSelect.h b/gui/MultiSelect.h index 830c4d0..84ed207 100644 --- a/gui/MultiSelect.h +++ b/gui/MultiSelect.h @@ -43,7 +43,7 @@ class MultiSelect : public QPushButton { Q_OBJECT public: - MultiSelect(const QString& text, QWidget *parent = 0); + MultiSelect(const QString& text, bool user_add_item = false, QWidget *parent = 0); // Items. @@ -61,6 +61,10 @@ signals: // This signal is emitted whenever the user has made a new selection. void selectionChanged(QStringList selected); + // This signal is emitted whenever the user clicks the "Add" button. + // NOTE: Will only be emitted if `user_add_item` has been set to `true` in the constructor. + void addNewItem(); + private slots : // Called when the dialog is accepted. @@ -69,6 +73,9 @@ private slots : // Called when a list item is clicked on. void listItemClicked(QListWidgetItem *item); + // Called when the add button is clicked on. + void addBtnClicked(); + protected : // Event handlers From 769e56af2f3d4275fbcf70d9047886d2b947fdd3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 14 Apr 2020 21:56:41 +0200 Subject: [PATCH 235/404] gui/SearchWindow: adding "Dictionary file" widget. --- gui/SearchWindow.cpp | 71 ++++++++++++++++++++++++++++++-------------- gui/SearchWindow.h | 8 +++-- 2 files changed, 54 insertions(+), 25 deletions(-) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index 0ae0d5e..cbfa290 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -22,6 +22,7 @@ * SOFTWARE. */ #include +#include #include #include #include @@ -39,6 +40,7 @@ QWidget (parent, flags), m_status ("status"), m_leet_cb ("L33t"), m_dict_lang ("Dictionary Language"), +m_dict_file ("Dictionary File", true), m_btn_exec ("Search"), m_btn_clear ("Clear") { @@ -55,29 +57,30 @@ m_btn_clear ("Clear") // ------------------------ setLayout(&m_layout); m_layout.setColumnStretch(0, 10); + m_layout.setColumnStretch(1, 10); // First row. m_dict_lang.addItems(get_files(CONFIG_DICT_FULL_PATH)); m_layout.addWidget(&m_dict_lang, 0, 0); + m_layout.addWidget(&m_dict_file, 0, 1); - m_layout.addWidget(&m_leet_cb, 0, 1); + m_layout.addWidget(&m_leet_cb, 0, 2); m_num_threads.setValue((int) eoskeygen::KeySearch::max_threads()); m_num_threads.setRange(1, (int) eoskeygen::KeySearch::max_threads()); m_num_threads.setSuffix(" Threads"); - m_layout.addWidget(&m_num_threads, 0, 2); + m_layout.addWidget(&m_num_threads, 0, 3); m_num_results.setValue(10); m_num_results.setRange(1, 99); m_num_results.setSuffix(" Results"); - m_layout.addWidget(&m_num_results, 0, 3); + m_layout.addWidget(&m_num_results, 0, 4); // Second row. - m_layout.addWidget(&m_status, 1, 0, 1, 2); - m_layout.addWidget(&m_txt_search, 1, 0, 1, 2); - m_layout.addWidget(&m_btn_exec, 1, 2); - m_layout.addWidget(&m_btn_clear, 1, 3); - + m_layout.addWidget(&m_status, 1, 0, 1, 3); + m_layout.addWidget(&m_txt_search, 1, 0, 1, 3); + m_layout.addWidget(&m_btn_exec, 1, 3); + m_layout.addWidget(&m_btn_clear, 1, 4); // Third row. m_layout.addWidget(&m_output, 2, 0, 1, 0); @@ -105,7 +108,35 @@ void SearchWindow::initSignals() connect(this, SIGNAL(addOutput(QString)), this, SLOT(output(QString))); - connect(&m_dict_lang, SIGNAL(selectionChanged(QStringList)), this, SLOT(langSelected(QStringList))); + connect(&m_dict_file, SIGNAL(addNewItem()), this, SLOT(langFileAdd())); +} + +void SearchWindow::loadDictionaries() +{ + QStringList list; + eoskeygen::Dictionary tmpDict; + std::string base_path(CONFIG_DICT_FULL_PATH); + + // Clear dictionary first. + m_dict.clear(); + + // Go through all selected languages. + list = m_dict_lang.getSelectedItems(); + for(QStringList::const_iterator it = list.cbegin(); it != list.cend(); it++) { + + // Load and add them to dictionary. + tmpDict.loadFromFile(base_path + "/" + it->toStdString()); + m_dict.add(tmpDict); + } + + // Go through all selected files. + list = m_dict_file.getSelectedItems(); + for(QStringList::const_iterator it = list.cbegin(); it != list.cend(); it++) { + + // Load and add them to dictionary. + tmpDict.loadFromFile(it->toStdString()); + m_dict.add(tmpDict); + } } void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result) @@ -173,6 +204,8 @@ void SearchWindow::search() return; } + loadDictionaries(); + m_ksearch.clear(); m_ksearch.addList(list); m_ksearch.setThreadCount(m_num_threads.value()); @@ -200,22 +233,12 @@ void SearchWindow::output(const QString& html) m_output.verticalScrollBar()->setValue(m_output.verticalScrollBar()->maximum()); } -void SearchWindow::langSelected(QStringList selected) +void SearchWindow::langFileAdd() { - std::string base_path(CONFIG_DICT_FULL_PATH); + QStringList files = QFileDialog::getOpenFileNames(this, + "Select one or more language files"); - // Clear dictionary first. - m_dict.clear(); - - // Go through all selected languages. - for(QStringList::const_iterator it = selected.cbegin(); it != selected.cend(); it++) { - - // Load and add them to dictionary. - eoskeygen::Dictionary dict; - dict.loadFromFile(base_path + "/" + it->toStdString()); - - m_dict.add(dict); - } + m_dict_file.addItems(files, true); } void SearchWindow::searchStarted() @@ -223,6 +246,7 @@ void SearchWindow::searchStarted() m_txt_search.setEnabled(false); m_txt_search.setHidden(true); m_dict_lang.setEnabled(false); + m_dict_file.setEnabled(false); m_leet_cb.setEnabled(false); m_btn_exec.setEnabled(false); m_btn_clear.setEnabled(false); @@ -235,6 +259,7 @@ void SearchWindow::searchFinished() m_txt_search.setEnabled(true); m_txt_search.setHidden(false); m_dict_lang.setEnabled(true); + m_dict_file.setEnabled(true); m_leet_cb.setEnabled(true); m_btn_exec.setEnabled(true); m_btn_clear.setEnabled(true); diff --git a/gui/SearchWindow.h b/gui/SearchWindow.h index 1aff8b1..c57f17f 100644 --- a/gui/SearchWindow.h +++ b/gui/SearchWindow.h @@ -48,6 +48,8 @@ public: private : void initSignals(); + void loadDictionaries(); + private slots: // Start a search @@ -63,8 +65,8 @@ private slots: // Called when a search is done. void searchFinished(); - // Called when dictionary language(s) are selected. - void langSelected(QStringList selected); + // Called when a new language file should be added + void langFileAdd(); signals: void addOutput(const QString& line); @@ -97,6 +99,8 @@ private: MultiSelect m_dict_lang; + MultiSelect m_dict_file; + // Buttons QPushButton m_btn_exec; QPushButton m_btn_clear; From e9dadc07acb668a23f5cdc582431ec5098dd86f8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 11:12:06 +0200 Subject: [PATCH 236/404] common/src/core/dictionary.cpp: get rid of iostream header --- common/src/core/dictionary.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp index 7446b34..12c8e42 100644 --- a/common/src/core/dictionary.cpp +++ b/common/src/core/dictionary.cpp @@ -22,7 +22,6 @@ * SOFTWARE. */ #include -#include #include #include #include From 3bd9e9856b1b3c5875db0db90258f45107e03977 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 16:15:39 +0200 Subject: [PATCH 237/404] GUI: Adding GenerateWindow class --- gui/CMakeLists.txt | 1 + gui/GenerateWindow.cpp | 116 +++++++++++++++++++++++++++++++++++++++++ gui/GenerateWindow.hpp | 62 ++++++++++++++++++++++ 3 files changed, 179 insertions(+) create mode 100644 gui/GenerateWindow.cpp create mode 100644 gui/GenerateWindow.hpp diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 7dba68c..7e37389 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -14,6 +14,7 @@ set( PROGRAM_EXE ${COMPONENT_NAME} ) set( PROGRAM_SRC main.cpp + GenerateWindow.cpp SearchWindow.cpp MultiSelect.cpp helpers.cpp diff --git a/gui/GenerateWindow.cpp b/gui/GenerateWindow.cpp new file mode 100644 index 0000000..8ab00bb --- /dev/null +++ b/gui/GenerateWindow.cpp @@ -0,0 +1,116 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include +#include +#include +#include +#include "GenerateWindow.hpp" + +void _initKeyWidget(QLineEdit& w) { + w.setFixedWidth(450); + w.setReadOnly(true); +} + +void _initKeyCopyButton(QPushButton& btn, const QIcon& icon) { + btn.setFixedWidth(32); + btn.setIcon(icon); +} + +GenerateWindow::GenerateWindow(QWidget *parent) : +QWidget (parent), +m_btn_gen ("Generate"), +m_btn_copy_both ("Copy keys") +{ + QIcon copy_icon = QIcon::fromTheme("edit-copy"); + QGridLayout* layout; + + _initKeyWidget(m_pub); + _initKeyWidget(m_priv); + + _initKeyCopyButton(m_btn_copy_pub, copy_icon); + _initKeyCopyButton(m_btn_copy_priv, copy_icon); + + // Layout + layout = new QGridLayout(); + layout->setAlignment(Qt::AlignCenter); + + // Public key row + + layout->addWidget(new QLabel("Public:"), 0, 0); + layout->addWidget(&m_pub, 0, 1); + layout->addWidget(&m_btn_copy_pub, 0, 2); + + // Private key row + + layout->addWidget(new QLabel("Private:"), 1, 0); + layout->addWidget(&m_priv, 1, 1); + layout->addWidget(&m_btn_copy_priv, 1, 2); + + // Bottom row + + m_btn_copy_both.setFixedWidth(80); + + layout->addWidget(&m_btn_gen, 2, 1); + layout->addWidget(&m_btn_copy_both, 2, 2); + + setLayout(layout); + + // Connections + connect(&m_btn_gen, SIGNAL(released()), this, SLOT(generate_key())); + connect(&m_btn_copy_both, SIGNAL(released()), this, SLOT(copy_both_keys())); + connect(&m_btn_copy_pub, SIGNAL(released()), this, SLOT(copy_pub_key())); + connect(&m_btn_copy_priv, SIGNAL(released()), this, SLOT(copy_priv_key())); +} + +void GenerateWindow::generate_key() +{ + std::string pubstr, privstr; + struct libeosio::ec_keypair pair; + + libeosio::ec_generate_key(&pair); + + m_pub.setText(QString::fromStdString(libeosio::wif_pub_encode(pair.pub))); + m_priv.setText(QString::fromStdString(libeosio::wif_priv_encode(pair.secret))); +} + +void GenerateWindow::copy_both_keys() +{ + QClipboard *clipboard = QGuiApplication::clipboard(); + clipboard->setText(m_pub.text() + "\n" + m_priv.text()); +} + +void GenerateWindow::copy_pub_key() +{ + QClipboard *clipboard = QGuiApplication::clipboard(); + clipboard->setText(m_pub.text()); +} + +void GenerateWindow::copy_priv_key() +{ + QClipboard *clipboard = QGuiApplication::clipboard(); + clipboard->setText(m_priv.text()); +} diff --git a/gui/GenerateWindow.hpp b/gui/GenerateWindow.hpp new file mode 100644 index 0000000..da2a110 --- /dev/null +++ b/gui/GenerateWindow.hpp @@ -0,0 +1,62 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef GENERATE_WINDOW_H +#define GENERATE_WINDOW_H + +#include +#include +#include + +class GenerateWindow : public QWidget +{ + Q_OBJECT +public: + GenerateWindow(QWidget *parent = 0); + +public slots: + + // Genereate a new key. + void generate_key(); + + // Copy both keys to clipboard + void copy_both_keys(); + + // copy public key to clipboard + void copy_pub_key(); + + // copy private key to clipboard + void copy_priv_key(); + +protected: + + QLineEdit m_pub; + QLineEdit m_priv; + + QPushButton m_btn_gen; + QPushButton m_btn_copy_both; + QPushButton m_btn_copy_priv; + QPushButton m_btn_copy_pub; +}; + +#endif /* GENERATE_WINDOW_H */ From 8f45d3707a9436348356cd55649220747c59e263 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 16:17:24 +0200 Subject: [PATCH 238/404] GUI: Adding MainWindow class --- gui/CMakeLists.txt | 1 + gui/MainWindow.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++ gui/MainWindow.hpp | 50 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+) create mode 100644 gui/MainWindow.cpp create mode 100644 gui/MainWindow.hpp diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 7e37389..a9f1f6a 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -14,6 +14,7 @@ set( PROGRAM_EXE ${COMPONENT_NAME} ) set( PROGRAM_SRC main.cpp + MainWindow.cpp GenerateWindow.cpp SearchWindow.cpp MultiSelect.cpp diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp new file mode 100644 index 0000000..414ea0e --- /dev/null +++ b/gui/MainWindow.cpp @@ -0,0 +1,55 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include +#include +#include +#include "GenerateWindow.hpp" +#include "SearchWindow.h" +#include "MainWindow.hpp" + +MainWindow::MainWindow(QWidget *parent) : +QMainWindow (parent) +{ + // Create sub windows and stacked widget. + m_stacked = new QStackedWidget(); + m_stacked->addWidget(new GenerateWindow()); + m_stacked->addWidget(new SearchWindow()); + + setCentralWidget(m_stacked); + + // Menu bar. + + menuBar()->addAction("Generate", this, SLOT(switchToGenerate())); + menuBar()->addAction("Search", this, SLOT(switchToSearch())); +} + +void MainWindow::switchToGenerate() +{ + m_stacked->setCurrentIndex(0); +} + +void MainWindow::switchToSearch() +{ + m_stacked->setCurrentIndex(1); +} diff --git a/gui/MainWindow.hpp b/gui/MainWindow.hpp new file mode 100644 index 0000000..1d5d695 --- /dev/null +++ b/gui/MainWindow.hpp @@ -0,0 +1,50 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef MAIN_WINDOW_H +#define MAIN_WINDOW_H + +#include + +class QStackedWidget; + +class MainWindow : public QMainWindow +{ + Q_OBJECT +public: + MainWindow(QWidget *parent = 0); + +private slots : + + // Switch to generate window. + void switchToGenerate(); + + // Switch to search window. + void switchToSearch(); + +private : + + QStackedWidget* m_stacked; +}; + +#endif /* MAIN_WINDOW_H */ From f6dc9cd0b1bd74be0f72eb71b06a1384d2eb5e6a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 16:19:14 +0200 Subject: [PATCH 239/404] gui/main.cpp: use MainWindow class. --- gui/main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gui/main.cpp b/gui/main.cpp index 73fe05f..ecd14e6 100644 --- a/gui/main.cpp +++ b/gui/main.cpp @@ -22,15 +22,15 @@ * SOFTWARE. */ #include -#include "SearchWindow.h" +#include "MainWindow.hpp" int main(int argc, char **argv) { QApplication app(argc, argv); - SearchWindow search_win; + MainWindow window; - search_win.show(); + window.show(); return app.exec(); } From 4a3e5a5f62f5809adff12ec39d5bf6a19d6b1fcd Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 16:24:39 +0200 Subject: [PATCH 240/404] GUI: rename all header files from .h to .hpp --- gui/MainWindow.cpp | 2 +- gui/MultiSelect.cpp | 2 +- gui/{MultiSelect.h => MultiSelect.hpp} | 0 gui/SearchWindow.cpp | 4 ++-- gui/{SearchWindow.h => SearchWindow.hpp} | 2 +- gui/helpers.cpp | 2 +- gui/{helpers.h => helpers.hpp} | 0 7 files changed, 6 insertions(+), 6 deletions(-) rename gui/{MultiSelect.h => MultiSelect.hpp} (100%) rename gui/{SearchWindow.h => SearchWindow.hpp} (99%) rename gui/{helpers.h => helpers.hpp} (100%) diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index 414ea0e..e4f42a4 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -25,7 +25,7 @@ #include #include #include "GenerateWindow.hpp" -#include "SearchWindow.h" +#include "SearchWindow.hpp" #include "MainWindow.hpp" MainWindow::MainWindow(QWidget *parent) : diff --git a/gui/MultiSelect.cpp b/gui/MultiSelect.cpp index 98c6dac..bccf803 100644 --- a/gui/MultiSelect.cpp +++ b/gui/MultiSelect.cpp @@ -26,7 +26,7 @@ #include #include #include -#include "MultiSelect.h" +#include "MultiSelect.hpp" MultiSelect::MultiSelect(const QString& text, bool user_can_add, QWidget *parent) : QPushButton (text + ": none", parent) diff --git a/gui/MultiSelect.h b/gui/MultiSelect.hpp similarity index 100% rename from gui/MultiSelect.h rename to gui/MultiSelect.hpp diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index cbfa290..3b962d5 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -32,8 +32,8 @@ #include #include #include "config.h" -#include "helpers.h" -#include "SearchWindow.h" +#include "helpers.hpp" +#include "SearchWindow.hpp" SearchWindow::SearchWindow(QWidget *parent, Qt::WindowFlags flags) : QWidget (parent, flags), diff --git a/gui/SearchWindow.h b/gui/SearchWindow.hpp similarity index 99% rename from gui/SearchWindow.h rename to gui/SearchWindow.hpp index c57f17f..49bc41b 100644 --- a/gui/SearchWindow.h +++ b/gui/SearchWindow.hpp @@ -35,7 +35,7 @@ #include #include #include -#include "MultiSelect.h" +#include "MultiSelect.hpp" class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult { diff --git a/gui/helpers.cpp b/gui/helpers.cpp index 3b492b4..d1574d4 100644 --- a/gui/helpers.cpp +++ b/gui/helpers.cpp @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "helpers.h" +#include "helpers.hpp" QStringList get_files(const QDir& directory) { diff --git a/gui/helpers.h b/gui/helpers.hpp similarity index 100% rename from gui/helpers.h rename to gui/helpers.hpp From 0503aa0f049639ea4c1d2acfb11d11041cc0b50d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 19:31:49 +0200 Subject: [PATCH 241/404] CMakeLists.txt: Add PROJECT_LICENSE_FILE variable. --- CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b752918..77ad630 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ project(eosio-keygen HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) set( PROJECT_MAINTAINER "Henrik Hautakoski ") +set( PROJECT_LICENSE_FILE ${CMAKE_CURRENT_LIST_DIR}/LICENSE ) # -------------------------------- # Options @@ -89,7 +90,7 @@ endif() # -------------------------------- # Readme and license -install(FILES README.md LICENSE +install(FILES README.md ${PROJECT_LICENSE_FILE} DESTINATION ${CMAKE_INSTALL_SHAREDIR}) # -------------------------------- @@ -97,7 +98,7 @@ install(FILES README.md LICENSE # -------------------------------- if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") - set( CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_LIST_DIR}/LICENSE ) + set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) endif() set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) From 54d46004c18eba0f3feef7670c5b8be24b53d911 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Apr 2020 12:59:03 +0200 Subject: [PATCH 242/404] cli: change .h to .hpp --- CMakeLists.txt | 2 +- cli/benchmark.cpp | 2 +- cli/{benchmark.h => benchmark.hpp} | 0 cli/cli_key_search_result.cpp | 4 ++-- ...{cli_key_search_result.h => cli_key_search_result.hpp} | 0 cli/console.cpp | 4 ++-- cli/{console.h => console.hpp} | 0 cli/console_ansi.cpp | 2 +- cli/console_win32.cpp | 2 +- cli/isatty.cpp | 2 +- cli/{isatty.h => isatty.hpp} | 0 cli/main.cpp | 8 ++++---- config.h.in => config.hpp.in | 0 13 files changed, 13 insertions(+), 13 deletions(-) rename cli/{benchmark.h => benchmark.hpp} (100%) rename cli/{cli_key_search_result.h => cli_key_search_result.hpp} (100%) rename cli/{console.h => console.hpp} (100%) rename cli/{isatty.h => isatty.hpp} (100%) rename config.h.in => config.hpp.in (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3748b26..7eac1f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,7 +60,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") endif() # Project config file -configure_file(config.h.in "${PROJECT_BINARY_DIR}/config.h" @ONLY) +configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) include_directories(${PROJECT_BINARY_DIR}) # -------------------------------- diff --git a/cli/benchmark.cpp b/cli/benchmark.cpp index da384a4..521184e 100644 --- a/cli/benchmark.cpp +++ b/cli/benchmark.cpp @@ -23,7 +23,7 @@ */ #include #include -#include "benchmark.h" +#include "benchmark.hpp" using std::chrono::steady_clock; using std::chrono::duration; diff --git a/cli/benchmark.h b/cli/benchmark.hpp similarity index 100% rename from cli/benchmark.h rename to cli/benchmark.hpp diff --git a/cli/cli_key_search_result.cpp b/cli/cli_key_search_result.cpp index 05d5b57..6817e59 100644 --- a/cli/cli_key_search_result.cpp +++ b/cli/cli_key_search_result.cpp @@ -24,8 +24,8 @@ #include #include #include -#include "console.h" -#include "cli_key_search_result.h" +#include "console.hpp" +#include "cli_key_search_result.hpp" namespace eoskeygen { diff --git a/cli/cli_key_search_result.h b/cli/cli_key_search_result.hpp similarity index 100% rename from cli/cli_key_search_result.h rename to cli/cli_key_search_result.hpp diff --git a/cli/console.cpp b/cli/console.cpp index 2208856..2ed20da 100644 --- a/cli/console.cpp +++ b/cli/console.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ #include -#include "isatty.h" -#include "console.h" +#include "isatty.hpp" +#include "console.hpp" namespace eoskeygen { namespace console { diff --git a/cli/console.h b/cli/console.hpp similarity index 100% rename from cli/console.h rename to cli/console.hpp diff --git a/cli/console_ansi.cpp b/cli/console_ansi.cpp index 2d34980..75b5412 100644 --- a/cli/console_ansi.cpp +++ b/cli/console_ansi.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include "console.h" +#include "console.hpp" namespace eoskeygen { diff --git a/cli/console_win32.cpp b/cli/console_win32.cpp index d3b1614..813daa0 100644 --- a/cli/console_win32.cpp +++ b/cli/console_win32.cpp @@ -23,7 +23,7 @@ */ #include #include -#include "console.h" +#include "console.hpp" namespace eoskeygen { diff --git a/cli/isatty.cpp b/cli/isatty.cpp index e32fe19..5fdadfb 100644 --- a/cli/isatty.cpp +++ b/cli/isatty.cpp @@ -5,7 +5,7 @@ #define _isatty isatty #define _fileno fileno #endif -#include "isatty.h" +#include "isatty.hpp" namespace eoskeygen { diff --git a/cli/isatty.h b/cli/isatty.hpp similarity index 100% rename from cli/isatty.h rename to cli/isatty.hpp diff --git a/cli/main.cpp b/cli/main.cpp index eb74b8b..ff3c527 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -32,10 +32,10 @@ #include #include #include -#include "cli_key_search_result.h" -#include "console.h" -#include "benchmark.h" -#include "config.h" +#include "cli_key_search_result.hpp" +#include "console.hpp" +#include "benchmark.hpp" +#include "config.hpp" // Command line options. bool option_l33t = false; diff --git a/config.h.in b/config.hpp.in similarity index 100% rename from config.h.in rename to config.hpp.in From 2f16accbba7d40a7b8d9ed17ce6f927e420ef429 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 19:32:39 +0200 Subject: [PATCH 243/404] Adding gui/gui_about.h.in --- gui/gui_about.h.in | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 gui/gui_about.h.in diff --git a/gui/gui_about.h.in b/gui/gui_about.h.in new file mode 100644 index 0000000..1f6ab9f --- /dev/null +++ b/gui/gui_about.h.in @@ -0,0 +1,37 @@ +/** + * MIT License + * + * Copyright (c) 2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_GUI_ABOUT_H +#define EOSIOKEYGEN_GUI_ABOUT_H + +#define EOSIOKEYGEN_GUI_ABOUT_TITLE "@PROJECT_NAME@ - About" + +#define EOSIOKEYGEN_GUI_ABOUT_TEXT \ + "

@PROJECT_NAME@ - v@PROJECT_VERSION@

" \ + "

@PROJECT_DESCRIPTION@

" \ + "

@PROJECT_HOMEPAGE_URL@

" \ + "@GUI_ABOUT_LICENSE@" \ + "

Author

" \ + "

@GUI_ABOUT_AUTHOR@

" + +#endif /* EOSIOKEYGEN_CONFIG_ABOUT_H */ From 099d6b30083d61e2ce77ff0c2f2bb02f8141308c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 19:33:02 +0200 Subject: [PATCH 244/404] gui/CMakeLists.txt: Autogenerate gui_config.h from gui_config.h.in --- gui/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index a9f1f6a..3a32d08 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -4,6 +4,18 @@ set( CMAKE_AUTOMOC ON ) set( CMAKE_AUTORCC ON ) set( CMAKE_AUTOUIC ON ) +# Autogenerate about config file + +file( READ ${PROJECT_LICENSE_FILE} GUI_ABOUT_LICENSE ) + +string(REGEX REPLACE "^([^\n]+)" "

\\1

" GUI_ABOUT_LICENSE ${GUI_ABOUT_LICENSE}) +string(REGEX REPLACE "\n\n([^\n]+)" "

\\1

" GUI_ABOUT_LICENSE ${GUI_ABOUT_LICENSE}) +string(REGEX REPLACE "\n" "" GUI_ABOUT_LICENSE ${GUI_ABOUT_LICENSE}) +string(REGEX REPLACE "\<(.+)\>" "- \\1" GUI_ABOUT_AUTHOR ${PROJECT_MAINTAINER}) + +configure_file(gui_about.h.in "${CMAKE_CURRENT_BINARY_DIR}/gui_about.h" @ONLY ESCAPE_QUOTES) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + # -------------------------------- # Program # -------------------------------- From c98ed34e6e7e75dd99a6889b09cde432a33ca77f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 15 Apr 2020 19:33:59 +0200 Subject: [PATCH 245/404] GUI: Implement about dialog in MainWindow. --- gui/MainWindow.cpp | 8 ++++++++ gui/MainWindow.hpp | 2 ++ 2 files changed, 10 insertions(+) diff --git a/gui/MainWindow.cpp b/gui/MainWindow.cpp index e4f42a4..ce2d579 100644 --- a/gui/MainWindow.cpp +++ b/gui/MainWindow.cpp @@ -21,9 +21,11 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#include #include #include #include +#include "gui_about.h" #include "GenerateWindow.hpp" #include "SearchWindow.hpp" #include "MainWindow.hpp" @@ -42,6 +44,7 @@ QMainWindow (parent) menuBar()->addAction("Generate", this, SLOT(switchToGenerate())); menuBar()->addAction("Search", this, SLOT(switchToSearch())); + menuBar()->addAction("About", this, SLOT(showAbout())); } void MainWindow::switchToGenerate() @@ -53,3 +56,8 @@ void MainWindow::switchToSearch() { m_stacked->setCurrentIndex(1); } + +void MainWindow::showAbout() +{ + QMessageBox::about(this, EOSIOKEYGEN_GUI_ABOUT_TITLE, EOSIOKEYGEN_GUI_ABOUT_TEXT); +} diff --git a/gui/MainWindow.hpp b/gui/MainWindow.hpp index 1d5d695..704fa1f 100644 --- a/gui/MainWindow.hpp +++ b/gui/MainWindow.hpp @@ -42,6 +42,8 @@ private slots : // Switch to search window. void switchToSearch(); + void showAbout(); + private : QStackedWidget* m_stacked; From d3e8cc2814007af60ae9f894bf256ba85ecebaac Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Apr 2020 13:51:34 +0200 Subject: [PATCH 246/404] gui/GenerateWindow.cpp: Align labels to the right. --- gui/GenerateWindow.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gui/GenerateWindow.cpp b/gui/GenerateWindow.cpp index 8ab00bb..6d6c8e9 100644 --- a/gui/GenerateWindow.cpp +++ b/gui/GenerateWindow.cpp @@ -60,13 +60,13 @@ m_btn_copy_both ("Copy keys") // Public key row - layout->addWidget(new QLabel("Public:"), 0, 0); + layout->addWidget(new QLabel("Public:"), 0, 0, Qt::AlignRight); layout->addWidget(&m_pub, 0, 1); layout->addWidget(&m_btn_copy_pub, 0, 2); // Private key row - layout->addWidget(new QLabel("Private:"), 1, 0); + layout->addWidget(new QLabel("Private:"), 1, 0, Qt::AlignRight); layout->addWidget(&m_priv, 1, 1); layout->addWidget(&m_btn_copy_priv, 1, 2); From 460e8149fd074a5380bdfffb421db5bb6180f6f3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Apr 2020 13:58:49 +0200 Subject: [PATCH 247/404] gui/GenerateWindow.cpp: Fix horizontal centering of widget's using QGridLayout::setColumnStretch() --- gui/GenerateWindow.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gui/GenerateWindow.cpp b/gui/GenerateWindow.cpp index 6d6c8e9..898281c 100644 --- a/gui/GenerateWindow.cpp +++ b/gui/GenerateWindow.cpp @@ -58,24 +58,27 @@ m_btn_copy_both ("Copy keys") layout = new QGridLayout(); layout->setAlignment(Qt::AlignCenter); - // Public key row + // Stretch first and last column to make the widgets horizontally centered. + layout->setColumnStretch(0, 1); + layout->setColumnStretch(4, 1); - layout->addWidget(new QLabel("Public:"), 0, 0, Qt::AlignRight); - layout->addWidget(&m_pub, 0, 1); - layout->addWidget(&m_btn_copy_pub, 0, 2); + // Public key row + layout->addWidget(new QLabel("Public:"), 0, 1, Qt::AlignRight); + layout->addWidget(&m_pub, 0, 2); + layout->addWidget(&m_btn_copy_pub, 0, 3); // Private key row - layout->addWidget(new QLabel("Private:"), 1, 0, Qt::AlignRight); - layout->addWidget(&m_priv, 1, 1); - layout->addWidget(&m_btn_copy_priv, 1, 2); + layout->addWidget(new QLabel("Private:"), 1, 1, Qt::AlignRight); + layout->addWidget(&m_priv, 1, 2); + layout->addWidget(&m_btn_copy_priv, 1, 3); // Bottom row m_btn_copy_both.setFixedWidth(80); - layout->addWidget(&m_btn_gen, 2, 1); - layout->addWidget(&m_btn_copy_both, 2, 2); + layout->addWidget(&m_btn_gen, 2, 2); + layout->addWidget(&m_btn_copy_both, 2, 3); setLayout(layout); From 94686cc4f68ebf5344e91a93b18b7cdfb980e14f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 16 Apr 2020 14:43:36 +0200 Subject: [PATCH 248/404] gui/SearchWindow.cpp: change config.h to config.hpp --- gui/SearchWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index 3b962d5..3e7042f 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -31,7 +31,7 @@ #include #include #include -#include "config.h" +#include "config.hpp" #include "helpers.hpp" #include "SearchWindow.hpp" From 9e9e96b9540bba3cd814d9b1de531879f21e10ff Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Apr 2020 11:04:45 +0200 Subject: [PATCH 249/404] README.md: Replace the old libeoskeygen info with libeosio. --- README.md | 51 ++++++++++++++++++++++++++------------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 3b72adf..ef8c295 100644 --- a/README.md +++ b/README.md @@ -25,31 +25,6 @@ First you need to have a compiler. this can be installed with apt. $ apt-get install gcc g++ ``` -You then need `libeoskeygen`. - -This can be installed from [EOS Sweden's APT Repository](https://eosswedenorg.github.io/apt) like this: - -```sh -$ sudo apt-get install software-properties-common -$ curl https://apt.eossweden.org/key 2> /dev/null | sudo apt-key add - -$ sudo apt-add-repository -y 'deb [arch=amd64] https://apt.eossweden.org/main `lsb_release -cs` stable' -$ sudo apt-get install libeoskeygen-dev -``` - -or manually via `.deb` file from [github](https://github.com/eosswedenorg/libeoskeygen/releases) - -```sh -$ wget -$ sudo apt install ./libeoskeygen-dev-.deb -``` - -**Other**: - -Consult the manual for you package manager. -`libeoskeygen` will be downloaded and compiled if it's not installed automatically (however this is slower). - -Consult [libeoskeygen's github](https://github.com/eosswedenorg/libeoskeygen) if you want to compile and install it manually. - **CMake** If your package manager don't provide a sufficiently new version of cmake, you can install it with these commands: @@ -134,6 +109,32 @@ These compile options are available: For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA` +### libeosio + +To speed up the build process, you can install `libeosio` + +#### Ubuntu + +You can use [EOS Sweden's APT Repository](https://eosswedenorg.github.io/apt) like this: + +```sh +$ sudo apt-get install software-properties-common +$ curl https://apt.eossweden.org/key 2> /dev/null | sudo apt-key add - +$ sudo apt-add-repository -y 'deb [arch=amd64] https://apt.eossweden.org/main `lsb_release -cs` stable' +$ sudo apt-get install libeosio-dev +``` + +or manually via `.deb` file from [github](https://github.com/eosswedenorg/libeosio/releases) + +```sh +$ wget +$ sudo apt install ./libeosio-dev-.deb +``` + +#### Other + +Consult [libeosio's github](https://github.com/eosswedenorg/libeosio) + ## Install After the project has been compiled. run `sudo ./install.sh` or the following code if you dont want to use that: From e5cb4a72f6085268b1d2e404801047402fd07dc9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Apr 2020 11:17:15 +0200 Subject: [PATCH 250/404] libeosio .h files are renamed to .hpp --- cli/benchmark.cpp | 2 +- cli/cli_key_search_result.cpp | 2 +- cli/cli_key_search_result.hpp | 2 +- cli/main.cpp | 6 +++--- common/cmake/libeosio.cmake | 2 +- common/include/eoskeygen/key_search.h | 2 +- common/src/key_search.cpp | 4 ++-- common/src/key_search_mt.cpp | 2 +- gui/GenerateWindow.cpp | 4 ++-- gui/SearchWindow.cpp | 2 +- 10 files changed, 14 insertions(+), 14 deletions(-) diff --git a/cli/benchmark.cpp b/cli/benchmark.cpp index 521184e..b25fbae 100644 --- a/cli/benchmark.cpp +++ b/cli/benchmark.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include +#include #include "benchmark.hpp" using std::chrono::steady_clock; diff --git a/cli/cli_key_search_result.cpp b/cli/cli_key_search_result.cpp index 6817e59..24cf8c3 100644 --- a/cli/cli_key_search_result.cpp +++ b/cli/cli_key_search_result.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include +#include #include #include "console.hpp" #include "cli_key_search_result.hpp" diff --git a/cli/cli_key_search_result.hpp b/cli/cli_key_search_result.hpp index 0d7e6b2..dcb749c 100644 --- a/cli/cli_key_search_result.hpp +++ b/cli/cli_key_search_result.hpp @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H -#include +#include #include #include #include diff --git a/cli/main.cpp b/cli/main.cpp index ff3c527..a68a894 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -23,9 +23,9 @@ */ #include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index b739349..5c1499b 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION 137d5cbe31666a748954dd233e54c5703480ebbf ) +set( LIBEOSIO_WANTED_VERSION aa7f3041185e5c28b03279636d1ba2446ed740ab ) # -------------------------------- # Macros diff --git a/common/include/eoskeygen/key_search.h b/common/include/eoskeygen/key_search.h index 688def0..94bbd79 100644 --- a/common/include/eoskeygen/key_search.h +++ b/common/include/eoskeygen/key_search.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include #include diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index e97e14a..d849d78 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -21,8 +21,8 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include -#include +#include +#include #include #include #include diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp index 2e498ff..abd74c3 100644 --- a/common/src/key_search_mt.cpp +++ b/common/src/key_search_mt.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include diff --git a/gui/GenerateWindow.cpp b/gui/GenerateWindow.cpp index 898281c..ffefda0 100644 --- a/gui/GenerateWindow.cpp +++ b/gui/GenerateWindow.cpp @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include #include "GenerateWindow.hpp" void _initKeyWidget(QLineEdit& w) { diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index 3e7042f..bdc77c4 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include "config.hpp" From 9dacf00c7f09d1b827cbe74a532580ff8bb7939b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Apr 2020 15:35:50 +0200 Subject: [PATCH 251/404] common/cmake/libeosio.cmake: use v0.1.0 --- common/cmake/libeosio.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index 5c1499b..4dbdcc5 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION aa7f3041185e5c28b03279636d1ba2446ed740ab ) +set( LIBEOSIO_WANTED_VERSION v0.1.0 ) # -------------------------------- # Macros From a85c9b50902ecba0a8d30f184fcd1efdebf34231 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Apr 2020 15:44:07 +0200 Subject: [PATCH 252/404] change remaining .h files to .hpp --- cli/cli_key_search_result.cpp | 2 +- cli/cli_key_search_result.hpp | 6 ++-- cli/main.cpp | 12 ++++---- common/CMakeLists.txt | 2 +- common/{src/config.h.in => config.hpp.in} | 0 common/include/eoskeygen/config.hpp | 30 +++++++++++++++++++ .../core/{dictionary.h => dictionary.hpp} | 0 .../eoskeygen/core/{file.h => file.hpp} | 2 +- .../eoskeygen/core/{leet.h => leet.hpp} | 2 +- .../eoskeygen/core/{string.h => string.hpp} | 0 .../eoskeygen/core/{strlist.h => strlist.hpp} | 0 .../{key_search.h => key_search.hpp} | 6 ++-- ..._search_result.h => key_search_result.hpp} | 2 +- common/src/core/dictionary.cpp | 6 ++-- common/src/core/file.cpp | 4 +-- common/src/core/leet.cpp | 2 +- common/src/core/string.cpp | 2 +- common/src/core/strlist.cpp | 4 +-- common/src/key_search.cpp | 8 ++--- common/src/key_search_mt.cpp | 4 +-- gui/SearchWindow.cpp | 4 +-- gui/SearchWindow.hpp | 4 +-- 22 files changed, 66 insertions(+), 36 deletions(-) rename common/{src/config.h.in => config.hpp.in} (100%) create mode 100644 common/include/eoskeygen/config.hpp rename common/include/eoskeygen/core/{dictionary.h => dictionary.hpp} (100%) rename common/include/eoskeygen/core/{file.h => file.hpp} (97%) rename common/include/eoskeygen/core/{leet.h => leet.hpp} (97%) rename common/include/eoskeygen/core/{string.h => string.hpp} (100%) rename common/include/eoskeygen/core/{strlist.h => strlist.hpp} (100%) rename common/include/eoskeygen/{key_search.h => key_search.hpp} (96%) rename common/include/eoskeygen/{key_search_result.h => key_search_result.hpp} (97%) diff --git a/cli/cli_key_search_result.cpp b/cli/cli_key_search_result.cpp index 24cf8c3..7ec6b18 100644 --- a/cli/cli_key_search_result.cpp +++ b/cli/cli_key_search_result.cpp @@ -23,7 +23,7 @@ */ #include #include -#include +#include #include "console.hpp" #include "cli_key_search_result.hpp" diff --git a/cli/cli_key_search_result.hpp b/cli/cli_key_search_result.hpp index dcb749c..c9a2e15 100644 --- a/cli/cli_key_search_result.hpp +++ b/cli/cli_key_search_result.hpp @@ -25,9 +25,9 @@ #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #include -#include -#include -#include +#include +#include +#include namespace eoskeygen { diff --git a/cli/main.cpp b/cli/main.cpp index a68a894..aa34553 100644 --- a/cli/main.cpp +++ b/cli/main.cpp @@ -26,12 +26,12 @@ #include #include #include -#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include +#include #include "cli_key_search_result.hpp" #include "console.hpp" #include "benchmark.hpp" diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index fa9e2d5..e268a16 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -34,7 +34,7 @@ if (USE_THREADS) endif (USE_THREADS) # Project config file -configure_file(src/config.h.in "${CMAKE_CURRENT_LIST_DIR}/include/eoskeygen/config.h" @ONLY) +configure_file(config.hpp.in "${CMAKE_CURRENT_LIST_DIR}/include/eoskeygen/config.hpp" @ONLY) add_library( ${COMMON_NAME} STATIC ${COMMON_SOURCE} ) diff --git a/common/src/config.h.in b/common/config.hpp.in similarity index 100% rename from common/src/config.h.in rename to common/config.hpp.in diff --git a/common/include/eoskeygen/config.hpp b/common/include/eoskeygen/config.hpp new file mode 100644 index 0000000..5728f1f --- /dev/null +++ b/common/include/eoskeygen/config.hpp @@ -0,0 +1,30 @@ +/** + * MIT License + * + * Copyright (c) 2019-2020 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef EOSIOKEYGEN_COMMON_CONFIG_H +#define EOSIOKEYGEN_COMMON_CONFIG_H + +// Defined if we have thread support. +#define EOSIOKEYGEN_HAVE_THREADS + +#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */ diff --git a/common/include/eoskeygen/core/dictionary.h b/common/include/eoskeygen/core/dictionary.hpp similarity index 100% rename from common/include/eoskeygen/core/dictionary.h rename to common/include/eoskeygen/core/dictionary.hpp diff --git a/common/include/eoskeygen/core/file.h b/common/include/eoskeygen/core/file.hpp similarity index 97% rename from common/include/eoskeygen/core/file.h rename to common/include/eoskeygen/core/file.hpp index fffebaa..6f5c7e3 100644 --- a/common/include/eoskeygen/core/file.h +++ b/common/include/eoskeygen/core/file.hpp @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_COMMON_CORE_FILE_H #define EOSIOKEYGEN_COMMON_CORE_FILE_H -#include +#include namespace eoskeygen { diff --git a/common/include/eoskeygen/core/leet.h b/common/include/eoskeygen/core/leet.hpp similarity index 97% rename from common/include/eoskeygen/core/leet.h rename to common/include/eoskeygen/core/leet.hpp index 01289fc..7631052 100644 --- a/common/include/eoskeygen/core/leet.h +++ b/common/include/eoskeygen/core/leet.hpp @@ -25,7 +25,7 @@ #define EOSIOKEYGEN_COMMON_CORE_LEET_H #include -#include +#include namespace eoskeygen { diff --git a/common/include/eoskeygen/core/string.h b/common/include/eoskeygen/core/string.hpp similarity index 100% rename from common/include/eoskeygen/core/string.h rename to common/include/eoskeygen/core/string.hpp diff --git a/common/include/eoskeygen/core/strlist.h b/common/include/eoskeygen/core/strlist.hpp similarity index 100% rename from common/include/eoskeygen/core/strlist.h rename to common/include/eoskeygen/core/strlist.hpp diff --git a/common/include/eoskeygen/key_search.h b/common/include/eoskeygen/key_search.hpp similarity index 96% rename from common/include/eoskeygen/key_search.h rename to common/include/eoskeygen/key_search.hpp index 94bbd79..f757002 100644 --- a/common/include/eoskeygen/key_search.h +++ b/common/include/eoskeygen/key_search.hpp @@ -27,9 +27,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include namespace eoskeygen { diff --git a/common/include/eoskeygen/key_search_result.h b/common/include/eoskeygen/key_search_result.hpp similarity index 97% rename from common/include/eoskeygen/key_search_result.h rename to common/include/eoskeygen/key_search_result.hpp index 943e6d9..825ebae 100644 --- a/common/include/eoskeygen/key_search_result.h +++ b/common/include/eoskeygen/key_search_result.hpp @@ -24,7 +24,7 @@ #ifndef EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H #define EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H -#include +#include namespace eoskeygen { diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp index 12c8e42..11bd50b 100644 --- a/common/src/core/dictionary.cpp +++ b/common/src/core/dictionary.cpp @@ -25,9 +25,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include namespace eoskeygen { diff --git a/common/src/core/file.cpp b/common/src/core/file.cpp index ac73356..74f4c5e 100644 --- a/common/src/core/file.cpp +++ b/common/src/core/file.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ #include -#include -#include +#include +#include namespace eoskeygen { diff --git a/common/src/core/leet.cpp b/common/src/core/leet.cpp index bf0e7f1..75bed31 100644 --- a/common/src/core/leet.cpp +++ b/common/src/core/leet.cpp @@ -22,7 +22,7 @@ * SOFTWARE. */ #include -#include +#include namespace eoskeygen { diff --git a/common/src/core/string.cpp b/common/src/core/string.cpp index 164e362..1851a01 100644 --- a/common/src/core/string.cpp +++ b/common/src/core/string.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include namespace eoskeygen { diff --git a/common/src/core/strlist.cpp b/common/src/core/strlist.cpp index ea12151..6212a35 100644 --- a/common/src/core/strlist.cpp +++ b/common/src/core/strlist.cpp @@ -22,8 +22,8 @@ * SOFTWARE. */ #include -#include -#include +#include +#include namespace eoskeygen { diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index d849d78..810f884 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -23,10 +23,10 @@ */ #include #include -#include -#include -#include -#include +#include +#include +#include +#include namespace eoskeygen { diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp index abd74c3..00e50e3 100644 --- a/common/src/key_search_mt.cpp +++ b/common/src/key_search_mt.cpp @@ -26,8 +26,8 @@ #include #include #include -#include -#include +#include +#include namespace eoskeygen { diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index bdc77c4..3a71a5d 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -29,8 +29,8 @@ #include #include #include -#include -#include +#include +#include #include "config.hpp" #include "helpers.hpp" #include "SearchWindow.hpp" diff --git a/gui/SearchWindow.hpp b/gui/SearchWindow.hpp index 49bc41b..a918d0b 100644 --- a/gui/SearchWindow.hpp +++ b/gui/SearchWindow.hpp @@ -33,8 +33,8 @@ #include #include #include -#include -#include +#include +#include #include "MultiSelect.hpp" class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult From 4741eb684f064b0cbff47ce3486cbf99c82f12b1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 16:54:35 +0200 Subject: [PATCH 253/404] common/.gitignore: ignore correct header file. --- common/.gitignore | 2 +- common/include/eoskeygen/config.hpp | 30 ----------------------------- 2 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 common/include/eoskeygen/config.hpp diff --git a/common/.gitignore b/common/.gitignore index 9375aee..3d2564d 100644 --- a/common/.gitignore +++ b/common/.gitignore @@ -1 +1 @@ -include/eoskeygen/config.h +include/eoskeygen/config.h* diff --git a/common/include/eoskeygen/config.hpp b/common/include/eoskeygen/config.hpp deleted file mode 100644 index 5728f1f..0000000 --- a/common/include/eoskeygen/config.hpp +++ /dev/null @@ -1,30 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_COMMON_CONFIG_H -#define EOSIOKEYGEN_COMMON_CONFIG_H - -// Defined if we have thread support. -#define EOSIOKEYGEN_HAVE_THREADS - -#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */ From c1b2bfce0d8d79917118bb777989a9425985e7f5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 16:57:10 +0200 Subject: [PATCH 254/404] README.md: adding --disabled-threads documentation again. --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ef8c295..c8db1d0 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,8 @@ C:\repo\build> cmake --build . --config Release These compile options are available: | Cmake | build.sh | Description | -|--------------------------- | ----------------- | ------------------------------------------| +|--------------------------- | ----------------- | ----------------------------------------- | +| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | | -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | | -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | From 22222c1d7c6b5731750255d4b408eeca919f4233 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 17:11:07 +0200 Subject: [PATCH 255/404] gui/SearchWindow: Respect EOSIOKEYGEN_HAVE_THREADS define. --- gui/SearchWindow.cpp | 8 ++++++++ gui/SearchWindow.hpp | 2 ++ 2 files changed, 10 insertions(+) diff --git a/gui/SearchWindow.cpp b/gui/SearchWindow.cpp index 3a71a5d..2f36d81 100644 --- a/gui/SearchWindow.cpp +++ b/gui/SearchWindow.cpp @@ -66,10 +66,12 @@ m_btn_clear ("Clear") m_layout.addWidget(&m_leet_cb, 0, 2); +#ifdef EOSIOKEYGEN_HAVE_THREADS m_num_threads.setValue((int) eoskeygen::KeySearch::max_threads()); m_num_threads.setRange(1, (int) eoskeygen::KeySearch::max_threads()); m_num_threads.setSuffix(" Threads"); m_layout.addWidget(&m_num_threads, 0, 3); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ m_num_results.setValue(10); m_num_results.setRange(1, 99); @@ -208,7 +210,9 @@ void SearchWindow::search() m_ksearch.clear(); m_ksearch.addList(list); +#ifdef EOSIOKEYGEN_HAVE_THREADS m_ksearch.setThreadCount(m_num_threads.value()); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ QFuture future = QtConcurrent::run(m_ksearch, &eoskeygen::KeySearch::find, m_num_results.value()); m_worker.setFuture(future); @@ -250,7 +254,9 @@ void SearchWindow::searchStarted() m_leet_cb.setEnabled(false); m_btn_exec.setEnabled(false); m_btn_clear.setEnabled(false); +#ifdef EOSIOKEYGEN_HAVE_THREADS m_num_threads.setEnabled(false); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ m_num_results.setEnabled(false); } @@ -263,6 +269,8 @@ void SearchWindow::searchFinished() m_leet_cb.setEnabled(true); m_btn_exec.setEnabled(true); m_btn_clear.setEnabled(true); +#ifdef EOSIOKEYGEN_HAVE_THREADS m_num_threads.setEnabled(true); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ m_num_results.setEnabled(true); } diff --git a/gui/SearchWindow.hpp b/gui/SearchWindow.hpp index a918d0b..bd622d7 100644 --- a/gui/SearchWindow.hpp +++ b/gui/SearchWindow.hpp @@ -89,8 +89,10 @@ private: // Search input. QLineEdit m_txt_search; +#ifdef EOSIOKEYGEN_HAVE_THREADS // Number of Threads. QSpinBox m_num_threads; +#endif /* EOSIOKEYGEN_HAVE_THREADS */ // Number of Results QSpinBox m_num_results; From 6181af62120c23316377e8ad30ecc96eae5a449e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 17:11:43 +0200 Subject: [PATCH 256/404] README.md: Document --no-cli,--gui build flags. --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c8db1d0..5e154aa 100644 --- a/README.md +++ b/README.md @@ -102,11 +102,13 @@ C:\repo\build> cmake --build . --config Release These compile options are available: -| Cmake | build.sh | Description | -|--------------------------- | ----------------- | ----------------------------------------- | -| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | -| -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | -| -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | +| Cmake | build.sh | Description | +|---------------------------- | ----------------- | ----------------------------------------- | +| -DBUILD_COMPONENT_CLI=`OFF` | --no-cli | Do not build cli program | +| -DBUILD_COMPONENT_GUI=`ON` | --gui | Build gui program (Qt5) | +| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | +| -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | +| -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA` From 7a8867bb3c8779f0b10159d4a0e97b8dcecf19b7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 17:15:38 +0200 Subject: [PATCH 257/404] build.sh: Adding --no-cli,--gui flags --- build.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 05ef766..06da719 100755 --- a/build.sh +++ b/build.sh @@ -1,11 +1,11 @@ #!/bin/bash function usage() { - echo "Usage: ${0##*/} [ -h|--help ] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ --no-cli ] [ --gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" exit 1 } -options=$(getopt -n "${0##*/}" -o "lht:" -l "help,type:,pkg-type:,disable-threads,force-ansi" -- "$@") +options=$(getopt -n "${0##*/}" -o "lht:" -l "help,no-cli,gui,type:,pkg-type:,disable-threads,force-ansi" -- "$@") [ $? -eq 0 ] || usage @@ -33,6 +33,10 @@ while true; do TARGET="package" ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}" ;; + --no-cli) + ARGS="${ARGS} -DBUILD_COMPONENT_CLI=OFF" ;; + --gui) + ARGS="${ARGS} -DBUILD_COMPONENT_GUI=ON" ;; --disable-threads) ARGS="${ARGS} -DUSE_THREADS=OFF" ;; --force-ansi) @@ -48,6 +52,9 @@ while true; do shift done +# Remove cache first +rm build/CMakeCache.txt 2> /dev/null + cmake -B build $ARGS . if [ ${ONLY_CONFIG} -eq 0 ]; then cmake --build build --clean-first --target ${TARGET} From 54e493de1f50b652777d70b31e48c4c97215dcba Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 20 Apr 2020 18:11:46 +0200 Subject: [PATCH 258/404] .github/workflows/ci.yml: update build matrix to cover all configurations. --- .github/workflows/ci.yml | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index af10bb7..cec2909 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,15 +12,20 @@ jobs: strategy: matrix: os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] - build: [ cli-force-ansi-on, cli-force-ansi-off, gui ] + build: [ cli, cli-mt, cli-ansi, cli-ansi-mt, gui, gui-mt ] include: - - build: cli-force-ansi-on - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON - - build: cli-force-ansi-off - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON + - build: cli + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=OFF + - build: cli-mt + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=ON + - build: cli-ansi + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=OFF + - build: cli-ansi-mt + cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=ON - build: gui - cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON - + cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON -DUSE_THREADS=OFF + - build: gui-mt + cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON -DUSE_THREADS=ON name: ${{matrix.os}} (${{matrix.build}}) runs-on: ${{matrix.os}} @@ -34,12 +39,12 @@ jobs: run: brew install openssl - name: Qt - Ubuntu - if: matrix.build == 'gui' && runner.os == 'Linux' + if: startsWith(matrix.build, 'gui') && runner.os == 'Linux' shell: bash run: sudo apt-get install qt5-default - name: Qt - Windows/Mac - if: matrix.build == 'gui' && runner.os != 'Linux' + if: startsWith(matrix.build, 'gui') && runner.os != 'Linux' uses: jurplel/install-qt-action@v2 with: version: '5.9' From 884f8a612518635465c5f0989bfcc5e12ed6a5b0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 21 Apr 2020 10:06:10 +0200 Subject: [PATCH 259/404] cli: move source files. --- cli/CMakeLists.txt | 14 +++++++------- cli/{ => src}/benchmark.cpp | 0 cli/{ => src}/benchmark.hpp | 0 cli/{ => src}/cli_key_search_result.cpp | 0 cli/{ => src}/cli_key_search_result.hpp | 0 cli/{ => src}/console.cpp | 0 cli/{ => src}/console.hpp | 0 cli/{ => src}/console_ansi.cpp | 0 cli/{ => src}/console_win32.cpp | 0 cli/{ => src}/isatty.cpp | 0 cli/{ => src}/isatty.hpp | 0 cli/{ => src}/main.cpp | 0 12 files changed, 7 insertions(+), 7 deletions(-) rename cli/{ => src}/benchmark.cpp (100%) rename cli/{ => src}/benchmark.hpp (100%) rename cli/{ => src}/cli_key_search_result.cpp (100%) rename cli/{ => src}/cli_key_search_result.hpp (100%) rename cli/{ => src}/console.cpp (100%) rename cli/{ => src}/console.hpp (100%) rename cli/{ => src}/console_ansi.cpp (100%) rename cli/{ => src}/console_win32.cpp (100%) rename cli/{ => src}/isatty.cpp (100%) rename cli/{ => src}/isatty.hpp (100%) rename cli/{ => src}/main.cpp (100%) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 9080728..f08a281 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -8,18 +8,18 @@ option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) set (PROGRAM_SOURCE - isatty.cpp - cli_key_search_result.cpp - console.cpp - benchmark.cpp - main.cpp + src/isatty.cpp + src/cli_key_search_result.cpp + src/console.cpp + src/benchmark.cpp + src/main.cpp ) if (WIN32 AND NOT FORCE_ANSI) - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} console_win32.cpp) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_win32.cpp) else() # *nix should have ansi support. - set (PROGRAM_SOURCE ${PROGRAM_SOURCE} console_ansi.cpp) + set (PROGRAM_SOURCE ${PROGRAM_SOURCE} src/console_ansi.cpp) endif() add_executable( ${PROGRAM_EXE} ${PROGRAM_SOURCE} ) diff --git a/cli/benchmark.cpp b/cli/src/benchmark.cpp similarity index 100% rename from cli/benchmark.cpp rename to cli/src/benchmark.cpp diff --git a/cli/benchmark.hpp b/cli/src/benchmark.hpp similarity index 100% rename from cli/benchmark.hpp rename to cli/src/benchmark.hpp diff --git a/cli/cli_key_search_result.cpp b/cli/src/cli_key_search_result.cpp similarity index 100% rename from cli/cli_key_search_result.cpp rename to cli/src/cli_key_search_result.cpp diff --git a/cli/cli_key_search_result.hpp b/cli/src/cli_key_search_result.hpp similarity index 100% rename from cli/cli_key_search_result.hpp rename to cli/src/cli_key_search_result.hpp diff --git a/cli/console.cpp b/cli/src/console.cpp similarity index 100% rename from cli/console.cpp rename to cli/src/console.cpp diff --git a/cli/console.hpp b/cli/src/console.hpp similarity index 100% rename from cli/console.hpp rename to cli/src/console.hpp diff --git a/cli/console_ansi.cpp b/cli/src/console_ansi.cpp similarity index 100% rename from cli/console_ansi.cpp rename to cli/src/console_ansi.cpp diff --git a/cli/console_win32.cpp b/cli/src/console_win32.cpp similarity index 100% rename from cli/console_win32.cpp rename to cli/src/console_win32.cpp diff --git a/cli/isatty.cpp b/cli/src/isatty.cpp similarity index 100% rename from cli/isatty.cpp rename to cli/src/isatty.cpp diff --git a/cli/isatty.hpp b/cli/src/isatty.hpp similarity index 100% rename from cli/isatty.hpp rename to cli/src/isatty.hpp diff --git a/cli/main.cpp b/cli/src/main.cpp similarity index 100% rename from cli/main.cpp rename to cli/src/main.cpp From 4a83b06ef20e192de0ba208f717221588133925d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 21 Apr 2020 14:22:42 +0200 Subject: [PATCH 260/404] CMake: new CPack structure with config defined in sub directories. --- CMakeLists.txt | 44 +++++++++++-------- cli/CMakeLists.txt | 26 +++++++++-- cli/cmake/CPackComponentConfig.cmake.in | 13 ++++++ .../{cpack_custom.cmake => CPackConfig.cmake} | 13 +----- cmake/CPackProperties.cmake.in | 7 +++ gui/CMakeLists.txt | 19 ++++++-- gui/cmake/CPackComponentConfig.cmake.in | 16 +++++++ 7 files changed, 101 insertions(+), 37 deletions(-) create mode 100644 cli/cmake/CPackComponentConfig.cmake.in rename cmake/{cpack_custom.cmake => CPackConfig.cmake} (88%) create mode 100644 cmake/CPackProperties.cmake.in create mode 100644 gui/cmake/CPackComponentConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c48bb2..97d5d09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,6 +75,29 @@ endif() configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) include_directories(${PROJECT_BINARY_DIR}) +# -------------------------------- +# Install +# -------------------------------- + +# Readme and license +install(FILES README.md ${PROJECT_LICENSE_FILE} + DESTINATION ${CMAKE_INSTALL_SHAREDIR}) + +# -------------------------------- +# Package +# -------------------------------- + +include(CPackConfig) + +set( CPACK_COMPONENTS_ALL cli gui ) + +if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") + set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) +endif() + +set (CPACK_PROPERTIES_FILE ${PROJECT_BINARY_DIR}/CPackComponentsInclude.cmake) +configure_file(cmake/CPackProperties.cmake.in ${CPACK_PROPERTIES_FILE} @ONLY) + # -------------------------------- # Components # -------------------------------- @@ -90,23 +113,6 @@ if (BUILD_COMPONENT_GUI) endif() # -------------------------------- -# Install +# CPack # -------------------------------- - -# Readme and license -install(FILES README.md ${PROJECT_LICENSE_FILE} - DESTINATION ${CMAKE_INSTALL_SHAREDIR}) - -# -------------------------------- -# Package -# -------------------------------- - -if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") - set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) -endif() - -set( CPACK_DEBIAN_PACKAGE_PRIORITY "optional" ) -set( CPACK_DEBIAN_PACKAGE_SECTION "misc" ) -set( CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON ) - -include( cpack_custom ) +include (CPack) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index f08a281..76c8621 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -1,3 +1,13 @@ +cmake_minimum_required(VERSION 3.15) + +# -------------------------------- +# Project Info +# -------------------------------- + +project(eosio-keygen + VERSION ${CMAKE_PROJECT_VERSION} + LANGUAGES CXX) + # Options option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) @@ -5,7 +15,7 @@ option(FORCE_ANSI "Force ANSI console colors even on windows" OFF) # Program # -------------------------------- -set (PROGRAM_EXE ${CMAKE_PROJECT_NAME}) +set (PROGRAM_EXE ${PROJECT_NAME}) set (PROGRAM_SOURCE src/isatty.cpp @@ -30,7 +40,9 @@ target_link_libraries( ${PROGRAM_EXE} PUBLIC common ) # Install # -------------------------------- -install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS ${PROGRAM_EXE} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT cli) # Documentation @@ -38,5 +50,13 @@ if (UNIX) configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) install(DIRECTORY ${PROJECT_BINARY_DIR}/man1 - DESTINATION ${CMAKE_INSTALL_MANDIR}) + DESTINATION ${CMAKE_INSTALL_MANDIR} + COMPONENT cli) endif (UNIX) + +# -------------------------------- +# Package +# -------------------------------- + +configure_file(cmake/CPackComponentConfig.cmake.in + ${PROJECT_BINARY_DIR}/CPackProperties.cmake) diff --git a/cli/cmake/CPackComponentConfig.cmake.in b/cli/cmake/CPackComponentConfig.cmake.in new file mode 100644 index 0000000..d1b5c1b --- /dev/null +++ b/cli/cmake/CPackComponentConfig.cmake.in @@ -0,0 +1,13 @@ + +# -------------------------------- +# CPack Component Config +# -------------------------------- + +set( CPACK_PACKAGE_CLI_NAME "${PROJECT_NAME}" ) +set( CPACK_PACKAGE_CLI_CONTACT "${PROJECT_MAINTAINER}" ) + +# Debian specific +set( CPACK_DEBIAN_CLI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_CLI_PACKAGE_PRIORITY "optional" ) +set( CPACK_DEBIAN_CLI_PACKAGE_SECTION "misc" ) +set( CPACK_DEBIAN_CLI_PACKAGE_DEPENDS "libssl1.1 (>= 1.1.0), libstdc++6 (>= 6)") diff --git a/cmake/cpack_custom.cmake b/cmake/CPackConfig.cmake similarity index 88% rename from cmake/cpack_custom.cmake rename to cmake/CPackConfig.cmake index d4fad9b..9dd5e7a 100644 --- a/cmake/cpack_custom.cmake +++ b/cmake/CPackConfig.cmake @@ -93,10 +93,8 @@ set( CPACK_DEBIAN_PACKAGE_RELEASE "1" CACHE STRING "Debian package release versi # So we have to do it here. set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" ) -# Set "correct" filename that also include system version and architecture. -set( CPACK_DEBIAN_FILE_NAME - "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb" -) +# Always build components for deb packages +set( CPACK_DEB_COMPONENT_INSTALL ON ) # -------------------------------- @@ -112,10 +110,3 @@ if (NOT CPACK_GENERATOR) set( CPACK_GENERATOR "ZIP" ) endif() endif() - - -# -------------------------------- -# Include original CPack module. -# -------------------------------- - -include( CPack ) diff --git a/cmake/CPackProperties.cmake.in b/cmake/CPackProperties.cmake.in new file mode 100644 index 0000000..6a75e0c --- /dev/null +++ b/cmake/CPackProperties.cmake.in @@ -0,0 +1,7 @@ + +# Include component specific config +foreach( component @CPACK_COMPONENTS_ALL@ ) + if (EXISTS "@CMAKE_CURRENT_BINARY_DIR@/${component}/CPackProperties.cmake") + include("@CMAKE_CURRENT_BINARY_DIR@/${component}/CPackProperties.cmake") + endif() +endforeach() diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 3a32d08..7d7911e 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -1,3 +1,9 @@ +cmake_minimum_required(VERSION 3.15) + +project(eosio-keygen-gui + VERSION ${CMAKE_PROJECT_VERSION} + DESCRIPTION "Keygenerator for EOSIO (gui)" + LANGUAGES CXX) # Qt5 needs MOC,RCC and UIC set( CMAKE_AUTOMOC ON ) @@ -20,9 +26,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) # Program # -------------------------------- -set( COMPONENT_NAME ${CMAKE_PROJECT_NAME}-gui) - -set( PROGRAM_EXE ${COMPONENT_NAME} ) +set( PROGRAM_EXE ${PROJECT_NAME} ) set( PROGRAM_SRC main.cpp @@ -45,4 +49,11 @@ target_link_libraries( ${PROGRAM_EXE} Qt5::Concurrent Qt5::Core Qt5::Widgets com install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - COMPONENT ${COMPONENT_NAME}) + COMPONENT gui) + +# -------------------------------- +# Package +# -------------------------------- + +configure_file(cmake/CPackComponentConfig.cmake.in + ${PROJECT_BINARY_DIR}/CPackProperties.cmake) diff --git a/gui/cmake/CPackComponentConfig.cmake.in b/gui/cmake/CPackComponentConfig.cmake.in new file mode 100644 index 0000000..ff52fc4 --- /dev/null +++ b/gui/cmake/CPackComponentConfig.cmake.in @@ -0,0 +1,16 @@ + +# -------------------------------- +# CPack Component Config +# -------------------------------- + +set( CPACK_PACKAGE_GUI_NAME "${PROJECT_NAME}" ) +set( CPACK_PACKAGE_GUI_CONTACT "${PROJECT_MAINTAINER}" ) + +# Additional description +set( CPACK_COMPONENT_GUI_DESCRIPTION "Graphical interface (Qt framework)" ) + +# Debian specific +set( CPACK_DEBIAN_GUI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_GUI_PACKAGE_PRIORITY "optional" ) +set( CPACK_DEBIAN_GUI_PACKAGE_SECTION "misc" ) +set( CPACK_DEBIAN_GUI_PACKAGE_SHLIBDEPS ON ) From 404c203488d67cc735388155f358bea8fe22f16d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 22 Apr 2020 12:17:54 +0200 Subject: [PATCH 261/404] README.md: Change libeoskeygen to libeosio --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5e154aa..f1ce300 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This program generates public and private keypair for [EOS](https://eos.io/) ## Compile -You will need `libeoskeygen` and `cmake 3.15` or later to compile this project. +You will need `libeosio` and `cmake 3.15` or later to compile this project. ### Linux/MacOS @@ -56,7 +56,7 @@ $ brew install cmake If you need a newer version of cmake, you can download the official `.dmg` file: [cmake-3.15.7-Darwin-x86_64.dmg](https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.dmg). or see https://cmake.org/download for other versions. -`libeoskeygen` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libeoskeygen) +`libeosio` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libeosio) #### Build From a350dd5846ecfd49bc58459d362b114213144efe Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 22 Apr 2020 15:37:04 +0200 Subject: [PATCH 262/404] CMakeLists.txt: Fixing compile flags for MSVC Use set_compile_options() with cmake generator expression to define flags for all configurations and compilers in a compact way. --- CMakeLists.txt | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 97d5d09..4697bc4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,15 +61,22 @@ set( CMAKE_CXX_STANDARD_REQUIRED ON ) set( CMAKE_CXX_EXTENSIONS OFF ) # c++ flags -set( CMAKE_CXX_FLAGS_DEBUG "-O0 -g" ) -set( CMAKE_CXX_FLAGS_RELEASE "-O3" ) -set( CMAKE_CXX_FLAGS_MINSIZEREL "-Os" ) +add_compile_options( + "$<$:-Werror;-Wall;-Wconversion;-Wno-sign-conversion;-Wextra>" + "$<$:/W3;-D_CRT_SECURE_NO_WARNINGS=1>" -if (CMAKE_CXX_COMPILER_ID MATCHES "GNU") - set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -Wall -Wconversion -Wno-sign-conversion -Wextra" ) -elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") - add_definitions( "-D_CRT_SECURE_NO_WARNINGS=1" ) -endif() + # Debug + "$<$:$<$:-O0;-g>>" + "$<$:$<$:/Od;/Zi>>" + + # Release + "$<$:$<$:-O3>>" + "$<$:$<$:/O2>>" + + # MinSizeRel + "$<$:$<$:-Os>>" + "$<$:$<$:/O1>>" +) # Project config file configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) From 8d925536bab0c824962cb54069dc37a105c9d89c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 22 Apr 2020 18:01:40 +0200 Subject: [PATCH 263/404] build.sh: add nsis to --pkg-type --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 06da719..b623cdc 100755 --- a/build.sh +++ b/build.sh @@ -1,7 +1,7 @@ #!/bin/bash function usage() { - echo "Usage: ${0##*/} [ -h|--help ] [ --no-cli ] [ --gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ --no-cli ] [ --gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type nsis|deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" exit 1 } @@ -26,7 +26,7 @@ while true; do ;; --pkg-type) shift - [[ ! "$1" =~ ^(deb|zip|tgz)$ ]] && { + [[ ! "$1" =~ ^(nsis|deb|zip|tgz)$ ]] && { echo "Incorrect package type '$1' provided" usage } From 00b9177f3aae13aab5d50b42349e6a748c8cfd04 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 23 Apr 2020 10:00:23 +0200 Subject: [PATCH 264/404] gui/CMakeLists.txt: add "WIN32" flag to add_executable This makes cmake configure the compiler to create a gui app (e.g. not opening a console window that spawns a gui window as a child process) --- gui/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 7d7911e..17e3166 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -37,7 +37,7 @@ set( PROGRAM_SRC helpers.cpp ) -add_executable( ${PROGRAM_EXE} ${PROGRAM_SRC} ) +add_executable( ${PROGRAM_EXE} WIN32 ${PROGRAM_SRC} ) # Libraries find_package( Qt5 COMPONENTS Concurrent Core Widgets REQUIRED ) From bfd254f48404edfd83df0e05dcb2c5c3706b9082 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 23 Apr 2020 16:30:30 +0200 Subject: [PATCH 265/404] CMake: Adding alot of code to handle .ddl's on windows using windeployqt --- gui/cmake/QtUtils.cmake | 110 ++++++++++++++++++++++++++++ gui/cmake/cmake_install_qt.cmake.in | 23 ++++++ 2 files changed, 133 insertions(+) create mode 100644 gui/cmake/QtUtils.cmake create mode 100644 gui/cmake/cmake_install_qt.cmake.in diff --git a/gui/cmake/QtUtils.cmake b/gui/cmake/QtUtils.cmake new file mode 100644 index 0000000..694d1be --- /dev/null +++ b/gui/cmake/QtUtils.cmake @@ -0,0 +1,110 @@ + +set(_QT_INSTALL_CONFIG_TEMPLATE ${CMAKE_CURRENT_LIST_DIR}/cmake_install_qt.cmake.in) +set(_QT_INSTALL_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/cmake_install_qt.cmake) + +# ------------------------------------------------------------------------------ +# Code Taken and modified from: +# https://github.com/equalsraf/neovim-qt/blob/master/cmake/WinDeployQt.cmake +# +# Wrapper to call windeployqt on Windows +# ------------------------------------------------------------------------------ +function(qt5_win_deploy) + cmake_parse_arguments(_deploy + "COMPILER_RUNTIME;FORCE;SKIP_TRANSLATIONS" + "TARGET;INSTALL_COMPONENT" + "MODULES;EXCLUDE_MODULES" + ${ARGN} + ) + + if(NOT _deploy_TARGET) + message(FATAL_ERROR "A TARGET must be specified") + endif() + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + list(APPEND _ARGS --debug) + elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + list(APPEND _ARGS --release-with-debug-info) + elseif(CMAKE_BUILD_TYPE STREQUAL "Release") + list(APPEND _ARGS --release) + endif() + if(_deploy_COMPILER_RUNTIME) + list(APPEND _ARGS --compiler-runtime) + endif() + if(_deploy_FORCE) + list(APPEND _ARGS --force) + endif() + if(_deploy_SKIP_TRANSLATIONS) + list(APPEND _ARGS --no-translations) + endif() + + foreach(mod ${_deploy_MODULES}) + string(TOLOWER ${mod} mod) + string(REPLACE "qt5::" "" mod ${mod}) + list(APPEND _ARGS "--${mod}") + endforeach() + foreach(mod ${_deploy_EXCLUDE_MODULES}) + string(TOLOWER ${mod} mod) + string(REPLACE "qt5::" "" mod ${mod}) + list(APPEND _ARGS "--no-${mod}") + endforeach() + + find_program(_deploy_PROGRAM windeployqt PATHS $ENV{QTDIR}/bin) + if(_deploy_PROGRAM) + message(STATUS "Found ${_deploy_PROGRAM}") + else() + message(FATAL_ERROR "Unable to find windeployqt") + endif() + + if(COMPILER_RUNTIME AND NOT $ENV{VVVV}) + message(STATUS "not set, the VC++ redistributable installer will NOT be bundled") + endif() + + set( _QT_INSTALL_CONFIG_DEPFILE "${CMAKE_CURRENT_BINARY_DIR}/qt_deps_\${CMAKE_INSTALL_CONFIG_NAME}.cmake" ) + set( _QT_DEPFILE ${CMAKE_CURRENT_BINARY_DIR}/qt_deps_${CMAKE_BUILD_TYPE}.cmake ) + + add_custom_target(${_deploy_TARGET}_windeployqt ALL + COMMAND ${CMAKE_COMMAND} -E echo "$" > ${_QT_DEPFILE} + COMMAND ${_deploy_PROGRAM} --list relative ${_ARGS} $ >> ${_QT_DEPFILE} + DEPENDS ${_deploy_TARGET} + COMMENT "Preparing Qt runtime dependencies") + + configure_file(${_QT_INSTALL_CONFIG_TEMPLATE} ${_QT_INSTALL_CONFIG} @ONLY) + + if (_deploy_INSTALL_COMPONENT) + set(_install_args "COMPONENT ${_deploy_INSTALL_COMPONENT}") + endif() + + install(SCRIPT ${_QT_INSTALL_CONFIG} ${_install_args}) +endfunction() + +# ------------------------------------------------------------------------------ +# Macro for compile, link and deploy qt apps. +# ------------------------------------------------------------------------------ +macro(qt5_app) + cmake_parse_arguments(_args + "COMPILER_RUNTIME;FORCE;SKIP_TRANSLATIONS" + "TARGET;INSTALL_COMPONENT" + "MODULES" + ${ARGN} + ) + + if(NOT _args_TARGET) + message(FATAL_ERROR "A TARGET must be specified") + endif() + + if(NOT _args_MODULES) + message(FATAL_ERROR "Must define atleast one QT component") + endif() + + find_package( Qt5 COMPONENTS ${_args_MODULES} REQUIRED) + + # Link targets + list( TRANSFORM _args_MODULES PREPEND "Qt5::" OUTPUT_VARIABLE _qtargets) + target_link_libraries( ${_args_TARGET} ${_qtargets} ) + + + if (WIN32) + # Windows needs alot of extra stuff to copy all dll's. + qt5_win_deploy(${ARGN}) + endif() + +endmacro() diff --git a/gui/cmake/cmake_install_qt.cmake.in b/gui/cmake/cmake_install_qt.cmake.in new file mode 100644 index 0000000..da01764 --- /dev/null +++ b/gui/cmake/cmake_install_qt.cmake.in @@ -0,0 +1,23 @@ + +# Custom script that installs Qt runtime files. + +if (EXISTS @_QT_INSTALL_CONFIG_DEPFILE@) + file(STRINGS @_QT_INSTALL_CONFIG_DEPFILE@ _lines) + + # First line is the output path. + list(GET _lines 0 BASE_PATH) + + # Rest of the lines are the files relative to the path. + list(SUBLIST _lines 1 -1 FILES) + + foreach(file ${FILES}) + get_filename_component(rel_path ${file} DIRECTORY BASE_DIR ${BASE_PATH}) + + set(install_path ${CMAKE_INSTALL_PREFIX}/@CMAKE_INSTALL_BINDIR@) + if (rel_path) + set(install_path "${install_path}/${rel_path}") + endif() + + file(INSTALL ${BASE_PATH}/${file} DESTINATION ${install_path}) + endforeach() +endif() From 4436f769e652d5f165cc2d455a205593a74024ca Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 23 Apr 2020 16:31:24 +0200 Subject: [PATCH 266/404] gui/CMakeLists.txt: use the new Qt stuff. --- gui/CMakeLists.txt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 17e3166..9734e0d 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -5,6 +5,11 @@ project(eosio-keygen-gui DESCRIPTION "Keygenerator for EOSIO (gui)" LANGUAGES CXX) +# Append modules dir +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +include(QtUtils) + # Qt5 needs MOC,RCC and UIC set( CMAKE_AUTOMOC ON ) set( CMAKE_AUTORCC ON ) @@ -40,8 +45,14 @@ set( PROGRAM_SRC add_executable( ${PROGRAM_EXE} WIN32 ${PROGRAM_SRC} ) # Libraries -find_package( Qt5 COMPONENTS Concurrent Core Widgets REQUIRED ) -target_link_libraries( ${PROGRAM_EXE} Qt5::Concurrent Qt5::Core Qt5::Widgets common ) +target_link_libraries( ${PROGRAM_EXE} common ) + +# QT +qt5_app(TARGET ${PROGRAM_EXE} + SKIP_TRANSLATIONS + MODULES Core Gui Widgets Concurrent + INSTALL_COMPONENT gui +) # -------------------------------- # Install From a390d4226f5ab227a74bfb2f79b4e722b4184c7c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 23 Apr 2020 16:35:23 +0200 Subject: [PATCH 267/404] CMakeLists.txt: Set CMAKE_INSTALL_BINDIR to "bin" on windows With Qt we have alot more files then just the two .exe's --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4697bc4..7664ef3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ set( CMAKE_INSTALL_SHAREDIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME} ) if (WIN32) # "Flat" install on windows. - set( CMAKE_INSTALL_BINDIR "." ) + set( CMAKE_INSTALL_BINDIR "bin" ) set( CMAKE_INSTALL_DATADIR "." ) set( CMAKE_INSTALL_SHAREDIR "." ) set( CMAKE_INSTALL_MANDIR "." ) From 56c188688084526cbcf23e134de286daf4782e86 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 23 Apr 2020 16:57:48 +0200 Subject: [PATCH 268/404] gui/cmake/QtUtils.cmake: the value _install_args should not be in quotes. --- gui/cmake/QtUtils.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/cmake/QtUtils.cmake b/gui/cmake/QtUtils.cmake index 694d1be..7d91a73 100644 --- a/gui/cmake/QtUtils.cmake +++ b/gui/cmake/QtUtils.cmake @@ -70,7 +70,7 @@ function(qt5_win_deploy) configure_file(${_QT_INSTALL_CONFIG_TEMPLATE} ${_QT_INSTALL_CONFIG} @ONLY) if (_deploy_INSTALL_COMPONENT) - set(_install_args "COMPONENT ${_deploy_INSTALL_COMPONENT}") + set(_install_args COMPONENT ${_deploy_INSTALL_COMPONENT}) endif() install(SCRIPT ${_QT_INSTALL_CONFIG} ${_install_args}) From 2d1c0d078528c466844436fdf2502ffdc6fadcb9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 12:01:24 +0200 Subject: [PATCH 269/404] CMake: rename BUILD_COMPONENT_* options to COMPONENT_* --- .github/workflows/ci.yml | 12 ++++++------ CMakeLists.txt | 10 +++++----- README.md | 14 +++++++------- build.sh | 4 ++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cec2909..9ff243d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,17 +15,17 @@ jobs: build: [ cli, cli-mt, cli-ansi, cli-ansi-mt, gui, gui-mt ] include: - build: cli - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=OFF + cmake-opts: -DCOMPONENT_CLI=ON -DCOMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=OFF - build: cli-mt - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=ON + cmake-opts: -DCOMPONENT_CLI=ON -DCOMPONENT_GUI=OFF -DFORCE_ANSI=OFF -DUSE_THREADS=ON - build: cli-ansi - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=OFF + cmake-opts: -DCOMPONENT_CLI=ON -DCOMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=OFF - build: cli-ansi-mt - cmake-opts: -DBUILD_COMPONENT_CLI=ON -DBUILD_COMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=ON + cmake-opts: -DCOMPONENT_CLI=ON -DCOMPONENT_GUI=OFF -DFORCE_ANSI=ON -DUSE_THREADS=ON - build: gui - cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON -DUSE_THREADS=OFF + cmake-opts: -DCOMPONENT_CLI=OFF -DCOMPONENT_GUI=ON -DUSE_THREADS=OFF - build: gui-mt - cmake-opts: -DBUILD_COMPONENT_CLI=OFF -DBUILD_COMPONENT_GUI=ON -DUSE_THREADS=ON + cmake-opts: -DCOMPONENT_CLI=OFF -DCOMPONENT_GUI=ON -DUSE_THREADS=ON name: ${{matrix.os}} (${{matrix.build}}) runs-on: ${{matrix.os}} diff --git a/CMakeLists.txt b/CMakeLists.txt index 7664ef3..58a5c4a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,10 +16,10 @@ set( PROJECT_LICENSE_FILE ${CMAKE_CURRENT_LIST_DIR}/LICENSE ) # Options # -------------------------------- -option(BUILD_COMPONENT_CLI "Build CLI Component" ON) -option(BUILD_COMPONENT_GUI "Build GUI Component (Qt5)" OFF) +option(COMPONENT_CLI "Build CLI Component" ON) +option(COMPONENT_GUI "Build GUI Component (Qt5)" OFF) -if (NOT BUILD_COMPONENT_CLI AND NOT BUILD_COMPONENT_GUI) +if (NOT COMPONENT_CLI AND NOT COMPONENT_GUI) message(FATAL_ERROR "Atleast one of BUILD_COMPONENT_GUI,BUILD_COMPONENT_CLI must be set to ON") endif() @@ -111,11 +111,11 @@ configure_file(cmake/CPackProperties.cmake.in ${CPACK_PROPERTIES_FILE} @ONLY) add_subdirectory( common ) -if (BUILD_COMPONENT_CLI) +if (COMPONENT_CLI) add_subdirectory( cli ) endif() -if (BUILD_COMPONENT_GUI) +if (COMPONENT_GUI) add_subdirectory( gui ) endif() diff --git a/README.md b/README.md index f1ce300..cb68cd3 100644 --- a/README.md +++ b/README.md @@ -102,13 +102,13 @@ C:\repo\build> cmake --build . --config Release These compile options are available: -| Cmake | build.sh | Description | -|---------------------------- | ----------------- | ----------------------------------------- | -| -DBUILD_COMPONENT_CLI=`OFF` | --no-cli | Do not build cli program | -| -DBUILD_COMPONENT_GUI=`ON` | --gui | Build gui program (Qt5) | -| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | -| -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | -| -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | +| Cmake | build.sh | Description | +|--------------------------- | ----------------- | ----------------------------------------- | +| -DCOMPONENT_CLI=`OFF` | --no-cli | Do not build cli program | +| -DCOMPONENT_GUI=`ON` | --gui | Build gui program (Qt5) | +| -DUSE_THREADS=`OFF` | --disable-threads | Disable thread support | +| -DCMAKE_BUILD_TYPE=`value` | -t `value` | Type of build | +| -DFORCE_ANSI=`ON` | --force-ansi | Force ANSI console colors even on windows | For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA` diff --git a/build.sh b/build.sh index b623cdc..7bab057 100755 --- a/build.sh +++ b/build.sh @@ -34,9 +34,9 @@ while true; do ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}" ;; --no-cli) - ARGS="${ARGS} -DBUILD_COMPONENT_CLI=OFF" ;; + ARGS="${ARGS} -DCOMPONENT_CLI=OFF" ;; --gui) - ARGS="${ARGS} -DBUILD_COMPONENT_GUI=ON" ;; + ARGS="${ARGS} -DCOMPONENT_GUI=ON" ;; --disable-threads) ARGS="${ARGS} -DUSE_THREADS=OFF" ;; --force-ansi) From 2d150a2e8bc7b97d3c1bcf417709efca7248d5aa Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 12:02:40 +0200 Subject: [PATCH 270/404] .github/workflows/package.yml: pass CMAKE_BUILD_TYPE=Release to cmake on windows. --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 8398b5e..309649c 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -50,7 +50,7 @@ jobs: } else { $PLATFORM="${{matrix.arch}}" } - cmake -A $PLATFORM -D CPACK_GENERATOR=NSIS -S . -B build + cmake -A $PLATFORM -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build - name: Build run: cmake --build build --config Release From cad11e591220c09a2b72269d03848bf25c5fc3b3 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 13:37:52 +0200 Subject: [PATCH 271/404] gui: move source files to "src" subdirectory --- gui/CMakeLists.txt | 12 ++++++------ gui/{ => src}/GenerateWindow.cpp | 0 gui/{ => src}/GenerateWindow.hpp | 0 gui/{ => src}/MainWindow.cpp | 0 gui/{ => src}/MainWindow.hpp | 0 gui/{ => src}/MultiSelect.cpp | 0 gui/{ => src}/MultiSelect.hpp | 0 gui/{ => src}/SearchWindow.cpp | 0 gui/{ => src}/SearchWindow.hpp | 0 gui/{ => src}/helpers.cpp | 0 gui/{ => src}/helpers.hpp | 0 gui/{ => src}/main.cpp | 0 12 files changed, 6 insertions(+), 6 deletions(-) rename gui/{ => src}/GenerateWindow.cpp (100%) rename gui/{ => src}/GenerateWindow.hpp (100%) rename gui/{ => src}/MainWindow.cpp (100%) rename gui/{ => src}/MainWindow.hpp (100%) rename gui/{ => src}/MultiSelect.cpp (100%) rename gui/{ => src}/MultiSelect.hpp (100%) rename gui/{ => src}/SearchWindow.cpp (100%) rename gui/{ => src}/SearchWindow.hpp (100%) rename gui/{ => src}/helpers.cpp (100%) rename gui/{ => src}/helpers.hpp (100%) rename gui/{ => src}/main.cpp (100%) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 9734e0d..0b6c940 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -34,12 +34,12 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) set( PROGRAM_EXE ${PROJECT_NAME} ) set( PROGRAM_SRC - main.cpp - MainWindow.cpp - GenerateWindow.cpp - SearchWindow.cpp - MultiSelect.cpp - helpers.cpp + src/main.cpp + src/MainWindow.cpp + src/GenerateWindow.cpp + src/SearchWindow.cpp + src/MultiSelect.cpp + src/helpers.cpp ) add_executable( ${PROGRAM_EXE} WIN32 ${PROGRAM_SRC} ) diff --git a/gui/GenerateWindow.cpp b/gui/src/GenerateWindow.cpp similarity index 100% rename from gui/GenerateWindow.cpp rename to gui/src/GenerateWindow.cpp diff --git a/gui/GenerateWindow.hpp b/gui/src/GenerateWindow.hpp similarity index 100% rename from gui/GenerateWindow.hpp rename to gui/src/GenerateWindow.hpp diff --git a/gui/MainWindow.cpp b/gui/src/MainWindow.cpp similarity index 100% rename from gui/MainWindow.cpp rename to gui/src/MainWindow.cpp diff --git a/gui/MainWindow.hpp b/gui/src/MainWindow.hpp similarity index 100% rename from gui/MainWindow.hpp rename to gui/src/MainWindow.hpp diff --git a/gui/MultiSelect.cpp b/gui/src/MultiSelect.cpp similarity index 100% rename from gui/MultiSelect.cpp rename to gui/src/MultiSelect.cpp diff --git a/gui/MultiSelect.hpp b/gui/src/MultiSelect.hpp similarity index 100% rename from gui/MultiSelect.hpp rename to gui/src/MultiSelect.hpp diff --git a/gui/SearchWindow.cpp b/gui/src/SearchWindow.cpp similarity index 100% rename from gui/SearchWindow.cpp rename to gui/src/SearchWindow.cpp diff --git a/gui/SearchWindow.hpp b/gui/src/SearchWindow.hpp similarity index 100% rename from gui/SearchWindow.hpp rename to gui/src/SearchWindow.hpp diff --git a/gui/helpers.cpp b/gui/src/helpers.cpp similarity index 100% rename from gui/helpers.cpp rename to gui/src/helpers.cpp diff --git a/gui/helpers.hpp b/gui/src/helpers.hpp similarity index 100% rename from gui/helpers.hpp rename to gui/src/helpers.hpp diff --git a/gui/main.cpp b/gui/src/main.cpp similarity index 100% rename from gui/main.cpp rename to gui/src/main.cpp From 2084a66dbf6a61a5ef2c8d74255fcb4ff1c6313b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 13:38:20 +0200 Subject: [PATCH 272/404] CMakeLists.txt: set CMAKE_BUILD_TYPE to Debug per default. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 58a5c4a..7a97b2b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,9 +30,9 @@ endif() # Append modules dir list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") -# Default to release build if none is set. +# Default to debug build if none is set. if (NOT CMAKE_BUILD_TYPE) - set( CMAKE_BUILD_TYPE Release ) + set( CMAKE_BUILD_TYPE Debug ) endif() # Install path From e1bda4b846eb8a37552321b6569e479cec603f2e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 14:43:02 +0200 Subject: [PATCH 273/404] cli/cmake/CPackComponentConfig.cmake.in: Set description. --- cli/cmake/CPackComponentConfig.cmake.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cli/cmake/CPackComponentConfig.cmake.in b/cli/cmake/CPackComponentConfig.cmake.in index d1b5c1b..aabca32 100644 --- a/cli/cmake/CPackComponentConfig.cmake.in +++ b/cli/cmake/CPackComponentConfig.cmake.in @@ -6,6 +6,8 @@ set( CPACK_PACKAGE_CLI_NAME "${PROJECT_NAME}" ) set( CPACK_PACKAGE_CLI_CONTACT "${PROJECT_MAINTAINER}" ) +set( CPACK_COMPONENT_CLI_DESCRIPTION "Command line application" ) + # Debian specific set( CPACK_DEBIAN_CLI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") set( CPACK_DEBIAN_CLI_PACKAGE_PRIORITY "optional" ) From 178e71fbc75d00217c67262e8aa56e545f1f598c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 15:54:49 +0200 Subject: [PATCH 274/404] cli/cmake/CPackComponentConfig.cmake.in: Set debian package name --- cli/cmake/CPackComponentConfig.cmake.in | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/cmake/CPackComponentConfig.cmake.in b/cli/cmake/CPackComponentConfig.cmake.in index aabca32..30d60da 100644 --- a/cli/cmake/CPackComponentConfig.cmake.in +++ b/cli/cmake/CPackComponentConfig.cmake.in @@ -10,6 +10,7 @@ set( CPACK_COMPONENT_CLI_DESCRIPTION "Command line application" ) # Debian specific set( CPACK_DEBIAN_CLI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_CLI_PACKAGE_NAME "${PROJECT_NAME}" ) set( CPACK_DEBIAN_CLI_PACKAGE_PRIORITY "optional" ) set( CPACK_DEBIAN_CLI_PACKAGE_SECTION "misc" ) set( CPACK_DEBIAN_CLI_PACKAGE_DEPENDS "libssl1.1 (>= 1.1.0), libstdc++6 (>= 6)") From c5e9222abed7df876a01fb3319e6b615190ffae0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 15:55:13 +0200 Subject: [PATCH 275/404] gui/cmake/CPackComponentConfig.cmake.in: Set debian package name --- gui/cmake/CPackComponentConfig.cmake.in | 1 + 1 file changed, 1 insertion(+) diff --git a/gui/cmake/CPackComponentConfig.cmake.in b/gui/cmake/CPackComponentConfig.cmake.in index ff52fc4..3269f8b 100644 --- a/gui/cmake/CPackComponentConfig.cmake.in +++ b/gui/cmake/CPackComponentConfig.cmake.in @@ -11,6 +11,7 @@ set( CPACK_COMPONENT_GUI_DESCRIPTION "Graphical interface (Qt framework)" ) # Debian specific set( CPACK_DEBIAN_GUI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}-${CPACK_SYSTEM_NAME}-${CPACK_SYSTEM_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}.deb") +set( CPACK_DEBIAN_GUI_PACKAGE_NAME "${PROJECT_NAME}" ) set( CPACK_DEBIAN_GUI_PACKAGE_PRIORITY "optional" ) set( CPACK_DEBIAN_GUI_PACKAGE_SECTION "misc" ) set( CPACK_DEBIAN_GUI_PACKAGE_SHLIBDEPS ON ) From 37647685ea29e836aa70bc7fa8c5bf873fec9e35 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 16:35:10 +0200 Subject: [PATCH 276/404] CMake: install license file for both cli and gui --- CMakeLists.txt | 8 -------- cli/CMakeLists.txt | 5 +++++ gui/CMakeLists.txt | 5 +++++ 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7a97b2b..c0212a9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,14 +82,6 @@ add_compile_options( configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) include_directories(${PROJECT_BINARY_DIR}) -# -------------------------------- -# Install -# -------------------------------- - -# Readme and license -install(FILES README.md ${PROJECT_LICENSE_FILE} - DESTINATION ${CMAKE_INSTALL_SHAREDIR}) - # -------------------------------- # Package # -------------------------------- diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 76c8621..4ff100c 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -44,6 +44,11 @@ install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT cli) +install(FILES ${PROJECT_LICENSE_FILE} + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT cli + RENAME LICENSE.cli) + # Documentation if (UNIX) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 0b6c940..ce70fca 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -62,6 +62,11 @@ install(TARGETS ${PROGRAM_EXE} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT gui) +install(FILES ${PROJECT_LICENSE_FILE} + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT gui + RENAME LICENSE.gui) + # -------------------------------- # Package # -------------------------------- From e0d4fbbdb7d72958dc5e267a874bf3ecdfd2c4ae Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 16:53:38 +0200 Subject: [PATCH 277/404] cli/docs/eosio-keygen.1.in: Spelling fix. --- cli/docs/eosio-keygen.1.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/docs/eosio-keygen.1.in b/cli/docs/eosio-keygen.1.in index ef12205..c7ef574 100644 --- a/cli/docs/eosio-keygen.1.in +++ b/cli/docs/eosio-keygen.1.in @@ -68,7 +68,7 @@ and find all l33tspeak combinations of that word and uses the new list for the s .B --threads= Use .I -of parallel threads for searching. Default is what the operating system recomends. +of parallel threads for searching. Default is what the operating system recommends. .TP 20 .B --dict= Use words found in From f1f5e50e9aeecca2e52d0e61700a5c1ee1068e42 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 17:04:49 +0200 Subject: [PATCH 278/404] Adding cli/docs/README.md.in --- cli/docs/README.md.in | 105 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 cli/docs/README.md.in diff --git a/cli/docs/README.md.in b/cli/docs/README.md.in new file mode 100644 index 0000000..2e38c01 --- /dev/null +++ b/cli/docs/README.md.in @@ -0,0 +1,105 @@ + +# eosio-keygen (cli) + +Generate public and private keypair for [EOSIO](https://eos.io/) + +## Synopsis + +```shell +@PROJECT_NAME@ [-h|--help] + +@PROJECT_NAME@ [-v] + +@PROJECT_NAME@ search [-m] [--l33t] [--threads=] [--dict= ...] [--lang= ...] word_list [count] + +@PROJECT_NAME@ benchmark [num_keys] +``` + +## Description + +Output one EOSIO key pair if no arguments are given. +Options and subcommands are as follows: + +### General flags + +| syntax | Description | +| --------------- | ---------------- | +| -h, --help | Shows help text. | +| -v | Shows version | + + +### search command + +`eosio-keygen search [-m] [--l33t] [--threads=] [--dict= ...] [--lang= ...] word_list [count]` + +performs a search, finding `count` public keys containing one or more words from `word_list` (separated with ','). + +Instead of a list it is possible to specify a file with words (separated with newline '\n') using `file:/path/to/file` + +#### Search specific options + +#### -m + +Monochrome, disables all color output. + +#### --leet + +Takes each word in `word_list` and find all l33tspeak combinations of that word and uses the new list for the search. + +#### --threads=num + +Use `num` of parallel threads for searching. Default is what the operating system recommends. + +#### --dict=file +Use words found in `file` (separated by newline) to highlight words in the keys +found (note that the words in this file are not used for search. only for highlight output). + +There can be more then one `--dict` flag. In that case contents of all files are merged into one dictionary. + +#### --lang=value + +Same as `--dict` but will use `value` to find a file in `@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict`. +There can be more then one `--lang` flag. In that case contents of all files are merged into one dictionary. + +#### count + +Number of keys to search for (default is 10) + + +### benchmark command + +`eosio-keygen benchmark [num_keys]` + +performs a benchmark test, generating `num_keys` keys and measuring the time. + +#### Benchmark specific options: + +#### num_keys + +Number of keys to search for (default is 10) + + +## Security notice + +Keys are generated by `OpenSSL`'s `EC_KEY_generate_key` function. The program will +never expose your keys to anything but the computers memory and output of the +program. You are free to inspect the source code and compile yourself to verify. + +However, use this at your own risk. we cannot guarantee that the keys are +cryptographically secure as this depends on OpenSSL's implementation (alto it is +widely used and should be safe) + +Please read the `LICENSE` file. + +``` +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +## Author + +Henrik Hautakoski - [henrik@eossweden.org](mailto:henrik@eossweden.org) From c173c002f50ba91cd7dc3ee3652f044a285369a1 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 17:05:26 +0200 Subject: [PATCH 279/404] CMake: configure and install cli/docs/README.md.in --- cli/CMakeLists.txt | 5 +++++ cli/docs/README.md.in | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index 4ff100c..610425c 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -51,6 +51,11 @@ install(FILES ${PROJECT_LICENSE_FILE} # Documentation +configure_file( docs/README.md.in ${PROJECT_BINARY_DIR}/README.cli.md @ONLY ) +install(FILES ${PROJECT_BINARY_DIR}/README.cli.md + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT cli) + if (UNIX) configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 ) diff --git a/cli/docs/README.md.in b/cli/docs/README.md.in index 2e38c01..6b6fb67 100644 --- a/cli/docs/README.md.in +++ b/cli/docs/README.md.in @@ -3,6 +3,8 @@ Generate public and private keypair for [EOSIO](https://eos.io/) +Source code is available at [github.com](https://github.com/eosswedenorg/eosio-keygen) + ## Synopsis ```shell @@ -89,7 +91,7 @@ However, use this at your own risk. we cannot guarantee that the keys are cryptographically secure as this depends on OpenSSL's implementation (alto it is widely used and should be safe) -Please read the `LICENSE` file. +Please read the `LICENSE.cli` file. ``` THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, From 7cb70bd9a456964d6c9cfdff94669e8d3d8471f5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 17:49:16 +0200 Subject: [PATCH 280/404] Adding a basic gui/README.md --- gui/README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 gui/README.md diff --git a/gui/README.md b/gui/README.md new file mode 100644 index 0000000..c3b9a22 --- /dev/null +++ b/gui/README.md @@ -0,0 +1,33 @@ + +# eosio-keygen (gui) + +This is the graphical version of [eosio-keygen](https://github.com/eosswedenorg/eosio-keygen) project. + +The program generates public and private keypairs for [EOSIO](https://eos.io/) + +Among the basic functionality the program can also search for keys containing specific words also know as _vanity keys_. + +## Security notice + +Keys are generated by `OpenSSL`'s `EC_KEY_generate_key` function. The program will +never expose your keys to anything but the computers memory and output of the +program. You are free to inspect the source code and compile yourself to verify. + +However, use this at your own risk. we cannot guarantee that the keys are +cryptographically secure as this depends on OpenSSL's implementation (alto it is +widely used and should be safe) + +Please read the `LICENSE.gui` file. + +``` +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` + +## Author + +Henrik Hautakoski - [henrik@eossweden.org](mailto:henrik@eossweden.org) From e3d5176caef832b5461210939a31b2ff6f7e0659 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 17:50:38 +0200 Subject: [PATCH 281/404] CMake: install gui/README.md --- gui/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index ce70fca..6e35e94 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -67,6 +67,11 @@ install(FILES ${PROJECT_LICENSE_FILE} COMPONENT gui RENAME LICENSE.gui) +install(FILES README.md + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT gui + RENAME README.gui.md) + # -------------------------------- # Package # -------------------------------- From 8bc9a87cc9069a956d06c5269b53dd94bde22978 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 17:54:27 +0200 Subject: [PATCH 282/404] Adding Sw/eden homepage to all my author lines. --- README.md | 2 +- cli/docs/README.md.in | 2 +- gui/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cb68cd3..65d3121 100644 --- a/README.md +++ b/README.md @@ -179,4 +179,4 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Author -Henrik Hautakoski - [henrik@eossweden.org](mailto:henrik@eossweden.org) +Henrik Hautakoski - [Sw/eden](https://eossweden.org/) - [henrik@eossweden.org](mailto:henrik@eossweden.org) diff --git a/cli/docs/README.md.in b/cli/docs/README.md.in index 6b6fb67..d387386 100644 --- a/cli/docs/README.md.in +++ b/cli/docs/README.md.in @@ -104,4 +104,4 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Author -Henrik Hautakoski - [henrik@eossweden.org](mailto:henrik@eossweden.org) +Henrik Hautakoski - [Sw/eden](https://eossweden.org/) - [henrik@eossweden.org](mailto:henrik@eossweden.org) diff --git a/gui/README.md b/gui/README.md index c3b9a22..cf078bf 100644 --- a/gui/README.md +++ b/gui/README.md @@ -30,4 +30,4 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Author -Henrik Hautakoski - [henrik@eossweden.org](mailto:henrik@eossweden.org) +Henrik Hautakoski - [Sw/eden](https://eossweden.org/) - [henrik@eossweden.org](mailto:henrik@eossweden.org) From 9e048c7175c7cbe117fe476309b07259c3fcc306 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 18:16:18 +0200 Subject: [PATCH 283/404] .github/workflows/package.yml: build both gui and cli on windows. --- .github/workflows/package.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 309649c..9bbb714 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -43,6 +43,11 @@ jobs: steps: - uses: actions/checkout@v1 + - name: Qt + uses: jurplel/install-qt-action@v2 + with: + version: '5.9' + - name: Configure run: | if ("${{matrix.arch}}" -eq "x86") { @@ -50,7 +55,7 @@ jobs: } else { $PLATFORM="${{matrix.arch}}" } - cmake -A $PLATFORM -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build + cmake -A $PLATFORM -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build - name: Build run: cmake --build build --config Release From 0cb00ae734219e1ace4b1c9b80d35d37d2afaab6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 18:30:23 +0200 Subject: [PATCH 284/404] build.sh: adding --cli and --no-gui flags to compliment --no-cli and --gui --- build.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 7bab057..4988843 100755 --- a/build.sh +++ b/build.sh @@ -1,11 +1,11 @@ #!/bin/bash function usage() { - echo "Usage: ${0##*/} [ -h|--help ] [ --no-cli ] [ --gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type nsis|deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ --cli|--no-cli ] [ --gui|--no-gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type nsis|deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" exit 1 } -options=$(getopt -n "${0##*/}" -o "lht:" -l "help,no-cli,gui,type:,pkg-type:,disable-threads,force-ansi" -- "$@") +options=$(getopt -n "${0##*/}" -o "lht:" -l "help,cli,no-cli,gui,no-gui,type:,pkg-type:,disable-threads,force-ansi" -- "$@") [ $? -eq 0 ] || usage @@ -33,10 +33,14 @@ while true; do TARGET="package" ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}" ;; + --cli) + ARGS="${ARGS} -DCOMPONENT_CLI=ON" ;; --no-cli) ARGS="${ARGS} -DCOMPONENT_CLI=OFF" ;; --gui) ARGS="${ARGS} -DCOMPONENT_GUI=ON" ;; + --no-gui) + ARGS="${ARGS} -DCOMPONENT_GUI=OFF" ;; --disable-threads) ARGS="${ARGS} -DUSE_THREADS=OFF" ;; --force-ansi) From 54f0fc206f13e2d8ce80f63ecdc984c3cc09269d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 18:39:01 +0200 Subject: [PATCH 285/404] build.sh: need to pass --config flag to cmake build (for multiconfig generators like Visual Studio/xcode) --- build.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 4988843..679d90f 100755 --- a/build.sh +++ b/build.sh @@ -13,6 +13,7 @@ eval set -- "$options" ONLY_CONFIG=0 ARGS="" +BUILD_ARGS="--clean-first" while true; do case $1 in @@ -23,6 +24,7 @@ while true; do usage } ARGS="${ARGS} -DCMAKE_BUILD_TYPE=${1}" + BUILD_ARGS="${BUILD_ARGS} --config ${1}" ;; --pkg-type) shift @@ -61,5 +63,5 @@ rm build/CMakeCache.txt 2> /dev/null cmake -B build $ARGS . if [ ${ONLY_CONFIG} -eq 0 ]; then - cmake --build build --clean-first --target ${TARGET} + cmake --build build ${BUILD_ARGS} --target ${TARGET} fi From 63c7212fad10e80284f6793bbc8d60836115374a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 18:42:36 +0200 Subject: [PATCH 286/404] install.sh: don't assume we have generated Makefiles with cmake. use cmake --install --- install.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/install.sh b/install.sh index 927f1c7..33dde09 100755 --- a/install.sh +++ b/install.sh @@ -1,5 +1,3 @@ #!/bin/bash -pushd build > /dev/null -make install $@ -popd > /dev/null +cmake --install build $@ From 8b8ba4c2c60895607f639a4196dc96e81777c821 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 24 Apr 2020 18:46:13 +0200 Subject: [PATCH 287/404] .github/workflows/package.yml: build both cli and gui on ubuntu. --- .github/workflows/package.yml | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 9bbb714..85e1a80 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -10,16 +10,27 @@ jobs: strategy: matrix: os: [ ubuntu-16.04, ubuntu-18.04 ] - name: ${{matrix.os}} + component: [ cli, gui ] + include: + - component: cli + build-opts: --cli --no-gui -t Release --pkg-type deb + - component: gui + build-opts: --no-cli --gui -t Release --pkg-type deb + name: ${{matrix.os}} (${{matrix.component}}) runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v1 + - name: Qt + if: startsWith(matrix.component, 'gui') + shell: bash + run: sudo apt-get install qt5-default + - name: Package id: package run: | - ./build.sh -t Release --pkg-type deb - FILE=$(ls build/*.deb | head -1) + ./build.sh ${{matrix.build-opts}} + FILE=$(ls build/eosio-*.deb | head -1) echo "::set-output name=filename::$FILE" echo "::set-output name=name::$(basename $FILE)" From df2b40d1c6b1f0e5973079fed3c9d90f523060f9 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Apr 2020 10:52:49 +0200 Subject: [PATCH 288/404] CMake: only pack components that are configured. --- CMakeLists.txt | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0212a9..432c804 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,6 +52,15 @@ endif (WIN32) # Should be used to cache large downloaded data that won't be deleted on clean builds. set( DOWNLOAD_CACHE_DIR ${CMAKE_CURRENT_LIST_DIR}/.cache ) +set( components ) +if (COMPONENT_CLI) + list(APPEND components cli ) +endif() + +if (COMPONENT_GUI) + list(APPEND components gui ) +endif() + # -------------------------------- # Compiler settings # -------------------------------- @@ -88,7 +97,7 @@ include_directories(${PROJECT_BINARY_DIR}) include(CPackConfig) -set( CPACK_COMPONENTS_ALL cli gui ) +set( CPACK_COMPONENTS_ALL ${components} ) if (CPACK_GENERATOR MATCHES "^[Nn][Ss][Ii][Ss]$") set( CPACK_RESOURCE_FILE_LICENSE ${PROJECT_LICENSE_FILE} ) @@ -103,13 +112,9 @@ configure_file(cmake/CPackProperties.cmake.in ${CPACK_PROPERTIES_FILE} @ONLY) add_subdirectory( common ) -if (COMPONENT_CLI) - add_subdirectory( cli ) -endif() - -if (COMPONENT_GUI) - add_subdirectory( gui ) -endif() +foreach(comp ${components}) + add_subdirectory( ${comp} ) +endforeach() # -------------------------------- # CPack From 8a9d594d3788194aeabd553634d28e510e851df6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Apr 2020 12:50:58 +0200 Subject: [PATCH 289/404] CMake: Install gui/LICENSE.qt5 --- gui/CMakeLists.txt | 4 ++ gui/LICENSE.qt5 | 165 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+) create mode 100644 gui/LICENSE.qt5 diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 6e35e94..1ec2ead 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -72,6 +72,10 @@ install(FILES README.md COMPONENT gui RENAME README.gui.md) +install(FILES LICENSE.qt5 + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT gui) + # -------------------------------- # Package # -------------------------------- diff --git a/gui/LICENSE.qt5 b/gui/LICENSE.qt5 new file mode 100644 index 0000000..0a04128 --- /dev/null +++ b/gui/LICENSE.qt5 @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. From 0b101728b67fbca2941387681d5941c471e1a477 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Apr 2020 20:24:55 +0200 Subject: [PATCH 290/404] .github/workflows/package.yml: we can set arch "directly" on windows. --- .github/workflows/package.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 85e1a80..ccd6895 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -48,7 +48,7 @@ jobs: windows: strategy: matrix: - arch: [ x86, x64 ] + arch: [ Win32, x64 ] name: Windows (${{matrix.arch}}) runs-on: windows-latest steps: @@ -60,13 +60,7 @@ jobs: version: '5.9' - name: Configure - run: | - if ("${{matrix.arch}}" -eq "x86") { - $PLATFORM="Win32" - } else { - $PLATFORM="${{matrix.arch}}" - } - cmake -A $PLATFORM -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build + run: cmake -A ${{matrix.arch}} -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build - name: Build run: cmake --build build --config Release From e19982aceeafea0a77e0fd4dca2e22f6c9599349 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Apr 2020 20:31:23 +0200 Subject: [PATCH 291/404] .github/workflows/package.yml: set qt arch correctly on windows. --- .github/workflows/package.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index ccd6895..6554a33 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -49,6 +49,11 @@ jobs: strategy: matrix: arch: [ Win32, x64 ] + include: + - arch: Win32 + qt-arch: win32_msvc2015 + - arch: x64 + qt-arch: win64_msvc2015_64 name: Windows (${{matrix.arch}}) runs-on: windows-latest steps: @@ -57,6 +62,7 @@ jobs: - name: Qt uses: jurplel/install-qt-action@v2 with: + arch: ${{ matrix.qt-arch }} version: '5.9' - name: Configure From beeba58cee1d0341aca8f9a7d2ac6a0066ec0b76 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sat, 25 Apr 2020 21:47:10 +0200 Subject: [PATCH 292/404] Github Actions: use Qt 5.11.0 on windows. qt < 5.11 has a bug in qCountLeadingZeroBits function (QtCore/qalgorithms.h). This function is marked constexpr but returns a non-const value. MSVC compilers will pick this up as an C3615 error. See https://docs.microsoft.com/en-us/cpp/error-messages/compiler-errors-2/compiler-error-c3615 --- .github/workflows/ci.yml | 2 +- .github/workflows/package.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9ff243d..9242f69 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,7 +47,7 @@ jobs: if: startsWith(matrix.build, 'gui') && runner.os != 'Linux' uses: jurplel/install-qt-action@v2 with: - version: '5.9' + version: '5.11.0' - name: Configure shell: bash diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 6554a33..5e36c7a 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -63,7 +63,7 @@ jobs: uses: jurplel/install-qt-action@v2 with: arch: ${{ matrix.qt-arch }} - version: '5.9' + version: '5.11.0' - name: Configure run: cmake -A ${{matrix.arch}} -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build From 6f1359444a58891e3ad6309371525e9950095cc0 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 26 Apr 2020 10:42:33 +0200 Subject: [PATCH 293/404] .github/workflows/package.yml: fixing windows build (must have --config Release everywhere) --- .github/workflows/package.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 5e36c7a..8ff79a5 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -68,13 +68,10 @@ jobs: - name: Configure run: cmake -A ${{matrix.arch}} -DCOMPONENT_GUI=ON -DCOMPONENT_CLI=ON -D CMAKE_BUILD_TYPE=Release -D CPACK_GENERATOR=NSIS -S . -B build - - name: Build - run: cmake --build build --config Release - - name: Package id: package run: | - cmake --build build --target package + cmake --build build --config Release --target package $FILE=(ls build/*.exe) echo "::set-output name=filename::$FILE" echo "::set-output name=name::$(([io.fileinfo]"$FILE").basename).exe" From dce6f586078ad039c92169f97e2d533dd856752c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 26 Apr 2020 13:04:22 +0200 Subject: [PATCH 294/404] Github Actions: skip building for Ubuntu 16.04 First, 16.04 only supports libssl 1.0 (officially) that links fine but will not find the library at runtime. Second, 16.04 is old (LTS is still valid tho). If requested, we could consider supporting it but no point going through the hassle if it has no users. --- .github/workflows/ci.yml | 2 +- .github/workflows/package.yml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9242f69..f699ed4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: compile: strategy: matrix: - os: [ ubuntu-16.04, ubuntu-18.04, macos-latest, windows-latest ] + os: [ ubuntu-18.04, macos-latest, windows-latest ] build: [ cli, cli-mt, cli-ansi, cli-ansi-mt, gui, gui-mt ] include: - build: cli diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 8ff79a5..ae34287 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -9,7 +9,6 @@ jobs: ubuntu: strategy: matrix: - os: [ ubuntu-16.04, ubuntu-18.04 ] component: [ cli, gui ] include: - component: cli @@ -17,7 +16,7 @@ jobs: - component: gui build-opts: --no-cli --gui -t Release --pkg-type deb name: ${{matrix.os}} (${{matrix.component}}) - runs-on: ${{matrix.os}} + runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 From 2ec874607f17b4125a4520c15914139c1a13a08c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 26 Apr 2020 13:05:18 +0200 Subject: [PATCH 295/404] Github Actions: pin qt5-default to 5.9.5 on ubuntu. --- .github/workflows/ci.yml | 2 +- .github/workflows/package.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f699ed4..d4571bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,7 +41,7 @@ jobs: - name: Qt - Ubuntu if: startsWith(matrix.build, 'gui') && runner.os == 'Linux' shell: bash - run: sudo apt-get install qt5-default + run: sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 - name: Qt - Windows/Mac if: startsWith(matrix.build, 'gui') && runner.os != 'Linux' diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index ae34287..367b32b 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -23,7 +23,7 @@ jobs: - name: Qt if: startsWith(matrix.component, 'gui') shell: bash - run: sudo apt-get install qt5-default + run: sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 - name: Package id: package From b7c3fc0506ac9fa8f84e85eaeab8bc533cafb424 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 26 Apr 2020 13:22:39 +0200 Subject: [PATCH 296/404] gui/cmake/CPackComponentConfig.cmake.in: explicitly depend on qt >= 5.9.5 and libssl >= 1.1 --- gui/cmake/CPackComponentConfig.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/cmake/CPackComponentConfig.cmake.in b/gui/cmake/CPackComponentConfig.cmake.in index 3269f8b..4167b21 100644 --- a/gui/cmake/CPackComponentConfig.cmake.in +++ b/gui/cmake/CPackComponentConfig.cmake.in @@ -14,4 +14,4 @@ set( CPACK_DEBIAN_GUI_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${CPACK_DEBI set( CPACK_DEBIAN_GUI_PACKAGE_NAME "${PROJECT_NAME}" ) set( CPACK_DEBIAN_GUI_PACKAGE_PRIORITY "optional" ) set( CPACK_DEBIAN_GUI_PACKAGE_SECTION "misc" ) -set( CPACK_DEBIAN_GUI_PACKAGE_SHLIBDEPS ON ) +set( CPACK_DEBIAN_GUI_PACKAGE_DEPENDS "libqt5core5a (>= 5.9.5), libqt5concurrent5 (>= 5.9.5), libqt5gui5 (>= 5.9.5), libqt5widgets5 (>= 5.9.5), libssl1.1") From e20023cf31de9fbf6984e4185f74cc18823ea53c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 11:56:08 +0200 Subject: [PATCH 297/404] adding cmake/extras.cmake --- cmake/extras.cmake | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 cmake/extras.cmake diff --git a/cmake/extras.cmake b/cmake/extras.cmake new file mode 100644 index 0000000..a23a1fe --- /dev/null +++ b/cmake/extras.cmake @@ -0,0 +1,43 @@ + +set( EXTRAS_DIRECTORY ${DOWNLOAD_CACHE_DIR}/eosio-keygen-extras-0.1.0 ) +set( FILENAME ${DOWNLOAD_CACHE_DIR}/eosio-keygen-extras-0.1.0.zip ) + +# -------------------------------- +# Download/Unpack +# -------------------------------- + +if (NOT EXISTS ${FILENAME}) + + set( URL "https://github.com/eosswedenorg/eosio-keygen-extras/releases/download/v0.1.0/eosio-keygen-extras-0.1.0.zip" ) + set( CHECKSUM "7be3188a52a39876e37986e6a7d78e0d6c89e68e8391cf48821c800563aaa036" ) + + message( STATUS "Downloading ${URL}" ) + + file(DOWNLOAD ${URL} ${FILENAME} + TIMEOUT 60 + EXPECTED_HASH SHA256=${CHECKSUM} + TLS_VERIFY ON) +endif() + +if (NOT EXISTS ${EXTRAS_DIRECTORY}) + + message( STATUS "Unpacking ${FILENAME}" ) + + execute_process(COMMAND ${CMAKE_COMMAND} -E tar -xf ${FILENAME} + WORKING_DIRECTORY ${DOWNLOAD_CACHE_DIR}) +endif() + + +# -------------------------------- +# Install +# -------------------------------- + +install(DIRECTORY ${EXTRAS_DIRECTORY}/dict + DESTINATION ${CMAKE_INSTALL_SHAREDIR} + COMPONENT extras ) + +# -------------------------------- +# CPack +# -------------------------------- + +set( CPACK_COMPONENT_EXTRAS_DESCRIPTION "Dictionary files" ) From 282028793becd1a8b67959981d0aa11675b5f9d2 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 11:56:32 +0200 Subject: [PATCH 298/404] CMake: bundle eosio-extras on windows. --- CMakeLists.txt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 432c804..0d8120f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,6 +91,12 @@ add_compile_options( configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY) include_directories(${PROJECT_BINARY_DIR}) +# Bundle eosio-extras on windows. +if (WIN32) + include(extras) + list(APPEND components extras ) +endif() + # -------------------------------- # Package # -------------------------------- @@ -113,7 +119,9 @@ configure_file(cmake/CPackProperties.cmake.in ${CPACK_PROPERTIES_FILE} @ONLY) add_subdirectory( common ) foreach(comp ${components}) - add_subdirectory( ${comp} ) + if ( EXISTS ${CMAKE_CURRENT_LIST_DIR}/${comp} ) + add_subdirectory( ${comp} ) + endif() endforeach() # -------------------------------- From 38263a421c222885ac3db294f8a842c858f2564c Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 12:33:24 +0200 Subject: [PATCH 299/404] README.md: Adding a note about Ubuntu 18.04 support. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 65d3121..44c8193 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,11 @@ You will need `libeosio` and `cmake 3.15` or later to compile this project. ### Linux/MacOS +**NOTE:** Only Ubuntu 18.04 is officially supported. + +The project should compile fine on most versions/distros but it is only tested +and distributed for Ubuntu 18.04 by [Sw/eden](www.eossweden.org). + #### Dependencies #### Linux From a6c0cbcc4e075b07472b127312f90f8de804651d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 13:00:09 +0200 Subject: [PATCH 300/404] README.md: Adding notice about MacOS support. --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 44c8193..059f98b 100644 --- a/README.md +++ b/README.md @@ -52,6 +52,8 @@ Other methods is documanted at https://cmake.org/download #### MacOS +**NOTE:** Support for MacOS is still experimental and may or may not work as expected. + You must have a compiler installed. This project is known to build with `Xcode 11.0` but other versions should work. You need to have cmake installed also, this can be done with this `brew` command: From e26bc8097f34c28c9abafb2a7a7788cf8775d1c6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 13:11:46 +0200 Subject: [PATCH 301/404] README.md: Adding documentation for Qt. --- README.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/README.md b/README.md index 059f98b..8bea272 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,8 @@ This program generates public and private keypair for [EOS](https://eos.io/) You will need `libeosio` and `cmake 3.15` or later to compile this project. +`Qt 5.9.0` or later is required for the graphical program. + ### Linux/MacOS **NOTE:** Only Ubuntu 18.04 is officially supported. @@ -50,6 +52,19 @@ $ wget -O cmake.sh https://github.com/Kitware/CMake/releases/download/v3.15.5/cm Other methods is documanted at https://cmake.org/download +**Qt (only for gui program)** + +You will need to install `qt >= 5.9.0` + +On **ubuntu** you can do this via `apt` + +``` +$ apt-get install qt5-default +``` + +For other distributions, download the official [qt-installer](https://www.qt.io/download-qt-installer). +It is recommended to install the latest stable version. + #### MacOS **NOTE:** Support for MacOS is still experimental and may or may not work as expected. @@ -65,6 +80,14 @@ If you need a newer version of cmake, you can download the official `.dmg` file: `libeosio` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libeosio) +**Qt (only for gui program)** + +This can be installed with brew. + +```sh +$ brew install qt +``` + #### Build Run `./build.sh` to trigger cmake. @@ -87,7 +110,9 @@ Download and install `cmake` version `3.15` or newer from [cmake.org](https://cm You will also need a compiler. [Build Tools for Visual Studio 2019](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16) (Selecting C++ during installation) is recommended. +**Qt (only for gui program)** +Download the official [qt-installer](https://www.qt.io/download-qt-installer) and follow the steps. It is recommended to install the latest stable version. #### Build. @@ -105,6 +130,14 @@ C:\repo\build> cmake -D OPENSSL_ROOT_DIR="C:/path/to/openssl-1.1/x86" .. C:\repo\build> cmake --build . --config Release ``` +**Qt** + +If you are compiling the gui program. you will need to point `cmake` to the location `qt` where installed. this can be done by the `CMAKE_PREFIX_PATH` variable: + +``` +C:\repo> cmake -D CMAKE_PREFIX_PATH="C:/path/to/qt/msvc2017_64" +``` + ## Compile options These compile options are available: From 464a0c18013fe40997b1be1796e9786c19c9cac4 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 13:12:47 +0200 Subject: [PATCH 302/404] README.md: simplify windows example. --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8bea272..e4ac358 100644 --- a/README.md +++ b/README.md @@ -124,10 +124,8 @@ you need to set `OPENSSL_ROOT_DIR` to the directory where you unpacked For example: ``` -C:\repo> mkdir build -C:\repo> cd build -C:\repo\build> cmake -D OPENSSL_ROOT_DIR="C:/path/to/openssl-1.1/x86" .. -C:\repo\build> cmake --build . --config Release +C:\repo> cmake -D OPENSSL_ROOT_DIR="C:/path/to/openssl-1.1/x86" -B build +C:\repo> cmake --build build --config Release ``` **Qt** From 4c67cbf905ea709cec5f6765a595af8d1793cdfc Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 14:26:00 +0200 Subject: [PATCH 303/404] Version 1.0.5 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d8120f..92c9c1a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.15) # -------------------------------- project(eosio-keygen - VERSION 1.0.4 + VERSION 1.0.5 DESCRIPTION "Keygenerator for EOSIO" HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From a3be286579f8a8ffffb420c1ca1dce594d03ae46 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 27 Apr 2020 14:29:15 +0200 Subject: [PATCH 304/404] .github/workflows/package.yml: fix job name for ubuntu. --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 367b32b..036e97e 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -15,7 +15,7 @@ jobs: build-opts: --cli --no-gui -t Release --pkg-type deb - component: gui build-opts: --no-cli --gui -t Release --pkg-type deb - name: ${{matrix.os}} (${{matrix.component}}) + name: Ubuntu (${{matrix.component}}) runs-on: ubuntu-18.04 steps: - uses: actions/checkout@v1 From 3cc6a2530ea8b5679daaf49a08563f3c95e6ef6d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Apr 2020 09:48:04 +0200 Subject: [PATCH 305/404] gui/src/SearchWindow.cpp: Pass a pointer to m_ksearch in call to QtConocurrent::run() It's not passed by reference otherwise. so it will copy the whole object. --- gui/src/SearchWindow.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index 2f36d81..95375a4 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -214,7 +214,7 @@ void SearchWindow::search() m_ksearch.setThreadCount(m_num_threads.value()); #endif /* EOSIOKEYGEN_HAVE_THREADS */ - QFuture future = QtConcurrent::run(m_ksearch, &eoskeygen::KeySearch::find, m_num_results.value()); + QFuture future = QtConcurrent::run(&m_ksearch, &eoskeygen::KeySearch::find, m_num_results.value()); m_worker.setFuture(future); m_status.setText("Searching for: " + QString::fromStdString(eoskeygen::strlist::join(list, ", "))); From 2a528e0eb094743dbb41c9d47f906eb986189b2a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Apr 2020 10:02:35 +0200 Subject: [PATCH 306/404] common/include/eoskeygen/key_search.hpp: add max and count variables to the class. This is done so that m_max can be set to zero from another method. stopping a find() operation. (for threaded operations) --- common/include/eoskeygen/key_search.hpp | 10 +++++++-- common/src/key_search.cpp | 24 ++++++++++++--------- common/src/key_search_mt.cpp | 28 ++++++++----------------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/common/include/eoskeygen/key_search.hpp b/common/include/eoskeygen/key_search.hpp index f757002..eb358da 100644 --- a/common/include/eoskeygen/key_search.hpp +++ b/common/include/eoskeygen/key_search.hpp @@ -83,15 +83,21 @@ protected : #ifdef EOSIOKEYGEN_HAVE_THREADS void _thr_proc(); - void _search_mt(size_t n); + void _search_mt(); #endif /* EOSIOKEYGEN_HAVE_THREADS */ - void _search_linear(size_t n); + void _search_linear(); protected : // List of words to search for. strlist_t m_words; + // Max keys to search for. + std::size_t m_max; + + // Current number of keys found. + std::size_t m_count; + #ifdef EOSIOKEYGEN_HAVE_THREADS // Number of threads to use. size_t m_threads; diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index 810f884..68803a9 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -31,10 +31,12 @@ namespace eoskeygen { KeySearch::KeySearch() : + m_max (0), + m_count (0), #ifdef EOSIOKEYGEN_HAVE_THREADS - m_threads(0), + m_threads (0), #endif - m_callback(NULL) + m_callback (NULL) { } @@ -67,32 +69,34 @@ void KeySearch::setCallback(IKeySearchResult* callback) m_callback = callback; } -void KeySearch::_search_linear(size_t n) { - - size_t count = 0; +void KeySearch::_search_linear() +{ struct libeosio::ec_keypair pair; - while (count < n) { + while (m_count < m_max) { struct result res; libeosio::ec_generate_key(&pair); if (_contains_word(&pair, res)) { m_callback->onResult(&pair, res); - count++; + m_count++; } } } -void KeySearch::find(size_t num_results) { +void KeySearch::find(size_t num_results) +{ + m_count = 0; + m_max = num_results; #ifdef EOSIOKEYGEN_HAVE_THREADS // Only do multithread if number of threads makes sense. if (m_threads >= 2) { - _search_mt(num_results); + _search_mt(); return; } #endif /* HAVE_THREADS */ - _search_linear(num_results); + _search_linear(); } bool KeySearch::_contains_word(const struct libeosio::ec_keypair* key, struct result& result) { diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp index 00e50e3..fc643b0 100644 --- a/common/src/key_search_mt.cpp +++ b/common/src/key_search_mt.cpp @@ -31,39 +31,33 @@ namespace eoskeygen { -// Max keys to search for, -std::size_t g_max; - -// How many keys we have found so far. -std::size_t g_count; - -// Mutex guard for g_count. +// Mutex guard for m_count. std::mutex g_count_mtx; // Thread process. -void KeySearch::_thr_proc() { - +void KeySearch::_thr_proc() +{ struct libeosio::ec_keypair pair; - while (g_count < g_max) { + while (m_count < m_max) { struct result res; libeosio::ec_generate_key(&pair); if (_contains_word(&pair, res)) { // Guard output with mutex, so we don't get - // interrupted mid write and can write to g_count and res safely. + // interrupted mid write and can write to m_count and res safely. const std::lock_guard lock(g_count_mtx); - // It is possible g_count was updated by another thread + // It is possible m_count was updated by another thread // after we checked it in the while loop. // So while we have the lock, we need to check it again. - if (g_count >= g_max) { + if (m_count >= m_max) { return; } // Update count and call result function. - g_count++; + m_count++; m_callback->onResult(&pair, res); } } @@ -79,16 +73,12 @@ size_t KeySearch::max_threads() return std::thread::hardware_concurrency(); } -void KeySearch::_search_mt(size_t n) +void KeySearch::_search_mt() { std::vector t; t.resize(m_threads - 1); - // Setup global variables for the threads. - g_max = n; - g_count = 0; - // Launch them. for(std::size_t i = 0; i < t.size(); i++) { t[i] = std::thread(&KeySearch::_thr_proc, this); From 7c2545cdc28f0eecfff028250a7171dc29fa06e7 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Apr 2020 10:10:36 +0200 Subject: [PATCH 307/404] common/include/eoskeygen/key_search.hpp: adding abort() --- common/include/eoskeygen/key_search.hpp | 6 ++++++ common/src/key_search.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/common/include/eoskeygen/key_search.hpp b/common/include/eoskeygen/key_search.hpp index eb358da..3e3975a 100644 --- a/common/include/eoskeygen/key_search.hpp +++ b/common/include/eoskeygen/key_search.hpp @@ -71,6 +71,12 @@ public : void setThreadCount(size_t num); #endif /* EOSIOKEYGEN_HAVE_THREADS */ + // Aborts find() operation if started. + // This is useful for multithreaded code (like GUI application) + // If find() is started as a seperate thread. This method could be called + // from the gui thread if the user presses "cancel" button. + void abort(); + // Perform a search. void find(size_t num_results); diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index 68803a9..506ee84 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -83,6 +83,12 @@ void KeySearch::_search_linear() } } +void KeySearch::abort() +{ + // exit find() operation by setting m_max to zero. + m_max = 0; +} + void KeySearch::find(size_t num_results) { m_count = 0; From 1cb6ddabd6d23189c03496250334cc96f26a5299 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 28 Apr 2020 10:11:47 +0200 Subject: [PATCH 308/404] gui/src/SearchWindow.cpp: implement "Cancel" button. stopping the search operation. --- gui/src/SearchWindow.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index 95375a4..42b54ff 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -186,6 +186,7 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct void SearchWindow::search() { if (m_worker.isRunning()) { + m_ksearch.abort(); return; } @@ -247,12 +248,13 @@ void SearchWindow::langFileAdd() void SearchWindow::searchStarted() { + m_btn_exec.setText("Cancel"); + m_txt_search.setEnabled(false); m_txt_search.setHidden(true); m_dict_lang.setEnabled(false); m_dict_file.setEnabled(false); m_leet_cb.setEnabled(false); - m_btn_exec.setEnabled(false); m_btn_clear.setEnabled(false); #ifdef EOSIOKEYGEN_HAVE_THREADS m_num_threads.setEnabled(false); @@ -262,12 +264,13 @@ void SearchWindow::searchStarted() void SearchWindow::searchFinished() { + m_btn_exec.setText("Search"); + m_txt_search.setEnabled(true); m_txt_search.setHidden(false); m_dict_lang.setEnabled(true); m_dict_file.setEnabled(true); m_leet_cb.setEnabled(true); - m_btn_exec.setEnabled(true); m_btn_clear.setEnabled(true); #ifdef EOSIOKEYGEN_HAVE_THREADS m_num_threads.setEnabled(true); From cf6c1a4854549b1a5248fdb3febc8b0964274783 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 15 May 2020 13:54:07 +0200 Subject: [PATCH 309/404] remove common/include/eoskeygen/config.h (old autogenerated file) --- common/include/eoskeygen/config.h | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 common/include/eoskeygen/config.h diff --git a/common/include/eoskeygen/config.h b/common/include/eoskeygen/config.h deleted file mode 100644 index 5728f1f..0000000 --- a/common/include/eoskeygen/config.h +++ /dev/null @@ -1,30 +0,0 @@ -/** - * MIT License - * - * Copyright (c) 2019-2020 EOS Sw/eden - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#ifndef EOSIOKEYGEN_COMMON_CONFIG_H -#define EOSIOKEYGEN_COMMON_CONFIG_H - -// Defined if we have thread support. -#define EOSIOKEYGEN_HAVE_THREADS - -#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */ From 0a2ad127006777a359a41ad40e6b72c94cb23a9e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 15 May 2020 14:04:35 +0200 Subject: [PATCH 310/404] .github/workflows/ci.yml: trigger on pull requests also. --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d4571bc..2cf3fd0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -6,6 +6,8 @@ on: - '*' - '*/*' - '!master' + pull_request: + branches: [ develop ] jobs: compile: From f6554a924aed29e537a5d1fd729305c0ddfc5709 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 14 May 2020 14:14:54 +0200 Subject: [PATCH 311/404] gui/gui_about.h.in: rename to gui_text.h.in --- gui/CMakeLists.txt | 2 +- gui/{gui_about.h.in => gui_text.h.in} | 10 +++++----- gui/src/MainWindow.cpp | 6 ++++-- 3 files changed, 10 insertions(+), 8 deletions(-) rename gui/{gui_about.h.in => gui_text.h.in} (86%) diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 1ec2ead..3628f7a 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -24,7 +24,7 @@ string(REGEX REPLACE "\n\n([^\n]+)" "

\\1

" GUI_ABOUT_LICENSE ${GUI_ABOUT_L string(REGEX REPLACE "\n" "" GUI_ABOUT_LICENSE ${GUI_ABOUT_LICENSE}) string(REGEX REPLACE "\<(.+)\>" "- \\1" GUI_ABOUT_AUTHOR ${PROJECT_MAINTAINER}) -configure_file(gui_about.h.in "${CMAKE_CURRENT_BINARY_DIR}/gui_about.h" @ONLY ESCAPE_QUOTES) +configure_file(gui_text.h.in "${CMAKE_CURRENT_BINARY_DIR}/gui_text.h" @ONLY ESCAPE_QUOTES) include_directories(${CMAKE_CURRENT_BINARY_DIR}) # -------------------------------- diff --git a/gui/gui_about.h.in b/gui/gui_text.h.in similarity index 86% rename from gui/gui_about.h.in rename to gui/gui_text.h.in index 1f6ab9f..4c81c9d 100644 --- a/gui/gui_about.h.in +++ b/gui/gui_text.h.in @@ -21,12 +21,12 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#ifndef EOSIOKEYGEN_GUI_ABOUT_H -#define EOSIOKEYGEN_GUI_ABOUT_H +#ifndef EOSIOKEYGEN_GUI_TEXT_H +#define EOSIOKEYGEN_GUI_TEXT_H -#define EOSIOKEYGEN_GUI_ABOUT_TITLE "@PROJECT_NAME@ - About" +#define EOSIOKEYGEN_GUI_TEXT_ABOUT_TITLE "@PROJECT_NAME@ - About" -#define EOSIOKEYGEN_GUI_ABOUT_TEXT \ +#define EOSIOKEYGEN_GUI_TEXT_ABOUT_BODY \ "

@PROJECT_NAME@ - v@PROJECT_VERSION@

" \ "

@PROJECT_DESCRIPTION@

" \ "

@PROJECT_HOMEPAGE_URL@

" \ @@ -34,4 +34,4 @@ "

Author

" \ "

@GUI_ABOUT_AUTHOR@

" -#endif /* EOSIOKEYGEN_CONFIG_ABOUT_H */ +#endif /* EOSIOKEYGEN_GUI_TEXT_H */ diff --git a/gui/src/MainWindow.cpp b/gui/src/MainWindow.cpp index ce2d579..cfed710 100644 --- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -25,7 +25,7 @@ #include #include #include -#include "gui_about.h" +#include "gui_text.h" #include "GenerateWindow.hpp" #include "SearchWindow.hpp" #include "MainWindow.hpp" @@ -59,5 +59,7 @@ void MainWindow::switchToSearch() void MainWindow::showAbout() { - QMessageBox::about(this, EOSIOKEYGEN_GUI_ABOUT_TITLE, EOSIOKEYGEN_GUI_ABOUT_TEXT); + QMessageBox::about(this, + EOSIOKEYGEN_GUI_TEXT_ABOUT_TITLE, + EOSIOKEYGEN_GUI_TEXT_ABOUT_BODY); } From 88bd1217babe512acf3648f1011e15140ae5ecc8 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 15 May 2020 13:38:19 +0200 Subject: [PATCH 312/404] gui/gui_text.h.in: define tooltip text for dictionary widgets. --- gui/gui_text.h.in | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/gui/gui_text.h.in b/gui/gui_text.h.in index 4c81c9d..a8a1cff 100644 --- a/gui/gui_text.h.in +++ b/gui/gui_text.h.in @@ -24,6 +24,8 @@ #ifndef EOSIOKEYGEN_GUI_TEXT_H #define EOSIOKEYGEN_GUI_TEXT_H +#include + #define EOSIOKEYGEN_GUI_TEXT_ABOUT_TITLE "@PROJECT_NAME@ - About" #define EOSIOKEYGEN_GUI_TEXT_ABOUT_BODY \ @@ -34,4 +36,19 @@ "

Author

" \ "

@GUI_ABOUT_AUTHOR@

" +#define EOSIOKEYGEN_GUI_TEXT_DICT_LANG_TOOLTIP \ + "

Highlight words from given language dictionary in the found keys (note that the words " \ + "are not used for search. only for highlight output).

" \ + "

There can be more then one language. In that case contents " \ + "of all languges are merged into one dictionary.

" \ + "

The langauges are stored in files at " CONFIG_SHARE_FULL_PATH "/dict

" + + +#define EOSIOKEYGEN_GUI_TEXT_DICT_FILE_TOOLTIP \ + "

Use words found in file (separated by newline) to highlight " \ + "words in the keys found (note that the words in this " \ + "file are not used for search. only for highlight output).

" \ + "

There can be more then one file. In that case contents " \ + "of all files are merged into one dictionary.

" + #endif /* EOSIOKEYGEN_GUI_TEXT_H */ From e0a388dac192a2001773d3e95cd7c82ee6beda4f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 15 May 2020 13:38:41 +0200 Subject: [PATCH 313/404] gui/src/SearchWindow.cpp: show tooltip for dictionary widgets. --- gui/src/SearchWindow.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index 42b54ff..2128fed 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -31,6 +31,7 @@ #include #include #include +#include "gui_text.h" #include "config.hpp" #include "helpers.hpp" #include "SearchWindow.hpp" @@ -61,6 +62,9 @@ m_btn_clear ("Clear") // First row. m_dict_lang.addItems(get_files(CONFIG_DICT_FULL_PATH)); + m_dict_lang.setToolTip(EOSIOKEYGEN_GUI_TEXT_DICT_LANG_TOOLTIP); + m_dict_file.setToolTip(EOSIOKEYGEN_GUI_TEXT_DICT_FILE_TOOLTIP); + m_layout.addWidget(&m_dict_lang, 0, 0); m_layout.addWidget(&m_dict_file, 0, 1); From cb181bea212e5ee7ba71edeaac2407390ad3fa67 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 15 May 2020 14:48:55 +0200 Subject: [PATCH 314/404] Version 1.0.6 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 92c9c1a..f7bdb17 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.15) # -------------------------------- project(eosio-keygen - VERSION 1.0.5 + VERSION 1.0.6 DESCRIPTION "Keygenerator for EOSIO" HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From 73ccd4be0255fd929530e79e048c0c316c95e05a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 22 May 2020 16:23:55 +0200 Subject: [PATCH 315/404] common/cmake/libeosio.cmake: use v0.1.1 --- common/cmake/libeosio.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index 4dbdcc5..c72cbb6 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION v0.1.0 ) +set( LIBEOSIO_WANTED_VERSION v0.1.1 ) # -------------------------------- # Macros From 51883f42ca3963f45f8dcfa4847afffd0b4a0e53 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 4 Jan 2021 13:05:08 +0100 Subject: [PATCH 316/404] cli/src/main.cpp: move usage() function to the top. --- cli/src/main.cpp | 82 ++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/cli/src/main.cpp b/cli/src/main.cpp index aa34553..7602e29 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -44,47 +44,6 @@ bool option_l33t = false; size_t option_num_threads = eoskeygen::KeySearch::max_threads(); #endif /* EOSIOKEYGEN_HAVE_THREADS */ -int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { - - eoskeygen::KeySearch ks; - eoskeygen::CliKeySearchResult rs(dict); - - ks.setCallback(&rs); - - for(auto it = words.begin(); it != words.end(); it++) { - size_t p = libeosio::is_base58(*it); - if (p != std::string::npos) { - std::cerr << "The word '" - << *it << "' contains an invalid non-base58 character '" - << (*it)[p] << "'" << std::endl; - return 1; - } - } - - if (option_l33t) { - for(std::size_t i = 0; i < words.size(); i++) { - ks.addList(eoskeygen::l33twords(words[i])); - } - } else { - ks.addList(words); - } - -#ifdef EOSIOKEYGEN_HAVE_THREADS - ks.setThreadCount(option_num_threads); -#endif /* EOSIOKEYGEN_HAVE_THREADS */ - - std::cout << "Searching for " << count - << " keys containing: " << eoskeygen::strlist::join(ks.getList(), ",") -#ifdef EOSIOKEYGEN_HAVE_THREADS - << ", Using: " << option_num_threads << " threads" -#endif /* EOSIOKEYGEN_HAVE_THREADS */ - << std::endl; - - ks.find(count); - - return 0; -} - void usage(const char *name) { std::cout << name @@ -142,6 +101,47 @@ void usage(const char *name) { << std::endl; } +int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { + + eoskeygen::KeySearch ks; + eoskeygen::CliKeySearchResult rs(dict); + + ks.setCallback(&rs); + + for(auto it = words.begin(); it != words.end(); it++) { + size_t p = libeosio::is_base58(*it); + if (p != std::string::npos) { + std::cerr << "The word '" + << *it << "' contains an invalid non-base58 character '" + << (*it)[p] << "'" << std::endl; + return 1; + } + } + + if (option_l33t) { + for(std::size_t i = 0; i < words.size(); i++) { + ks.addList(eoskeygen::l33twords(words[i])); + } + } else { + ks.addList(words); + } + +#ifdef EOSIOKEYGEN_HAVE_THREADS + ks.setThreadCount(option_num_threads); +#endif /* EOSIOKEYGEN_HAVE_THREADS */ + + std::cout << "Searching for " << count + << " keys containing: " << eoskeygen::strlist::join(ks.getList(), ",") +#ifdef EOSIOKEYGEN_HAVE_THREADS + << ", Using: " << option_num_threads << " threads" +#endif /* EOSIOKEYGEN_HAVE_THREADS */ + << std::endl; + + ks.find(count); + + return 0; +} + void cmd_benchmark(size_t num_keys) { struct eoskeygen::benchmark_result res; From 56a5c226bd55c5457d41d45051519e0cf79e3917 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 4 Jan 2021 13:11:49 +0100 Subject: [PATCH 317/404] Updated year in headers. --- LICENSE | 2 +- cli/src/benchmark.cpp | 2 +- cli/src/benchmark.hpp | 2 +- cli/src/cli_key_search_result.cpp | 2 +- cli/src/cli_key_search_result.hpp | 2 +- cli/src/console.cpp | 2 +- cli/src/console.hpp | 2 +- cli/src/console_ansi.cpp | 2 +- cli/src/console_win32.cpp | 2 +- cli/src/isatty.cpp | 24 +++++++++++++++++++ cli/src/isatty.hpp | 2 +- cli/src/main.cpp | 2 +- common/config.hpp.in | 2 +- common/include/eoskeygen/core/dictionary.hpp | 2 +- common/include/eoskeygen/core/file.hpp | 2 +- common/include/eoskeygen/core/leet.hpp | 2 +- common/include/eoskeygen/core/string.hpp | 2 +- common/include/eoskeygen/core/strlist.hpp | 2 +- common/include/eoskeygen/key_search.hpp | 2 +- .../include/eoskeygen/key_search_result.hpp | 2 +- common/src/core/dictionary.cpp | 2 +- common/src/core/file.cpp | 2 +- common/src/core/leet.cpp | 2 +- common/src/core/string.cpp | 2 +- common/src/core/strlist.cpp | 2 +- common/src/key_search.cpp | 2 +- common/src/key_search_mt.cpp | 2 +- config.hpp.in | 2 +- gui/gui_text.h.in | 2 +- gui/src/GenerateWindow.cpp | 2 +- gui/src/GenerateWindow.hpp | 2 +- gui/src/MainWindow.cpp | 2 +- gui/src/MainWindow.hpp | 2 +- gui/src/MultiSelect.cpp | 2 +- gui/src/MultiSelect.hpp | 2 +- gui/src/SearchWindow.cpp | 2 +- gui/src/SearchWindow.hpp | 2 +- gui/src/helpers.cpp | 2 +- gui/src/helpers.hpp | 2 +- gui/src/main.cpp | 2 +- 40 files changed, 63 insertions(+), 39 deletions(-) diff --git a/LICENSE b/LICENSE index ea09337..81ee5da 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019-2020 EOS Sw/eden +Copyright (c) 2019-2021 EOS Sw/eden Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/benchmark.cpp b/cli/src/benchmark.cpp index b25fbae..e7dafd6 100644 --- a/cli/src/benchmark.cpp +++ b/cli/src/benchmark.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/benchmark.hpp b/cli/src/benchmark.hpp index 8b1f57b..9300cc3 100644 --- a/cli/src/benchmark.hpp +++ b/cli/src/benchmark.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/cli_key_search_result.cpp b/cli/src/cli_key_search_result.cpp index 7ec6b18..0d527de 100644 --- a/cli/src/cli_key_search_result.cpp +++ b/cli/src/cli_key_search_result.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/cli_key_search_result.hpp b/cli/src/cli_key_search_result.hpp index c9a2e15..ac75cb1 100644 --- a/cli/src/cli_key_search_result.hpp +++ b/cli/src/cli_key_search_result.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/console.cpp b/cli/src/console.cpp index 2ed20da..ebcfe1f 100644 --- a/cli/src/console.cpp +++ b/cli/src/console.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/console.hpp b/cli/src/console.hpp index 65da9aa..f847f75 100644 --- a/cli/src/console.hpp +++ b/cli/src/console.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/console_ansi.cpp b/cli/src/console_ansi.cpp index 75b5412..5cf5850 100644 --- a/cli/src/console_ansi.cpp +++ b/cli/src/console_ansi.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/console_win32.cpp b/cli/src/console_win32.cpp index 813daa0..3b13f5a 100644 --- a/cli/src/console_win32.cpp +++ b/cli/src/console_win32.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/isatty.cpp b/cli/src/isatty.cpp index 5fdadfb..ea03397 100644 --- a/cli/src/isatty.cpp +++ b/cli/src/isatty.cpp @@ -1,3 +1,27 @@ +/** + * MIT License + * + * Copyright (c) 2019-2021 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + #if _WIN32 #include #else diff --git a/cli/src/isatty.hpp b/cli/src/isatty.hpp index 0cf40c9..0b724af 100644 --- a/cli/src/isatty.hpp +++ b/cli/src/isatty.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/cli/src/main.cpp b/cli/src/main.cpp index 7602e29..ddd8768 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/config.hpp.in b/common/config.hpp.in index 7871d9f..8b1d7f9 100644 --- a/common/config.hpp.in +++ b/common/config.hpp.in @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/core/dictionary.hpp b/common/include/eoskeygen/core/dictionary.hpp index bdd9cac..4a939c0 100644 --- a/common/include/eoskeygen/core/dictionary.hpp +++ b/common/include/eoskeygen/core/dictionary.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/core/file.hpp b/common/include/eoskeygen/core/file.hpp index 6f5c7e3..330c974 100644 --- a/common/include/eoskeygen/core/file.hpp +++ b/common/include/eoskeygen/core/file.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/core/leet.hpp b/common/include/eoskeygen/core/leet.hpp index 7631052..29eea80 100644 --- a/common/include/eoskeygen/core/leet.hpp +++ b/common/include/eoskeygen/core/leet.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/core/string.hpp b/common/include/eoskeygen/core/string.hpp index a0d8e03..4e008c0 100644 --- a/common/include/eoskeygen/core/string.hpp +++ b/common/include/eoskeygen/core/string.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/core/strlist.hpp b/common/include/eoskeygen/core/strlist.hpp index b1e8d99..96f509e 100644 --- a/common/include/eoskeygen/core/strlist.hpp +++ b/common/include/eoskeygen/core/strlist.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/key_search.hpp b/common/include/eoskeygen/key_search.hpp index 3e3975a..902716f 100644 --- a/common/include/eoskeygen/key_search.hpp +++ b/common/include/eoskeygen/key_search.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/include/eoskeygen/key_search_result.hpp b/common/include/eoskeygen/key_search_result.hpp index 825ebae..e174d18 100644 --- a/common/include/eoskeygen/key_search_result.hpp +++ b/common/include/eoskeygen/key_search_result.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp index 11bd50b..806922b 100644 --- a/common/src/core/dictionary.cpp +++ b/common/src/core/dictionary.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/core/file.cpp b/common/src/core/file.cpp index 74f4c5e..6cbdac5 100644 --- a/common/src/core/file.cpp +++ b/common/src/core/file.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/core/leet.cpp b/common/src/core/leet.cpp index 75bed31..e30e54d 100644 --- a/common/src/core/leet.cpp +++ b/common/src/core/leet.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/core/string.cpp b/common/src/core/string.cpp index 1851a01..6186556 100644 --- a/common/src/core/string.cpp +++ b/common/src/core/string.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/core/strlist.cpp b/common/src/core/strlist.cpp index 6212a35..8c8f874 100644 --- a/common/src/core/strlist.cpp +++ b/common/src/core/strlist.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index 506ee84..f7af039 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp index fc643b0..8c1585b 100644 --- a/common/src/key_search_mt.cpp +++ b/common/src/key_search_mt.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/config.hpp.in b/config.hpp.in index a1b4356..95b3526 100644 --- a/config.hpp.in +++ b/config.hpp.in @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2019-2020 EOS Sw/eden + * Copyright (c) 2019-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/gui_text.h.in b/gui/gui_text.h.in index a8a1cff..e119cb1 100644 --- a/gui/gui_text.h.in +++ b/gui/gui_text.h.in @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/GenerateWindow.cpp b/gui/src/GenerateWindow.cpp index ffefda0..00fa48f 100644 --- a/gui/src/GenerateWindow.cpp +++ b/gui/src/GenerateWindow.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/GenerateWindow.hpp b/gui/src/GenerateWindow.hpp index da2a110..63a3c99 100644 --- a/gui/src/GenerateWindow.hpp +++ b/gui/src/GenerateWindow.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/MainWindow.cpp b/gui/src/MainWindow.cpp index cfed710..3648bf7 100644 --- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/MainWindow.hpp b/gui/src/MainWindow.hpp index 704fa1f..c42e574 100644 --- a/gui/src/MainWindow.hpp +++ b/gui/src/MainWindow.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/MultiSelect.cpp b/gui/src/MultiSelect.cpp index bccf803..1b2ea89 100644 --- a/gui/src/MultiSelect.cpp +++ b/gui/src/MultiSelect.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/MultiSelect.hpp b/gui/src/MultiSelect.hpp index 84ed207..5fe5d8a 100644 --- a/gui/src/MultiSelect.hpp +++ b/gui/src/MultiSelect.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index 2128fed..758ff43 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/SearchWindow.hpp b/gui/src/SearchWindow.hpp index bd622d7..a161628 100644 --- a/gui/src/SearchWindow.hpp +++ b/gui/src/SearchWindow.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/helpers.cpp b/gui/src/helpers.cpp index d1574d4..dc70b2f 100644 --- a/gui/src/helpers.cpp +++ b/gui/src/helpers.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/helpers.hpp b/gui/src/helpers.hpp index ccb5218..da76ed2 100644 --- a/gui/src/helpers.hpp +++ b/gui/src/helpers.hpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal diff --git a/gui/src/main.cpp b/gui/src/main.cpp index ecd14e6..4d8ee5b 100644 --- a/gui/src/main.cpp +++ b/gui/src/main.cpp @@ -1,7 +1,7 @@ /** * MIT License * - * Copyright (c) 2020 EOS Sw/eden + * Copyright (c) 2020-2021 EOS Sw/eden * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal From 32967fdaac1c27c5145a51362e38101eb87cd04b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 4 Jan 2021 16:16:34 +0100 Subject: [PATCH 318/404] cli/src/benchmark.cpp: Minor cleanup, stop using the keyword "using" :) --- cli/src/benchmark.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/cli/src/benchmark.cpp b/cli/src/benchmark.cpp index e7dafd6..9c65375 100644 --- a/cli/src/benchmark.cpp +++ b/cli/src/benchmark.cpp @@ -25,29 +25,25 @@ #include #include "benchmark.hpp" -using std::chrono::steady_clock; -using std::chrono::duration; -using std::chrono::time_point; - namespace eoskeygen { -void benchmark(size_t num_keys, struct benchmark_result* res) { +std::chrono::duration _run_benchmark(size_t num_keys) { + auto start = std::chrono::steady_clock::now(); + for(size_t i = 0; i < num_keys; i++) { + struct libeosio::ec_keypair k; + libeosio::ec_generate_key(&k); + } + return std::chrono::steady_clock::now() - start; +} - time_point start; +void benchmark(size_t num_keys, struct benchmark_result* res) { if (num_keys < 1) { res->sec = res->kps = 0; return; } - start = steady_clock::now(); - - for(size_t i = 0; i < num_keys; i++) { - struct libeosio::ec_keypair k; - libeosio::ec_generate_key(&k); - } - - res->sec = duration(steady_clock::now() - start).count(); + res->sec = _run_benchmark(num_keys).count(); res->kps = static_cast(num_keys) / res->sec; } From 5bd72cec1958a189de2ea0f969f544379f1327f6 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 24 Feb 2021 14:05:42 +0100 Subject: [PATCH 319/404] common/cmake/libeosio.cmake: use v0.1.2 --- common/cmake/libeosio.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index c72cbb6..91f1485 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION v0.1.1 ) +set( LIBEOSIO_WANTED_VERSION v0.1.2 ) # -------------------------------- # Macros From 145769970f7362dad83fbfc3181c104d36457ace Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 24 Feb 2021 13:33:27 +0100 Subject: [PATCH 320/404] .github/workflows/ci.yml: Adding support for Ubuntu 20.04 --- .github/workflows/ci.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2cf3fd0..869dcd9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,7 +13,7 @@ jobs: compile: strategy: matrix: - os: [ ubuntu-18.04, macos-latest, windows-latest ] + os: [ ubuntu-20.04, ubuntu-18.04, macos-latest, windows-latest ] build: [ cli, cli-mt, cli-ansi, cli-ansi-mt, gui, gui-mt ] include: - build: cli @@ -43,7 +43,12 @@ jobs: - name: Qt - Ubuntu if: startsWith(matrix.build, 'gui') && runner.os == 'Linux' shell: bash - run: sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 + run: | + if [ "${{matrix.os}}" == "ubuntu-20.04" ]; then + sudo apt-get install qt5-default=5.12.8+dfsg-0ubuntu1 + else : + sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 + fi - name: Qt - Windows/Mac if: startsWith(matrix.build, 'gui') && runner.os != 'Linux' From 09e287733ca8363aa0ba967ff6d35d455fbca867 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 24 Feb 2021 14:17:30 +0100 Subject: [PATCH 321/404] .github/workflows/package.yml: Build package for Ubuntu 20.04 --- .github/workflows/package.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 036e97e..fa972d5 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -9,21 +9,27 @@ jobs: ubuntu: strategy: matrix: + os: [ ubuntu-18.04, ubuntu-20.04 ] component: [ cli, gui ] include: - component: cli build-opts: --cli --no-gui -t Release --pkg-type deb - component: gui build-opts: --no-cli --gui -t Release --pkg-type deb - name: Ubuntu (${{matrix.component}}) - runs-on: ubuntu-18.04 + name: ${{matrix.os}} (${{matrix.component}}) + runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v1 - name: Qt if: startsWith(matrix.component, 'gui') shell: bash - run: sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 + run: | + if [ "${{matrix.os}}" == "ubuntu-20.04" ]; then + sudo apt-get install qt5-default=5.12.8+dfsg-0ubuntu1 + else : + sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.5 + fi - name: Package id: package From e4dbcbdc0a213839f6301658df2072ccafdd879a Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 24 Feb 2021 14:23:40 +0100 Subject: [PATCH 322/404] Version 1.0.7 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f7bdb17..1a84cb4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.15) # -------------------------------- project(eosio-keygen - VERSION 1.0.6 + VERSION 1.0.7 DESCRIPTION "Keygenerator for EOSIO" HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" ) From 010edeb2f568dc95bf69e33170d975bafe33d6c5 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 14:53:28 +0200 Subject: [PATCH 323/404] cli/src/main.cpp: Improve usage text format. --- cli/src/main.cpp | 56 +++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/cli/src/main.cpp b/cli/src/main.cpp index ddd8768..3d1f3f8 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -46,57 +46,65 @@ size_t option_num_threads = eoskeygen::KeySearch::max_threads(); void usage(const char *name) { - std::cout << name - << " [ -h | --help | -v | search [ -m | --l33t" + std::cout << std::endl + << "Usage:" << std::endl + << " " << name << std::endl; + + std::cout << " " << name + << " search [ -m | --l33t" #ifdef EOSIOKEYGEN_HAVE_THREADS << " | --threads=" #endif /* EOSIOKEYGEN_HAVE_THREADS */ << " | --dict= ... " << " | --lang= ... ] |file: [ ]" - << " | benchmark [ ]" << " ]" - << std::endl << std::endl; + << std::endl; - std::cout << " - Output one EOSIO key pair if no arguments are given" << std::endl << std::endl; + std::cout << " " << name << " benchmark [ ]" << std::endl; + + std::cout << " " << name << " -h | --help" << std::endl; + std::cout << " " << name << " -v" << std::endl; + + std::cout << std::endl << " - Output one EOSIO key pair if no arguments are given" << std::endl << std::endl; // Options std::cout - << " Options:" << std::endl - << " -h, --help Shows this help text." + << "Options:" << std::endl + << " -h --help Shows this help text." << std::endl << std::endl - << " -v Shows version." + << " -v Shows version." << std::endl << std::endl; - std::cout << " search: " << std::endl + std::cout << "search: " << std::endl << " performs a search, finding public keys containing" << std::endl << " one or more words from (separated with ',')." << std::endl << std::endl << " Instead of a list it is possible to specify a file with words" << std::endl << " (separated with newline '\\n') using file:" << std::endl << std::endl - << " -m: Monochrome, disables all color output." + << " -m Monochrome, disables all color output." << std::endl << std::endl - << " --l33t: Takes each word in and find all l33tspeak" << std::endl - << " combinations of that word and uses the new list for the search." + << " --l33t Takes each word in and find all l33tspeak" << std::endl + << " combinations of that word and uses the new list for the search." #ifdef EOSIOKEYGEN_HAVE_THREADS << std::endl << std::endl - << " --threads=: Use of parallel threads for searching." << std::endl - << " Default is what the operating system recomend." + << " --threads= Use of parallel threads for searching." << std::endl + << " Default is what the operating system recomends." #endif /* EOSIOKEYGEN_HAVE_THREADS */ << std::endl << std::endl - << " --dict=: Use words found in (separated by newline) to" << std::endl - << " highlight words in the keys found (note that the words in this" << std::endl - << " file are not used for search. only for highlight output)." << std::endl - << " There can be more then one --dict flag. In that case contents" << std::endl - << " of all files are merged into one dictionary." << std::endl + << " --dict= Use words found in (separated by newline) to" << std::endl + << " highlight words in the keys found (note that the words in this" << std::endl + << " file are not used for search. only for highlight output)." << std::endl + << " There can be more then one --dict flag. In that case contents" << std::endl + << " of all files are merged into one dictionary." << std::endl << std::endl << std::endl - << " --lang=: Same as --dict but will use " << std::endl - << " to find a file in " << CONFIG_SHARE_FULL_PATH << "/dict." << std::endl - << " There can be more then one --lang flag. In that case contents" << std::endl - << " of all files are merged into one dictionary." << std::endl + << " --lang= Same as --dict but will use " << std::endl + << " to find a file in " << CONFIG_SHARE_FULL_PATH << "/dict." << std::endl + << " There can be more then one --lang flag. In that case contents" << std::endl + << " of all files are merged into one dictionary." << std::endl << std::endl; - std::cout << " Benchmark: " << std::endl + std::cout << "benchmark: " << std::endl << " performs a benchmark test, generating keys and measuring the time." << std::endl << std::endl; } From 95849b1e326364e49df8b81c91264bd3f33b0e8b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 18:04:33 +0200 Subject: [PATCH 324/404] build.sh: adding --libeosio flag --- build.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 679d90f..a58395c 100755 --- a/build.sh +++ b/build.sh @@ -1,11 +1,11 @@ #!/bin/bash function usage() { - echo "Usage: ${0##*/} [ -h|--help ] [ --cli|--no-cli ] [ --gui|--no-gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [--pkg-type nsis|deb|zip|tgz] [ --disable-threads ] [ --force-ansi ]" + echo "Usage: ${0##*/} [ -h|--help ] [ --cli|--no-cli ] [ --gui|--no-gui] [ -t|--type Debug|Release|RelWithDebInfo|MinSizeRel ] [ --libeosio= ] [ --pkg-type nsis|deb|zip|tgz ] [ --disable-threads ] [ --force-ansi ]" exit 1 } -options=$(getopt -n "${0##*/}" -o "lht:" -l "help,cli,no-cli,gui,no-gui,type:,pkg-type:,disable-threads,force-ansi" -- "$@") +options=$(getopt -n "${0##*/}" -o "lht:" -l "help,cli,no-cli,gui,no-gui,type:,libeosio:,pkg-type:,disable-threads,force-ansi" -- "$@") [ $? -eq 0 ] || usage @@ -35,6 +35,10 @@ while true; do TARGET="package" ARGS="${ARGS} -DCPACK_GENERATOR=${1^^}" ;; + --libeosio) + shift + ARGS="${ARGS} -DLIBEOSIO_SOURCE_DIR=${1}" + ;; --cli) ARGS="${ARGS} -DCOMPONENT_CLI=ON" ;; --no-cli) From 554cfd588497c46a07a11169018684ca61378791 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 16:44:12 +0200 Subject: [PATCH 325/404] common/cmake/libeosio.cmake: set v0.1.3 needed for prefix parameter to wif_print_key() --- common/cmake/libeosio.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake index 91f1485..f741c08 100644 --- a/common/cmake/libeosio.cmake +++ b/common/cmake/libeosio.cmake @@ -2,7 +2,7 @@ # Variables # -------------------------------- set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" ) -set( LIBEOSIO_WANTED_VERSION v0.1.2 ) +set( LIBEOSIO_WANTED_VERSION v0.1.3 ) # -------------------------------- # Macros From 52e255850a599a723716336207256df4568ae52d Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 16:45:59 +0200 Subject: [PATCH 326/404] cli/src/cli_key_search_result: Add prefix parameter to constructor. --- cli/src/cli_key_search_result.cpp | 8 +++++--- cli/src/cli_key_search_result.hpp | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/cli/src/cli_key_search_result.cpp b/cli/src/cli_key_search_result.cpp index 0d527de..fa3d009 100644 --- a/cli/src/cli_key_search_result.cpp +++ b/cli/src/cli_key_search_result.cpp @@ -21,6 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#include #include #include #include @@ -37,8 +38,9 @@ static size_t highlight(console::Color color, const std::string& str, size_t pos return len; } -CliKeySearchResult::CliKeySearchResult(const Dictionary& dict) : -m_dict (dict) +CliKeySearchResult::CliKeySearchResult(const Dictionary& dict, const std::string& prefix) : +m_dict (dict), +m_prefix (prefix) { } @@ -50,7 +52,7 @@ void CliKeySearchResult::onResult(const struct libeosio::ec_keypair* key, const std::cout << "----" << std::endl; std::cout << "Found: " << pub.substr(result.pos, result.len) << std::endl; - std::cout << "Public: EOS"; + std::cout << "Public: " << m_prefix.substr(0, 3); for(size_t i = 3; i < pub.length(); ) { if (i == result.pos) { diff --git a/cli/src/cli_key_search_result.hpp b/cli/src/cli_key_search_result.hpp index ac75cb1..4f1e47b 100644 --- a/cli/src/cli_key_search_result.hpp +++ b/cli/src/cli_key_search_result.hpp @@ -24,6 +24,7 @@ #ifndef EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H +#include #include #include #include @@ -36,13 +37,15 @@ class Dictionary; class CliKeySearchResult : public IKeySearchResult { public: - CliKeySearchResult(const Dictionary& dict); + CliKeySearchResult(const Dictionary& dict, const std::string& prefix); virtual void onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result); protected : const Dictionary& m_dict; + + std::string m_prefix; }; } // namespace eoskeygen From 486d2c5030858bab7c31a1782b86a8e15f9bb0bb Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 16:47:18 +0200 Subject: [PATCH 327/404] cli/src/main.cpp: implement "--fio" option to generate FIO keys. --- cli/src/main.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/cli/src/main.cpp b/cli/src/main.cpp index 3d1f3f8..19248ac 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -39,6 +39,7 @@ // Command line options. bool option_l33t = false; +std::string key_prefix = "EOS"; #ifdef EOSIOKEYGEN_HAVE_THREADS size_t option_num_threads = eoskeygen::KeySearch::max_threads(); @@ -48,10 +49,10 @@ void usage(const char *name) { std::cout << std::endl << "Usage:" << std::endl - << " " << name << std::endl; + << " " << name << " [ options ]" << std::endl; std::cout << " " << name - << " search [ -m | --l33t" + << " [ options ] search [ -m | --l33t" #ifdef EOSIOKEYGEN_HAVE_THREADS << " | --threads=" #endif /* EOSIOKEYGEN_HAVE_THREADS */ @@ -60,7 +61,7 @@ void usage(const char *name) { << " ]" << std::endl; - std::cout << " " << name << " benchmark [ ]" << std::endl; + std::cout << " " << name << " [ options ] benchmark [ ]" << std::endl; std::cout << " " << name << " -h | --help" << std::endl; std::cout << " " << name << " -v" << std::endl; @@ -73,6 +74,8 @@ void usage(const char *name) { << " -h --help Shows this help text." << std::endl << std::endl << " -v Shows version." + << std::endl << std::endl + << " --fio Generate keys from FIO network instead of EOSIO." << std::endl << std::endl; std::cout << "search: " << std::endl @@ -112,7 +115,7 @@ void usage(const char *name) { int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) { eoskeygen::KeySearch ks; - eoskeygen::CliKeySearchResult rs(dict); + eoskeygen::CliKeySearchResult rs(dict, key_prefix); ks.setCallback(&rs); @@ -169,11 +172,16 @@ int main(int argc, char **argv) { // when parsing command line. int p = 1; + if (p < argc && !strcmp(argv[p], "--fio")) { + p++; + key_prefix = "FIO"; + } + // No args, just print a key. - if (argc <= 1) { + if (p >= argc) { struct libeosio::ec_keypair pair; libeosio::ec_generate_key(&pair); - libeosio::wif_print_key(&pair); + libeosio::wif_print_key(&pair, key_prefix); return 0; } From f7b84c7752395bb12e363b344a01c52080e4043b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Thu, 6 May 2021 18:05:01 +0200 Subject: [PATCH 328/404] GUI: Adding Settings Component. --- gui/CMakeLists.txt | 1 + gui/src/Settings.cpp | 39 +++++++++++++++++++++++++++++++++++++++ gui/src/Settings.hpp | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 gui/src/Settings.cpp create mode 100644 gui/src/Settings.hpp diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index 3628f7a..361dfeb 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -39,6 +39,7 @@ set( PROGRAM_SRC src/GenerateWindow.cpp src/SearchWindow.cpp src/MultiSelect.cpp + src/Settings.cpp src/helpers.cpp ) diff --git a/gui/src/Settings.cpp b/gui/src/Settings.cpp new file mode 100644 index 0000000..d49c408 --- /dev/null +++ b/gui/src/Settings.cpp @@ -0,0 +1,39 @@ +/** + * MIT License + * + * Copyright (c) 2020-2021 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "Settings.hpp" + +namespace priv { + bool fio_keys = false; + +} // namespace priv + +bool Settings::shouldGenerateFioKeys() +{ + return priv::fio_keys; +} + +void Settings::setGenerateFioKeys(bool value) +{ + priv::fio_keys = value; +} diff --git a/gui/src/Settings.hpp b/gui/src/Settings.hpp new file mode 100644 index 0000000..d47c26f --- /dev/null +++ b/gui/src/Settings.hpp @@ -0,0 +1,34 @@ +/** + * MIT License + * + * Copyright (c) 2020-2021 EOS Sw/eden + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#ifndef SETTINGS_H +#define SETTINGS_H + +namespace Settings +{ + bool shouldGenerateFioKeys(); + + void setGenerateFioKeys(bool value); +}; + +#endif /* SEARCH_WINDOW_H */ From 8c9047d71600aed1e41aaa52d25980c9b2e2f4be Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 7 May 2021 13:38:17 +0200 Subject: [PATCH 329/404] gui/src/SearchWindow.cpp: Check Settings::shouldGenerateFioKeys() to know if we should use "FIO" or "EOS" prefix. --- gui/src/SearchWindow.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index 758ff43..23e2cf3 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -31,6 +31,7 @@ #include #include #include +#include "Settings.hpp" #include "gui_text.h" #include "config.hpp" #include "helpers.hpp" @@ -149,7 +150,7 @@ void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct { int pos = (int) result.pos; int len = (int) result.len; - QString pub = QString::fromStdString(libeosio::wif_pub_encode(key->pub)); + QString pub = QString::fromStdString(libeosio::wif_pub_encode(key->pub, Settings::shouldGenerateFioKeys() ? "FIO" : "EOS")); QString mid = pub.mid(pos, len); QString left = pub.left(pos); QString right = pub.mid(pos + len, pub.size() - pos); From 6bd84b1d8d4db1ea35f0390d59961e739dbd3299 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 7 May 2021 13:38:32 +0200 Subject: [PATCH 330/404] gui/src/GenerateWindow.cpp: Check Settings::shouldGenerateFioKeys() if we should use "FIO" or "EOS" prefix. --- gui/src/GenerateWindow.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gui/src/GenerateWindow.cpp b/gui/src/GenerateWindow.cpp index 00fa48f..8880ffb 100644 --- a/gui/src/GenerateWindow.cpp +++ b/gui/src/GenerateWindow.cpp @@ -28,6 +28,7 @@ #include #include #include +#include "Settings.hpp" #include "GenerateWindow.hpp" void _initKeyWidget(QLineEdit& w) { @@ -91,12 +92,13 @@ m_btn_copy_both ("Copy keys") void GenerateWindow::generate_key() { - std::string pubstr, privstr; + std::string pubstr; struct libeosio::ec_keypair pair; libeosio::ec_generate_key(&pair); - m_pub.setText(QString::fromStdString(libeosio::wif_pub_encode(pair.pub))); + pubstr = libeosio::wif_pub_encode(pair.pub, Settings::shouldGenerateFioKeys() ? "FIO" : "EOS"); + m_pub.setText(QString::fromStdString(pubstr)); m_priv.setText(QString::fromStdString(libeosio::wif_priv_encode(pair.secret))); } From 7fb1774359fe7baf67eefc01c21487883d6678ff Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 7 May 2021 13:40:47 +0200 Subject: [PATCH 331/404] gui/src/MainWindow: Add menu item to switch between FIO/EOS key prefixes. --- gui/src/MainWindow.cpp | 22 ++++++++++++++++++++-- gui/src/MainWindow.hpp | 6 ++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/gui/src/MainWindow.cpp b/gui/src/MainWindow.cpp index 3648bf7..8000ac1 100644 --- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -26,12 +26,14 @@ #include #include #include "gui_text.h" +#include "Settings.hpp" #include "GenerateWindow.hpp" #include "SearchWindow.hpp" #include "MainWindow.hpp" MainWindow::MainWindow(QWidget *parent) : -QMainWindow (parent) +QMainWindow (parent), +m_fio_action (nullptr) { // Create sub windows and stacked widget. m_stacked = new QStackedWidget(); @@ -40,10 +42,21 @@ QMainWindow (parent) setCentralWidget(m_stacked); - // Menu bar. + // Add to menu bar. menuBar()->addAction("Generate", this, SLOT(switchToGenerate())); menuBar()->addAction("Search", this, SLOT(switchToSearch())); + + // Settings + + m_fio_action = new QAction("FIO Keys", this); + m_fio_action->setCheckable(true); + connect(m_fio_action, SIGNAL(triggered()), this, SLOT(fioKeysCheckboxChanged())); + + QMenu *settings_menu = menuBar()->addMenu("Settings"); + settings_menu->addAction(m_fio_action); + + // About menuBar()->addAction("About", this, SLOT(showAbout())); } @@ -63,3 +76,8 @@ void MainWindow::showAbout() EOSIOKEYGEN_GUI_TEXT_ABOUT_TITLE, EOSIOKEYGEN_GUI_TEXT_ABOUT_BODY); } + +void MainWindow::fioKeysCheckboxChanged() +{ + Settings::setGenerateFioKeys(m_fio_action ? m_fio_action->isChecked() : false); +} diff --git a/gui/src/MainWindow.hpp b/gui/src/MainWindow.hpp index c42e574..1658195 100644 --- a/gui/src/MainWindow.hpp +++ b/gui/src/MainWindow.hpp @@ -24,6 +24,8 @@ #ifndef MAIN_WINDOW_H #define MAIN_WINDOW_H +#include +#include #include class QStackedWidget; @@ -44,9 +46,13 @@ private slots : void showAbout(); + void fioKeysCheckboxChanged(); + private : QStackedWidget* m_stacked; + + QPointer m_fio_action; }; #endif /* MAIN_WINDOW_H */ From 0e4a574f7ae23556db1fb4feecb5f1df2fd67b1f Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 20 Sep 2022 11:09:07 +0200 Subject: [PATCH 332/404] cli/src/main.cpp: fix indent in usage string. --- cli/src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli/src/main.cpp b/cli/src/main.cpp index 19248ac..911635c 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -49,7 +49,7 @@ void usage(const char *name) { std::cout << std::endl << "Usage:" << std::endl - << " " << name << " [ options ]" << std::endl; + << " " << name << " [ options ]" << std::endl; std::cout << " " << name << " [ options ] search [ -m | --l33t" From 1d923d3dd8da56368c2d7361da92bae521fb461b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Tue, 20 Sep 2022 15:18:03 +0200 Subject: [PATCH 333/404] Adding lib/CLI11 --- lib/CLI11/CMakeLists.txt | 2 + lib/CLI11/LICENSE | 25 + lib/CLI11/include/CLI11/CLI11.hpp | 9190 +++++++++++++++++++++++++++++ 3 files changed, 9217 insertions(+) create mode 100644 lib/CLI11/CMakeLists.txt create mode 100644 lib/CLI11/LICENSE create mode 100644 lib/CLI11/include/CLI11/CLI11.hpp diff --git a/lib/CLI11/CMakeLists.txt b/lib/CLI11/CMakeLists.txt new file mode 100644 index 0000000..fb43efb --- /dev/null +++ b/lib/CLI11/CMakeLists.txt @@ -0,0 +1,2 @@ +set (LIBCLI11_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/include) +set (LIBCLI11_LICENSE ${CMAKE_CURRENT_LIST_DIR}/LICENSE) \ No newline at end of file diff --git a/lib/CLI11/LICENSE b/lib/CLI11/LICENSE new file mode 100644 index 0000000..f618d95 --- /dev/null +++ b/lib/CLI11/LICENSE @@ -0,0 +1,25 @@ +CLI11 2.2 Copyright (c) 2017-2022 University of Cincinnati, developed by Henry +Schreiner under NSF AWARD 1414736. All rights reserved. + +Redistribution and use in source and binary forms of CLI11, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/lib/CLI11/include/CLI11/CLI11.hpp b/lib/CLI11/include/CLI11/CLI11.hpp new file mode 100644 index 0000000..f29a5c4 --- /dev/null +++ b/lib/CLI11/include/CLI11/CLI11.hpp @@ -0,0 +1,9190 @@ +// CLI11: Version 2.2.0 +// Originally designed by Henry Schreiner +// https://github.com/CLIUtils/CLI11 +// +// This is a standalone header file generated by MakeSingleHeader.py in CLI11/scripts +// from: v2.2.0 +// +// CLI11 2.2.0 Copyright (c) 2017-2022 University of Cincinnati, developed by Henry +// Schreiner under NSF AWARD 1414736. All rights reserved. +// +// Redistribution and use in source and binary forms of CLI11, with or without +// modification, are permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// 3. Neither the name of the copyright holder nor the names of its contributors +// may be used to endorse or promote products derived from this software without +// specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#pragma once + +// Standard combined includes: +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define CLI11_VERSION_MAJOR 2 +#define CLI11_VERSION_MINOR 2 +#define CLI11_VERSION_PATCH 0 +#define CLI11_VERSION "2.2.0" + + + + +// The following version macro is very similar to the one in pybind11 +#if !(defined(_MSC_VER) && __cplusplus == 199711L) && !defined(__INTEL_COMPILER) +#if __cplusplus >= 201402L +#define CLI11_CPP14 +#if __cplusplus >= 201703L +#define CLI11_CPP17 +#if __cplusplus > 201703L +#define CLI11_CPP20 +#endif +#endif +#endif +#elif defined(_MSC_VER) && __cplusplus == 199711L +// MSVC sets _MSVC_LANG rather than __cplusplus (supposedly until the standard is fully implemented) +// Unless you use the /Zc:__cplusplus flag on Visual Studio 2017 15.7 Preview 3 or newer +#if _MSVC_LANG >= 201402L +#define CLI11_CPP14 +#if _MSVC_LANG > 201402L && _MSC_VER >= 1910 +#define CLI11_CPP17 +#if _MSVC_LANG > 201703L && _MSC_VER >= 1910 +#define CLI11_CPP20 +#endif +#endif +#endif +#endif + +#if defined(CLI11_CPP14) +#define CLI11_DEPRECATED(reason) [[deprecated(reason)]] +#elif defined(_MSC_VER) +#define CLI11_DEPRECATED(reason) __declspec(deprecated(reason)) +#else +#define CLI11_DEPRECATED(reason) __attribute__((deprecated(reason))) +#endif + +/** detection of rtti */ +#ifndef CLI11_USE_STATIC_RTTI +#if(defined(_HAS_STATIC_RTTI) && _HAS_STATIC_RTTI) +#define CLI11_USE_STATIC_RTTI 1 +#elif defined(__cpp_rtti) +#if(defined(_CPPRTTI) && _CPPRTTI == 0) +#define CLI11_USE_STATIC_RTTI 1 +#else +#define CLI11_USE_STATIC_RTTI 0 +#endif +#elif(defined(__GCC_RTTI) && __GXX_RTTI) +#define CLI11_USE_STATIC_RTTI 0 +#else +#define CLI11_USE_STATIC_RTTI 1 +#endif +#endif + + + +// C standard library +// Only needed for existence checking +#if defined CLI11_CPP17 && defined __has_include && !defined CLI11_HAS_FILESYSTEM +#if __has_include() +// Filesystem cannot be used if targeting macOS < 10.15 +#if defined __MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 +#define CLI11_HAS_FILESYSTEM 0 +#elif defined(__wasi__) +// As of wasi-sdk-14, filesystem is not implemented +#define CLI11_HAS_FILESYSTEM 0 +#else +#include +#if defined __cpp_lib_filesystem && __cpp_lib_filesystem >= 201703 +#if defined _GLIBCXX_RELEASE && _GLIBCXX_RELEASE >= 9 +#define CLI11_HAS_FILESYSTEM 1 +#elif defined(__GLIBCXX__) +// if we are using gcc and Version <9 default to no filesystem +#define CLI11_HAS_FILESYSTEM 0 +#else +#define CLI11_HAS_FILESYSTEM 1 +#endif +#else +#define CLI11_HAS_FILESYSTEM 0 +#endif +#endif +#endif +#endif + +#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 +#include // NOLINT(build/include) +#else +#include +#include +#endif + + + +namespace CLI { + + +/// Include the items in this namespace to get free conversion of enums to/from streams. +/// (This is available inside CLI as well, so CLI11 will use this without a using statement). +namespace enums { + +/// output streaming for enumerations +template ::value>::type> +std::ostream &operator<<(std::ostream &in, const T &item) { + // make sure this is out of the detail namespace otherwise it won't be found when needed + return in << static_cast::type>(item); +} + +} // namespace enums + +/// Export to CLI namespace +using enums::operator<<; + +namespace detail { +/// a constant defining an expected max vector size defined to be a big number that could be multiplied by 4 and not +/// produce overflow for some expected uses +constexpr int expected_max_vector_size{1 << 29}; +// Based on http://stackoverflow.com/questions/236129/split-a-string-in-c +/// Split a string by a delim +inline std::vector split(const std::string &s, char delim) { + std::vector elems; + // Check to see if empty string, give consistent result + if(s.empty()) { + elems.emplace_back(); + } else { + std::stringstream ss; + ss.str(s); + std::string item; + while(std::getline(ss, item, delim)) { + elems.push_back(item); + } + } + return elems; +} + +/// Simple function to join a string +template std::string join(const T &v, std::string delim = ",") { + std::ostringstream s; + auto beg = std::begin(v); + auto end = std::end(v); + if(beg != end) + s << *beg++; + while(beg != end) { + s << delim << *beg++; + } + return s.str(); +} + +/// Simple function to join a string from processed elements +template ::value>::type> +std::string join(const T &v, Callable func, std::string delim = ",") { + std::ostringstream s; + auto beg = std::begin(v); + auto end = std::end(v); + auto loc = s.tellp(); + while(beg != end) { + auto nloc = s.tellp(); + if(nloc > loc) { + s << delim; + loc = nloc; + } + s << func(*beg++); + } + return s.str(); +} + +/// Join a string in reverse order +template std::string rjoin(const T &v, std::string delim = ",") { + std::ostringstream s; + for(std::size_t start = 0; start < v.size(); start++) { + if(start > 0) + s << delim; + s << v[v.size() - start - 1]; + } + return s.str(); +} + +// Based roughly on http://stackoverflow.com/questions/25829143/c-trim-whitespace-from-a-string + +/// Trim whitespace from left of string +inline std::string <rim(std::string &str) { + auto it = std::find_if(str.begin(), str.end(), [](char ch) { return !std::isspace(ch, std::locale()); }); + str.erase(str.begin(), it); + return str; +} + +/// Trim anything from left of string +inline std::string <rim(std::string &str, const std::string &filter) { + auto it = std::find_if(str.begin(), str.end(), [&filter](char ch) { return filter.find(ch) == std::string::npos; }); + str.erase(str.begin(), it); + return str; +} + +/// Trim whitespace from right of string +inline std::string &rtrim(std::string &str) { + auto it = std::find_if(str.rbegin(), str.rend(), [](char ch) { return !std::isspace(ch, std::locale()); }); + str.erase(it.base(), str.end()); + return str; +} + +/// Trim anything from right of string +inline std::string &rtrim(std::string &str, const std::string &filter) { + auto it = + std::find_if(str.rbegin(), str.rend(), [&filter](char ch) { return filter.find(ch) == std::string::npos; }); + str.erase(it.base(), str.end()); + return str; +} + +/// Trim whitespace from string +inline std::string &trim(std::string &str) { return ltrim(rtrim(str)); } + +/// Trim anything from string +inline std::string &trim(std::string &str, const std::string filter) { return ltrim(rtrim(str, filter), filter); } + +/// Make a copy of the string and then trim it +inline std::string trim_copy(const std::string &str) { + std::string s = str; + return trim(s); +} + +/// remove quotes at the front and back of a string either '"' or '\'' +inline std::string &remove_quotes(std::string &str) { + if(str.length() > 1 && (str.front() == '"' || str.front() == '\'')) { + if(str.front() == str.back()) { + str.pop_back(); + str.erase(str.begin(), str.begin() + 1); + } + } + return str; +} + +/// Add a leader to the beginning of all new lines (nothing is added +/// at the start of the first line). `"; "` would be for ini files +/// +/// Can't use Regex, or this would be a subs. +inline std::string fix_newlines(const std::string &leader, std::string input) { + std::string::size_type n = 0; + while(n != std::string::npos && n < input.size()) { + n = input.find('\n', n); + if(n != std::string::npos) { + input = input.substr(0, n + 1) + leader + input.substr(n + 1); + n += leader.size(); + } + } + return input; +} + +/// Make a copy of the string and then trim it, any filter string can be used (any char in string is filtered) +inline std::string trim_copy(const std::string &str, const std::string &filter) { + std::string s = str; + return trim(s, filter); +} +/// Print a two part "help" string +inline std::ostream &format_help(std::ostream &out, std::string name, const std::string &description, std::size_t wid) { + name = " " + name; + out << std::setw(static_cast(wid)) << std::left << name; + if(!description.empty()) { + if(name.length() >= wid) + out << "\n" << std::setw(static_cast(wid)) << ""; + for(const char c : description) { + out.put(c); + if(c == '\n') { + out << std::setw(static_cast(wid)) << ""; + } + } + } + out << "\n"; + return out; +} + +/// Print subcommand aliases +inline std::ostream &format_aliases(std::ostream &out, const std::vector &aliases, std::size_t wid) { + if(!aliases.empty()) { + out << std::setw(static_cast(wid)) << " aliases: "; + bool front = true; + for(const auto &alias : aliases) { + if(!front) { + out << ", "; + } else { + front = false; + } + out << detail::fix_newlines(" ", alias); + } + out << "\n"; + } + return out; +} + +/// Verify the first character of an option +/// - is a trigger character, ! has special meaning and new lines would just be annoying to deal with +template bool valid_first_char(T c) { return ((c != '-') && (c != '!') && (c != ' ') && c != '\n'); } + +/// Verify following characters of an option +template bool valid_later_char(T c) { + // = and : are value separators, { has special meaning for option defaults, + // and \n would just be annoying to deal with in many places allowing space here has too much potential for + // inadvertent entry errors and bugs + return ((c != '=') && (c != ':') && (c != '{') && (c != ' ') && c != '\n'); +} + +/// Verify an option/subcommand name +inline bool valid_name_string(const std::string &str) { + if(str.empty() || !valid_first_char(str[0])) { + return false; + } + auto e = str.end(); + for(auto c = str.begin() + 1; c != e; ++c) + if(!valid_later_char(*c)) + return false; + return true; +} + +/// Verify an app name +inline bool valid_alias_name_string(const std::string &str) { + static const std::string badChars(std::string("\n") + '\0'); + return (str.find_first_of(badChars) == std::string::npos); +} + +/// check if a string is a container segment separator (empty or "%%") +inline bool is_separator(const std::string &str) { + static const std::string sep("%%"); + return (str.empty() || str == sep); +} + +/// Verify that str consists of letters only +inline bool isalpha(const std::string &str) { + return std::all_of(str.begin(), str.end(), [](char c) { return std::isalpha(c, std::locale()); }); +} + +/// Return a lower case version of a string +inline std::string to_lower(std::string str) { + std::transform(std::begin(str), std::end(str), std::begin(str), [](const std::string::value_type &x) { + return std::tolower(x, std::locale()); + }); + return str; +} + +/// remove underscores from a string +inline std::string remove_underscore(std::string str) { + str.erase(std::remove(std::begin(str), std::end(str), '_'), std::end(str)); + return str; +} + +/// Find and replace a substring with another substring +inline std::string find_and_replace(std::string str, std::string from, std::string to) { + + std::size_t start_pos = 0; + + while((start_pos = str.find(from, start_pos)) != std::string::npos) { + str.replace(start_pos, from.length(), to); + start_pos += to.length(); + } + + return str; +} + +/// check if the flag definitions has possible false flags +inline bool has_default_flag_values(const std::string &flags) { + return (flags.find_first_of("{!") != std::string::npos); +} + +inline void remove_default_flag_values(std::string &flags) { + auto loc = flags.find_first_of('{', 2); + while(loc != std::string::npos) { + auto finish = flags.find_first_of("},", loc + 1); + if((finish != std::string::npos) && (flags[finish] == '}')) { + flags.erase(flags.begin() + static_cast(loc), + flags.begin() + static_cast(finish) + 1); + } + loc = flags.find_first_of('{', loc + 1); + } + flags.erase(std::remove(flags.begin(), flags.end(), '!'), flags.end()); +} + +/// Check if a string is a member of a list of strings and optionally ignore case or ignore underscores +inline std::ptrdiff_t find_member(std::string name, + const std::vector names, + bool ignore_case = false, + bool ignore_underscore = false) { + auto it = std::end(names); + if(ignore_case) { + if(ignore_underscore) { + name = detail::to_lower(detail::remove_underscore(name)); + it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { + return detail::to_lower(detail::remove_underscore(local_name)) == name; + }); + } else { + name = detail::to_lower(name); + it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { + return detail::to_lower(local_name) == name; + }); + } + + } else if(ignore_underscore) { + name = detail::remove_underscore(name); + it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { + return detail::remove_underscore(local_name) == name; + }); + } else { + it = std::find(std::begin(names), std::end(names), name); + } + + return (it != std::end(names)) ? (it - std::begin(names)) : (-1); +} + +/// Find a trigger string and call a modify callable function that takes the current string and starting position of the +/// trigger and returns the position in the string to search for the next trigger string +template inline std::string find_and_modify(std::string str, std::string trigger, Callable modify) { + std::size_t start_pos = 0; + while((start_pos = str.find(trigger, start_pos)) != std::string::npos) { + start_pos = modify(str, start_pos); + } + return str; +} + +/// Split a string '"one two" "three"' into 'one two', 'three' +/// Quote characters can be ` ' or " +inline std::vector split_up(std::string str, char delimiter = '\0') { + + const std::string delims("\'\"`"); + auto find_ws = [delimiter](char ch) { + return (delimiter == '\0') ? (std::isspace(ch, std::locale()) != 0) : (ch == delimiter); + }; + trim(str); + + std::vector output; + bool embeddedQuote = false; + char keyChar = ' '; + while(!str.empty()) { + if(delims.find_first_of(str[0]) != std::string::npos) { + keyChar = str[0]; + auto end = str.find_first_of(keyChar, 1); + while((end != std::string::npos) && (str[end - 1] == '\\')) { // deal with escaped quotes + end = str.find_first_of(keyChar, end + 1); + embeddedQuote = true; + } + if(end != std::string::npos) { + output.push_back(str.substr(1, end - 1)); + if(end + 2 < str.size()) { + str = str.substr(end + 2); + } else { + str.clear(); + } + + } else { + output.push_back(str.substr(1)); + str = ""; + } + } else { + auto it = std::find_if(std::begin(str), std::end(str), find_ws); + if(it != std::end(str)) { + std::string value = std::string(str.begin(), it); + output.push_back(value); + str = std::string(it + 1, str.end()); + } else { + output.push_back(str); + str = ""; + } + } + // transform any embedded quotes into the regular character + if(embeddedQuote) { + output.back() = find_and_replace(output.back(), std::string("\\") + keyChar, std::string(1, keyChar)); + embeddedQuote = false; + } + trim(str); + } + return output; +} + +/// This function detects an equal or colon followed by an escaped quote after an argument +/// then modifies the string to replace the equality with a space. This is needed +/// to allow the split up function to work properly and is intended to be used with the find_and_modify function +/// the return value is the offset+1 which is required by the find_and_modify function. +inline std::size_t escape_detect(std::string &str, std::size_t offset) { + auto next = str[offset + 1]; + if((next == '\"') || (next == '\'') || (next == '`')) { + auto astart = str.find_last_of("-/ \"\'`", offset - 1); + if(astart != std::string::npos) { + if(str[astart] == ((str[offset] == '=') ? '-' : '/')) + str[offset] = ' '; // interpret this as a space so the split_up works properly + } + } + return offset + 1; +} + +/// Add quotes if the string contains spaces +inline std::string &add_quotes_if_needed(std::string &str) { + if((str.front() != '"' && str.front() != '\'') || str.front() != str.back()) { + char quote = str.find('"') < str.find('\'') ? '\'' : '"'; + if(str.find(' ') != std::string::npos) { + str.insert(0, 1, quote); + str.append(1, quote); + } + } + return str; +} + +} // namespace detail + + + + +// Use one of these on all error classes. +// These are temporary and are undef'd at the end of this file. +#define CLI11_ERROR_DEF(parent, name) \ + protected: \ + name(std::string ename, std::string msg, int exit_code) : parent(std::move(ename), std::move(msg), exit_code) {} \ + name(std::string ename, std::string msg, ExitCodes exit_code) \ + : parent(std::move(ename), std::move(msg), exit_code) {} \ + \ + public: \ + name(std::string msg, ExitCodes exit_code) : parent(#name, std::move(msg), exit_code) {} \ + name(std::string msg, int exit_code) : parent(#name, std::move(msg), exit_code) {} + +// This is added after the one above if a class is used directly and builds its own message +#define CLI11_ERROR_SIMPLE(name) \ + explicit name(std::string msg) : name(#name, msg, ExitCodes::name) {} + +/// These codes are part of every error in CLI. They can be obtained from e using e.exit_code or as a quick shortcut, +/// int values from e.get_error_code(). +enum class ExitCodes { + Success = 0, + IncorrectConstruction = 100, + BadNameString, + OptionAlreadyAdded, + FileError, + ConversionError, + ValidationError, + RequiredError, + RequiresError, + ExcludesError, + ExtrasError, + ConfigError, + InvalidError, + HorribleError, + OptionNotFound, + ArgumentMismatch, + BaseClass = 127 +}; + +// Error definitions + +/// @defgroup error_group Errors +/// @brief Errors thrown by CLI11 +/// +/// These are the errors that can be thrown. Some of them, like CLI::Success, are not really errors. +/// @{ + +/// All errors derive from this one +class Error : public std::runtime_error { + int actual_exit_code; + std::string error_name{"Error"}; + + public: + int get_exit_code() const { return actual_exit_code; } + + std::string get_name() const { return error_name; } + + Error(std::string name, std::string msg, int exit_code = static_cast(ExitCodes::BaseClass)) + : runtime_error(msg), actual_exit_code(exit_code), error_name(std::move(name)) {} + + Error(std::string name, std::string msg, ExitCodes exit_code) : Error(name, msg, static_cast(exit_code)) {} +}; + +// Note: Using Error::Error constructors does not work on GCC 4.7 + +/// Construction errors (not in parsing) +class ConstructionError : public Error { + CLI11_ERROR_DEF(Error, ConstructionError) +}; + +/// Thrown when an option is set to conflicting values (non-vector and multi args, for example) +class IncorrectConstruction : public ConstructionError { + CLI11_ERROR_DEF(ConstructionError, IncorrectConstruction) + CLI11_ERROR_SIMPLE(IncorrectConstruction) + static IncorrectConstruction PositionalFlag(std::string name) { + return IncorrectConstruction(name + ": Flags cannot be positional"); + } + static IncorrectConstruction Set0Opt(std::string name) { + return IncorrectConstruction(name + ": Cannot set 0 expected, use a flag instead"); + } + static IncorrectConstruction SetFlag(std::string name) { + return IncorrectConstruction(name + ": Cannot set an expected number for flags"); + } + static IncorrectConstruction ChangeNotVector(std::string name) { + return IncorrectConstruction(name + ": You can only change the expected arguments for vectors"); + } + static IncorrectConstruction AfterMultiOpt(std::string name) { + return IncorrectConstruction( + name + ": You can't change expected arguments after you've changed the multi option policy!"); + } + static IncorrectConstruction MissingOption(std::string name) { + return IncorrectConstruction("Option " + name + " is not defined"); + } + static IncorrectConstruction MultiOptionPolicy(std::string name) { + return IncorrectConstruction(name + ": multi_option_policy only works for flags and exact value options"); + } +}; + +/// Thrown on construction of a bad name +class BadNameString : public ConstructionError { + CLI11_ERROR_DEF(ConstructionError, BadNameString) + CLI11_ERROR_SIMPLE(BadNameString) + static BadNameString OneCharName(std::string name) { return BadNameString("Invalid one char name: " + name); } + static BadNameString BadLongName(std::string name) { return BadNameString("Bad long name: " + name); } + static BadNameString DashesOnly(std::string name) { + return BadNameString("Must have a name, not just dashes: " + name); + } + static BadNameString MultiPositionalNames(std::string name) { + return BadNameString("Only one positional name allowed, remove: " + name); + } +}; + +/// Thrown when an option already exists +class OptionAlreadyAdded : public ConstructionError { + CLI11_ERROR_DEF(ConstructionError, OptionAlreadyAdded) + explicit OptionAlreadyAdded(std::string name) + : OptionAlreadyAdded(name + " is already added", ExitCodes::OptionAlreadyAdded) {} + static OptionAlreadyAdded Requires(std::string name, std::string other) { + return OptionAlreadyAdded(name + " requires " + other, ExitCodes::OptionAlreadyAdded); + } + static OptionAlreadyAdded Excludes(std::string name, std::string other) { + return OptionAlreadyAdded(name + " excludes " + other, ExitCodes::OptionAlreadyAdded); + } +}; + +// Parsing errors + +/// Anything that can error in Parse +class ParseError : public Error { + CLI11_ERROR_DEF(Error, ParseError) +}; + +// Not really "errors" + +/// This is a successful completion on parsing, supposed to exit +class Success : public ParseError { + CLI11_ERROR_DEF(ParseError, Success) + Success() : Success("Successfully completed, should be caught and quit", ExitCodes::Success) {} +}; + +/// -h or --help on command line +class CallForHelp : public Success { + CLI11_ERROR_DEF(Success, CallForHelp) + CallForHelp() : CallForHelp("This should be caught in your main function, see examples", ExitCodes::Success) {} +}; + +/// Usually something like --help-all on command line +class CallForAllHelp : public Success { + CLI11_ERROR_DEF(Success, CallForAllHelp) + CallForAllHelp() + : CallForAllHelp("This should be caught in your main function, see examples", ExitCodes::Success) {} +}; + +/// -v or --version on command line +class CallForVersion : public Success { + CLI11_ERROR_DEF(Success, CallForVersion) + CallForVersion() + : CallForVersion("This should be caught in your main function, see examples", ExitCodes::Success) {} +}; + +/// Does not output a diagnostic in CLI11_PARSE, but allows main() to return with a specific error code. +class RuntimeError : public ParseError { + CLI11_ERROR_DEF(ParseError, RuntimeError) + explicit RuntimeError(int exit_code = 1) : RuntimeError("Runtime error", exit_code) {} +}; + +/// Thrown when parsing an INI file and it is missing +class FileError : public ParseError { + CLI11_ERROR_DEF(ParseError, FileError) + CLI11_ERROR_SIMPLE(FileError) + static FileError Missing(std::string name) { return FileError(name + " was not readable (missing?)"); } +}; + +/// Thrown when conversion call back fails, such as when an int fails to coerce to a string +class ConversionError : public ParseError { + CLI11_ERROR_DEF(ParseError, ConversionError) + CLI11_ERROR_SIMPLE(ConversionError) + ConversionError(std::string member, std::string name) + : ConversionError("The value " + member + " is not an allowed value for " + name) {} + ConversionError(std::string name, std::vector results) + : ConversionError("Could not convert: " + name + " = " + detail::join(results)) {} + static ConversionError TooManyInputsFlag(std::string name) { + return ConversionError(name + ": too many inputs for a flag"); + } + static ConversionError TrueFalse(std::string name) { + return ConversionError(name + ": Should be true/false or a number"); + } +}; + +/// Thrown when validation of results fails +class ValidationError : public ParseError { + CLI11_ERROR_DEF(ParseError, ValidationError) + CLI11_ERROR_SIMPLE(ValidationError) + explicit ValidationError(std::string name, std::string msg) : ValidationError(name + ": " + msg) {} +}; + +/// Thrown when a required option is missing +class RequiredError : public ParseError { + CLI11_ERROR_DEF(ParseError, RequiredError) + explicit RequiredError(std::string name) : RequiredError(name + " is required", ExitCodes::RequiredError) {} + static RequiredError Subcommand(std::size_t min_subcom) { + if(min_subcom == 1) { + return RequiredError("A subcommand"); + } + return RequiredError("Requires at least " + std::to_string(min_subcom) + " subcommands", + ExitCodes::RequiredError); + } + static RequiredError + Option(std::size_t min_option, std::size_t max_option, std::size_t used, const std::string &option_list) { + if((min_option == 1) && (max_option == 1) && (used == 0)) + return RequiredError("Exactly 1 option from [" + option_list + "]"); + if((min_option == 1) && (max_option == 1) && (used > 1)) { + return RequiredError("Exactly 1 option from [" + option_list + "] is required and " + std::to_string(used) + + " were given", + ExitCodes::RequiredError); + } + if((min_option == 1) && (used == 0)) + return RequiredError("At least 1 option from [" + option_list + "]"); + if(used < min_option) { + return RequiredError("Requires at least " + std::to_string(min_option) + " options used and only " + + std::to_string(used) + "were given from [" + option_list + "]", + ExitCodes::RequiredError); + } + if(max_option == 1) + return RequiredError("Requires at most 1 options be given from [" + option_list + "]", + ExitCodes::RequiredError); + + return RequiredError("Requires at most " + std::to_string(max_option) + " options be used and " + + std::to_string(used) + "were given from [" + option_list + "]", + ExitCodes::RequiredError); + } +}; + +/// Thrown when the wrong number of arguments has been received +class ArgumentMismatch : public ParseError { + CLI11_ERROR_DEF(ParseError, ArgumentMismatch) + CLI11_ERROR_SIMPLE(ArgumentMismatch) + ArgumentMismatch(std::string name, int expected, std::size_t received) + : ArgumentMismatch(expected > 0 ? ("Expected exactly " + std::to_string(expected) + " arguments to " + name + + ", got " + std::to_string(received)) + : ("Expected at least " + std::to_string(-expected) + " arguments to " + name + + ", got " + std::to_string(received)), + ExitCodes::ArgumentMismatch) {} + + static ArgumentMismatch AtLeast(std::string name, int num, std::size_t received) { + return ArgumentMismatch(name + ": At least " + std::to_string(num) + " required but received " + + std::to_string(received)); + } + static ArgumentMismatch AtMost(std::string name, int num, std::size_t received) { + return ArgumentMismatch(name + ": At Most " + std::to_string(num) + " required but received " + + std::to_string(received)); + } + static ArgumentMismatch TypedAtLeast(std::string name, int num, std::string type) { + return ArgumentMismatch(name + ": " + std::to_string(num) + " required " + type + " missing"); + } + static ArgumentMismatch FlagOverride(std::string name) { + return ArgumentMismatch(name + " was given a disallowed flag override"); + } + static ArgumentMismatch PartialType(std::string name, int num, std::string type) { + return ArgumentMismatch(name + ": " + type + " only partially specified: " + std::to_string(num) + + " required for each element"); + } +}; + +/// Thrown when a requires option is missing +class RequiresError : public ParseError { + CLI11_ERROR_DEF(ParseError, RequiresError) + RequiresError(std::string curname, std::string subname) + : RequiresError(curname + " requires " + subname, ExitCodes::RequiresError) {} +}; + +/// Thrown when an excludes option is present +class ExcludesError : public ParseError { + CLI11_ERROR_DEF(ParseError, ExcludesError) + ExcludesError(std::string curname, std::string subname) + : ExcludesError(curname + " excludes " + subname, ExitCodes::ExcludesError) {} +}; + +/// Thrown when too many positionals or options are found +class ExtrasError : public ParseError { + CLI11_ERROR_DEF(ParseError, ExtrasError) + explicit ExtrasError(std::vector args) + : ExtrasError((args.size() > 1 ? "The following arguments were not expected: " + : "The following argument was not expected: ") + + detail::rjoin(args, " "), + ExitCodes::ExtrasError) {} + ExtrasError(const std::string &name, std::vector args) + : ExtrasError(name, + (args.size() > 1 ? "The following arguments were not expected: " + : "The following argument was not expected: ") + + detail::rjoin(args, " "), + ExitCodes::ExtrasError) {} +}; + +/// Thrown when extra values are found in an INI file +class ConfigError : public ParseError { + CLI11_ERROR_DEF(ParseError, ConfigError) + CLI11_ERROR_SIMPLE(ConfigError) + static ConfigError Extras(std::string item) { return ConfigError("INI was not able to parse " + item); } + static ConfigError NotConfigurable(std::string item) { + return ConfigError(item + ": This option is not allowed in a configuration file"); + } +}; + +/// Thrown when validation fails before parsing +class InvalidError : public ParseError { + CLI11_ERROR_DEF(ParseError, InvalidError) + explicit InvalidError(std::string name) + : InvalidError(name + ": Too many positional arguments with unlimited expected args", ExitCodes::InvalidError) { + } +}; + +/// This is just a safety check to verify selection and parsing match - you should not ever see it +/// Strings are directly added to this error, but again, it should never be seen. +class HorribleError : public ParseError { + CLI11_ERROR_DEF(ParseError, HorribleError) + CLI11_ERROR_SIMPLE(HorribleError) +}; + +// After parsing + +/// Thrown when counting a non-existent option +class OptionNotFound : public Error { + CLI11_ERROR_DEF(Error, OptionNotFound) + explicit OptionNotFound(std::string name) : OptionNotFound(name + " not found", ExitCodes::OptionNotFound) {} +}; + +#undef CLI11_ERROR_DEF +#undef CLI11_ERROR_SIMPLE + +/// @} + + + + +// Type tools + +// Utilities for type enabling +namespace detail { +// Based generally on https://rmf.io/cxx11/almost-static-if +/// Simple empty scoped class +enum class enabler {}; + +/// An instance to use in EnableIf +constexpr enabler dummy = {}; +} // namespace detail + +/// A copy of enable_if_t from C++14, compatible with C++11. +/// +/// We could check to see if C++14 is being used, but it does not hurt to redefine this +/// (even Google does this: https://github.com/google/skia/blob/main/include/private/SkTLogic.h) +/// It is not in the std namespace anyway, so no harm done. +template using enable_if_t = typename std::enable_if::type; + +/// A copy of std::void_t from C++17 (helper for C++11 and C++14) +template struct make_void { using type = void; }; + +/// A copy of std::void_t from C++17 - same reasoning as enable_if_t, it does not hurt to redefine +template using void_t = typename make_void::type; + +/// A copy of std::conditional_t from C++14 - same reasoning as enable_if_t, it does not hurt to redefine +template using conditional_t = typename std::conditional::type; + +/// Check to see if something is bool (fail check by default) +template struct is_bool : std::false_type {}; + +/// Check to see if something is bool (true if actually a bool) +template <> struct is_bool : std::true_type {}; + +/// Check to see if something is a shared pointer +template struct is_shared_ptr : std::false_type {}; + +/// Check to see if something is a shared pointer (True if really a shared pointer) +template struct is_shared_ptr> : std::true_type {}; + +/// Check to see if something is a shared pointer (True if really a shared pointer) +template struct is_shared_ptr> : std::true_type {}; + +/// Check to see if something is copyable pointer +template struct is_copyable_ptr { + static bool const value = is_shared_ptr::value || std::is_pointer::value; +}; + +/// This can be specialized to override the type deduction for IsMember. +template struct IsMemberType { using type = T; }; + +/// The main custom type needed here is const char * should be a string. +template <> struct IsMemberType { using type = std::string; }; + +namespace detail { + +// These are utilities for IsMember and other transforming objects + +/// Handy helper to access the element_type generically. This is not part of is_copyable_ptr because it requires that +/// pointer_traits be valid. + +/// not a pointer +template struct element_type { using type = T; }; + +template struct element_type::value>::type> { + using type = typename std::pointer_traits::element_type; +}; + +/// Combination of the element type and value type - remove pointer (including smart pointers) and get the value_type of +/// the container +template struct element_value_type { using type = typename element_type::type::value_type; }; + +/// Adaptor for set-like structure: This just wraps a normal container in a few utilities that do almost nothing. +template struct pair_adaptor : std::false_type { + using value_type = typename T::value_type; + using first_type = typename std::remove_const::type; + using second_type = typename std::remove_const::type; + + /// Get the first value (really just the underlying value) + template static auto first(Q &&pair_value) -> decltype(std::forward(pair_value)) { + return std::forward(pair_value); + } + /// Get the second value (really just the underlying value) + template static auto second(Q &&pair_value) -> decltype(std::forward(pair_value)) { + return std::forward(pair_value); + } +}; + +/// Adaptor for map-like structure (true version, must have key_type and mapped_type). +/// This wraps a mapped container in a few utilities access it in a general way. +template +struct pair_adaptor< + T, + conditional_t, void>> + : std::true_type { + using value_type = typename T::value_type; + using first_type = typename std::remove_const::type; + using second_type = typename std::remove_const::type; + + /// Get the first value (really just the underlying value) + template static auto first(Q &&pair_value) -> decltype(std::get<0>(std::forward(pair_value))) { + return std::get<0>(std::forward(pair_value)); + } + /// Get the second value (really just the underlying value) + template static auto second(Q &&pair_value) -> decltype(std::get<1>(std::forward(pair_value))) { + return std::get<1>(std::forward(pair_value)); + } +}; + +// Warning is suppressed due to "bug" in gcc<5.0 and gcc 7.0 with c++17 enabled that generates a Wnarrowing warning +// in the unevaluated context even if the function that was using this wasn't used. The standard says narrowing in +// brace initialization shouldn't be allowed but for backwards compatibility gcc allows it in some contexts. It is a +// little fuzzy what happens in template constructs and I think that was something GCC took a little while to work out. +// But regardless some versions of gcc generate a warning when they shouldn't from the following code so that should be +// suppressed +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnarrowing" +#endif +// check for constructibility from a specific type and copy assignable used in the parse detection +template class is_direct_constructible { + template + static auto test(int, std::true_type) -> decltype( +// NVCC warns about narrowing conversions here +#ifdef __CUDACC__ +#pragma diag_suppress 2361 +#endif + TT { std::declval() } +#ifdef __CUDACC__ +#pragma diag_default 2361 +#endif + , + std::is_move_assignable()); + + template static auto test(int, std::false_type) -> std::false_type; + + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0, typename std::is_constructible::type()))::value; +}; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + +// Check for output streamability +// Based on https://stackoverflow.com/questions/22758291/how-can-i-detect-if-a-type-can-be-streamed-to-an-stdostream + +template class is_ostreamable { + template + static auto test(int) -> decltype(std::declval() << std::declval(), std::true_type()); + + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0))::value; +}; + +/// Check for input streamability +template class is_istreamable { + template + static auto test(int) -> decltype(std::declval() >> std::declval(), std::true_type()); + + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0))::value; +}; + +/// Check for complex +template class is_complex { + template + static auto test(int) -> decltype(std::declval().real(), std::declval().imag(), std::true_type()); + + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0))::value; +}; + +/// Templated operation to get a value from a stream +template ::value, detail::enabler> = detail::dummy> +bool from_stream(const std::string &istring, T &obj) { + std::istringstream is; + is.str(istring); + is >> obj; + return !is.fail() && !is.rdbuf()->in_avail(); +} + +template ::value, detail::enabler> = detail::dummy> +bool from_stream(const std::string & /*istring*/, T & /*obj*/) { + return false; +} + +// check to see if an object is a mutable container (fail by default) +template struct is_mutable_container : std::false_type {}; + +/// type trait to test if a type is a mutable container meaning it has a value_type, it has an iterator, a clear, and +/// end methods and an insert function. And for our purposes we exclude std::string and types that can be constructed +/// from a std::string +template +struct is_mutable_container< + T, + conditional_t().end()), + decltype(std::declval().clear()), + decltype(std::declval().insert(std::declval().end())>(), + std::declval()))>, + void>> + : public conditional_t::value, std::false_type, std::true_type> {}; + +// check to see if an object is a mutable container (fail by default) +template struct is_readable_container : std::false_type {}; + +/// type trait to test if a type is a container meaning it has a value_type, it has an iterator, a clear, and an end +/// methods and an insert function. And for our purposes we exclude std::string and types that can be constructed from +/// a std::string +template +struct is_readable_container< + T, + conditional_t().end()), decltype(std::declval().begin())>, void>> + : public std::true_type {}; + +// check to see if an object is a wrapper (fail by default) +template struct is_wrapper : std::false_type {}; + +// check if an object is a wrapper (it has a value_type defined) +template +struct is_wrapper, void>> : public std::true_type {}; + +// Check for tuple like types, as in classes with a tuple_size type trait +template class is_tuple_like { + template + // static auto test(int) + // -> decltype(std::conditional<(std::tuple_size::value > 0), std::true_type, std::false_type>::type()); + static auto test(int) -> decltype(std::tuple_size::type>::value, std::true_type{}); + template static auto test(...) -> std::false_type; + + public: + static constexpr bool value = decltype(test(0))::value; +}; + +/// Convert an object to a string (directly forward if this can become a string) +template ::value, detail::enabler> = detail::dummy> +auto to_string(T &&value) -> decltype(std::forward(value)) { + return std::forward(value); +} + +/// Construct a string from the object +template ::value && !std::is_convertible::value, + detail::enabler> = detail::dummy> +std::string to_string(const T &value) { + return std::string(value); +} + +/// Convert an object to a string (streaming must be supported for that type) +template ::value && !std::is_constructible::value && + is_ostreamable::value, + detail::enabler> = detail::dummy> +std::string to_string(T &&value) { + std::stringstream stream; + stream << value; + return stream.str(); +} + +/// If conversion is not supported, return an empty string (streaming is not supported for that type) +template ::value && !is_ostreamable::value && + !is_readable_container::type>::value, + detail::enabler> = detail::dummy> +std::string to_string(T &&) { + return std::string{}; +} + +/// convert a readable container to a string +template ::value && !is_ostreamable::value && + is_readable_container::value, + detail::enabler> = detail::dummy> +std::string to_string(T &&variable) { + auto cval = variable.begin(); + auto end = variable.end(); + if(cval == end) { + return std::string("{}"); + } + std::vector defaults; + while(cval != end) { + defaults.emplace_back(CLI::detail::to_string(*cval)); + ++cval; + } + return std::string("[" + detail::join(defaults) + "]"); +} + +/// special template overload +template ::value, detail::enabler> = detail::dummy> +auto checked_to_string(T &&value) -> decltype(to_string(std::forward(value))) { + return to_string(std::forward(value)); +} + +/// special template overload +template ::value, detail::enabler> = detail::dummy> +std::string checked_to_string(T &&) { + return std::string{}; +} +/// get a string as a convertible value for arithmetic types +template ::value, detail::enabler> = detail::dummy> +std::string value_string(const T &value) { + return std::to_string(value); +} +/// get a string as a convertible value for enumerations +template ::value, detail::enabler> = detail::dummy> +std::string value_string(const T &value) { + return std::to_string(static_cast::type>(value)); +} +/// for other types just use the regular to_string function +template ::value && !std::is_arithmetic::value, detail::enabler> = detail::dummy> +auto value_string(const T &value) -> decltype(to_string(value)) { + return to_string(value); +} + +/// template to get the underlying value type if it exists or use a default +template struct wrapped_type { using type = def; }; + +/// Type size for regular object types that do not look like a tuple +template struct wrapped_type::value>::type> { + using type = typename T::value_type; +}; + +/// This will only trigger for actual void type +template struct type_count_base { static const int value{0}; }; + +/// Type size for regular object types that do not look like a tuple +template +struct type_count_base::value && !is_mutable_container::value && + !std::is_void::value>::type> { + static constexpr int value{1}; +}; + +/// the base tuple size +template +struct type_count_base::value && !is_mutable_container::value>::type> { + static constexpr int value{std::tuple_size::value}; +}; + +/// Type count base for containers is the type_count_base of the individual element +template struct type_count_base::value>::type> { + static constexpr int value{type_count_base::value}; +}; + +/// Set of overloads to get the type size of an object + +/// forward declare the subtype_count structure +template struct subtype_count; + +/// forward declare the subtype_count_min structure +template struct subtype_count_min; + +/// This will only trigger for actual void type +template struct type_count { static const int value{0}; }; + +/// Type size for regular object types that do not look like a tuple +template +struct type_count::value && !is_tuple_like::value && !is_complex::value && + !std::is_void::value>::type> { + static constexpr int value{1}; +}; + +/// Type size for complex since it sometimes looks like a wrapper +template struct type_count::value>::type> { + static constexpr int value{2}; +}; + +/// Type size of types that are wrappers,except complex and tuples(which can also be wrappers sometimes) +template struct type_count::value>::type> { + static constexpr int value{subtype_count::value}; +}; + +/// Type size of types that are wrappers,except containers complex and tuples(which can also be wrappers sometimes) +template +struct type_count::value && !is_complex::value && !is_tuple_like::value && + !is_mutable_container::value>::type> { + static constexpr int value{type_count::value}; +}; + +/// 0 if the index > tuple size +template +constexpr typename std::enable_if::value, int>::type tuple_type_size() { + return 0; +} + +/// Recursively generate the tuple type name +template + constexpr typename std::enable_if < I::value, int>::type tuple_type_size() { + return subtype_count::type>::value + tuple_type_size(); +} + +/// Get the type size of the sum of type sizes for all the individual tuple types +template struct type_count::value>::type> { + static constexpr int value{tuple_type_size()}; +}; + +/// definition of subtype count +template struct subtype_count { + static constexpr int value{is_mutable_container::value ? expected_max_vector_size : type_count::value}; +}; + +/// This will only trigger for actual void type +template struct type_count_min { static const int value{0}; }; + +/// Type size for regular object types that do not look like a tuple +template +struct type_count_min< + T, + typename std::enable_if::value && !is_tuple_like::value && !is_wrapper::value && + !is_complex::value && !std::is_void::value>::type> { + static constexpr int value{type_count::value}; +}; + +/// Type size for complex since it sometimes looks like a wrapper +template struct type_count_min::value>::type> { + static constexpr int value{1}; +}; + +/// Type size min of types that are wrappers,except complex and tuples(which can also be wrappers sometimes) +template +struct type_count_min< + T, + typename std::enable_if::value && !is_complex::value && !is_tuple_like::value>::type> { + static constexpr int value{subtype_count_min::value}; +}; + +/// 0 if the index > tuple size +template +constexpr typename std::enable_if::value, int>::type tuple_type_size_min() { + return 0; +} + +/// Recursively generate the tuple type name +template + constexpr typename std::enable_if < I::value, int>::type tuple_type_size_min() { + return subtype_count_min::type>::value + tuple_type_size_min(); +} + +/// Get the type size of the sum of type sizes for all the individual tuple types +template struct type_count_min::value>::type> { + static constexpr int value{tuple_type_size_min()}; +}; + +/// definition of subtype count +template struct subtype_count_min { + static constexpr int value{is_mutable_container::value + ? ((type_count::value < expected_max_vector_size) ? type_count::value : 0) + : type_count_min::value}; +}; + +/// This will only trigger for actual void type +template struct expected_count { static const int value{0}; }; + +/// For most types the number of expected items is 1 +template +struct expected_count::value && !is_wrapper::value && + !std::is_void::value>::type> { + static constexpr int value{1}; +}; +/// number of expected items in a vector +template struct expected_count::value>::type> { + static constexpr int value{expected_max_vector_size}; +}; + +/// number of expected items in a vector +template +struct expected_count::value && is_wrapper::value>::type> { + static constexpr int value{expected_count::value}; +}; + +// Enumeration of the different supported categorizations of objects +enum class object_category : int { + char_value = 1, + integral_value = 2, + unsigned_integral = 4, + enumeration = 6, + boolean_value = 8, + floating_point = 10, + number_constructible = 12, + double_constructible = 14, + integer_constructible = 16, + // string like types + string_assignable = 23, + string_constructible = 24, + other = 45, + // special wrapper or container types + wrapper_value = 50, + complex_number = 60, + tuple_value = 70, + container_value = 80, + +}; + +/// Set of overloads to classify an object according to type + +/// some type that is not otherwise recognized +template struct classify_object { + static constexpr object_category value{object_category::other}; +}; + +/// Signed integers +template +struct classify_object< + T, + typename std::enable_if::value && !std::is_same::value && std::is_signed::value && + !is_bool::value && !std::is_enum::value>::type> { + static constexpr object_category value{object_category::integral_value}; +}; + +/// Unsigned integers +template +struct classify_object::value && std::is_unsigned::value && + !std::is_same::value && !is_bool::value>::type> { + static constexpr object_category value{object_category::unsigned_integral}; +}; + +/// single character values +template +struct classify_object::value && !std::is_enum::value>::type> { + static constexpr object_category value{object_category::char_value}; +}; + +/// Boolean values +template struct classify_object::value>::type> { + static constexpr object_category value{object_category::boolean_value}; +}; + +/// Floats +template struct classify_object::value>::type> { + static constexpr object_category value{object_category::floating_point}; +}; + +/// String and similar direct assignment +template +struct classify_object::value && !std::is_integral::value && + std::is_assignable::value>::type> { + static constexpr object_category value{object_category::string_assignable}; +}; + +/// String and similar constructible and copy assignment +template +struct classify_object< + T, + typename std::enable_if::value && !std::is_integral::value && + !std::is_assignable::value && (type_count::value == 1) && + std::is_constructible::value>::type> { + static constexpr object_category value{object_category::string_constructible}; +}; + +/// Enumerations +template struct classify_object::value>::type> { + static constexpr object_category value{object_category::enumeration}; +}; + +template struct classify_object::value>::type> { + static constexpr object_category value{object_category::complex_number}; +}; + +/// Handy helper to contain a bunch of checks that rule out many common types (integers, string like, floating point, +/// vectors, and enumerations +template struct uncommon_type { + using type = typename std::conditional::value && !std::is_integral::value && + !std::is_assignable::value && + !std::is_constructible::value && !is_complex::value && + !is_mutable_container::value && !std::is_enum::value, + std::true_type, + std::false_type>::type; + static constexpr bool value = type::value; +}; + +/// wrapper type +template +struct classify_object::value && is_wrapper::value && + !is_tuple_like::value && uncommon_type::value)>::type> { + static constexpr object_category value{object_category::wrapper_value}; +}; + +/// Assignable from double or int +template +struct classify_object::value && type_count::value == 1 && + !is_wrapper::value && is_direct_constructible::value && + is_direct_constructible::value>::type> { + static constexpr object_category value{object_category::number_constructible}; +}; + +/// Assignable from int +template +struct classify_object::value && type_count::value == 1 && + !is_wrapper::value && !is_direct_constructible::value && + is_direct_constructible::value>::type> { + static constexpr object_category value{object_category::integer_constructible}; +}; + +/// Assignable from double +template +struct classify_object::value && type_count::value == 1 && + !is_wrapper::value && is_direct_constructible::value && + !is_direct_constructible::value>::type> { + static constexpr object_category value{object_category::double_constructible}; +}; + +/// Tuple type +template +struct classify_object< + T, + typename std::enable_if::value && + ((type_count::value >= 2 && !is_wrapper::value) || + (uncommon_type::value && !is_direct_constructible::value && + !is_direct_constructible::value))>::type> { + static constexpr object_category value{object_category::tuple_value}; + // the condition on this class requires it be like a tuple, but on some compilers (like Xcode) tuples can be + // constructed from just the first element so tuples of can be constructed from a string, which + // could lead to issues so there are two variants of the condition, the first isolates things with a type size >=2 + // mainly to get tuples on Xcode with the exception of wrappers, the second is the main one and just separating out + // those cases that are caught by other object classifications +}; + +/// container type +template struct classify_object::value>::type> { + static constexpr object_category value{object_category::container_value}; +}; + +// Type name print + +/// Was going to be based on +/// http://stackoverflow.com/questions/1055452/c-get-name-of-type-in-template +/// But this is cleaner and works better in this case + +template ::value == object_category::char_value, detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "CHAR"; +} + +template ::value == object_category::integral_value || + classify_object::value == object_category::integer_constructible, + detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "INT"; +} + +template ::value == object_category::unsigned_integral, detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "UINT"; +} + +template ::value == object_category::floating_point || + classify_object::value == object_category::number_constructible || + classify_object::value == object_category::double_constructible, + detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "FLOAT"; +} + +/// Print name for enumeration types +template ::value == object_category::enumeration, detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "ENUM"; +} + +/// Print name for enumeration types +template ::value == object_category::boolean_value, detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "BOOLEAN"; +} + +/// Print name for enumeration types +template ::value == object_category::complex_number, detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "COMPLEX"; +} + +/// Print for all other types +template ::value >= object_category::string_assignable && + classify_object::value <= object_category::other, + detail::enabler> = detail::dummy> +constexpr const char *type_name() { + return "TEXT"; +} +/// typename for tuple value +template ::value == object_category::tuple_value && type_count_base::value >= 2, + detail::enabler> = detail::dummy> +std::string type_name(); // forward declaration + +/// Generate type name for a wrapper or container value +template ::value == object_category::container_value || + classify_object::value == object_category::wrapper_value, + detail::enabler> = detail::dummy> +std::string type_name(); // forward declaration + +/// Print name for single element tuple types +template ::value == object_category::tuple_value && type_count_base::value == 1, + detail::enabler> = detail::dummy> +inline std::string type_name() { + return type_name::type>::type>(); +} + +/// Empty string if the index > tuple size +template +inline typename std::enable_if::value, std::string>::type tuple_name() { + return std::string{}; +} + +/// Recursively generate the tuple type name +template +inline typename std::enable_if<(I < type_count_base::value), std::string>::type tuple_name() { + std::string str = std::string(type_name::type>::type>()) + + ',' + tuple_name(); + if(str.back() == ',') + str.pop_back(); + return str; +} + +/// Print type name for tuples with 2 or more elements +template ::value == object_category::tuple_value && type_count_base::value >= 2, + detail::enabler>> +inline std::string type_name() { + auto tname = std::string(1, '[') + tuple_name(); + tname.push_back(']'); + return tname; +} + +/// get the type name for a type that has a value_type member +template ::value == object_category::container_value || + classify_object::value == object_category::wrapper_value, + detail::enabler>> +inline std::string type_name() { + return type_name(); +} + +// Lexical cast + +/// Convert to an unsigned integral +template ::value, detail::enabler> = detail::dummy> +bool integral_conversion(const std::string &input, T &output) noexcept { + if(input.empty()) { + return false; + } + char *val = nullptr; + std::uint64_t output_ll = std::strtoull(input.c_str(), &val, 0); + output = static_cast(output_ll); + if(val == (input.c_str() + input.size()) && static_cast(output) == output_ll) { + return true; + } + val = nullptr; + std::int64_t output_sll = std::strtoll(input.c_str(), &val, 0); + if(val == (input.c_str() + input.size())) { + output = (output_sll < 0) ? static_cast(0) : static_cast(output_sll); + return (static_cast(output) == output_sll); + } + return false; +} + +/// Convert to a signed integral +template ::value, detail::enabler> = detail::dummy> +bool integral_conversion(const std::string &input, T &output) noexcept { + if(input.empty()) { + return false; + } + char *val = nullptr; + std::int64_t output_ll = std::strtoll(input.c_str(), &val, 0); + output = static_cast(output_ll); + if(val == (input.c_str() + input.size()) && static_cast(output) == output_ll) { + return true; + } + if(input == "true") { + // this is to deal with a few oddities with flags and wrapper int types + output = static_cast(1); + return true; + } + return false; +} + +/// Convert a flag into an integer value typically binary flags +inline std::int64_t to_flag_value(std::string val) { + static const std::string trueString("true"); + static const std::string falseString("false"); + if(val == trueString) { + return 1; + } + if(val == falseString) { + return -1; + } + val = detail::to_lower(val); + std::int64_t ret; + if(val.size() == 1) { + if(val[0] >= '1' && val[0] <= '9') { + return (static_cast(val[0]) - '0'); + } + switch(val[0]) { + case '0': + case 'f': + case 'n': + case '-': + ret = -1; + break; + case 't': + case 'y': + case '+': + ret = 1; + break; + default: + throw std::invalid_argument("unrecognized character"); + } + return ret; + } + if(val == trueString || val == "on" || val == "yes" || val == "enable") { + ret = 1; + } else if(val == falseString || val == "off" || val == "no" || val == "disable") { + ret = -1; + } else { + ret = std::stoll(val); + } + return ret; +} + +/// Integer conversion +template ::value == object_category::integral_value || + classify_object::value == object_category::unsigned_integral, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + return integral_conversion(input, output); +} + +/// char values +template ::value == object_category::char_value, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + if(input.size() == 1) { + output = static_cast(input[0]); + return true; + } + return integral_conversion(input, output); +} + +/// Boolean values +template ::value == object_category::boolean_value, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + try { + auto out = to_flag_value(input); + output = (out > 0); + return true; + } catch(const std::invalid_argument &) { + return false; + } catch(const std::out_of_range &) { + // if the number is out of the range of a 64 bit value then it is still a number and for this purpose is still + // valid all we care about the sign + output = (input[0] != '-'); + return true; + } +} + +/// Floats +template ::value == object_category::floating_point, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + if(input.empty()) { + return false; + } + char *val = nullptr; + auto output_ld = std::strtold(input.c_str(), &val); + output = static_cast(output_ld); + return val == (input.c_str() + input.size()); +} + +/// complex +template ::value == object_category::complex_number, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + using XC = typename wrapped_type::type; + XC x{0.0}, y{0.0}; + auto str1 = input; + bool worked = false; + auto nloc = str1.find_last_of("+-"); + if(nloc != std::string::npos && nloc > 0) { + worked = detail::lexical_cast(str1.substr(0, nloc), x); + str1 = str1.substr(nloc); + if(str1.back() == 'i' || str1.back() == 'j') + str1.pop_back(); + worked = worked && detail::lexical_cast(str1, y); + } else { + if(str1.back() == 'i' || str1.back() == 'j') { + str1.pop_back(); + worked = detail::lexical_cast(str1, y); + x = XC{0}; + } else { + worked = detail::lexical_cast(str1, x); + y = XC{0}; + } + } + if(worked) { + output = T{x, y}; + return worked; + } + return from_stream(input, output); +} + +/// String and similar direct assignment +template ::value == object_category::string_assignable, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + output = input; + return true; +} + +/// String and similar constructible and copy assignment +template < + typename T, + enable_if_t::value == object_category::string_constructible, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + output = T(input); + return true; +} + +/// Enumerations +template ::value == object_category::enumeration, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + typename std::underlying_type::type val; + if(!integral_conversion(input, val)) { + return false; + } + output = static_cast(val); + return true; +} + +/// wrapper types +template ::value == object_category::wrapper_value && + std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + typename T::value_type val; + if(lexical_cast(input, val)) { + output = val; + return true; + } + return from_stream(input, output); +} + +template ::value == object_category::wrapper_value && + !std::is_assignable::value && std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + typename T::value_type val; + if(lexical_cast(input, val)) { + output = T{val}; + return true; + } + return from_stream(input, output); +} + +/// Assignable from double or int +template < + typename T, + enable_if_t::value == object_category::number_constructible, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + int val; + if(integral_conversion(input, val)) { + output = T(val); + return true; + } else { + double dval; + if(lexical_cast(input, dval)) { + output = T{dval}; + return true; + } + } + return from_stream(input, output); +} + +/// Assignable from int +template < + typename T, + enable_if_t::value == object_category::integer_constructible, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + int val; + if(integral_conversion(input, val)) { + output = T(val); + return true; + } + return from_stream(input, output); +} + +/// Assignable from double +template < + typename T, + enable_if_t::value == object_category::double_constructible, detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + double val; + if(lexical_cast(input, val)) { + output = T{val}; + return true; + } + return from_stream(input, output); +} + +/// Non-string convertible from an int +template ::value == object_category::other && std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + int val; + if(integral_conversion(input, val)) { +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4800) +#endif + // with Atomic this could produce a warning due to the conversion but if atomic gets here it is an old style + // so will most likely still work + output = val; +#ifdef _MSC_VER +#pragma warning(pop) +#endif + return true; + } + // LCOV_EXCL_START + // This version of cast is only used for odd cases in an older compilers the fail over + // from_stream is tested elsewhere an not relevant for coverage here + return from_stream(input, output); + // LCOV_EXCL_STOP +} + +/// Non-string parsable by a stream +template ::value == object_category::other && !std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_cast(const std::string &input, T &output) { + static_assert(is_istreamable::value, + "option object type must have a lexical cast overload or streaming input operator(>>) defined, if it " + "is convertible from another type use the add_option(...) with XC being the known type"); + return from_stream(input, output); +} + +/// Assign a value through lexical cast operations +/// Strings can be empty so we need to do a little different +template ::value && + (classify_object::value == object_category::string_assignable || + classify_object::value == object_category::string_constructible), + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + return lexical_cast(input, output); +} + +/// Assign a value through lexical cast operations +template ::value && std::is_assignable::value && + classify_object::value != object_category::string_assignable && + classify_object::value != object_category::string_constructible, + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + if(input.empty()) { + output = AssignTo{}; + return true; + } + + return lexical_cast(input, output); +} + +/// Assign a value through lexical cast operations +template ::value && !std::is_assignable::value && + classify_object::value == object_category::wrapper_value, + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + if(input.empty()) { + typename AssignTo::value_type emptyVal{}; + output = emptyVal; + return true; + } + return lexical_cast(input, output); +} + +/// Assign a value through lexical cast operations for int compatible values +/// mainly for atomic operations on some compilers +template ::value && !std::is_assignable::value && + classify_object::value != object_category::wrapper_value && + std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + if(input.empty()) { + output = 0; + return true; + } + int val; + if(lexical_cast(input, val)) { + output = val; + return true; + } + return false; +} + +/// Assign a value converted from a string in lexical cast to the output value directly +template ::value && std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + ConvertTo val{}; + bool parse_result = (!input.empty()) ? lexical_cast(input, val) : true; + if(parse_result) { + output = val; + } + return parse_result; +} + +/// Assign a value from a lexical cast through constructing a value and move assigning it +template < + typename AssignTo, + typename ConvertTo, + enable_if_t::value && !std::is_assignable::value && + std::is_move_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_assign(const std::string &input, AssignTo &output) { + ConvertTo val{}; + bool parse_result = input.empty() ? true : lexical_cast(input, val); + if(parse_result) { + output = AssignTo(val); // use () form of constructor to allow some implicit conversions + } + return parse_result; +} + +/// primary lexical conversion operation, 1 string to 1 type of some kind +template ::value <= object_category::other && + classify_object::value <= object_category::wrapper_value, + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + return lexical_assign(strings[0], output); +} + +/// Lexical conversion if there is only one element but the conversion type is for two, then call a two element +/// constructor +template ::value <= 2) && expected_count::value == 1 && + is_tuple_like::value && type_count_base::value == 2, + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + // the remove const is to handle pair types coming from a container + typename std::remove_const::type>::type v1; + typename std::tuple_element<1, ConvertTo>::type v2; + bool retval = lexical_assign(strings[0], v1); + if(strings.size() > 1) { + retval = retval && lexical_assign(strings[1], v2); + } + if(retval) { + output = AssignTo{v1, v2}; + } + return retval; +} + +/// Lexical conversion of a container types of single elements +template ::value && is_mutable_container::value && + type_count::value == 1, + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + output.erase(output.begin(), output.end()); + if(strings.size() == 1 && strings[0] == "{}") { + return true; + } + bool skip_remaining = false; + if(strings.size() == 2 && strings[0] == "{}" && is_separator(strings[1])) { + skip_remaining = true; + } + for(const auto &elem : strings) { + typename AssignTo::value_type out; + bool retval = lexical_assign(elem, out); + if(!retval) { + return false; + } + output.insert(output.end(), std::move(out)); + if(skip_remaining) { + break; + } + } + return (!output.empty()); +} + +/// Lexical conversion for complex types +template ::value, detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + + if(strings.size() >= 2 && !strings[1].empty()) { + using XC2 = typename wrapped_type::type; + XC2 x{0.0}, y{0.0}; + auto str1 = strings[1]; + if(str1.back() == 'i' || str1.back() == 'j') { + str1.pop_back(); + } + auto worked = detail::lexical_cast(strings[0], x) && detail::lexical_cast(str1, y); + if(worked) { + output = ConvertTo{x, y}; + } + return worked; + } else { + return lexical_assign(strings[0], output); + } +} + +/// Conversion to a vector type using a particular single type as the conversion type +template ::value && (expected_count::value == 1) && + (type_count::value == 1), + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + bool retval = true; + output.clear(); + output.reserve(strings.size()); + for(const auto &elem : strings) { + + output.emplace_back(); + retval = retval && lexical_assign(elem, output.back()); + } + return (!output.empty()) && retval; +} + +// forward declaration + +/// Lexical conversion of a container types with conversion type of two elements +template ::value && is_mutable_container::value && + type_count_base::value == 2, + detail::enabler> = detail::dummy> +bool lexical_conversion(std::vector strings, AssignTo &output); + +/// Lexical conversion of a vector types with type_size >2 forward declaration +template ::value && is_mutable_container::value && + type_count_base::value != 2 && + ((type_count::value > 2) || + (type_count::value > type_count_base::value)), + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output); + +/// Conversion for tuples +template ::value && is_tuple_like::value && + (type_count_base::value != type_count::value || + type_count::value > 2), + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output); // forward declaration + +/// Conversion for operations where the assigned type is some class but the conversion is a mutable container or large +/// tuple +template ::value && !is_mutable_container::value && + classify_object::value != object_category::wrapper_value && + (is_mutable_container::value || type_count::value > 2), + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + + if(strings.size() > 1 || (!strings.empty() && !(strings.front().empty()))) { + ConvertTo val; + auto retval = lexical_conversion(strings, val); + output = AssignTo{val}; + return retval; + } + output = AssignTo{}; + return true; +} + +/// function template for converting tuples if the static Index is greater than the tuple size +template +inline typename std::enable_if<(I >= type_count_base::value), bool>::type +tuple_conversion(const std::vector &, AssignTo &) { + return true; +} + +/// Conversion of a tuple element where the type size ==1 and not a mutable container +template +inline typename std::enable_if::value && type_count::value == 1, bool>::type +tuple_type_conversion(std::vector &strings, AssignTo &output) { + auto retval = lexical_assign(strings[0], output); + strings.erase(strings.begin()); + return retval; +} + +/// Conversion of a tuple element where the type size !=1 but the size is fixed and not a mutable container +template +inline typename std::enable_if::value && (type_count::value > 1) && + type_count::value == type_count_min::value, + bool>::type +tuple_type_conversion(std::vector &strings, AssignTo &output) { + auto retval = lexical_conversion(strings, output); + strings.erase(strings.begin(), strings.begin() + type_count::value); + return retval; +} + +/// Conversion of a tuple element where the type is a mutable container or a type with different min and max type sizes +template +inline typename std::enable_if::value || + type_count::value != type_count_min::value, + bool>::type +tuple_type_conversion(std::vector &strings, AssignTo &output) { + + std::size_t index{subtype_count_min::value}; + const std::size_t mx_count{subtype_count::value}; + const std::size_t mx{(std::max)(mx_count, strings.size())}; + + while(index < mx) { + if(is_separator(strings[index])) { + break; + } + ++index; + } + bool retval = lexical_conversion( + std::vector(strings.begin(), strings.begin() + static_cast(index)), output); + strings.erase(strings.begin(), strings.begin() + static_cast(index) + 1); + return retval; +} + +/// Tuple conversion operation +template +inline typename std::enable_if<(I < type_count_base::value), bool>::type +tuple_conversion(std::vector strings, AssignTo &output) { + bool retval = true; + using ConvertToElement = typename std:: + conditional::value, typename std::tuple_element::type, ConvertTo>::type; + if(!strings.empty()) { + retval = retval && tuple_type_conversion::type, ConvertToElement>( + strings, std::get(output)); + } + retval = retval && tuple_conversion(std::move(strings), output); + return retval; +} + +/// Lexical conversion of a container types with tuple elements of size 2 +template ::value && is_mutable_container::value && + type_count_base::value == 2, + detail::enabler>> +bool lexical_conversion(std::vector strings, AssignTo &output) { + output.clear(); + while(!strings.empty()) { + + typename std::remove_const::type>::type v1; + typename std::tuple_element<1, typename ConvertTo::value_type>::type v2; + bool retval = tuple_type_conversion(strings, v1); + if(!strings.empty()) { + retval = retval && tuple_type_conversion(strings, v2); + } + if(retval) { + output.insert(output.end(), typename AssignTo::value_type{v1, v2}); + } else { + return false; + } + } + return (!output.empty()); +} + +/// lexical conversion of tuples with type count>2 or tuples of types of some element with a type size>=2 +template ::value && is_tuple_like::value && + (type_count_base::value != type_count::value || + type_count::value > 2), + detail::enabler>> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + static_assert( + !is_tuple_like::value || type_count_base::value == type_count_base::value, + "if the conversion type is defined as a tuple it must be the same size as the type you are converting to"); + return tuple_conversion(strings, output); +} + +/// Lexical conversion of a vector types for everything but tuples of two elements and types of size 1 +template ::value && is_mutable_container::value && + type_count_base::value != 2 && + ((type_count::value > 2) || + (type_count::value > type_count_base::value)), + detail::enabler>> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + bool retval = true; + output.clear(); + std::vector temp; + std::size_t ii{0}; + std::size_t icount{0}; + std::size_t xcm{type_count::value}; + auto ii_max = strings.size(); + while(ii < ii_max) { + temp.push_back(strings[ii]); + ++ii; + ++icount; + if(icount == xcm || is_separator(temp.back()) || ii == ii_max) { + if(static_cast(xcm) > type_count_min::value && is_separator(temp.back())) { + temp.pop_back(); + } + typename AssignTo::value_type temp_out; + retval = retval && + lexical_conversion(temp, temp_out); + temp.clear(); + if(!retval) { + return false; + } + output.insert(output.end(), std::move(temp_out)); + icount = 0; + } + } + return retval; +} + +/// conversion for wrapper types +template ::value == object_category::wrapper_value && + std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + if(strings.empty() || strings.front().empty()) { + output = ConvertTo{}; + return true; + } + typename ConvertTo::value_type val; + if(lexical_conversion(strings, val)) { + output = ConvertTo{val}; + return true; + } + return false; +} + +/// conversion for wrapper types +template ::value == object_category::wrapper_value && + !std::is_assignable::value, + detail::enabler> = detail::dummy> +bool lexical_conversion(const std::vector &strings, AssignTo &output) { + using ConvertType = typename ConvertTo::value_type; + if(strings.empty() || strings.front().empty()) { + output = ConvertType{}; + return true; + } + ConvertType val; + if(lexical_conversion(strings, val)) { + output = val; + return true; + } + return false; +} + +/// Sum a vector of strings +inline std::string sum_string_vector(const std::vector &values) { + double val{0.0}; + bool fail{false}; + std::string output; + for(const auto &arg : values) { + double tv{0.0}; + auto comp = detail::lexical_cast(arg, tv); + if(!comp) { + try { + tv = static_cast(detail::to_flag_value(arg)); + } catch(const std::exception &) { + fail = true; + break; + } + } + val += tv; + } + if(fail) { + for(const auto &arg : values) { + output.append(arg); + } + } else { + if(val <= static_cast(std::numeric_limits::min()) || + val >= static_cast(std::numeric_limits::max()) || + val == static_cast(val)) { + output = detail::value_string(static_cast(val)); + } else { + output = detail::value_string(val); + } + } + return output; +} + +} // namespace detail + + + +namespace detail { + +// Returns false if not a short option. Otherwise, sets opt name and rest and returns true +inline bool split_short(const std::string ¤t, std::string &name, std::string &rest) { + if(current.size() > 1 && current[0] == '-' && valid_first_char(current[1])) { + name = current.substr(1, 1); + rest = current.substr(2); + return true; + } + return false; +} + +// Returns false if not a long option. Otherwise, sets opt name and other side of = and returns true +inline bool split_long(const std::string ¤t, std::string &name, std::string &value) { + if(current.size() > 2 && current.substr(0, 2) == "--" && valid_first_char(current[2])) { + auto loc = current.find_first_of('='); + if(loc != std::string::npos) { + name = current.substr(2, loc - 2); + value = current.substr(loc + 1); + } else { + name = current.substr(2); + value = ""; + } + return true; + } + return false; +} + +// Returns false if not a windows style option. Otherwise, sets opt name and value and returns true +inline bool split_windows_style(const std::string ¤t, std::string &name, std::string &value) { + if(current.size() > 1 && current[0] == '/' && valid_first_char(current[1])) { + auto loc = current.find_first_of(':'); + if(loc != std::string::npos) { + name = current.substr(1, loc - 1); + value = current.substr(loc + 1); + } else { + name = current.substr(1); + value = ""; + } + return true; + } + return false; +} + +// Splits a string into multiple long and short names +inline std::vector split_names(std::string current) { + std::vector output; + std::size_t val; + while((val = current.find(",")) != std::string::npos) { + output.push_back(trim_copy(current.substr(0, val))); + current = current.substr(val + 1); + } + output.push_back(trim_copy(current)); + return output; +} + +/// extract default flag values either {def} or starting with a ! +inline std::vector> get_default_flag_values(const std::string &str) { + std::vector flags = split_names(str); + flags.erase(std::remove_if(flags.begin(), + flags.end(), + [](const std::string &name) { + return ((name.empty()) || (!(((name.find_first_of('{') != std::string::npos) && + (name.back() == '}')) || + (name[0] == '!')))); + }), + flags.end()); + std::vector> output; + output.reserve(flags.size()); + for(auto &flag : flags) { + auto def_start = flag.find_first_of('{'); + std::string defval = "false"; + if((def_start != std::string::npos) && (flag.back() == '}')) { + defval = flag.substr(def_start + 1); + defval.pop_back(); + flag.erase(def_start, std::string::npos); + } + flag.erase(0, flag.find_first_not_of("-!")); + output.emplace_back(flag, defval); + } + return output; +} + +/// Get a vector of short names, one of long names, and a single name +inline std::tuple, std::vector, std::string> +get_names(const std::vector &input) { + + std::vector short_names; + std::vector long_names; + std::string pos_name; + + for(std::string name : input) { + if(name.length() == 0) { + continue; + } + if(name.length() > 1 && name[0] == '-' && name[1] != '-') { + if(name.length() == 2 && valid_first_char(name[1])) + short_names.emplace_back(1, name[1]); + else + throw BadNameString::OneCharName(name); + } else if(name.length() > 2 && name.substr(0, 2) == "--") { + name = name.substr(2); + if(valid_name_string(name)) + long_names.push_back(name); + else + throw BadNameString::BadLongName(name); + } else if(name == "-" || name == "--") { + throw BadNameString::DashesOnly(name); + } else { + if(pos_name.length() > 0) + throw BadNameString::MultiPositionalNames(name); + pos_name = name; + } + } + + return std::tuple, std::vector, std::string>( + short_names, long_names, pos_name); +} + +} // namespace detail + + + +class App; + +/// Holds values to load into Options +struct ConfigItem { + /// This is the list of parents + std::vector parents{}; + + /// This is the name + std::string name{}; + + /// Listing of inputs + std::vector inputs{}; + + /// The list of parents and name joined by "." + std::string fullname() const { + std::vector tmp = parents; + tmp.emplace_back(name); + return detail::join(tmp, "."); + } +}; + +/// This class provides a converter for configuration files. +class Config { + protected: + std::vector items{}; + + public: + /// Convert an app into a configuration + virtual std::string to_config(const App *, bool, bool, std::string) const = 0; + + /// Convert a configuration into an app + virtual std::vector from_config(std::istream &) const = 0; + + /// Get a flag value + virtual std::string to_flag(const ConfigItem &item) const { + if(item.inputs.size() == 1) { + return item.inputs.at(0); + } + if(item.inputs.empty()) { + return "{}"; + } + throw ConversionError::TooManyInputsFlag(item.fullname()); + } + + /// Parse a config file, throw an error (ParseError:ConfigParseError or FileError) on failure + std::vector from_file(const std::string &name) { + std::ifstream input{name}; + if(!input.good()) + throw FileError::Missing(name); + + return from_config(input); + } + + /// Virtual destructor + virtual ~Config() = default; +}; + +/// This converter works with INI/TOML files; to write INI files use ConfigINI +class ConfigBase : public Config { + protected: + /// the character used for comments + char commentChar = '#'; + /// the character used to start an array '\0' is a default to not use + char arrayStart = '['; + /// the character used to end an array '\0' is a default to not use + char arrayEnd = ']'; + /// the character used to separate elements in an array + char arraySeparator = ','; + /// the character used separate the name from the value + char valueDelimiter = '='; + /// the character to use around strings + char stringQuote = '"'; + /// the character to use around single characters + char characterQuote = '\''; + /// the maximum number of layers to allow + uint8_t maximumLayers{255}; + /// the separator used to separator parent layers + char parentSeparatorChar{'.'}; + /// Specify the configuration index to use for arrayed sections + int16_t configIndex{-1}; + /// Specify the configuration section that should be used + std::string configSection{}; + + public: + std::string + to_config(const App * /*app*/, bool default_also, bool write_description, std::string prefix) const override; + + std::vector from_config(std::istream &input) const override; + /// Specify the configuration for comment characters + ConfigBase *comment(char cchar) { + commentChar = cchar; + return this; + } + /// Specify the start and end characters for an array + ConfigBase *arrayBounds(char aStart, char aEnd) { + arrayStart = aStart; + arrayEnd = aEnd; + return this; + } + /// Specify the delimiter character for an array + ConfigBase *arrayDelimiter(char aSep) { + arraySeparator = aSep; + return this; + } + /// Specify the delimiter between a name and value + ConfigBase *valueSeparator(char vSep) { + valueDelimiter = vSep; + return this; + } + /// Specify the quote characters used around strings and characters + ConfigBase *quoteCharacter(char qString, char qChar) { + stringQuote = qString; + characterQuote = qChar; + return this; + } + /// Specify the maximum number of parents + ConfigBase *maxLayers(uint8_t layers) { + maximumLayers = layers; + return this; + } + /// Specify the separator to use for parent layers + ConfigBase *parentSeparator(char sep) { + parentSeparatorChar = sep; + return this; + } + /// get a reference to the configuration section + std::string §ionRef() { return configSection; } + /// get the section + const std::string §ion() const { return configSection; } + /// specify a particular section of the configuration file to use + ConfigBase *section(const std::string §ionName) { + configSection = sectionName; + return this; + } + + /// get a reference to the configuration index + int16_t &indexRef() { return configIndex; } + /// get the section index + int16_t index() const { return configIndex; } + /// specify a particular index in the section to use (-1) for all sections to use + ConfigBase *index(int16_t sectionIndex) { + configIndex = sectionIndex; + return this; + } +}; + +/// the default Config is the TOML file format +using ConfigTOML = ConfigBase; + +/// ConfigINI generates a "standard" INI compliant output +class ConfigINI : public ConfigTOML { + + public: + ConfigINI() { + commentChar = ';'; + arrayStart = '\0'; + arrayEnd = '\0'; + arraySeparator = ' '; + valueDelimiter = '='; + } +}; + + + +class Option; + +/// @defgroup validator_group Validators + +/// @brief Some validators that are provided +/// +/// These are simple `std::string(const std::string&)` validators that are useful. They return +/// a string if the validation fails. A custom struct is provided, as well, with the same user +/// semantics, but with the ability to provide a new type name. +/// @{ + +/// +class Validator { + protected: + /// This is the description function, if empty the description_ will be used + std::function desc_function_{[]() { return std::string{}; }}; + + /// This is the base function that is to be called. + /// Returns a string error message if validation fails. + std::function func_{[](std::string &) { return std::string{}; }}; + /// The name for search purposes of the Validator + std::string name_{}; + /// A Validator will only apply to an indexed value (-1 is all elements) + int application_index_ = -1; + /// Enable for Validator to allow it to be disabled if need be + bool active_{true}; + /// specify that a validator should not modify the input + bool non_modifying_{false}; + + public: + Validator() = default; + /// Construct a Validator with just the description string + explicit Validator(std::string validator_desc) : desc_function_([validator_desc]() { return validator_desc; }) {} + /// Construct Validator from basic information + Validator(std::function op, std::string validator_desc, std::string validator_name = "") + : desc_function_([validator_desc]() { return validator_desc; }), func_(std::move(op)), + name_(std::move(validator_name)) {} + /// Set the Validator operation function + Validator &operation(std::function op) { + func_ = std::move(op); + return *this; + } + /// This is the required operator for a Validator - provided to help + /// users (CLI11 uses the member `func` directly) + std::string operator()(std::string &str) const { + std::string retstring; + if(active_) { + if(non_modifying_) { + std::string value = str; + retstring = func_(value); + } else { + retstring = func_(str); + } + } + return retstring; + } + + /// This is the required operator for a Validator - provided to help + /// users (CLI11 uses the member `func` directly) + std::string operator()(const std::string &str) const { + std::string value = str; + return (active_) ? func_(value) : std::string{}; + } + + /// Specify the type string + Validator &description(std::string validator_desc) { + desc_function_ = [validator_desc]() { return validator_desc; }; + return *this; + } + /// Specify the type string + Validator description(std::string validator_desc) const { + Validator newval(*this); + newval.desc_function_ = [validator_desc]() { return validator_desc; }; + return newval; + } + /// Generate type description information for the Validator + std::string get_description() const { + if(active_) { + return desc_function_(); + } + return std::string{}; + } + /// Specify the type string + Validator &name(std::string validator_name) { + name_ = std::move(validator_name); + return *this; + } + /// Specify the type string + Validator name(std::string validator_name) const { + Validator newval(*this); + newval.name_ = std::move(validator_name); + return newval; + } + /// Get the name of the Validator + const std::string &get_name() const { return name_; } + /// Specify whether the Validator is active or not + Validator &active(bool active_val = true) { + active_ = active_val; + return *this; + } + /// Specify whether the Validator is active or not + Validator active(bool active_val = true) const { + Validator newval(*this); + newval.active_ = active_val; + return newval; + } + + /// Specify whether the Validator can be modifying or not + Validator &non_modifying(bool no_modify = true) { + non_modifying_ = no_modify; + return *this; + } + /// Specify the application index of a validator + Validator &application_index(int app_index) { + application_index_ = app_index; + return *this; + } + /// Specify the application index of a validator + Validator application_index(int app_index) const { + Validator newval(*this); + newval.application_index_ = app_index; + return newval; + } + /// Get the current value of the application index + int get_application_index() const { return application_index_; } + /// Get a boolean if the validator is active + bool get_active() const { return active_; } + + /// Get a boolean if the validator is allowed to modify the input returns true if it can modify the input + bool get_modifying() const { return !non_modifying_; } + + /// Combining validators is a new validator. Type comes from left validator if function, otherwise only set if the + /// same. + Validator operator&(const Validator &other) const { + Validator newval; + + newval._merge_description(*this, other, " AND "); + + // Give references (will make a copy in lambda function) + const std::function &f1 = func_; + const std::function &f2 = other.func_; + + newval.func_ = [f1, f2](std::string &input) { + std::string s1 = f1(input); + std::string s2 = f2(input); + if(!s1.empty() && !s2.empty()) + return std::string("(") + s1 + ") AND (" + s2 + ")"; + else + return s1 + s2; + }; + + newval.active_ = (active_ & other.active_); + newval.application_index_ = application_index_; + return newval; + } + + /// Combining validators is a new validator. Type comes from left validator if function, otherwise only set if the + /// same. + Validator operator|(const Validator &other) const { + Validator newval; + + newval._merge_description(*this, other, " OR "); + + // Give references (will make a copy in lambda function) + const std::function &f1 = func_; + const std::function &f2 = other.func_; + + newval.func_ = [f1, f2](std::string &input) { + std::string s1 = f1(input); + std::string s2 = f2(input); + if(s1.empty() || s2.empty()) + return std::string(); + + return std::string("(") + s1 + ") OR (" + s2 + ")"; + }; + newval.active_ = (active_ & other.active_); + newval.application_index_ = application_index_; + return newval; + } + + /// Create a validator that fails when a given validator succeeds + Validator operator!() const { + Validator newval; + const std::function &dfunc1 = desc_function_; + newval.desc_function_ = [dfunc1]() { + auto str = dfunc1(); + return (!str.empty()) ? std::string("NOT ") + str : std::string{}; + }; + // Give references (will make a copy in lambda function) + const std::function &f1 = func_; + + newval.func_ = [f1, dfunc1](std::string &test) -> std::string { + std::string s1 = f1(test); + if(s1.empty()) { + return std::string("check ") + dfunc1() + " succeeded improperly"; + } + return std::string{}; + }; + newval.active_ = active_; + newval.application_index_ = application_index_; + return newval; + } + + private: + void _merge_description(const Validator &val1, const Validator &val2, const std::string &merger) { + + const std::function &dfunc1 = val1.desc_function_; + const std::function &dfunc2 = val2.desc_function_; + + desc_function_ = [=]() { + std::string f1 = dfunc1(); + std::string f2 = dfunc2(); + if((f1.empty()) || (f2.empty())) { + return f1 + f2; + } + return std::string(1, '(') + f1 + ')' + merger + '(' + f2 + ')'; + }; + } +}; // namespace CLI + +/// Class wrapping some of the accessors of Validator +class CustomValidator : public Validator { + public: +}; +// The implementation of the built in validators is using the Validator class; +// the user is only expected to use the const (static) versions (since there's no setup). +// Therefore, this is in detail. +namespace detail { + +/// CLI enumeration of different file types +enum class path_type { nonexistent, file, directory }; + +#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 +/// get the type of the path from a file name +inline path_type check_path(const char *file) noexcept { + std::error_code ec; + auto stat = std::filesystem::status(file, ec); + if(ec) { + return path_type::nonexistent; + } + switch(stat.type()) { + case std::filesystem::file_type::none: + case std::filesystem::file_type::not_found: + return path_type::nonexistent; + case std::filesystem::file_type::directory: + return path_type::directory; + case std::filesystem::file_type::symlink: + case std::filesystem::file_type::block: + case std::filesystem::file_type::character: + case std::filesystem::file_type::fifo: + case std::filesystem::file_type::socket: + case std::filesystem::file_type::regular: + case std::filesystem::file_type::unknown: + default: + return path_type::file; + } +} +#else +/// get the type of the path from a file name +inline path_type check_path(const char *file) noexcept { +#if defined(_MSC_VER) + struct __stat64 buffer; + if(_stat64(file, &buffer) == 0) { + return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file; + } +#else + struct stat buffer; + if(stat(file, &buffer) == 0) { + return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file; + } +#endif + return path_type::nonexistent; +} +#endif +/// Check for an existing file (returns error message if check fails) +class ExistingFileValidator : public Validator { + public: + ExistingFileValidator() : Validator("FILE") { + func_ = [](std::string &filename) { + auto path_result = check_path(filename.c_str()); + if(path_result == path_type::nonexistent) { + return "File does not exist: " + filename; + } + if(path_result == path_type::directory) { + return "File is actually a directory: " + filename; + } + return std::string(); + }; + } +}; + +/// Check for an existing directory (returns error message if check fails) +class ExistingDirectoryValidator : public Validator { + public: + ExistingDirectoryValidator() : Validator("DIR") { + func_ = [](std::string &filename) { + auto path_result = check_path(filename.c_str()); + if(path_result == path_type::nonexistent) { + return "Directory does not exist: " + filename; + } + if(path_result == path_type::file) { + return "Directory is actually a file: " + filename; + } + return std::string(); + }; + } +}; + +/// Check for an existing path +class ExistingPathValidator : public Validator { + public: + ExistingPathValidator() : Validator("PATH(existing)") { + func_ = [](std::string &filename) { + auto path_result = check_path(filename.c_str()); + if(path_result == path_type::nonexistent) { + return "Path does not exist: " + filename; + } + return std::string(); + }; + } +}; + +/// Check for an non-existing path +class NonexistentPathValidator : public Validator { + public: + NonexistentPathValidator() : Validator("PATH(non-existing)") { + func_ = [](std::string &filename) { + auto path_result = check_path(filename.c_str()); + if(path_result != path_type::nonexistent) { + return "Path already exists: " + filename; + } + return std::string(); + }; + } +}; + +/// Validate the given string is a legal ipv4 address +class IPV4Validator : public Validator { + public: + IPV4Validator() : Validator("IPV4") { + func_ = [](std::string &ip_addr) { + auto result = CLI::detail::split(ip_addr, '.'); + if(result.size() != 4) { + return std::string("Invalid IPV4 address must have four parts (") + ip_addr + ')'; + } + int num; + for(const auto &var : result) { + bool retval = detail::lexical_cast(var, num); + if(!retval) { + return std::string("Failed parsing number (") + var + ')'; + } + if(num < 0 || num > 255) { + return std::string("Each IP number must be between 0 and 255 ") + var; + } + } + return std::string(); + }; + } +}; + +} // namespace detail + +// Static is not needed here, because global const implies static. + +/// Check for existing file (returns error message if check fails) +const detail::ExistingFileValidator ExistingFile; + +/// Check for an existing directory (returns error message if check fails) +const detail::ExistingDirectoryValidator ExistingDirectory; + +/// Check for an existing path +const detail::ExistingPathValidator ExistingPath; + +/// Check for an non-existing path +const detail::NonexistentPathValidator NonexistentPath; + +/// Check for an IP4 address +const detail::IPV4Validator ValidIPV4; + +/// Validate the input as a particular type +template class TypeValidator : public Validator { + public: + explicit TypeValidator(const std::string &validator_name) : Validator(validator_name) { + func_ = [](std::string &input_string) { + auto val = DesiredType(); + if(!detail::lexical_cast(input_string, val)) { + return std::string("Failed parsing ") + input_string + " as a " + detail::type_name(); + } + return std::string(); + }; + } + TypeValidator() : TypeValidator(detail::type_name()) {} +}; + +/// Check for a number +const TypeValidator Number("NUMBER"); + +/// Modify a path if the file is a particular default location, can be used as Check or transform +/// with the error return optionally disabled +class FileOnDefaultPath : public Validator { + public: + explicit FileOnDefaultPath(std::string default_path, bool enableErrorReturn = true) : Validator("FILE") { + func_ = [default_path, enableErrorReturn](std::string &filename) { + auto path_result = detail::check_path(filename.c_str()); + if(path_result == detail::path_type::nonexistent) { + std::string test_file_path = default_path; + if(default_path.back() != '/' && default_path.back() != '\\') { + // Add folder separator + test_file_path += '/'; + } + test_file_path.append(filename); + path_result = detail::check_path(test_file_path.c_str()); + if(path_result == detail::path_type::file) { + filename = test_file_path; + } else { + if(enableErrorReturn) { + return "File does not exist: " + filename; + } + } + } + return std::string{}; + }; + } +}; + +/// Produce a range (factory). Min and max are inclusive. +class Range : public Validator { + public: + /// This produces a range with min and max inclusive. + /// + /// Note that the constructor is templated, but the struct is not, so C++17 is not + /// needed to provide nice syntax for Range(a,b). + template + Range(T min_val, T max_val, const std::string &validator_name = std::string{}) : Validator(validator_name) { + if(validator_name.empty()) { + std::stringstream out; + out << detail::type_name() << " in [" << min_val << " - " << max_val << "]"; + description(out.str()); + } + + func_ = [min_val, max_val](std::string &input) { + T val; + bool converted = detail::lexical_cast(input, val); + if((!converted) || (val < min_val || val > max_val)) { + std::stringstream out; + out << "Value " << input << " not in range ["; + out << min_val << " - " << max_val << "]"; + return out.str(); + } + return std::string{}; + }; + } + + /// Range of one value is 0 to value + template + explicit Range(T max_val, const std::string &validator_name = std::string{}) + : Range(static_cast(0), max_val, validator_name) {} +}; + +/// Check for a non negative number +const Range NonNegativeNumber((std::numeric_limits::max)(), "NONNEGATIVE"); + +/// Check for a positive valued number (val>0.0), min() her is the smallest positive number +const Range PositiveNumber((std::numeric_limits::min)(), (std::numeric_limits::max)(), "POSITIVE"); + +/// Produce a bounded range (factory). Min and max are inclusive. +class Bound : public Validator { + public: + /// This bounds a value with min and max inclusive. + /// + /// Note that the constructor is templated, but the struct is not, so C++17 is not + /// needed to provide nice syntax for Range(a,b). + template Bound(T min_val, T max_val) { + std::stringstream out; + out << detail::type_name() << " bounded to [" << min_val << " - " << max_val << "]"; + description(out.str()); + + func_ = [min_val, max_val](std::string &input) { + T val; + bool converted = detail::lexical_cast(input, val); + if(!converted) { + return std::string("Value ") + input + " could not be converted"; + } + if(val < min_val) + input = detail::to_string(min_val); + else if(val > max_val) + input = detail::to_string(max_val); + + return std::string{}; + }; + } + + /// Range of one value is 0 to value + template explicit Bound(T max_val) : Bound(static_cast(0), max_val) {} +}; + +namespace detail { +template ::type>::value, detail::enabler> = detail::dummy> +auto smart_deref(T value) -> decltype(*value) { + return *value; +} + +template < + typename T, + enable_if_t::type>::value, detail::enabler> = detail::dummy> +typename std::remove_reference::type &smart_deref(T &value) { + return value; +} +/// Generate a string representation of a set +template std::string generate_set(const T &set) { + using element_t = typename detail::element_type::type; + using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair + std::string out(1, '{'); + out.append(detail::join( + detail::smart_deref(set), + [](const iteration_type_t &v) { return detail::pair_adaptor::first(v); }, + ",")); + out.push_back('}'); + return out; +} + +/// Generate a string representation of a map +template std::string generate_map(const T &map, bool key_only = false) { + using element_t = typename detail::element_type::type; + using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair + std::string out(1, '{'); + out.append(detail::join( + detail::smart_deref(map), + [key_only](const iteration_type_t &v) { + std::string res{detail::to_string(detail::pair_adaptor::first(v))}; + + if(!key_only) { + res.append("->"); + res += detail::to_string(detail::pair_adaptor::second(v)); + } + return res; + }, + ",")); + out.push_back('}'); + return out; +} + +template struct has_find { + template + static auto test(int) -> decltype(std::declval().find(std::declval()), std::true_type()); + template static auto test(...) -> decltype(std::false_type()); + + static const auto value = decltype(test(0))::value; + using type = std::integral_constant; +}; + +/// A search function +template ::value, detail::enabler> = detail::dummy> +auto search(const T &set, const V &val) -> std::pair { + using element_t = typename detail::element_type::type; + auto &setref = detail::smart_deref(set); + auto it = std::find_if(std::begin(setref), std::end(setref), [&val](decltype(*std::begin(setref)) v) { + return (detail::pair_adaptor::first(v) == val); + }); + return {(it != std::end(setref)), it}; +} + +/// A search function that uses the built in find function +template ::value, detail::enabler> = detail::dummy> +auto search(const T &set, const V &val) -> std::pair { + auto &setref = detail::smart_deref(set); + auto it = setref.find(val); + return {(it != std::end(setref)), it}; +} + +/// A search function with a filter function +template +auto search(const T &set, const V &val, const std::function &filter_function) + -> std::pair { + using element_t = typename detail::element_type::type; + // do the potentially faster first search + auto res = search(set, val); + if((res.first) || (!(filter_function))) { + return res; + } + // if we haven't found it do the longer linear search with all the element translations + auto &setref = detail::smart_deref(set); + auto it = std::find_if(std::begin(setref), std::end(setref), [&](decltype(*std::begin(setref)) v) { + V a{detail::pair_adaptor::first(v)}; + a = filter_function(a); + return (a == val); + }); + return {(it != std::end(setref)), it}; +} + +// the following suggestion was made by Nikita Ofitserov(@himikof) +// done in templates to prevent compiler warnings on negation of unsigned numbers + +/// Do a check for overflow on signed numbers +template +inline typename std::enable_if::value, T>::type overflowCheck(const T &a, const T &b) { + if((a > 0) == (b > 0)) { + return ((std::numeric_limits::max)() / (std::abs)(a) < (std::abs)(b)); + } else { + return ((std::numeric_limits::min)() / (std::abs)(a) > -(std::abs)(b)); + } +} +/// Do a check for overflow on unsigned numbers +template +inline typename std::enable_if::value, T>::type overflowCheck(const T &a, const T &b) { + return ((std::numeric_limits::max)() / a < b); +} + +/// Performs a *= b; if it doesn't cause integer overflow. Returns false otherwise. +template typename std::enable_if::value, bool>::type checked_multiply(T &a, T b) { + if(a == 0 || b == 0 || a == 1 || b == 1) { + a *= b; + return true; + } + if(a == (std::numeric_limits::min)() || b == (std::numeric_limits::min)()) { + return false; + } + if(overflowCheck(a, b)) { + return false; + } + a *= b; + return true; +} + +/// Performs a *= b; if it doesn't equal infinity. Returns false otherwise. +template +typename std::enable_if::value, bool>::type checked_multiply(T &a, T b) { + T c = a * b; + if(std::isinf(c) && !std::isinf(a) && !std::isinf(b)) { + return false; + } + a = c; + return true; +} + +} // namespace detail +/// Verify items are in a set +class IsMember : public Validator { + public: + using filter_fn_t = std::function; + + /// This allows in-place construction using an initializer list + template + IsMember(std::initializer_list values, Args &&...args) + : IsMember(std::vector(values), std::forward(args)...) {} + + /// This checks to see if an item is in a set (empty function) + template explicit IsMember(T &&set) : IsMember(std::forward(set), nullptr) {} + + /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter + /// both sides of the comparison before computing the comparison. + template explicit IsMember(T set, F filter_function) { + + // Get the type of the contained item - requires a container have ::value_type + // if the type does not have first_type and second_type, these are both value_type + using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed + using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map + + using local_item_t = typename IsMemberType::type; // This will convert bad types to good ones + // (const char * to std::string) + + // Make a local copy of the filter function, using a std::function if not one already + std::function filter_fn = filter_function; + + // This is the type name for help, it will take the current version of the set contents + desc_function_ = [set]() { return detail::generate_set(detail::smart_deref(set)); }; + + // This is the function that validates + // It stores a copy of the set pointer-like, so shared_ptr will stay alive + func_ = [set, filter_fn](std::string &input) { + local_item_t b; + if(!detail::lexical_cast(input, b)) { + throw ValidationError(input); // name is added later + } + if(filter_fn) { + b = filter_fn(b); + } + auto res = detail::search(set, b, filter_fn); + if(res.first) { + // Make sure the version in the input string is identical to the one in the set + if(filter_fn) { + input = detail::value_string(detail::pair_adaptor::first(*(res.second))); + } + + // Return empty error string (success) + return std::string{}; + } + + // If you reach this point, the result was not found + return input + " not in " + detail::generate_set(detail::smart_deref(set)); + }; + } + + /// You can pass in as many filter functions as you like, they nest (string only currently) + template + IsMember(T &&set, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&...other) + : IsMember( + std::forward(set), + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, + other...) {} +}; + +/// definition of the default transformation object +template using TransformPairs = std::vector>; + +/// Translate named items to other or a value set +class Transformer : public Validator { + public: + using filter_fn_t = std::function; + + /// This allows in-place construction + template + Transformer(std::initializer_list> values, Args &&...args) + : Transformer(TransformPairs(values), std::forward(args)...) {} + + /// direct map of std::string to std::string + template explicit Transformer(T &&mapping) : Transformer(std::forward(mapping), nullptr) {} + + /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter + /// both sides of the comparison before computing the comparison. + template explicit Transformer(T mapping, F filter_function) { + + static_assert(detail::pair_adaptor::type>::value, + "mapping must produce value pairs"); + // Get the type of the contained item - requires a container have ::value_type + // if the type does not have first_type and second_type, these are both value_type + using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed + using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map + using local_item_t = typename IsMemberType::type; // Will convert bad types to good ones + // (const char * to std::string) + + // Make a local copy of the filter function, using a std::function if not one already + std::function filter_fn = filter_function; + + // This is the type name for help, it will take the current version of the set contents + desc_function_ = [mapping]() { return detail::generate_map(detail::smart_deref(mapping)); }; + + func_ = [mapping, filter_fn](std::string &input) { + local_item_t b; + if(!detail::lexical_cast(input, b)) { + return std::string(); + // there is no possible way we can match anything in the mapping if we can't convert so just return + } + if(filter_fn) { + b = filter_fn(b); + } + auto res = detail::search(mapping, b, filter_fn); + if(res.first) { + input = detail::value_string(detail::pair_adaptor::second(*res.second)); + } + return std::string{}; + }; + } + + /// You can pass in as many filter functions as you like, they nest + template + Transformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&...other) + : Transformer( + std::forward(mapping), + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, + other...) {} +}; + +/// translate named items to other or a value set +class CheckedTransformer : public Validator { + public: + using filter_fn_t = std::function; + + /// This allows in-place construction + template + CheckedTransformer(std::initializer_list> values, Args &&...args) + : CheckedTransformer(TransformPairs(values), std::forward(args)...) {} + + /// direct map of std::string to std::string + template explicit CheckedTransformer(T mapping) : CheckedTransformer(std::move(mapping), nullptr) {} + + /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter + /// both sides of the comparison before computing the comparison. + template explicit CheckedTransformer(T mapping, F filter_function) { + + static_assert(detail::pair_adaptor::type>::value, + "mapping must produce value pairs"); + // Get the type of the contained item - requires a container have ::value_type + // if the type does not have first_type and second_type, these are both value_type + using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed + using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map + using local_item_t = typename IsMemberType::type; // Will convert bad types to good ones + // (const char * to std::string) + using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair + + // Make a local copy of the filter function, using a std::function if not one already + std::function filter_fn = filter_function; + + auto tfunc = [mapping]() { + std::string out("value in "); + out += detail::generate_map(detail::smart_deref(mapping)) + " OR {"; + out += detail::join( + detail::smart_deref(mapping), + [](const iteration_type_t &v) { return detail::to_string(detail::pair_adaptor::second(v)); }, + ","); + out.push_back('}'); + return out; + }; + + desc_function_ = tfunc; + + func_ = [mapping, tfunc, filter_fn](std::string &input) { + local_item_t b; + bool converted = detail::lexical_cast(input, b); + if(converted) { + if(filter_fn) { + b = filter_fn(b); + } + auto res = detail::search(mapping, b, filter_fn); + if(res.first) { + input = detail::value_string(detail::pair_adaptor::second(*res.second)); + return std::string{}; + } + } + for(const auto &v : detail::smart_deref(mapping)) { + auto output_string = detail::value_string(detail::pair_adaptor::second(v)); + if(output_string == input) { + return std::string(); + } + } + + return "Check " + input + " " + tfunc() + " FAILED"; + }; + } + + /// You can pass in as many filter functions as you like, they nest + template + CheckedTransformer(T &&mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args &&...other) + : CheckedTransformer( + std::forward(mapping), + [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, + other...) {} +}; + +/// Helper function to allow ignore_case to be passed to IsMember or Transform +inline std::string ignore_case(std::string item) { return detail::to_lower(item); } + +/// Helper function to allow ignore_underscore to be passed to IsMember or Transform +inline std::string ignore_underscore(std::string item) { return detail::remove_underscore(item); } + +/// Helper function to allow checks to ignore spaces to be passed to IsMember or Transform +inline std::string ignore_space(std::string item) { + item.erase(std::remove(std::begin(item), std::end(item), ' '), std::end(item)); + item.erase(std::remove(std::begin(item), std::end(item), '\t'), std::end(item)); + return item; +} + +/// Multiply a number by a factor using given mapping. +/// Can be used to write transforms for SIZE or DURATION inputs. +/// +/// Example: +/// With mapping = `{"b"->1, "kb"->1024, "mb"->1024*1024}` +/// one can recognize inputs like "100", "12kb", "100 MB", +/// that will be automatically transformed to 100, 14448, 104857600. +/// +/// Output number type matches the type in the provided mapping. +/// Therefore, if it is required to interpret real inputs like "0.42 s", +/// the mapping should be of a type or . +class AsNumberWithUnit : public Validator { + public: + /// Adjust AsNumberWithUnit behavior. + /// CASE_SENSITIVE/CASE_INSENSITIVE controls how units are matched. + /// UNIT_OPTIONAL/UNIT_REQUIRED throws ValidationError + /// if UNIT_REQUIRED is set and unit literal is not found. + enum Options { + CASE_SENSITIVE = 0, + CASE_INSENSITIVE = 1, + UNIT_OPTIONAL = 0, + UNIT_REQUIRED = 2, + DEFAULT = CASE_INSENSITIVE | UNIT_OPTIONAL + }; + + template + explicit AsNumberWithUnit(std::map mapping, + Options opts = DEFAULT, + const std::string &unit_name = "UNIT") { + description(generate_description(unit_name, opts)); + validate_mapping(mapping, opts); + + // transform function + func_ = [mapping, opts](std::string &input) -> std::string { + Number num; + + detail::rtrim(input); + if(input.empty()) { + throw ValidationError("Input is empty"); + } + + // Find split position between number and prefix + auto unit_begin = input.end(); + while(unit_begin > input.begin() && std::isalpha(*(unit_begin - 1), std::locale())) { + --unit_begin; + } + + std::string unit{unit_begin, input.end()}; + input.resize(static_cast(std::distance(input.begin(), unit_begin))); + detail::trim(input); + + if(opts & UNIT_REQUIRED && unit.empty()) { + throw ValidationError("Missing mandatory unit"); + } + if(opts & CASE_INSENSITIVE) { + unit = detail::to_lower(unit); + } + if(unit.empty()) { + if(!detail::lexical_cast(input, num)) { + throw ValidationError(std::string("Value ") + input + " could not be converted to " + + detail::type_name()); + } + // No need to modify input if no unit passed + return {}; + } + + // find corresponding factor + auto it = mapping.find(unit); + if(it == mapping.end()) { + throw ValidationError(unit + + " unit not recognized. " + "Allowed values: " + + detail::generate_map(mapping, true)); + } + + if(!input.empty()) { + bool converted = detail::lexical_cast(input, num); + if(!converted) { + throw ValidationError(std::string("Value ") + input + " could not be converted to " + + detail::type_name()); + } + // perform safe multiplication + bool ok = detail::checked_multiply(num, it->second); + if(!ok) { + throw ValidationError(detail::to_string(num) + " multiplied by " + unit + + " factor would cause number overflow. Use smaller value."); + } + } else { + num = static_cast(it->second); + } + + input = detail::to_string(num); + + return {}; + }; + } + + private: + /// Check that mapping contains valid units. + /// Update mapping for CASE_INSENSITIVE mode. + template static void validate_mapping(std::map &mapping, Options opts) { + for(auto &kv : mapping) { + if(kv.first.empty()) { + throw ValidationError("Unit must not be empty."); + } + if(!detail::isalpha(kv.first)) { + throw ValidationError("Unit must contain only letters."); + } + } + + // make all units lowercase if CASE_INSENSITIVE + if(opts & CASE_INSENSITIVE) { + std::map lower_mapping; + for(auto &kv : mapping) { + auto s = detail::to_lower(kv.first); + if(lower_mapping.count(s)) { + throw ValidationError(std::string("Several matching lowercase unit representations are found: ") + + s); + } + lower_mapping[detail::to_lower(kv.first)] = kv.second; + } + mapping = std::move(lower_mapping); + } + } + + /// Generate description like this: NUMBER [UNIT] + template static std::string generate_description(const std::string &name, Options opts) { + std::stringstream out; + out << detail::type_name() << ' '; + if(opts & UNIT_REQUIRED) { + out << name; + } else { + out << '[' << name << ']'; + } + return out.str(); + } +}; + +/// Converts a human-readable size string (with unit literal) to uin64_t size. +/// Example: +/// "100" => 100 +/// "1 b" => 100 +/// "10Kb" => 10240 // you can configure this to be interpreted as kilobyte (*1000) or kibibyte (*1024) +/// "10 KB" => 10240 +/// "10 kb" => 10240 +/// "10 kib" => 10240 // *i, *ib are always interpreted as *bibyte (*1024) +/// "10kb" => 10240 +/// "2 MB" => 2097152 +/// "2 EiB" => 2^61 // Units up to exibyte are supported +class AsSizeValue : public AsNumberWithUnit { + public: + using result_t = std::uint64_t; + + /// If kb_is_1000 is true, + /// interpret 'kb', 'k' as 1000 and 'kib', 'ki' as 1024 + /// (same applies to higher order units as well). + /// Otherwise, interpret all literals as factors of 1024. + /// The first option is formally correct, but + /// the second interpretation is more wide-spread + /// (see https://en.wikipedia.org/wiki/Binary_prefix). + explicit AsSizeValue(bool kb_is_1000) : AsNumberWithUnit(get_mapping(kb_is_1000)) { + if(kb_is_1000) { + description("SIZE [b, kb(=1000b), kib(=1024b), ...]"); + } else { + description("SIZE [b, kb(=1024b), ...]"); + } + } + + private: + /// Get mapping + static std::map init_mapping(bool kb_is_1000) { + std::map m; + result_t k_factor = kb_is_1000 ? 1000 : 1024; + result_t ki_factor = 1024; + result_t k = 1; + result_t ki = 1; + m["b"] = 1; + for(std::string p : {"k", "m", "g", "t", "p", "e"}) { + k *= k_factor; + ki *= ki_factor; + m[p] = k; + m[p + "b"] = k; + m[p + "i"] = ki; + m[p + "ib"] = ki; + } + return m; + } + + /// Cache calculated mapping + static std::map get_mapping(bool kb_is_1000) { + if(kb_is_1000) { + static auto m = init_mapping(true); + return m; + } else { + static auto m = init_mapping(false); + return m; + } + } +}; + +namespace detail { +/// Split a string into a program name and command line arguments +/// the string is assumed to contain a file name followed by other arguments +/// the return value contains is a pair with the first argument containing the program name and the second +/// everything else. +inline std::pair split_program_name(std::string commandline) { + // try to determine the programName + std::pair vals; + trim(commandline); + auto esp = commandline.find_first_of(' ', 1); + while(detail::check_path(commandline.substr(0, esp).c_str()) != path_type::file) { + esp = commandline.find_first_of(' ', esp + 1); + if(esp == std::string::npos) { + // if we have reached the end and haven't found a valid file just assume the first argument is the + // program name + if(commandline[0] == '"' || commandline[0] == '\'' || commandline[0] == '`') { + bool embeddedQuote = false; + auto keyChar = commandline[0]; + auto end = commandline.find_first_of(keyChar, 1); + while((end != std::string::npos) && (commandline[end - 1] == '\\')) { // deal with escaped quotes + end = commandline.find_first_of(keyChar, end + 1); + embeddedQuote = true; + } + if(end != std::string::npos) { + vals.first = commandline.substr(1, end - 1); + esp = end + 1; + if(embeddedQuote) { + vals.first = find_and_replace(vals.first, std::string("\\") + keyChar, std::string(1, keyChar)); + } + } else { + esp = commandline.find_first_of(' ', 1); + } + } else { + esp = commandline.find_first_of(' ', 1); + } + + break; + } + } + if(vals.first.empty()) { + vals.first = commandline.substr(0, esp); + rtrim(vals.first); + } + + // strip the program name + vals.second = (esp != std::string::npos) ? commandline.substr(esp + 1) : std::string{}; + ltrim(vals.second); + return vals; +} + +} // namespace detail +/// @} + + + + +class Option; +class App; + +/// This enum signifies the type of help requested +/// +/// This is passed in by App; all user classes must accept this as +/// the second argument. + +enum class AppFormatMode { + Normal, ///< The normal, detailed help + All, ///< A fully expanded help + Sub, ///< Used when printed as part of expanded subcommand +}; + +/// This is the minimum requirements to run a formatter. +/// +/// A user can subclass this is if they do not care at all +/// about the structure in CLI::Formatter. +class FormatterBase { + protected: + /// @name Options + ///@{ + + /// The width of the first column + std::size_t column_width_{30}; + + /// @brief The required help printout labels (user changeable) + /// Values are Needs, Excludes, etc. + std::map labels_{}; + + ///@} + /// @name Basic + ///@{ + + public: + FormatterBase() = default; + FormatterBase(const FormatterBase &) = default; + FormatterBase(FormatterBase &&) = default; + + /// Adding a destructor in this form to work around bug in GCC 4.7 + virtual ~FormatterBase() noexcept {} // NOLINT(modernize-use-equals-default) + + /// This is the key method that puts together help + virtual std::string make_help(const App *, std::string, AppFormatMode) const = 0; + + ///@} + /// @name Setters + ///@{ + + /// Set the "REQUIRED" label + void label(std::string key, std::string val) { labels_[key] = val; } + + /// Set the column width + void column_width(std::size_t val) { column_width_ = val; } + + ///@} + /// @name Getters + ///@{ + + /// Get the current value of a name (REQUIRED, etc.) + std::string get_label(std::string key) const { + if(labels_.find(key) == labels_.end()) + return key; + else + return labels_.at(key); + } + + /// Get the current column width + std::size_t get_column_width() const { return column_width_; } + + ///@} +}; + +/// This is a specialty override for lambda functions +class FormatterLambda final : public FormatterBase { + using funct_t = std::function; + + /// The lambda to hold and run + funct_t lambda_; + + public: + /// Create a FormatterLambda with a lambda function + explicit FormatterLambda(funct_t funct) : lambda_(std::move(funct)) {} + + /// Adding a destructor (mostly to make GCC 4.7 happy) + ~FormatterLambda() noexcept override {} // NOLINT(modernize-use-equals-default) + + /// This will simply call the lambda function + std::string make_help(const App *app, std::string name, AppFormatMode mode) const override { + return lambda_(app, name, mode); + } +}; + +/// This is the default Formatter for CLI11. It pretty prints help output, and is broken into quite a few +/// overridable methods, to be highly customizable with minimal effort. +class Formatter : public FormatterBase { + public: + Formatter() = default; + Formatter(const Formatter &) = default; + Formatter(Formatter &&) = default; + + /// @name Overridables + ///@{ + + /// This prints out a group of options with title + /// + virtual std::string make_group(std::string group, bool is_positional, std::vector opts) const; + + /// This prints out just the positionals "group" + virtual std::string make_positionals(const App *app) const; + + /// This prints out all the groups of options + std::string make_groups(const App *app, AppFormatMode mode) const; + + /// This prints out all the subcommands + virtual std::string make_subcommands(const App *app, AppFormatMode mode) const; + + /// This prints out a subcommand + virtual std::string make_subcommand(const App *sub) const; + + /// This prints out a subcommand in help-all + virtual std::string make_expanded(const App *sub) const; + + /// This prints out all the groups of options + virtual std::string make_footer(const App *app) const; + + /// This displays the description line + virtual std::string make_description(const App *app) const; + + /// This displays the usage line + virtual std::string make_usage(const App *app, std::string name) const; + + /// This puts everything together + std::string make_help(const App * /*app*/, std::string, AppFormatMode) const override; + + ///@} + /// @name Options + ///@{ + + /// This prints out an option help line, either positional or optional form + virtual std::string make_option(const Option *opt, bool is_positional) const { + std::stringstream out; + detail::format_help( + out, make_option_name(opt, is_positional) + make_option_opts(opt), make_option_desc(opt), column_width_); + return out.str(); + } + + /// @brief This is the name part of an option, Default: left column + virtual std::string make_option_name(const Option *, bool) const; + + /// @brief This is the options part of the name, Default: combined into left column + virtual std::string make_option_opts(const Option *) const; + + /// @brief This is the description. Default: Right column, on new line if left column too large + virtual std::string make_option_desc(const Option *) const; + + /// @brief This is used to print the name on the USAGE line + virtual std::string make_option_usage(const Option *opt) const; + + ///@} +}; + + + + +using results_t = std::vector; +/// callback function definition +using callback_t = std::function; + +class Option; +class App; + +using Option_p = std::unique_ptr