#include <zxcvbn/matching.hpp>
#include <zxcvbn/adjacency_graphs.hpp>
#include <zxcvbn/common.hpp>
#include <zxcvbn/optional.hpp>
#include <zxcvbn/frequency_lists.hpp>
#include <zxcvbn/scoring.hpp>
#include <zxcvbn/util.hpp>
#include <algorithm>
#include <array>
#include <functional>
#include <initializer_list>
#include <regex>
#include <sstream>
#include <string>
#include <vector>
#include <unordered_map>
#include <utility>
#include <unordered_set>
#include "base/no_destructor.h"
#include "base/strings/string_util.h"
#include "third_party/icu/source/common/unicode/unistr.h"
#include "third_party/icu/source/i18n/unicode/regex.h"
namespace zxcvbn {
const std::vector<std::pair<std::string, std::vector<std::string>>>&
L33T_TABLE() { … }
const std::vector<std::pair<RegexTag, std::regex>>& REGEXEN() { … }
const auto DATE_MAX_YEAR = …;
const auto DATE_MIN_YEAR = …;
constexpr std::initializer_list<std::pair<int, int>> DATE_SPLITS[] = …;
static
std::string translate(const std::string & string,
const std::unordered_map<std::string, std::string> & chr_map) { … }
static
std::vector<Match> & sorted(std::vector<Match> & matches) { … }
static
std::string dict_normalize(const std::string & str) { … }
std::vector<Match> omnimatch(const std::string& password) { … }
std::vector<Match> dictionary_match(const std::string & password,
const RankedDicts & ranked_dictionaries) { … }
std::vector<Match> reverse_dictionary_match(const std::string & password,
const RankedDicts & ranked_dictionaries) { … }
std::unordered_map<std::string, std::vector<std::string>> relevant_l33t_subtable(const std::string & password, const std::vector<std::pair<std::string, std::vector<std::string>>> & table) { … }
std::vector<std::unordered_map<std::string, std::string>> enumerate_l33t_subs(const std::unordered_map<std::string, std::vector<std::string>> & table) { … }
std::vector<Match> l33t_match(const std::string & password,
const RankedDicts & ranked_dictionaries,
const std::vector<std::pair<std::string, std::vector<std::string>>> & l33t_table) { … }
static
std::vector<Match> spatial_match_helper(const std::string & password,
const Graph & graph,
GraphTag tag);
std::vector<Match> spatial_match(const std::string & password,
const Graphs & graphs) { … }
static
std::vector<Match> spatial_match_helper(const std::string & password,
const Graph & graph,
GraphTag graph_tag) { … }
std::vector<Match> repeat_match(const std::string& password) { … }
const auto MAX_DELTA = …;
std::vector<Match> sequence_match(const std::string & password) { … }
std::vector<Match> regex_match(const std::string & password,
const std::vector<std::pair<RegexTag, std::regex>> & regexen) { … }
date_t;
struct DMY { … };
static
optional::optional<DMY> map_ints_to_dmy(const std::array<date_t, 3> & vals);
static
date_t stou(const std::string & a) { … }
std::vector<Match> date_match(const std::string & password) { … }
static
optional::optional<DMY> map_ints_to_dm(const std::array<date_t, 2> & vals);
static
date_t two_to_four_digit_year(date_t val);
static
optional::optional<DMY> map_ints_to_dmy(const std::array<date_t, 3> & vals) { … }
static
optional::optional<DMY> map_ints_to_dm(const std::array<date_t, 2> & vals) { … }
static
date_t two_to_four_digit_year(date_t year) { … }
}