Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/devel' into feature/endpoint-whi…
Browse files Browse the repository at this point in the history
…telisting

* origin/devel: (80 commits)
  Feature/aql subquery execution block impl execute implementation batch sub queries (#11318)
  Fix isAdminUser. (#11326)
  Bug fix/fixes 20200318 (#11319)
  updated CHANGELOG
  Feature/out of search in range (#11324)
  fix "fix" for collection figures (#11323)
  updated CHANGELOG
  compilation fixes for clang-10s more strict checking (#11316)
  fix failing query (#11317)
  KShortestPathsExecutor must reset its KShortestPathFinder, including all caches. (#11312)
  Feature/aql subquery execution block impl execute implementation expected number of rows (#11274)
  Add DTRACE points to measure request timings. (#11245)
  USE_STRICT_OPENSSL is Off by default
  Fix usesRevisionAsDocumentId population and add syncByRevision flag (#11314)
  Traversal Bugfix  (#11310)
  Bug fix/issue 11275 (#11299)
  added simple test (#11301)
  Fix some typos (#10173)
  Documentation/typos 2020-01-24 (#10975)
  Update CHANGELOG
  ...
  • Loading branch information
ObiWahn committed Mar 25, 2020
2 parents 53c245f + 096dd9b commit a399f3c
Show file tree
Hide file tree
Showing 1,012 changed files with 85,235 additions and 31,409 deletions.
2 changes: 2 additions & 0 deletions 3rdParty/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/zlib/zlib-1.2.11)

set(SNAPPY_VERSION "1.1.7")
set(SNAPPY_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/snappy/snappy-${SNAPPY_VERSION}")
set(SNAPPY_SOURCE_DIR "${SNAPPY_SOURCE_DIR}" PARENT_SCOPE)
set(SNAPPY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/snappy/snappy-${SNAPPY_VERSION}")
set(SNAPPY_BUILD_DIR "${SNAPPY_BUILD_DIR}" PARENT_SCOPE)
set(SNAPPY_LIB "snappy")
set(SNAPPY_LIB "${SNAPPY_LIB}" PARENT_SCOPE)
add_subdirectory(${SNAPPY_SOURCE_DIR} EXCLUDE_FROM_ALL)
Expand Down
8 changes: 6 additions & 2 deletions 3rdParty/date/include/date/date.h
Original file line number Diff line number Diff line change
Expand Up @@ -7330,9 +7330,13 @@ parse(const CharT* format, Parsable& tp,

namespace detail
{

// [tobias, 2020-03-10] I added the check
// !defined(_MSC_VER)
// because this block does not compile with MSVC (at least MSVC 16 2019 / _MSC_VER = 1923).
// If it works at some point, add `|| _MSC_VER > ...`.
#if __cplusplus >= 201402 && (!defined(__EDG_VERSION__) || __EDG_VERSION__ > 411) \
&& (!defined(__SUNPRO_CC) || __SUNPRO_CC > 0x5150)
&& (!defined(__SUNPRO_CC) || __SUNPRO_CC > 0x5150) \
&& !defined(_MSC_VER)

template <class CharT, std::size_t N>
class string_literal
Expand Down
4 changes: 2 additions & 2 deletions 3rdParty/fuerte/include/fuerte/helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ std::string mapToKeys(std::unordered_map<K, V, A> map) {
return _detail::mapToKeys(map.begin(), map.end());
}

std::string encodeBase64(std::string const&);
std::string encodeBase64U(std::string const&);
std::string encodeBase64(std::string const&, bool pad);
std::string encodeBase64U(std::string const&, bool pad);

void toLowerInPlace(std::string& str);

Expand Down
2 changes: 1 addition & 1 deletion 3rdParty/fuerte/src/H1Connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ H1Connection<ST>::H1Connection(EventLoopService& loop,
if (this->_config._authenticationType == AuthenticationType::Basic) {
_authHeader.append("Authorization: Basic ");
_authHeader.append(
fu::encodeBase64(this->_config._user + ":" + this->_config._password));
fu::encodeBase64(this->_config._user + ":" + this->_config._password, true));
_authHeader.append("\r\n");
} else if (this->_config._authenticationType == AuthenticationType::Jwt) {
if (this->_config._jwtToken.empty()) {
Expand Down
4 changes: 2 additions & 2 deletions 3rdParty/fuerte/src/H2Connection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ std::string makeAuthHeader(fu::detail::ConnectionConfiguration const& config) {
// preemptively cache authentication
if (config._authenticationType == AuthenticationType::Basic) {
auth.append("Basic ");
auth.append(fu::encodeBase64(config._user + ":" + config._password));
auth.append(fu::encodeBase64(config._user + ":" + config._password, true));
} else if (config._authenticationType == AuthenticationType::Jwt) {
if (config._jwtToken.empty()) {
throw std::logic_error("JWT token is not set");
Expand Down Expand Up @@ -369,7 +369,7 @@ void H2Connection<T>::finishConnect() {
(uint8_t*)packed.data(), packed.size(), iv.data(), iv.size());
FUERTE_ASSERT(nwrite >= 0);
packed.resize(static_cast<size_t>(nwrite));
std::string encoded = fu::encodeBase64(packed);
std::string encoded = fu::encodeBase64(packed, true);

// lets do the HTTP2 session upgrade right away
initNgHttp2Session();
Expand Down
12 changes: 7 additions & 5 deletions 3rdParty/fuerte/src/helper.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ char const* const BASE64_CHARS =
"abcdefghijklmnopqrstuvwxyz"
"0123456789+/";

std::string encodeBase64(std::string const& in) {
std::string encodeBase64(std::string const& in, bool pad) {
unsigned char charArray3[3];
unsigned char charArray4[4];

Expand Down Expand Up @@ -201,16 +201,18 @@ std::string encodeBase64(std::string const& in) {
ret += BASE64_CHARS[charArray4[j]];
}

while ((i++ < 3)) {
ret += '=';
if (pad) {
while ((i++ < 3)) {
ret += '=';
}
}
}

return ret;
}

std::string encodeBase64U(std::string const& in) {
std::string encoded = encodeBase64(in);
std::string encodeBase64U(std::string const& in, bool pad) {
std::string encoded = encodeBase64(in, pad);
// replace '+', '/' with '-' and '_'
std::replace(encoded.begin(), encoded.end(), '+', '-');
std::replace(encoded.begin(), encoded.end(), '/', '_');
Expand Down
10 changes: 7 additions & 3 deletions 3rdParty/fuerte/src/jwt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,18 @@ std::string jwt::generateRawJwt(std::string const& secret, VPackSlice const& bod
headerBuilder.add("typ", VPackValue("JWT"));
}

std::string fullMessage(encodeBase64(headerBuilder.toJson()) + "." +
encodeBase64(body.toJson()));
// https://tools.ietf.org/html/rfc7515#section-2 requires
// JWT to use base64-encoding without trailing padding `=` chars
bool const pad = false;

std::string fullMessage(encodeBase64(headerBuilder.toJson(), pad) + "." +
encodeBase64(body.toJson(), pad));

std::string signature =
sslHMAC(secret.c_str(), secret.length(), fullMessage.c_str(),
fullMessage.length(), Algorithm::ALGORITHM_SHA256);

return fullMessage + "." + encodeBase64U(signature);
return fullMessage + "." + encodeBase64U(signature, pad);
}

// code from ArangoDBs SslInterface.cpp
Expand Down
68 changes: 62 additions & 6 deletions 3rdParty/iresearch.build/external/snowball/libstemmer/modules.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
/* /home/user/git-root/arangodb-iresearch/build/qtcreator/Debug/3rdParty/iresearch/external/snowball/libstemmer/modules.h: List of stemming modules.
/* /work/ArangoDB/build/3rdParty/iresearch/external/snowball/libstemmer/modules.h: List of stemming modules.
*
* This file is generated by mkmodules.pl from a list of module names.
* Do not edit manually.
*
* Modules included by this file are: arabic, danish, dutch, english, finnish,
* french, german, hungarian, irish, italian, norwegian, porter, portuguese,
* romanian, russian, spanish, swedish, tamil, turkish
* Modules included by this file are: arabic, basque, catalan, danish, dutch,
* english, finnish, french, german, greek, hindi, hungarian, indonesian,
* irish, italian, lithuanian, nepali, norwegian, porter, portuguese,
* romanian, russian, serbian, spanish, swedish, tamil, turkish
*/

#include "../libstemmer/stem_UTF_8_arabic.h"
#include "../libstemmer/stem_ISO_8859_1_basque.h"
#include "../libstemmer/stem_UTF_8_basque.h"
#include "../libstemmer/stem_ISO_8859_1_catalan.h"
#include "../libstemmer/stem_UTF_8_catalan.h"
#include "../libstemmer/stem_ISO_8859_1_danish.h"
#include "../libstemmer/stem_UTF_8_danish.h"
#include "../libstemmer/stem_ISO_8859_1_dutch.h"
Expand All @@ -21,12 +26,18 @@
#include "../libstemmer/stem_UTF_8_french.h"
#include "../libstemmer/stem_ISO_8859_1_german.h"
#include "../libstemmer/stem_UTF_8_german.h"
#include "../libstemmer/stem_UTF_8_greek.h"
#include "../libstemmer/stem_UTF_8_hindi.h"
#include "../libstemmer/stem_ISO_8859_2_hungarian.h"
#include "../libstemmer/stem_UTF_8_hungarian.h"
#include "../libstemmer/stem_ISO_8859_1_indonesian.h"
#include "../libstemmer/stem_UTF_8_indonesian.h"
#include "../libstemmer/stem_ISO_8859_1_irish.h"
#include "../libstemmer/stem_UTF_8_irish.h"
#include "../libstemmer/stem_ISO_8859_1_italian.h"
#include "../libstemmer/stem_UTF_8_italian.h"
#include "../libstemmer/stem_UTF_8_lithuanian.h"
#include "../libstemmer/stem_UTF_8_nepali.h"
#include "../libstemmer/stem_ISO_8859_1_norwegian.h"
#include "../libstemmer/stem_UTF_8_norwegian.h"
#include "../libstemmer/stem_ISO_8859_1_porter.h"
Expand All @@ -37,6 +48,7 @@
#include "../libstemmer/stem_UTF_8_romanian.h"
#include "../libstemmer/stem_KOI8_R_russian.h"
#include "../libstemmer/stem_UTF_8_russian.h"
#include "../libstemmer/stem_UTF_8_serbian.h"
#include "../libstemmer/stem_ISO_8859_1_spanish.h"
#include "../libstemmer/stem_UTF_8_spanish.h"
#include "../libstemmer/stem_ISO_8859_1_swedish.h"
Expand All @@ -56,7 +68,7 @@ struct stemmer_encoding {
const char * name;
stemmer_encoding_t enc;
};
static struct stemmer_encoding encodings[] = {
static const struct stemmer_encoding encodings[] = {
{"ISO_8859_1", ENC_ISO_8859_1},
{"ISO_8859_2", ENC_ISO_8859_2},
{"KOI8_R", ENC_KOI8_R},
Expand All @@ -71,10 +83,20 @@ struct stemmer_modules {
void (*close)(struct SN_env *);
int (*stem)(struct SN_env *);
};
static struct stemmer_modules modules[] = {
static const struct stemmer_modules modules[] = {
{"ar", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"ara", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"arabic", ENC_UTF_8, arabic_UTF_8_create_env, arabic_UTF_8_close_env, arabic_UTF_8_stem},
{"baq", ENC_ISO_8859_1, basque_ISO_8859_1_create_env, basque_ISO_8859_1_close_env, basque_ISO_8859_1_stem},
{"baq", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"basque", ENC_ISO_8859_1, basque_ISO_8859_1_create_env, basque_ISO_8859_1_close_env, basque_ISO_8859_1_stem},
{"basque", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"ca", ENC_ISO_8859_1, catalan_ISO_8859_1_create_env, catalan_ISO_8859_1_close_env, catalan_ISO_8859_1_stem},
{"ca", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"cat", ENC_ISO_8859_1, catalan_ISO_8859_1_create_env, catalan_ISO_8859_1_close_env, catalan_ISO_8859_1_stem},
{"cat", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"catalan", ENC_ISO_8859_1, catalan_ISO_8859_1_create_env, catalan_ISO_8859_1_close_env, catalan_ISO_8859_1_stem},
{"catalan", ENC_UTF_8, catalan_UTF_8_create_env, catalan_UTF_8_close_env, catalan_UTF_8_stem},
{"da", ENC_ISO_8859_1, danish_ISO_8859_1_create_env, danish_ISO_8859_1_close_env, danish_ISO_8859_1_stem},
{"da", ENC_UTF_8, danish_UTF_8_create_env, danish_UTF_8_close_env, danish_UTF_8_stem},
{"dan", ENC_ISO_8859_1, danish_ISO_8859_1_create_env, danish_ISO_8859_1_close_env, danish_ISO_8859_1_stem},
Expand All @@ -89,6 +111,8 @@ static struct stemmer_modules modules[] = {
{"dut", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
{"dutch", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem},
{"dutch", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
{"el", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"ell", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"en", ENC_ISO_8859_1, english_ISO_8859_1_create_env, english_ISO_8859_1_close_env, english_ISO_8859_1_stem},
{"en", ENC_UTF_8, english_UTF_8_create_env, english_UTF_8_close_env, english_UTF_8_stem},
{"eng", ENC_ISO_8859_1, english_ISO_8859_1_create_env, english_ISO_8859_1_close_env, english_ISO_8859_1_stem},
Expand All @@ -99,6 +123,10 @@ static struct stemmer_modules modules[] = {
{"es", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
{"esl", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem},
{"esl", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
{"eu", ENC_ISO_8859_1, basque_ISO_8859_1_create_env, basque_ISO_8859_1_close_env, basque_ISO_8859_1_stem},
{"eu", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"eus", ENC_ISO_8859_1, basque_ISO_8859_1_create_env, basque_ISO_8859_1_close_env, basque_ISO_8859_1_stem},
{"eus", ENC_UTF_8, basque_UTF_8_create_env, basque_UTF_8_close_env, basque_UTF_8_stem},
{"fi", ENC_ISO_8859_1, finnish_ISO_8859_1_create_env, finnish_ISO_8859_1_close_env, finnish_ISO_8859_1_stem},
{"fi", ENC_UTF_8, finnish_UTF_8_create_env, finnish_UTF_8_close_env, finnish_UTF_8_stem},
{"fin", ENC_ISO_8859_1, finnish_ISO_8859_1_create_env, finnish_ISO_8859_1_close_env, finnish_ISO_8859_1_stem},
Expand All @@ -121,12 +149,23 @@ static struct stemmer_modules modules[] = {
{"german", ENC_UTF_8, german_UTF_8_create_env, german_UTF_8_close_env, german_UTF_8_stem},
{"gle", ENC_ISO_8859_1, irish_ISO_8859_1_create_env, irish_ISO_8859_1_close_env, irish_ISO_8859_1_stem},
{"gle", ENC_UTF_8, irish_UTF_8_create_env, irish_UTF_8_close_env, irish_UTF_8_stem},
{"gre", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"greek", ENC_UTF_8, greek_UTF_8_create_env, greek_UTF_8_close_env, greek_UTF_8_stem},
{"hi", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_UTF_8_stem},
{"hin", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_UTF_8_stem},
{"hindi", ENC_UTF_8, hindi_UTF_8_create_env, hindi_UTF_8_close_env, hindi_UTF_8_stem},
{"hu", ENC_ISO_8859_2, hungarian_ISO_8859_2_create_env, hungarian_ISO_8859_2_close_env, hungarian_ISO_8859_2_stem},
{"hu", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem},
{"hun", ENC_ISO_8859_2, hungarian_ISO_8859_2_create_env, hungarian_ISO_8859_2_close_env, hungarian_ISO_8859_2_stem},
{"hun", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem},
{"hungarian", ENC_ISO_8859_2, hungarian_ISO_8859_2_create_env, hungarian_ISO_8859_2_close_env, hungarian_ISO_8859_2_stem},
{"hungarian", ENC_UTF_8, hungarian_UTF_8_create_env, hungarian_UTF_8_close_env, hungarian_UTF_8_stem},
{"id", ENC_ISO_8859_1, indonesian_ISO_8859_1_create_env, indonesian_ISO_8859_1_close_env, indonesian_ISO_8859_1_stem},
{"id", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"ind", ENC_ISO_8859_1, indonesian_ISO_8859_1_create_env, indonesian_ISO_8859_1_close_env, indonesian_ISO_8859_1_stem},
{"ind", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"indonesian", ENC_ISO_8859_1, indonesian_ISO_8859_1_create_env, indonesian_ISO_8859_1_close_env, indonesian_ISO_8859_1_stem},
{"indonesian", ENC_UTF_8, indonesian_UTF_8_create_env, indonesian_UTF_8_close_env, indonesian_UTF_8_stem},
{"irish", ENC_ISO_8859_1, irish_ISO_8859_1_create_env, irish_ISO_8859_1_close_env, irish_ISO_8859_1_stem},
{"irish", ENC_UTF_8, irish_UTF_8_create_env, irish_UTF_8_close_env, irish_UTF_8_stem},
{"it", ENC_ISO_8859_1, italian_ISO_8859_1_create_env, italian_ISO_8859_1_close_env, italian_ISO_8859_1_stem},
Expand All @@ -135,6 +174,12 @@ static struct stemmer_modules modules[] = {
{"ita", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem},
{"italian", ENC_ISO_8859_1, italian_ISO_8859_1_create_env, italian_ISO_8859_1_close_env, italian_ISO_8859_1_stem},
{"italian", ENC_UTF_8, italian_UTF_8_create_env, italian_UTF_8_close_env, italian_UTF_8_stem},
{"lit", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"lithuanian", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"lt", ENC_UTF_8, lithuanian_UTF_8_create_env, lithuanian_UTF_8_close_env, lithuanian_UTF_8_stem},
{"ne", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_UTF_8_stem},
{"nep", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_UTF_8_stem},
{"nepali", ENC_UTF_8, nepali_UTF_8_create_env, nepali_UTF_8_close_env, nepali_UTF_8_stem},
{"nl", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem},
{"nl", ENC_UTF_8, dutch_UTF_8_create_env, dutch_UTF_8_close_env, dutch_UTF_8_stem},
{"nld", ENC_ISO_8859_1, dutch_ISO_8859_1_create_env, dutch_ISO_8859_1_close_env, dutch_ISO_8859_1_stem},
Expand Down Expand Up @@ -167,10 +212,13 @@ static struct stemmer_modules modules[] = {
{"rus", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem},
{"russian", ENC_KOI8_R, russian_KOI8_R_create_env, russian_KOI8_R_close_env, russian_KOI8_R_stem},
{"russian", ENC_UTF_8, russian_UTF_8_create_env, russian_UTF_8_close_env, russian_UTF_8_stem},
{"serbian", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_UTF_8_stem},
{"spa", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem},
{"spa", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
{"spanish", ENC_ISO_8859_1, spanish_ISO_8859_1_create_env, spanish_ISO_8859_1_close_env, spanish_ISO_8859_1_stem},
{"spanish", ENC_UTF_8, spanish_UTF_8_create_env, spanish_UTF_8_close_env, spanish_UTF_8_stem},
{"sr", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_UTF_8_stem},
{"srp", ENC_UTF_8, serbian_UTF_8_create_env, serbian_UTF_8_close_env, serbian_UTF_8_stem},
{"sv", ENC_ISO_8859_1, swedish_ISO_8859_1_create_env, swedish_ISO_8859_1_close_env, swedish_ISO_8859_1_stem},
{"sv", ENC_UTF_8, swedish_UTF_8_create_env, swedish_UTF_8_close_env, swedish_UTF_8_stem},
{"swe", ENC_ISO_8859_1, swedish_ISO_8859_1_create_env, swedish_ISO_8859_1_close_env, swedish_ISO_8859_1_stem},
Expand All @@ -187,20 +235,28 @@ static struct stemmer_modules modules[] = {
};
static const char * algorithm_names[] = {
"arabic",
"basque",
"catalan",
"danish",
"dutch",
"english",
"finnish",
"french",
"german",
"greek",
"hindi",
"hungarian",
"indonesian",
"irish",
"italian",
"lithuanian",
"nepali",
"norwegian",
"porter",
"portuguese",
"romanian",
"russian",
"serbian",
"spanish",
"swedish",
"tamil",
Expand Down
Loading

0 comments on commit a399f3c

Please sign in to comment.