pax_global_header00006660000000000000000000000064142432076370014522gustar00rootroot0000000000000052 comment=e38516561c647522e2e2608f13eabdeab61d9a5d polyseed-1.0.0/000077500000000000000000000000001424320763700133445ustar00rootroot00000000000000polyseed-1.0.0/.gitignore000066400000000000000000000000671424320763700153370ustar00rootroot00000000000000bin/ obj/ *.user *.suo .vs x64/ Release/ Debug/ build/ polyseed-1.0.0/CMakeLists.txt000066400000000000000000000037151424320763700161120ustar00rootroot00000000000000# Copyright (c) 2020-2021 tevador # See LICENSE for licensing information cmake_minimum_required(VERSION 3.5) project(polyseed) set(polyseed_sources src/dependency.c src/features.c src/gf.c src/lang.c src/lang_cs.c src/lang_en.c src/lang_es.c src/lang_fr.c src/lang_it.c src/lang_jp.c src/lang_ko.c src/lang_pt.c src/lang_zh_s.c src/lang_zh_t.c src/polyseed.c src/storage.c) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) message(STATUS "Setting default build type: ${CMAKE_BUILD_TYPE}") endif() add_library(polyseed SHARED ${polyseed_sources}) set_property(TARGET polyseed PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET polyseed PROPERTY PUBLIC_HEADER include/polyseed.h) include_directories(polyseed include/) target_compile_definitions(polyseed PRIVATE POLYSEED_SHARED) set_target_properties(polyseed PROPERTIES VERSION 1.0.0 SOVERSION 1 C_STANDARD 11 C_STANDARD_REQUIRED ON) add_library(polyseed_static STATIC ${polyseed_sources}) set_property(TARGET polyseed_static PROPERTY POSITION_INDEPENDENT_CODE ON) include_directories(polyseed_static include/) target_compile_definitions(polyseed_static PRIVATE POLYSEED_STATIC) set_target_properties(polyseed_static PROPERTIES OUTPUT_NAME polyseed C_STANDARD 11 C_STANDARD_REQUIRED ON) add_executable(polyseed-tests tests/tests.c) include_directories(polyseed-tests include/) target_compile_definitions(polyseed-tests PRIVATE POLYSEED_STATIC) target_link_libraries(polyseed-tests PRIVATE polyseed_static) include(GNUInstallDirs) install(TARGETS polyseed polyseed_static RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) polyseed-1.0.0/LICENSE000066400000000000000000000167441424320763700143650ustar00rootroot00000000000000 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. polyseed-1.0.0/README.md000066400000000000000000000141211424320763700146220ustar00rootroot00000000000000## Features * 16 mnemonic words (36% shorter than the original 25-word seed) * embedded wallet birthday to optimize restoring from the seed * supports encryption by a passphrase * can store up to 3 custom bits * advanced checksum based on a polynomial code * seeds are incompatible between different coins Supported languages: 1. English 2. Japanese 3. Korean 4. Spanish 5. French 6. Italian 7. Czech 8. Portuguese 9. Chinese (Simplified) 10. Chinese (Traditional) For languages based on the latin alphabet, just the first 4 characters of each word need to be provided when restoring a seed. French and Spanish seeds can be input with or without accents. Wordlists are based on [BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md) with a few minor changes. ## Encoding Each word contains 11 bits of information. The data are encoded as follows: |word #| contents | |----|----------| |1 | checksum (11 bits) | |2-6 | secret seed (10 bits) + features (1 bit) | |7-16| secret seed (10 bits) + birthday (1 bit) | In total, there are 11 bits for the checksum, 150 bits for the secret seed, 5 feature bits and 10 birthday bits. Because the feature and birthday bits are non-random, they are spread over the 15 data words so that two different mnemonic phrases are unlikely to have the same word in the same position. ### Checksum The mnemonic phrase can be treated as a polynomial over GF(2048), which enables the use of an efficient Reed-Solomon error correction code with one check word. All single-word errors can be detected and all single-word erasures can be corrected without false positives. To prevent the seed from being accidentally used with a different cryptocurrency, a coin flag is XORed with the second word after the checksum is calculated. Checksum validation will fail unless the wallet software XORs the same coin flag with the second word when restoring. ### Feature bits There are 5 feature bits in the phrase. The first 2 bits are for internal use (one bit is used to indicate a seed encrypted by a passphrase and the other bit is reserved for a future update of the key derivation function). The remaining 3 bits are reserved for library users and can be enabled and accessed through the API. The library requires reserved bits to be zero (if not, `POLYSEED_ERR_UNSUPPORTED` is returned). ### Wallet birthday The mnemonic phrase stores the approximate date when the wallet was created. This allows the seed to be generated offline without access to the blockchain. Wallet software can easily convert a date to the corresponding block height when restoring a seed. The wallet birthday has a resolution of 2629746 seconds (1/12 of the average Gregorian year). All dates between November 2021 and February 2107 can be represented. ### Secret seed Polyseed was designed for the 128-bit security level. This corresponds to the security of the ed25519 elliptic curve, which requires [about 2126 operations](https://safecurves.cr.yp.to/rho.html) to break a key. The private key is derived from the 150-bit secret seed using PBKDF2-HMAC-SHA256 with 10000 iterations. The KDF parameters were selected to allow for the key to be derived by hardware wallets. Key generation is domain-separated by the wallet birthday month, seed features and the coin flag. The size of the secret seed and the domain separation parameters provide a comfortable security margin against [multi-target attacks](https://blog.cr.yp.to/20151120-batchattacks.html). ## Build ``` git clone https://github.com/tevador/polyseed.git cd polyseed mkdir build cd build cmake .. make ``` This will build a static library, a dynamic library and an executable with functional tests. ## API The API is documented in the public header file [polyseed.h](include/polyseed.h). The [polyseed-examples](https://github.com/tevador/polyseed-examples) repository contains language bindings and examples for C, C++ and C#. ## Dependency injection Polyseed uses dependency injection. The following 5 functions must be provided by calling `polyseed_inject`: | dependency | description | implemented in | |------------|-------------|----------------| | randbytes | Function to generate cryptographically secure random bytes | [libsodium](https://github.com/jedisct1/libsodium), [OpenSSL](https://github.com/openssl/openssl) | | pbkdf2_sha256 | Function to calculate PBKDF2 based on HMAC-SHA256 | [libsodium](https://github.com/jedisct1/libsodium), [OpenSSL](https://github.com/openssl/openssl) | | memzero | Function to securely erase memory | [libsodium](https://github.com/jedisct1/libsodium), [OpenSSL](https://github.com/openssl/openssl) | | u8_nfc | Function to convert a UTF8 string to the composed canonical form. | [Boost.Locale](https://www.boost.org/doc/libs/1_77_0/libs/locale/doc/html/), [utf8proc](https://github.com/JuliaStrings/utf8proc) | | u8_nfkd | Function to convert a UTF8 string to the decomposed canonical form. | [Boost.Locale](https://www.boost.org/doc/libs/1_77_0/libs/locale/doc/html/), [utf8proc](https://github.com/JuliaStrings/utf8proc) | These functions are implemented in widely used and tested libraries and it would be out of the scope of this library to implement them. It also reduces the security risks (polyseed doesn't contain any cryptographic code). The [polyseed-examples](https://github.com/tevador/polyseed-examples) repository contains examples how to inject the dependencies for C, C++ and C# projects. Additional 3 functions are optional dependencies. If they are not provided (the corresponding function pointer is `NULL`), polyseed will use the default implementation from the Standard C Library. | dependency | description | libc function | |------------|-------------|----------------| | time | Function to get the current unix time | `time_t time(time_t *arg);` | | alloc | Function to allocate memory | `void* malloc(size_t size);` | | free | Function to free memory | `void free(void* ptr)` | These are mostly needed for testing purposes, but can be also used to provide a custom memory allocator. ## License The library is released under the LGPLv3 license. No restrictions are placed on software that just links to the library. polyseed-1.0.0/include/000077500000000000000000000000001424320763700147675ustar00rootroot00000000000000polyseed-1.0.0/include/polyseed.h000066400000000000000000000244231424320763700167710ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef POLYSEED_H #define POLYSEED_H #include #include #include /* Number of words in the mnemonic phrase */ #define POLYSEED_NUM_WORDS 16 /* The size of the serialized seed */ #define POLYSEED_SIZE 32 /* The serialized seed. The contents are platform-independent. */ typedef uint8_t polyseed_storage[POLYSEED_SIZE]; /* The maximum possible length of a mnemonic phrase */ #define POLYSEED_STR_SIZE 360 /* Mnemonic phrase buffer */ typedef char polyseed_str[POLYSEED_STR_SIZE]; /* Dependency injection definitions */ typedef void polyseed_randbytes(void* result, size_t n); typedef void polyseed_pbkdf2(const uint8_t* pw, size_t pwlen, const uint8_t* salt, size_t saltlen, uint64_t iterations, uint8_t* key, size_t keylen); typedef size_t polyseed_transform(const char* str, polyseed_str norm); typedef time_t polyseed_time(time_t* t); typedef void polyseed_memzero(void* const ptr, const size_t len); typedef void* polyseed_malloc(size_t n); typedef void polyseed_mfree(void* ptr); typedef struct polyseed_dependency { /* Function to generate cryptographically secure random bytes */ polyseed_randbytes* randbytes; /* Function to calculate PBKDF2 based on HMAC-SHA256 */ polyseed_pbkdf2* pbkdf2_sha256; /* Function to securely erase memory */ polyseed_memzero* memzero; /* Function to convert a UTF8 string to the composed canonical form. */ polyseed_transform* u8_nfc; /* Function to convert a UTF8 string to the decomposed canonical form. */ polyseed_transform* u8_nfkd; /* OPTIONAL: Function to get the current unix time */ polyseed_time* time; /* OPTIONAL: Function to allocate memory */ polyseed_malloc* alloc; /* OPTIONAL: Function to free memory */ polyseed_mfree* free; } polyseed_dependency; /* List of coins. The seeds for different coins are incompatible. */ typedef enum polyseed_coin { POLYSEED_MONERO = 0, POLYSEED_AEON = 1, /* Other coins should be added here sequentially. */ /* The maximum supported value is 2047. */ /* When adding a new coin, please open a pull request: */ /* https://github.com/tevador/polyseed */ } polyseed_coin; typedef enum polyseed_status { /* Success */ POLYSEED_OK = 0, /* Wrong number of words in the phrase */ POLYSEED_ERR_NUM_WORDS = 1, /* Unknown language or unsupported words */ POLYSEED_ERR_LANG = 2, /* Checksum mismatch */ POLYSEED_ERR_CHECKSUM = 3, /* Unsupported seed features */ POLYSEED_ERR_UNSUPPORTED = 4, /* Invalid seed format */ POLYSEED_ERR_FORMAT = 5, /* Memory allocation failure */ POLYSEED_ERR_MEMORY = 6, } polyseed_status; /* Opaque struct with the seed data */ typedef struct polyseed_data polyseed_data; /* Opaque struct with language data */ typedef struct polyseed_lang polyseed_lang; /* Shared/static library definitions - define POLYSEED_SHARED when building a shared library - define POLYSEED_STATIC when building a static library - define POLYSEED_STATIC when linking to the static library */ #if defined(_WIN32) || defined(__CYGWIN__) #ifdef POLYSEED_SHARED #define POLYSEED_API __declspec(dllexport) #elif !defined(POLYSEED_STATIC) #define POLYSEED_API __declspec(dllimport) #else #define POLYSEED_API #endif #define POLYSEED_PRIVATE #else #ifdef POLYSEED_SHARED #define POLYSEED_API __attribute__ ((visibility ("default"))) #elif defined(POLYSEED_STATIC) #define POLYSEED_API __attribute__ ((visibility ("hidden"))) #else #define POLYSEED_API #endif #define POLYSEED_PRIVATE __attribute__ ((visibility ("hidden"))) #endif #ifdef __cplusplus extern "C" { #endif /** * Injects the dependencies of polyseed. Must be called before using the other * API functions. * * @param deps is a pointer to the structure with dependencies. May point to * a temporary variable (the struct gets copied internally). * Must not be NULL. */ POLYSEED_API void polyseed_inject(const polyseed_dependency* deps); /** * @return the number of supported languages. */ POLYSEED_API int polyseed_get_num_langs(void); /** * Returns a language by its index. * * @param i is the language index. Valid values are from zero to one less than * the number of supported languages. * WARNING: Callers should not rely on languages having a specific index. * The internal order of languages may change in future versions. * * @return opaque pointer to the language structure. */ POLYSEED_API const polyseed_lang* polyseed_get_lang(int i); /** * Returns the native name of a language. * * @param lang is the pointer to a language structure. Must not be NULL. * * @return the native name of the language in UTF8. */ POLYSEED_API const char* polyseed_get_lang_name(const polyseed_lang* lang); /** * Returns the English name of a language. * * @param lang is the pointer to a language structure. Must not be NULL. * * @return the English name of the language. */ POLYSEED_API const char* polyseed_get_lang_name_en(const polyseed_lang* lang); /** * Enables the optional seed features. Up to 3 different boolean flags are * supported. By default, all 3 features are disabled. * * @param mask is a bitmask of the enabled features. Only the least * significant 3 bits are used. * * @return the number of features that were enabled (0, 1, 2 or 3). */ POLYSEED_API int polyseed_enable_features(unsigned mask); /** * Creates a new seed with specific features. * * @param features are the values of the boolean features for this seed. Only * the least significant 3 bits are used. * @param seed_out is a pointer where the seed pointer will be stored. * Must not be NULL. * * @return POLYSEED_OK if the operation was successful. * POLYSEED_ERR_UNSUPPORTED if requesting features that have not been * enabled. * POLYSEED_ERR_MEMORY if memory allocation fails. * In case of an error, *seed_out is undefined. */ POLYSEED_API polyseed_status polyseed_create(unsigned features, polyseed_data** seed_out); /** * Securely erases the seed data and releases the allocated memory. * This function should be called for pointers obtained from the following * functions: * - polyseed_create * - polyseed_decode * - polyseed_load * * @param seed is the pointer to be freed. If NULL, no action is performed. */ POLYSEED_API void polyseed_free(polyseed_data* seed); /** * Gets the approximate date when the seed was created. * * @param seed is the pointer to the seed data. Must not be NULL. * * @return Unix timestamp with the approximate date when the seed was created. */ POLYSEED_API uint64_t polyseed_get_birthday(const polyseed_data* seed); /** * Gets the value of a seed feature flag. * * @param seed is the pointer to the seed data. Must not be NULL. * @param mask is the mask of the feature that is requested. * * @return nonzero value if the feature is set, zero otherwise. */ POLYSEED_API unsigned polyseed_get_feature(const polyseed_data* seed, unsigned mask); /** * Derives a secret key from the mnemonic seed. * * @param seed is a pointer to the seed data. Must not be NULL. * @param coin is the coin the secret key is intended for. * $param key_size is the required key size. * @param key_out is the buffer where the secret key will be stored. * Must not be NULL. */ POLYSEED_API void polyseed_keygen(const polyseed_data* seed, polyseed_coin coin, size_t key_size, uint8_t* key_out); /** * Encodes the mnemonic seed into a string. * * @param seed is a pointer to the seed data. Must not be NULL. * @param lang is a pointer to the language to encode the seed. * Must not be NULL. * @param coin is the coin the mnemonic phrase is intended for. * @param str_out is the buffer where the mnemonic phrase will be stored * as a C-style string. Must not be NULL. * * @return the length of the mnemonic phrase, excluding the terminating null. */ POLYSEED_API size_t polyseed_encode(const polyseed_data* seed, const polyseed_lang* lang, polyseed_coin coin, polyseed_str str_out); /** * Decodes the seed from a mnemonic phrase. * * @param str is the mnemonic phrase as a C-style string. Must not be NULL. * @param coin is the coin the mnemonic phrase is intended for. * @param lang_out is an optional pointer. IF not NULL, the detected language * of the mnemonic phrase will be stored there. * @param seed_out is a pointer where the seed pointer will be stored. * Must not be NULL. * * @return POLYSEED_OK if the operation was successful. Other values indicate * an error (in that case, *lang_out and *seed_out are undefined). */ POLYSEED_API polyseed_status polyseed_decode(const char* str, polyseed_coin coin, const polyseed_lang** lang_out, polyseed_data** seed_out); /** * Serializes the seed data in a platform-independent way. * * @param seed is the pointer to the seed data. Must not be NULL. * @param storage is the buffer where the seed will be stored. * Must not be NULL. */ POLYSEED_API void polyseed_store(const polyseed_data* seed, polyseed_storage storage); /** * Loads a serialized seed. * * @param storage is the buffer with the serialized seed. * Must not be NULL. * @param seed_out is a pointer where the seed pointer will be stored. * Must not be NULL. * * @return POLYSEED_OK if the operation was successful. Other values indicate * an error (in that case, *seed_out is undefined). */ POLYSEED_API polyseed_status polyseed_load(const polyseed_storage storage, polyseed_data** seed_out); /** * Encrypts or decrypts the seed data with a password. * * @param seed is the pointer to the seed data. Must not be NULL. * @param password is a user-provided password in UTF8. Must not be NULL. */ POLYSEED_API void polyseed_crypt(polyseed_data* seed, const char* password); /** * Determine if the seed contents are encrypted. The seed is considered * encrypted if the polyseed_crypt function has been applied to it * odd-number of times. * * @param seed is the pointer to the seed data. Must not be NULL. * * @return 1 if the seed is encrypted, 0 otherwise. */ POLYSEED_API int polyseed_is_encrypted(const polyseed_data* seed); #ifdef __cplusplus } #endif #endif polyseed-1.0.0/src/000077500000000000000000000000001424320763700141335ustar00rootroot00000000000000polyseed-1.0.0/src/birthday.h000066400000000000000000000014121424320763700161100ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef BIRTHDAY_H #define BIRTHDAY_H #include #include static_assert(sizeof(time_t) == 8, "time_t must be a 64-bit type."); #define EPOCH ((uint64_t)1635768000) /* 1st November 2021 12:00 UTC */ #define TIME_STEP ((uint64_t)2629746) /* 30.436875 days = 1/12 of the Gregorian year */ #define DATE_BITS 10 #define DATE_MASK ((1u << DATE_BITS) - 1) static inline unsigned birthday_encode(time_t time) { assert(time >= EPOCH); if (time == (time_t)-1) { return 0; } return ((time - EPOCH) / TIME_STEP) & DATE_MASK; } static inline uint64_t birthday_decode(unsigned birthday) { return EPOCH + birthday * TIME_STEP; } #endif polyseed-1.0.0/src/dependency.c000066400000000000000000000014461424320763700164220ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #include "polyseed.h" #include "dependency.h" #include "lang.h" #include #include POLYSEED_PRIVATE polyseed_dependency polyseed_deps; void polyseed_inject(const polyseed_dependency* deps) { polyseed_deps = *deps; if (polyseed_deps.time == NULL) { polyseed_deps.time = &time; } if (polyseed_deps.alloc == NULL) { polyseed_deps.alloc = &malloc; } if (polyseed_deps.free == NULL) { polyseed_deps.free = &free; } CHECK_DEPS(); /* self-test */ #ifndef NDEBUG for (int i = 0; i < polyseed_get_num_langs(); ++i) { const polyseed_lang* lang = polyseed_get_lang(i); polyseed_lang_check(lang); } #endif } polyseed-1.0.0/src/dependency.h000066400000000000000000000032611424320763700164240ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef DEPENDENCY_H #define DEPENDENCY_H #include "polyseed.h" #include #include extern polyseed_dependency polyseed_deps; #define CHECK_DEPS() do {\ assert(polyseed_deps.randbytes != NULL); \ assert(polyseed_deps.pbkdf2_sha256 != NULL); \ assert(polyseed_deps.memzero != NULL); \ assert(polyseed_deps.u8_nfc != NULL); \ assert(polyseed_deps.u8_nfkd != NULL); \ assert(polyseed_deps.time != NULL); \ assert(polyseed_deps.alloc != NULL); \ assert(polyseed_deps.free != NULL); } while(false) /* only normalize strings that contain non-ASCII characters */ static size_t utf8_nfkd_lazy(const char* str, polyseed_str norm) { size_t size = 0; const char* pos = str; while (*pos != '\0' && size < POLYSEED_STR_SIZE - 1) { if (*pos < 0) { /* non-ASCII */ return polyseed_deps.u8_nfkd(str, norm); } norm[size] = *pos; pos++; size++; } norm[size] = '\0'; return size; } #define GET_RANDOM_BYTES(a, b) polyseed_deps.randbytes((a), (b)) #define PBKDF2_SHA256(pw, pwlen, salt, saltlen, iter, key, keylen) \ polyseed_deps.pbkdf2_sha256((pw), (pwlen), (salt), (saltlen), (iter), \ (key), (keylen)) #define MEMZERO_LOC(x) polyseed_deps.memzero((void*)&(x), sizeof(x)) #define MEMZERO_PTR(x, type) polyseed_deps.memzero((x), sizeof(type)) #define UTF8_COMPOSE(a, b) polyseed_deps.u8_nfc((a), (b)) #define UTF8_DECOMPOSE(a, b) utf8_nfkd_lazy((a), (b)) #define GET_TIME() polyseed_deps.time(NULL) #define ALLOC(x) polyseed_deps.alloc(x) #define FREE(x) polyseed_deps.free(x) #endif polyseed-1.0.0/src/features.c000066400000000000000000000012511424320763700161140ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #include "polyseed.h" #include "features.h" static unsigned reserved_features = FEATURE_MASK ^ ENCRYPTED_MASK; POLYSEED_PRIVATE bool polyseed_features_supported(unsigned features) { return (features & reserved_features) == 0; } int polyseed_enable_features(unsigned mask) { int num_enabled = 0; reserved_features = FEATURE_MASK ^ ENCRYPTED_MASK; for (int i = 0; i < USER_FEATURES; ++i) { unsigned fmask = 1u << i; if (mask & fmask) { reserved_features ^= fmask; num_enabled++; } } return num_enabled; } polyseed-1.0.0/src/features.h000066400000000000000000000014411424320763700161220ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef FEATURES_H #define FEATURES_H #include "storage.h" #include #define FEATURE_BITS 5 #define FEATURE_MASK ((1u< */ /* See LICENSE for licensing information */ #include "gf.h" #include "storage.h" #include "birthday.h" #include "features.h" #include "dependency.h" #include #include #include POLYSEED_PRIVATE gf_elem polyseed_mul2_table[8] = { 5, 7, 1, 3, 13, 15, 9, 11 }; #define SHARE_BITS 10 /* bits of the secret per word */ #define DATA_WORDS POLYSEED_NUM_WORDS - POLY_NUM_CHECK_DIGITS #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) void polyseed_data_to_poly(const polyseed_data* data, gf_poly* poly) { unsigned extra_val = (data->features << DATE_BITS) | data->birthday; unsigned extra_bits = FEATURE_BITS + DATE_BITS; unsigned word_bits = 0; unsigned word_val = 0; unsigned secret_idx = 0; unsigned secret_val = data->secret[secret_idx]; unsigned secret_bits = CHAR_BIT; unsigned seed_rem_bits = SECRET_BITS - CHAR_BIT; for (int i = 0; i < DATA_WORDS; ++i) { while (word_bits < SHARE_BITS) { if (secret_bits == 0) { secret_idx++; secret_bits = MIN(seed_rem_bits, CHAR_BIT); secret_val = data->secret[secret_idx]; seed_rem_bits -= secret_bits; } unsigned chunk_bits = MIN(secret_bits, SHARE_BITS - word_bits); secret_bits -= chunk_bits; word_bits += chunk_bits; word_val <<= chunk_bits; word_val |= (secret_val >> secret_bits) & ((1u << chunk_bits) - 1); } word_val <<= 1; extra_bits--; word_val |= (extra_val >> extra_bits) & 1; poly->coeff[POLY_NUM_CHECK_DIGITS + i] = word_val; word_val = 0; word_bits = 0; } assert(seed_rem_bits == 0); assert(secret_bits == 0); assert(extra_bits == 0); } void polyseed_poly_to_data(const gf_poly* poly, polyseed_data* data) { data->birthday = 0; data->features = 0; memset(data->secret, 0, sizeof(data->secret)); data->checksum = poly->coeff[0]; unsigned extra_val = 0; unsigned extra_bits = 0; unsigned word_bits = 0; unsigned word_val = 0; unsigned secret_idx = 0; unsigned secret_bits = 0; unsigned seed_bits = 0; for (int i = POLY_NUM_CHECK_DIGITS; i < POLYSEED_NUM_WORDS; ++i) { word_val = poly->coeff[i]; extra_val <<= 1; extra_val |= word_val & 1; word_val >>= 1; word_bits = GF_BITS - 1; extra_bits++; while (word_bits > 0) { if (secret_bits == CHAR_BIT) { secret_idx++; seed_bits += secret_bits; secret_bits = 0; } unsigned chunk_bits = MIN(word_bits, CHAR_BIT - secret_bits); word_bits -= chunk_bits; unsigned chunk_mask = ((1u << chunk_bits) - 1); if (chunk_bits < CHAR_BIT) { data->secret[secret_idx] <<= chunk_bits; } data->secret[secret_idx] |= (word_val >> word_bits) & chunk_mask; secret_bits += chunk_bits; } } seed_bits += secret_bits; assert(word_bits == 0); assert(seed_bits == SECRET_BITS); assert(extra_bits == FEATURE_BITS + DATE_BITS); data->birthday = extra_val & DATE_MASK; data->features = extra_val >> DATE_BITS; } polyseed-1.0.0/src/gf.h000066400000000000000000000024131424320763700147000ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef GF_H #define GF_H #include "polyseed.h" #include #include #define GF_BITS 11 #define GF_SIZE (1u << GF_BITS) #define GF_MASK (GF_SIZE - 1) #define POLY_NUM_CHECK_DIGITS 1 typedef uint_fast16_t gf_elem; extern gf_elem polyseed_mul2_table[8]; typedef struct gf_poly { gf_elem coeff[POLYSEED_NUM_WORDS]; } gf_poly; static inline gf_elem gf_elem_mul2(gf_elem x) { if (x < 1024) { return 2 * x; } return polyseed_mul2_table[x % 8] + 16 * ((x - 1024) / 8); } static gf_elem gf_poly_eval(const gf_poly* poly) { /* Horner's method at x = 2 */ gf_elem result = poly->coeff[POLYSEED_NUM_WORDS - 1]; for (int i = POLYSEED_NUM_WORDS - 2; i >= 0; --i) { result = gf_elem_mul2(result) ^ poly->coeff[i]; } return result; } static inline void gf_poly_encode(gf_poly* message) { message->coeff[0] = gf_poly_eval(message); } static inline bool gf_poly_check(const gf_poly* message) { return gf_poly_eval(message) == 0; } POLYSEED_PRIVATE void polyseed_data_to_poly(const polyseed_data* data, gf_poly* poly); POLYSEED_PRIVATE void polyseed_poly_to_data(const gf_poly* poly, polyseed_data* data); #endif polyseed-1.0.0/src/lang.c000066400000000000000000000156201424320763700152240ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #include "polyseed.h" #include "dependency.h" #include "lang.h" #include #include #include extern const polyseed_lang polyseed_lang_en; extern const polyseed_lang polyseed_lang_jp; extern const polyseed_lang polyseed_lang_ko; extern const polyseed_lang polyseed_lang_es; extern const polyseed_lang polyseed_lang_zh_s; extern const polyseed_lang polyseed_lang_zh_t; extern const polyseed_lang polyseed_lang_fr; extern const polyseed_lang polyseed_lang_it; extern const polyseed_lang polyseed_lang_cs; extern const polyseed_lang polyseed_lang_pt; static const polyseed_lang* languages[] = { /* sorted wordlists first */ /* https://github.com/bitcoin/bips/blob/master/bip-0039/bip-0039-wordlists.md */ &polyseed_lang_en, &polyseed_lang_jp, &polyseed_lang_ko, &polyseed_lang_es, &polyseed_lang_fr, &polyseed_lang_it, &polyseed_lang_cs, &polyseed_lang_pt, &polyseed_lang_zh_s, &polyseed_lang_zh_t, }; #define NUM_LANGS sizeof(languages) / sizeof(uintptr_t) int polyseed_get_num_langs(void) { return NUM_LANGS; } const polyseed_lang* polyseed_get_lang(int i) { assert(i >= 0 && i < NUM_LANGS); return languages[i]; } const char* polyseed_get_lang_name(const polyseed_lang* lang) { assert(lang != NULL); return lang->name; } const char* polyseed_get_lang_name_en(const polyseed_lang* lang) { assert(lang != NULL); return lang->name_en; } #define NUM_CHARS_PREFIX 4 typedef int polyseed_cmp(const void* a, const void* b); static int lang_search(const polyseed_lang* lang, const char* word, polyseed_cmp* cmp) { if (lang->is_sorted) { const char** match = bsearch(&word, &lang->words[0], POLYSEED_LANG_SIZE, sizeof(const char*), cmp); if (match != NULL) { return match - &lang->words[0]; } return -1; } else { for (int j = 0; j < POLYSEED_LANG_SIZE; ++j) { if (0 == cmp(&word, &lang->words[j])) { return j; } } return -1; } } static int compare_str(const char* key, const char* elm) { for (;;) { if (*key == '\0' || *key != *elm) { break; } ++key; ++elm; } return (*key > *elm) - (*key < *elm); } static int compare_str_wrap(const void* a, const void* b) { const char* key = *(const char**)a; const char* elm = *(const char**)b; return compare_str(key, elm); } static int compare_prefix(const char* key, const char* elm, int n) { for (int i = 1; ; ++i) { if (*key == '\0') { break; } if (i >= n && key[1] == '\0') { break; } if (*key != *elm) { break; } ++key; ++elm; } return (*key > *elm) - (*key < *elm); } static int compare_prefix_wrap(const void* a, const void* b) { const char* key = *(const char**)a; const char* elm = *(const char**)b; return compare_prefix(key, elm, NUM_CHARS_PREFIX); } static int compare_str_noaccent(const char* key, const char* elm) { for (;;) { while (*key < 0) { /* skip non-ASCII */ ++key; } while (*elm < 0) { /* skip non-ASCII */ ++elm; } if (*key == '\0' || *key != *elm) { break; } ++key; ++elm; } return (*key > *elm) - (*key < *elm); } static int compare_str_noaccent_wrap(const void* a, const void* b) { const char* key = *(const char**)a; const char* elm = *(const char**)b; return compare_str_noaccent(key, elm); } static int compare_prefix_noaccent(const char* key, const char* elm, int n) { for (int i = 1; ; ++i) { while (*key < 0) { /* skip non-ASCII */ ++key; } while (*elm < 0) { /* skip non-ASCII */ ++elm; } if (*key == '\0') { break; } if (i >= n && key[1] == '\0') { break; } if (*key != *elm) { break; } ++key; ++elm; } while (*key < 0) { /* skip non-ASCII */ ++key; } while (*elm < 0) { /* skip non-ASCII */ ++elm; } return (*key > *elm) - (*key < *elm); } static int compare_prefix_noaccent_wrap(const void* a, const void* b) { const char* key = *(const char**)a; const char* elm = *(const char**)b; return compare_prefix_noaccent(key, elm, NUM_CHARS_PREFIX); } static polyseed_cmp* get_comparer(const polyseed_lang* lang) { if (lang->has_prefix) { if (lang->has_accents) { return &compare_prefix_noaccent_wrap; } else { return &compare_prefix_wrap; } } else { if (lang->has_accents) { return &compare_str_noaccent_wrap; } else { return &compare_str_wrap; } } } int polyseed_lang_find_word(const polyseed_lang* lang, const char* word) { polyseed_cmp* cmp = get_comparer(lang); return lang_search(lang, word, cmp); } bool polyseed_phrase_decode(const polyseed_phrase phrase, uint_fast16_t idx_out[POLYSEED_NUM_WORDS], const polyseed_lang** lang_out) { /* Iterate through all languages and try to find one where all the words are a match. */ for (int li = 0; li < NUM_LANGS; ++li) { const polyseed_lang* lang = languages[li]; polyseed_cmp* cmp = get_comparer(lang); bool success = true; for (int wi = 0; wi < POLYSEED_NUM_WORDS; ++wi) { const char* word = phrase[wi]; int value = lang_search(lang, word, cmp); if (value < 0) { success = false; break; } idx_out[wi] = value; } if (!success) { continue; } if (lang_out != NULL) { *lang_out = lang; } return true; } return false; } void polyseed_lang_check(const polyseed_lang* lang) { /* check the language is sorted correctly */ if (lang->is_sorted) { polyseed_cmp* cmp = get_comparer(lang); const char* prev = lang->words[0]; for (int i = 1; i < POLYSEED_LANG_SIZE; ++i) { const char* word = lang->words[i]; assert(("incorrectly sorted wordlist", cmp(&prev, &word) < 0)); prev = word; } } /* all words must be in NFKD */ for (int i = 0; i < POLYSEED_LANG_SIZE; ++i) { polyseed_str norm; const char* word = lang->words[i]; UTF8_DECOMPOSE(word, norm); assert(("incorrectly normalized wordlist", !strcmp(word, norm))); } /* accented languages must be composed */ assert(!lang->has_accents || lang->compose); /* normalized separator must be a space */ polyseed_str separator; UTF8_DECOMPOSE(lang->separator, separator); assert(!strcmp(" ", separator)); } polyseed-1.0.0/src/lang.h000066400000000000000000000015171424320763700152310ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef LANG_H #define LANG_H #include "polyseed.h" #include #define POLYSEED_LANG_SIZE 2048 typedef struct polyseed_lang { const char* name; const char* name_en; const char* separator; bool is_sorted; bool has_prefix; bool has_accents; bool compose; const char* words[POLYSEED_LANG_SIZE]; } polyseed_lang; typedef const char* polyseed_phrase[POLYSEED_NUM_WORDS]; POLYSEED_PRIVATE int polyseed_lang_find_word(const polyseed_lang* lang, const char* word); POLYSEED_PRIVATE bool polyseed_phrase_decode(const polyseed_phrase phrase, uint_fast16_t idx_out[POLYSEED_NUM_WORDS], const polyseed_lang** lang_out); POLYSEED_PRIVATE void polyseed_lang_check(const polyseed_lang* lang); #endif polyseed-1.0.0/src/lang_cs.c000066400000000000000000001117521424320763700157140ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 with the correct word order */ /* https://github.com/bitcoin/bips/pull/493#issuecomment-970511014 */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_cs = { .name = u8"čeština", .name_en = "Czech", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = false, .compose = false, .words = { "abdikace", "abeceda", "adresa", "agrese", "akce", "aktovka", "alej", "alkohol", "amputace", "ananas", "andulka", "anekdota", "anketa", "antika", "anulovat", "archa", "arogance", "asfalt", "asistent", "aspirace", "astma", "astronom", "atlas", "atletika", "atol", "autobus", "azyl", "babka", "bachor", "bacil", "baculka", "badatel", "bageta", "bagr", "bahno", "bakterie", "balada", "baletka", "balkon", "balonek", "balvan", "balza", "bambus", "bankomat", "barbar", "baret", "barman", "baroko", "barva", "baterka", "batoh", "bavlna", "bazalka", "bazilika", "bazuka", "bedna", "beran", "beseda", "bestie", "beton", "bezinka", "bezmoc", "beztak", "bicykl", "bidlo", "biftek", "bikiny", "bilance", "biograf", "biolog", "bitva", "bizon", "blahobyt", "blatouch", "blecha", "bledule", "blesk", "blikat", "blizna", "blokovat", "bloudit", "blud", "bobek", "bobr", "bodlina", "bodnout", "bohatost", "bojkot", "bojovat", "bokorys", "bolest", "borec", "borovice", "bota", "boubel", "bouchat", "bouda", "boule", "bourat", "boxer", "bradavka", "brambora", "branka", "bratr", "brepta", "briketa", "brko", "brloh", "bronz", "broskev", "brunetka", "brusinka", "brzda", "brzy", "bublina", "bubnovat", "buchta", "buditel", "budka", "budova", "bufet", "bujarost", "bukvice", "buldok", "bulva", "bunda", "bunkr", "burza", "butik", "buvol", "buzola", "bydlet", "bylina", "bytovka", "bzukot", "capart", "carevna", "cedr", "cedule", "cejch", "cejn", "cela", "celer", "celkem", "celnice", "cenina", "cennost", "cenovka", "centrum", "cenzor", "cestopis", "cetka", "chalupa", "chapadlo", "charita", "chata", "chechtat", "chemie", "chichot", "chirurg", "chlad", "chleba", "chlubit", "chmel", "chmura", "chobot", "chochol", "chodba", "cholera", "chomout", "chopit", "choroba", "chov", "chrapot", "chrlit", "chrt", "chrup", "chtivost", "chudina", "chutnat", "chvat", "chvilka", "chvost", "chyba", "chystat", "chytit", "cibule", "cigareta", "cihelna", "cihla", "cinkot", "cirkus", "cisterna", "citace", "citrus", "cizinec", "cizost", "clona", "cokoliv", "couvat", "ctitel", "ctnost", "cudnost", "cuketa", "cukr", "cupot", "cvaknout", "cval", "cvik", "cvrkot", "cyklista", "daleko", "dareba", "datel", "datum", "dcera", "debata", "dechovka", "decibel", "deficit", "deflace", "dekl", "dekret", "demokrat", "deprese", "derby", "deska", "detektiv", "dikobraz", "diktovat", "dioda", "diplom", "disk", "displej", "divadlo", "divoch", "dlaha", "dlouho", "dluhopis", "dnes", "dobro", "dobytek", "docent", "dochutit", "dodnes", "dohled", "dohoda", "dohra", "dojem", "dojnice", "doklad", "dokola", "doktor", "dokument", "dolar", "doleva", "dolina", "doma", "dominant", "domluvit", "domov", "donutit", "dopad", "dopis", "doplnit", "doposud", "doprovod", "dopustit", "dorazit", "dorost", "dort", "dosah", "doslov", "dostatek", "dosud", "dosyta", "dotaz", "dotek", "dotknout", "doufat", "doutnat", "dovozce", "dozadu", "doznat", "dozorce", "drahota", "drak", "dramatik", "dravec", "draze", "drdol", "drobnost", "drogerie", "drozd", "drsnost", "drtit", "drzost", "duben", "duchovno", "dudek", "duha", "duhovka", "dusit", "dusno", "dutost", "dvojice", "dvorec", "dynamit", "ekolog", "ekonomie", "elektron", "elipsa", "email", "emise", "emoce", "empatie", "epizoda", "epocha", "epopej", "epos", "esej", "esence", "eskorta", "eskymo", "etiketa", "euforie", "evoluce", "exekuce", "exkurze", "expedice", "exploze", "export", "extrakt", "facka", "fajfka", "fakulta", "fanatik", "fantazie", "farmacie", "favorit", "fazole", "federace", "fejeton", "fenka", "fialka", "figurant", "filozof", "filtr", "finance", "finta", "fixace", "fjord", "flanel", "flirt", "flotila", "fond", "fosfor", "fotbal", "fotka", "foton", "frakce", "freska", "fronta", "fukar", "funkce", "fyzika", "galeje", "garant", "genetika", "geolog", "gilotina", "glazura", "glejt", "golem", "golfista", "gotika", "graf", "gramofon", "granule", "grep", "gril", "grog", "groteska", "guma", "hadice", "hadr", "hala", "halenka", "hanba", "hanopis", "harfa", "harpuna", "havran", "hebkost", "hejkal", "hejno", "hejtman", "hektar", "helma", "hematom", "herec", "herna", "heslo", "hezky", "historik", "hladovka", "hlasivky", "hlava", "hledat", "hlen", "hlodavec", "hloh", "hloupost", "hltat", "hlubina", "hluchota", "hmat", "hmota", "hmyz", "hnis", "hnojivo", "hnout", "hoblina", "hoboj", "hoch", "hodiny", "hodlat", "hodnota", "hodovat", "hojnost", "hokej", "holinka", "holka", "holub", "homole", "honitba", "honorace", "horal", "horda", "horizont", "horko", "horlivec", "hormon", "hornina", "horoskop", "horstvo", "hospoda", "hostina", "hotovost", "houba", "houf", "houpat", "houska", "hovor", "hradba", "hranice", "hravost", "hrazda", "hrbolek", "hrdina", "hrdlo", "hrdost", "hrnek", "hrobka", "hromada", "hrot", "hrouda", "hrozen", "hrstka", "hrubost", "hryzat", "hubenost", "hubnout", "hudba", "hukot", "humr", "husita", "hustota", "hvozd", "hybnost", "hydrant", "hygiena", "hymna", "hysterik", "idylka", "ihned", "ikona", "iluze", "imunita", "infekce", "inflace", "inkaso", "inovace", "inspekce", "internet", "invalida", "investor", "inzerce", "ironie", "jablko", "jachta", "jahoda", "jakmile", "jakost", "jalovec", "jantar", "jarmark", "jaro", "jasan", "jasno", "jatka", "javor", "jazyk", "jedinec", "jedle", "jednatel", "jehlan", "jekot", "jelen", "jelito", "jemnost", "jenom", "jepice", "jeseter", "jevit", "jezdec", "jezero", "jinak", "jindy", "jinoch", "jiskra", "jistota", "jitrnice", "jizva", "jmenovat", "jogurt", "jurta", "kabaret", "kabel", "kabinet", "kachna", "kadet", "kadidlo", "kahan", "kajak", "kajuta", "kakao", "kaktus", "kalamita", "kalhoty", "kalibr", "kalnost", "kamera", "kamkoliv", "kamna", "kanibal", "kanoe", "kantor", "kapalina", "kapela", "kapitola", "kapka", "kaple", "kapota", "kapr", "kapusta", "kapybara", "karamel", "karotka", "karton", "kasa", "katalog", "katedra", "kauce", "kauza", "kavalec", "kazajka", "kazeta", "kazivost", "kdekoliv", "kdesi", "kedluben", "kemp", "keramika", "kino", "klacek", "kladivo", "klam", "klapot", "klasika", "klaun", "klec", "klenba", "klepat", "klesnout", "klid", "klima", "klisna", "klobouk", "klokan", "klopa", "kloub", "klubovna", "klusat", "kluzkost", "kmen", "kmitat", "kmotr", "kniha", "knot", "koalice", "koberec", "kobka", "kobliha", "kobyla", "kocour", "kohout", "kojenec", "kokos", "koktejl", "kolaps", "koleda", "kolize", "kolo", "komando", "kometa", "komik", "komnata", "komora", "kompas", "komunita", "konat", "koncept", "kondice", "konec", "konfese", "kongres", "konina", "konkurs", "kontakt", "konzerva", "kopanec", "kopie", "kopnout", "koprovka", "korbel", "korektor", "kormidlo", "koroptev", "korpus", "koruna", "koryto", "korzet", "kosatec", "kostka", "kotel", "kotleta", "kotoul", "koukat", "koupelna", "kousek", "kouzlo", "kovboj", "koza", "kozoroh", "krabice", "krach", "krajina", "kralovat", "krasopis", "kravata", "kredit", "krejcar", "kresba", "kreveta", "kriket", "kritik", "krize", "krkavec", "krmelec", "krmivo", "krocan", "krok", "kronika", "kropit", "kroupa", "krovka", "krtek", "kruhadlo", "krupice", "krutost", "krvinka", "krychle", "krypta", "krystal", "kryt", "kudlanka", "kufr", "kujnost", "kukla", "kulajda", "kulich", "kulka", "kulomet", "kultura", "kuna", "kupodivu", "kurt", "kurzor", "kutil", "kvalita", "kvasinka", "kvestor", "kynolog", "kyselina", "kytara", "kytice", "kytka", "kytovec", "kyvadlo", "labrador", "lachtan", "ladnost", "laik", "lakomec", "lamela", "lampa", "lanovka", "lasice", "laso", "lastura", "latinka", "lavina", "lebka", "leckdy", "leden", "lednice", "ledovka", "ledvina", "legenda", "legie", "legrace", "lehce", "lehkost", "lehnout", "lektvar", "lenochod", "lentilka", "lepenka", "lepidlo", "letadlo", "letec", "letmo", "letokruh", "levhart", "levitace", "levobok", "libra", "lichotka", "lidojed", "lidskost", "lihovina", "lijavec", "lilek", "limetka", "linie", "linka", "linoleum", "listopad", "litina", "litovat", "lobista", "lodivod", "logika", "logoped", "lokalita", "loket", "lomcovat", "lopata", "lopuch", "lord", "losos", "lotr", "loudal", "louh", "louka", "louskat", "lovec", "lstivost", "lucerna", "lucifer", "lump", "lusk", "lustrace", "lvice", "lyra", "lyrika", "lysina", "madam", "madlo", "magistr", "mahagon", "majetek", "majitel", "majorita", "makak", "makovice", "makrela", "malba", "malina", "malovat", "malvice", "maminka", "mandle", "manko", "marnost", "masakr", "maskot", "masopust", "matice", "matrika", "maturita", "mazanec", "mazivo", "mazlit", "mazurka", "mdloba", "mechanik", "meditace", "medovina", "melasa", "meloun", "mentolka", "metla", "metoda", "metr", "mezera", "migrace", "mihnout", "mihule", "mikina", "mikrofon", "milenec", "milimetr", "milost", "mimika", "mincovna", "minibar", "minomet", "minulost", "miska", "mistr", "mixovat", "mladost", "mlha", "mlhovina", "mlok", "mlsat", "mluvit", "mnich", "mnohem", "mobil", "mocnost", "modelka", "modlitba", "mohyla", "mokro", "molekula", "momentka", "monarcha", "monokl", "monstrum", "montovat", "monzun", "mosaz", "moskyt", "most", "motivace", "motorka", "motyka", "moucha", "moudrost", "mozaika", "mozek", "mozol", "mramor", "mravenec", "mrkev", "mrtvola", "mrzet", "mrzutost", "mstitel", "mudrc", "muflon", "mulat", "mumie", "munice", "muset", "mutace", "muzeum", "muzikant", "myslivec", "mzda", "nabourat", "nachytat", "nadace", "nadbytek", "nadhoz", "nadobro", "nadpis", "nahlas", "nahnat", "nahodile", "nahradit", "naivita", "najednou", "najisto", "najmout", "naklonit", "nakonec", "nakrmit", "nalevo", "namazat", "namluvit", "nanometr", "naoko", "naopak", "naostro", "napadat", "napevno", "naplnit", "napnout", "naposled", "naprosto", "narodit", "naruby", "narychlo", "nasadit", "nasekat", "naslepo", "nastat", "natolik", "navenek", "navrch", "navzdory", "nazvat", "nebe", "nechat", "necky", "nedaleko", "nedbat", "neduh", "negace", "nehet", "nehoda", "nejen", "nejprve", "neklid", "nelibost", "nemilost", "nemoc", "neochota", "neonka", "nepokoj", "nerost", "nerv", "nesmysl", "nesoulad", "netvor", "neuron", "nevina", "nezvykle", "nicota", "nijak", "nikam", "nikdy", "nikl", "nikterak", "nitro", "nocleh", "nohavice", "nominace", "nora", "norek", "nositel", "nosnost", "nouze", "noviny", "novota", "nozdra", "nuda", "nudle", "nuget", "nutit", "nutnost", "nutrie", "nymfa", "obal", "obarvit", "obava", "obdiv", "obec", "obehnat", "obejmout", "obezita", "obhajoba", "obilnice", "objasnit", "objekt", "obklopit", "oblast", "oblek", "obliba", "obloha", "obluda", "obnos", "obohatit", "obojek", "obout", "obrazec", "obrna", "obruba", "obrys", "obsah", "obsluha", "obstarat", "obuv", "obvaz", "obvinit", "obvod", "obvykle", "obyvatel", "obzor", "ocas", "ocel", "ocenit", "ochladit", "ochota", "ochrana", "ocitnout", "odboj", "odbyt", "odchod", "odcizit", "odebrat", "odeslat", "odevzdat", "odezva", "odhadce", "odhodit", "odjet", "odjinud", "odkaz", "odkoupit", "odliv", "odluka", "odmlka", "odolnost", "odpad", "odpis", "odplout", "odpor", "odpustit", "odpykat", "odrazka", "odsoudit", "odstup", "odsun", "odtok", "odtud", "odvaha", "odveta", "odvolat", "odvracet", "odznak", "ofina", "ofsajd", "ohlas", "ohnisko", "ohrada", "ohrozit", "ohryzek", "okap", "okenice", "oklika", "okno", "okouzlit", "okovy", "okrasa", "okres", "okrsek", "okruh", "okupant", "okurka", "okusit", "olejnina", "olizovat", "omak", "omeleta", "omezit", "omladina", "omlouvat", "omluva", "omyl", "onehdy", "opakovat", "opasek", "operace", "opice", "opilost", "opisovat", "opora", "opozice", "opravdu", "oproti", "orbital", "orchestr", "orgie", "orlice", "orloj", "ortel", "osada", "oschnout", "osika", "osivo", "oslava", "oslepit", "oslnit", "oslovit", "osnova", "osoba", "osolit", "ospalec", "osten", "ostraha", "ostuda", "ostych", "osvojit", "oteplit", "otisk", "otop", "otrhat", "otrlost", "otrok", "otruby", "otvor", "ovanout", "ovar", "oves", "ovlivnit", "ovoce", "oxid", "ozdoba", "pachatel", "pacient", "padouch", "pahorek", "pakt", "palanda", "palec", "palivo", "paluba", "pamflet", "pamlsek", "panenka", "panika", "panna", "panovat", "panstvo", "pantofle", "paprika", "parketa", "parodie", "parta", "paruka", "paryba", "paseka", "pasivita", "pastelka", "patent", "patrona", "pavouk", "pazneht", "pazourek", "pecka", "pedagog", "pejsek", "peklo", "peloton", "penalta", "pendrek", "penze", "periskop", "pero", "pestrost", "petarda", "petice", "petrolej", "pevnina", "pexeso", "pianista", "piha", "pijavice", "pikle", "piknik", "pilina", "pilnost", "pilulka", "pinzeta", "pipeta", "pisatel", "pistole", "pitevna", "pivnice", "pivovar", "placenta", "plakat", "plamen", "planeta", "plastika", "platit", "plavidlo", "plaz", "plech", "plemeno", "plenta", "ples", "pletivo", "plevel", "plivat", "plnit", "plno", "plocha", "plodina", "plomba", "plout", "pluk", "plyn", "pobavit", "pobyt", "pochod", "pocit", "poctivec", "podat", "podcenit", "podepsat", "podhled", "podivit", "podklad", "podmanit", "podnik", "podoba", "podpora", "podraz", "podstata", "podvod", "podzim", "poezie", "pohanka", "pohnutka", "pohovor", "pohroma", "pohyb", "pointa", "pojistka", "pojmout", "pokazit", "pokles", "pokoj", "pokrok", "pokuta", "pokyn", "poledne", "polibek", "polknout", "poloha", "polynom", "pomalu", "pominout", "pomlka", "pomoc", "pomsta", "pomyslet", "ponechat", "ponorka", "ponurost", "popadat", "popel", "popisek", "poplach", "poprosit", "popsat", "popud", "poradce", "porce", "porod", "porucha", "poryv", "posadit", "posed", "posila", "poskok", "poslanec", "posoudit", "pospolu", "postava", "posudek", "posyp", "potah", "potkan", "potlesk", "potomek", "potrava", "potupa", "potvora", "poukaz", "pouto", "pouzdro", "povaha", "povidla", "povlak", "povoz", "povrch", "povstat", "povyk", "povzdech", "pozdrav", "pozemek", "poznatek", "pozor", "pozvat", "pracovat", "prahory", "praktika", "prales", "praotec", "praporek", "prase", "pravda", "princip", "prkno", "probudit", "procento", "prodej", "profese", "prohra", "projekt", "prolomit", "promile", "pronikat", "propad", "prorok", "prosba", "proton", "proutek", "provaz", "prskavka", "prsten", "prudkost", "prut", "prvek", "prvohory", "psanec", "psovod", "pstruh", "ptactvo", "puberta", "puch", "pudl", "pukavec", "puklina", "pukrle", "pult", "pumpa", "punc", "pupen", "pusa", "pusinka", "pustina", "putovat", "putyka", "pyramida", "pysk", "pytel", "racek", "rachot", "radiace", "radnice", "radon", "raft", "ragby", "raketa", "rakovina", "rameno", "rampouch", "rande", "rarach", "rarita", "rasovna", "rastr", "ratolest", "razance", "razidlo", "reagovat", "reakce", "recept", "redaktor", "referent", "reflex", "rejnok", "reklama", "rekord", "rekrut", "rektor", "reputace", "revize", "revma", "revolver", "rezerva", "riskovat", "riziko", "robotika", "rodokmen", "rohovka", "rokle", "rokoko", "romaneto", "ropovod", "ropucha", "rorejs", "rosol", "rostlina", "rotmistr", "rotoped", "rotunda", "roubenka", "roucho", "roup", "roura", "rovina", "rovnice", "rozbor", "rozchod", "rozdat", "rozeznat", "rozhodce", "rozinka", "rozjezd", "rozkaz", "rozloha", "rozmar", "rozpad", "rozruch", "rozsah", "roztok", "rozum", "rozvod", "rubrika", "ruchadlo", "rukavice", "rukopis", "ryba", "rybolov", "rychlost", "rydlo", "rypadlo", "rytina", "ryzost", "sadista", "sahat", "sako", "samec", "samizdat", "samota", "sanitka", "sardinka", "sasanka", "satelit", "sazba", "sazenice", "sbor", "schovat", "sebranka", "secese", "sedadlo", "sediment", "sedlo", "sehnat", "sejmout", "sekera", "sekta", "sekunda", "sekvoje", "semeno", "seno", "servis", "sesadit", "seshora", "seskok", "seslat", "sestra", "sesuv", "sesypat", "setba", "setina", "setkat", "setnout", "setrvat", "sever", "seznam", "shoda", "shrnout", "sifon", "silnice", "sirka", "sirotek", "sirup", "situace", "skafandr", "skalisko", "skanzen", "skaut", "skeptik", "skica", "skladba", "sklenice", "sklo", "skluz", "skoba", "skokan", "skoro", "skripta", "skrz", "skupina", "skvost", "skvrna", "slabika", "sladidlo", "slanina", "slast", "slavnost", "sledovat", "slepec", "sleva", "slezina", "slib", "slina", "sliznice", "slon", "sloupek", "slovo", "sluch", "sluha", "slunce", "slupka", "slza", "smaragd", "smetana", "smilstvo", "smlouva", "smog", "smrad", "smrk", "smrtka", "smutek", "smysl", "snad", "snaha", "snob", "sobota", "socha", "sodovka", "sokol", "sopka", "sotva", "souboj", "soucit", "soudce", "souhlas", "soulad", "soumrak", "souprava", "soused", "soutok", "souviset", "spalovna", "spasitel", "spis", "splav", "spodek", "spojenec", "spolu", "sponzor", "spornost", "spousta", "sprcha", "spustit", "sranda", "sraz", "srdce", "srna", "srnec", "srovnat", "srpen", "srst", "srub", "stanice", "starosta", "statika", "stavba", "stehno", "stezka", "stodola", "stolek", "stopa", "storno", "stoupat", "strach", "stres", "strhnout", "strom", "struna", "studna", "stupnice", "stvol", "styk", "subjekt", "subtropy", "suchar", "sudost", "sukno", "sundat", "sunout", "surikata", "surovina", "svah", "svalstvo", "svatba", "svazek", "svetr", "svisle", "svitek", "svoboda", "svodidlo", "svorka", "svrab", "sykavka", "sykot", "synek", "synovec", "sypat", "sypkost", "syrovost", "sysel", "sytost", "tabletka", "tabule", "tahoun", "tajemno", "tajfun", "tajga", "tajit", "tajnost", "taktika", "tamhle", "tampon", "tancovat", "tanec", "tanker", "tapeta", "tavenina", "tazatel", "technika", "tehdy", "tekutina", "telefon", "temnota", "tendence", "tenista", "tenor", "teplota", "tepna", "teprve", "terapie", "termoska", "textil", "ticho", "tiskopis", "titulek", "tkadlec", "tkanina", "tlapka", "tleskat", "tlukot", "tlupa", "tmel", "toaleta", "topinka", "topol", "torzo", "touha", "toulec", "tradice", "traktor", "tramp", "trasa", "traverza", "trefit", "trest", "trezor", "trhavina", "trhlina", "trochu", "trojice", "troska", "trouba", "trpce", "trpitel", "trpkost", "trubec", "truchlit", "truhlice", "trus", "trvat", "tudy", "tuhnout", "tuhost", "tundra", "turista", "turnaj", "tuzemsko", "tvaroh", "tvorba", "tvrdost", "tvrz", "tygr", "tykev", "ubohost", "uboze", "ubrat", "ubrousek", "ubrus", "ubytovna", "ucho", "uctivost", "udivit", "uhradit", "ujednat", "ujistit", "ujmout", "ukazatel", "uklidnit", "uklonit", "ukotvit", "ukrojit", "ulice", "ulita", "ulovit", "umyvadlo", "unavit", "uniforma", "uniknout", "upadnout", "uplatnit", "uplynout", "upoutat", "upravit", "uran", "urazit", "usednout", "usilovat", "usmrtit", "usnadnit", "usnout", "usoudit", "ustlat", "ustrnout", "utahovat", "utkat", "utlumit", "utonout", "utopenec", "utrousit", "uvalit", "uvolnit", "uvozovka", "uzdravit", "uzel", "uzenina", "uzlina", "uznat", "vagon", "valcha", "valoun", "vana", "vandal", "vanilka", "varan", "varhany", "varovat", "vcelku", "vchod", "vdova", "vedro", "vegetace", "vejce", "velbloud", "veletrh", "velitel", "velmoc", "velryba", "venkov", "veranda", "verze", "veselka", "veskrze", "vesnice", "vespodu", "vesta", "veterina", "veverka", "vibrace", "vichr", "videohra", "vidina", "vidle", "vila", "vinice", "viset", "vitalita", "vize", "vizitka", "vjezd", "vklad", "vkus", "vlajka", "vlak", "vlasec", "vlevo", "vlhkost", "vliv", "vlnovka", "vloupat", "vnucovat", "vnuk", "voda", "vodivost", "vodoznak", "vodstvo", "vojensky", "vojna", "vojsko", "volant", "volba", "volit", "volno", "voskovka", "vozidlo", "vozovna", "vpravo", "vrabec", "vracet", "vrah", "vrata", "vrba", "vrcholek", "vrhat", "vrstva", "vrtule", "vsadit", "vstoupit", "vstup", "vtip", "vybavit", "vybrat", "vychovat", "vydat", "vydra", "vyfotit", "vyhledat", "vyhnout", "vyhodit", "vyhradit", "vyhubit", "vyjasnit", "vyjet", "vyjmout", "vyklopit", "vykonat", "vylekat", "vymazat", "vymezit", "vymizet", "vymyslet", "vynechat", "vynikat", "vynutit", "vypadat", "vyplatit", "vypravit", "vypustit", "vyrazit", "vyrovnat", "vyrvat", "vyslovit", "vysoko", "vystavit", "vysunout", "vysypat", "vytasit", "vytesat", "vytratit", "vyvinout", "vyvolat", "vyvrhel", "vyzdobit", "vyznat", "vzadu", "vzbudit", "vzchopit", "vzdor", "vzduch", "vzdychat", "vzestup", "vzhledem", "vzkaz", "vzlykat", "vznik", "vzorek", "vzpoura", "vztah", "vztek", "xylofon", "zabrat", "zabydlet", "zachovat", "zadarmo", "zadusit", "zafoukat", "zahltit", "zahodit", "zahrada", "zahynout", "zajatec", "zajet", "zajistit", "zaklepat", "zakoupit", "zalepit", "zamezit", "zamotat", "zamyslet", "zanechat", "zanikat", "zaplatit", "zapojit", "zapsat", "zarazit", "zastavit", "zasunout", "zatajit", "zatemnit", "zatknout", "zaujmout", "zavalit", "zavelet", "zavinit", "zavolat", "zavrtat", "zazvonit", "zbavit", "zbrusu", "zbudovat", "zbytek", "zdaleka", "zdarma", "zdatnost", "zdivo", "zdobit", "zdroj", "zdvih", "zdymadlo", "zelenina", "zeman", "zemina", "zeptat", "zezadu", "zezdola", "zhatit", "zhltnout", "zhluboka", "zhotovit", "zhruba", "zima", "zimnice", "zjemnit", "zklamat", "zkoumat", "zkratka", "zkumavka", "zlato", "zlehka", "zloba", "zlom", "zlost", "zlozvyk", "zmapovat", "zmar", "zmatek", "zmije", "zmizet", "zmocnit", "zmodrat", "zmrzlina", "zmutovat", "znak", "znalost", "znamenat", "znovu", "zobrazit", "zotavit", "zoubek", "zoufale", "zplodit", "zpomalit", "zprava", "zprostit", "zprudka", "zprvu", "zrada", "zranit", "zrcadlo", "zrnitost", "zrno", "zrovna", "zrychlit", "zrzavost", "zticha", "ztratit", "zubovina", "zubr", "zvednout", "zvenku", "zvesela", "zvon", "zvrat", "zvukovod", "zvyk", } }; polyseed-1.0.0/src/lang_en.c000066400000000000000000001061521424320763700157070ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_en = { .name = "English", .name_en = "English", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = false, .compose = false, .words = { "abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo", } }; polyseed-1.0.0/src/lang_es.c000066400000000000000000001177701424320763700157240ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 with an accent-insensitive word order */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_es = { .name = u8"español", .name_en = "Spanish", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = true, .compose = true, .words = { u8"ábaco", u8"abdomen", u8"abeja", u8"abierto", u8"abogado", u8"abono", u8"aborto", u8"abrazo", u8"abrir", u8"abuelo", u8"abuso", u8"acabar", u8"academia", u8"acceso", u8"acción", u8"aceite", u8"acelga", u8"acento", u8"aceptar", u8"ácido", u8"aclarar", u8"acné", u8"acoger", u8"acoso", u8"activo", u8"acto", u8"actriz", u8"actuar", u8"acudir", u8"acuerdo", u8"acusar", u8"adicto", u8"admitir", u8"adoptar", u8"adorno", u8"aduana", u8"adulto", u8"aéreo", u8"afectar", u8"afición", u8"afinar", u8"afirmar", u8"ágil", u8"agitar", u8"agonía", u8"agosto", u8"agotar", u8"agregar", u8"agrio", u8"agua", u8"agudo", u8"águila", u8"aguja", u8"ahogo", u8"ahorro", u8"aire", u8"aislar", u8"ajedrez", u8"ajeno", u8"ajuste", u8"alacrán", u8"alambre", u8"alarma", u8"alba", u8"álbum", u8"alcalde", u8"aldea", u8"alegre", u8"alejar", u8"alerta", u8"aleta", u8"alfiler", u8"alga", u8"algodón", u8"aliado", u8"aliento", u8"alivio", u8"alma", u8"almeja", u8"almíbar", u8"altar", u8"alteza", u8"altivo", u8"alto", u8"altura", u8"alumno", u8"alzar", u8"amable", u8"amante", u8"amapola", u8"amargo", u8"amasar", u8"ámbar", u8"ámbito", u8"ameno", u8"amigo", u8"amistad", u8"amor", u8"amparo", u8"amplio", u8"añadir", u8"ancho", u8"anciano", u8"ancla", u8"andar", u8"andén", u8"añejo", u8"anemia", u8"ángulo", u8"anillo", u8"ánimo", u8"anís", u8"año", u8"anotar", u8"antena", u8"antiguo", u8"antojo", u8"anual", u8"anular", u8"anuncio", u8"apagar", u8"aparato", u8"apetito", u8"apio", u8"aplicar", u8"apodo", u8"aporte", u8"apoyo", u8"aprender", u8"aprobar", u8"apuesta", u8"apuro", u8"arado", u8"araña", u8"arar", u8"árbitro", u8"árbol", u8"arbusto", u8"archivo", u8"arco", u8"arder", u8"ardilla", u8"arduo", u8"área", u8"árido", u8"aries", u8"armonía", u8"arnés", u8"aroma", u8"arpa", u8"arpón", u8"arreglo", u8"arroz", u8"arruga", u8"arte", u8"artista", u8"asa", u8"asado", u8"asalto", u8"ascenso", u8"asegurar", u8"aseo", u8"asesor", u8"asiento", u8"asilo", u8"asistir", u8"asno", u8"asombro", u8"áspero", u8"astilla", u8"astro", u8"astuto", u8"asumir", u8"asunto", u8"atajo", u8"ataque", u8"atar", u8"atento", u8"ateo", u8"ático", u8"atleta", u8"átomo", u8"atraer", u8"atroz", u8"atún", u8"audaz", u8"audio", u8"auge", u8"aula", u8"aumento", u8"ausente", u8"autor", u8"aval", u8"avance", u8"avaro", u8"ave", u8"avellana", u8"avena", u8"avestruz", u8"avión", u8"aviso", u8"ayer", u8"ayuda", u8"ayuno", u8"azafrán", u8"azar", u8"azote", u8"azúcar", u8"azufre", u8"azul", u8"baba", u8"babor", u8"bache", u8"bahía", u8"baile", u8"bajar", u8"balanza", u8"balcón", u8"balde", u8"bambú", u8"banco", u8"banda", u8"baño", u8"barba", u8"barco", u8"barniz", u8"barro", u8"báscula", u8"bastón", u8"basura", u8"batalla", u8"batería", u8"batir", u8"batuta", u8"baúl", u8"bazar", u8"bebé", u8"bebida", u8"bello", u8"besar", u8"beso", u8"bestia", u8"bicho", u8"bien", u8"bingo", u8"blanco", u8"bloque", u8"blusa", u8"boa", u8"bobina", u8"bobo", u8"boca", u8"bocina", u8"boda", u8"bodega", u8"boina", u8"bola", u8"bolero", u8"bolsa", u8"bomba", u8"bondad", u8"bonito", u8"bono", u8"bonsái", u8"borde", u8"borrar", u8"bosque", u8"bote", u8"botín", u8"bóveda", u8"bozal", u8"bravo", u8"brazo", u8"brecha", u8"breve", u8"brillo", u8"brinco", u8"brisa", u8"broca", u8"broma", u8"bronce", u8"brote", u8"bruja", u8"brusco", u8"bruto", u8"buceo", u8"bucle", u8"bueno", u8"buey", u8"bufanda", u8"bufón", u8"búho", u8"buitre", u8"bulto", u8"burbuja", u8"burla", u8"burro", u8"buscar", u8"butaca", u8"buzón", u8"caballo", u8"cabeza", u8"cabina", u8"cabra", u8"cacao", u8"cadáver", u8"cadena", u8"caer", u8"café", u8"caída", u8"caimán", u8"caja", u8"cajón", u8"cal", u8"calamar", u8"calcio", u8"caldo", u8"calidad", u8"calle", u8"calma", u8"calor", u8"calvo", u8"cama", u8"cambio", u8"camello", u8"camino", u8"campo", u8"caña", u8"cáncer", u8"candil", u8"canela", u8"canguro", u8"canica", u8"cañón", u8"canto", u8"caoba", u8"caos", u8"capaz", u8"capitán", u8"capote", u8"captar", u8"capucha", u8"cara", u8"carbón", u8"cárcel", u8"careta", u8"carga", u8"cariño", u8"carne", u8"carpeta", u8"carro", u8"carta", u8"casa", u8"casco", u8"casero", u8"caspa", u8"castor", u8"catorce", u8"catre", u8"caudal", u8"causa", u8"cazo", u8"cebolla", u8"ceder", u8"cedro", u8"celda", u8"célebre", u8"celoso", u8"célula", u8"cemento", u8"ceniza", u8"centro", u8"cerca", u8"cerdo", u8"cereza", u8"cero", u8"cerrar", u8"certeza", u8"césped", u8"cetro", u8"chacal", u8"chaleco", u8"champú", u8"chancla", u8"chapa", u8"charla", u8"chico", u8"chiste", u8"chivo", u8"choque", u8"choza", u8"chuleta", u8"chupar", u8"ciclón", u8"ciego", u8"cielo", u8"cien", u8"cierto", u8"cifra", u8"cigarro", u8"cima", u8"cinco", u8"cine", u8"cinta", u8"ciprés", u8"circo", u8"ciruela", u8"cisne", u8"cita", u8"ciudad", u8"clamor", u8"clan", u8"claro", u8"clase", u8"clave", u8"cliente", u8"clima", u8"clínica", u8"cobre", u8"cocción", u8"cochino", u8"cocina", u8"coco", u8"código", u8"codo", u8"cofre", u8"coger", u8"cohete", u8"cojín", u8"cojo", u8"cola", u8"colcha", u8"colegio", u8"colgar", u8"colina", u8"collar", u8"colmo", u8"columna", u8"combate", u8"comer", u8"comida", u8"cómodo", u8"compra", u8"conde", u8"conejo", u8"conga", u8"conocer", u8"consejo", u8"contar", u8"copa", u8"copia", u8"corazón", u8"corbata", u8"corcho", u8"cordón", u8"corona", u8"correr", u8"coser", u8"cosmos", u8"costa", u8"cráneo", u8"cráter", u8"crear", u8"crecer", u8"creído", u8"crema", u8"cría", u8"crimen", u8"cripta", u8"crisis", u8"cromo", u8"crónica", u8"croqueta", u8"crudo", u8"cruz", u8"cuadro", u8"cuarto", u8"cuatro", u8"cubo", u8"cubrir", u8"cuchara", u8"cuello", u8"cuento", u8"cuerda", u8"cuesta", u8"cueva", u8"cuidar", u8"culebra", u8"culpa", u8"culto", u8"cumbre", u8"cumplir", u8"cuna", u8"cuneta", u8"cuota", u8"cupón", u8"cúpula", u8"curar", u8"curioso", u8"curso", u8"curva", u8"cutis", u8"dama", u8"danza", u8"dar", u8"dardo", u8"dátil", u8"deber", u8"débil", u8"década", u8"decir", u8"dedo", u8"defensa", u8"definir", u8"dejar", u8"delfín", u8"delgado", u8"delito", u8"demora", u8"denso", u8"dental", u8"deporte", u8"derecho", u8"derrota", u8"desayuno", u8"deseo", u8"desfile", u8"desnudo", u8"destino", u8"desvío", u8"detalle", u8"detener", u8"deuda", u8"día", u8"diablo", u8"diadema", u8"diamante", u8"diana", u8"diario", u8"dibujo", u8"dictar", u8"diente", u8"dieta", u8"diez", u8"difícil", u8"digno", u8"dilema", u8"diluir", u8"dinero", u8"directo", u8"dirigir", u8"disco", u8"diseño", u8"disfraz", u8"diva", u8"divino", u8"doble", u8"doce", u8"dolor", u8"domingo", u8"don", u8"donar", u8"dorado", u8"dormir", u8"dorso", u8"dos", u8"dosis", u8"dragón", u8"droga", u8"ducha", u8"duda", u8"duelo", u8"dueño", u8"dulce", u8"dúo", u8"duque", u8"durar", u8"dureza", u8"duro", u8"ébano", u8"ebrio", u8"echar", u8"eco", u8"ecuador", u8"edad", u8"edición", u8"edificio", u8"editor", u8"educar", u8"efecto", u8"eficaz", u8"eje", u8"ejemplo", u8"elefante", u8"elegir", u8"elemento", u8"elevar", u8"elipse", u8"élite", u8"elixir", u8"elogio", u8"eludir", u8"embudo", u8"emitir", u8"emoción", u8"empate", u8"empeño", u8"empleo", u8"empresa", u8"enano", u8"encargo", u8"enchufe", u8"encía", u8"enemigo", u8"enero", u8"enfado", u8"enfermo", u8"engaño", u8"enigma", u8"enlace", u8"enorme", u8"enredo", u8"ensayo", u8"enseñar", u8"entero", u8"entrar", u8"envase", u8"envío", u8"época", u8"equipo", u8"erizo", u8"escala", u8"escena", u8"escolar", u8"escribir", u8"escudo", u8"esencia", u8"esfera", u8"esfuerzo", u8"espada", u8"espejo", u8"espía", u8"esposa", u8"espuma", u8"esquí", u8"estar", u8"este", u8"estilo", u8"estufa", u8"etapa", u8"eterno", u8"ética", u8"etnia", u8"evadir", u8"evaluar", u8"evento", u8"evitar", u8"exacto", u8"examen", u8"exceso", u8"excusa", u8"exento", u8"exigir", u8"exilio", u8"existir", u8"éxito", u8"experto", u8"explicar", u8"exponer", u8"extremo", u8"fábrica", u8"fábula", u8"fachada", u8"fácil", u8"factor", u8"faena", u8"faja", u8"falda", u8"fallo", u8"falso", u8"faltar", u8"fama", u8"familia", u8"famoso", u8"faraón", u8"farmacia", u8"farol", u8"farsa", u8"fase", u8"fatiga", u8"fauna", u8"favor", u8"fax", u8"febrero", u8"fecha", u8"feliz", u8"feo", u8"feria", u8"feroz", u8"fértil", u8"fervor", u8"festín", u8"fiable", u8"fianza", u8"fiar", u8"fibra", u8"ficción", u8"ficha", u8"fideo", u8"fiebre", u8"fiel", u8"fiera", u8"fiesta", u8"figura", u8"fijar", u8"fijo", u8"fila", u8"filete", u8"filial", u8"filtro", u8"fin", u8"finca", u8"fingir", u8"finito", u8"firma", u8"flaco", u8"flauta", u8"flecha", u8"flor", u8"flota", u8"fluir", u8"flujo", u8"flúor", u8"fobia", u8"foca", u8"fogata", u8"fogón", u8"folio", u8"folleto", u8"fondo", u8"forma", u8"forro", u8"fortuna", u8"forzar", u8"fosa", u8"foto", u8"fracaso", u8"frágil", u8"franja", u8"frase", u8"fraude", u8"freír", u8"freno", u8"fresa", u8"frío", u8"frito", u8"fruta", u8"fuego", u8"fuente", u8"fuerza", u8"fuga", u8"fumar", u8"función", u8"funda", u8"furgón", u8"furia", u8"fusil", u8"fútbol", u8"futuro", u8"gacela", u8"gafas", u8"gaita", u8"gajo", u8"gala", u8"galería", u8"gallo", u8"gamba", u8"ganar", u8"gancho", u8"ganga", u8"ganso", u8"garaje", u8"garza", u8"gasolina", u8"gastar", u8"gato", u8"gavilán", u8"gemelo", u8"gemir", u8"gen", u8"género", u8"genio", u8"gente", u8"geranio", u8"gerente", u8"germen", u8"gesto", u8"gigante", u8"gimnasio", u8"girar", u8"giro", u8"glaciar", u8"globo", u8"gloria", u8"gol", u8"golfo", u8"goloso", u8"golpe", u8"goma", u8"gordo", u8"gorila", u8"gorra", u8"gota", u8"goteo", u8"gozar", u8"grada", u8"gráfico", u8"grano", u8"grasa", u8"gratis", u8"grave", u8"grieta", u8"grillo", u8"gripe", u8"gris", u8"grito", u8"grosor", u8"grúa", u8"grueso", u8"grumo", u8"grupo", u8"guante", u8"guapo", u8"guardia", u8"guerra", u8"guía", u8"guiño", u8"guion", u8"guiso", u8"guitarra", u8"gusano", u8"gustar", u8"haber", u8"hábil", u8"hablar", u8"hacer", u8"hacha", u8"hada", u8"hallar", u8"hamaca", u8"harina", u8"haz", u8"hazaña", u8"hebilla", u8"hebra", u8"hecho", u8"helado", u8"helio", u8"hembra", u8"herir", u8"hermano", u8"héroe", u8"hervir", u8"hielo", u8"hierro", u8"hígado", u8"higiene", u8"hijo", u8"himno", u8"historia", u8"hocico", u8"hogar", u8"hoguera", u8"hoja", u8"hombre", u8"hongo", u8"honor", u8"honra", u8"hora", u8"hormiga", u8"horno", u8"hostil", u8"hoyo", u8"hueco", u8"huelga", u8"huerta", u8"hueso", u8"huevo", u8"huida", u8"huir", u8"humano", u8"húmedo", u8"humilde", u8"humo", u8"hundir", u8"huracán", u8"hurto", u8"icono", u8"ideal", u8"idioma", u8"ídolo", u8"iglesia", u8"iglú", u8"igual", u8"ilegal", u8"ilusión", u8"imagen", u8"imán", u8"imitar", u8"impar", u8"imperio", u8"imponer", u8"impulso", u8"incapaz", u8"índice", u8"inerte", u8"infiel", u8"informe", u8"ingenio", u8"inicio", u8"inmenso", u8"inmune", u8"innato", u8"insecto", u8"instante", u8"interés", u8"íntimo", u8"intuir", u8"inútil", u8"invierno", u8"ira", u8"iris", u8"ironía", u8"isla", u8"islote", u8"jabalí", u8"jabón", u8"jamón", u8"jarabe", u8"jardín", u8"jarra", u8"jaula", u8"jazmín", u8"jefe", u8"jeringa", u8"jinete", u8"jornada", u8"joroba", u8"joven", u8"joya", u8"juerga", u8"jueves", u8"juez", u8"jugador", u8"jugo", u8"juguete", u8"juicio", u8"junco", u8"jungla", u8"junio", u8"juntar", u8"júpiter", u8"jurar", u8"justo", u8"juvenil", u8"juzgar", u8"kilo", u8"koala", u8"labio", u8"lacio", u8"lacra", u8"lado", u8"ladrón", u8"lagarto", u8"lágrima", u8"laguna", u8"laico", u8"lamer", u8"lámina", u8"lámpara", u8"lana", u8"lancha", u8"langosta", u8"lanza", u8"lápiz", u8"largo", u8"larva", u8"lástima", u8"lata", u8"látex", u8"latir", u8"laurel", u8"lavar", u8"lazo", u8"leal", u8"lección", u8"leche", u8"lector", u8"leer", u8"legión", u8"legumbre", u8"lejano", u8"leña", u8"lengua", u8"lento", u8"león", u8"leopardo", u8"lesión", u8"letal", u8"letra", u8"leve", u8"leyenda", u8"libertad", u8"libro", u8"licor", u8"líder", u8"lidiar", u8"lienzo", u8"liga", u8"ligero", u8"lima", u8"límite", u8"limón", u8"limpio", u8"lince", u8"lindo", u8"línea", u8"lingote", u8"lino", u8"linterna", u8"líquido", u8"liso", u8"lista", u8"litera", u8"litio", u8"litro", u8"llaga", u8"llama", u8"llanto", u8"llave", u8"llegar", u8"llenar", u8"llevar", u8"llorar", u8"llover", u8"lluvia", u8"lobo", u8"loción", u8"loco", u8"locura", u8"lógica", u8"logro", u8"lombriz", u8"lomo", u8"lonja", u8"lote", u8"lucha", u8"lucir", u8"lugar", u8"lujo", u8"luna", u8"lunes", u8"lupa", u8"lustro", u8"luto", u8"luz", u8"maceta", u8"macho", u8"madera", u8"madre", u8"maduro", u8"maestro", u8"mafia", u8"magia", u8"mago", u8"maíz", u8"maldad", u8"maleta", u8"malla", u8"malo", u8"mamá", u8"mambo", u8"mamut", u8"mañana", u8"manco", u8"mando", u8"manejar", u8"manga", u8"maniquí", u8"manjar", u8"mano", u8"manso", u8"manta", u8"mapa", u8"máquina", u8"mar", u8"marco", u8"marea", u8"marfil", u8"margen", u8"marido", u8"mármol", u8"marrón", u8"martes", u8"marzo", u8"masa", u8"máscara", u8"masivo", u8"matar", u8"materia", u8"matiz", u8"matriz", u8"máximo", u8"mayor", u8"mazorca", u8"mecha", u8"medalla", u8"medio", u8"médula", u8"mejilla", u8"mejor", u8"melena", u8"melón", u8"memoria", u8"menor", u8"mensaje", u8"mente", u8"menú", u8"mercado", u8"merengue", u8"mérito", u8"mes", u8"mesón", u8"meta", u8"meter", u8"método", u8"metro", u8"mezcla", u8"miedo", u8"miel", u8"miembro", u8"miga", u8"mil", u8"milagro", u8"militar", u8"millón", u8"mimo", u8"mina", u8"minero", u8"mínimo", u8"minuto", u8"miope", u8"mirar", u8"misa", u8"miseria", u8"misil", u8"mismo", u8"mitad", u8"mito", u8"mochila", u8"moción", u8"moda", u8"modelo", u8"moho", u8"mojar", u8"molde", u8"moler", u8"molino", u8"momento", u8"momia", u8"monarca", u8"moneda", u8"monja", u8"moño", u8"monto", u8"morada", u8"morder", u8"moreno", u8"morir", u8"morro", u8"morsa", u8"mortal", u8"mosca", u8"mostrar", u8"motivo", u8"mover", u8"móvil", u8"mozo", u8"mucho", u8"mudar", u8"mueble", u8"muela", u8"muerte", u8"muestra", u8"mugre", u8"mujer", u8"mula", u8"muleta", u8"multa", u8"mundo", u8"muñeca", u8"mural", u8"muro", u8"músculo", u8"museo", u8"musgo", u8"música", u8"muslo", u8"nácar", u8"nación", u8"nadar", u8"naipe", u8"naranja", u8"nariz", u8"narrar", u8"nasal", u8"natal", u8"nativo", u8"natural", u8"náusea", u8"naval", u8"nave", u8"navidad", u8"necio", u8"néctar", u8"negar", u8"negocio", u8"negro", u8"neón", u8"nervio", u8"neto", u8"neutro", u8"nevar", u8"nevera", u8"nicho", u8"nido", u8"niebla", u8"nieto", u8"niñez", u8"niño", u8"nítido", u8"nivel", u8"nobleza", u8"noche", u8"nómina", u8"noria", u8"norma", u8"norte", u8"nota", u8"noticia", u8"novato", u8"novela", u8"novio", u8"nube", u8"nuca", u8"núcleo", u8"nudillo", u8"nudo", u8"nuera", u8"nueve", u8"nuez", u8"nulo", u8"número", u8"nutria", u8"oasis", u8"obeso", u8"obispo", u8"objeto", u8"obra", u8"obrero", u8"observar", u8"obtener", u8"obvio", u8"oca", u8"ocaso", u8"océano", u8"ochenta", u8"ocho", u8"ocio", u8"ocre", u8"octavo", u8"octubre", u8"oculto", u8"ocupar", u8"ocurrir", u8"odiar", u8"odio", u8"odisea", u8"oeste", u8"ofensa", u8"oferta", u8"oficio", u8"ofrecer", u8"ogro", u8"oído", u8"oír", u8"ojo", u8"ola", u8"oleada", u8"olfato", u8"olivo", u8"olla", u8"olmo", u8"olor", u8"olvido", u8"ombligo", u8"onda", u8"onza", u8"opaco", u8"opción", u8"ópera", u8"opinar", u8"oponer", u8"optar", u8"óptica", u8"opuesto", u8"oración", u8"orador", u8"oral", u8"órbita", u8"orca", u8"orden", u8"oreja", u8"órgano", u8"orgía", u8"orgullo", u8"oriente", u8"origen", u8"orilla", u8"oro", u8"orquesta", u8"oruga", u8"osadía", u8"oscuro", u8"osezno", u8"oso", u8"ostra", u8"otoño", u8"otro", u8"oveja", u8"óvulo", u8"óxido", u8"oxígeno", u8"oyente", u8"ozono", u8"pacto", u8"padre", u8"paella", u8"página", u8"pago", u8"país", u8"pájaro", u8"palabra", u8"palco", u8"paleta", u8"pálido", u8"palma", u8"paloma", u8"palpar", u8"pan", u8"panal", u8"pánico", u8"pantera", u8"pañuelo", u8"papá", u8"papel", u8"papilla", u8"paquete", u8"parar", u8"parcela", u8"pared", u8"parir", u8"paro", u8"párpado", u8"parque", u8"párrafo", u8"parte", u8"pasar", u8"paseo", u8"pasión", u8"paso", u8"pasta", u8"pata", u8"patio", u8"patria", u8"pausa", u8"pauta", u8"pavo", u8"payaso", u8"peatón", u8"pecado", u8"pecera", u8"pecho", u8"pedal", u8"pedir", u8"pegar", u8"peine", u8"pelar", u8"peldaño", u8"pelea", u8"peligro", u8"pellejo", u8"pelo", u8"peluca", u8"pena", u8"peñón", u8"pensar", u8"peón", u8"peor", u8"pepino", u8"pequeño", u8"pera", u8"percha", u8"perder", u8"pereza", u8"perfil", u8"perico", u8"perla", u8"permiso", u8"perro", u8"persona", u8"pesa", u8"pesca", u8"pésimo", u8"pestaña", u8"pétalo", u8"petróleo", u8"pez", u8"pezuña", u8"picar", u8"pichón", u8"pie", u8"piedra", u8"pierna", u8"pieza", u8"pijama", u8"pilar", u8"piloto", u8"pimienta", u8"piña", u8"pino", u8"pintor", u8"pinza", u8"piojo", u8"pipa", u8"pirata", u8"pisar", u8"piscina", u8"piso", u8"pista", u8"pitón", u8"pizca", u8"placa", u8"plan", u8"plata", u8"playa", u8"plaza", u8"pleito", u8"pleno", u8"plomo", u8"pluma", u8"plural", u8"pobre", u8"poco", u8"poder", u8"podio", u8"poema", u8"poesía", u8"poeta", u8"polen", u8"policía", u8"pollo", u8"polvo", u8"pomada", u8"pomelo", u8"pomo", u8"pompa", u8"poner", u8"porción", u8"portal", u8"posada", u8"poseer", u8"posible", u8"poste", u8"potencia", u8"potro", u8"pozo", u8"prado", u8"precoz", u8"pregunta", u8"premio", u8"prensa", u8"preso", u8"previo", u8"primo", u8"príncipe", u8"prisión", u8"privar", u8"proa", u8"probar", u8"proceso", u8"producto", u8"proeza", u8"profesor", u8"programa", u8"prole", u8"promesa", u8"pronto", u8"propio", u8"próximo", u8"prueba", u8"público", u8"puchero", u8"pudor", u8"pueblo", u8"puerta", u8"puesto", u8"pulga", u8"pulir", u8"pulmón", u8"pulpo", u8"pulso", u8"puma", u8"puñal", u8"puño", u8"punto", u8"pupa", u8"pupila", u8"puré", u8"quedar", u8"queja", u8"quemar", u8"querer", u8"queso", u8"quieto", u8"química", u8"quince", u8"quitar", u8"rábano", u8"rabia", u8"rabo", u8"ración", u8"radical", u8"raíz", u8"rama", u8"rampa", u8"rancho", u8"rango", u8"rapaz", u8"rápido", u8"rapto", u8"rasgo", u8"raspa", u8"rato", u8"rayo", u8"raza", u8"razón", u8"reacción", u8"realidad", u8"rebaño", u8"rebote", u8"recaer", u8"receta", u8"rechazo", u8"recoger", u8"recreo", u8"recto", u8"recurso", u8"red", u8"redondo", u8"reducir", u8"reflejo", u8"reforma", u8"refrán", u8"refugio", u8"regalo", u8"regir", u8"regla", u8"regreso", u8"rehén", u8"reino", u8"reír", u8"reja", u8"relato", u8"relevo", u8"relieve", u8"relleno", u8"reloj", u8"remar", u8"remedio", u8"remo", u8"rencor", u8"rendir", u8"renta", u8"reparto", u8"repetir", u8"reposo", u8"reptil", u8"res", u8"rescate", u8"resina", u8"respeto", u8"resto", u8"resumen", u8"retiro", u8"retorno", u8"retrato", u8"reunir", u8"revés", u8"revista", u8"rey", u8"rezar", u8"rico", u8"riego", u8"rienda", u8"riesgo", u8"rifa", u8"rígido", u8"rigor", u8"rincón", u8"riñón", u8"río", u8"riqueza", u8"risa", u8"ritmo", u8"rito", u8"rizo", u8"roble", u8"roce", u8"rociar", u8"rodar", u8"rodeo", u8"rodilla", u8"roer", u8"rojizo", u8"rojo", u8"romero", u8"romper", u8"ron", u8"ronco", u8"ronda", u8"ropa", u8"ropero", u8"rosa", u8"rosca", u8"rostro", u8"rotar", u8"rubí", u8"rubor", u8"rudo", u8"rueda", u8"rugir", u8"ruido", u8"ruina", u8"ruleta", u8"rulo", u8"rumbo", u8"rumor", u8"ruptura", u8"ruta", u8"rutina", u8"sábado", u8"saber", u8"sabio", u8"sable", u8"sacar", u8"sagaz", u8"sagrado", u8"sala", u8"saldo", u8"salero", u8"salir", u8"salmón", u8"salón", u8"salsa", u8"salto", u8"salud", u8"salvar", u8"samba", u8"sanción", u8"sandía", u8"sanear", u8"sangre", u8"sanidad", u8"sano", u8"santo", u8"sapo", u8"saque", u8"sardina", u8"sartén", u8"sastre", u8"satán", u8"sauna", u8"saxofón", u8"sección", u8"seco", u8"secreto", u8"secta", u8"sed", u8"seguir", u8"seis", u8"sello", u8"selva", u8"semana", u8"semilla", u8"señal", u8"senda", u8"señor", u8"sensor", u8"separar", u8"sepia", u8"sequía", u8"ser", u8"serie", u8"sermón", u8"servir", u8"sesenta", u8"sesión", u8"seta", u8"setenta", u8"severo", u8"sexo", u8"sexto", u8"sidra", u8"siesta", u8"siete", u8"siglo", u8"signo", u8"sílaba", u8"silbar", u8"silencio", u8"silla", u8"símbolo", u8"simio", u8"sirena", u8"sistema", u8"sitio", u8"situar", u8"sobre", u8"socio", u8"sodio", u8"sol", u8"solapa", u8"soldado", u8"soledad", u8"sólido", u8"soltar", u8"solución", u8"sombra", u8"sondeo", u8"sonido", u8"sonoro", u8"sonrisa", u8"sopa", u8"soplar", u8"soporte", u8"sordo", u8"sorpresa", u8"sorteo", u8"sostén", u8"sótano", u8"suave", u8"subir", u8"suceso", u8"sudor", u8"suegra", u8"suelo", u8"sueño", u8"suerte", u8"sufrir", u8"sujeto", u8"sultán", u8"sumar", u8"superar", u8"suplir", u8"suponer", u8"supremo", u8"sur", u8"surco", u8"sureño", u8"surgir", u8"susto", u8"sutil", u8"tabaco", u8"tabique", u8"tabla", u8"tabú", u8"taco", u8"tacto", u8"tajo", u8"talar", u8"talco", u8"talento", u8"talla", u8"talón", u8"tamaño", u8"tambor", u8"tango", u8"tanque", u8"tapa", u8"tapete", u8"tapia", u8"tapón", u8"taquilla", u8"tarde", u8"tarea", u8"tarifa", u8"tarjeta", u8"tarot", u8"tarro", u8"tarta", u8"tatuaje", u8"tauro", u8"taza", u8"tazón", u8"teatro", u8"techo", u8"tecla", u8"técnica", u8"tejado", u8"tejer", u8"tejido", u8"tela", u8"teléfono", u8"tema", u8"temor", u8"templo", u8"tenaz", u8"tender", u8"tener", u8"tenis", u8"tenso", u8"teoría", u8"terapia", u8"terco", u8"término", u8"ternura", u8"terror", u8"tesis", u8"tesoro", u8"testigo", u8"tetera", u8"texto", u8"tez", u8"tibio", u8"tiburón", u8"tiempo", u8"tienda", u8"tierra", u8"tieso", u8"tigre", u8"tijera", u8"tilde", u8"timbre", u8"tímido", u8"timo", u8"tinta", u8"tío", u8"típico", u8"tipo", u8"tira", u8"tirón", u8"titán", u8"títere", u8"título", u8"tiza", u8"toalla", u8"tobillo", u8"tocar", u8"tocino", u8"todo", u8"toga", u8"toldo", u8"tomar", u8"tono", u8"tonto", u8"topar", u8"tope", u8"toque", u8"tórax", u8"torero", u8"tormenta", u8"torneo", u8"toro", u8"torpedo", u8"torre", u8"torso", u8"tortuga", u8"tos", u8"tosco", u8"toser", u8"tóxico", u8"trabajo", u8"tractor", u8"traer", u8"tráfico", u8"trago", u8"traje", u8"tramo", u8"trance", u8"trato", u8"trauma", u8"trazar", u8"trébol", u8"tregua", u8"treinta", u8"tren", u8"trepar", u8"tres", u8"tribu", u8"trigo", u8"tripa", u8"triste", u8"triunfo", u8"trofeo", u8"trompa", u8"tronco", u8"tropa", u8"trote", u8"trozo", u8"truco", u8"trueno", u8"trufa", u8"tubería", u8"tubo", u8"tuerto", u8"tumba", u8"tumor", u8"túnel", u8"túnica", u8"turbina", u8"turismo", u8"turno", u8"tutor", u8"ubicar", u8"úlcera", u8"umbral", u8"uña", u8"unidad", u8"unir", u8"universo", u8"uno", u8"untar", u8"urbano", u8"urbe", u8"urgente", u8"urna", u8"usar", u8"usuario", u8"útil", u8"utopía", u8"uva", u8"vaca", u8"vacío", u8"vacuna", u8"vagar", u8"vago", u8"vaina", u8"vajilla", u8"vale", u8"válido", u8"valle", u8"valor", u8"válvula", u8"vampiro", u8"vara", u8"variar", u8"varón", u8"vaso", u8"vecino", u8"vector", u8"vehículo", u8"veinte", u8"vejez", u8"vela", u8"velero", u8"veloz", u8"vena", u8"vencer", u8"venda", u8"veneno", u8"vengar", u8"venir", u8"venta", u8"venus", u8"ver", u8"verano", u8"verbo", u8"verde", u8"vereda", u8"verja", u8"verso", u8"verter", u8"vía", u8"viaje", u8"vibrar", u8"vicio", u8"víctima", u8"vida", u8"vídeo", u8"vidrio", u8"viejo", u8"viernes", u8"vigor", u8"vil", u8"villa", u8"vinagre", u8"viñedo", u8"vino", u8"violín", u8"viral", u8"virgo", u8"virtud", u8"visor", u8"víspera", u8"vista", u8"vitamina", u8"viudo", u8"vivaz", u8"vivero", u8"vivir", u8"vivo", u8"volcán", u8"volumen", u8"volver", u8"voraz", u8"votar", u8"voto", u8"voz", u8"vuelo", u8"vulgar", u8"yacer", u8"yate", u8"yegua", u8"yema", u8"yerno", u8"yeso", u8"yodo", u8"yoga", u8"yogur", u8"zafiro", u8"zanja", u8"zapato", u8"zarza", u8"zona", u8"zorro", u8"zumo", u8"zurdo", } }; polyseed-1.0.0/src/lang_fr.c000066400000000000000000001252731424320763700157210ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_fr = { .name = u8"français", .name_en = "French", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = true, .compose = true, .words = { u8"abaisser", u8"abandon", u8"abdiquer", u8"abeille", u8"abolir", u8"aborder", u8"aboutir", u8"aboyer", u8"abrasif", u8"abreuver", u8"abriter", u8"abroger", u8"abrupt", u8"absence", u8"absolu", u8"absurde", u8"abusif", u8"abyssal", u8"académie", u8"acajou", u8"acarien", u8"accabler", u8"accepter", u8"acclamer", u8"accolade", u8"accroche", u8"accuser", u8"acerbe", u8"achat", u8"acheter", u8"aciduler", u8"acier", u8"acompte", u8"acquérir", u8"acronyme", u8"acteur", u8"actif", u8"actuel", u8"adepte", u8"adéquat", u8"adhésif", u8"adjectif", u8"adjuger", u8"admettre", u8"admirer", u8"adopter", u8"adorer", u8"adoucir", u8"adresse", u8"adroit", u8"adulte", u8"adverbe", u8"aérer", u8"aéronef", u8"affaire", u8"affecter", u8"affiche", u8"affreux", u8"affubler", u8"agacer", u8"agencer", u8"agile", u8"agiter", u8"agrafer", u8"agréable", u8"agrume", u8"aider", u8"aiguille", u8"ailier", u8"aimable", u8"aisance", u8"ajouter", u8"ajuster", u8"alarmer", u8"alchimie", u8"alerte", u8"algèbre", u8"algue", u8"aliéner", u8"aliment", u8"alléger", u8"alliage", u8"allouer", u8"allumer", u8"alourdir", u8"alpaga", u8"altesse", u8"alvéole", u8"amateur", u8"ambigu", u8"ambre", u8"aménager", u8"amertume", u8"amidon", u8"amiral", u8"amorcer", u8"amour", u8"amovible", u8"amphibie", u8"ampleur", u8"amusant", u8"analyse", u8"anaphore", u8"anarchie", u8"anatomie", u8"ancien", u8"anéantir", u8"angle", u8"angoisse", u8"anguleux", u8"animal", u8"annexer", u8"annonce", u8"annuel", u8"anodin", u8"anomalie", u8"anonyme", u8"anormal", u8"antenne", u8"antidote", u8"anxieux", u8"apaiser", u8"apéritif", u8"aplanir", u8"apologie", u8"appareil", u8"appeler", u8"apporter", u8"appuyer", u8"aquarium", u8"aqueduc", u8"arbitre", u8"arbuste", u8"ardeur", u8"ardoise", u8"argent", u8"arlequin", u8"armature", u8"armement", u8"armoire", u8"armure", u8"arpenter", u8"arracher", u8"arriver", u8"arroser", u8"arsenic", u8"artériel", u8"article", u8"aspect", u8"asphalte", u8"aspirer", u8"assaut", u8"asservir", u8"assiette", u8"associer", u8"assurer", u8"asticot", u8"astre", u8"astuce", u8"atelier", u8"atome", u8"atrium", u8"atroce", u8"attaque", u8"attentif", u8"attirer", u8"attraper", u8"aubaine", u8"auberge", u8"audace", u8"audible", u8"augurer", u8"aurore", u8"automne", u8"autruche", u8"avaler", u8"avancer", u8"avarice", u8"avenir", u8"averse", u8"aveugle", u8"aviateur", u8"avide", u8"avion", u8"aviser", u8"avoine", u8"avouer", u8"avril", u8"axial", u8"axiome", u8"badge", u8"bafouer", u8"bagage", u8"baguette", u8"baignade", u8"balancer", u8"balcon", u8"baleine", u8"balisage", u8"bambin", u8"bancaire", u8"bandage", u8"banlieue", u8"bannière", u8"banquier", u8"barbier", u8"baril", u8"baron", u8"barque", u8"barrage", u8"bassin", u8"bastion", u8"bataille", u8"bateau", u8"batterie", u8"baudrier", u8"bavarder", u8"belette", u8"bélier", u8"belote", u8"bénéfice", u8"berceau", u8"berger", u8"berline", u8"bermuda", u8"besace", u8"besogne", u8"bétail", u8"beurre", u8"biberon", u8"bicycle", u8"bidule", u8"bijou", u8"bilan", u8"bilingue", u8"billard", u8"binaire", u8"biologie", u8"biopsie", u8"biotype", u8"biscuit", u8"bison", u8"bistouri", u8"bitume", u8"bizarre", u8"blafard", u8"blague", u8"blanchir", u8"blessant", u8"blinder", u8"blond", u8"bloquer", u8"blouson", u8"bobard", u8"bobine", u8"boire", u8"boiser", u8"bolide", u8"bonbon", u8"bondir", u8"bonheur", u8"bonifier", u8"bonus", u8"bordure", u8"borne", u8"botte", u8"boucle", u8"boueux", u8"bougie", u8"boulon", u8"bouquin", u8"bourse", u8"boussole", u8"boutique", u8"boxeur", u8"branche", u8"brasier", u8"brave", u8"brebis", u8"brèche", u8"breuvage", u8"bricoler", u8"brigade", u8"brillant", u8"brioche", u8"brique", u8"brochure", u8"broder", u8"bronzer", u8"brousse", u8"broyeur", u8"brume", u8"brusque", u8"brutal", u8"bruyant", u8"buffle", u8"buisson", u8"bulletin", u8"bureau", u8"burin", u8"bustier", u8"butiner", u8"butoir", u8"buvable", u8"buvette", u8"cabanon", u8"cabine", u8"cachette", u8"cadeau", u8"cadre", u8"caféine", u8"caillou", u8"caisson", u8"calculer", u8"calepin", u8"calibre", u8"calmer", u8"calomnie", u8"calvaire", u8"camarade", u8"caméra", u8"camion", u8"campagne", u8"canal", u8"caneton", u8"canon", u8"cantine", u8"canular", u8"capable", u8"caporal", u8"caprice", u8"capsule", u8"capter", u8"capuche", u8"carabine", u8"carbone", u8"caresser", u8"caribou", u8"carnage", u8"carotte", u8"carreau", u8"carton", u8"cascade", u8"casier", u8"casque", u8"cassure", u8"causer", u8"caution", u8"cavalier", u8"caverne", u8"caviar", u8"cédille", u8"ceinture", u8"céleste", u8"cellule", u8"cendrier", u8"censurer", u8"central", u8"cercle", u8"cérébral", u8"cerise", u8"cerner", u8"cerveau", u8"cesser", u8"chagrin", u8"chaise", u8"chaleur", u8"chambre", u8"chance", u8"chapitre", u8"charbon", u8"chasseur", u8"chaton", u8"chausson", u8"chavirer", u8"chemise", u8"chenille", u8"chéquier", u8"chercher", u8"cheval", u8"chien", u8"chiffre", u8"chignon", u8"chimère", u8"chiot", u8"chlorure", u8"chocolat", u8"choisir", u8"chose", u8"chouette", u8"chrome", u8"chute", u8"cigare", u8"cigogne", u8"cimenter", u8"cinéma", u8"cintrer", u8"circuler", u8"cirer", u8"cirque", u8"citerne", u8"citoyen", u8"citron", u8"civil", u8"clairon", u8"clameur", u8"claquer", u8"classe", u8"clavier", u8"client", u8"cligner", u8"climat", u8"clivage", u8"cloche", u8"clonage", u8"cloporte", u8"cobalt", u8"cobra", u8"cocasse", u8"cocotier", u8"coder", u8"codifier", u8"coffre", u8"cogner", u8"cohésion", u8"coiffer", u8"coincer", u8"colère", u8"colibri", u8"colline", u8"colmater", u8"colonel", u8"combat", u8"comédie", u8"commande", u8"compact", u8"concert", u8"conduire", u8"confier", u8"congeler", u8"connoter", u8"consonne", u8"contact", u8"convexe", u8"copain", u8"copie", u8"corail", u8"corbeau", u8"cordage", u8"corniche", u8"corpus", u8"correct", u8"cortège", u8"cosmique", u8"costume", u8"coton", u8"coude", u8"coupure", u8"courage", u8"couteau", u8"couvrir", u8"coyote", u8"crabe", u8"crainte", u8"cravate", u8"crayon", u8"créature", u8"créditer", u8"crémeux", u8"creuser", u8"crevette", u8"cribler", u8"crier", u8"cristal", u8"critère", u8"croire", u8"croquer", u8"crotale", u8"crucial", u8"cruel", u8"crypter", u8"cubique", u8"cueillir", u8"cuillère", u8"cuisine", u8"cuivre", u8"culminer", u8"cultiver", u8"cumuler", u8"cupide", u8"curatif", u8"curseur", u8"cyanure", u8"cycle", u8"cylindre", u8"cynique", u8"daigner", u8"damier", u8"danger", u8"danseur", u8"dauphin", u8"débattre", u8"débiter", u8"déborder", u8"débrider", u8"débutant", u8"décaler", u8"décembre", u8"déchirer", u8"décider", u8"déclarer", u8"décorer", u8"décrire", u8"décupler", u8"dédale", u8"déductif", u8"déesse", u8"défensif", u8"défiler", u8"défrayer", u8"dégager", u8"dégivrer", u8"déglutir", u8"dégrafer", u8"déjeuner", u8"délice", u8"déloger", u8"demander", u8"demeurer", u8"démolir", u8"dénicher", u8"dénouer", u8"dentelle", u8"dénuder", u8"départ", u8"dépenser", u8"déphaser", u8"déplacer", u8"déposer", u8"déranger", u8"dérober", u8"désastre", u8"descente", u8"désert", u8"désigner", u8"désobéir", u8"dessiner", u8"destrier", u8"détacher", u8"détester", u8"détourer", u8"détresse", u8"devancer", u8"devenir", u8"deviner", u8"devoir", u8"diable", u8"dialogue", u8"diamant", u8"dicter", u8"différer", u8"digérer", u8"digital", u8"digne", u8"diluer", u8"dimanche", u8"diminuer", u8"dioxyde", u8"directif", u8"diriger", u8"discuter", u8"disposer", u8"dissiper", u8"distance", u8"divertir", u8"diviser", u8"docile", u8"docteur", u8"dogme", u8"doigt", u8"domaine", u8"domicile", u8"dompter", u8"donateur", u8"donjon", u8"donner", u8"dopamine", u8"dortoir", u8"dorure", u8"dosage", u8"doseur", u8"dossier", u8"dotation", u8"douanier", u8"double", u8"douceur", u8"douter", u8"doyen", u8"dragon", u8"draper", u8"dresser", u8"dribbler", u8"droiture", u8"duperie", u8"duplexe", u8"durable", u8"durcir", u8"dynastie", u8"éblouir", u8"écarter", u8"écharpe", u8"échelle", u8"éclairer", u8"éclipse", u8"éclore", u8"écluse", u8"école", u8"économie", u8"écorce", u8"écouter", u8"écraser", u8"écrémer", u8"écrivain", u8"écrou", u8"écume", u8"écureuil", u8"édifier", u8"éduquer", u8"effacer", u8"effectif", u8"effigie", u8"effort", u8"effrayer", u8"effusion", u8"égaliser", u8"égarer", u8"éjecter", u8"élaborer", u8"élargir", u8"électron", u8"élégant", u8"éléphant", u8"élève", u8"éligible", u8"élitisme", u8"éloge", u8"élucider", u8"éluder", u8"emballer", u8"embellir", u8"embryon", u8"émeraude", u8"émission", u8"emmener", u8"émotion", u8"émouvoir", u8"empereur", u8"employer", u8"emporter", u8"emprise", u8"émulsion", u8"encadrer", u8"enchère", u8"enclave", u8"encoche", u8"endiguer", u8"endosser", u8"endroit", u8"enduire", u8"énergie", u8"enfance", u8"enfermer", u8"enfouir", u8"engager", u8"engin", u8"englober", u8"énigme", u8"enjamber", u8"enjeu", u8"enlever", u8"ennemi", u8"ennuyeux", u8"enrichir", u8"enrobage", u8"enseigne", u8"entasser", u8"entendre", u8"entier", u8"entourer", u8"entraver", u8"énumérer", u8"envahir", u8"enviable", u8"envoyer", u8"enzyme", u8"éolien", u8"épaissir", u8"épargne", u8"épatant", u8"épaule", u8"épicerie", u8"épidémie", u8"épier", u8"épilogue", u8"épine", u8"épisode", u8"épitaphe", u8"époque", u8"épreuve", u8"éprouver", u8"épuisant", u8"équerre", u8"équipe", u8"ériger", u8"érosion", u8"erreur", u8"éruption", u8"escalier", u8"espadon", u8"espèce", u8"espiègle", u8"espoir", u8"esprit", u8"esquiver", u8"essayer", u8"essence", u8"essieu", u8"essorer", u8"estime", u8"estomac", u8"estrade", u8"étagère", u8"étaler", u8"étanche", u8"étatique", u8"éteindre", u8"étendoir", u8"éternel", u8"éthanol", u8"éthique", u8"ethnie", u8"étirer", u8"étoffer", u8"étoile", u8"étonnant", u8"étourdir", u8"étrange", u8"étroit", u8"étude", u8"euphorie", u8"évaluer", u8"évasion", u8"éventail", u8"évidence", u8"éviter", u8"évolutif", u8"évoquer", u8"exact", u8"exagérer", u8"exaucer", u8"exceller", u8"excitant", u8"exclusif", u8"excuse", u8"exécuter", u8"exemple", u8"exercer", u8"exhaler", u8"exhorter", u8"exigence", u8"exiler", u8"exister", u8"exotique", u8"expédier", u8"explorer", u8"exposer", u8"exprimer", u8"exquis", u8"extensif", u8"extraire", u8"exulter", u8"fable", u8"fabuleux", u8"facette", u8"facile", u8"facture", u8"faiblir", u8"falaise", u8"fameux", u8"famille", u8"farceur", u8"farfelu", u8"farine", u8"farouche", u8"fasciner", u8"fatal", u8"fatigue", u8"faucon", u8"fautif", u8"faveur", u8"favori", u8"fébrile", u8"féconder", u8"fédérer", u8"félin", u8"femme", u8"fémur", u8"fendoir", u8"féodal", u8"fermer", u8"féroce", u8"ferveur", u8"festival", u8"feuille", u8"feutre", u8"février", u8"fiasco", u8"ficeler", u8"fictif", u8"fidèle", u8"figure", u8"filature", u8"filetage", u8"filière", u8"filleul", u8"filmer", u8"filou", u8"filtrer", u8"financer", u8"finir", u8"fiole", u8"firme", u8"fissure", u8"fixer", u8"flairer", u8"flamme", u8"flasque", u8"flatteur", u8"fléau", u8"flèche", u8"fleur", u8"flexion", u8"flocon", u8"flore", u8"fluctuer", u8"fluide", u8"fluvial", u8"folie", u8"fonderie", u8"fongible", u8"fontaine", u8"forcer", u8"forgeron", u8"formuler", u8"fortune", u8"fossile", u8"foudre", u8"fougère", u8"fouiller", u8"foulure", u8"fourmi", u8"fragile", u8"fraise", u8"franchir", u8"frapper", u8"frayeur", u8"frégate", u8"freiner", u8"frelon", u8"frémir", u8"frénésie", u8"frère", u8"friable", u8"friction", u8"frisson", u8"frivole", u8"froid", u8"fromage", u8"frontal", u8"frotter", u8"fruit", u8"fugitif", u8"fuite", u8"fureur", u8"furieux", u8"furtif", u8"fusion", u8"futur", u8"gagner", u8"galaxie", u8"galerie", u8"gambader", u8"garantir", u8"gardien", u8"garnir", u8"garrigue", u8"gazelle", u8"gazon", u8"géant", u8"gélatine", u8"gélule", u8"gendarme", u8"général", u8"génie", u8"genou", u8"gentil", u8"géologie", u8"géomètre", u8"géranium", u8"germe", u8"gestuel", u8"geyser", u8"gibier", u8"gicler", u8"girafe", u8"givre", u8"glace", u8"glaive", u8"glisser", u8"globe", u8"gloire", u8"glorieux", u8"golfeur", u8"gomme", u8"gonfler", u8"gorge", u8"gorille", u8"goudron", u8"gouffre", u8"goulot", u8"goupille", u8"gourmand", u8"goutte", u8"graduel", u8"graffiti", u8"graine", u8"grand", u8"grappin", u8"gratuit", u8"gravir", u8"grenat", u8"griffure", u8"griller", u8"grimper", u8"grogner", u8"gronder", u8"grotte", u8"groupe", u8"gruger", u8"grutier", u8"gruyère", u8"guépard", u8"guerrier", u8"guide", u8"guimauve", u8"guitare", u8"gustatif", u8"gymnaste", u8"gyrostat", u8"habitude", u8"hachoir", u8"halte", u8"hameau", u8"hangar", u8"hanneton", u8"haricot", u8"harmonie", u8"harpon", u8"hasard", u8"hélium", u8"hématome", u8"herbe", u8"hérisson", u8"hermine", u8"héron", u8"hésiter", u8"heureux", u8"hiberner", u8"hibou", u8"hilarant", u8"histoire", u8"hiver", u8"homard", u8"hommage", u8"homogène", u8"honneur", u8"honorer", u8"honteux", u8"horde", u8"horizon", u8"horloge", u8"hormone", u8"horrible", u8"houleux", u8"housse", u8"hublot", u8"huileux", u8"humain", u8"humble", u8"humide", u8"humour", u8"hurler", u8"hydromel", u8"hygiène", u8"hymne", u8"hypnose", u8"idylle", u8"ignorer", u8"iguane", u8"illicite", u8"illusion", u8"image", u8"imbiber", u8"imiter", u8"immense", u8"immobile", u8"immuable", u8"impact", u8"impérial", u8"implorer", u8"imposer", u8"imprimer", u8"imputer", u8"incarner", u8"incendie", u8"incident", u8"incliner", u8"incolore", u8"indexer", u8"indice", u8"inductif", u8"inédit", u8"ineptie", u8"inexact", u8"infini", u8"infliger", u8"informer", u8"infusion", u8"ingérer", u8"inhaler", u8"inhiber", u8"injecter", u8"injure", u8"innocent", u8"inoculer", u8"inonder", u8"inscrire", u8"insecte", u8"insigne", u8"insolite", u8"inspirer", u8"instinct", u8"insulter", u8"intact", u8"intense", u8"intime", u8"intrigue", u8"intuitif", u8"inutile", u8"invasion", u8"inventer", u8"inviter", u8"invoquer", u8"ironique", u8"irradier", u8"irréel", u8"irriter", u8"isoler", u8"ivoire", u8"ivresse", u8"jaguar", u8"jaillir", u8"jambe", u8"janvier", u8"jardin", u8"jauger", u8"jaune", u8"javelot", u8"jetable", u8"jeton", u8"jeudi", u8"jeunesse", u8"joindre", u8"joncher", u8"jongler", u8"joueur", u8"jouissif", u8"journal", u8"jovial", u8"joyau", u8"joyeux", u8"jubiler", u8"jugement", u8"junior", u8"jupon", u8"juriste", u8"justice", u8"juteux", u8"juvénile", u8"kayak", u8"kimono", u8"kiosque", u8"label", u8"labial", u8"labourer", u8"lacérer", u8"lactose", u8"lagune", u8"laine", u8"laisser", u8"laitier", u8"lambeau", u8"lamelle", u8"lampe", u8"lanceur", u8"langage", u8"lanterne", u8"lapin", u8"largeur", u8"larme", u8"laurier", u8"lavabo", u8"lavoir", u8"lecture", u8"légal", u8"léger", u8"légume", u8"lessive", u8"lettre", u8"levier", u8"lexique", u8"lézard", u8"liasse", u8"libérer", u8"libre", u8"licence", u8"licorne", u8"liège", u8"lièvre", u8"ligature", u8"ligoter", u8"ligue", u8"limer", u8"limite", u8"limonade", u8"limpide", u8"linéaire", u8"lingot", u8"lionceau", u8"liquide", u8"lisière", u8"lister", u8"lithium", u8"litige", u8"littoral", u8"livreur", u8"logique", u8"lointain", u8"loisir", u8"lombric", u8"loterie", u8"louer", u8"lourd", u8"loutre", u8"louve", u8"loyal", u8"lubie", u8"lucide", u8"lucratif", u8"lueur", u8"lugubre", u8"luisant", u8"lumière", u8"lunaire", u8"lundi", u8"luron", u8"lutter", u8"luxueux", u8"machine", u8"magasin", u8"magenta", u8"magique", u8"maigre", u8"maillon", u8"maintien", u8"mairie", u8"maison", u8"majorer", u8"malaxer", u8"maléfice", u8"malheur", u8"malice", u8"mallette", u8"mammouth", u8"mandater", u8"maniable", u8"manquant", u8"manteau", u8"manuel", u8"marathon", u8"marbre", u8"marchand", u8"mardi", u8"maritime", u8"marqueur", u8"marron", u8"marteler", u8"mascotte", u8"massif", u8"matériel", u8"matière", u8"matraque", u8"maudire", u8"maussade", u8"mauve", u8"maximal", u8"méchant", u8"méconnu", u8"médaille", u8"médecin", u8"méditer", u8"méduse", u8"meilleur", u8"mélange", u8"mélodie", u8"membre", u8"mémoire", u8"menacer", u8"mener", u8"menhir", u8"mensonge", u8"mentor", u8"mercredi", u8"mérite", u8"merle", u8"messager", u8"mesure", u8"métal", u8"météore", u8"méthode", u8"métier", u8"meuble", u8"miauler", u8"microbe", u8"miette", u8"mignon", u8"migrer", u8"milieu", u8"million", u8"mimique", u8"mince", u8"minéral", u8"minimal", u8"minorer", u8"minute", u8"miracle", u8"miroiter", u8"missile", u8"mixte", u8"mobile", u8"moderne", u8"moelleux", u8"mondial", u8"moniteur", u8"monnaie", u8"monotone", u8"monstre", u8"montagne", u8"monument", u8"moqueur", u8"morceau", u8"morsure", u8"mortier", u8"moteur", u8"motif", u8"mouche", u8"moufle", u8"moulin", u8"mousson", u8"mouton", u8"mouvant", u8"multiple", u8"munition", u8"muraille", u8"murène", u8"murmure", u8"muscle", u8"muséum", u8"musicien", u8"mutation", u8"muter", u8"mutuel", u8"myriade", u8"myrtille", u8"mystère", u8"mythique", u8"nageur", u8"nappe", u8"narquois", u8"narrer", u8"natation", u8"nation", u8"nature", u8"naufrage", u8"nautique", u8"navire", u8"nébuleux", u8"nectar", u8"néfaste", u8"négation", u8"négliger", u8"négocier", u8"neige", u8"nerveux", u8"nettoyer", u8"neurone", u8"neutron", u8"neveu", u8"niche", u8"nickel", u8"nitrate", u8"niveau", u8"noble", u8"nocif", u8"nocturne", u8"noirceur", u8"noisette", u8"nomade", u8"nombreux", u8"nommer", u8"normatif", u8"notable", u8"notifier", u8"notoire", u8"nourrir", u8"nouveau", u8"novateur", u8"novembre", u8"novice", u8"nuage", u8"nuancer", u8"nuire", u8"nuisible", u8"numéro", u8"nuptial", u8"nuque", u8"nutritif", u8"obéir", u8"objectif", u8"obliger", u8"obscur", u8"observer", u8"obstacle", u8"obtenir", u8"obturer", u8"occasion", u8"occuper", u8"océan", u8"octobre", u8"octroyer", u8"octupler", u8"oculaire", u8"odeur", u8"odorant", u8"offenser", u8"officier", u8"offrir", u8"ogive", u8"oiseau", u8"oisillon", u8"olfactif", u8"olivier", u8"ombrage", u8"omettre", u8"onctueux", u8"onduler", u8"onéreux", u8"onirique", u8"opale", u8"opaque", u8"opérer", u8"opinion", u8"opportun", u8"opprimer", u8"opter", u8"optique", u8"orageux", u8"orange", u8"orbite", u8"ordonner", u8"oreille", u8"organe", u8"orgueil", u8"orifice", u8"ornement", u8"orque", u8"ortie", u8"osciller", u8"osmose", u8"ossature", u8"otarie", u8"ouragan", u8"ourson", u8"outil", u8"outrager", u8"ouvrage", u8"ovation", u8"oxyde", u8"oxygène", u8"ozone", u8"paisible", u8"palace", u8"palmarès", u8"palourde", u8"palper", u8"panache", u8"panda", u8"pangolin", u8"paniquer", u8"panneau", u8"panorama", u8"pantalon", u8"papaye", u8"papier", u8"papoter", u8"papyrus", u8"paradoxe", u8"parcelle", u8"paresse", u8"parfumer", u8"parler", u8"parole", u8"parrain", u8"parsemer", u8"partager", u8"parure", u8"parvenir", u8"passion", u8"pastèque", u8"paternel", u8"patience", u8"patron", u8"pavillon", u8"pavoiser", u8"payer", u8"paysage", u8"peigne", u8"peintre", u8"pelage", u8"pélican", u8"pelle", u8"pelouse", u8"peluche", u8"pendule", u8"pénétrer", u8"pénible", u8"pensif", u8"pénurie", u8"pépite", u8"péplum", u8"perdrix", u8"perforer", u8"période", u8"permuter", u8"perplexe", u8"persil", u8"perte", u8"peser", u8"pétale", u8"petit", u8"pétrir", u8"peuple", u8"pharaon", u8"phobie", u8"phoque", u8"photon", u8"phrase", u8"physique", u8"piano", u8"pictural", u8"pièce", u8"pierre", u8"pieuvre", u8"pilote", u8"pinceau", u8"pipette", u8"piquer", u8"pirogue", u8"piscine", u8"piston", u8"pivoter", u8"pixel", u8"pizza", u8"placard", u8"plafond", u8"plaisir", u8"planer", u8"plaque", u8"plastron", u8"plateau", u8"pleurer", u8"plexus", u8"pliage", u8"plomb", u8"plonger", u8"pluie", u8"plumage", u8"pochette", u8"poésie", u8"poète", u8"pointe", u8"poirier", u8"poisson", u8"poivre", u8"polaire", u8"policier", u8"pollen", u8"polygone", u8"pommade", u8"pompier", u8"ponctuel", u8"pondérer", u8"poney", u8"portique", u8"position", u8"posséder", u8"posture", u8"potager", u8"poteau", u8"potion", u8"pouce", u8"poulain", u8"poumon", u8"pourpre", u8"poussin", u8"pouvoir", u8"prairie", u8"pratique", u8"précieux", u8"prédire", u8"préfixe", u8"prélude", u8"prénom", u8"présence", u8"prétexte", u8"prévoir", u8"primitif", u8"prince", u8"prison", u8"priver", u8"problème", u8"procéder", u8"prodige", u8"profond", u8"progrès", u8"proie", u8"projeter", u8"prologue", u8"promener", u8"propre", u8"prospère", u8"protéger", u8"prouesse", u8"proverbe", u8"prudence", u8"pruneau", u8"psychose", u8"public", u8"puceron", u8"puiser", u8"pulpe", u8"pulsar", u8"punaise", u8"punitif", u8"pupitre", u8"purifier", u8"puzzle", u8"pyramide", u8"quasar", u8"querelle", u8"question", u8"quiétude", u8"quitter", u8"quotient", u8"racine", u8"raconter", u8"radieux", u8"ragondin", u8"raideur", u8"raisin", u8"ralentir", u8"rallonge", u8"ramasser", u8"rapide", u8"rasage", u8"ratisser", u8"ravager", u8"ravin", u8"rayonner", u8"réactif", u8"réagir", u8"réaliser", u8"réanimer", u8"recevoir", u8"réciter", u8"réclamer", u8"récolter", u8"recruter", u8"reculer", u8"recycler", u8"rédiger", u8"redouter", u8"refaire", u8"réflexe", u8"réformer", u8"refrain", u8"refuge", u8"régalien", u8"région", u8"réglage", u8"régulier", u8"réitérer", u8"rejeter", u8"rejouer", u8"relatif", u8"relever", u8"relief", u8"remarque", u8"remède", u8"remise", u8"remonter", u8"remplir", u8"remuer", u8"renard", u8"renfort", u8"renifler", u8"renoncer", u8"rentrer", u8"renvoi", u8"replier", u8"reporter", u8"reprise", u8"reptile", u8"requin", u8"réserve", u8"résineux", u8"résoudre", u8"respect", u8"rester", u8"résultat", u8"rétablir", u8"retenir", u8"réticule", u8"retomber", u8"retracer", u8"réunion", u8"réussir", u8"revanche", u8"revivre", u8"révolte", u8"révulsif", u8"richesse", u8"rideau", u8"rieur", u8"rigide", u8"rigoler", u8"rincer", u8"riposter", u8"risible", u8"risque", u8"rituel", u8"rival", u8"rivière", u8"rocheux", u8"romance", u8"rompre", u8"ronce", u8"rondin", u8"roseau", u8"rosier", u8"rotatif", u8"rotor", u8"rotule", u8"rouge", u8"rouille", u8"rouleau", u8"routine", u8"royaume", u8"ruban", u8"rubis", u8"ruche", u8"ruelle", u8"rugueux", u8"ruiner", u8"ruisseau", u8"ruser", u8"rustique", u8"rythme", u8"sabler", u8"saboter", u8"sabre", u8"sacoche", u8"safari", u8"sagesse", u8"saisir", u8"salade", u8"salive", u8"salon", u8"saluer", u8"samedi", u8"sanction", u8"sanglier", u8"sarcasme", u8"sardine", u8"saturer", u8"saugrenu", u8"saumon", u8"sauter", u8"sauvage", u8"savant", u8"savonner", u8"scalpel", u8"scandale", u8"scélérat", u8"scénario", u8"sceptre", u8"schéma", u8"science", u8"scinder", u8"score", u8"scrutin", u8"sculpter", u8"séance", u8"sécable", u8"sécher", u8"secouer", u8"sécréter", u8"sédatif", u8"séduire", u8"seigneur", u8"séjour", u8"sélectif", u8"semaine", u8"sembler", u8"semence", u8"séminal", u8"sénateur", u8"sensible", u8"sentence", u8"séparer", u8"séquence", u8"serein", u8"sergent", u8"sérieux", u8"serrure", u8"sérum", u8"service", u8"sésame", u8"sévir", u8"sevrage", u8"sextuple", u8"sidéral", u8"siècle", u8"siéger", u8"siffler", u8"sigle", u8"signal", u8"silence", u8"silicium", u8"simple", u8"sincère", u8"sinistre", u8"siphon", u8"sirop", u8"sismique", u8"situer", u8"skier", u8"social", u8"socle", u8"sodium", u8"soigneux", u8"soldat", u8"soleil", u8"solitude", u8"soluble", u8"sombre", u8"sommeil", u8"somnoler", u8"sonde", u8"songeur", u8"sonnette", u8"sonore", u8"sorcier", u8"sortir", u8"sosie", u8"sottise", u8"soucieux", u8"soudure", u8"souffle", u8"soulever", u8"soupape", u8"source", u8"soutirer", u8"souvenir", u8"spacieux", u8"spatial", u8"spécial", u8"sphère", u8"spiral", u8"stable", u8"station", u8"sternum", u8"stimulus", u8"stipuler", u8"strict", u8"studieux", u8"stupeur", u8"styliste", u8"sublime", u8"substrat", u8"subtil", u8"subvenir", u8"succès", u8"sucre", u8"suffixe", u8"suggérer", u8"suiveur", u8"sulfate", u8"superbe", u8"supplier", u8"surface", u8"suricate", u8"surmener", u8"surprise", u8"sursaut", u8"survie", u8"suspect", u8"syllabe", u8"symbole", u8"symétrie", u8"synapse", u8"syntaxe", u8"système", u8"tabac", u8"tablier", u8"tactile", u8"tailler", u8"talent", u8"talisman", u8"talonner", u8"tambour", u8"tamiser", u8"tangible", u8"tapis", u8"taquiner", u8"tarder", u8"tarif", u8"tartine", u8"tasse", u8"tatami", u8"tatouage", u8"taupe", u8"taureau", u8"taxer", u8"témoin", u8"temporel", u8"tenaille", u8"tendre", u8"teneur", u8"tenir", u8"tension", u8"terminer", u8"terne", u8"terrible", u8"tétine", u8"texte", u8"thème", u8"théorie", u8"thérapie", u8"thorax", u8"tibia", u8"tiède", u8"timide", u8"tirelire", u8"tiroir", u8"tissu", u8"titane", u8"titre", u8"tituber", u8"toboggan", u8"tolérant", u8"tomate", u8"tonique", u8"tonneau", u8"toponyme", u8"torche", u8"tordre", u8"tornade", u8"torpille", u8"torrent", u8"torse", u8"tortue", u8"totem", u8"toucher", u8"tournage", u8"tousser", u8"toxine", u8"traction", u8"trafic", u8"tragique", u8"trahir", u8"train", u8"trancher", u8"travail", u8"trèfle", u8"tremper", u8"trésor", u8"treuil", u8"triage", u8"tribunal", u8"tricoter", u8"trilogie", u8"triomphe", u8"tripler", u8"triturer", u8"trivial", u8"trombone", u8"tronc", u8"tropical", u8"troupeau", u8"tuile", u8"tulipe", u8"tumulte", u8"tunnel", u8"turbine", u8"tuteur", u8"tutoyer", u8"tuyau", u8"tympan", u8"typhon", u8"typique", u8"tyran", u8"ubuesque", u8"ultime", u8"ultrason", u8"unanime", u8"unifier", u8"union", u8"unique", u8"unitaire", u8"univers", u8"uranium", u8"urbain", u8"urticant", u8"usage", u8"usine", u8"usuel", u8"usure", u8"utile", u8"utopie", u8"vacarme", u8"vaccin", u8"vagabond", u8"vague", u8"vaillant", u8"vaincre", u8"vaisseau", u8"valable", u8"valise", u8"vallon", u8"valve", u8"vampire", u8"vanille", u8"vapeur", u8"varier", u8"vaseux", u8"vassal", u8"vaste", u8"vecteur", u8"vedette", u8"végétal", u8"véhicule", u8"veinard", u8"véloce", u8"vendredi", u8"vénérer", u8"venger", u8"venimeux", u8"ventouse", u8"verdure", u8"vérin", u8"vernir", u8"verrou", u8"verser", u8"vertu", u8"veston", u8"vétéran", u8"vétuste", u8"vexant", u8"vexer", u8"viaduc", u8"viande", u8"victoire", u8"vidange", u8"vidéo", u8"vignette", u8"vigueur", u8"vilain", u8"village", u8"vinaigre", u8"violon", u8"vipère", u8"virement", u8"virtuose", u8"virus", u8"visage", u8"viseur", u8"vision", u8"visqueux", u8"visuel", u8"vital", u8"vitesse", u8"viticole", u8"vitrine", u8"vivace", u8"vivipare", u8"vocation", u8"voguer", u8"voile", u8"voisin", u8"voiture", u8"volaille", u8"volcan", u8"voltiger", u8"volume", u8"vorace", u8"vortex", u8"voter", u8"vouloir", u8"voyage", u8"voyelle", u8"wagon", u8"xénon", u8"yacht", u8"zèbre", u8"zénith", u8"zeste", u8"zoologie", } }; polyseed-1.0.0/src/lang_it.c000066400000000000000000001137201424320763700157200ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_it = { .name = "italiano", .name_en = "Italian", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = false, .compose = false, .words = { "abaco", "abbaglio", "abbinato", "abete", "abisso", "abolire", "abrasivo", "abrogato", "accadere", "accenno", "accusato", "acetone", "achille", "acido", "acqua", "acre", "acrilico", "acrobata", "acuto", "adagio", "addebito", "addome", "adeguato", "aderire", "adipe", "adottare", "adulare", "affabile", "affetto", "affisso", "affranto", "aforisma", "afoso", "africano", "agave", "agente", "agevole", "aggancio", "agire", "agitare", "agonismo", "agricolo", "agrumeto", "aguzzo", "alabarda", "alato", "albatro", "alberato", "albo", "albume", "alce", "alcolico", "alettone", "alfa", "algebra", "aliante", "alibi", "alimento", "allagato", "allegro", "allievo", "allodola", "allusivo", "almeno", "alogeno", "alpaca", "alpestre", "altalena", "alterno", "alticcio", "altrove", "alunno", "alveolo", "alzare", "amalgama", "amanita", "amarena", "ambito", "ambrato", "ameba", "america", "ametista", "amico", "ammasso", "ammenda", "ammirare", "ammonito", "amore", "ampio", "ampliare", "amuleto", "anacardo", "anagrafe", "analista", "anarchia", "anatra", "anca", "ancella", "ancora", "andare", "andrea", "anello", "angelo", "angolare", "angusto", "anima", "annegare", "annidato", "anno", "annuncio", "anonimo", "anticipo", "anzi", "apatico", "apertura", "apode", "apparire", "appetito", "appoggio", "approdo", "appunto", "aprile", "arabica", "arachide", "aragosta", "araldica", "arancio", "aratura", "arazzo", "arbitro", "archivio", "ardito", "arenile", "argento", "argine", "arguto", "aria", "armonia", "arnese", "arredato", "arringa", "arrosto", "arsenico", "arso", "artefice", "arzillo", "asciutto", "ascolto", "asepsi", "asettico", "asfalto", "asino", "asola", "aspirato", "aspro", "assaggio", "asse", "assoluto", "assurdo", "asta", "astenuto", "astice", "astratto", "atavico", "ateismo", "atomico", "atono", "attesa", "attivare", "attorno", "attrito", "attuale", "ausilio", "austria", "autista", "autonomo", "autunno", "avanzato", "avere", "avvenire", "avviso", "avvolgere", "azione", "azoto", "azzimo", "azzurro", "babele", "baccano", "bacino", "baco", "badessa", "badilata", "bagnato", "baita", "balcone", "baldo", "balena", "ballata", "balzano", "bambino", "bandire", "baraonda", "barbaro", "barca", "baritono", "barlume", "barocco", "basilico", "basso", "batosta", "battuto", "baule", "bava", "bavosa", "becco", "beffa", "belgio", "belva", "benda", "benevole", "benigno", "benzina", "bere", "berlina", "beta", "bibita", "bici", "bidone", "bifido", "biga", "bilancia", "bimbo", "binocolo", "biologo", "bipede", "bipolare", "birbante", "birra", "biscotto", "bisesto", "bisnonno", "bisonte", "bisturi", "bizzarro", "blando", "blatta", "bollito", "bonifico", "bordo", "bosco", "botanico", "bottino", "bozzolo", "braccio", "bradipo", "brama", "branca", "bravura", "bretella", "brevetto", "brezza", "briglia", "brillante", "brindare", "broccolo", "brodo", "bronzina", "brullo", "bruno", "bubbone", "buca", "budino", "buffone", "buio", "bulbo", "buono", "burlone", "burrasca", "bussola", "busta", "cadetto", "caduco", "calamaro", "calcolo", "calesse", "calibro", "calmo", "caloria", "cambusa", "camerata", "camicia", "cammino", "camola", "campale", "canapa", "candela", "cane", "canino", "canotto", "cantina", "capace", "capello", "capitolo", "capogiro", "cappero", "capra", "capsula", "carapace", "carcassa", "cardo", "carisma", "carovana", "carretto", "cartolina", "casaccio", "cascata", "caserma", "caso", "cassone", "castello", "casuale", "catasta", "catena", "catrame", "cauto", "cavillo", "cedibile", "cedrata", "cefalo", "celebre", "cellulare", "cena", "cenone", "centesimo", "ceramica", "cercare", "certo", "cerume", "cervello", "cesoia", "cespo", "ceto", "chela", "chiaro", "chicca", "chiedere", "chimera", "china", "chirurgo", "chitarra", "ciao", "ciclismo", "cifrare", "cigno", "cilindro", "ciottolo", "circa", "cirrosi", "citrico", "cittadino", "ciuffo", "civetta", "civile", "classico", "clinica", "cloro", "cocco", "codardo", "codice", "coerente", "cognome", "collare", "colmato", "colore", "colposo", "coltivato", "colza", "coma", "cometa", "commando", "comodo", "computer", "comune", "conciso", "condurre", "conferma", "congelare", "coniuge", "connesso", "conoscere", "consumo", "continuo", "convegno", "coperto", "copione", "coppia", "copricapo", "corazza", "cordata", "coricato", "cornice", "corolla", "corpo", "corredo", "corsia", "cortese", "cosmico", "costante", "cottura", "covato", "cratere", "cravatta", "creato", "credere", "cremoso", "crescita", "creta", "criceto", "crinale", "crisi", "critico", "croce", "cronaca", "crostata", "cruciale", "crusca", "cucire", "cuculo", "cugino", "cullato", "cupola", "curatore", "cursore", "curvo", "cuscino", "custode", "dado", "daino", "dalmata", "damerino", "daniela", "dannoso", "danzare", "datato", "davanti", "davvero", "debutto", "decennio", "deciso", "declino", "decollo", "decreto", "dedicato", "definito", "deforme", "degno", "delegare", "delfino", "delirio", "delta", "demenza", "denotato", "dentro", "deposito", "derapata", "derivare", "deroga", "descritto", "deserto", "desiderio", "desumere", "detersivo", "devoto", "diametro", "dicembre", "diedro", "difeso", "diffuso", "digerire", "digitale", "diluvio", "dinamico", "dinnanzi", "dipinto", "diploma", "dipolo", "diradare", "dire", "dirotto", "dirupo", "disagio", "discreto", "disfare", "disgelo", "disposto", "distanza", "disumano", "dito", "divano", "divelto", "dividere", "divorato", "doblone", "docente", "doganale", "dogma", "dolce", "domato", "domenica", "dominare", "dondolo", "dono", "dormire", "dote", "dottore", "dovuto", "dozzina", "drago", "druido", "dubbio", "dubitare", "ducale", "duna", "duomo", "duplice", "duraturo", "ebano", "eccesso", "ecco", "eclissi", "economia", "edera", "edicola", "edile", "editoria", "educare", "egemonia", "egli", "egoismo", "egregio", "elaborato", "elargire", "elegante", "elencato", "eletto", "elevare", "elfico", "elica", "elmo", "elsa", "eluso", "emanato", "emblema", "emesso", "emiro", "emotivo", "emozione", "empirico", "emulo", "endemico", "enduro", "energia", "enfasi", "enoteca", "entrare", "enzima", "epatite", "epilogo", "episodio", "epocale", "eppure", "equatore", "erario", "erba", "erboso", "erede", "eremita", "erigere", "ermetico", "eroe", "erosivo", "errante", "esagono", "esame", "esanime", "esaudire", "esca", "esempio", "esercito", "esibito", "esigente", "esistere", "esito", "esofago", "esortato", "esoso", "espanso", "espresso", "essenza", "esso", "esteso", "estimare", "estonia", "estroso", "esultare", "etilico", "etnico", "etrusco", "etto", "euclideo", "europa", "evaso", "evidenza", "evitato", "evoluto", "evviva", "fabbrica", "faccenda", "fachiro", "falco", "famiglia", "fanale", "fanfara", "fango", "fantasma", "fare", "farfalla", "farinoso", "farmaco", "fascia", "fastoso", "fasullo", "faticare", "fato", "favoloso", "febbre", "fecola", "fede", "fegato", "felpa", "feltro", "femmina", "fendere", "fenomeno", "fermento", "ferro", "fertile", "fessura", "festivo", "fetta", "feudo", "fiaba", "fiducia", "fifa", "figurato", "filo", "finanza", "finestra", "finire", "fiore", "fiscale", "fisico", "fiume", "flacone", "flamenco", "flebo", "flemma", "florido", "fluente", "fluoro", "fobico", "focaccia", "focoso", "foderato", "foglio", "folata", "folclore", "folgore", "fondente", "fonetico", "fonia", "fontana", "forbito", "forchetta", "foresta", "formica", "fornaio", "foro", "fortezza", "forzare", "fosfato", "fosso", "fracasso", "frana", "frassino", "fratello", "freccetta", "frenata", "fresco", "frigo", "frollino", "fronde", "frugale", "frutta", "fucilata", "fucsia", "fuggente", "fulmine", "fulvo", "fumante", "fumetto", "fumoso", "fune", "funzione", "fuoco", "furbo", "furgone", "furore", "fuso", "futile", "gabbiano", "gaffe", "galateo", "gallina", "galoppo", "gambero", "gamma", "garanzia", "garbo", "garofano", "garzone", "gasdotto", "gasolio", "gastrico", "gatto", "gaudio", "gazebo", "gazzella", "geco", "gelatina", "gelso", "gemello", "gemmato", "gene", "genitore", "gennaio", "genotipo", "gergo", "ghepardo", "ghiaccio", "ghisa", "giallo", "gilda", "ginepro", "giocare", "gioiello", "giorno", "giove", "girato", "girone", "gittata", "giudizio", "giurato", "giusto", "globulo", "glutine", "gnomo", "gobba", "golf", "gomito", "gommone", "gonfio", "gonna", "governo", "gracile", "grado", "grafico", "grammo", "grande", "grattare", "gravoso", "grazia", "greca", "gregge", "grifone", "grigio", "grinza", "grotta", "gruppo", "guadagno", "guaio", "guanto", "guardare", "gufo", "guidare", "ibernato", "icona", "identico", "idillio", "idolo", "idra", "idrico", "idrogeno", "igiene", "ignaro", "ignorato", "ilare", "illeso", "illogico", "illudere", "imballo", "imbevuto", "imbocco", "imbuto", "immane", "immerso", "immolato", "impacco", "impeto", "impiego", "importo", "impronta", "inalare", "inarcare", "inattivo", "incanto", "incendio", "inchino", "incisivo", "incluso", "incontro", "incrocio", "incubo", "indagine", "india", "indole", "inedito", "infatti", "infilare", "inflitto", "ingaggio", "ingegno", "inglese", "ingordo", "ingrosso", "innesco", "inodore", "inoltrare", "inondato", "insano", "insetto", "insieme", "insonnia", "insulina", "intasato", "intero", "intonaco", "intuito", "inumidire", "invalido", "invece", "invito", "iperbole", "ipnotico", "ipotesi", "ippica", "iride", "irlanda", "ironico", "irrigato", "irrorare", "isolato", "isotopo", "isterico", "istituto", "istrice", "italia", "iterare", "labbro", "labirinto", "lacca", "lacerato", "lacrima", "lacuna", "laddove", "lago", "lampo", "lancetta", "lanterna", "lardoso", "larga", "laringe", "lastra", "latenza", "latino", "lattuga", "lavagna", "lavoro", "legale", "leggero", "lembo", "lentezza", "lenza", "leone", "lepre", "lesivo", "lessato", "lesto", "letterale", "leva", "levigato", "libero", "lido", "lievito", "lilla", "limatura", "limitare", "limpido", "lineare", "lingua", "liquido", "lira", "lirica", "lisca", "lite", "litigio", "livrea", "locanda", "lode", "logica", "lombare", "londra", "longevo", "loquace", "lorenzo", "loto", "lotteria", "luce", "lucidato", "lumaca", "luminoso", "lungo", "lupo", "luppolo", "lusinga", "lusso", "lutto", "macabro", "macchina", "macero", "macinato", "madama", "magico", "maglia", "magnete", "magro", "maiolica", "malafede", "malgrado", "malinteso", "malsano", "malto", "malumore", "mana", "mancia", "mandorla", "mangiare", "manifesto", "mannaro", "manovra", "mansarda", "mantide", "manubrio", "mappa", "maratona", "marcire", "maretta", "marmo", "marsupio", "maschera", "massaia", "mastino", "materasso", "matricola", "mattone", "maturo", "mazurca", "meandro", "meccanico", "mecenate", "medesimo", "meditare", "mega", "melassa", "melis", "melodia", "meninge", "meno", "mensola", "mercurio", "merenda", "merlo", "meschino", "mese", "messere", "mestolo", "metallo", "metodo", "mettere", "miagolare", "mica", "micelio", "michele", "microbo", "midollo", "miele", "migliore", "milano", "milite", "mimosa", "minerale", "mini", "minore", "mirino", "mirtillo", "miscela", "missiva", "misto", "misurare", "mitezza", "mitigare", "mitra", "mittente", "mnemonico", "modello", "modifica", "modulo", "mogano", "mogio", "mole", "molosso", "monastero", "monco", "mondina", "monetario", "monile", "monotono", "monsone", "montato", "monviso", "mora", "mordere", "morsicato", "mostro", "motivato", "motosega", "motto", "movenza", "movimento", "mozzo", "mucca", "mucosa", "muffa", "mughetto", "mugnaio", "mulatto", "mulinello", "multiplo", "mummia", "munto", "muovere", "murale", "musa", "muscolo", "musica", "mutevole", "muto", "nababbo", "nafta", "nanometro", "narciso", "narice", "narrato", "nascere", "nastrare", "naturale", "nautica", "naviglio", "nebulosa", "necrosi", "negativo", "negozio", "nemmeno", "neofita", "neretto", "nervo", "nessuno", "nettuno", "neutrale", "neve", "nevrotico", "nicchia", "ninfa", "nitido", "nobile", "nocivo", "nodo", "nome", "nomina", "nordico", "normale", "norvegese", "nostrano", "notare", "notizia", "notturno", "novella", "nucleo", "nulla", "numero", "nuovo", "nutrire", "nuvola", "nuziale", "oasi", "obbedire", "obbligo", "obelisco", "oblio", "obolo", "obsoleto", "occasione", "occhio", "occidente", "occorrere", "occultare", "ocra", "oculato", "odierno", "odorare", "offerta", "offrire", "offuscato", "oggetto", "oggi", "ognuno", "olandese", "olfatto", "oliato", "oliva", "ologramma", "oltre", "omaggio", "ombelico", "ombra", "omega", "omissione", "ondoso", "onere", "onice", "onnivoro", "onorevole", "onta", "operato", "opinione", "opposto", "oracolo", "orafo", "ordine", "orecchino", "orefice", "orfano", "organico", "origine", "orizzonte", "orma", "ormeggio", "ornativo", "orologio", "orrendo", "orribile", "ortensia", "ortica", "orzata", "orzo", "osare", "oscurare", "osmosi", "ospedale", "ospite", "ossa", "ossidare", "ostacolo", "oste", "otite", "otre", "ottagono", "ottimo", "ottobre", "ovale", "ovest", "ovino", "oviparo", "ovocito", "ovunque", "ovviare", "ozio", "pacchetto", "pace", "pacifico", "padella", "padrone", "paese", "paga", "pagina", "palazzina", "palesare", "pallido", "palo", "palude", "pandoro", "pannello", "paolo", "paonazzo", "paprica", "parabola", "parcella", "parere", "pargolo", "pari", "parlato", "parola", "partire", "parvenza", "parziale", "passivo", "pasticca", "patacca", "patologia", "pattume", "pavone", "peccato", "pedalare", "pedonale", "peggio", "peloso", "penare", "pendice", "penisola", "pennuto", "penombra", "pensare", "pentola", "pepe", "pepita", "perbene", "percorso", "perdonato", "perforare", "pergamena", "periodo", "permesso", "perno", "perplesso", "persuaso", "pertugio", "pervaso", "pesatore", "pesista", "peso", "pestifero", "petalo", "pettine", "petulante", "pezzo", "piacere", "pianta", "piattino", "piccino", "picozza", "piega", "pietra", "piffero", "pigiama", "pigolio", "pigro", "pila", "pilifero", "pillola", "pilota", "pimpante", "pineta", "pinna", "pinolo", "pioggia", "piombo", "piramide", "piretico", "pirite", "pirolisi", "pitone", "pizzico", "placebo", "planare", "plasma", "platano", "plenario", "pochezza", "poderoso", "podismo", "poesia", "poggiare", "polenta", "poligono", "pollice", "polmonite", "polpetta", "polso", "poltrona", "polvere", "pomice", "pomodoro", "ponte", "popoloso", "porfido", "poroso", "porpora", "porre", "portata", "posa", "positivo", "possesso", "postulato", "potassio", "potere", "pranzo", "prassi", "pratica", "precluso", "predica", "prefisso", "pregiato", "prelievo", "premere", "prenotare", "preparato", "presenza", "pretesto", "prevalso", "prima", "principe", "privato", "problema", "procura", "produrre", "profumo", "progetto", "prolunga", "promessa", "pronome", "proposta", "proroga", "proteso", "prova", "prudente", "prugna", "prurito", "psiche", "pubblico", "pudica", "pugilato", "pugno", "pulce", "pulito", "pulsante", "puntare", "pupazzo", "pupilla", "puro", "quadro", "qualcosa", "quasi", "querela", "quota", "raccolto", "raddoppio", "radicale", "radunato", "raffica", "ragazzo", "ragione", "ragno", "ramarro", "ramingo", "ramo", "randagio", "rantolare", "rapato", "rapina", "rappreso", "rasatura", "raschiato", "rasente", "rassegna", "rastrello", "rata", "ravveduto", "reale", "recepire", "recinto", "recluta", "recondito", "recupero", "reddito", "redimere", "regalato", "registro", "regola", "regresso", "relazione", "remare", "remoto", "renna", "replica", "reprimere", "reputare", "resa", "residente", "responso", "restauro", "rete", "retina", "retorica", "rettifica", "revocato", "riassunto", "ribadire", "ribelle", "ribrezzo", "ricarica", "ricco", "ricevere", "riciclato", "ricordo", "ricreduto", "ridicolo", "ridurre", "rifasare", "riflesso", "riforma", "rifugio", "rigare", "rigettato", "righello", "rilassato", "rilevato", "rimanere", "rimbalzo", "rimedio", "rimorchio", "rinascita", "rincaro", "rinforzo", "rinnovo", "rinomato", "rinsavito", "rintocco", "rinuncia", "rinvenire", "riparato", "ripetuto", "ripieno", "riportare", "ripresa", "ripulire", "risata", "rischio", "riserva", "risibile", "riso", "rispetto", "ristoro", "risultato", "risvolto", "ritardo", "ritegno", "ritmico", "ritrovo", "riunione", "riva", "riverso", "rivincita", "rivolto", "rizoma", "roba", "robotico", "robusto", "roccia", "roco", "rodaggio", "rodere", "roditore", "rogito", "rollio", "romantico", "rompere", "ronzio", "rosolare", "rospo", "rotante", "rotondo", "rotula", "rovescio", "rubizzo", "rubrica", "ruga", "rullino", "rumine", "rumoroso", "ruolo", "rupe", "russare", "rustico", "sabato", "sabbiare", "sabotato", "sagoma", "salasso", "saldatura", "salgemma", "salivare", "salmone", "salone", "saltare", "saluto", "salvo", "sapere", "sapido", "saporito", "saraceno", "sarcasmo", "sarto", "sassoso", "satellite", "satira", "satollo", "saturno", "savana", "savio", "saziato", "sbadiglio", "sbalzo", "sbancato", "sbarra", "sbattere", "sbavare", "sbendare", "sbirciare", "sbloccato", "sbocciato", "sbrinare", "sbruffone", "sbuffare", "scabroso", "scadenza", "scala", "scambiare", "scandalo", "scapola", "scarso", "scatenare", "scavato", "scelto", "scenico", "scettro", "scheda", "schiena", "sciarpa", "scienza", "scindere", "scippo", "sciroppo", "scivolo", "sclerare", "scodella", "scolpito", "scomparto", "sconforto", "scoprire", "scorta", "scossone", "scozzese", "scriba", "scrollare", "scrutinio", "scuderia", "scultore", "scuola", "scuro", "scusare", "sdebitare", "sdoganare", "seccatura", "secondo", "sedano", "seggiola", "segnalato", "segregato", "seguito", "selciato", "selettivo", "sella", "selvaggio", "semaforo", "sembrare", "seme", "seminato", "sempre", "senso", "sentire", "sepolto", "sequenza", "serata", "serbato", "sereno", "serio", "serpente", "serraglio", "servire", "sestina", "setola", "settimana", "sfacelo", "sfaldare", "sfamato", "sfarzoso", "sfaticato", "sfera", "sfida", "sfilato", "sfinge", "sfocato", "sfoderare", "sfogo", "sfoltire", "sforzato", "sfratto", "sfruttato", "sfuggito", "sfumare", "sfuso", "sgabello", "sgarbato", "sgonfiare", "sgorbio", "sgrassato", "sguardo", "sibilo", "siccome", "sierra", "sigla", "signore", "silenzio", "sillaba", "simbolo", "simpatico", "simulato", "sinfonia", "singolo", "sinistro", "sino", "sintesi", "sinusoide", "sipario", "sisma", "sistole", "situato", "slitta", "slogatura", "sloveno", "smarrito", "smemorato", "smentito", "smeraldo", "smilzo", "smontare", "smottato", "smussato", "snellire", "snervato", "snodo", "sobbalzo", "sobrio", "soccorso", "sociale", "sodale", "soffitto", "sogno", "soldato", "solenne", "solido", "sollazzo", "solo", "solubile", "solvente", "somatico", "somma", "sonda", "sonetto", "sonnifero", "sopire", "soppeso", "sopra", "sorgere", "sorpasso", "sorriso", "sorso", "sorteggio", "sorvolato", "sospiro", "sosta", "sottile", "spada", "spalla", "spargere", "spatola", "spavento", "spazzola", "specie", "spedire", "spegnere", "spelatura", "speranza", "spessore", "spettrale", "spezzato", "spia", "spigoloso", "spillato", "spinoso", "spirale", "splendido", "sportivo", "sposo", "spranga", "sprecare", "spronato", "spruzzo", "spuntino", "squillo", "sradicare", "srotolato", "stabile", "stacco", "staffa", "stagnare", "stampato", "stantio", "starnuto", "stasera", "statuto", "stelo", "steppa", "sterzo", "stiletto", "stima", "stirpe", "stivale", "stizzoso", "stonato", "storico", "strappo", "stregato", "stridulo", "strozzare", "strutto", "stuccare", "stufo", "stupendo", "subentro", "succoso", "sudore", "suggerito", "sugo", "sultano", "suonare", "superbo", "supporto", "surgelato", "surrogato", "sussurro", "sutura", "svagare", "svedese", "sveglio", "svelare", "svenuto", "svezia", "sviluppo", "svista", "svizzera", "svolta", "svuotare", "tabacco", "tabulato", "tacciare", "taciturno", "tale", "talismano", "tampone", "tannino", "tara", "tardivo", "targato", "tariffa", "tarpare", "tartaruga", "tasto", "tattico", "taverna", "tavolata", "tazza", "teca", "tecnico", "telefono", "temerario", "tempo", "temuto", "tendone", "tenero", "tensione", "tentacolo", "teorema", "terme", "terrazzo", "terzetto", "tesi", "tesserato", "testato", "tetro", "tettoia", "tifare", "tigella", "timbro", "tinto", "tipico", "tipografo", "tiraggio", "tiro", "titanio", "titolo", "titubante", "tizio", "tizzone", "toccare", "tollerare", "tolto", "tombola", "tomo", "tonfo", "tonsilla", "topazio", "topologia", "toppa", "torba", "tornare", "torrone", "tortora", "toscano", "tossire", "tostatura", "totano", "trabocco", "trachea", "trafila", "tragedia", "tralcio", "tramonto", "transito", "trapano", "trarre", "trasloco", "trattato", "trave", "treccia", "tremolio", "trespolo", "tributo", "tricheco", "trifoglio", "trillo", "trincea", "trio", "tristezza", "triturato", "trivella", "tromba", "trono", "troppo", "trottola", "trovare", "truccato", "tubatura", "tuffato", "tulipano", "tumulto", "tunisia", "turbare", "turchino", "tuta", "tutela", "ubicato", "uccello", "uccisore", "udire", "uditivo", "uffa", "ufficio", "uguale", "ulisse", "ultimato", "umano", "umile", "umorismo", "uncinetto", "ungere", "ungherese", "unicorno", "unificato", "unisono", "unitario", "unte", "uovo", "upupa", "uragano", "urgenza", "urlo", "usanza", "usato", "uscito", "usignolo", "usuraio", "utensile", "utilizzo", "utopia", "vacante", "vaccinato", "vagabondo", "vagliato", "valanga", "valgo", "valico", "valletta", "valoroso", "valutare", "valvola", "vampata", "vangare", "vanitoso", "vano", "vantaggio", "vanvera", "vapore", "varano", "varcato", "variante", "vasca", "vedetta", "vedova", "veduto", "vegetale", "veicolo", "velcro", "velina", "velluto", "veloce", "venato", "vendemmia", "vento", "verace", "verbale", "vergogna", "verifica", "vero", "verruca", "verticale", "vescica", "vessillo", "vestale", "veterano", "vetrina", "vetusto", "viandante", "vibrante", "vicenda", "vichingo", "vicinanza", "vidimare", "vigilia", "vigneto", "vigore", "vile", "villano", "vimini", "vincitore", "viola", "vipera", "virgola", "virologo", "virulento", "viscoso", "visione", "vispo", "vissuto", "visura", "vita", "vitello", "vittima", "vivanda", "vivido", "viziare", "voce", "voga", "volatile", "volere", "volpe", "voragine", "vulcano", "zampogna", "zanna", "zappato", "zattera", "zavorra", "zefiro", "zelante", "zelo", "zenzero", "zerbino", "zibetto", "zinco", "zircone", "zitto", "zolla", "zotico", "zucchero", "zufolo", "zulu", "zuppa", } }; polyseed-1.0.0/src/lang_jp.c000066400000000000000000001501761424320763700157230ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 with ordinal sorting */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_jp = { .name = u8"日本語", .name_en = "Japanese", .separator = u8"\u3000", .is_sorted = true, .has_prefix = false, .has_accents = false, .compose = false, .words = { u8"あいこくしん", u8"あいさつ", u8"あいだ", u8"あおぞら", u8"あかちゃん", u8"あきる", u8"あけがた", u8"あける", u8"あこがれる", u8"あさい", u8"あさひ", u8"あしあと", u8"あじわう", u8"あずかる", u8"あずき", u8"あそぶ", u8"あたえる", u8"あたためる", u8"あたりまえ", u8"あたる", u8"あっしゅく", u8"あつい", u8"あつかう", u8"あつまり", u8"あつめる", u8"あてな", u8"あてはまる", u8"あひる", u8"あふれる", u8"あぶら", u8"あぶる", u8"あまい", u8"あまど", u8"あまやかす", u8"あまり", u8"あみもの", u8"あめりか", u8"あやまる", u8"あゆむ", u8"あらいぐま", u8"あらし", u8"あらすじ", u8"あらためる", u8"あらゆる", u8"あらわす", u8"ありがとう", u8"あわせる", u8"あわてる", u8"あんい", u8"あんがい", u8"あんこ", u8"あんぜん", u8"あんてい", u8"あんない", u8"あんまり", u8"いいだす", u8"いおん", u8"いがい", u8"いがく", u8"いきおい", u8"いきなり", u8"いきもの", u8"いきる", u8"いくじ", u8"いくぶん", u8"いけばな", u8"いけん", u8"いこう", u8"いこく", u8"いこつ", u8"いさましい", u8"いさん", u8"いしき", u8"いじゅう", u8"いじょう", u8"いじわる", u8"いずみ", u8"いずれ", u8"いせい", u8"いせえび", u8"いせかい", u8"いせき", u8"いぜん", u8"いそうろう", u8"いそがしい", u8"いたずら", u8"いたみ", u8"いたりあ", u8"いだい", u8"いだく", u8"いちおう", u8"いちじ", u8"いちど", u8"いちば", u8"いちぶ", u8"いちりゅう", u8"いっしゅん", u8"いっせい", u8"いっそう", u8"いったん", u8"いっち", u8"いってい", u8"いっぽう", u8"いつか", u8"いてざ", u8"いてん", u8"いとこ", u8"いどう", u8"いない", u8"いなか", u8"いねむり", u8"いのち", u8"いのる", u8"いはつ", u8"いはん", u8"いばる", u8"いひん", u8"いびき", u8"いふく", u8"いへん", u8"いほう", u8"いみん", u8"いもうと", u8"いもたれ", u8"いもり", u8"いやがる", u8"いやす", u8"いよかん", u8"いよく", u8"いらい", u8"いらすと", u8"いりぐち", u8"いりょう", u8"いれい", u8"いれもの", u8"いれる", u8"いろえんぴつ", u8"いわい", u8"いわう", u8"いわかん", u8"いわば", u8"いわゆる", u8"いんげんまめ", u8"いんさつ", u8"いんしょう", u8"いんよう", u8"うえき", u8"うえる", u8"うおざ", u8"うかぶ", u8"うかべる", u8"うがい", u8"うきわ", u8"うくらいな", u8"うくれれ", u8"うけたまわる", u8"うけつけ", u8"うけとる", u8"うけもつ", u8"うける", u8"うこん", u8"うごかす", u8"うごく", u8"うさぎ", u8"うしなう", u8"うしろがみ", u8"うすい", u8"うすぎ", u8"うすぐらい", u8"うすめる", u8"うせつ", u8"うちあわせ", u8"うちがわ", u8"うちき", u8"うちゅう", u8"うっかり", u8"うったえる", u8"うつくしい", u8"うつる", u8"うどん", u8"うなぎ", u8"うなじ", u8"うなずく", u8"うなる", u8"うねる", u8"うのう", u8"うぶげ", u8"うぶごえ", u8"うまれる", u8"うめる", u8"うもう", u8"うやまう", u8"うよく", u8"うらがえす", u8"うらぐち", u8"うらない", u8"うりあげ", u8"うりきれ", u8"うるさい", u8"うれしい", u8"うれゆき", u8"うれる", u8"うろこ", u8"うわき", u8"うわさ", u8"うんこう", u8"うんちん", u8"うんてん", u8"うんどう", u8"えいえん", u8"えいが", u8"えいきょう", u8"えいご", u8"えいせい", u8"えいぶん", u8"えいよう", u8"えいわ", u8"えおり", u8"えがお", u8"えがく", u8"えきたい", u8"えくせる", u8"えしゃく", u8"えすて", u8"えつらん", u8"えのぐ", u8"えほうまき", u8"えほん", u8"えまき", u8"えもじ", u8"えもの", u8"えらい", u8"えらぶ", u8"えりあ", u8"えんえん", u8"えんかい", u8"えんぎ", u8"えんげき", u8"えんしゅう", u8"えんぜつ", u8"えんそく", u8"えんちょう", u8"えんとつ", u8"おいかける", u8"おいこす", u8"おいしい", u8"おいつく", u8"おうえん", u8"おうさま", u8"おうじ", u8"おうせつ", u8"おうたい", u8"おうふく", u8"おうべい", u8"おうよう", u8"おえる", u8"おおい", u8"おおう", u8"おおどおり", u8"おおや", u8"おおよそ", u8"おかえり", u8"おかず", u8"おかわり", u8"おがむ", u8"おきる", u8"おぎなう", u8"おくさま", u8"おくじょう", u8"おくりがな", u8"おくる", u8"おくれる", u8"おこす", u8"おこなう", u8"おこる", u8"おさえる", u8"おさない", u8"おさめる", u8"おしいれ", u8"おしえる", u8"おしゃれ", u8"おじぎ", u8"おじさん", u8"おそらく", u8"おそわる", u8"おたがい", u8"おたく", u8"おだやか", u8"おちつく", u8"おっと", u8"おつり", u8"おでかけ", u8"おとしもの", u8"おとなしい", u8"おどり", u8"おどろかす", u8"おばさん", u8"おまいり", u8"おめでとう", u8"おもいで", u8"おもう", u8"おもたい", u8"おもちゃ", u8"おやつ", u8"おやゆび", u8"およぼす", u8"おらんだ", u8"おろす", u8"おんがく", u8"おんけい", u8"おんしゃ", u8"おんせん", u8"おんだん", u8"おんちゅう", u8"おんどけい", u8"かあつ", u8"かいが", u8"かいさつ", u8"かいしゃ", u8"かいすいよく", u8"かいぜん", u8"かいぞうど", u8"かいつう", u8"かいてん", u8"かいとう", u8"かいふく", u8"かいほう", u8"かいよう", u8"かいわ", u8"かえる", u8"かおり", u8"かかえる", u8"かがく", u8"かがし", u8"かがみ", u8"かくご", u8"かくとく", u8"かざる", u8"かたい", u8"かたち", u8"かなざわし", u8"かのう", u8"かぶか", u8"かほう", u8"かほご", u8"かまう", u8"かまぼこ", u8"かめれおん", u8"かゆい", u8"かようび", u8"からい", u8"かるい", u8"かろう", u8"かわく", u8"かわら", u8"かんけい", u8"かんこう", u8"かんしゃ", u8"かんそう", u8"かんたん", u8"かんち", u8"がいき", u8"がいけん", u8"がいこう", u8"がいへき", u8"がいらい", u8"がぞう", u8"がちょう", u8"がっきゅう", u8"がっこう", u8"がっさん", u8"がっしょう", u8"がはく", u8"がんか", u8"がんばる", u8"きあい", u8"きあつ", u8"きいろ", u8"きうい", u8"きうん", u8"きえる", u8"きおう", u8"きおく", u8"きおち", u8"きおん", u8"きかい", u8"きかく", u8"きかんしゃ", u8"ききて", u8"きくばり", u8"きくらげ", u8"きけんせい", u8"きこう", u8"きこえる", u8"きこく", u8"きさい", u8"きさく", u8"きさま", u8"きさらぎ", u8"きすう", u8"きせい", u8"きせき", u8"きせつ", u8"きそう", u8"きぞく", u8"きぞん", u8"きたえる", u8"きちょう", u8"きつえん", u8"きつつき", u8"きつね", u8"きてい", u8"きどう", u8"きどく", u8"きない", u8"きなが", u8"きなこ", u8"きぬごし", u8"きねん", u8"きのう", u8"きのした", u8"きはく", u8"きひん", u8"きびしい", u8"きふく", u8"きぶん", u8"きほん", u8"きぼう", u8"きまる", u8"きみつ", u8"きむずかしい", u8"きめる", u8"きもだめし", u8"きもち", u8"きもの", u8"きゃく", u8"きやく", u8"きょうりゅう", u8"きよう", u8"きらい", u8"きらく", u8"きりん", u8"きれい", u8"きれつ", u8"きろく", u8"きわめる", u8"きんかくじ", u8"きんじょ", u8"きんようび", u8"ぎいん", u8"ぎしき", u8"ぎじかがく", u8"ぎじたいけん", u8"ぎじにってい", u8"ぎじゅつしゃ", u8"ぎっちり", u8"ぎゅうにく", u8"ぎろん", u8"ぎんいろ", u8"くいず", u8"くうかん", u8"くうき", u8"くうぐん", u8"くうこう", u8"くうそう", u8"くうふく", u8"くうぼ", u8"くかん", u8"くきょう", u8"くげん", u8"くさい", u8"くさき", u8"くさばな", u8"くさる", u8"くしゃみ", u8"くしょう", u8"くすのき", u8"くすりゆび", u8"くせげ", u8"くせん", u8"くたびれる", u8"くださる", u8"くちこみ", u8"くちさき", u8"くつした", u8"くつろぐ", u8"くとうてん", u8"くどく", u8"くなん", u8"くねくね", u8"くのう", u8"くふう", u8"くみあわせ", u8"くみたてる", u8"くめる", u8"くやくしょ", u8"くらす", u8"くらべる", u8"くるま", u8"くれる", u8"くろう", u8"くわしい", u8"ぐあい", u8"ぐうせい", u8"ぐうたら", u8"ぐこう", u8"ぐたいてき", u8"ぐっすり", u8"ぐんかん", u8"ぐんしょく", u8"ぐんたい", u8"ぐんて", u8"けあな", u8"けいかく", u8"けいけん", u8"けいこ", u8"けいさつ", u8"けいたい", u8"けいれき", u8"けいろ", u8"けおとす", u8"けおりもの", u8"けさき", u8"けしき", u8"けしごむ", u8"けしょう", u8"けたば", u8"けちゃっぷ", u8"けちらす", u8"けっこん", u8"けっせき", u8"けってい", u8"けつあつ", u8"けつい", u8"けつえき", u8"けつじょ", u8"けつまつ", u8"けつろん", u8"けとばす", u8"けとる", u8"けなげ", u8"けなす", u8"けなみ", u8"けぬき", u8"けねん", u8"けはい", u8"けぶかい", u8"けまり", u8"けみかる", u8"けむし", u8"けむり", u8"けもの", u8"けらい", u8"けろけろ", u8"けわしい", u8"けんい", u8"けんえつ", u8"けんお", u8"けんか", u8"けんげん", u8"けんこう", u8"けんさく", u8"けんしゅう", u8"けんすう", u8"けんちく", u8"けんてい", u8"けんとう", u8"けんない", u8"けんにん", u8"けんま", u8"けんみん", u8"けんめい", u8"けんらん", u8"けんり", u8"げいじゅつ", u8"げいのうじん", u8"げきか", u8"げきげん", u8"げきだん", u8"げきちん", u8"げきとつ", u8"げきは", u8"げきやく", u8"げこう", u8"げこくじょう", u8"げざい", u8"げざん", u8"げすと", u8"げつようび", u8"げつれい", u8"げどく", u8"げねつ", u8"げひん", u8"げぼく", u8"げんき", u8"げんそう", u8"げんぶつ", u8"こあくま", u8"こいぬ", u8"こいびと", u8"こうえん", u8"こうおん", u8"こうかん", u8"こうこう", u8"こうさい", u8"こうじ", u8"こうすい", u8"こうそく", u8"こうたい", u8"こうちゃ", u8"こうつう", u8"こうてい", u8"こうどう", u8"こうない", u8"こうはい", u8"こうもく", u8"こうりつ", u8"こえる", u8"こおり", u8"こくご", u8"こくさい", u8"こくとう", u8"こくない", u8"こくはく", u8"こぐま", u8"こけい", u8"こける", u8"ここのか", u8"こころ", u8"こさめ", u8"こしつ", u8"こすう", u8"こせい", u8"こせき", u8"こぜん", u8"こそだて", u8"こたい", u8"こたえる", u8"こたつ", u8"こちょう", u8"こっか", u8"こつこつ", u8"こつばん", u8"こつぶ", u8"こてい", u8"こてん", u8"ことがら", u8"ことし", u8"ことば", u8"ことり", u8"こなごな", u8"こねこね", u8"このまま", u8"このみ", u8"このよ", u8"こひつじ", u8"こふう", u8"こふん", u8"こぼれる", u8"こまかい", u8"こまつな", u8"こまる", u8"こむぎこ", u8"こもじ", u8"こもち", u8"こもの", u8"こもん", u8"こやく", u8"こやま", u8"こゆう", u8"こゆび", u8"こよい", u8"こよう", u8"こりる", u8"これくしょん", u8"ころっけ", u8"こわもて", u8"こわれる", u8"こんいん", u8"こんかい", u8"こんき", u8"こんしゅう", u8"こんすい", u8"こんだて", u8"こんとん", u8"こんなん", u8"こんびに", u8"こんぽん", u8"こんまけ", u8"こんや", u8"こんれい", u8"こんわく", u8"ごうい", u8"ごうきゅう", u8"ごうけい", u8"ごうせい", u8"ごうほう", u8"ごうまん", u8"ごかい", u8"ごかん", u8"ごがつ", u8"ごはん", u8"ごまあぶら", u8"ごますり", u8"さいかい", u8"さいきん", u8"さいしょ", u8"さいせい", u8"さいてき", u8"さうな", u8"さかいし", u8"さかな", u8"さかみち", u8"さがす", u8"さがる", u8"さぎょう", u8"さくし", u8"さくひん", u8"さくら", u8"さこく", u8"さこつ", u8"さずかる", u8"さたん", u8"さっきょく", u8"さつえい", u8"さつじん", u8"さつたば", u8"さつまいも", u8"さてい", u8"さといも", u8"さとう", u8"さとおや", u8"さとし", u8"さとる", u8"さのう", u8"さばく", u8"さびしい", u8"さべつ", u8"さほう", u8"さほど", u8"さます", u8"さみしい", u8"さみだれ", u8"さむけ", u8"さめる", u8"さやえんどう", u8"さゆう", u8"さよう", u8"さよく", u8"さらだ", u8"さわやか", u8"さわる", u8"さんいん", u8"さんか", u8"さんきゃく", u8"さんこう", u8"さんさい", u8"さんすう", u8"さんせい", u8"さんそ", u8"さんち", u8"さんま", u8"さんみ", u8"さんらん", u8"ざいえき", u8"ざいげん", u8"ざいこ", u8"ざいたく", u8"ざいちゅう", u8"ざいりょう", u8"ざせき", u8"ざっか", u8"ざっし", u8"ざっそう", u8"ざつおん", u8"ざつがく", u8"ざるそば", u8"ざんしょ", u8"しあい", u8"しあげ", u8"しあさって", u8"しあわせ", u8"しいく", u8"しいん", u8"しうち", u8"しえい", u8"しおけ", u8"しかい", u8"しかく", u8"しごと", u8"しすう", u8"したうけ", u8"したぎ", u8"したて", u8"したみ", u8"しちょう", u8"しちりん", u8"しっかり", u8"しつじ", u8"しつもん", u8"してい", u8"してき", u8"してつ", u8"しなぎれ", u8"しなもの", u8"しなん", u8"しねま", u8"しねん", u8"しのぐ", u8"しのぶ", u8"しはい", u8"しはつ", u8"しはらい", u8"しはん", u8"しばかり", u8"しひょう", u8"しふく", u8"しへい", u8"しほう", u8"しほん", u8"しまう", u8"しまる", u8"しみん", u8"しむける", u8"しめい", u8"しめる", u8"しもん", u8"しゃいん", u8"しゃうん", u8"しゃおん", u8"しゃくほう", u8"しゃけん", u8"しゃこ", u8"しゃざい", u8"しゃしん", u8"しゃせん", u8"しゃそう", u8"しゃたい", u8"しゃちょう", u8"しゃっきん", u8"しゃりん", u8"しゃれい", u8"しやくしょ", u8"しゅくはく", u8"しゅっせき", u8"しゅみ", u8"しゅらば", u8"しょうかい", u8"しょくたく", u8"しょっけん", u8"しょどう", u8"しょもつ", u8"しらせる", u8"しらべる", u8"しんか", u8"しんこう", u8"しんせいじ", u8"しんちく", u8"しんりん", u8"じかん", u8"じだい", u8"じてん", u8"じどう", u8"じぶん", u8"じむしょ", u8"じゃがいも", u8"じゃま", u8"じゅうしょ", u8"じゅしん", u8"じゅんばん", u8"じゆう", u8"じんじゃ", u8"すあげ", u8"すあし", u8"すあな", u8"すいえい", u8"すいか", u8"すいとう", u8"すいようび", u8"すうがく", u8"すうじつ", u8"すうせん", u8"すおどり", u8"すきま", u8"すくう", u8"すくない", u8"すける", u8"すこし", u8"すごい", u8"すすむ", u8"すすめる", u8"すずしい", u8"すっかり", u8"すてき", u8"すてる", u8"すねる", u8"すのこ", u8"すはだ", u8"すばらしい", u8"すふれ", u8"すぶり", u8"すべて", u8"すべる", u8"すぼん", u8"すまい", u8"すめし", u8"すもう", u8"すやき", u8"すらすら", u8"するめ", u8"すれちがう", u8"すろっと", u8"すわる", u8"すんぜん", u8"すんぽう", u8"ずあん", u8"ずいぶん", u8"ずさん", u8"ずっしり", u8"ずっと", u8"ずひょう", u8"ずぶぬれ", u8"ずほう", u8"せあぶら", u8"せいかつ", u8"せいげん", u8"せいじ", u8"せいよう", u8"せおう", u8"せかいかん", u8"せきにん", u8"せきむ", u8"せきゆ", u8"せきらんうん", u8"せけん", u8"せこう", u8"せすじ", u8"せたい", u8"せたけ", u8"せっかく", u8"せっきゃく", u8"せっけん", u8"せっこつ", u8"せっさたくま", u8"せっぱん", u8"せつぞく", u8"せつだん", u8"せつでん", u8"せつび", u8"せつぶん", u8"せつめい", u8"せつりつ", u8"せなか", u8"せのび", u8"せはば", u8"せびろ", u8"せぼね", u8"せまい", u8"せまる", u8"せめる", u8"せもたれ", u8"せりふ", u8"せんい", u8"せんえい", u8"せんか", u8"せんきょ", u8"せんく", u8"せんげん", u8"せんさい", u8"せんしゅ", u8"せんすい", u8"せんせい", u8"せんぞ", u8"せんたく", u8"せんちょう", u8"せんてい", u8"せんとう", u8"せんぬき", u8"せんねん", u8"せんぱい", u8"せんむ", u8"せんめんじょ", u8"せんもん", u8"せんやく", u8"せんゆう", u8"せんよう", u8"せんれい", u8"せんろ", u8"ぜっく", u8"ぜんあく", u8"ぜんご", u8"ぜんぶ", u8"ぜんぽう", u8"ぜんら", u8"ぜんりゃく", u8"そあく", u8"そいとげる", u8"そいね", u8"そうがんきょう", u8"そうき", u8"そうご", u8"そうしん", u8"そうだん", u8"そうなん", u8"そうび", u8"そうめん", u8"そうり", u8"そえもの", u8"そえん", u8"そがい", u8"そげき", u8"そこう", u8"そこそこ", u8"そざい", u8"そしな", u8"そせい", u8"そせん", u8"そそぐ", u8"そだてる", u8"そっかん", u8"そっけつ", u8"そっこう", u8"そっせん", u8"そっと", u8"そつう", u8"そつえん", u8"そつぎょう", u8"そとがわ", u8"そとづら", u8"そなえる", u8"そなた", u8"そふぼ", u8"そぼく", u8"そぼろ", u8"そまつ", u8"そまる", u8"そむく", u8"そむりえ", u8"そめる", u8"そもそも", u8"そよかぜ", u8"そらまめ", u8"そろう", u8"そんかい", u8"そんけい", u8"そんざい", u8"そんしつ", u8"そんぞく", u8"そんちょう", u8"そんみん", u8"ぞんび", u8"ぞんぶん", u8"たあい", u8"たいいん", u8"たいうん", u8"たいえき", u8"たいおう", u8"たいき", u8"たいぐう", u8"たいけん", u8"たいこ", u8"たいざい", u8"たいせつ", u8"たいそう", u8"たいちょう", u8"たいてい", u8"たいない", u8"たいねつ", u8"たいのう", u8"たいはん", u8"たいふう", u8"たいへん", u8"たいほ", u8"たいまつばな", u8"たいみんぐ", u8"たいむ", u8"たいめん", u8"たいやき", u8"たいよう", u8"たいら", u8"たいりょく", u8"たいる", u8"たいわん", u8"たうえ", u8"たえる", u8"たおす", u8"たおる", u8"たおれる", u8"たかい", u8"たかね", u8"たきび", u8"たくさん", u8"たこく", u8"たこやき", u8"たさい", u8"たしざん", u8"たすける", u8"たずさわる", u8"たそがれ", u8"たたかう", u8"たたく", u8"たたみ", u8"ただしい", u8"たちばな", u8"たてる", u8"たとえる", u8"たなばた", u8"たにん", u8"たぬき", u8"たのしみ", u8"たはつ", u8"たぶん", u8"たべる", u8"たぼう", u8"たまご", u8"たまる", u8"ためいき", u8"ためす", u8"ためる", u8"たもつ", u8"たやすい", u8"たよる", u8"たらす", u8"たりきほんがん", u8"たりょう", u8"たりる", u8"たると", u8"たれる", u8"たれんと", u8"たろっと", u8"たわむれる", u8"たんい", u8"たんおん", u8"たんか", u8"たんき", u8"たんけん", u8"たんご", u8"たんさん", u8"たんじょうび", u8"たんそく", u8"たんたい", u8"たんてい", u8"たんとう", u8"たんにん", u8"たんのう", u8"たんぴん", u8"たんまつ", u8"たんめい", u8"だいがく", u8"だいじょうぶ", u8"だいすき", u8"だいたい", u8"だいどころ", u8"だいひょう", u8"だじゃれ", u8"だっかい", u8"だっきゃく", u8"だっこ", u8"だっしゅつ", u8"だったい", u8"だむる", u8"だんあつ", u8"だんせい", u8"だんち", u8"だんな", u8"だんねつ", u8"だんぼう", u8"だんれつ", u8"だんろ", u8"だんわ", u8"ちあい", u8"ちあん", u8"ちいき", u8"ちいさい", u8"ちえん", u8"ちかい", u8"ちから", u8"ちきゅう", u8"ちきん", u8"ちけいず", u8"ちけん", u8"ちこく", u8"ちさい", u8"ちしき", u8"ちしりょう", u8"ちせい", u8"ちそう", u8"ちたい", u8"ちたん", u8"ちちおや", u8"ちつじょ", u8"ちてき", u8"ちてん", u8"ちぬき", u8"ちぬり", u8"ちのう", u8"ちひょう", u8"ちへいせん", u8"ちほう", u8"ちまた", u8"ちみつ", u8"ちみどろ", u8"ちめいど", u8"ちゃんこなべ", u8"ちゅうい", u8"ちゆりょく", u8"ちょうし", u8"ちょさくけん", u8"ちらし", u8"ちらみ", u8"ちりがみ", u8"ちりょう", u8"ちるど", u8"ちわわ", u8"ちんたい", u8"ちんもく", u8"ついか", u8"ついたち", u8"つうか", u8"つうじょう", u8"つうはん", u8"つうわ", u8"つかう", u8"つかれる", u8"つくね", u8"つくる", u8"つけね", u8"つける", u8"つごう", u8"つたえる", u8"つつじ", u8"つつむ", u8"つづく", u8"つとめる", u8"つながる", u8"つなみ", u8"つねづね", u8"つのる", u8"つぶす", u8"つまらない", u8"つまる", u8"つみき", u8"つめたい", u8"つもり", u8"つもる", u8"つよい", u8"つるぼ", u8"つるみく", u8"つわもの", u8"つわり", u8"てあし", u8"てあて", u8"てあみ", u8"ていおん", u8"ていか", u8"ていき", u8"ていけい", u8"ていこく", u8"ていさつ", u8"ていし", u8"ていせい", u8"ていたい", u8"ていど", u8"ていねい", u8"ていひょう", u8"ていへん", u8"ていぼう", u8"てうち", u8"ておくれ", u8"てきとう", u8"てくび", u8"てさぎょう", u8"てさげ", u8"てすり", u8"てそう", u8"てちがい", u8"てちょう", u8"てつがく", u8"てつづき", u8"てつぼう", u8"てつや", u8"てぬき", u8"てぬぐい", u8"てのひら", u8"てはい", u8"てふだ", u8"てぶくろ", u8"てほどき", u8"てほん", u8"てまえ", u8"てまきずし", u8"てみじか", u8"てみやげ", u8"てらす", u8"てれび", u8"てわけ", u8"てわたし", u8"てんいん", u8"てんかい", u8"てんき", u8"てんぐ", u8"てんけん", u8"てんごく", u8"てんさい", u8"てんし", u8"てんすう", u8"てんてき", u8"てんとう", u8"てんない", u8"てんぷら", u8"てんぼうだい", u8"てんめつ", u8"てんらんかい", u8"でこぼこ", u8"でっぱ", u8"でぬかえ", u8"でんあつ", u8"でんち", u8"でんりょく", u8"でんわ", u8"といれ", u8"とうきゅう", u8"とうし", u8"とうむぎ", u8"とおい", u8"とおか", u8"とおく", u8"とおす", u8"とおる", u8"とかい", u8"とかす", u8"ときおり", u8"ときどき", u8"とくい", u8"とくしゅう", u8"とくてん", u8"とくに", u8"とくべつ", u8"とけい", u8"とける", u8"とこや", u8"とさか", u8"としょかん", u8"とそう", u8"とたん", u8"とちゅう", u8"とっきゅう", u8"とっくん", u8"とつぜん", u8"とつにゅう", u8"ととのえる", u8"とどける", u8"とない", u8"となえる", u8"となり", u8"とのさま", u8"とばす", u8"とほう", u8"とまる", u8"とめる", u8"ともだち", u8"ともる", u8"とらえる", u8"とんかつ", u8"どあい", u8"どうかん", u8"どうぐ", u8"どぶがわ", u8"どようび", u8"どんぶり", u8"ないかく", u8"ないこう", u8"ないしょ", u8"ないす", u8"ないせん", u8"ないそう", u8"なおす", u8"ながい", u8"なくす", u8"なげる", u8"なこうど", u8"なさけ", u8"なたでここ", u8"なっとう", u8"なつやすみ", u8"ななおし", u8"なにごと", u8"なにもの", u8"なにわ", u8"なのか", u8"なふだ", u8"なまいき", u8"なまえ", u8"なまみ", u8"なみだ", u8"なめらか", u8"なめる", u8"なやむ", u8"ならう", u8"ならび", u8"ならぶ", u8"なれる", u8"なわとび", u8"なわばり", u8"にあう", u8"にいがた", u8"にうけ", u8"におい", u8"にかい", u8"にがて", u8"にきび", u8"にくしみ", u8"にくまん", u8"にげる", u8"にさんかたんそ", u8"にしき", u8"にせもの", u8"にちじょう", u8"にちようび", u8"にっか", u8"にっき", u8"にっけい", u8"にっこう", u8"にっさん", u8"にっしょく", u8"にっすう", u8"にっせき", u8"にってい", u8"になう", u8"にほん", u8"にまめ", u8"にもつ", u8"にやり", u8"にゅういん", u8"にりんしゃ", u8"にわとり", u8"にんい", u8"にんか", u8"にんき", u8"にんげん", u8"にんしき", u8"にんずう", u8"にんそう", u8"にんたい", u8"にんち", u8"にんてい", u8"にんにく", u8"にんぷ", u8"にんまり", u8"にんむ", u8"にんめい", u8"にんよう", u8"ぬいくぎ", u8"ぬかす", u8"ぬくもり", u8"ぬぐいとる", u8"ぬぐう", u8"ぬすむ", u8"ぬまえび", u8"ぬめり", u8"ぬらす", u8"ぬんちゃく", u8"ねあげ", u8"ねいき", u8"ねいる", u8"ねいろ", u8"ねくたい", u8"ねくら", u8"ねぐせ", u8"ねこぜ", u8"ねこむ", u8"ねさげ", u8"ねすごす", u8"ねそべる", u8"ねだん", u8"ねっしん", u8"ねったいぎょ", u8"ねつい", u8"ねつぞう", u8"ねふだ", u8"ねぶそく", u8"ねほりはほり", u8"ねぼう", u8"ねまき", u8"ねまわし", u8"ねみみ", u8"ねむい", u8"ねむたい", u8"ねもと", u8"ねらう", u8"ねわざ", u8"ねんいり", u8"ねんおし", u8"ねんかん", u8"ねんきん", u8"ねんぐ", u8"ねんざ", u8"ねんし", u8"ねんちゃく", u8"ねんど", u8"ねんぴ", u8"ねんぶつ", u8"ねんまつ", u8"ねんりょう", u8"ねんれい", u8"のいず", u8"のおづま", u8"のがす", u8"のきなみ", u8"のこぎり", u8"のこす", u8"のこる", u8"のせる", u8"のぞく", u8"のぞむ", u8"のたまう", u8"のちほど", u8"のっく", u8"のはら", u8"のばす", u8"のべる", u8"のぼる", u8"のみもの", u8"のやま", u8"のらいぬ", u8"のらねこ", u8"のりもの", u8"のりゆき", u8"のれん", u8"のんき", u8"はあく", u8"はいけん", u8"はいご", u8"はいしん", u8"はいすい", u8"はいせん", u8"はいそう", u8"はいち", u8"はいれつ", u8"はえる", u8"はおる", u8"はかい", u8"はかる", u8"はくしゅ", u8"はけん", u8"はこぶ", u8"はさみ", u8"はさん", u8"はしご", u8"はしる", u8"はせる", u8"はそん", u8"はたん", u8"はちみつ", u8"はっかく", u8"はっきり", u8"はっくつ", u8"はっけん", u8"はっこう", u8"はっさん", u8"はっしん", u8"はったつ", u8"はっちゅう", u8"はってん", u8"はっぴょう", u8"はっぽう", u8"はつおん", u8"はづき", u8"はなす", u8"はなび", u8"はにかむ", u8"はぶらし", u8"はみがき", u8"はむかう", u8"はめつ", u8"はやい", u8"はやし", u8"はらう", u8"はろうぃん", u8"はわい", u8"はんい", u8"はんえい", u8"はんおん", u8"はんかく", u8"はんきょう", u8"はんこ", u8"はんしゃ", u8"はんすう", u8"はんだん", u8"はんてい", u8"はんとし", u8"はんのう", u8"はんぱ", u8"はんぶん", u8"はんぺん", u8"はんぼうき", u8"はんめい", u8"はんらん", u8"はんろん", u8"ばあい", u8"ばあさん", u8"ばいか", u8"ばいく", u8"ばいばい", u8"ばかり", u8"ばしょ", u8"ばんぐみ", u8"ぱそこん", u8"ぱんち", u8"ぱんつ", u8"ひいき", u8"ひうん", u8"ひえる", u8"ひかく", u8"ひかり", u8"ひかる", u8"ひかん", u8"ひくい", u8"ひけつ", u8"ひこうき", u8"ひこく", u8"ひさい", u8"ひさしぶり", u8"ひさん", u8"ひしょ", u8"ひそか", u8"ひそむ", u8"ひたむき", u8"ひたる", u8"ひだり", u8"ひっこし", u8"ひっし", u8"ひっす", u8"ひつぎ", u8"ひつじゅひん", u8"ひつぜん", u8"ひつよう", u8"ひてい", u8"ひとごみ", u8"ひなまつり", u8"ひなん", u8"ひねる", u8"ひはん", u8"ひひょう", u8"ひびく", u8"ひほう", u8"ひまわり", u8"ひまん", u8"ひみつ", u8"ひめい", u8"ひめじし", u8"ひやけ", u8"ひやす", u8"ひよう", u8"ひらがな", u8"ひらく", u8"ひりつ", u8"ひりょう", u8"ひるま", u8"ひるやすみ", u8"ひれい", u8"ひろい", u8"ひろう", u8"ひろき", u8"ひろゆき", u8"ひんかく", u8"ひんけつ", u8"ひんこん", u8"ひんしゅ", u8"ひんそう", u8"ひんぱん", u8"びじゅつかん", u8"びょうき", u8"びんぼう", u8"ぴったり", u8"ぴっちり", u8"ぴんち", u8"ふあん", u8"ふいうち", u8"ふうけい", u8"ふうせん", u8"ふうとう", u8"ふうふ", u8"ふえる", u8"ふおん", u8"ふかい", u8"ふきん", u8"ふくざつ", u8"ふくぶくろ", u8"ふこう", u8"ふさい", u8"ふしぎ", u8"ふじみ", u8"ふすま", u8"ふせい", u8"ふせぐ", u8"ふそく", u8"ふたん", u8"ふちょう", u8"ふっかつ", u8"ふっき", u8"ふっこく", u8"ふつう", u8"ふつか", u8"ふとる", u8"ふとん", u8"ふのう", u8"ふはい", u8"ふひょう", u8"ふへん", u8"ふまん", u8"ふみん", u8"ふめつ", u8"ふめん", u8"ふよう", u8"ふりこ", u8"ふりる", u8"ふるい", u8"ふんいき", u8"ふんしつ", u8"ふんそう", u8"ぶたにく", u8"ぶどう", u8"ぶんがく", u8"ぶんぐ", u8"ぶんせき", u8"ぶんぽう", u8"ぷうたろう", u8"へいあん", u8"へいおん", u8"へいがい", u8"へいき", u8"へいげん", u8"へいこう", u8"へいさ", u8"へいしゃ", u8"へいせつ", u8"へいそ", u8"へいたく", u8"へいてん", u8"へいねつ", u8"へいわ", u8"へきが", u8"へこむ", u8"へらす", u8"へんかん", u8"へんさい", u8"へんたい", u8"べにいろ", u8"べにしょうが", u8"べんきょう", u8"べんごし", u8"べんり", u8"ほあん", u8"ほいく", u8"ほうこく", u8"ほうそう", u8"ほうほう", u8"ほうもん", u8"ほうりつ", u8"ほえる", u8"ほおん", u8"ほかん", u8"ほきょう", u8"ほくろ", u8"ほけつ", u8"ほけん", u8"ほこう", u8"ほこる", u8"ほしい", u8"ほしつ", u8"ほしゅ", u8"ほしょう", u8"ほせい", u8"ほそい", u8"ほそく", u8"ほたて", u8"ほたる", u8"ほっきょく", u8"ほっさ", u8"ほったん", u8"ほとんど", u8"ほめる", u8"ほんい", u8"ほんき", u8"ほんけ", u8"ほんしつ", u8"ほんやく", u8"ぼうぎょ", u8"ぼきん", u8"ぽちぶくろ", u8"まいにち", u8"まかい", u8"まかせる", u8"まがる", u8"まける", u8"まこと", u8"まさつ", u8"まじめ", u8"ますく", u8"まぜる", u8"まつり", u8"まとめ", u8"まなぶ", u8"まぬけ", u8"まねく", u8"まほう", u8"まもる", u8"まゆげ", u8"まよう", u8"まろやか", u8"まわす", u8"まわり", u8"まわる", u8"まんが", u8"まんきつ", u8"まんぞく", u8"まんなか", u8"みいら", u8"みうち", u8"みえる", u8"みかた", u8"みかん", u8"みがく", u8"みけん", u8"みこん", u8"みじかい", u8"みすい", u8"みすえる", u8"みせる", u8"みっか", u8"みつかる", u8"みつける", u8"みてい", u8"みとめる", u8"みなと", u8"みなみかさい", u8"みねらる", u8"みのう", u8"みのがす", u8"みほん", u8"みもと", u8"みやげ", u8"みらい", u8"みりょく", u8"みわく", u8"みんか", u8"みんぞく", u8"むいか", u8"むえき", u8"むえん", u8"むかい", u8"むかう", u8"むかえ", u8"むかし", u8"むぎちゃ", u8"むける", u8"むげん", u8"むさぼる", u8"むしあつい", u8"むしば", u8"むしろ", u8"むじゅん", u8"むすう", u8"むすこ", u8"むすぶ", u8"むすめ", u8"むせる", u8"むせん", u8"むちゅう", u8"むなしい", u8"むのう", u8"むやみ", u8"むよう", u8"むらさき", u8"むりょう", u8"むろん", u8"めいあん", u8"めいうん", u8"めいえん", u8"めいかく", u8"めいきょく", u8"めいさい", u8"めいし", u8"めいそう", u8"めいぶつ", u8"めいれい", u8"めいわく", u8"めぐまれる", u8"めざす", u8"めした", u8"めずらしい", u8"めだつ", u8"めまい", u8"めやす", u8"めんきょ", u8"めんせき", u8"めんどう", u8"もうしあげる", u8"もうどうけん", u8"もえる", u8"もくし", u8"もくてき", u8"もくようび", u8"もちろん", u8"もどる", u8"もらう", u8"もんく", u8"もんだい", u8"やおや", u8"やける", u8"やさい", u8"やさしい", u8"やすい", u8"やすたろう", u8"やすみ", u8"やせる", u8"やそう", u8"やたい", u8"やちん", u8"やっと", u8"やっぱり", u8"やぶる", u8"やめる", u8"ややこしい", u8"やよい", u8"やわらかい", u8"ゆうき", u8"ゆうびんきょく", u8"ゆうべ", u8"ゆうめい", u8"ゆけつ", u8"ゆしゅつ", u8"ゆせん", u8"ゆそう", u8"ゆたか", u8"ゆちゃく", u8"ゆでる", u8"ゆにゅう", u8"ゆびわ", u8"ゆらい", u8"ゆれる", u8"ようい", u8"ようか", u8"ようきゅう", u8"ようじ", u8"ようす", u8"ようちえん", u8"よかぜ", u8"よかん", u8"よきん", u8"よくせい", u8"よくぼう", u8"よけい", u8"よごれる", u8"よさん", u8"よしゅう", u8"よそう", u8"よそく", u8"よっか", u8"よてい", u8"よどがわく", u8"よねつ", u8"よやく", u8"よゆう", u8"よろこぶ", u8"よろしい", u8"らいう", u8"らくがき", u8"らくご", u8"らくさつ", u8"らくだ", u8"らしんばん", u8"らせん", u8"らぞく", u8"らたい", u8"らっか", u8"られつ", u8"りえき", u8"りかい", u8"りきさく", u8"りきせつ", u8"りくぐん", u8"りくつ", u8"りけん", u8"りこう", u8"りせい", u8"りそう", u8"りそく", u8"りてん", u8"りねん", u8"りゅうがく", u8"りゆう", u8"りょうり", u8"りょかん", u8"りょくちゃ", u8"りょこう", u8"りよう", u8"りりく", u8"りれき", u8"りろん", u8"りんご", u8"るいけい", u8"るいさい", u8"るいじ", u8"るいせき", u8"るすばん", u8"るりがわら", u8"れいかん", u8"れいぎ", u8"れいせい", u8"れいぞうこ", u8"れいとう", u8"れいぼう", u8"れきし", u8"れきだい", u8"れんあい", u8"れんけい", u8"れんこん", u8"れんさい", u8"れんしゅう", u8"れんぞく", u8"れんらく", u8"ろうか", u8"ろうご", u8"ろうじん", u8"ろうそく", u8"ろくが", u8"ろこつ", u8"ろしゅつ", u8"ろじうら", u8"ろせん", u8"ろてん", u8"ろめん", u8"ろれつ", u8"ろんぎ", u8"ろんぱ", u8"ろんぶん", u8"ろんり", u8"わかす", u8"わかめ", u8"わかやま", u8"わかれる", u8"わしつ", u8"わじまし", u8"わすれもの", u8"わらう", u8"われる", } }; polyseed-1.0.0/src/lang_ko.c000066400000000000000000001763741424320763700157330ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_ko = { .name = u8"한국어", .name_en = "Korean", .separator = " ", .is_sorted = true, .has_prefix = false, .has_accents = false, .compose = true, .words = { u8"가격", u8"가끔", u8"가난", u8"가능", u8"가득", u8"가르침", u8"가뭄", u8"가방", u8"가상", u8"가슴", u8"가운데", u8"가을", u8"가이드", u8"가입", u8"가장", u8"가정", u8"가족", u8"가죽", u8"각오", u8"각자", u8"간격", u8"간부", u8"간섭", u8"간장", u8"간접", u8"간판", u8"갈등", u8"갈비", u8"갈색", u8"갈증", u8"감각", u8"감기", u8"감소", u8"감수성", u8"감자", u8"감정", u8"갑자기", u8"강남", u8"강당", u8"강도", u8"강력히", u8"강변", u8"강북", u8"강사", u8"강수량", u8"강아지", u8"강원도", u8"강의", u8"강제", u8"강조", u8"같이", u8"개구리", u8"개나리", u8"개방", u8"개별", u8"개선", u8"개성", u8"개인", u8"객관적", u8"거실", u8"거액", u8"거울", u8"거짓", u8"거품", u8"걱정", u8"건강", u8"건물", u8"건설", u8"건조", u8"건축", u8"걸음", u8"검사", u8"검토", u8"게시판", u8"게임", u8"겨울", u8"견해", u8"결과", u8"결국", u8"결론", u8"결석", u8"결승", u8"결심", u8"결정", u8"결혼", u8"경계", u8"경고", u8"경기", u8"경력", u8"경복궁", u8"경비", u8"경상도", u8"경영", u8"경우", u8"경쟁", u8"경제", u8"경주", u8"경찰", u8"경치", u8"경향", u8"경험", u8"계곡", u8"계단", u8"계란", u8"계산", u8"계속", u8"계약", u8"계절", u8"계층", u8"계획", u8"고객", u8"고구려", u8"고궁", u8"고급", u8"고등학생", u8"고무신", u8"고민", u8"고양이", u8"고장", u8"고전", u8"고집", u8"고춧가루", u8"고통", u8"고향", u8"곡식", u8"골목", u8"골짜기", u8"골프", u8"공간", u8"공개", u8"공격", u8"공군", u8"공급", u8"공기", u8"공동", u8"공무원", u8"공부", u8"공사", u8"공식", u8"공업", u8"공연", u8"공원", u8"공장", u8"공짜", u8"공책", u8"공통", u8"공포", u8"공항", u8"공휴일", u8"과목", u8"과일", u8"과장", u8"과정", u8"과학", u8"관객", u8"관계", u8"관광", u8"관념", u8"관람", u8"관련", u8"관리", u8"관습", u8"관심", u8"관점", u8"관찰", u8"광경", u8"광고", u8"광장", u8"광주", u8"괴로움", u8"굉장히", u8"교과서", u8"교문", u8"교복", u8"교실", u8"교양", u8"교육", u8"교장", u8"교직", u8"교통", u8"교환", u8"교훈", u8"구경", u8"구름", u8"구멍", u8"구별", u8"구분", u8"구석", u8"구성", u8"구속", u8"구역", u8"구입", u8"구청", u8"구체적", u8"국가", u8"국기", u8"국내", u8"국립", u8"국물", u8"국민", u8"국수", u8"국어", u8"국왕", u8"국적", u8"국제", u8"국회", u8"군대", u8"군사", u8"군인", u8"궁극적", u8"권리", u8"권위", u8"권투", u8"귀국", u8"귀신", u8"규정", u8"규칙", u8"균형", u8"그날", u8"그냥", u8"그늘", u8"그러나", u8"그룹", u8"그릇", u8"그림", u8"그제서야", u8"그토록", u8"극복", u8"극히", u8"근거", u8"근교", u8"근래", u8"근로", u8"근무", u8"근본", u8"근원", u8"근육", u8"근처", u8"글씨", u8"글자", u8"금강산", u8"금고", u8"금년", u8"금메달", u8"금액", u8"금연", u8"금요일", u8"금지", u8"긍정적", u8"기간", u8"기관", u8"기념", u8"기능", u8"기독교", u8"기둥", u8"기록", u8"기름", u8"기법", u8"기본", u8"기분", u8"기쁨", u8"기숙사", u8"기술", u8"기억", u8"기업", u8"기온", u8"기운", u8"기원", u8"기적", u8"기준", u8"기침", u8"기혼", u8"기획", u8"긴급", u8"긴장", u8"길이", u8"김밥", u8"김치", u8"김포공항", u8"깍두기", u8"깜빡", u8"깨달음", u8"깨소금", u8"껍질", u8"꼭대기", u8"꽃잎", u8"나들이", u8"나란히", u8"나머지", u8"나물", u8"나침반", u8"나흘", u8"낙엽", u8"난방", u8"날개", u8"날씨", u8"날짜", u8"남녀", u8"남대문", u8"남매", u8"남산", u8"남자", u8"남편", u8"남학생", u8"낭비", u8"낱말", u8"내년", u8"내용", u8"내일", u8"냄비", u8"냄새", u8"냇물", u8"냉동", u8"냉면", u8"냉방", u8"냉장고", u8"넥타이", u8"넷째", u8"노동", u8"노란색", u8"노력", u8"노인", u8"녹음", u8"녹차", u8"녹화", u8"논리", u8"논문", u8"논쟁", u8"놀이", u8"농구", u8"농담", u8"농민", u8"농부", u8"농업", u8"농장", u8"농촌", u8"높이", u8"눈동자", u8"눈물", u8"눈썹", u8"뉴욕", u8"느낌", u8"늑대", u8"능동적", u8"능력", u8"다방", u8"다양성", u8"다음", u8"다이어트", u8"다행", u8"단계", u8"단골", u8"단독", u8"단맛", u8"단순", u8"단어", u8"단위", u8"단점", u8"단체", u8"단추", u8"단편", u8"단풍", u8"달걀", u8"달러", u8"달력", u8"달리", u8"닭고기", u8"담당", u8"담배", u8"담요", u8"담임", u8"답변", u8"답장", u8"당근", u8"당분간", u8"당연히", u8"당장", u8"대규모", u8"대낮", u8"대단히", u8"대답", u8"대도시", u8"대략", u8"대량", u8"대륙", u8"대문", u8"대부분", u8"대신", u8"대응", u8"대장", u8"대전", u8"대접", u8"대중", u8"대책", u8"대출", u8"대충", u8"대통령", u8"대학", u8"대한민국", u8"대합실", u8"대형", u8"덩어리", u8"데이트", u8"도대체", u8"도덕", u8"도둑", u8"도망", u8"도서관", u8"도심", u8"도움", u8"도입", u8"도자기", u8"도저히", u8"도전", u8"도중", u8"도착", u8"독감", u8"독립", u8"독서", u8"독일", u8"독창적", u8"동화책", u8"뒷모습", u8"뒷산", u8"딸아이", u8"마누라", u8"마늘", u8"마당", u8"마라톤", u8"마련", u8"마무리", u8"마사지", u8"마약", u8"마요네즈", u8"마을", u8"마음", u8"마이크", u8"마중", u8"마지막", u8"마찬가지", u8"마찰", u8"마흔", u8"막걸리", u8"막내", u8"막상", u8"만남", u8"만두", u8"만세", u8"만약", u8"만일", u8"만점", u8"만족", u8"만화", u8"많이", u8"말기", u8"말씀", u8"말투", u8"맘대로", u8"망원경", u8"매년", u8"매달", u8"매력", u8"매번", u8"매스컴", u8"매일", u8"매장", u8"맥주", u8"먹이", u8"먼저", u8"먼지", u8"멀리", u8"메일", u8"며느리", u8"며칠", u8"면담", u8"멸치", u8"명단", u8"명령", u8"명예", u8"명의", u8"명절", u8"명칭", u8"명함", u8"모금", u8"모니터", u8"모델", u8"모든", u8"모범", u8"모습", u8"모양", u8"모임", u8"모조리", u8"모집", u8"모퉁이", u8"목걸이", u8"목록", u8"목사", u8"목소리", u8"목숨", u8"목적", u8"목표", u8"몰래", u8"몸매", u8"몸무게", u8"몸살", u8"몸속", u8"몸짓", u8"몸통", u8"몹시", u8"무관심", u8"무궁화", u8"무더위", u8"무덤", u8"무릎", u8"무슨", u8"무엇", u8"무역", u8"무용", u8"무조건", u8"무지개", u8"무척", u8"문구", u8"문득", u8"문법", u8"문서", u8"문제", u8"문학", u8"문화", u8"물가", u8"물건", u8"물결", u8"물고기", u8"물론", u8"물리학", u8"물음", u8"물질", u8"물체", u8"미국", u8"미디어", u8"미사일", u8"미술", u8"미역", u8"미용실", u8"미움", u8"미인", u8"미팅", u8"미혼", u8"민간", u8"민족", u8"민주", u8"믿음", u8"밀가루", u8"밀리미터", u8"밑바닥", u8"바가지", u8"바구니", u8"바나나", u8"바늘", u8"바닥", u8"바닷가", u8"바람", u8"바이러스", u8"바탕", u8"박물관", u8"박사", u8"박수", u8"반대", u8"반드시", u8"반말", u8"반발", u8"반성", u8"반응", u8"반장", u8"반죽", u8"반지", u8"반찬", u8"받침", u8"발가락", u8"발걸음", u8"발견", u8"발달", u8"발레", u8"발목", u8"발바닥", u8"발생", u8"발음", u8"발자국", u8"발전", u8"발톱", u8"발표", u8"밤하늘", u8"밥그릇", u8"밥맛", u8"밥상", u8"밥솥", u8"방금", u8"방면", u8"방문", u8"방바닥", u8"방법", u8"방송", u8"방식", u8"방안", u8"방울", u8"방지", u8"방학", u8"방해", u8"방향", u8"배경", u8"배꼽", u8"배달", u8"배드민턴", u8"백두산", u8"백색", u8"백성", u8"백인", u8"백제", u8"백화점", u8"버릇", u8"버섯", u8"버튼", u8"번개", u8"번역", u8"번지", u8"번호", u8"벌금", u8"벌레", u8"벌써", u8"범위", u8"범인", u8"범죄", u8"법률", u8"법원", u8"법적", u8"법칙", u8"베이징", u8"벨트", u8"변경", u8"변동", u8"변명", u8"변신", u8"변호사", u8"변화", u8"별도", u8"별명", u8"별일", u8"병실", u8"병아리", u8"병원", u8"보관", u8"보너스", u8"보라색", u8"보람", u8"보름", u8"보상", u8"보안", u8"보자기", u8"보장", u8"보전", u8"보존", u8"보통", u8"보편적", u8"보험", u8"복도", u8"복사", u8"복숭아", u8"복습", u8"볶음", u8"본격적", u8"본래", u8"본부", u8"본사", u8"본성", u8"본인", u8"본질", u8"볼펜", u8"봉사", u8"봉지", u8"봉투", u8"부근", u8"부끄러움", u8"부담", u8"부동산", u8"부문", u8"부분", u8"부산", u8"부상", u8"부엌", u8"부인", u8"부작용", u8"부장", u8"부정", u8"부족", u8"부지런히", u8"부친", u8"부탁", u8"부품", u8"부회장", u8"북부", u8"북한", u8"분노", u8"분량", u8"분리", u8"분명", u8"분석", u8"분야", u8"분위기", u8"분필", u8"분홍색", u8"불고기", u8"불과", u8"불교", u8"불꽃", u8"불만", u8"불법", u8"불빛", u8"불안", u8"불이익", u8"불행", u8"브랜드", u8"비극", u8"비난", u8"비닐", u8"비둘기", u8"비디오", u8"비로소", u8"비만", u8"비명", u8"비밀", u8"비바람", u8"비빔밥", u8"비상", u8"비용", u8"비율", u8"비중", u8"비타민", u8"비판", u8"빌딩", u8"빗물", u8"빗방울", u8"빗줄기", u8"빛깔", u8"빨간색", u8"빨래", u8"빨리", u8"사건", u8"사계절", u8"사나이", u8"사냥", u8"사람", u8"사랑", u8"사립", u8"사모님", u8"사물", u8"사방", u8"사상", u8"사생활", u8"사설", u8"사슴", u8"사실", u8"사업", u8"사용", u8"사월", u8"사장", u8"사전", u8"사진", u8"사촌", u8"사춘기", u8"사탕", u8"사투리", u8"사흘", u8"산길", u8"산부인과", u8"산업", u8"산책", u8"살림", u8"살인", u8"살짝", u8"삼계탕", u8"삼국", u8"삼십", u8"삼월", u8"삼촌", u8"상관", u8"상금", u8"상대", u8"상류", u8"상반기", u8"상상", u8"상식", u8"상업", u8"상인", u8"상자", u8"상점", u8"상처", u8"상추", u8"상태", u8"상표", u8"상품", u8"상황", u8"새벽", u8"색깔", u8"색연필", u8"생각", u8"생명", u8"생물", u8"생방송", u8"생산", u8"생선", u8"생신", u8"생일", u8"생활", u8"서랍", u8"서른", u8"서명", u8"서민", u8"서비스", u8"서양", u8"서울", u8"서적", u8"서점", u8"서쪽", u8"서클", u8"석사", u8"석유", u8"선거", u8"선물", u8"선배", u8"선생", u8"선수", u8"선원", u8"선장", u8"선전", u8"선택", u8"선풍기", u8"설거지", u8"설날", u8"설렁탕", u8"설명", u8"설문", u8"설사", u8"설악산", u8"설치", u8"설탕", u8"섭씨", u8"성공", u8"성당", u8"성명", u8"성별", u8"성인", u8"성장", u8"성적", u8"성질", u8"성함", u8"세금", u8"세미나", u8"세상", u8"세월", u8"세종대왕", u8"세탁", u8"센터", u8"센티미터", u8"셋째", u8"소규모", u8"소극적", u8"소금", u8"소나기", u8"소년", u8"소득", u8"소망", u8"소문", u8"소설", u8"소속", u8"소아과", u8"소용", u8"소원", u8"소음", u8"소중히", u8"소지품", u8"소질", u8"소풍", u8"소형", u8"속담", u8"속도", u8"속옷", u8"손가락", u8"손길", u8"손녀", u8"손님", u8"손등", u8"손목", u8"손뼉", u8"손실", u8"손질", u8"손톱", u8"손해", u8"솔직히", u8"솜씨", u8"송아지", u8"송이", u8"송편", u8"쇠고기", u8"쇼핑", u8"수건", u8"수년", u8"수단", u8"수돗물", u8"수동적", u8"수면", u8"수명", u8"수박", u8"수상", u8"수석", u8"수술", u8"수시로", u8"수업", u8"수염", u8"수영", u8"수입", u8"수준", u8"수집", u8"수출", u8"수컷", u8"수필", u8"수학", u8"수험생", u8"수화기", u8"숙녀", u8"숙소", u8"숙제", u8"순간", u8"순서", u8"순수", u8"순식간", u8"순위", u8"숟가락", u8"술병", u8"술집", u8"숫자", u8"스님", u8"스물", u8"스스로", u8"스승", u8"스웨터", u8"스위치", u8"스케이트", u8"스튜디오", u8"스트레스", u8"스포츠", u8"슬쩍", u8"슬픔", u8"습관", u8"습기", u8"승객", u8"승리", u8"승부", u8"승용차", u8"승진", u8"시각", u8"시간", u8"시골", u8"시금치", u8"시나리오", u8"시댁", u8"시리즈", u8"시멘트", u8"시민", u8"시부모", u8"시선", u8"시설", u8"시스템", u8"시아버지", u8"시어머니", u8"시월", u8"시인", u8"시일", u8"시작", u8"시장", u8"시절", u8"시점", u8"시중", u8"시즌", u8"시집", u8"시청", u8"시합", u8"시험", u8"식구", u8"식기", u8"식당", u8"식량", u8"식료품", u8"식물", u8"식빵", u8"식사", u8"식생활", u8"식초", u8"식탁", u8"식품", u8"신고", u8"신규", u8"신념", u8"신문", u8"신발", u8"신비", u8"신사", u8"신세", u8"신용", u8"신제품", u8"신청", u8"신체", u8"신화", u8"실감", u8"실내", u8"실력", u8"실례", u8"실망", u8"실수", u8"실습", u8"실시", u8"실장", u8"실정", u8"실질적", u8"실천", u8"실체", u8"실컷", u8"실태", u8"실패", u8"실험", u8"실현", u8"심리", u8"심부름", u8"심사", u8"심장", u8"심정", u8"심판", u8"쌍둥이", u8"씨름", u8"씨앗", u8"아가씨", u8"아나운서", u8"아드님", u8"아들", u8"아쉬움", u8"아스팔트", u8"아시아", u8"아울러", u8"아저씨", u8"아줌마", u8"아직", u8"아침", u8"아파트", u8"아프리카", u8"아픔", u8"아홉", u8"아흔", u8"악기", u8"악몽", u8"악수", u8"안개", u8"안경", u8"안과", u8"안내", u8"안녕", u8"안동", u8"안방", u8"안부", u8"안주", u8"알루미늄", u8"알코올", u8"암시", u8"암컷", u8"압력", u8"앞날", u8"앞문", u8"애인", u8"애정", u8"액수", u8"앨범", u8"야간", u8"야단", u8"야옹", u8"약간", u8"약국", u8"약속", u8"약수", u8"약점", u8"약품", u8"약혼녀", u8"양념", u8"양력", u8"양말", u8"양배추", u8"양주", u8"양파", u8"어둠", u8"어려움", u8"어른", u8"어젯밤", u8"어쨌든", u8"어쩌다가", u8"어쩐지", u8"언니", u8"언덕", u8"언론", u8"언어", u8"얼굴", u8"얼른", u8"얼음", u8"얼핏", u8"엄마", u8"업무", u8"업종", u8"업체", u8"엉덩이", u8"엉망", u8"엉터리", u8"엊그제", u8"에너지", u8"에어컨", u8"엔진", u8"여건", u8"여고생", u8"여관", u8"여군", u8"여권", u8"여대생", u8"여덟", u8"여동생", u8"여든", u8"여론", u8"여름", u8"여섯", u8"여성", u8"여왕", u8"여인", u8"여전히", u8"여직원", u8"여학생", u8"여행", u8"역사", u8"역시", u8"역할", u8"연결", u8"연구", u8"연극", u8"연기", u8"연락", u8"연설", u8"연세", u8"연속", u8"연습", u8"연애", u8"연예인", u8"연인", u8"연장", u8"연주", u8"연출", u8"연필", u8"연합", u8"연휴", u8"열기", u8"열매", u8"열쇠", u8"열심히", u8"열정", u8"열차", u8"열흘", u8"염려", u8"엽서", u8"영국", u8"영남", u8"영상", u8"영양", u8"영역", u8"영웅", u8"영원히", u8"영하", u8"영향", u8"영혼", u8"영화", u8"옆구리", u8"옆방", u8"옆집", u8"예감", u8"예금", u8"예방", u8"예산", u8"예상", u8"예선", u8"예술", u8"예습", u8"예식장", u8"예약", u8"예전", u8"예절", u8"예정", u8"예컨대", u8"옛날", u8"오늘", u8"오락", u8"오랫동안", u8"오렌지", u8"오로지", u8"오른발", u8"오븐", u8"오십", u8"오염", u8"오월", u8"오전", u8"오직", u8"오징어", u8"오페라", u8"오피스텔", u8"오히려", u8"옥상", u8"옥수수", u8"온갖", u8"온라인", u8"온몸", u8"온종일", u8"온통", u8"올가을", u8"올림픽", u8"올해", u8"옷차림", u8"와이셔츠", u8"와인", u8"완성", u8"완전", u8"왕비", u8"왕자", u8"왜냐하면", u8"왠지", u8"외갓집", u8"외국", u8"외로움", u8"외삼촌", u8"외출", u8"외침", u8"외할머니", u8"왼발", u8"왼손", u8"왼쪽", u8"요금", u8"요일", u8"요즘", u8"요청", u8"용기", u8"용서", u8"용어", u8"우산", u8"우선", u8"우승", u8"우연히", u8"우정", u8"우체국", u8"우편", u8"운동", u8"운명", u8"운반", u8"운전", u8"운행", u8"울산", u8"울음", u8"움직임", u8"웃어른", u8"웃음", u8"워낙", u8"원고", u8"원래", u8"원서", u8"원숭이", u8"원인", u8"원장", u8"원피스", u8"월급", u8"월드컵", u8"월세", u8"월요일", u8"웨이터", u8"위반", u8"위법", u8"위성", u8"위원", u8"위험", u8"위협", u8"윗사람", u8"유난히", u8"유럽", u8"유명", u8"유물", u8"유산", u8"유적", u8"유치원", u8"유학", u8"유행", u8"유형", u8"육군", u8"육상", u8"육십", u8"육체", u8"은행", u8"음력", u8"음료", u8"음반", u8"음성", u8"음식", u8"음악", u8"음주", u8"의견", u8"의논", u8"의문", u8"의복", u8"의식", u8"의심", u8"의외로", u8"의욕", u8"의원", u8"의학", u8"이것", u8"이곳", u8"이념", u8"이놈", u8"이달", u8"이대로", u8"이동", u8"이렇게", u8"이력서", u8"이론적", u8"이름", u8"이민", u8"이발소", u8"이별", u8"이불", u8"이빨", u8"이상", u8"이성", u8"이슬", u8"이야기", u8"이용", u8"이웃", u8"이월", u8"이윽고", u8"이익", u8"이전", u8"이중", u8"이튿날", u8"이틀", u8"이혼", u8"인간", u8"인격", u8"인공", u8"인구", u8"인근", u8"인기", u8"인도", u8"인류", u8"인물", u8"인생", u8"인쇄", u8"인연", u8"인원", u8"인재", u8"인종", u8"인천", u8"인체", u8"인터넷", u8"인하", u8"인형", u8"일곱", u8"일기", u8"일단", u8"일대", u8"일등", u8"일반", u8"일본", u8"일부", u8"일상", u8"일생", u8"일손", u8"일요일", u8"일월", u8"일정", u8"일종", u8"일주일", u8"일찍", u8"일체", u8"일치", u8"일행", u8"일회용", u8"임금", u8"임무", u8"입대", u8"입력", u8"입맛", u8"입사", u8"입술", u8"입시", u8"입원", u8"입장", u8"입학", u8"자가용", u8"자격", u8"자극", u8"자동", u8"자랑", u8"자부심", u8"자식", u8"자신", u8"자연", u8"자원", u8"자율", u8"자전거", u8"자정", u8"자존심", u8"자판", u8"작가", u8"작년", u8"작성", u8"작업", u8"작용", u8"작은딸", u8"작품", u8"잔디", u8"잔뜩", u8"잔치", u8"잘못", u8"잠깐", u8"잠수함", u8"잠시", u8"잠옷", u8"잠자리", u8"잡지", u8"장관", u8"장군", u8"장기간", u8"장래", u8"장례", u8"장르", u8"장마", u8"장면", u8"장모", u8"장미", u8"장비", u8"장사", u8"장소", u8"장식", u8"장애인", u8"장인", u8"장점", u8"장차", u8"장학금", u8"재능", u8"재빨리", u8"재산", u8"재생", u8"재작년", u8"재정", u8"재채기", u8"재판", u8"재학", u8"재활용", u8"저것", u8"저고리", u8"저곳", u8"저녁", u8"저런", u8"저렇게", u8"저번", u8"저울", u8"저절로", u8"저축", u8"적극", u8"적당히", u8"적성", u8"적용", u8"적응", u8"전개", u8"전공", u8"전기", u8"전달", u8"전라도", u8"전망", u8"전문", u8"전반", u8"전부", u8"전세", u8"전시", u8"전용", u8"전자", u8"전쟁", u8"전주", u8"전철", u8"전체", u8"전통", u8"전혀", u8"전후", u8"절대", u8"절망", u8"절반", u8"절약", u8"절차", u8"점검", u8"점수", u8"점심", u8"점원", u8"점점", u8"점차", u8"접근", u8"접시", u8"접촉", u8"젓가락", u8"정거장", u8"정도", u8"정류장", u8"정리", u8"정말", u8"정면", u8"정문", u8"정반대", u8"정보", u8"정부", u8"정비", u8"정상", u8"정성", u8"정오", u8"정원", u8"정장", u8"정지", u8"정치", u8"정확히", u8"제공", u8"제과점", u8"제대로", u8"제목", u8"제발", u8"제법", u8"제삿날", u8"제안", u8"제일", u8"제작", u8"제주도", u8"제출", u8"제품", u8"제한", u8"조각", u8"조건", u8"조금", u8"조깅", u8"조명", u8"조미료", u8"조상", u8"조선", u8"조용히", u8"조절", u8"조정", u8"조직", u8"존댓말", u8"존재", u8"졸업", u8"졸음", u8"종교", u8"종로", u8"종류", u8"종소리", u8"종업원", u8"종종", u8"종합", u8"좌석", u8"죄인", u8"주관적", u8"주름", u8"주말", u8"주머니", u8"주먹", u8"주문", u8"주민", u8"주방", u8"주변", u8"주식", u8"주인", u8"주일", u8"주장", u8"주전자", u8"주택", u8"준비", u8"줄거리", u8"줄기", u8"줄무늬", u8"중간", u8"중계방송", u8"중국", u8"중년", u8"중단", u8"중독", u8"중반", u8"중부", u8"중세", u8"중소기업", u8"중순", u8"중앙", u8"중요", u8"중학교", u8"즉석", u8"즉시", u8"즐거움", u8"증가", u8"증거", u8"증권", u8"증상", u8"증세", u8"지각", u8"지갑", u8"지경", u8"지극히", u8"지금", u8"지급", u8"지능", u8"지름길", u8"지리산", u8"지방", u8"지붕", u8"지식", u8"지역", u8"지우개", u8"지원", u8"지적", u8"지점", u8"지진", u8"지출", u8"직선", u8"직업", u8"직원", u8"직장", u8"진급", u8"진동", u8"진로", u8"진료", u8"진리", u8"진짜", u8"진찰", u8"진출", u8"진통", u8"진행", u8"질문", u8"질병", u8"질서", u8"짐작", u8"집단", u8"집안", u8"집중", u8"짜증", u8"찌꺼기", u8"차남", u8"차라리", u8"차량", u8"차림", u8"차별", u8"차선", u8"차츰", u8"착각", u8"찬물", u8"찬성", u8"참가", u8"참기름", u8"참새", u8"참석", u8"참여", u8"참외", u8"참조", u8"찻잔", u8"창가", u8"창고", u8"창구", u8"창문", u8"창밖", u8"창작", u8"창조", u8"채널", u8"채점", u8"책가방", u8"책방", u8"책상", u8"책임", u8"챔피언", u8"처벌", u8"처음", u8"천국", u8"천둥", u8"천장", u8"천재", u8"천천히", u8"철도", u8"철저히", u8"철학", u8"첫날", u8"첫째", u8"청년", u8"청바지", u8"청소", u8"청춘", u8"체계", u8"체력", u8"체온", u8"체육", u8"체중", u8"체험", u8"초등학생", u8"초반", u8"초밥", u8"초상화", u8"초순", u8"초여름", u8"초원", u8"초저녁", u8"초점", u8"초청", u8"초콜릿", u8"촛불", u8"총각", u8"총리", u8"총장", u8"촬영", u8"최근", u8"최상", u8"최선", u8"최신", u8"최악", u8"최종", u8"추석", u8"추억", u8"추진", u8"추천", u8"추측", u8"축구", u8"축소", u8"축제", u8"축하", u8"출근", u8"출발", u8"출산", u8"출신", u8"출연", u8"출입", u8"출장", u8"출판", u8"충격", u8"충고", u8"충돌", u8"충분히", u8"충청도", u8"취업", u8"취직", u8"취향", u8"치약", u8"친구", u8"친척", u8"칠십", u8"칠월", u8"칠판", u8"침대", u8"침묵", u8"침실", u8"칫솔", u8"칭찬", u8"카메라", u8"카운터", u8"칼국수", u8"캐릭터", u8"캠퍼스", u8"캠페인", u8"커튼", u8"컨디션", u8"컬러", u8"컴퓨터", u8"코끼리", u8"코미디", u8"콘서트", u8"콜라", u8"콤플렉스", u8"콩나물", u8"쾌감", u8"쿠데타", u8"크림", u8"큰길", u8"큰딸", u8"큰소리", u8"큰아들", u8"큰어머니", u8"큰일", u8"큰절", u8"클래식", u8"클럽", u8"킬로", u8"타입", u8"타자기", u8"탁구", u8"탁자", u8"탄생", u8"태권도", u8"태양", u8"태풍", u8"택시", u8"탤런트", u8"터널", u8"터미널", u8"테니스", u8"테스트", u8"테이블", u8"텔레비전", u8"토론", u8"토마토", u8"토요일", u8"통계", u8"통과", u8"통로", u8"통신", u8"통역", u8"통일", u8"통장", u8"통제", u8"통증", u8"통합", u8"통화", u8"퇴근", u8"퇴원", u8"퇴직금", u8"튀김", u8"트럭", u8"특급", u8"특별", u8"특성", u8"특수", u8"특징", u8"특히", u8"튼튼히", u8"티셔츠", u8"파란색", u8"파일", u8"파출소", u8"판결", u8"판단", u8"판매", u8"판사", u8"팔십", u8"팔월", u8"팝송", u8"패션", u8"팩스", u8"팩시밀리", u8"팬티", u8"퍼센트", u8"페인트", u8"편견", u8"편의", u8"편지", u8"편히", u8"평가", u8"평균", u8"평생", u8"평소", u8"평양", u8"평일", u8"평화", u8"포스터", u8"포인트", u8"포장", u8"포함", u8"표면", u8"표정", u8"표준", u8"표현", u8"품목", u8"품질", u8"풍경", u8"풍속", u8"풍습", u8"프랑스", u8"프린터", u8"플라스틱", u8"피곤", u8"피망", u8"피아노", u8"필름", u8"필수", u8"필요", u8"필자", u8"필통", u8"핑계", u8"하느님", u8"하늘", u8"하드웨어", u8"하룻밤", u8"하반기", u8"하숙집", u8"하순", u8"하여튼", u8"하지만", u8"하천", u8"하품", u8"하필", u8"학과", u8"학교", u8"학급", u8"학기", u8"학년", u8"학력", u8"학번", u8"학부모", u8"학비", u8"학생", u8"학술", u8"학습", u8"학용품", u8"학원", u8"학위", u8"학자", u8"학점", u8"한계", u8"한글", u8"한꺼번에", u8"한낮", u8"한눈", u8"한동안", u8"한때", u8"한라산", u8"한마디", u8"한문", u8"한번", u8"한복", u8"한식", u8"한여름", u8"한쪽", u8"할머니", u8"할아버지", u8"할인", u8"함께", u8"함부로", u8"합격", u8"합리적", u8"항공", u8"항구", u8"항상", u8"항의", u8"해결", u8"해군", u8"해답", u8"해당", u8"해물", u8"해석", u8"해설", u8"해수욕장", u8"해안", u8"핵심", u8"핸드백", u8"햄버거", u8"햇볕", u8"햇살", u8"행동", u8"행복", u8"행사", u8"행운", u8"행위", u8"향기", u8"향상", u8"향수", u8"허락", u8"허용", u8"헬기", u8"현관", u8"현금", u8"현대", u8"현상", u8"현실", u8"현장", u8"현재", u8"현지", u8"혈액", u8"협력", u8"형부", u8"형사", u8"형수", u8"형식", u8"형제", u8"형태", u8"형편", u8"혜택", u8"호기심", u8"호남", u8"호랑이", u8"호박", u8"호텔", u8"호흡", u8"혹시", u8"홀로", u8"홈페이지", u8"홍보", u8"홍수", u8"홍차", u8"화면", u8"화분", u8"화살", u8"화요일", u8"화장", u8"화학", u8"확보", u8"확인", u8"확장", u8"확정", u8"환갑", u8"환경", u8"환영", u8"환율", u8"환자", u8"활기", u8"활동", u8"활발히", u8"활용", u8"활짝", u8"회견", u8"회관", u8"회복", u8"회색", u8"회원", u8"회장", u8"회전", u8"횟수", u8"횡단보도", u8"효율적", u8"후반", u8"후춧가루", u8"훈련", u8"훨씬", u8"휴식", u8"휴일", u8"흉내", u8"흐름", u8"흑백", u8"흑인", u8"흔적", u8"흔히", u8"흥미", u8"흥분", u8"희곡", u8"희망", u8"희생", u8"흰색", u8"힘껏", } }; polyseed-1.0.0/src/lang_pt.c000066400000000000000000001131551424320763700157310ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_pt = { .name = u8"português", .name_en = "Portuguese", .separator = " ", .is_sorted = true, .has_prefix = true, .has_accents = false, .compose = false, .words = { "abacate", "abaixo", "abalar", "abater", "abduzir", "abelha", "aberto", "abismo", "abotoar", "abranger", "abreviar", "abrigar", "abrupto", "absinto", "absoluto", "absurdo", "abutre", "acabado", "acalmar", "acampar", "acanhar", "acaso", "aceitar", "acelerar", "acenar", "acervo", "acessar", "acetona", "achatar", "acidez", "acima", "acionado", "acirrar", "aclamar", "aclive", "acolhida", "acomodar", "acoplar", "acordar", "acumular", "acusador", "adaptar", "adega", "adentro", "adepto", "adequar", "aderente", "adesivo", "adeus", "adiante", "aditivo", "adjetivo", "adjunto", "admirar", "adorar", "adquirir", "adubo", "adverso", "advogado", "aeronave", "afastar", "aferir", "afetivo", "afinador", "afivelar", "aflito", "afluente", "afrontar", "agachar", "agarrar", "agasalho", "agenciar", "agilizar", "agiota", "agitado", "agora", "agradar", "agreste", "agrupar", "aguardar", "agulha", "ajoelhar", "ajudar", "ajustar", "alameda", "alarme", "alastrar", "alavanca", "albergue", "albino", "alcatra", "aldeia", "alecrim", "alegria", "alertar", "alface", "alfinete", "algum", "alheio", "aliar", "alicate", "alienar", "alinhar", "aliviar", "almofada", "alocar", "alpiste", "alterar", "altitude", "alucinar", "alugar", "aluno", "alusivo", "alvo", "amaciar", "amador", "amarelo", "amassar", "ambas", "ambiente", "ameixa", "amenizar", "amido", "amistoso", "amizade", "amolador", "amontoar", "amoroso", "amostra", "amparar", "ampliar", "ampola", "anagrama", "analisar", "anarquia", "anatomia", "andaime", "anel", "anexo", "angular", "animar", "anjo", "anomalia", "anotado", "ansioso", "anterior", "anuidade", "anunciar", "anzol", "apagador", "apalpar", "apanhado", "apego", "apelido", "apertada", "apesar", "apetite", "apito", "aplauso", "aplicada", "apoio", "apontar", "aposta", "aprendiz", "aprovar", "aquecer", "arame", "aranha", "arara", "arcada", "ardente", "areia", "arejar", "arenito", "aresta", "argiloso", "argola", "arma", "arquivo", "arraial", "arrebate", "arriscar", "arroba", "arrumar", "arsenal", "arterial", "artigo", "arvoredo", "asfaltar", "asilado", "aspirar", "assador", "assinar", "assoalho", "assunto", "astral", "atacado", "atadura", "atalho", "atarefar", "atear", "atender", "aterro", "ateu", "atingir", "atirador", "ativo", "atoleiro", "atracar", "atrevido", "atriz", "atual", "atum", "auditor", "aumentar", "aura", "aurora", "autismo", "autoria", "autuar", "avaliar", "avante", "avaria", "avental", "avesso", "aviador", "avisar", "avulso", "axila", "azarar", "azedo", "azeite", "azulejo", "babar", "babosa", "bacalhau", "bacharel", "bacia", "bagagem", "baiano", "bailar", "baioneta", "bairro", "baixista", "bajular", "baleia", "baliza", "balsa", "banal", "bandeira", "banho", "banir", "banquete", "barato", "barbado", "baronesa", "barraca", "barulho", "baseado", "bastante", "batata", "batedor", "batida", "batom", "batucar", "baunilha", "beber", "beijo", "beirada", "beisebol", "beldade", "beleza", "belga", "beliscar", "bendito", "bengala", "benzer", "berimbau", "berlinda", "berro", "besouro", "bexiga", "bezerro", "bico", "bicudo", "bienal", "bifocal", "bifurcar", "bigorna", "bilhete", "bimestre", "bimotor", "biologia", "biombo", "biosfera", "bipolar", "birrento", "biscoito", "bisneto", "bispo", "bissexto", "bitola", "bizarro", "blindado", "bloco", "bloquear", "boato", "bobagem", "bocado", "bocejo", "bochecha", "boicotar", "bolada", "boletim", "bolha", "bolo", "bombeiro", "bonde", "boneco", "bonita", "borbulha", "borda", "boreal", "borracha", "bovino", "boxeador", "branco", "brasa", "braveza", "breu", "briga", "brilho", "brincar", "broa", "brochura", "bronzear", "broto", "bruxo", "bucha", "budismo", "bufar", "bule", "buraco", "busca", "busto", "buzina", "cabana", "cabelo", "cabide", "cabo", "cabrito", "cacau", "cacetada", "cachorro", "cacique", "cadastro", "cadeado", "cafezal", "caiaque", "caipira", "caixote", "cajado", "caju", "calafrio", "calcular", "caldeira", "calibrar", "calmante", "calota", "camada", "cambista", "camisa", "camomila", "campanha", "camuflar", "canavial", "cancelar", "caneta", "canguru", "canhoto", "canivete", "canoa", "cansado", "cantar", "canudo", "capacho", "capela", "capinar", "capotar", "capricho", "captador", "capuz", "caracol", "carbono", "cardeal", "careca", "carimbar", "carneiro", "carpete", "carreira", "cartaz", "carvalho", "casaco", "casca", "casebre", "castelo", "casulo", "catarata", "cativar", "caule", "causador", "cautelar", "cavalo", "caverna", "cebola", "cedilha", "cegonha", "celebrar", "celular", "cenoura", "censo", "centeio", "cercar", "cerrado", "certeiro", "cerveja", "cetim", "cevada", "chacota", "chaleira", "chamado", "chapada", "charme", "chatice", "chave", "chefe", "chegada", "cheiro", "cheque", "chicote", "chifre", "chinelo", "chocalho", "chover", "chumbo", "chutar", "chuva", "cicatriz", "ciclone", "cidade", "cidreira", "ciente", "cigana", "cimento", "cinto", "cinza", "ciranda", "circuito", "cirurgia", "citar", "clareza", "clero", "clicar", "clone", "clube", "coado", "coagir", "cobaia", "cobertor", "cobrar", "cocada", "coelho", "coentro", "coeso", "cogumelo", "coibir", "coifa", "coiote", "colar", "coleira", "colher", "colidir", "colmeia", "colono", "coluna", "comando", "combinar", "comentar", "comitiva", "comover", "complexo", "comum", "concha", "condor", "conectar", "confuso", "congelar", "conhecer", "conjugar", "consumir", "contrato", "convite", "cooperar", "copeiro", "copiador", "copo", "coquetel", "coragem", "cordial", "corneta", "coronha", "corporal", "correio", "cortejo", "coruja", "corvo", "cosseno", "costela", "cotonete", "couro", "couve", "covil", "cozinha", "cratera", "cravo", "creche", "credor", "creme", "crer", "crespo", "criada", "criminal", "crioulo", "crise", "criticar", "crosta", "crua", "cruzeiro", "cubano", "cueca", "cuidado", "cujo", "culatra", "culminar", "culpar", "cultura", "cumprir", "cunhado", "cupido", "curativo", "curral", "cursar", "curto", "cuspir", "custear", "cutelo", "damasco", "datar", "debater", "debitar", "deboche", "debulhar", "decalque", "decimal", "declive", "decote", "decretar", "dedal", "dedicado", "deduzir", "defesa", "defumar", "degelo", "degrau", "degustar", "deitado", "deixar", "delator", "delegado", "delinear", "delonga", "demanda", "demitir", "demolido", "dentista", "depenado", "depilar", "depois", "depressa", "depurar", "deriva", "derramar", "desafio", "desbotar", "descanso", "desenho", "desfiado", "desgaste", "desigual", "deslize", "desmamar", "desova", "despesa", "destaque", "desviar", "detalhar", "detentor", "detonar", "detrito", "deusa", "dever", "devido", "devotado", "dezena", "diagrama", "dialeto", "didata", "difuso", "digitar", "dilatado", "diluente", "diminuir", "dinastia", "dinheiro", "diocese", "direto", "discreta", "disfarce", "disparo", "disquete", "dissipar", "distante", "ditador", "diurno", "diverso", "divisor", "divulgar", "dizer", "dobrador", "dolorido", "domador", "dominado", "donativo", "donzela", "dormente", "dorsal", "dosagem", "dourado", "doutor", "drenagem", "drible", "drogaria", "duelar", "duende", "dueto", "duplo", "duquesa", "durante", "duvidoso", "eclodir", "ecoar", "ecologia", "edificar", "edital", "educado", "efeito", "efetivar", "ejetar", "elaborar", "eleger", "eleitor", "elenco", "elevador", "eliminar", "elogiar", "embargo", "embolado", "embrulho", "embutido", "emenda", "emergir", "emissor", "empatia", "empenho", "empinado", "empolgar", "emprego", "empurrar", "emulador", "encaixe", "encenado", "enchente", "encontro", "endeusar", "endossar", "enfaixar", "enfeite", "enfim", "engajado", "engenho", "englobar", "engomado", "engraxar", "enguia", "enjoar", "enlatar", "enquanto", "enraizar", "enrolado", "enrugar", "ensaio", "enseada", "ensino", "ensopado", "entanto", "enteado", "entidade", "entortar", "entrada", "entulho", "envergar", "enviado", "envolver", "enxame", "enxerto", "enxofre", "enxuto", "epiderme", "equipar", "ereto", "erguido", "errata", "erva", "ervilha", "esbanjar", "esbelto", "escama", "escola", "escrita", "escuta", "esfinge", "esfolar", "esfregar", "esfumado", "esgrima", "esmalte", "espanto", "espelho", "espiga", "esponja", "espreita", "espumar", "esquerda", "estaca", "esteira", "esticar", "estofado", "estrela", "estudo", "esvaziar", "etanol", "etiqueta", "euforia", "europeu", "evacuar", "evaporar", "evasivo", "eventual", "evidente", "evoluir", "exagero", "exalar", "examinar", "exato", "exausto", "excesso", "excitar", "exclamar", "executar", "exemplo", "exibir", "exigente", "exonerar", "expandir", "expelir", "expirar", "explanar", "exposto", "expresso", "expulsar", "externo", "extinto", "extrato", "fabricar", "fabuloso", "faceta", "facial", "fada", "fadiga", "faixa", "falar", "falta", "familiar", "fandango", "fanfarra", "fantoche", "fardado", "farelo", "farinha", "farofa", "farpa", "fartura", "fatia", "fator", "favorita", "faxina", "fazenda", "fechado", "feijoada", "feirante", "felino", "feminino", "fenda", "feno", "fera", "feriado", "ferrugem", "ferver", "festejar", "fetal", "feudal", "fiapo", "fibrose", "ficar", "ficheiro", "figurado", "fileira", "filho", "filme", "filtrar", "firmeza", "fisgada", "fissura", "fita", "fivela", "fixador", "fixo", "flacidez", "flamingo", "flanela", "flechada", "flora", "flutuar", "fluxo", "focal", "focinho", "fofocar", "fogo", "foguete", "foice", "folgado", "folheto", "forjar", "formiga", "forno", "forte", "fosco", "fossa", "fragata", "fralda", "frango", "frasco", "fraterno", "freira", "frente", "fretar", "frieza", "friso", "fritura", "fronha", "frustrar", "fruteira", "fugir", "fulano", "fuligem", "fundar", "fungo", "funil", "furador", "furioso", "futebol", "gabarito", "gabinete", "gado", "gaiato", "gaiola", "gaivota", "galega", "galho", "galinha", "galocha", "ganhar", "garagem", "garfo", "gargalo", "garimpo", "garoupa", "garrafa", "gasoduto", "gasto", "gata", "gatilho", "gaveta", "gazela", "gelado", "geleia", "gelo", "gemada", "gemer", "gemido", "generoso", "gengiva", "genial", "genoma", "genro", "geologia", "gerador", "germinar", "gesso", "gestor", "ginasta", "gincana", "gingado", "girafa", "girino", "glacial", "glicose", "global", "glorioso", "goela", "goiaba", "golfe", "golpear", "gordura", "gorjeta", "gorro", "gostoso", "goteira", "governar", "gracejo", "gradual", "grafite", "gralha", "grampo", "granada", "gratuito", "graveto", "graxa", "grego", "grelhar", "greve", "grilo", "grisalho", "gritaria", "grosso", "grotesco", "grudado", "grunhido", "gruta", "guache", "guarani", "guaxinim", "guerrear", "guiar", "guincho", "guisado", "gula", "guloso", "guru", "habitar", "harmonia", "haste", "haver", "hectare", "herdar", "heresia", "hesitar", "hiato", "hibernar", "hidratar", "hiena", "hino", "hipismo", "hipnose", "hipoteca", "hoje", "holofote", "homem", "honesto", "honrado", "hormonal", "hospedar", "humorado", "iate", "ideia", "idoso", "ignorado", "igreja", "iguana", "ileso", "ilha", "iludido", "iluminar", "ilustrar", "imagem", "imediato", "imenso", "imersivo", "iminente", "imitador", "imortal", "impacto", "impedir", "implante", "impor", "imprensa", "impune", "imunizar", "inalador", "inapto", "inativo", "incenso", "inchar", "incidir", "incluir", "incolor", "indeciso", "indireto", "indutor", "ineficaz", "inerente", "infantil", "infestar", "infinito", "inflamar", "informal", "infrator", "ingerir", "inibido", "inicial", "inimigo", "injetar", "inocente", "inodoro", "inovador", "inox", "inquieto", "inscrito", "inseto", "insistir", "inspetor", "instalar", "insulto", "intacto", "integral", "intimar", "intocado", "intriga", "invasor", "inverno", "invicto", "invocar", "iogurte", "iraniano", "ironizar", "irreal", "irritado", "isca", "isento", "isolado", "isqueiro", "italiano", "janeiro", "jangada", "janta", "jararaca", "jardim", "jarro", "jasmim", "jato", "javali", "jazida", "jejum", "joaninha", "joelhada", "jogador", "joia", "jornal", "jorrar", "jovem", "juba", "judeu", "judoca", "juiz", "julgador", "julho", "jurado", "jurista", "juro", "justa", "labareda", "laboral", "lacre", "lactante", "ladrilho", "lagarta", "lagoa", "laje", "lamber", "lamentar", "laminar", "lampejo", "lanche", "lapidar", "lapso", "laranja", "lareira", "largura", "lasanha", "lastro", "lateral", "latido", "lavanda", "lavoura", "lavrador", "laxante", "lazer", "lealdade", "lebre", "legado", "legendar", "legista", "leigo", "leiloar", "leitura", "lembrete", "leme", "lenhador", "lentilha", "leoa", "lesma", "leste", "letivo", "letreiro", "levar", "leveza", "levitar", "liberal", "libido", "liderar", "ligar", "ligeiro", "limitar", "limoeiro", "limpador", "linda", "linear", "linhagem", "liquidez", "listagem", "lisura", "litoral", "livro", "lixa", "lixeira", "locador", "locutor", "lojista", "lombo", "lona", "longe", "lontra", "lorde", "lotado", "loteria", "loucura", "lousa", "louvar", "luar", "lucidez", "lucro", "luneta", "lustre", "lutador", "luva", "macaco", "macete", "machado", "macio", "madeira", "madrinha", "magnata", "magreza", "maior", "mais", "malandro", "malha", "malote", "maluco", "mamilo", "mamoeiro", "mamute", "manada", "mancha", "mandato", "manequim", "manhoso", "manivela", "manobrar", "mansa", "manter", "manusear", "mapeado", "maquinar", "marcador", "maresia", "marfim", "margem", "marinho", "marmita", "maroto", "marquise", "marreco", "martelo", "marujo", "mascote", "masmorra", "massagem", "mastigar", "matagal", "materno", "matinal", "matutar", "maxilar", "medalha", "medida", "medusa", "megafone", "meiga", "melancia", "melhor", "membro", "memorial", "menino", "menos", "mensagem", "mental", "merecer", "mergulho", "mesada", "mesclar", "mesmo", "mesquita", "mestre", "metade", "meteoro", "metragem", "mexer", "mexicano", "micro", "migalha", "migrar", "milagre", "milenar", "milhar", "mimado", "minerar", "minhoca", "ministro", "minoria", "miolo", "mirante", "mirtilo", "misturar", "mocidade", "moderno", "modular", "moeda", "moer", "moinho", "moita", "moldura", "moleza", "molho", "molinete", "molusco", "montanha", "moqueca", "morango", "morcego", "mordomo", "morena", "mosaico", "mosquete", "mostarda", "motel", "motim", "moto", "motriz", "muda", "muito", "mulata", "mulher", "multar", "mundial", "munido", "muralha", "murcho", "muscular", "museu", "musical", "nacional", "nadador", "naja", "namoro", "narina", "narrado", "nascer", "nativa", "natureza", "navalha", "navegar", "navio", "neblina", "nebuloso", "negativa", "negociar", "negrito", "nervoso", "neta", "neural", "nevasca", "nevoeiro", "ninar", "ninho", "nitidez", "nivelar", "nobreza", "noite", "noiva", "nomear", "nominal", "nordeste", "nortear", "notar", "noticiar", "noturno", "novelo", "novilho", "novo", "nublado", "nudez", "numeral", "nupcial", "nutrir", "nuvem", "obcecado", "obedecer", "objetivo", "obrigado", "obscuro", "obstetra", "obter", "obturar", "ocidente", "ocioso", "ocorrer", "oculista", "ocupado", "ofegante", "ofensiva", "oferenda", "oficina", "ofuscado", "ogiva", "olaria", "oleoso", "olhar", "oliveira", "ombro", "omelete", "omisso", "omitir", "ondulado", "oneroso", "ontem", "opcional", "operador", "oponente", "oportuno", "oposto", "orar", "orbitar", "ordem", "ordinal", "orfanato", "orgasmo", "orgulho", "oriental", "origem", "oriundo", "orla", "ortodoxo", "orvalho", "oscilar", "ossada", "osso", "ostentar", "otimismo", "ousadia", "outono", "outubro", "ouvido", "ovelha", "ovular", "oxidar", "oxigenar", "pacato", "paciente", "pacote", "pactuar", "padaria", "padrinho", "pagar", "pagode", "painel", "pairar", "paisagem", "palavra", "palestra", "palheta", "palito", "palmada", "palpitar", "pancada", "panela", "panfleto", "panqueca", "pantanal", "papagaio", "papelada", "papiro", "parafina", "parcial", "pardal", "parede", "partida", "pasmo", "passado", "pastel", "patamar", "patente", "patinar", "patrono", "paulada", "pausar", "peculiar", "pedalar", "pedestre", "pediatra", "pedra", "pegada", "peitoral", "peixe", "pele", "pelicano", "penca", "pendurar", "peneira", "penhasco", "pensador", "pente", "perceber", "perfeito", "pergunta", "perito", "permitir", "perna", "perplexo", "persiana", "pertence", "peruca", "pescado", "pesquisa", "pessoa", "petiscar", "piada", "picado", "piedade", "pigmento", "pilastra", "pilhado", "pilotar", "pimenta", "pincel", "pinguim", "pinha", "pinote", "pintar", "pioneiro", "pipoca", "piquete", "piranha", "pires", "pirueta", "piscar", "pistola", "pitanga", "pivete", "planta", "plaqueta", "platina", "plebeu", "plumagem", "pluvial", "pneu", "poda", "poeira", "poetisa", "polegada", "policiar", "poluente", "polvilho", "pomar", "pomba", "ponderar", "pontaria", "populoso", "porta", "possuir", "postal", "pote", "poupar", "pouso", "povoar", "praia", "prancha", "prato", "praxe", "prece", "predador", "prefeito", "premiar", "prensar", "preparar", "presilha", "pretexto", "prevenir", "prezar", "primata", "princesa", "prisma", "privado", "processo", "produto", "profeta", "proibido", "projeto", "prometer", "propagar", "prosa", "protetor", "provador", "publicar", "pudim", "pular", "pulmonar", "pulseira", "punhal", "punir", "pupilo", "pureza", "puxador", "quadra", "quantia", "quarto", "quase", "quebrar", "queda", "queijo", "quente", "querido", "quimono", "quina", "quiosque", "rabanada", "rabisco", "rachar", "racionar", "radial", "raiar", "rainha", "raio", "raiva", "rajada", "ralado", "ramal", "ranger", "ranhura", "rapadura", "rapel", "rapidez", "raposa", "raquete", "raridade", "rasante", "rascunho", "rasgar", "raspador", "rasteira", "rasurar", "ratazana", "ratoeira", "realeza", "reanimar", "reaver", "rebaixar", "rebelde", "rebolar", "recado", "recente", "recheio", "recibo", "recordar", "recrutar", "recuar", "rede", "redimir", "redonda", "reduzida", "reenvio", "refinar", "refletir", "refogar", "refresco", "refugiar", "regalia", "regime", "regra", "reinado", "reitor", "rejeitar", "relativo", "remador", "remendo", "remorso", "renovado", "reparo", "repelir", "repleto", "repolho", "represa", "repudiar", "requerer", "resenha", "resfriar", "resgatar", "residir", "resolver", "respeito", "ressaca", "restante", "resumir", "retalho", "reter", "retirar", "retomada", "retratar", "revelar", "revisor", "revolta", "riacho", "rica", "rigidez", "rigoroso", "rimar", "ringue", "risada", "risco", "risonho", "robalo", "rochedo", "rodada", "rodeio", "rodovia", "roedor", "roleta", "romano", "roncar", "rosado", "roseira", "rosto", "rota", "roteiro", "rotina", "rotular", "rouco", "roupa", "roxo", "rubro", "rugido", "rugoso", "ruivo", "rumo", "rupestre", "russo", "sabor", "saciar", "sacola", "sacudir", "sadio", "safira", "saga", "sagrada", "saibro", "salada", "saleiro", "salgado", "saliva", "salpicar", "salsicha", "saltar", "salvador", "sambar", "samurai", "sanar", "sanfona", "sangue", "sanidade", "sapato", "sarda", "sargento", "sarjeta", "saturar", "saudade", "saxofone", "sazonal", "secar", "secular", "seda", "sedento", "sediado", "sedoso", "sedutor", "segmento", "segredo", "segundo", "seiva", "seleto", "selvagem", "semanal", "semente", "senador", "senhor", "sensual", "sentado", "separado", "sereia", "seringa", "serra", "servo", "setembro", "setor", "sigilo", "silhueta", "silicone", "simetria", "simpatia", "simular", "sinal", "sincero", "singular", "sinopse", "sintonia", "sirene", "siri", "situado", "soberano", "sobra", "socorro", "sogro", "soja", "solda", "soletrar", "solteiro", "sombrio", "sonata", "sondar", "sonegar", "sonhador", "sono", "soprano", "soquete", "sorrir", "sorteio", "sossego", "sotaque", "soterrar", "sovado", "sozinho", "suavizar", "subida", "submerso", "subsolo", "subtrair", "sucata", "sucesso", "suco", "sudeste", "sufixo", "sugador", "sugerir", "sujeito", "sulfato", "sumir", "suor", "superior", "suplicar", "suposto", "suprimir", "surdina", "surfista", "surpresa", "surreal", "surtir", "suspiro", "sustento", "tabela", "tablete", "tabuada", "tacho", "tagarela", "talher", "talo", "talvez", "tamanho", "tamborim", "tampa", "tangente", "tanto", "tapar", "tapioca", "tardio", "tarefa", "tarja", "tarraxa", "tatuagem", "taurino", "taxativo", "taxista", "teatral", "tecer", "tecido", "teclado", "tedioso", "teia", "teimar", "telefone", "telhado", "tempero", "tenente", "tensor", "tentar", "termal", "terno", "terreno", "tese", "tesoura", "testado", "teto", "textura", "texugo", "tiara", "tigela", "tijolo", "timbrar", "timidez", "tingido", "tinteiro", "tiragem", "titular", "toalha", "tocha", "tolerar", "tolice", "tomada", "tomilho", "tonel", "tontura", "topete", "tora", "torcido", "torneio", "torque", "torrada", "torto", "tostar", "touca", "toupeira", "toxina", "trabalho", "tracejar", "tradutor", "trafegar", "trajeto", "trama", "trancar", "trapo", "traseiro", "tratador", "travar", "treino", "tremer", "trepidar", "trevo", "triagem", "tribo", "triciclo", "tridente", "trilogia", "trindade", "triplo", "triturar", "triunfal", "trocar", "trombeta", "trova", "trunfo", "truque", "tubular", "tucano", "tudo", "tulipa", "tupi", "turbo", "turma", "turquesa", "tutelar", "tutorial", "uivar", "umbigo", "unha", "unidade", "uniforme", "urologia", "urso", "urtiga", "urubu", "usado", "usina", "usufruir", "vacina", "vadiar", "vagaroso", "vaidoso", "vala", "valente", "validade", "valores", "vantagem", "vaqueiro", "varanda", "vareta", "varrer", "vascular", "vasilha", "vassoura", "vazar", "vazio", "veado", "vedar", "vegetar", "veicular", "veleiro", "velhice", "veludo", "vencedor", "vendaval", "venerar", "ventre", "verbal", "verdade", "vereador", "vergonha", "vermelho", "verniz", "versar", "vertente", "vespa", "vestido", "vetorial", "viaduto", "viagem", "viajar", "viatura", "vibrador", "videira", "vidraria", "viela", "viga", "vigente", "vigiar", "vigorar", "vilarejo", "vinco", "vinheta", "vinil", "violeta", "virada", "virtude", "visitar", "visto", "vitral", "viveiro", "vizinho", "voador", "voar", "vogal", "volante", "voleibol", "voltagem", "volumoso", "vontade", "vulto", "vuvuzela", "xadrez", "xarope", "xeque", "xeretar", "xerife", "xingar", "zangado", "zarpar", "zebu", "zelador", "zombar", "zoologia", "zumbido", } }; polyseed-1.0.0/src/lang_zh_s.c000066400000000000000000001045131424320763700162470ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_zh_s = { .name = u8"中文(简体)", .name_en = "Chinese (Simplified)", .separator = " ", .is_sorted = false, .has_prefix = false, .has_accents = false, .compose = false, .words = { u8"的", u8"一", u8"是", u8"在", u8"不", u8"了", u8"有", u8"和", u8"人", u8"这", u8"中", u8"大", u8"为", u8"上", u8"个", u8"国", u8"我", u8"以", u8"要", u8"他", u8"时", u8"来", u8"用", u8"们", u8"生", u8"到", u8"作", u8"地", u8"于", u8"出", u8"就", u8"分", u8"对", u8"成", u8"会", u8"可", u8"主", u8"发", u8"年", u8"动", u8"同", u8"工", u8"也", u8"能", u8"下", u8"过", u8"子", u8"说", u8"产", u8"种", u8"面", u8"而", u8"方", u8"后", u8"多", u8"定", u8"行", u8"学", u8"法", u8"所", u8"民", u8"得", u8"经", u8"十", u8"三", u8"之", u8"进", u8"着", u8"等", u8"部", u8"度", u8"家", u8"电", u8"力", u8"里", u8"如", u8"水", u8"化", u8"高", u8"自", u8"二", u8"理", u8"起", u8"小", u8"物", u8"现", u8"实", u8"加", u8"量", u8"都", u8"两", u8"体", u8"制", u8"机", u8"当", u8"使", u8"点", u8"从", u8"业", u8"本", u8"去", u8"把", u8"性", u8"好", u8"应", u8"开", u8"它", u8"合", u8"还", u8"因", u8"由", u8"其", u8"些", u8"然", u8"前", u8"外", u8"天", u8"政", u8"四", u8"日", u8"那", u8"社", u8"义", u8"事", u8"平", u8"形", u8"相", u8"全", u8"表", u8"间", u8"样", u8"与", u8"关", u8"各", u8"重", u8"新", u8"线", u8"内", u8"数", u8"正", u8"心", u8"反", u8"你", u8"明", u8"看", u8"原", u8"又", u8"么", u8"利", u8"比", u8"或", u8"但", u8"质", u8"气", u8"第", u8"向", u8"道", u8"命", u8"此", u8"变", u8"条", u8"只", u8"没", u8"结", u8"解", u8"问", u8"意", u8"建", u8"月", u8"公", u8"无", u8"系", u8"军", u8"很", u8"情", u8"者", u8"最", u8"立", u8"代", u8"想", u8"已", u8"通", u8"并", u8"提", u8"直", u8"题", u8"党", u8"程", u8"展", u8"五", u8"果", u8"料", u8"象", u8"员", u8"革", u8"位", u8"入", u8"常", u8"文", u8"总", u8"次", u8"品", u8"式", u8"活", u8"设", u8"及", u8"管", u8"特", u8"件", u8"长", u8"求", u8"老", u8"头", u8"基", u8"资", u8"边", u8"流", u8"路", u8"级", u8"少", u8"图", u8"山", u8"统", u8"接", u8"知", u8"较", u8"将", u8"组", u8"见", u8"计", u8"别", u8"她", u8"手", u8"角", u8"期", u8"根", u8"论", u8"运", u8"农", u8"指", u8"几", u8"九", u8"区", u8"强", u8"放", u8"决", u8"西", u8"被", u8"干", u8"做", u8"必", u8"战", u8"先", u8"回", u8"则", u8"任", u8"取", u8"据", u8"处", u8"队", u8"南", u8"给", u8"色", u8"光", u8"门", u8"即", u8"保", u8"治", u8"北", u8"造", u8"百", u8"规", u8"热", u8"领", u8"七", u8"海", u8"口", u8"东", u8"导", u8"器", u8"压", u8"志", u8"世", u8"金", u8"增", u8"争", u8"济", u8"阶", u8"油", u8"思", u8"术", u8"极", u8"交", u8"受", u8"联", u8"什", u8"认", u8"六", u8"共", u8"权", u8"收", u8"证", u8"改", u8"清", u8"美", u8"再", u8"采", u8"转", u8"更", u8"单", u8"风", u8"切", u8"打", u8"白", u8"教", u8"速", u8"花", u8"带", u8"安", u8"场", u8"身", u8"车", u8"例", u8"真", u8"务", u8"具", u8"万", u8"每", u8"目", u8"至", u8"达", u8"走", u8"积", u8"示", u8"议", u8"声", u8"报", u8"斗", u8"完", u8"类", u8"八", u8"离", u8"华", u8"名", u8"确", u8"才", u8"科", u8"张", u8"信", u8"马", u8"节", u8"话", u8"米", u8"整", u8"空", u8"元", u8"况", u8"今", u8"集", u8"温", u8"传", u8"土", u8"许", u8"步", u8"群", u8"广", u8"石", u8"记", u8"需", u8"段", u8"研", u8"界", u8"拉", u8"林", u8"律", u8"叫", u8"且", u8"究", u8"观", u8"越", u8"织", u8"装", u8"影", u8"算", u8"低", u8"持", u8"音", u8"众", u8"书", u8"布", u8"复", u8"容", u8"儿", u8"须", u8"际", u8"商", u8"非", u8"验", u8"连", u8"断", u8"深", u8"难", u8"近", u8"矿", u8"千", u8"周", u8"委", u8"素", u8"技", u8"备", u8"半", u8"办", u8"青", u8"省", u8"列", u8"习", u8"响", u8"约", u8"支", u8"般", u8"史", u8"感", u8"劳", u8"便", u8"团", u8"往", u8"酸", u8"历", u8"市", u8"克", u8"何", u8"除", u8"消", u8"构", u8"府", u8"称", u8"太", u8"准", u8"精", u8"值", u8"号", u8"率", u8"族", u8"维", u8"划", u8"选", u8"标", u8"写", u8"存", u8"候", u8"毛", u8"亲", u8"快", u8"效", u8"斯", u8"院", u8"查", u8"江", u8"型", u8"眼", u8"王", u8"按", u8"格", u8"养", u8"易", u8"置", u8"派", u8"层", u8"片", u8"始", u8"却", u8"专", u8"状", u8"育", u8"厂", u8"京", u8"识", u8"适", u8"属", u8"圆", u8"包", u8"火", u8"住", u8"调", u8"满", u8"县", u8"局", u8"照", u8"参", u8"红", u8"细", u8"引", u8"听", u8"该", u8"铁", u8"价", u8"严", u8"首", u8"底", u8"液", u8"官", u8"德", u8"随", u8"病", u8"苏", u8"失", u8"尔", u8"死", u8"讲", u8"配", u8"女", u8"黄", u8"推", u8"显", u8"谈", u8"罪", u8"神", u8"艺", u8"呢", u8"席", u8"含", u8"企", u8"望", u8"密", u8"批", u8"营", u8"项", u8"防", u8"举", u8"球", u8"英", u8"氧", u8"势", u8"告", u8"李", u8"台", u8"落", u8"木", u8"帮", u8"轮", u8"破", u8"亚", u8"师", u8"围", u8"注", u8"远", u8"字", u8"材", u8"排", u8"供", u8"河", u8"态", u8"封", u8"另", u8"施", u8"减", u8"树", u8"溶", u8"怎", u8"止", u8"案", u8"言", u8"士", u8"均", u8"武", u8"固", u8"叶", u8"鱼", u8"波", u8"视", u8"仅", u8"费", u8"紧", u8"爱", u8"左", u8"章", u8"早", u8"朝", u8"害", u8"续", u8"轻", u8"服", u8"试", u8"食", u8"充", u8"兵", u8"源", u8"判", u8"护", u8"司", u8"足", u8"某", u8"练", u8"差", u8"致", u8"板", u8"田", u8"降", u8"黑", u8"犯", u8"负", u8"击", u8"范", u8"继", u8"兴", u8"似", u8"余", u8"坚", u8"曲", u8"输", u8"修", u8"故", u8"城", u8"夫", u8"够", u8"送", u8"笔", u8"船", u8"占", u8"右", u8"财", u8"吃", u8"富", u8"春", u8"职", u8"觉", u8"汉", u8"画", u8"功", u8"巴", u8"跟", u8"虽", u8"杂", u8"飞", u8"检", u8"吸", u8"助", u8"升", u8"阳", u8"互", u8"初", u8"创", u8"抗", u8"考", u8"投", u8"坏", u8"策", u8"古", u8"径", u8"换", u8"未", u8"跑", u8"留", u8"钢", u8"曾", u8"端", u8"责", u8"站", u8"简", u8"述", u8"钱", u8"副", u8"尽", u8"帝", u8"射", u8"草", u8"冲", u8"承", u8"独", u8"令", u8"限", u8"阿", u8"宣", u8"环", u8"双", u8"请", u8"超", u8"微", u8"让", u8"控", u8"州", u8"良", u8"轴", u8"找", u8"否", u8"纪", u8"益", u8"依", u8"优", u8"顶", u8"础", u8"载", u8"倒", u8"房", u8"突", u8"坐", u8"粉", u8"敌", u8"略", u8"客", u8"袁", u8"冷", u8"胜", u8"绝", u8"析", u8"块", u8"剂", u8"测", u8"丝", u8"协", u8"诉", u8"念", u8"陈", u8"仍", u8"罗", u8"盐", u8"友", u8"洋", u8"错", u8"苦", u8"夜", u8"刑", u8"移", u8"频", u8"逐", u8"靠", u8"混", u8"母", u8"短", u8"皮", u8"终", u8"聚", u8"汽", u8"村", u8"云", u8"哪", u8"既", u8"距", u8"卫", u8"停", u8"烈", u8"央", u8"察", u8"烧", u8"迅", u8"境", u8"若", u8"印", u8"洲", u8"刻", u8"括", u8"激", u8"孔", u8"搞", u8"甚", u8"室", u8"待", u8"核", u8"校", u8"散", u8"侵", u8"吧", u8"甲", u8"游", u8"久", u8"菜", u8"味", u8"旧", u8"模", u8"湖", u8"货", u8"损", u8"预", u8"阻", u8"毫", u8"普", u8"稳", u8"乙", u8"妈", u8"植", u8"息", u8"扩", u8"银", u8"语", u8"挥", u8"酒", u8"守", u8"拿", u8"序", u8"纸", u8"医", u8"缺", u8"雨", u8"吗", u8"针", u8"刘", u8"啊", u8"急", u8"唱", u8"误", u8"训", u8"愿", u8"审", u8"附", u8"获", u8"茶", u8"鲜", u8"粮", u8"斤", u8"孩", u8"脱", u8"硫", u8"肥", u8"善", u8"龙", u8"演", u8"父", u8"渐", u8"血", u8"欢", u8"械", u8"掌", u8"歌", u8"沙", u8"刚", u8"攻", u8"谓", u8"盾", u8"讨", u8"晚", u8"粒", u8"乱", u8"燃", u8"矛", u8"乎", u8"杀", u8"药", u8"宁", u8"鲁", u8"贵", u8"钟", u8"煤", u8"读", u8"班", u8"伯", u8"香", u8"介", u8"迫", u8"句", u8"丰", u8"培", u8"握", u8"兰", u8"担", u8"弦", u8"蛋", u8"沉", u8"假", u8"穿", u8"执", u8"答", u8"乐", u8"谁", u8"顺", u8"烟", u8"缩", u8"征", u8"脸", u8"喜", u8"松", u8"脚", u8"困", u8"异", u8"免", u8"背", u8"星", u8"福", u8"买", u8"染", u8"井", u8"概", u8"慢", u8"怕", u8"磁", u8"倍", u8"祖", u8"皇", u8"促", u8"静", u8"补", u8"评", u8"翻", u8"肉", u8"践", u8"尼", u8"衣", u8"宽", u8"扬", u8"棉", u8"希", u8"伤", u8"操", u8"垂", u8"秋", u8"宜", u8"氢", u8"套", u8"督", u8"振", u8"架", u8"亮", u8"末", u8"宪", u8"庆", u8"编", u8"牛", u8"触", u8"映", u8"雷", u8"销", u8"诗", u8"座", u8"居", u8"抓", u8"裂", u8"胞", u8"呼", u8"娘", u8"景", u8"威", u8"绿", u8"晶", u8"厚", u8"盟", u8"衡", u8"鸡", u8"孙", u8"延", u8"危", u8"胶", u8"屋", u8"乡", u8"临", u8"陆", u8"顾", u8"掉", u8"呀", u8"灯", u8"岁", u8"措", u8"束", u8"耐", u8"剧", u8"玉", u8"赵", u8"跳", u8"哥", u8"季", u8"课", u8"凯", u8"胡", u8"额", u8"款", u8"绍", u8"卷", u8"齐", u8"伟", u8"蒸", u8"殖", u8"永", u8"宗", u8"苗", u8"川", u8"炉", u8"岩", u8"弱", u8"零", u8"杨", u8"奏", u8"沿", u8"露", u8"杆", u8"探", u8"滑", u8"镇", u8"饭", u8"浓", u8"航", u8"怀", u8"赶", u8"库", u8"夺", u8"伊", u8"灵", u8"税", u8"途", u8"灭", u8"赛", u8"归", u8"召", u8"鼓", u8"播", u8"盘", u8"裁", u8"险", u8"康", u8"唯", u8"录", u8"菌", u8"纯", u8"借", u8"糖", u8"盖", u8"横", u8"符", u8"私", u8"努", u8"堂", u8"域", u8"枪", u8"润", u8"幅", u8"哈", u8"竟", u8"熟", u8"虫", u8"泽", u8"脑", u8"壤", u8"碳", u8"欧", u8"遍", u8"侧", u8"寨", u8"敢", u8"彻", u8"虑", u8"斜", u8"薄", u8"庭", u8"纳", u8"弹", u8"饲", u8"伸", u8"折", u8"麦", u8"湿", u8"暗", u8"荷", u8"瓦", u8"塞", u8"床", u8"筑", u8"恶", u8"户", u8"访", u8"塔", u8"奇", u8"透", u8"梁", u8"刀", u8"旋", u8"迹", u8"卡", u8"氯", u8"遇", u8"份", u8"毒", u8"泥", u8"退", u8"洗", u8"摆", u8"灰", u8"彩", u8"卖", u8"耗", u8"夏", u8"择", u8"忙", u8"铜", u8"献", u8"硬", u8"予", u8"繁", u8"圈", u8"雪", u8"函", u8"亦", u8"抽", u8"篇", u8"阵", u8"阴", u8"丁", u8"尺", u8"追", u8"堆", u8"雄", u8"迎", u8"泛", u8"爸", u8"楼", u8"避", u8"谋", u8"吨", u8"野", u8"猪", u8"旗", u8"累", u8"偏", u8"典", u8"馆", u8"索", u8"秦", u8"脂", u8"潮", u8"爷", u8"豆", u8"忽", u8"托", u8"惊", u8"塑", u8"遗", u8"愈", u8"朱", u8"替", u8"纤", u8"粗", u8"倾", u8"尚", u8"痛", u8"楚", u8"谢", u8"奋", u8"购", u8"磨", u8"君", u8"池", u8"旁", u8"碎", u8"骨", u8"监", u8"捕", u8"弟", u8"暴", u8"割", u8"贯", u8"殊", u8"释", u8"词", u8"亡", u8"壁", u8"顿", u8"宝", u8"午", u8"尘", u8"闻", u8"揭", u8"炮", u8"残", u8"冬", u8"桥", u8"妇", u8"警", u8"综", u8"招", u8"吴", u8"付", u8"浮", u8"遭", u8"徐", u8"您", u8"摇", u8"谷", u8"赞", u8"箱", u8"隔", u8"订", u8"男", u8"吹", u8"园", u8"纷", u8"唐", u8"败", u8"宋", u8"玻", u8"巨", u8"耕", u8"坦", u8"荣", u8"闭", u8"湾", u8"键", u8"凡", u8"驻", u8"锅", u8"救", u8"恩", u8"剥", u8"凝", u8"碱", u8"齿", u8"截", u8"炼", u8"麻", u8"纺", u8"禁", u8"废", u8"盛", u8"版", u8"缓", u8"净", u8"睛", u8"昌", u8"婚", u8"涉", u8"筒", u8"嘴", u8"插", u8"岸", u8"朗", u8"庄", u8"街", u8"藏", u8"姑", u8"贸", u8"腐", u8"奴", u8"啦", u8"惯", u8"乘", u8"伙", u8"恢", u8"匀", u8"纱", u8"扎", u8"辩", u8"耳", u8"彪", u8"臣", u8"亿", u8"璃", u8"抵", u8"脉", u8"秀", u8"萨", u8"俄", u8"网", u8"舞", u8"店", u8"喷", u8"纵", u8"寸", u8"汗", u8"挂", u8"洪", u8"贺", u8"闪", u8"柬", u8"爆", u8"烯", u8"津", u8"稻", u8"墙", u8"软", u8"勇", u8"像", u8"滚", u8"厘", u8"蒙", u8"芳", u8"肯", u8"坡", u8"柱", u8"荡", u8"腿", u8"仪", u8"旅", u8"尾", u8"轧", u8"冰", u8"贡", u8"登", u8"黎", u8"削", u8"钻", u8"勒", u8"逃", u8"障", u8"氨", u8"郭", u8"峰", u8"币", u8"港", u8"伏", u8"轨", u8"亩", u8"毕", u8"擦", u8"莫", u8"刺", u8"浪", u8"秘", u8"援", u8"株", u8"健", u8"售", u8"股", u8"岛", u8"甘", u8"泡", u8"睡", u8"童", u8"铸", u8"汤", u8"阀", u8"休", u8"汇", u8"舍", u8"牧", u8"绕", u8"炸", u8"哲", u8"磷", u8"绩", u8"朋", u8"淡", u8"尖", u8"启", u8"陷", u8"柴", u8"呈", u8"徒", u8"颜", u8"泪", u8"稍", u8"忘", u8"泵", u8"蓝", u8"拖", u8"洞", u8"授", u8"镜", u8"辛", u8"壮", u8"锋", u8"贫", u8"虚", u8"弯", u8"摩", u8"泰", u8"幼", u8"廷", u8"尊", u8"窗", u8"纲", u8"弄", u8"隶", u8"疑", u8"氏", u8"宫", u8"姐", u8"震", u8"瑞", u8"怪", u8"尤", u8"琴", u8"循", u8"描", u8"膜", u8"违", u8"夹", u8"腰", u8"缘", u8"珠", u8"穷", u8"森", u8"枝", u8"竹", u8"沟", u8"催", u8"绳", u8"忆", u8"邦", u8"剩", u8"幸", u8"浆", u8"栏", u8"拥", u8"牙", u8"贮", u8"礼", u8"滤", u8"钠", u8"纹", u8"罢", u8"拍", u8"咱", u8"喊", u8"袖", u8"埃", u8"勤", u8"罚", u8"焦", u8"潜", u8"伍", u8"墨", u8"欲", u8"缝", u8"姓", u8"刊", u8"饱", u8"仿", u8"奖", u8"铝", u8"鬼", u8"丽", u8"跨", u8"默", u8"挖", u8"链", u8"扫", u8"喝", u8"袋", u8"炭", u8"污", u8"幕", u8"诸", u8"弧", u8"励", u8"梅", u8"奶", u8"洁", u8"灾", u8"舟", u8"鉴", u8"苯", u8"讼", u8"抱", u8"毁", u8"懂", u8"寒", u8"智", u8"埔", u8"寄", u8"届", u8"跃", u8"渡", u8"挑", u8"丹", u8"艰", u8"贝", u8"碰", u8"拔", u8"爹", u8"戴", u8"码", u8"梦", u8"芽", u8"熔", u8"赤", u8"渔", u8"哭", u8"敬", u8"颗", u8"奔", u8"铅", u8"仲", u8"虎", u8"稀", u8"妹", u8"乏", u8"珍", u8"申", u8"桌", u8"遵", u8"允", u8"隆", u8"螺", u8"仓", u8"魏", u8"锐", u8"晓", u8"氮", u8"兼", u8"隐", u8"碍", u8"赫", u8"拨", u8"忠", u8"肃", u8"缸", u8"牵", u8"抢", u8"博", u8"巧", u8"壳", u8"兄", u8"杜", u8"讯", u8"诚", u8"碧", u8"祥", u8"柯", u8"页", u8"巡", u8"矩", u8"悲", u8"灌", u8"龄", u8"伦", u8"票", u8"寻", u8"桂", u8"铺", u8"圣", u8"恐", u8"恰", u8"郑", u8"趣", u8"抬", u8"荒", u8"腾", u8"贴", u8"柔", u8"滴", u8"猛", u8"阔", u8"辆", u8"妻", u8"填", u8"撤", u8"储", u8"签", u8"闹", u8"扰", u8"紫", u8"砂", u8"递", u8"戏", u8"吊", u8"陶", u8"伐", u8"喂", u8"疗", u8"瓶", u8"婆", u8"抚", u8"臂", u8"摸", u8"忍", u8"虾", u8"蜡", u8"邻", u8"胸", u8"巩", u8"挤", u8"偶", u8"弃", u8"槽", u8"劲", u8"乳", u8"邓", u8"吉", u8"仁", u8"烂", u8"砖", u8"租", u8"乌", u8"舰", u8"伴", u8"瓜", u8"浅", u8"丙", u8"暂", u8"燥", u8"橡", u8"柳", u8"迷", u8"暖", u8"牌", u8"秧", u8"胆", u8"详", u8"簧", u8"踏", u8"瓷", u8"谱", u8"呆", u8"宾", u8"糊", u8"洛", u8"辉", u8"愤", u8"竞", u8"隙", u8"怒", u8"粘", u8"乃", u8"绪", u8"肩", u8"籍", u8"敏", u8"涂", u8"熙", u8"皆", u8"侦", u8"悬", u8"掘", u8"享", u8"纠", u8"醒", u8"狂", u8"锁", u8"淀", u8"恨", u8"牲", u8"霸", u8"爬", u8"赏", u8"逆", u8"玩", u8"陵", u8"祝", u8"秒", u8"浙", u8"貌", u8"役", u8"彼", u8"悉", u8"鸭", u8"趋", u8"凤", u8"晨", u8"畜", u8"辈", u8"秩", u8"卵", u8"署", u8"梯", u8"炎", u8"滩", u8"棋", u8"驱", u8"筛", u8"峡", u8"冒", u8"啥", u8"寿", u8"译", u8"浸", u8"泉", u8"帽", u8"迟", u8"硅", u8"疆", u8"贷", u8"漏", u8"稿", u8"冠", u8"嫩", u8"胁", u8"芯", u8"牢", u8"叛", u8"蚀", u8"奥", u8"鸣", u8"岭", u8"羊", u8"凭", u8"串", u8"塘", u8"绘", u8"酵", u8"融", u8"盆", u8"锡", u8"庙", u8"筹", u8"冻", u8"辅", u8"摄", u8"袭", u8"筋", u8"拒", u8"僚", u8"旱", u8"钾", u8"鸟", u8"漆", u8"沈", u8"眉", u8"疏", u8"添", u8"棒", u8"穗", u8"硝", u8"韩", u8"逼", u8"扭", u8"侨", u8"凉", u8"挺", u8"碗", u8"栽", u8"炒", u8"杯", u8"患", u8"馏", u8"劝", u8"豪", u8"辽", u8"勃", u8"鸿", u8"旦", u8"吏", u8"拜", u8"狗", u8"埋", u8"辊", u8"掩", u8"饮", u8"搬", u8"骂", u8"辞", u8"勾", u8"扣", u8"估", u8"蒋", u8"绒", u8"雾", u8"丈", u8"朵", u8"姆", u8"拟", u8"宇", u8"辑", u8"陕", u8"雕", u8"偿", u8"蓄", u8"崇", u8"剪", u8"倡", u8"厅", u8"咬", u8"驶", u8"薯", u8"刷", u8"斥", u8"番", u8"赋", u8"奉", u8"佛", u8"浇", u8"漫", u8"曼", u8"扇", u8"钙", u8"桃", u8"扶", u8"仔", u8"返", u8"俗", u8"亏", u8"腔", u8"鞋", u8"棱", u8"覆", u8"框", u8"悄", u8"叔", u8"撞", u8"骗", u8"勘", u8"旺", u8"沸", u8"孤", u8"吐", u8"孟", u8"渠", u8"屈", u8"疾", u8"妙", u8"惜", u8"仰", u8"狠", u8"胀", u8"谐", u8"抛", u8"霉", u8"桑", u8"岗", u8"嘛", u8"衰", u8"盗", u8"渗", u8"脏", u8"赖", u8"涌", u8"甜", u8"曹", u8"阅", u8"肌", u8"哩", u8"厉", u8"烃", u8"纬", u8"毅", u8"昨", u8"伪", u8"症", u8"煮", u8"叹", u8"钉", u8"搭", u8"茎", u8"笼", u8"酷", u8"偷", u8"弓", u8"锥", u8"恒", u8"杰", u8"坑", u8"鼻", u8"翼", u8"纶", u8"叙", u8"狱", u8"逮", u8"罐", u8"络", u8"棚", u8"抑", u8"膨", u8"蔬", u8"寺", u8"骤", u8"穆", u8"冶", u8"枯", u8"册", u8"尸", u8"凸", u8"绅", u8"坯", u8"牺", u8"焰", u8"轰", u8"欣", u8"晋", u8"瘦", u8"御", u8"锭", u8"锦", u8"丧", u8"旬", u8"锻", u8"垄", u8"搜", u8"扑", u8"邀", u8"亭", u8"酯", u8"迈", u8"舒", u8"脆", u8"酶", u8"闲", u8"忧", u8"酚", u8"顽", u8"羽", u8"涨", u8"卸", u8"仗", u8"陪", u8"辟", u8"惩", u8"杭", u8"姚", u8"肚", u8"捉", u8"飘", u8"漂", u8"昆", u8"欺", u8"吾", u8"郎", u8"烷", u8"汁", u8"呵", u8"饰", u8"萧", u8"雅", u8"邮", u8"迁", u8"燕", u8"撒", u8"姻", u8"赴", u8"宴", u8"烦", u8"债", u8"帐", u8"斑", u8"铃", u8"旨", u8"醇", u8"董", u8"饼", u8"雏", u8"姿", u8"拌", u8"傅", u8"腹", u8"妥", u8"揉", u8"贤", u8"拆", u8"歪", u8"葡", u8"胺", u8"丢", u8"浩", u8"徽", u8"昂", u8"垫", u8"挡", u8"览", u8"贪", u8"慰", u8"缴", u8"汪", u8"慌", u8"冯", u8"诺", u8"姜", u8"谊", u8"凶", u8"劣", u8"诬", u8"耀", u8"昏", u8"躺", u8"盈", u8"骑", u8"乔", u8"溪", u8"丛", u8"卢", u8"抹", u8"闷", u8"咨", u8"刮", u8"驾", u8"缆", u8"悟", u8"摘", u8"铒", u8"掷", u8"颇", u8"幻", u8"柄", u8"惠", u8"惨", u8"佳", u8"仇", u8"腊", u8"窝", u8"涤", u8"剑", u8"瞧", u8"堡", u8"泼", u8"葱", u8"罩", u8"霍", u8"捞", u8"胎", u8"苍", u8"滨", u8"俩", u8"捅", u8"湘", u8"砍", u8"霞", u8"邵", u8"萄", u8"疯", u8"淮", u8"遂", u8"熊", u8"粪", u8"烘", u8"宿", u8"档", u8"戈", u8"驳", u8"嫂", u8"裕", u8"徙", u8"箭", u8"捐", u8"肠", u8"撑", u8"晒", u8"辨", u8"殿", u8"莲", u8"摊", u8"搅", u8"酱", u8"屏", u8"疫", u8"哀", u8"蔡", u8"堵", u8"沫", u8"皱", u8"畅", u8"叠", u8"阁", u8"莱", u8"敲", u8"辖", u8"钩", u8"痕", u8"坝", u8"巷", u8"饿", u8"祸", u8"丘", u8"玄", u8"溜", u8"曰", u8"逻", u8"彭", u8"尝", u8"卿", u8"妨", u8"艇", u8"吞", u8"韦", u8"怨", u8"矮", u8"歇", } }; polyseed-1.0.0/src/lang_zh_t.c000066400000000000000000001045141424320763700162510ustar00rootroot00000000000000#include "lang.h" /* Based on BIP-39 (unchanged) */ POLYSEED_PRIVATE const polyseed_lang polyseed_lang_zh_t = { .name = u8"中文(繁體)", .name_en = "Chinese (Traditional)", .separator = " ", .is_sorted = false, .has_prefix = false, .has_accents = false, .compose = false, .words = { u8"的", u8"一", u8"是", u8"在", u8"不", u8"了", u8"有", u8"和", u8"人", u8"這", u8"中", u8"大", u8"為", u8"上", u8"個", u8"國", u8"我", u8"以", u8"要", u8"他", u8"時", u8"來", u8"用", u8"們", u8"生", u8"到", u8"作", u8"地", u8"於", u8"出", u8"就", u8"分", u8"對", u8"成", u8"會", u8"可", u8"主", u8"發", u8"年", u8"動", u8"同", u8"工", u8"也", u8"能", u8"下", u8"過", u8"子", u8"說", u8"產", u8"種", u8"面", u8"而", u8"方", u8"後", u8"多", u8"定", u8"行", u8"學", u8"法", u8"所", u8"民", u8"得", u8"經", u8"十", u8"三", u8"之", u8"進", u8"著", u8"等", u8"部", u8"度", u8"家", u8"電", u8"力", u8"裡", u8"如", u8"水", u8"化", u8"高", u8"自", u8"二", u8"理", u8"起", u8"小", u8"物", u8"現", u8"實", u8"加", u8"量", u8"都", u8"兩", u8"體", u8"制", u8"機", u8"當", u8"使", u8"點", u8"從", u8"業", u8"本", u8"去", u8"把", u8"性", u8"好", u8"應", u8"開", u8"它", u8"合", u8"還", u8"因", u8"由", u8"其", u8"些", u8"然", u8"前", u8"外", u8"天", u8"政", u8"四", u8"日", u8"那", u8"社", u8"義", u8"事", u8"平", u8"形", u8"相", u8"全", u8"表", u8"間", u8"樣", u8"與", u8"關", u8"各", u8"重", u8"新", u8"線", u8"內", u8"數", u8"正", u8"心", u8"反", u8"你", u8"明", u8"看", u8"原", u8"又", u8"麼", u8"利", u8"比", u8"或", u8"但", u8"質", u8"氣", u8"第", u8"向", u8"道", u8"命", u8"此", u8"變", u8"條", u8"只", u8"沒", u8"結", u8"解", u8"問", u8"意", u8"建", u8"月", u8"公", u8"無", u8"系", u8"軍", u8"很", u8"情", u8"者", u8"最", u8"立", u8"代", u8"想", u8"已", u8"通", u8"並", u8"提", u8"直", u8"題", u8"黨", u8"程", u8"展", u8"五", u8"果", u8"料", u8"象", u8"員", u8"革", u8"位", u8"入", u8"常", u8"文", u8"總", u8"次", u8"品", u8"式", u8"活", u8"設", u8"及", u8"管", u8"特", u8"件", u8"長", u8"求", u8"老", u8"頭", u8"基", u8"資", u8"邊", u8"流", u8"路", u8"級", u8"少", u8"圖", u8"山", u8"統", u8"接", u8"知", u8"較", u8"將", u8"組", u8"見", u8"計", u8"別", u8"她", u8"手", u8"角", u8"期", u8"根", u8"論", u8"運", u8"農", u8"指", u8"幾", u8"九", u8"區", u8"強", u8"放", u8"決", u8"西", u8"被", u8"幹", u8"做", u8"必", u8"戰", u8"先", u8"回", u8"則", u8"任", u8"取", u8"據", u8"處", u8"隊", u8"南", u8"給", u8"色", u8"光", u8"門", u8"即", u8"保", u8"治", u8"北", u8"造", u8"百", u8"規", u8"熱", u8"領", u8"七", u8"海", u8"口", u8"東", u8"導", u8"器", u8"壓", u8"志", u8"世", u8"金", u8"增", u8"爭", u8"濟", u8"階", u8"油", u8"思", u8"術", u8"極", u8"交", u8"受", u8"聯", u8"什", u8"認", u8"六", u8"共", u8"權", u8"收", u8"證", u8"改", u8"清", u8"美", u8"再", u8"採", u8"轉", u8"更", u8"單", u8"風", u8"切", u8"打", u8"白", u8"教", u8"速", u8"花", u8"帶", u8"安", u8"場", u8"身", u8"車", u8"例", u8"真", u8"務", u8"具", u8"萬", u8"每", u8"目", u8"至", u8"達", u8"走", u8"積", u8"示", u8"議", u8"聲", u8"報", u8"鬥", u8"完", u8"類", u8"八", u8"離", u8"華", u8"名", u8"確", u8"才", u8"科", u8"張", u8"信", u8"馬", u8"節", u8"話", u8"米", u8"整", u8"空", u8"元", u8"況", u8"今", u8"集", u8"溫", u8"傳", u8"土", u8"許", u8"步", u8"群", u8"廣", u8"石", u8"記", u8"需", u8"段", u8"研", u8"界", u8"拉", u8"林", u8"律", u8"叫", u8"且", u8"究", u8"觀", u8"越", u8"織", u8"裝", u8"影", u8"算", u8"低", u8"持", u8"音", u8"眾", u8"書", u8"布", u8"复", u8"容", u8"兒", u8"須", u8"際", u8"商", u8"非", u8"驗", u8"連", u8"斷", u8"深", u8"難", u8"近", u8"礦", u8"千", u8"週", u8"委", u8"素", u8"技", u8"備", u8"半", u8"辦", u8"青", u8"省", u8"列", u8"習", u8"響", u8"約", u8"支", u8"般", u8"史", u8"感", u8"勞", u8"便", u8"團", u8"往", u8"酸", u8"歷", u8"市", u8"克", u8"何", u8"除", u8"消", u8"構", u8"府", u8"稱", u8"太", u8"準", u8"精", u8"值", u8"號", u8"率", u8"族", u8"維", u8"劃", u8"選", u8"標", u8"寫", u8"存", u8"候", u8"毛", u8"親", u8"快", u8"效", u8"斯", u8"院", u8"查", u8"江", u8"型", u8"眼", u8"王", u8"按", u8"格", u8"養", u8"易", u8"置", u8"派", u8"層", u8"片", u8"始", u8"卻", u8"專", u8"狀", u8"育", u8"廠", u8"京", u8"識", u8"適", u8"屬", u8"圓", u8"包", u8"火", u8"住", u8"調", u8"滿", u8"縣", u8"局", u8"照", u8"參", u8"紅", u8"細", u8"引", u8"聽", u8"該", u8"鐵", u8"價", u8"嚴", u8"首", u8"底", u8"液", u8"官", u8"德", u8"隨", u8"病", u8"蘇", u8"失", u8"爾", u8"死", u8"講", u8"配", u8"女", u8"黃", u8"推", u8"顯", u8"談", u8"罪", u8"神", u8"藝", u8"呢", u8"席", u8"含", u8"企", u8"望", u8"密", u8"批", u8"營", u8"項", u8"防", u8"舉", u8"球", u8"英", u8"氧", u8"勢", u8"告", u8"李", u8"台", u8"落", u8"木", u8"幫", u8"輪", u8"破", u8"亞", u8"師", u8"圍", u8"注", u8"遠", u8"字", u8"材", u8"排", u8"供", u8"河", u8"態", u8"封", u8"另", u8"施", u8"減", u8"樹", u8"溶", u8"怎", u8"止", u8"案", u8"言", u8"士", u8"均", u8"武", u8"固", u8"葉", u8"魚", u8"波", u8"視", u8"僅", u8"費", u8"緊", u8"愛", u8"左", u8"章", u8"早", u8"朝", u8"害", u8"續", u8"輕", u8"服", u8"試", u8"食", u8"充", u8"兵", u8"源", u8"判", u8"護", u8"司", u8"足", u8"某", u8"練", u8"差", u8"致", u8"板", u8"田", u8"降", u8"黑", u8"犯", u8"負", u8"擊", u8"范", u8"繼", u8"興", u8"似", u8"餘", u8"堅", u8"曲", u8"輸", u8"修", u8"故", u8"城", u8"夫", u8"夠", u8"送", u8"筆", u8"船", u8"佔", u8"右", u8"財", u8"吃", u8"富", u8"春", u8"職", u8"覺", u8"漢", u8"畫", u8"功", u8"巴", u8"跟", u8"雖", u8"雜", u8"飛", u8"檢", u8"吸", u8"助", u8"昇", u8"陽", u8"互", u8"初", u8"創", u8"抗", u8"考", u8"投", u8"壞", u8"策", u8"古", u8"徑", u8"換", u8"未", u8"跑", u8"留", u8"鋼", u8"曾", u8"端", u8"責", u8"站", u8"簡", u8"述", u8"錢", u8"副", u8"盡", u8"帝", u8"射", u8"草", u8"衝", u8"承", u8"獨", u8"令", u8"限", u8"阿", u8"宣", u8"環", u8"雙", u8"請", u8"超", u8"微", u8"讓", u8"控", u8"州", u8"良", u8"軸", u8"找", u8"否", u8"紀", u8"益", u8"依", u8"優", u8"頂", u8"礎", u8"載", u8"倒", u8"房", u8"突", u8"坐", u8"粉", u8"敵", u8"略", u8"客", u8"袁", u8"冷", u8"勝", u8"絕", u8"析", u8"塊", u8"劑", u8"測", u8"絲", u8"協", u8"訴", u8"念", u8"陳", u8"仍", u8"羅", u8"鹽", u8"友", u8"洋", u8"錯", u8"苦", u8"夜", u8"刑", u8"移", u8"頻", u8"逐", u8"靠", u8"混", u8"母", u8"短", u8"皮", u8"終", u8"聚", u8"汽", u8"村", u8"雲", u8"哪", u8"既", u8"距", u8"衛", u8"停", u8"烈", u8"央", u8"察", u8"燒", u8"迅", u8"境", u8"若", u8"印", u8"洲", u8"刻", u8"括", u8"激", u8"孔", u8"搞", u8"甚", u8"室", u8"待", u8"核", u8"校", u8"散", u8"侵", u8"吧", u8"甲", u8"遊", u8"久", u8"菜", u8"味", u8"舊", u8"模", u8"湖", u8"貨", u8"損", u8"預", u8"阻", u8"毫", u8"普", u8"穩", u8"乙", u8"媽", u8"植", u8"息", u8"擴", u8"銀", u8"語", u8"揮", u8"酒", u8"守", u8"拿", u8"序", u8"紙", u8"醫", u8"缺", u8"雨", u8"嗎", u8"針", u8"劉", u8"啊", u8"急", u8"唱", u8"誤", u8"訓", u8"願", u8"審", u8"附", u8"獲", u8"茶", u8"鮮", u8"糧", u8"斤", u8"孩", u8"脫", u8"硫", u8"肥", u8"善", u8"龍", u8"演", u8"父", u8"漸", u8"血", u8"歡", u8"械", u8"掌", u8"歌", u8"沙", u8"剛", u8"攻", u8"謂", u8"盾", u8"討", u8"晚", u8"粒", u8"亂", u8"燃", u8"矛", u8"乎", u8"殺", u8"藥", u8"寧", u8"魯", u8"貴", u8"鐘", u8"煤", u8"讀", u8"班", u8"伯", u8"香", u8"介", u8"迫", u8"句", u8"豐", u8"培", u8"握", u8"蘭", u8"擔", u8"弦", u8"蛋", u8"沉", u8"假", u8"穿", u8"執", u8"答", u8"樂", u8"誰", u8"順", u8"煙", u8"縮", u8"徵", u8"臉", u8"喜", u8"松", u8"腳", u8"困", u8"異", u8"免", u8"背", u8"星", u8"福", u8"買", u8"染", u8"井", u8"概", u8"慢", u8"怕", u8"磁", u8"倍", u8"祖", u8"皇", u8"促", u8"靜", u8"補", u8"評", u8"翻", u8"肉", u8"踐", u8"尼", u8"衣", u8"寬", u8"揚", u8"棉", u8"希", u8"傷", u8"操", u8"垂", u8"秋", u8"宜", u8"氫", u8"套", u8"督", u8"振", u8"架", u8"亮", u8"末", u8"憲", u8"慶", u8"編", u8"牛", u8"觸", u8"映", u8"雷", u8"銷", u8"詩", u8"座", u8"居", u8"抓", u8"裂", u8"胞", u8"呼", u8"娘", u8"景", u8"威", u8"綠", u8"晶", u8"厚", u8"盟", u8"衡", u8"雞", u8"孫", u8"延", u8"危", u8"膠", u8"屋", u8"鄉", u8"臨", u8"陸", u8"顧", u8"掉", u8"呀", u8"燈", u8"歲", u8"措", u8"束", u8"耐", u8"劇", u8"玉", u8"趙", u8"跳", u8"哥", u8"季", u8"課", u8"凱", u8"胡", u8"額", u8"款", u8"紹", u8"卷", u8"齊", u8"偉", u8"蒸", u8"殖", u8"永", u8"宗", u8"苗", u8"川", u8"爐", u8"岩", u8"弱", u8"零", u8"楊", u8"奏", u8"沿", u8"露", u8"桿", u8"探", u8"滑", u8"鎮", u8"飯", u8"濃", u8"航", u8"懷", u8"趕", u8"庫", u8"奪", u8"伊", u8"靈", u8"稅", u8"途", u8"滅", u8"賽", u8"歸", u8"召", u8"鼓", u8"播", u8"盤", u8"裁", u8"險", u8"康", u8"唯", u8"錄", u8"菌", u8"純", u8"借", u8"糖", u8"蓋", u8"橫", u8"符", u8"私", u8"努", u8"堂", u8"域", u8"槍", u8"潤", u8"幅", u8"哈", u8"竟", u8"熟", u8"蟲", u8"澤", u8"腦", u8"壤", u8"碳", u8"歐", u8"遍", u8"側", u8"寨", u8"敢", u8"徹", u8"慮", u8"斜", u8"薄", u8"庭", u8"納", u8"彈", u8"飼", u8"伸", u8"折", u8"麥", u8"濕", u8"暗", u8"荷", u8"瓦", u8"塞", u8"床", u8"築", u8"惡", u8"戶", u8"訪", u8"塔", u8"奇", u8"透", u8"梁", u8"刀", u8"旋", u8"跡", u8"卡", u8"氯", u8"遇", u8"份", u8"毒", u8"泥", u8"退", u8"洗", u8"擺", u8"灰", u8"彩", u8"賣", u8"耗", u8"夏", u8"擇", u8"忙", u8"銅", u8"獻", u8"硬", u8"予", u8"繁", u8"圈", u8"雪", u8"函", u8"亦", u8"抽", u8"篇", u8"陣", u8"陰", u8"丁", u8"尺", u8"追", u8"堆", u8"雄", u8"迎", u8"泛", u8"爸", u8"樓", u8"避", u8"謀", u8"噸", u8"野", u8"豬", u8"旗", u8"累", u8"偏", u8"典", u8"館", u8"索", u8"秦", u8"脂", u8"潮", u8"爺", u8"豆", u8"忽", u8"托", u8"驚", u8"塑", u8"遺", u8"愈", u8"朱", u8"替", u8"纖", u8"粗", u8"傾", u8"尚", u8"痛", u8"楚", u8"謝", u8"奮", u8"購", u8"磨", u8"君", u8"池", u8"旁", u8"碎", u8"骨", u8"監", u8"捕", u8"弟", u8"暴", u8"割", u8"貫", u8"殊", u8"釋", u8"詞", u8"亡", u8"壁", u8"頓", u8"寶", u8"午", u8"塵", u8"聞", u8"揭", u8"炮", u8"殘", u8"冬", u8"橋", u8"婦", u8"警", u8"綜", u8"招", u8"吳", u8"付", u8"浮", u8"遭", u8"徐", u8"您", u8"搖", u8"谷", u8"贊", u8"箱", u8"隔", u8"訂", u8"男", u8"吹", u8"園", u8"紛", u8"唐", u8"敗", u8"宋", u8"玻", u8"巨", u8"耕", u8"坦", u8"榮", u8"閉", u8"灣", u8"鍵", u8"凡", u8"駐", u8"鍋", u8"救", u8"恩", u8"剝", u8"凝", u8"鹼", u8"齒", u8"截", u8"煉", u8"麻", u8"紡", u8"禁", u8"廢", u8"盛", u8"版", u8"緩", u8"淨", u8"睛", u8"昌", u8"婚", u8"涉", u8"筒", u8"嘴", u8"插", u8"岸", u8"朗", u8"莊", u8"街", u8"藏", u8"姑", u8"貿", u8"腐", u8"奴", u8"啦", u8"慣", u8"乘", u8"夥", u8"恢", u8"勻", u8"紗", u8"扎", u8"辯", u8"耳", u8"彪", u8"臣", u8"億", u8"璃", u8"抵", u8"脈", u8"秀", u8"薩", u8"俄", u8"網", u8"舞", u8"店", u8"噴", u8"縱", u8"寸", u8"汗", u8"掛", u8"洪", u8"賀", u8"閃", u8"柬", u8"爆", u8"烯", u8"津", u8"稻", u8"牆", u8"軟", u8"勇", u8"像", u8"滾", u8"厘", u8"蒙", u8"芳", u8"肯", u8"坡", u8"柱", u8"盪", u8"腿", u8"儀", u8"旅", u8"尾", u8"軋", u8"冰", u8"貢", u8"登", u8"黎", u8"削", u8"鑽", u8"勒", u8"逃", u8"障", u8"氨", u8"郭", u8"峰", u8"幣", u8"港", u8"伏", u8"軌", u8"畝", u8"畢", u8"擦", u8"莫", u8"刺", u8"浪", u8"秘", u8"援", u8"株", u8"健", u8"售", u8"股", u8"島", u8"甘", u8"泡", u8"睡", u8"童", u8"鑄", u8"湯", u8"閥", u8"休", u8"匯", u8"舍", u8"牧", u8"繞", u8"炸", u8"哲", u8"磷", u8"績", u8"朋", u8"淡", u8"尖", u8"啟", u8"陷", u8"柴", u8"呈", u8"徒", u8"顏", u8"淚", u8"稍", u8"忘", u8"泵", u8"藍", u8"拖", u8"洞", u8"授", u8"鏡", u8"辛", u8"壯", u8"鋒", u8"貧", u8"虛", u8"彎", u8"摩", u8"泰", u8"幼", u8"廷", u8"尊", u8"窗", u8"綱", u8"弄", u8"隸", u8"疑", u8"氏", u8"宮", u8"姐", u8"震", u8"瑞", u8"怪", u8"尤", u8"琴", u8"循", u8"描", u8"膜", u8"違", u8"夾", u8"腰", u8"緣", u8"珠", u8"窮", u8"森", u8"枝", u8"竹", u8"溝", u8"催", u8"繩", u8"憶", u8"邦", u8"剩", u8"幸", u8"漿", u8"欄", u8"擁", u8"牙", u8"貯", u8"禮", u8"濾", u8"鈉", u8"紋", u8"罷", u8"拍", u8"咱", u8"喊", u8"袖", u8"埃", u8"勤", u8"罰", u8"焦", u8"潛", u8"伍", u8"墨", u8"欲", u8"縫", u8"姓", u8"刊", u8"飽", u8"仿", u8"獎", u8"鋁", u8"鬼", u8"麗", u8"跨", u8"默", u8"挖", u8"鏈", u8"掃", u8"喝", u8"袋", u8"炭", u8"污", u8"幕", u8"諸", u8"弧", u8"勵", u8"梅", u8"奶", u8"潔", u8"災", u8"舟", u8"鑑", u8"苯", u8"訟", u8"抱", u8"毀", u8"懂", u8"寒", u8"智", u8"埔", u8"寄", u8"屆", u8"躍", u8"渡", u8"挑", u8"丹", u8"艱", u8"貝", u8"碰", u8"拔", u8"爹", u8"戴", u8"碼", u8"夢", u8"芽", u8"熔", u8"赤", u8"漁", u8"哭", u8"敬", u8"顆", u8"奔", u8"鉛", u8"仲", u8"虎", u8"稀", u8"妹", u8"乏", u8"珍", u8"申", u8"桌", u8"遵", u8"允", u8"隆", u8"螺", u8"倉", u8"魏", u8"銳", u8"曉", u8"氮", u8"兼", u8"隱", u8"礙", u8"赫", u8"撥", u8"忠", u8"肅", u8"缸", u8"牽", u8"搶", u8"博", u8"巧", u8"殼", u8"兄", u8"杜", u8"訊", u8"誠", u8"碧", u8"祥", u8"柯", u8"頁", u8"巡", u8"矩", u8"悲", u8"灌", u8"齡", u8"倫", u8"票", u8"尋", u8"桂", u8"鋪", u8"聖", u8"恐", u8"恰", u8"鄭", u8"趣", u8"抬", u8"荒", u8"騰", u8"貼", u8"柔", u8"滴", u8"猛", u8"闊", u8"輛", u8"妻", u8"填", u8"撤", u8"儲", u8"簽", u8"鬧", u8"擾", u8"紫", u8"砂", u8"遞", u8"戲", u8"吊", u8"陶", u8"伐", u8"餵", u8"療", u8"瓶", u8"婆", u8"撫", u8"臂", u8"摸", u8"忍", u8"蝦", u8"蠟", u8"鄰", u8"胸", u8"鞏", u8"擠", u8"偶", u8"棄", u8"槽", u8"勁", u8"乳", u8"鄧", u8"吉", u8"仁", u8"爛", u8"磚", u8"租", u8"烏", u8"艦", u8"伴", u8"瓜", u8"淺", u8"丙", u8"暫", u8"燥", u8"橡", u8"柳", u8"迷", u8"暖", u8"牌", u8"秧", u8"膽", u8"詳", u8"簧", u8"踏", u8"瓷", u8"譜", u8"呆", u8"賓", u8"糊", u8"洛", u8"輝", u8"憤", u8"競", u8"隙", u8"怒", u8"粘", u8"乃", u8"緒", u8"肩", u8"籍", u8"敏", u8"塗", u8"熙", u8"皆", u8"偵", u8"懸", u8"掘", u8"享", u8"糾", u8"醒", u8"狂", u8"鎖", u8"淀", u8"恨", u8"牲", u8"霸", u8"爬", u8"賞", u8"逆", u8"玩", u8"陵", u8"祝", u8"秒", u8"浙", u8"貌", u8"役", u8"彼", u8"悉", u8"鴨", u8"趨", u8"鳳", u8"晨", u8"畜", u8"輩", u8"秩", u8"卵", u8"署", u8"梯", u8"炎", u8"灘", u8"棋", u8"驅", u8"篩", u8"峽", u8"冒", u8"啥", u8"壽", u8"譯", u8"浸", u8"泉", u8"帽", u8"遲", u8"矽", u8"疆", u8"貸", u8"漏", u8"稿", u8"冠", u8"嫩", u8"脅", u8"芯", u8"牢", u8"叛", u8"蝕", u8"奧", u8"鳴", u8"嶺", u8"羊", u8"憑", u8"串", u8"塘", u8"繪", u8"酵", u8"融", u8"盆", u8"錫", u8"廟", u8"籌", u8"凍", u8"輔", u8"攝", u8"襲", u8"筋", u8"拒", u8"僚", u8"旱", u8"鉀", u8"鳥", u8"漆", u8"沈", u8"眉", u8"疏", u8"添", u8"棒", u8"穗", u8"硝", u8"韓", u8"逼", u8"扭", u8"僑", u8"涼", u8"挺", u8"碗", u8"栽", u8"炒", u8"杯", u8"患", u8"餾", u8"勸", u8"豪", u8"遼", u8"勃", u8"鴻", u8"旦", u8"吏", u8"拜", u8"狗", u8"埋", u8"輥", u8"掩", u8"飲", u8"搬", u8"罵", u8"辭", u8"勾", u8"扣", u8"估", u8"蔣", u8"絨", u8"霧", u8"丈", u8"朵", u8"姆", u8"擬", u8"宇", u8"輯", u8"陝", u8"雕", u8"償", u8"蓄", u8"崇", u8"剪", u8"倡", u8"廳", u8"咬", u8"駛", u8"薯", u8"刷", u8"斥", u8"番", u8"賦", u8"奉", u8"佛", u8"澆", u8"漫", u8"曼", u8"扇", u8"鈣", u8"桃", u8"扶", u8"仔", u8"返", u8"俗", u8"虧", u8"腔", u8"鞋", u8"棱", u8"覆", u8"框", u8"悄", u8"叔", u8"撞", u8"騙", u8"勘", u8"旺", u8"沸", u8"孤", u8"吐", u8"孟", u8"渠", u8"屈", u8"疾", u8"妙", u8"惜", u8"仰", u8"狠", u8"脹", u8"諧", u8"拋", u8"黴", u8"桑", u8"崗", u8"嘛", u8"衰", u8"盜", u8"滲", u8"臟", u8"賴", u8"湧", u8"甜", u8"曹", u8"閱", u8"肌", u8"哩", u8"厲", u8"烴", u8"緯", u8"毅", u8"昨", u8"偽", u8"症", u8"煮", u8"嘆", u8"釘", u8"搭", u8"莖", u8"籠", u8"酷", u8"偷", u8"弓", u8"錐", u8"恆", u8"傑", u8"坑", u8"鼻", u8"翼", u8"綸", u8"敘", u8"獄", u8"逮", u8"罐", u8"絡", u8"棚", u8"抑", u8"膨", u8"蔬", u8"寺", u8"驟", u8"穆", u8"冶", u8"枯", u8"冊", u8"屍", u8"凸", u8"紳", u8"坯", u8"犧", u8"焰", u8"轟", u8"欣", u8"晉", u8"瘦", u8"禦", u8"錠", u8"錦", u8"喪", u8"旬", u8"鍛", u8"壟", u8"搜", u8"撲", u8"邀", u8"亭", u8"酯", u8"邁", u8"舒", u8"脆", u8"酶", u8"閒", u8"憂", u8"酚", u8"頑", u8"羽", u8"漲", u8"卸", u8"仗", u8"陪", u8"闢", u8"懲", u8"杭", u8"姚", u8"肚", u8"捉", u8"飄", u8"漂", u8"昆", u8"欺", u8"吾", u8"郎", u8"烷", u8"汁", u8"呵", u8"飾", u8"蕭", u8"雅", u8"郵", u8"遷", u8"燕", u8"撒", u8"姻", u8"赴", u8"宴", u8"煩", u8"債", u8"帳", u8"斑", u8"鈴", u8"旨", u8"醇", u8"董", u8"餅", u8"雛", u8"姿", u8"拌", u8"傅", u8"腹", u8"妥", u8"揉", u8"賢", u8"拆", u8"歪", u8"葡", u8"胺", u8"丟", u8"浩", u8"徽", u8"昂", u8"墊", u8"擋", u8"覽", u8"貪", u8"慰", u8"繳", u8"汪", u8"慌", u8"馮", u8"諾", u8"姜", u8"誼", u8"兇", u8"劣", u8"誣", u8"耀", u8"昏", u8"躺", u8"盈", u8"騎", u8"喬", u8"溪", u8"叢", u8"盧", u8"抹", u8"悶", u8"諮", u8"刮", u8"駕", u8"纜", u8"悟", u8"摘", u8"鉺", u8"擲", u8"頗", u8"幻", u8"柄", u8"惠", u8"慘", u8"佳", u8"仇", u8"臘", u8"窩", u8"滌", u8"劍", u8"瞧", u8"堡", u8"潑", u8"蔥", u8"罩", u8"霍", u8"撈", u8"胎", u8"蒼", u8"濱", u8"倆", u8"捅", u8"湘", u8"砍", u8"霞", u8"邵", u8"萄", u8"瘋", u8"淮", u8"遂", u8"熊", u8"糞", u8"烘", u8"宿", u8"檔", u8"戈", u8"駁", u8"嫂", u8"裕", u8"徙", u8"箭", u8"捐", u8"腸", u8"撐", u8"曬", u8"辨", u8"殿", u8"蓮", u8"攤", u8"攪", u8"醬", u8"屏", u8"疫", u8"哀", u8"蔡", u8"堵", u8"沫", u8"皺", u8"暢", u8"疊", u8"閣", u8"萊", u8"敲", u8"轄", u8"鉤", u8"痕", u8"壩", u8"巷", u8"餓", u8"禍", u8"丘", u8"玄", u8"溜", u8"曰", u8"邏", u8"彭", u8"嘗", u8"卿", u8"妨", u8"艇", u8"吞", u8"韋", u8"怨", u8"矮", u8"歇", } }; polyseed-1.0.0/src/polyseed.c000066400000000000000000000205371424320763700161320ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #include "polyseed.h" #include "dependency.h" #include "birthday.h" #include "features.h" #include "lang.h" #include "gf.h" #include "storage.h" #include #include #include #include #include #define KDF_NUM_ITERATIONS 10000 static void write_str(char** pos, const char* str) { char* loc = *pos; while (*str != '\0') { *loc = *str; ++str; ++loc; } *pos = loc; } static int str_split(char* str, polyseed_phrase words) { char* pos = str; char* word = str; int w = 0; /* split on space */ while (*pos != '\0') { while (*pos != '\0' && *pos != ' ') { ++pos; } words[w] = word; if (*pos != '\0') { *pos = '\0'; ++pos; } word = pos; ++w; if (w == POLYSEED_NUM_WORDS) { if (*pos != '\0') { ++w; /* too many words */ } break; } } return w; } polyseed_status polyseed_create(unsigned features, polyseed_data** seed_out) { CHECK_DEPS(); /* check features */ unsigned seed_features = make_features(features); if (!polyseed_features_supported(seed_features)) { return POLYSEED_ERR_UNSUPPORTED; } /* alocate memory */ polyseed_data* seed = ALLOC(sizeof(polyseed_data)); if (seed == NULL) { return POLYSEED_ERR_MEMORY; } /* create seed */ seed->birthday = birthday_encode(GET_TIME()); seed->features = seed_features; memset(seed->secret, 0, sizeof(seed->secret)); GET_RANDOM_BYTES(seed->secret, SECRET_SIZE); seed->secret[SECRET_SIZE - 1] &= CLEAR_MASK; /* encode polynomial */ gf_poly poly = { 0 }; polyseed_data_to_poly(seed, &poly); /* calculate checksum */ gf_poly_encode(&poly); seed->checksum = poly.coeff[0]; MEMZERO_LOC(poly); *seed_out = seed; return POLYSEED_OK; } void polyseed_free(polyseed_data* seed) { if (seed != NULL) { MEMZERO_PTR(seed, polyseed_data); FREE(seed); } } uint64_t polyseed_get_birthday(const polyseed_data* data) { assert(data != NULL); return birthday_decode(data->birthday); } unsigned polyseed_get_feature(const polyseed_data* seed, unsigned mask) { assert(seed != NULL); return get_features(seed->features, mask); } size_t polyseed_encode(const polyseed_data* data, const polyseed_lang* lang, polyseed_coin coin, polyseed_str str_out) { assert(data != NULL); assert(lang != NULL); assert((gf_elem)coin < GF_SIZE); assert(str_out != NULL); CHECK_DEPS(); /* encode polynomial with the existing checksum */ gf_poly poly = { 0 }; poly.coeff[0] = data->checksum; polyseed_data_to_poly(data, &poly); /* apply coin */ poly.coeff[POLY_NUM_CHECK_DIGITS] ^= coin; polyseed_str str_tmp; char* pos = str_tmp; int w; size_t str_size; #define WORD(i) lang->words[poly.coeff[i]] /* output words */ for (w = 0; w < POLYSEED_NUM_WORDS - 1; ++w) { write_str(&pos, WORD(w)); write_str(&pos, lang->separator); } write_str(&pos, WORD(w)); *pos = '\0'; str_size = pos - str_tmp; assert(str_size < POLYSEED_STR_SIZE); #undef WORD /* compose if needed by the language */ if (lang->compose) { str_size = UTF8_COMPOSE(str_tmp, str_out); assert(str_size < POLYSEED_STR_SIZE); } else { memcpy(str_out, str_tmp, str_size + 1); } MEMZERO_LOC(poly); MEMZERO_LOC(str_tmp); return str_size; } polyseed_status polyseed_decode(const char* str, polyseed_coin coin, const polyseed_lang** lang_out, polyseed_data** seed_out) { assert(str != NULL); assert((gf_elem)coin < GF_SIZE); assert(seed_out != NULL); CHECK_DEPS(); polyseed_str str_tmp; polyseed_phrase words; gf_poly poly = { 0 }; polyseed_status res; polyseed_data* seed; /* canonical decomposition */ size_t str_size = UTF8_DECOMPOSE(str, str_tmp); assert(str_size < POLYSEED_STR_SIZE); /* split into words */ if (str_split(str_tmp, words) != POLYSEED_NUM_WORDS) { res = POLYSEED_ERR_NUM_WORDS; goto cleanup; } /* decode words into polynomial coefficients */ if (!polyseed_phrase_decode(words, poly.coeff, lang_out)) { res = POLYSEED_ERR_LANG; goto cleanup; } /* finalize polynomial */ poly.coeff[POLY_NUM_CHECK_DIGITS] ^= coin; /* checksum */ if (!gf_poly_check(&poly)) { res = POLYSEED_ERR_CHECKSUM; goto cleanup; } /* alocate memory */ seed = ALLOC(sizeof(polyseed_data)); if (seed == NULL) { res = POLYSEED_ERR_MEMORY; goto cleanup; } /* decode polynomial into seed data */ polyseed_poly_to_data(&poly, seed); /* check features */ if (!polyseed_features_supported(seed->features)) { polyseed_free(seed); res = POLYSEED_ERR_UNSUPPORTED; goto cleanup; } *seed_out = seed; res = POLYSEED_OK; cleanup: MEMZERO_LOC(str_tmp); MEMZERO_LOC(words); MEMZERO_LOC(poly); return res; } static inline void store32(uint8_t* p, uint32_t u) { *p++ = (uint8_t)u; u >>= 8; *p++ = (uint8_t)u; u >>= 8; *p++ = (uint8_t)u; u >>= 8; *p++ = (uint8_t)u; } void polyseed_keygen(const polyseed_data* seed, polyseed_coin coin, size_t key_size, uint8_t* key_out) { assert(seed != NULL); assert((gf_elem)coin < GF_SIZE); assert(key_out != NULL); CHECK_DEPS(); uint8_t salt[32] = "POLYSEED key"; salt[13] = 0xff; salt[14] = 0xff; salt[15] = 0xff; store32(&salt[16], coin); /* domain separate by coin */ store32(&salt[20], seed->birthday); /* domain separate by birthday */ store32(&salt[24], seed->features); /* domain separate by features */ PBKDF2_SHA256(seed->secret, SECRET_BUFFER_SIZE, salt, sizeof(salt), KDF_NUM_ITERATIONS, key_out, key_size); } void polyseed_store(const polyseed_data* seed, polyseed_storage storage) { assert(seed != NULL); assert(storage != NULL); polyseed_data_store(seed, storage); } polyseed_status polyseed_load(const polyseed_storage storage, polyseed_data** seed_out) { assert(storage != NULL); assert(seed_out != NULL); gf_poly poly = { 0 }; polyseed_status res; polyseed_data* seed; /* alocate memory */ seed = ALLOC(sizeof(polyseed_data)); if (seed == NULL) { return POLYSEED_ERR_MEMORY; } /* deserialize data */ res = polyseed_data_load(storage, seed); if (res != POLYSEED_OK) { polyseed_free(seed); return res; } /* encode polynomial with the existing checksum */ poly.coeff[0] = seed->checksum; polyseed_data_to_poly(seed, &poly); /* checksum */ if (!gf_poly_check(&poly)) { polyseed_free(seed); res = POLYSEED_ERR_CHECKSUM; goto cleanup; } /* check features */ if (!polyseed_features_supported(seed->features)) { polyseed_free(seed); res = POLYSEED_ERR_UNSUPPORTED; goto cleanup; } res = POLYSEED_OK; *seed_out = seed; cleanup: MEMZERO_LOC(poly); return res; } void polyseed_crypt(polyseed_data* seed, const char* password) { assert(seed != NULL); assert(password != NULL); polyseed_str pass_norm; /* normalize password */ size_t str_size = UTF8_DECOMPOSE(password, pass_norm); assert(str_size < POLYSEED_STR_SIZE); /* derive an encryption mask */ uint8_t mask[32]; char salt[16] = "POLYSEED mask"; salt[14] = 0xff; salt[15] = 0xff; PBKDF2_SHA256(pass_norm, str_size, salt, sizeof(salt), KDF_NUM_ITERATIONS, mask, sizeof(mask)); /* apply mask */ for (int i = 0; i < SECRET_SIZE; ++i) { seed->secret[i] ^= mask[i]; } seed->secret[SECRET_SIZE - 1] &= CLEAR_MASK; seed->features ^= ENCRYPTED_MASK; gf_poly poly = { 0 }; /* encode polynomial */ polyseed_data_to_poly(seed, &poly); /* calculate new checksum */ gf_poly_encode(&poly); seed->checksum = poly.coeff[0]; MEMZERO_LOC(poly); MEMZERO_LOC(mask); MEMZERO_LOC(pass_norm); } int polyseed_is_encrypted(const polyseed_data* seed) { assert(seed != NULL); return is_encrypted(seed->features) ? 1 : 0; } polyseed-1.0.0/src/storage.c000066400000000000000000000041111424320763700157400ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #include "polyseed.h" #include "storage.h" #include "birthday.h" #include "features.h" #include "gf.h" #include #include #define STORAGE_HEADER "POLYSEED" #define HEADER_SIZE 8 #define EXTRA_BYTE 0xFF #define STORAGE_FOOTER 0x7000 static inline void store16(uint8_t* p, uint16_t u) { *p++ = (uint8_t)u; u >>= 8; *p++ = (uint8_t)u; } static inline uint16_t load16(const uint8_t* p) { uint16_t val = *p++; val |= ((uint16_t)*p) << 8; return val; } void polyseed_data_store(const polyseed_data* data, polyseed_storage storage) { uint8_t* pos = storage; memcpy(pos, STORAGE_HEADER, HEADER_SIZE); pos += HEADER_SIZE; store16(pos, data->features << DATE_BITS | data->birthday); pos += 2; memcpy(pos, data->secret, SECRET_SIZE); pos += SECRET_SIZE; pos[0] = EXTRA_BYTE; ++pos; store16(pos, STORAGE_FOOTER | data->checksum); } polyseed_status polyseed_data_load(const polyseed_storage storage, polyseed_data* data) { const uint8_t* pos = storage; if (0 != memcmp(pos, STORAGE_HEADER, HEADER_SIZE)) { /* Wrong header */ return POLYSEED_ERR_FORMAT; } pos += HEADER_SIZE; uint16_t v1 = load16(pos); data->birthday = v1 & DATE_MASK; v1 >>= DATE_BITS; if (v1 > FEATURE_MASK) { /* Top bit of v1 was not zero */ return POLYSEED_ERR_FORMAT; } data->features = v1; pos += 2; memset(data->secret, 0, sizeof(data->secret)); memcpy(data->secret, pos, SECRET_SIZE); if (pos[SECRET_SIZE - 1] & ~CLEAR_MASK) { /* Secret is more than SECRET_BITS long */ return POLYSEED_ERR_FORMAT; } pos += SECRET_SIZE; if (pos[0] != EXTRA_BYTE) { /* Wrong extra byte */ return POLYSEED_ERR_FORMAT; } ++pos; uint16_t v2 = load16(pos); data->checksum = v2 & GF_MASK; v2 &= ~GF_MASK; if (v2 != STORAGE_FOOTER) { /* Wrong footer */ return POLYSEED_ERR_FORMAT; } return POLYSEED_OK; } polyseed-1.0.0/src/storage.h000066400000000000000000000017431424320763700157550ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifndef STORAGE_H #define STORAGE_H #include "gf.h" #include #define SECRET_BUFFER_SIZE 32 #define SECRET_BITS 150 #define SECRET_SIZE (SECRET_BITS + CHAR_BIT - 1) / CHAR_BIT /* 19 */ #define CLEAR_BITS (SECRET_SIZE) * (CHAR_BIT) - (SECRET_BITS) /* 2 */ #define CLEAR_MASK ~(uint8_t)(((1u << (CLEAR_BITS)) - 1) << (CHAR_BIT - (CLEAR_BITS))) #define TOTAL_BITS GF_BITS * POLYSEED_NUM_WORDS /* Seed data structure for serialization */ typedef struct polyseed_data { unsigned birthday; unsigned features; /* padded with zeroes for future compatibility with longer seeds */ uint8_t secret[SECRET_BUFFER_SIZE]; gf_elem checksum; } polyseed_data; POLYSEED_PRIVATE void polyseed_data_store(const polyseed_data* data, polyseed_storage storage); POLYSEED_PRIVATE polyseed_status polyseed_data_load(const polyseed_storage storage, polyseed_data* data); #endif polyseed-1.0.0/tests/000077500000000000000000000000001424320763700145065ustar00rootroot00000000000000polyseed-1.0.0/tests/tests.c000066400000000000000000000617341424320763700160270ustar00rootroot00000000000000/* Copyright (c) 2020-2021 tevador */ /* See LICENSE for licensing information */ #ifdef NDEBUG #undef NDEBUG #endif #include #include #include #include #include #include #include #include #include typedef bool test_func(void); typedef void multitest_func(void); static int g_test_no = 0; #define SEED_TIME1 ((time_t)1638446400) /* Dec 2021 */ #define SEED_TIME2 ((time_t)3118651200) /* Oct 2068 */ #define SEED_TIME3 ((time_t)4305268800) /* Jun 2106 */ #define FEATURE_FOO 1 #define FEATURE_BAR 2 #define FEATURE_QUX 4 static int g_num_langs; static int g_num_allocs; static polyseed_data* g_seed1; static polyseed_data* g_seed2; static polyseed_data* g_seed3; static polyseed_storage g_store1; static polyseed_storage g_store2; static polyseed_storage g_store3; static const char* g_phrase_en1 = "raven tail swear infant grief assist regular lamp " "duck valid someone little harsh puppy airport language"; static const char* g_phrase_en2 = "rave tail swea infan grie assi regul lamp " "duck vali some litt hars pupp airp langua"; static const char* g_phrase_en3 = "ravexxx tail swea infan grie assi regul lamp " "duck vali some litt hars pupp airp langua"; static const char* g_phrase_en4 = "raven tail swear infantile grief assist regular lamp " "duck valid someone little harsh puppy airport language"; static const char* g_phrase_en5 = "raven tail swear infant grief assist regular lamp " "duck valid someone little harsh puppy airport language "; static const char* g_phrase_es1 = u8"eje fin parte célebre tabú pestaña lienzo puma " u8"prisión hora regalo lengua existir lápiz lote sonoro"; static const char* g_phrase_es2 = "eje fin parte celebre tabu pestana lienzo puma " "prision hora regalo lengua existir lapiz lote sonoro"; static const char* g_phrase_es3 = "eje fin part cele tabu pest lien puma " "pris hora rega leng exis lapi lote sono"; static const char* g_phrase_es4 = "ejexxx fin part cele tabu pest lien puma " "pris hora rega leng exis lapi lote sono"; static const char* g_phrase_es5 = "eje fin part cele tab pest lien puma " "pris hora rega leng exis lapi lote sono"; static const char* g_phrase_garbage1 = "xxx xxx"; static const char* g_phrase_garbage2 = "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx " "xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx "; static const char* g_test_pass = "password"; static const uint8_t g_test_mask[] = { 0x54, 0x4a, 0x88, 0x95, 0xff, 0xc0, 0x45, 0x1c, 0x9b, 0x8e, 0x28, 0x1e, 0x18, 0x2d, 0x0d, 0x73, 0x63, 0x7d, 0x1b, 0xd7, 0xcb, 0x6e, 0xed, 0x8f, 0x84, 0x35, 0xb3, 0x13, 0x8c, 0x0c, 0xf0, 0x4e, }; static polyseed_str g_phrase_out; static const polyseed_lang* g_lang_en; static const polyseed_lang* g_lang_es; #define RUN_TEST(x) run_test(#x, &x) #define RUN_MULT(x) run_multitest(#x, &x) static void run_test(const char* name, test_func* func) { printf("[%2i] %-40s ... ", ++g_test_no, name); printf(func() ? "PASSED\n" : "SKIPPED\n"); } static void run_multitest(const char* name, multitest_func* func) { printf("[%2i] %s\n", ++g_test_no, name); func(); } static void subtest_begin(const char* name) { printf(" %-40s ... ", name); } static void subtest_end(bool passed) { printf(passed ? "PASSED\n" : "SKIPPED\n"); } static void output_hex(const char* data, size_t length) { for (unsigned i = 0; i < length; ++i) printf("%02x", data[i] & 0xff); } static inline char parse_nibble(char hex) { hex &= ~0x20; return (hex & 0x40) ? hex - ('A' - 10) : hex & 0xf; } static inline bool equals_hex(const void* bin, const char* hex) { size_t hexlen = strlen(hex); assert((hexlen % 2) == 0); const char* pbin = bin; for (int i = 0; i < hexlen; i += 2) { char nibble1 = parse_nibble(*hex++); char nibble2 = parse_nibble(*hex++); uint8_t val = (uint8_t)*pbin++; uint8_t ref = (uint8_t)nibble1 << 4 | nibble2; if (val != ref) { return false; } } return true; } static const polyseed_lang* get_lang(const char* name) { int count = polyseed_get_num_langs(); for (int i = 0; i < count; ++i) { const polyseed_lang* lang = polyseed_get_lang(i); if (0 == strcmp(polyseed_get_lang_name_en(lang), name)) { return lang; } } return NULL; } #define TEST_KEYLEN 32 static const char rand_bytes1[] = { 0xdd, 0x76, 0xe7, 0x35, 0x9a, 0x0d, 0xed, 0x37, 0xcd, 0x0f, 0xf0, 0xf3, 0xc8, 0x29, 0xa5, 0xae, 0x01, 0x67, 0xf3, }; static void gen_rand_bytes1(void* result, size_t n) { assert(n == sizeof(rand_bytes1)); memcpy(result, rand_bytes1, sizeof(rand_bytes1)); } static const char rand_bytes2[] = { 0x5a, 0x2b, 0x02, 0xdf, 0x7d, 0xb2, 0x1f, 0xcb, 0xe6, 0xec, 0x6d, 0xf1, 0x37, 0xd5, 0x4c, 0x7b, 0x20, 0xfd, 0x2b, }; static void gen_rand_bytes2(void* result, size_t n) { assert(n == sizeof(rand_bytes2)); memcpy(result, rand_bytes2, sizeof(rand_bytes2)); } static const char rand_bytes3[] = { 0x67, 0xb9, 0x36, 0xdf, 0xa4, 0xda, 0x6a, 0xe8, 0xd3, 0xb3, 0xcd, 0xb3, 0xb9, 0x37, 0xf4, 0x02, 0x7b, 0x0e, 0x3b, }; static void gen_rand_bytes3(void* result, size_t n) { assert(n == sizeof(rand_bytes3)); memcpy(result, rand_bytes3, sizeof(rand_bytes3)); } static void pbkdf2_dummy1(const uint8_t* pw, size_t pwlen, const uint8_t* salt, size_t saltlen, uint64_t iterations, uint8_t* key, size_t keylen) { assert(equals_hex(pw, "dd76e7359a0ded37cd0ff0f3c829a5ae01673300000000000000000000000000")); assert(equals_hex(salt, "504f4c5953454544206b657900ffffff00000000010000000000000000000000")); } static void pbkdf2_dummy2(const uint8_t* pw, size_t pwlen, const uint8_t* salt, size_t saltlen, uint64_t iterations, uint8_t* key, size_t keylen) { assert(equals_hex(pw, "5a2b02df7db21fcbe6ec6df137d54c7b20fd2b00000000000000000000000000")); assert(equals_hex(salt, "504f4c5953454544206b657900ffffff00000000330200000000000000000000")); } static void pbkdf2_dummy3(const uint8_t* pw, size_t pwlen, const uint8_t* salt, size_t saltlen, uint64_t iterations, uint8_t* key, size_t keylen) { if (saltlen == 32) { assert(equals_hex(pw, "67b936dfa4da6ae8d3b3cdb3b937f4027b0e3b00000000000000000000000000")); assert(equals_hex(salt, "504f4c5953454544206b657900ffffff01000000f70300000100000000000000")); } else { /* encryption mask */ assert(equals_hex(pw, "70617373776f7264")); assert(equals_hex(salt, "504f4c5953454544206d61736b00ffff")); assert(keylen == sizeof(g_test_mask)); memcpy(key, g_test_mask, keylen); } } static size_t u8_nfc_donothing(const char* str, polyseed_str norm) { /* do not compose */ strncpy(norm, str, POLYSEED_STR_SIZE); return POLYSEED_STR_SIZE - 1; } static size_t u8_nfkd_spaces(const char* str, polyseed_str norm) { /* normalize only ideographic spaces to allow Japanese phrases to roundtrip */ int i = 0; for (; i < POLYSEED_STR_SIZE - 1 && *str != '\0'; ++i) { if (str[0] == '\xe3' && str[1] == '\x80' && str[2] == '\x80') { norm[i] = ' '; str += 3; } else { norm[i] = *str; ++str; } } norm[i] = '\0'; return i; } static time_t time1(time_t* t) { return SEED_TIME1; } static time_t time2(time_t* t) { return SEED_TIME2; } static time_t time3(time_t* t) { return SEED_TIME3; } static void do_not_zero(void* const ptr, const size_t n) { /* do nothing */ } static void* count_alloc(size_t n) { g_num_allocs++; return malloc(n); } static void count_free(void* ptr) { g_num_allocs--; free(ptr); } static void* alloc_fail(size_t n) { return NULL; } static void check_key(polyseed_data* data, polyseed_coin coin) { char key[TEST_KEYLEN]; polyseed_keygen(data, coin, TEST_KEYLEN, key); } static void check_features(polyseed_data* seed, bool foo, bool bar, bool qux) { unsigned foo1 = polyseed_get_feature(seed, FEATURE_FOO); assert((foo1 != 0) == foo); unsigned bar1 = polyseed_get_feature(seed, FEATURE_BAR); assert((bar1 != 0) == bar); unsigned qux1 = polyseed_get_feature(seed, FEATURE_QUX); assert((qux1 != 0) == qux); } static bool test_inject1(void) { const polyseed_dependency deps = { .randbytes = &gen_rand_bytes1, .pbkdf2_sha256 = &pbkdf2_dummy1, .u8_nfc = &u8_nfc_donothing, .u8_nfkd = &u8_nfkd_spaces, .time = &time1, .memzero = &do_not_zero, .alloc = &count_alloc, .free = &count_free, }; polyseed_inject(&deps); return true; } static bool test_num_langs(void) { g_num_langs = polyseed_get_num_langs(); assert(g_num_langs > 0); return true; } static bool test_get_lang(void) { for (int i = 0; i < g_num_langs; ++i) { const polyseed_lang* lang = polyseed_get_lang(i); assert(lang != NULL); } return true; } static void test_get_lang_name(void) { for (int i = 0; i < g_num_langs; ++i) { const polyseed_lang* lang = polyseed_get_lang(i); subtest_begin(polyseed_get_lang_name_en(lang)); assert(polyseed_get_lang_name(lang) != NULL); assert(polyseed_get_lang_name_en(lang) != NULL); subtest_end(true); } } static bool test_create1(void) { polyseed_status status = polyseed_create(0, &g_seed1); assert(status == POLYSEED_OK); assert(g_seed1 != NULL); return true; } static bool test_birthday1(void) { uint64_t birthday = polyseed_get_birthday(g_seed1); assert(birthday <= SEED_TIME1); assert(birthday + 2630000 > SEED_TIME1); return true; } static bool test_features1(void) { check_features(g_seed1, false, false, false); polyseed_data* seed; polyseed_status status; status = polyseed_create(FEATURE_FOO, &seed); assert(status == POLYSEED_ERR_UNSUPPORTED); status = polyseed_create(FEATURE_BAR, &seed); assert(status == POLYSEED_ERR_UNSUPPORTED); status = polyseed_create(FEATURE_QUX, &seed); assert(status == POLYSEED_ERR_UNSUPPORTED); return true; } static bool test_keygen1(void) { check_key(g_seed1, POLYSEED_MONERO); return true; } static bool test_store_load1(void) { polyseed_store(g_seed1, g_store1); polyseed_data* seed; polyseed_status res = polyseed_load(g_store1, &seed); assert(res == POLYSEED_OK); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_format(void) { for (int i = 0; i < POLYSEED_SIZE; ++i) { for (int j = 0; j < CHAR_BIT; ++j) { /* flip j-th bit of the i-th byte */ uint8_t mask = 1u << j; g_store1[i] ^= mask; polyseed_data* seed; polyseed_status res = polyseed_load(g_store1, &seed); assert(res != POLYSEED_OK); g_store1[i] ^= mask; } } return true; } static bool test_encode_en(void) { g_lang_en = get_lang("English"); if (g_lang_en == NULL) { return false; } polyseed_encode(g_seed1, g_lang_en, POLYSEED_MONERO, g_phrase_out); assert(0 == strcmp(g_phrase_out, g_phrase_en1)); return true; } static bool test_load_encode_en(void) { g_lang_en = get_lang("English"); if (g_lang_en == NULL) { return false; } polyseed_data* seed; polyseed_status res = polyseed_load(g_store1, &seed); assert(res == POLYSEED_OK); polyseed_encode(seed, g_lang_en, POLYSEED_MONERO, g_phrase_out); assert(0 == strcmp(g_phrase_out, g_phrase_en1)); polyseed_free(seed); return true; } static bool test_decode_en(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en1, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_en); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_en_prefix(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en2, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_en); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_en_suffix1(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en3, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_LANG); return true; } static bool test_decode_en_suffix2(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en4, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_LANG); return true; } static bool test_decode_en_space(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en5, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_en); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_en_coin(void) { if (g_lang_en == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_en1, POLYSEED_AEON, &lang, &seed); assert(res == POLYSEED_ERR_CHECKSUM); return true; } static void test_roundtrip1(void) { for (int i = 0; i < g_num_langs; ++i) { const polyseed_lang* lang = polyseed_get_lang(i); subtest_begin(polyseed_get_lang_name_en(lang)); const polyseed_lang* lang_out; polyseed_str phrase; polyseed_data* seed; polyseed_encode(g_seed1, lang, POLYSEED_MONERO, phrase); polyseed_status res = polyseed_decode(phrase, POLYSEED_MONERO, &lang_out, &seed); assert(res == POLYSEED_OK); assert(lang == lang_out); check_features(seed, false, false, false); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); subtest_end(true); } } static bool test_free1(void) { polyseed_free(g_seed1); return true; } static bool test_free_null(void) { polyseed_free(NULL); return true; } static bool test_inject2(void) { const polyseed_dependency deps = { .randbytes = &gen_rand_bytes2, .pbkdf2_sha256 = &pbkdf2_dummy2, .u8_nfc = &u8_nfc_donothing, .u8_nfkd = &u8_nfkd_spaces, .time = &time2, .memzero = &do_not_zero, .alloc = &count_alloc, .free = &count_free, }; polyseed_inject(&deps); return true; } static bool test_create2(void) { polyseed_status status = polyseed_create(0, &g_seed2); assert(status == POLYSEED_OK); assert(g_seed2 != NULL); return true; } static bool test_birthday2(void) { uint64_t birthday = polyseed_get_birthday(g_seed2); assert(birthday <= SEED_TIME2); assert(birthday + 2630000 > SEED_TIME2); return true; } static bool test_features2(void) { check_features(g_seed2, false, false, false); int num_features; polyseed_data* seed; polyseed_status status; num_features = polyseed_enable_features(FEATURE_FOO | FEATURE_BAR | FEATURE_QUX); assert(num_features == 3); status = polyseed_create(FEATURE_FOO, &seed); assert(status == POLYSEED_OK); check_features(seed, true, false, false); polyseed_free(seed); status = polyseed_create(FEATURE_BAR, &seed); assert(status == POLYSEED_OK); check_features(seed, false, true, false); polyseed_free(seed); status = polyseed_create(FEATURE_QUX, &seed); assert(status == POLYSEED_OK); check_features(seed, false, false, true); polyseed_free(seed); num_features = polyseed_enable_features(0); assert(num_features == 0); return true; } static bool test_keygen2(void) { check_key(g_seed2, POLYSEED_MONERO); return true; } static bool test_store_load2(void) { polyseed_store(g_seed2, g_store2); polyseed_data* seed; polyseed_status res = polyseed_load(g_store2, &seed); assert(res == POLYSEED_OK); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_encode_es(void) { g_lang_es = get_lang("Spanish"); if (g_lang_es == NULL) { return false; } polyseed_encode(g_seed2, g_lang_es, POLYSEED_MONERO, g_phrase_out); assert(0 == strcmp(g_phrase_out, g_phrase_es1)); return true; } static bool test_decode_es(void) { if (g_lang_es == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_out, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_es); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_es_noaccent(void) { if (g_lang_es == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_es2, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_es); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_es_prefix1(void) { if (g_lang_es == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_es3, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_OK); assert(lang == g_lang_es); check_key(seed, POLYSEED_MONERO); polyseed_free(seed); return true; } static bool test_decode_es_suffix(void) { if (g_lang_es == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_es4, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_LANG); return true; } static bool test_decode_es_prefix2(void) { if (g_lang_es == NULL) { return false; } const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_es5, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_LANG); return true; } static bool test_free2(void) { polyseed_free(g_seed2); return true; } static bool test_inject3(void) { const polyseed_dependency dep = { .randbytes = &gen_rand_bytes3, .pbkdf2_sha256 = &pbkdf2_dummy3, .u8_nfc = &u8_nfc_donothing, .u8_nfkd = &u8_nfkd_spaces, .time = &time3, .memzero = &do_not_zero, .alloc = &count_alloc, .free = &count_free, }; polyseed_inject(&dep); return true; } static bool test_features3a(void) { int num_features = polyseed_enable_features(FEATURE_FOO | FEATURE_QUX); assert(num_features == 2); polyseed_data* seed; polyseed_status status; status = polyseed_create(FEATURE_FOO, &seed); assert(status == POLYSEED_OK); polyseed_free(seed); status = polyseed_create(FEATURE_BAR, &seed); assert(status == POLYSEED_ERR_UNSUPPORTED); status = polyseed_create(FEATURE_QUX, &seed); assert(status == POLYSEED_OK); polyseed_free(seed); return true; } static bool test_create3(void) { polyseed_status status = polyseed_create(FEATURE_FOO, &g_seed3); assert(status == POLYSEED_OK); assert(g_seed3 != NULL); return true; } static bool test_features3b(void) { check_features(g_seed3, true, false, false); return true; } static bool test_birthday3(void) { uint64_t birthday = polyseed_get_birthday(g_seed3); assert(birthday <= SEED_TIME3); assert(birthday + 2630000 > SEED_TIME3); return true; } static bool test_keygen3(void) { check_key(g_seed3, POLYSEED_AEON); return true; } static bool test_store_load3(void) { polyseed_store(g_seed3, g_store3); polyseed_data* seed; polyseed_status res = polyseed_load(g_store3, &seed); assert(res == POLYSEED_OK); check_key(seed, POLYSEED_AEON); polyseed_free(seed); return true; } static void test_roundtrip3(void) { for (int i = 0; i < g_num_langs; ++i) { const polyseed_lang* lang = polyseed_get_lang(i); subtest_begin(polyseed_get_lang_name_en(lang)); const polyseed_lang* lang_out; polyseed_str phrase; polyseed_data* seed; polyseed_encode(g_seed3, lang, POLYSEED_AEON, phrase); polyseed_status res = polyseed_decode(phrase, POLYSEED_AEON, &lang_out, &seed); assert(res == POLYSEED_OK); assert(lang == lang_out); check_features(seed, true, false, false); check_key(seed, POLYSEED_AEON); polyseed_free(seed); subtest_end(true); } } static bool test_encrypt(void) { if (g_lang_en == NULL) { return false; } assert(!polyseed_is_encrypted(g_seed3)); polyseed_crypt(g_seed3, g_test_pass); assert(polyseed_is_encrypted(g_seed3)); polyseed_encode(g_seed3, g_lang_en, POLYSEED_AEON, g_phrase_out); return true; } static bool test_decrypt(void) { if (g_lang_en == NULL) { return false; } polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_out, POLYSEED_AEON, NULL, &seed); assert(res == POLYSEED_OK); assert(polyseed_is_encrypted(seed)); polyseed_crypt(seed, g_test_pass); assert(!polyseed_is_encrypted(seed)); check_key(seed, POLYSEED_AEON); polyseed_free(seed); return true; } static bool test_free3(void) { polyseed_free(g_seed3); return true; } static bool test_decode_garbage1(void) { const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_garbage1, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_NUM_WORDS); return true; } static bool test_decode_garbage2(void) { const polyseed_lang* lang; polyseed_data* seed; polyseed_status res = polyseed_decode(g_phrase_garbage2, POLYSEED_MONERO, &lang, &seed); assert(res == POLYSEED_ERR_NUM_WORDS); return true; } static bool test_memleak(void) { assert(g_num_allocs == 0); return true; } static bool test_inject4(void) { const polyseed_dependency dep = { .randbytes = &gen_rand_bytes3, .pbkdf2_sha256 = &pbkdf2_dummy3, .u8_nfc = &u8_nfc_donothing, .u8_nfkd = &u8_nfkd_spaces, .memzero = &do_not_zero, .alloc = &alloc_fail, }; polyseed_inject(&dep); return true; } static bool test_out_of_memory1(void) { polyseed_data* seed; polyseed_status res = polyseed_create(0, &seed); assert(res == POLYSEED_ERR_MEMORY); return true; } static bool test_out_of_memory2(void) { polyseed_data* seed; polyseed_status res = polyseed_load(g_store3, &seed); assert(res == POLYSEED_ERR_MEMORY); return true; } int main() { RUN_TEST(test_inject1); RUN_TEST(test_num_langs); RUN_TEST(test_get_lang); RUN_MULT(test_get_lang_name); RUN_TEST(test_create1); RUN_TEST(test_birthday1); RUN_TEST(test_features1); RUN_TEST(test_keygen1); RUN_TEST(test_store_load1); RUN_TEST(test_format); RUN_TEST(test_encode_en); RUN_TEST(test_load_encode_en); RUN_TEST(test_decode_en); RUN_TEST(test_decode_en_prefix); RUN_TEST(test_decode_en_suffix1); RUN_TEST(test_decode_en_suffix2); RUN_TEST(test_decode_en_space); RUN_TEST(test_decode_en_coin); RUN_MULT(test_roundtrip1); RUN_TEST(test_free1); RUN_TEST(test_free_null); RUN_TEST(test_inject2); RUN_TEST(test_create2); RUN_TEST(test_birthday2); RUN_TEST(test_features2); RUN_TEST(test_keygen2); RUN_TEST(test_store_load2); RUN_TEST(test_encode_es); RUN_TEST(test_decode_es); RUN_TEST(test_decode_es_noaccent); RUN_TEST(test_decode_es_prefix1); RUN_TEST(test_decode_es_suffix); RUN_TEST(test_decode_es_prefix2); RUN_TEST(test_free2); RUN_TEST(test_inject3); RUN_TEST(test_features3a); RUN_TEST(test_create3); RUN_TEST(test_features3b); RUN_TEST(test_birthday3); RUN_TEST(test_keygen3); RUN_TEST(test_store_load3); RUN_MULT(test_roundtrip3); RUN_TEST(test_encrypt); RUN_TEST(test_decrypt); RUN_TEST(test_free3); RUN_TEST(test_decode_garbage1); RUN_TEST(test_decode_garbage2); RUN_TEST(test_memleak); RUN_TEST(test_inject4); RUN_TEST(test_out_of_memory1); RUN_TEST(test_out_of_memory2); printf("\nAll tests were successful\n"); return 0; }