{"version":3,"sources":["webpack://libphonenumber/webpack/universalModuleDefinition","webpack://libphonenumber/webpack/bootstrap","webpack://libphonenumber/./es6/common.js","webpack://libphonenumber/./es6/metadata.js","webpack://libphonenumber/./es6/parse.js","webpack://libphonenumber/./es6/getNumberType.js","webpack://libphonenumber/./es6/validate.js","webpack://libphonenumber/./es6/PhoneNumber.js","webpack://libphonenumber/./es6/findNumbers/util.js","webpack://libphonenumber/./es6/format.js","webpack://libphonenumber/./es6/parseIncompletePhoneNumber.js","webpack://libphonenumber/./es6/PhoneNumberMatcher.js","webpack://libphonenumber/./es6/findPhoneNumbers.js","webpack://libphonenumber/./es6/RFC3966.js","webpack://libphonenumber/./es6/isPossibleNumber.js","webpack://libphonenumber/./es6/AsYouType.js","webpack://libphonenumber/./es6/findNumbers/utf-8.js","webpack://libphonenumber/./es6/findNumbers/isValidCandidate.js","webpack://libphonenumber/./es6/findNumbers/isValidPreCandidate.js","webpack://libphonenumber/./es6/findNumbers/parsePreCandidate.js","webpack://libphonenumber/./es6/getCountryCallingCode.js","webpack://libphonenumber/./es6/IDD.js","webpack://libphonenumber/./es6/formatIncompletePhoneNumber.js","webpack://libphonenumber/./es6/searchNumbers.js","webpack://libphonenumber/./es6/findNumbers/Leniency.js","webpack://libphonenumber/./es6/findNumbers.js","webpack://libphonenumber/./es6/isValidNumberForRegion.js","webpack://libphonenumber/./es6/getExampleNumber.js","webpack://libphonenumber/./es6/parsePhoneNumber.js","webpack://libphonenumber/./node_modules/semver-compare/index.js","webpack://libphonenumber/./index.es6.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","r","value","n","__esModule","object","property","prototype","hasOwnProperty","p","s","parseDigit","character","DIGITS","extractCountryCallingCode","number","country","metadata","_parseIncompletePhoneNumber2","default","numberWithoutIDD","_IDD","stripIDDPrefix","_metadata2","MAX_LENGTH_COUNTRY_CODE","length","countryCallingCode","slice","countryCallingCodes","matches_entirely","text","arguments","undefined","regular_expression","RegExp","test","create_extension_pattern","purpose","single_extension_characters","RFC3966_EXTN_PREFIX","CAPTURING_EXTN_DIGITS","VALID_DIGITS","WHITESPACE","PLUS_CHARS","VALID_PUNCTUATION","MAX_LENGTH_FOR_NSN","0","1","2","3","4","5","6","7","8","9","0","1","2","3","4","5","6","7","8","9","٠","١","٢","٣","٤","٥","٦","٧","٨","٩","۰","۱","۲","۳","۴","۵","۶","۷","۸","۹","validateMetadata","getExtPrefix","Metadata","ext","_semverCompare","_typeof","Symbol","_typeof2","iterator","obj","constructor","_createClass","defineProperties","target","props","descriptor","writable","key","Constructor","protoProps","staticProps","_classCallCheck","instance","TypeError","V3","this","v1","version","v2","_semverCompare2","v3","countries","_country","country_metadata","hasCountry","Error","_this","formats","_getFormats","getDefaultCountryMetadataForRegion","map","_","Format","_getNationalPrefixFormattingRule","nationalPrefix","_getNationalPrefixIsOptionalWhenFormatting","types","_type","hasTypes","getType","Type","country_phone_code_to_countries","country_calling_codes","country_calling_code","format","_format","nationalPrefixFormattingRule","nationalPrefixIsOptionalWhenFormatting","usesNationalPrefix","replace","type","possibleLengths","is_object","keys","join","type_of","arg_1","arg_2","arg_3","arg_4","_sort_out_arguments","options","_extends","defaultCountry","default_options","sort_out_arguments","_parse_input","indexOf","_RFC","parseRFC3966","extract_formatted_phone_number","is_viable_phone_number","with_extension_stripped","start","search","EXTN_PATTERN","number_without_extension","matches","match","strip_extension","parse_input","formatted_phone_number","_parse_phone_number","default_country","_extractCountryCallin","_common","chooseCountryByCountryCallingCode","_getCountryCallingCode2","_parse_national_numbe","national_number","carrier_code","_strip_national_prefi","strip_national_prefix_and_carrier_code","potential_national_number","carrierCode","_getNumberType","check_number_length_for_type","nationalNumberPattern","parse_national_number","exactCountry","find_country_code","parse_phone_number","nationalNumber","selectedCountry","MIN_LENGTH_FOR_NSN","phoneNumber","_PhoneNumber2","valid","extended","result","phone","possible","_isPossibleNumber","is_possible_number","assign","source","MAX_INPUT_STRING_LENGTH","EXTN_PATTERNS_FOR_PARSING","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_PATTERN","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","starts_at","nationalPrefixForParsing","national_prefix_pattern","national_prefix_matcher","exec","national_significant_number","captured_groups_count","nationalPrefixTransformRule","national_phone_number","possible_countries","_iterator","_isArray","Array","isArray","_i","_ref","next","done","leadingDigits","_getNumberType2","_find_country_code","input","is_of_type","pattern","non_fixed_line_types","type_info","possible_lengths","mobile_type","merge_arrays","actual_length","minimum_length","_parse","_parse2","a","b","merged","_iterator2","_isArray2","_i2","_ref2","element","push","sort","PhoneNumber","isCountryCode","_metadata","_metadata3","_isPossibleNumber2","_validate2","_format3","limit","lower","upper","trimAfterFirstMatch","regexp","string","index","startsWith","substring","endsWith","arg_5","format_type","defaultOptions","format_national_number","add_extension","formatExtension","formatRFC3966","fromCountry","IDDPrefix","getIDDPrefix","humanReadable","formattedForSameCountryCallingCode","formatIDDSameCountryCallingCodeNumber","format_national_number_using_format","choose_format_for_number","local_to_international_style","extension","FIRST_GROUP_PATTERN","international","enforce_national_prefix","format_pattern_matcher","national_prefix_may_be_omitted","formatted_number","internationalFormat","format_as","available_formats","leadingDigitsPatterns","last_leading_digits_pattern","local","trim","toCountryCallingCode","toCountryMetadata","fromCountryMetadata","split","parsePhoneNumberCharacter","_util","_utf","_isValidCandidate","INNER_MATCHES","pZ","PZ","leadLimit","punctuationLimit","digitBlockLimit","blockLimit","punctuation","digitSequence","pNd","PATTERN","LEAD_CLASS","UNWANTED_END_CHAR_PATTERN","_pN","_pL","MAX_SAFE_INTEGER","Number","Math","pow","PhoneNumberMatcher","state","searchIndex","leniency","maxTries","_Leniency2","candidate","offset","_parsePreCandidate2","_isValidPreCandidate2","parseAndVerify","extractInnerMatch","startsAt","endsAt","isFirstMatch","possibleInnerMatch","_group","_match","group","_isValidCandidate2","lastMatch","find","hasNext","PhoneNumberSearch","phones","searchPhoneNumbers","_sort_out_arguments2","_defineProperty","WHITESPACE_IN_THE_BEGINNING_PATTERN","PUNCTUATION_IN_THE_END_PATTERN","parseCandidate","last_match","part","_part$split","_part$split2","_slicedToArray","arr","_arr","_n","_d","_e","_s","err","sliceIterator","is_international","strip_dangling_braces","cut_stripping_dangling_braces","close_dangling_braces","template","cut_before","retained_template","opening_braces","count_occurences","closing_braces","dangling_braces","repeat","LONGEST_DUMMY_PHONE_NUMBER","DIGIT_PLACEHOLDER","DIGIT_PLACEHOLDER_MATCHER","ELIGIBLE_FORMAT_PATTERN","VALID_INCOMPLETE_PHONE_NUMBER","VALID_INCOMPLETE_PHONE_NUMBER_PATTERN","AsYouType","country_code","reset","extracted_number","process_input","current_output","parsed_input","reset_countriness","determine_the_country","extract_country_calling_code","initialize_phone_number_formats_for_this_country_calling_code","reset_format","previous_national_prefix","national_prefix","extract_national_prefix","matching_formats","format_as_non_formatted_number","match_formats_by_leading_digits","formatted_national_phone_number","format_national_phone_number","full_phone_number","next_digits","national_number_formatted_with_previous_format","chosen_format","format_next_national_number_digits","attempt_to_format_complete_phone_number","choose_another_format","reformat_national_number","reset_country","partially_populated_template","last_match_position","filter","leading_digits","index_of_leading_digits_pattern","had_enough_leading_digits","should_format","leading_digits_patterns_count","leading_digits_pattern_index","min","leading_digits_pattern","is_format_applicable","create_formatting_template","full_number","formatted_national_number","nationalPrefixIsMandatoryWhenFormatting","get_template_for_phone_number_format_pattern","number_pattern","dummy_phone_number_matching_format_pattern","number_format","get_format_format","strict_pattern","national_number_dummy_digits","digits","_iterator3","_isArray3","_i3","_ref3","digit","pop","cleared_string","_iterator4","_isArray4","_i4","_ref4","cut_before_index","symbol","count","_iterator5","_isArray5","_i5","_ref5","times","isLatinLetter","letter","pL_regexp","pMn_regexp","latinLetterRegexp","isInvalidPunctuationSymbol","pSc_regexp","_pZ","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","LEAD_CLASS_LEADING","previousChar","lastCharIndex","nextChar","BRACKET_PAIR_LIMIT","SLASH_SEPARATED_DATES","TIME_STAMPS","followingText","TIME_STAMPS_SUFFIX_LEADING","SECOND_NUMBER_START_PATTERN","countryMetadata","SINGLE_IDD_PREFIX","defaultIDDPrefix","IDDPrefixPattern","matchedGroups","CAPTURING_DIGIT_PATTERN","_AsYouType2","_AsYouType","_findPhoneNumbers","matcher","_PhoneNumberMatcher2","_PhoneNumberMatcher","containsMoreThanOneSlashInNationalNumber","containsOnlyValidXChars","charAtIndex","charAt","charAtNextIndex","util","isNumberMatch","MatchType","NSN_MATCH","parseDigits","isNationalPrefixPresentIfRequired","getCountryCodeSource","phoneNumberRegion","getRegionCodeForCountryCode","getCountryCode","getMetadataForRegion","getNationalSignificantNumber","formatRule","chooseFormattingPatternForNumber","numberFormats","getNationalPrefixFormattingRule","getNationalPrefixOptionalWhenFormatting","PhoneNumberUtil","formattingRuleHasFirstGroupOnly","rawInputCopy","normalizeDigitsOnly","getRawInput","maybeStripNationalPrefixAndCarrierCode","firstSlashInBodyIndex","secondSlashInBodyIndex","CountryCodeSource","FROM_NUMBER_WITH_PLUS_SIGN","FROM_NUMBER_WITHOUT_PLUS_SIGN","String","checkNumberGroupingIsValid","checkGroups","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","alternateFormats","MetadataManager","getAlternateFormatsForCountry","formattingPattern","nationalSignificantNumber","formatNsnUsingPattern","rfc3966Format","formatNumber","endIndex","startIndex","allNumberGroupsAreExactlyPresent","candidateGroups","NON_DIGITS_PATTERN","candidateNumberGroupIndex","hasExtension","contains","formattedNumberGroupIndex","allNumberGroupsRemainGrouped","fromIndex","FROM_DEFAULT_COUNTRY","countryCode","region","getNddPrefixForRegion","Character","isDigit","getExtension","POSSIBLE","VALID","toString","STRICT_GROUPING","candidateString","EXACT_GROUPING","results","_validate","examples","_PhoneNumber","isObject","pa","pb","na","nb","isNaN","parsePhoneNumber","parameters","_metadataMin2","_parsePhoneNumber2","apply","parseNumber","parse","_format2","getNumberType","getExampleNumber","_getExampleNumber2","isPossibleNumber","isValidNumber","isValidNumberForRegion","_isValidNumberForRegion2","findPhoneNumbers","_findPhoneNumbers2","findNumbers","_findNumbers2","searchNumbers","_searchNumbers2","formatIncompletePhoneNumber","_formatIncompletePhoneNumber2","_getCountryCallingCode","getCountryCallingCode","getPhoneCode","getPhoneCodeCustom","create"],"mappings":"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","file":"libphonenumber-js.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"libphonenumber\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"libphonenumber\"] = factory();\n\telse\n\t\troot[\"libphonenumber\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 29);\n","import { stripIDDPrefix } from './IDD';\nimport Metadata from './metadata';\n\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber';\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D';\nvar SLASHES = '\\uFF0F/';\nvar DOTS = '\\uFF0E.';\nexport var WHITESPACE = ' \\xA0\\xAD\\u200B\\u2060\\u3000';\nvar BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]';\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = '~\\u2053\\u223C\\uFF5E';\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport var VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9';\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport var VALID_PUNCTUATION = '' + DASHES + SLASHES + DOTS + WHITESPACE + BRACKETS + TILDES;\n\nexport var PLUS_CHARS = '+\\uFF0B';\nvar LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+');\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport var MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nexport var MAX_LENGTH_COUNTRY_CODE = 3;\n\n// These mappings map a character (key) to a specific digit that should\n// replace it for normalization purposes. Non-European digits that\n// may be used in phone numbers are mapped to a European equivalent.\n//\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\n//\nexport var DIGITS = {\n\t'0': '0',\n\t'1': '1',\n\t'2': '2',\n\t'3': '3',\n\t'4': '4',\n\t'5': '5',\n\t'6': '6',\n\t'7': '7',\n\t'8': '8',\n\t'9': '9',\n\t'\\uFF10': '0', // Fullwidth digit 0\n\t'\\uFF11': '1', // Fullwidth digit 1\n\t'\\uFF12': '2', // Fullwidth digit 2\n\t'\\uFF13': '3', // Fullwidth digit 3\n\t'\\uFF14': '4', // Fullwidth digit 4\n\t'\\uFF15': '5', // Fullwidth digit 5\n\t'\\uFF16': '6', // Fullwidth digit 6\n\t'\\uFF17': '7', // Fullwidth digit 7\n\t'\\uFF18': '8', // Fullwidth digit 8\n\t'\\uFF19': '9', // Fullwidth digit 9\n\t'\\u0660': '0', // Arabic-indic digit 0\n\t'\\u0661': '1', // Arabic-indic digit 1\n\t'\\u0662': '2', // Arabic-indic digit 2\n\t'\\u0663': '3', // Arabic-indic digit 3\n\t'\\u0664': '4', // Arabic-indic digit 4\n\t'\\u0665': '5', // Arabic-indic digit 5\n\t'\\u0666': '6', // Arabic-indic digit 6\n\t'\\u0667': '7', // Arabic-indic digit 7\n\t'\\u0668': '8', // Arabic-indic digit 8\n\t'\\u0669': '9', // Arabic-indic digit 9\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\n};\n\nexport function parseDigit(character) {\n\treturn DIGITS[character];\n}\n\n// Parses a formatted phone number\n// and returns `{ countryCallingCode, number }`\n// where `number` is just the \"number\" part\n// which is left after extracting `countryCallingCode`\n// and is not necessarily a \"national (significant) number\"\n// and might as well contain national prefix.\n//\nexport function extractCountryCallingCode(number, country, metadata) {\n\tnumber = parseIncompletePhoneNumber(number);\n\n\tif (!number) {\n\t\treturn {};\n\t}\n\n\t// If this is not an international phone number,\n\t// then don't extract country phone code.\n\tif (number[0] !== '+') {\n\t\t// Convert an \"out-of-country\" dialing phone number\n\t\t// to a proper international phone number.\n\t\tvar numberWithoutIDD = stripIDDPrefix(number, country, metadata);\n\n\t\t// If an IDD prefix was stripped then\n\t\t// convert the number to international one\n\t\t// for subsequent parsing.\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\n\t\t\tnumber = '+' + numberWithoutIDD;\n\t\t} else {\n\t\t\treturn { number: number };\n\t\t}\n\t}\n\n\t// Fast abortion: country codes do not begin with a '0'\n\tif (number[1] === '0') {\n\t\treturn {};\n\t}\n\n\tmetadata = new Metadata(metadata);\n\n\t// The thing with country phone codes\n\t// is that they are orthogonal to each other\n\t// i.e. there's no such country phone code A\n\t// for which country phone code B exists\n\t// where B starts with A.\n\t// Therefore, while scanning digits,\n\t// if a valid country code is found,\n\t// that means that it is the country code.\n\t//\n\tvar i = 2;\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\n\t\tvar countryCallingCode = number.slice(1, i);\n\n\t\tif (metadata.countryCallingCodes()[countryCallingCode]) {\n\t\t\treturn {\n\t\t\t\tcountryCallingCode: countryCallingCode,\n\t\t\t\tnumber: number.slice(i)\n\t\t\t};\n\t\t}\n\n\t\ti++;\n\t}\n\n\treturn {};\n}\n\n// Checks whether the entire input sequence can be matched\n// against the regular expression.\nexport function matches_entirely() {\n\tvar text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\tvar regular_expression = arguments[1];\n\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text);\n}\n\n// The RFC 3966 format for extensions.\nvar RFC3966_EXTN_PREFIX = ';ext=';\n\n// Pattern to capture digits used in an extension.\n// Places a maximum length of '7' for an extension.\nvar CAPTURING_EXTN_DIGITS = '([' + VALID_DIGITS + ']{1,7})';\n\n/**\n * Regexp of all possible ways to write extensions, for use when parsing. This\n * will be run as a case-insensitive regexp match. Wide character versions are\n * also provided after each ASCII version. There are three regular expressions\n * here. The first covers RFC 3966 format, where the extension is added using\n * ';ext='. The second more generic one starts with optional white space and\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\n * /commas and then the numbers themselves. The other one covers the special\n * case of American numbers where the extension is written with a hash at the\n * end, such as '- 503#'. Note that the only capturing groups should be around\n * the digits that you want to capture as part of the extension, or else parsing\n * will fail! We allow two options for representing the accented o - the\n * character itself, and one in the unicode decomposed form with the combining\n * acute accent.\n */\nexport function create_extension_pattern(purpose) {\n\t// One-character symbols that can be used to indicate an extension.\n\tvar single_extension_characters = 'x\\uFF58#\\uFF03~\\uFF5E';\n\n\tswitch (purpose) {\n\t\t// For parsing, we are slightly more lenient in our interpretation than for matching. Here we\n\t\t// allow \"comma\" and \"semicolon\" as possible extension indicators. When matching, these are\n\t\tcase 'parsing':\n\t\t\tsingle_extension_characters = ',;' + single_extension_characters;\n\t}\n\n\treturn RFC3966_EXTN_PREFIX + CAPTURING_EXTN_DIGITS + '|' + '[ \\xA0\\\\t,]*' + '(?:e?xt(?:ensi(?:o\\u0301?|\\xF3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|' +\n\t// \"доб.\"\n\t'\\u0434\\u043E\\u0431|' + '[' + single_extension_characters + ']|int|anexo|\\uFF49\\uFF4E\\uFF54)' + '[:\\\\.\\uFF0E]?[ \\xA0\\\\t,-]*' + CAPTURING_EXTN_DIGITS + '#?|' + '[- ]+([' + VALID_DIGITS + ']{1,5})#';\n}\n//# sourceMappingURL=common.js.map","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport compare from 'semver-compare';\n\n// Added \"possibleLengths\" and renamed\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\nvar V2 = '1.0.18';\n\n// Added \"idd_prefix\" and \"default_idd_prefix\".\nvar V3 = '1.2.0';\n\nvar DEFAULT_EXT_PREFIX = ' ext. ';\n\nvar Metadata = function () {\n\tfunction Metadata(metadata) {\n\t\t_classCallCheck(this, Metadata);\n\n\t\tvalidateMetadata(metadata);\n\n\t\tthis.metadata = metadata;\n\n\t\tthis.v1 = !metadata.version;\n\t\tthis.v2 = metadata.version !== undefined && compare(metadata.version, V3) === -1;\n\t\tthis.v3 = metadata.version !== undefined; // && compare(metadata.version, V4) === -1\n\t}\n\n\t_createClass(Metadata, [{\n\t\tkey: 'hasCountry',\n\t\tvalue: function hasCountry(country) {\n\t\t\treturn this.metadata.countries[country] !== undefined;\n\t\t}\n\t}, {\n\t\tkey: 'country',\n\t\tvalue: function country(_country) {\n\t\t\tif (!_country) {\n\t\t\t\tthis._country = undefined;\n\t\t\t\tthis.country_metadata = undefined;\n\t\t\t\treturn this;\n\t\t\t}\n\n\t\t\tif (!this.hasCountry(_country)) {\n\t\t\t\tthrow new Error('Unknown country: ' + _country);\n\t\t\t}\n\n\t\t\tthis._country = _country;\n\t\t\tthis.country_metadata = this.metadata.countries[_country];\n\t\t\treturn this;\n\t\t}\n\t}, {\n\t\tkey: 'getDefaultCountryMetadataForRegion',\n\t\tvalue: function getDefaultCountryMetadataForRegion() {\n\t\t\treturn this.metadata.countries[this.countryCallingCodes()[this.countryCallingCode()][0]];\n\t\t}\n\t}, {\n\t\tkey: 'countryCallingCode',\n\t\tvalue: function countryCallingCode() {\n\t\t\treturn this.country_metadata[0];\n\t\t}\n\t}, {\n\t\tkey: 'IDDPrefix',\n\t\tvalue: function IDDPrefix() {\n\t\t\tif (this.v1 || this.v2) return;\n\t\t\treturn this.country_metadata[1];\n\t\t}\n\t}, {\n\t\tkey: 'defaultIDDPrefix',\n\t\tvalue: function defaultIDDPrefix() {\n\t\t\tif (this.v1 || this.v2) return;\n\t\t\treturn this.country_metadata[12];\n\t\t}\n\t}, {\n\t\tkey: 'nationalNumberPattern',\n\t\tvalue: function nationalNumberPattern() {\n\t\t\tif (this.v1 || this.v2) return this.country_metadata[1];\n\t\t\treturn this.country_metadata[2];\n\t\t}\n\t}, {\n\t\tkey: 'possibleLengths',\n\t\tvalue: function possibleLengths() {\n\t\t\tif (this.v1) return;\n\t\t\treturn this.country_metadata[this.v2 ? 2 : 3];\n\t\t}\n\t}, {\n\t\tkey: '_getFormats',\n\t\tvalue: function _getFormats(country_metadata) {\n\t\t\treturn country_metadata[this.v1 ? 2 : this.v2 ? 3 : 4];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// formats are all stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'formats',\n\t\tvalue: function formats() {\n\t\t\tvar _this = this;\n\n\t\t\tvar formats = this._getFormats(this.country_metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || [];\n\t\t\treturn formats.map(function (_) {\n\t\t\t\treturn new Format(_, _this);\n\t\t\t});\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefix',\n\t\tvalue: function nationalPrefix() {\n\t\t\treturn this.country_metadata[this.v1 ? 3 : this.v2 ? 4 : 5];\n\t\t}\n\t}, {\n\t\tkey: '_getNationalPrefixFormattingRule',\n\t\tvalue: function _getNationalPrefixFormattingRule(country_metadata) {\n\t\t\treturn country_metadata[this.v1 ? 4 : this.v2 ? 5 : 6];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// national prefix formatting rule is stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'nationalPrefixFormattingRule',\n\t\tvalue: function nationalPrefixFormattingRule() {\n\t\t\treturn this._getNationalPrefixFormattingRule(this.country_metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion());\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixForParsing',\n\t\tvalue: function nationalPrefixForParsing() {\n\t\t\t// If `national_prefix_for_parsing` is not set explicitly,\n\t\t\t// then infer it from `national_prefix` (if any)\n\t\t\treturn this.country_metadata[this.v1 ? 5 : this.v2 ? 6 : 7] || this.nationalPrefix();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixTransformRule',\n\t\tvalue: function nationalPrefixTransformRule() {\n\t\t\treturn this.country_metadata[this.v1 ? 6 : this.v2 ? 7 : 8];\n\t\t}\n\t}, {\n\t\tkey: '_getNationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function _getNationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn !!this.country_metadata[this.v1 ? 7 : this.v2 ? 8 : 9];\n\t\t}\n\n\t\t// For countries of the same region (e.g. NANPA)\n\t\t// \"national prefix is optional when parsing\" flag is\n\t\t// stored in the \"main\" country for that region.\n\t\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\n\n\t}, {\n\t\tkey: 'nationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function nationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.country_metadata) || this._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion());\n\t\t}\n\t}, {\n\t\tkey: 'leadingDigits',\n\t\tvalue: function leadingDigits() {\n\t\t\treturn this.country_metadata[this.v1 ? 8 : this.v2 ? 9 : 10];\n\t\t}\n\t}, {\n\t\tkey: 'types',\n\t\tvalue: function types() {\n\t\t\treturn this.country_metadata[this.v1 ? 9 : this.v2 ? 10 : 11];\n\t\t}\n\t}, {\n\t\tkey: 'hasTypes',\n\t\tvalue: function hasTypes() {\n\t\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\n\t\t\t/* istanbul ignore next */\n\t\t\tif (this.types() && this.types().length === 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Versions <= 1.2.4: can be `undefined`.\n\t\t\t// Version >= 1.2.5: can be `0`.\n\t\t\treturn !!this.types();\n\t\t}\n\t}, {\n\t\tkey: 'type',\n\t\tvalue: function type(_type) {\n\t\t\tif (this.hasTypes() && getType(this.types(), _type)) {\n\t\t\t\treturn new Type(getType(this.types(), _type), this);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'ext',\n\t\tvalue: function ext() {\n\t\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX;\n\t\t\treturn this.country_metadata[13] || DEFAULT_EXT_PREFIX;\n\t\t}\n\t}, {\n\t\tkey: 'countryCallingCodes',\n\t\tvalue: function countryCallingCodes() {\n\t\t\tif (this.v1) return this.metadata.country_phone_code_to_countries;\n\t\t\treturn this.metadata.country_calling_codes;\n\t\t}\n\n\t\t// Formatting information for regions which share\n\t\t// a country calling code is contained by only one region\n\t\t// for performance reasons. For example, for NANPA region\n\t\t// (\"North American Numbering Plan Administration\",\n\t\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\n\t\t// it will be contained in the metadata for `US`.\n\t\t//\n\t\t// `country_calling_code` is always valid.\n\t\t// But the actual country may not necessarily be part of the metadata.\n\t\t//\n\n\t}, {\n\t\tkey: 'chooseCountryByCountryCallingCode',\n\t\tvalue: function chooseCountryByCountryCallingCode(country_calling_code) {\n\t\t\tvar country = this.countryCallingCodes()[country_calling_code][0];\n\n\t\t\t// Do not want to test this case.\n\t\t\t// (custom metadata, not all countries).\n\t\t\t/* istanbul ignore else */\n\t\t\tif (this.hasCountry(country)) {\n\t\t\t\tthis.country(country);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'selectedCountry',\n\t\tvalue: function selectedCountry() {\n\t\t\treturn this._country;\n\t\t}\n\t}]);\n\n\treturn Metadata;\n}();\n\nexport default Metadata;\n\nvar Format = function () {\n\tfunction Format(format, metadata) {\n\t\t_classCallCheck(this, Format);\n\n\t\tthis._format = format;\n\t\tthis.metadata = metadata;\n\t}\n\n\t_createClass(Format, [{\n\t\tkey: 'pattern',\n\t\tvalue: function pattern() {\n\t\t\treturn this._format[0];\n\t\t}\n\t}, {\n\t\tkey: 'format',\n\t\tvalue: function format() {\n\t\t\treturn this._format[1];\n\t\t}\n\t}, {\n\t\tkey: 'leadingDigitsPatterns',\n\t\tvalue: function leadingDigitsPatterns() {\n\t\t\treturn this._format[2] || [];\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixFormattingRule',\n\t\tvalue: function nationalPrefixFormattingRule() {\n\t\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixIsOptionalWhenFormatting',\n\t\tvalue: function nationalPrefixIsOptionalWhenFormatting() {\n\t\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormatting();\n\t\t}\n\t}, {\n\t\tkey: 'nationalPrefixIsMandatoryWhenFormatting',\n\t\tvalue: function nationalPrefixIsMandatoryWhenFormatting() {\n\t\t\t// National prefix is omitted if there's no national prefix formatting rule\n\t\t\t// set for this country, or when the national prefix formatting rule\n\t\t\t// contains no national prefix itself, or when this rule is set but\n\t\t\t// national prefix is optional for this phone number format\n\t\t\t// (and it is not enforced explicitly)\n\t\t\treturn this.nationalPrefixFormattingRule() &&\n\t\t\t// Check that national prefix formatting rule is not a dummy one.\n\t\t\t// Check that national prefix formatting rule actually has national prefix digit(s).\n\t\t\tthis.usesNationalPrefix() &&\n\t\t\t// Or maybe national prefix is optional for this format\n\t\t\t!this.nationalPrefixIsOptionalWhenFormatting();\n\t\t}\n\n\t\t// Checks whether national prefix formatting rule contains national prefix\n\n\t}, {\n\t\tkey: 'usesNationalPrefix',\n\t\tvalue: function usesNationalPrefix() {\n\t\t\t// Check that national prefix formatting rule is not a dummy one\n\t\t\treturn this.nationalPrefixFormattingRule() !== '$1' &&\n\t\t\t// Check that national prefix formatting rule actually has national prefix digit(s)\n\t\t\t/\\d/.test(this.nationalPrefixFormattingRule().replace('$1', ''));\n\t\t}\n\t}, {\n\t\tkey: 'internationalFormat',\n\t\tvalue: function internationalFormat() {\n\t\t\treturn this._format[5] || this.format();\n\t\t}\n\t}]);\n\n\treturn Format;\n}();\n\nvar Type = function () {\n\tfunction Type(type, metadata) {\n\t\t_classCallCheck(this, Type);\n\n\t\tthis.type = type;\n\t\tthis.metadata = metadata;\n\t}\n\n\t_createClass(Type, [{\n\t\tkey: 'pattern',\n\t\tvalue: function pattern() {\n\t\t\tif (this.metadata.v1) return this.type;\n\t\t\treturn this.type[0];\n\t\t}\n\t}, {\n\t\tkey: 'possibleLengths',\n\t\tvalue: function possibleLengths() {\n\t\t\tif (this.metadata.v1) return;\n\t\t\treturn this.type[1] || this.metadata.possibleLengths();\n\t\t}\n\t}]);\n\n\treturn Type;\n}();\n\nfunction getType(types, type) {\n\tswitch (type) {\n\t\tcase 'FIXED_LINE':\n\t\t\treturn types[0];\n\t\tcase 'MOBILE':\n\t\t\treturn types[1];\n\t\tcase 'TOLL_FREE':\n\t\t\treturn types[2];\n\t\tcase 'PREMIUM_RATE':\n\t\t\treturn types[3];\n\t\tcase 'PERSONAL_NUMBER':\n\t\t\treturn types[4];\n\t\tcase 'VOICEMAIL':\n\t\t\treturn types[5];\n\t\tcase 'UAN':\n\t\t\treturn types[6];\n\t\tcase 'PAGER':\n\t\t\treturn types[7];\n\t\tcase 'VOIP':\n\t\t\treturn types[8];\n\t\tcase 'SHARED_COST':\n\t\t\treturn types[9];\n\t}\n}\n\nexport function validateMetadata(metadata) {\n\tif (!metadata) {\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.');\n\t}\n\n\t// `country_phone_code_to_countries` was renamed to\n\t// `country_calling_codes` in `1.0.18`.\n\tif (!is_object(metadata) || !is_object(metadata.countries) || !is_object(metadata.country_calling_codes) && !is_object(metadata.country_phone_code_to_countries)) {\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument was passed but it\\'s not a valid metadata. Must be an object having `.countries` and `.country_calling_codes` child object properties. Got ' + (is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata) + '.');\n\t}\n}\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar is_object = function is_object(_) {\n\treturn (typeof _ === 'undefined' ? 'undefined' : _typeof(_)) === 'object';\n};\n\n// Babel transforms `typeof` into some \"branches\"\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar type_of = function type_of(_) {\n\treturn typeof _ === 'undefined' ? 'undefined' : _typeof(_);\n};\n\nexport function getExtPrefix(country, metadata) {\n\treturn new Metadata(metadata).country(country).ext();\n}\n//# sourceMappingURL=metadata.js.map","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n// This is a port of Google Android `libphonenumber`'s\n// `phonenumberutil.js` of 17th November, 2016.\n//\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\n\nimport { extractCountryCallingCode, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS, MAX_LENGTH_FOR_NSN, matches_entirely, create_extension_pattern } from './common';\n\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber';\n\nimport Metadata from './metadata';\n\nimport getCountryCallingCode from './getCountryCallingCode';\n\nimport get_number_type, { check_number_length_for_type } from './getNumberType';\n\nimport { is_possible_number } from './isPossibleNumber';\n\nimport { parseRFC3966 } from './RFC3966';\n\nimport PhoneNumber from './PhoneNumber';\n\n// The minimum length of the national significant number.\nvar MIN_LENGTH_FOR_NSN = 2;\n\n// We don't allow input strings for parsing to be longer than 250 chars.\n// This prevents malicious input from consuming CPU.\nvar MAX_INPUT_STRING_LENGTH = 250;\n\n/**\n * Regexp of all possible ways to write extensions, for use when parsing. This\n * will be run as a case-insensitive regexp match. Wide character versions are\n * also provided after each ASCII version. There are three regular expressions\n * here. The first covers RFC 3966 format, where the extension is added using\n * ';ext='. The second more generic one starts with optional white space and\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\n * /commas and then the numbers themselves. The other one covers the special\n * case of American numbers where the extension is written with a hash at the\n * end, such as '- 503#'. Note that the only capturing groups should be around\n * the digits that you want to capture as part of the extension, or else parsing\n * will fail! We allow two options for representing the accented o - the\n * character itself, and one in the unicode decomposed form with the combining\n * acute accent.\n */\nvar EXTN_PATTERNS_FOR_PARSING = create_extension_pattern('parsing');\n\n// Regexp of all known extension prefixes used by different regions followed by\n// 1 or more valid digits, for use when parsing.\nvar EXTN_PATTERN = new RegExp('(?:' + EXTN_PATTERNS_FOR_PARSING + ')$', 'i');\n\n// Regular expression of viable phone numbers. This is location independent.\n// Checks we have at least three leading digits, and only valid punctuation,\n// alpha characters and digits in the phone number. Does not include extension\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\n// used as a placeholder for carrier codes, for example in Brazilian phone\n// numbers. We also allow multiple '+' characters at the start.\n//\n// Corresponds to the following:\n// [digits]{minLengthNsn}|\n// plus_sign*\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\n//\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\n// The second expression restricts the number of digits to three or more, but\n// then allows them to be in international form, and to have alpha-characters\n// and punctuation. We split up the two reg-exes here and combine them when\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\n// with ^ and append $ to each branch.\n//\n// \"Note VALID_PUNCTUATION starts with a -,\n// so must be the first in the range\" (c) Google devs.\n// (wtf did they mean by saying that; probably nothing)\n//\nvar MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}';\n//\n// And this is the second reg-exp:\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\n//\nvar VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\n// The combined regular expression for valid phone numbers:\n//\nvar VALID_PHONE_NUMBER_PATTERN = new RegExp(\n// Either a short two-digit-only phone number\n'^' + MIN_LENGTH_PHONE_NUMBER_PATTERN + '$' + '|' +\n// Or a longer fully parsed phone number (min 3 characters)\n'^' + VALID_PHONE_NUMBER +\n// Phone number extensions\n'(?:' + EXTN_PATTERNS_FOR_PARSING + ')?' + '$', 'i');\n\n// This consists of the plus symbol, digits, and arabic-indic digits.\nvar PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']');\n\n// Regular expression of trailing characters that we want to remove.\nvar AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + ']+$');\n\nvar default_options = {\n\tcountry: {}\n\n\t// `options`:\n\t// {\n\t// country:\n\t// {\n\t// restrict - (a two-letter country code)\n\t// the phone number must be in this country\n\t//\n\t// default - (a two-letter country code)\n\t// default country to use for phone number parsing and validation\n\t// (if no country code could be derived from the phone number)\n\t// }\n\t// }\n\t//\n\t// Returns `{ country, number }`\n\t//\n\t// Example use cases:\n\t//\n\t// ```js\n\t// parse('8 (800) 555-35-35', 'RU')\n\t// parse('8 (800) 555-35-35', 'RU', metadata)\n\t// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\n\t// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\n\t// parse('+7 800 555 35 35')\n\t// parse('+7 800 555 35 35', metadata)\n\t// ```\n\t//\n};export default function parse(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t text = _sort_out_arguments.text,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\t// Validate `defaultCountry`.\n\n\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\n\t\tif (options.v2) {\n\t\t\tthrow new Error('INVALID_COUNTRY');\n\t\t}\n\t\tthrow new Error('Unknown country: ' + options.defaultCountry);\n\t}\n\n\t// Parse the phone number.\n\n\tvar _parse_input = parse_input(text, options.v2),\n\t formatted_phone_number = _parse_input.number,\n\t ext = _parse_input.ext;\n\n\t// If the phone number is not viable then return nothing.\n\n\n\tif (!formatted_phone_number) {\n\t\tif (options.v2) {\n\t\t\tthrow new Error('NOT_A_NUMBER');\n\t\t}\n\t\treturn {};\n\t}\n\n\tvar _parse_phone_number = parse_phone_number(formatted_phone_number, options.defaultCountry, metadata),\n\t country = _parse_phone_number.country,\n\t nationalNumber = _parse_phone_number.national_number,\n\t countryCallingCode = _parse_phone_number.countryCallingCode,\n\t carrierCode = _parse_phone_number.carrierCode;\n\n\tif (!metadata.selectedCountry()) {\n\t\tif (options.v2) {\n\t\t\tthrow new Error('INVALID_COUNTRY');\n\t\t}\n\t\treturn {};\n\t}\n\n\t// Validate national (significant) number length.\n\tif (nationalNumber.length < MIN_LENGTH_FOR_NSN) {\n\t\t// Won't throw here because the regexp already demands length > 1.\n\t\t/* istanbul ignore if */\n\t\tif (options.v2) {\n\t\t\tthrow new Error('TOO_SHORT');\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {};\n\t}\n\n\t// Validate national (significant) number length.\n\t//\n\t// A sidenote:\n\t//\n\t// They say that sometimes national (significant) numbers\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\n\t// Such numbers will just be discarded.\n\t//\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\n\t\tif (options.v2) {\n\t\t\tthrow new Error('TOO_LONG');\n\t\t}\n\t\t// Google's demo just throws an error in this case.\n\t\treturn {};\n\t}\n\n\tif (options.v2) {\n\t\tvar phoneNumber = new PhoneNumber(countryCallingCode, nationalNumber, metadata.metadata);\n\n\t\tif (country) {\n\t\t\tphoneNumber.country = country;\n\t\t}\n\t\tif (carrierCode) {\n\t\t\tphoneNumber.carrierCode = carrierCode;\n\t\t}\n\t\tif (ext) {\n\t\t\tphoneNumber.ext = ext;\n\t\t}\n\n\t\treturn phoneNumber;\n\t}\n\n\t// Check if national phone number pattern matches the number\n\t// National number pattern is different for each country,\n\t// even for those ones which are part of the \"NANPA\" group.\n\tvar valid = country && matches_entirely(nationalNumber, metadata.nationalNumberPattern()) ? true : false;\n\n\tif (!options.extended) {\n\t\treturn valid ? result(country, nationalNumber, ext) : {};\n\t}\n\n\treturn {\n\t\tcountry: country,\n\t\tcountryCallingCode: countryCallingCode,\n\t\tcarrierCode: carrierCode,\n\t\tvalid: valid,\n\t\tpossible: valid ? true : options.extended === true && metadata.possibleLengths() && is_possible_number(nationalNumber, countryCallingCode !== undefined, metadata),\n\t\tphone: nationalNumber,\n\t\text: ext\n\t};\n}\n\n// Checks to see if the string of characters could possibly be a phone number at\n// all. At the moment, checks to see that the string begins with at least 2\n// digits, ignoring any punctuation commonly found in phone numbers. This method\n// does not require the number to be normalized in advance - but does assume\n// that leading non-number symbols have been removed, such as by the method\n// `extract_possible_number`.\n//\nexport function is_viable_phone_number(number) {\n\treturn number.length >= MIN_LENGTH_FOR_NSN && VALID_PHONE_NUMBER_PATTERN.test(number);\n}\n\n/**\n * Extracts a parseable phone number.\n * @param {string} text - Input.\n * @return {string}.\n */\nexport function extract_formatted_phone_number(text, v2) {\n\tif (!text) {\n\t\treturn;\n\t}\n\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\n\t\tif (v2) {\n\t\t\tthrow new Error('TOO_LONG');\n\t\t}\n\t\treturn;\n\t}\n\n\t// Attempt to extract a possible number from the string passed in\n\n\tvar starts_at = text.search(PHONE_NUMBER_START_PATTERN);\n\n\tif (starts_at < 0) {\n\t\treturn;\n\t}\n\n\treturn text\n\t// Trim everything to the left of the phone number\n\t.slice(starts_at)\n\t// Remove trailing non-numerical characters\n\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '');\n}\n\n// Strips any national prefix (such as 0, 1) present in the number provided.\n// \"Carrier codes\" are only used in Colombia and Brazil,\n// and only when dialing within those countries from a mobile phone to a fixed line number.\nexport function strip_national_prefix_and_carrier_code(number, metadata) {\n\tif (!number || !metadata.nationalPrefixForParsing()) {\n\t\treturn { number: number };\n\t}\n\n\t// Attempt to parse the first digits as a national prefix\n\tvar national_prefix_pattern = new RegExp('^(?:' + metadata.nationalPrefixForParsing() + ')');\n\tvar national_prefix_matcher = national_prefix_pattern.exec(number);\n\n\t// If no national prefix is present in the phone number,\n\t// but the national prefix is optional for this country,\n\t// then consider this phone number valid.\n\t//\n\t// Google's reference `libphonenumber` implementation\n\t// wouldn't recognize such phone numbers as valid,\n\t// but I think it would perfectly make sense\n\t// to consider such phone numbers as valid\n\t// because if a national phone number was originally\n\t// formatted without the national prefix\n\t// then it must be parseable back into the original national number.\n\t// In other words, `parse(format(number))`\n\t// must always be equal to `number`.\n\t//\n\tif (!national_prefix_matcher) {\n\t\treturn { number: number };\n\t}\n\n\tvar national_significant_number = void 0;\n\n\t// `national_prefix_for_parsing` capturing groups\n\t// (used only for really messy cases: Argentina, Brazil, Mexico, Somalia)\n\tvar captured_groups_count = national_prefix_matcher.length - 1;\n\n\t// If the national number tranformation is needed then do it.\n\t//\n\t// I don't know what did they mean by `&& national_prefix_matcher[captured_groups_count]`.\n\t// https://github.com/googlei18n/libphonenumber/blob/d978e59c2e6b1ddfb6816cd190e1b62d9a96bc3b/javascript/i18n/phonenumbers/phonenumberutil.js#L3885\n\t// https://github.com/googlei18n/libphonenumber/blob/d978e59c2e6b1ddfb6816cd190e1b62d9a96bc3b/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2906\n\t//\n\tif (metadata.nationalPrefixTransformRule() && national_prefix_matcher[captured_groups_count]) {\n\t\tnational_significant_number = number.replace(national_prefix_pattern, metadata.nationalPrefixTransformRule());\n\t}\n\t// Else, no transformation is necessary,\n\t// and just strip the national prefix.\n\telse {\n\t\t\tnational_significant_number = number.slice(national_prefix_matcher[0].length);\n\t\t}\n\n\tvar carrierCode = void 0;\n\tif (captured_groups_count > 0) {\n\t\tcarrierCode = national_prefix_matcher[1];\n\t}\n\n\t// The following is done in `get_country_and_national_number_for_local_number()` instead.\n\t//\n\t// // Verify the parsed national (significant) number for this country\n\t// const national_number_rule = new RegExp(metadata.nationalNumberPattern())\n\t// //\n\t// // If the original number (before stripping national prefix) was viable,\n\t// // and the resultant number is not, then prefer the original phone number.\n\t// // This is because for some countries (e.g. Russia) the same digit could be both\n\t// // a national prefix and a leading digit of a valid national phone number,\n\t// // like `8` is the national prefix for Russia and both\n\t// // `8 800 555 35 35` and `800 555 35 35` are valid numbers.\n\t// if (matches_entirely(number, national_number_rule) &&\n\t// \t\t!matches_entirely(national_significant_number, national_number_rule))\n\t// {\n\t// \treturn number\n\t// }\n\n\t// Return the parsed national (significant) number\n\treturn {\n\t\tnumber: national_significant_number,\n\t\tcarrierCode: carrierCode\n\t};\n}\n\nexport function find_country_code(country_calling_code, national_phone_number, metadata) {\n\t// Is always non-empty, because `country_calling_code` is always valid\n\tvar possible_countries = metadata.countryCallingCodes()[country_calling_code];\n\n\t// If there's just one country corresponding to the country code,\n\t// then just return it, without further phone number digits validation.\n\tif (possible_countries.length === 1) {\n\t\treturn possible_countries[0];\n\t}\n\n\treturn _find_country_code(possible_countries, national_phone_number, metadata.metadata);\n}\n\n// Changes `metadata` `country`.\nfunction _find_country_code(possible_countries, national_phone_number, metadata) {\n\tmetadata = new Metadata(metadata);\n\n\tfor (var _iterator = possible_countries, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar country = _ref;\n\n\t\tmetadata.country(country);\n\n\t\t// Leading digits check would be the simplest one\n\t\tif (metadata.leadingDigits()) {\n\t\t\tif (national_phone_number && national_phone_number.search(metadata.leadingDigits()) === 0) {\n\t\t\t\treturn country;\n\t\t\t}\n\t\t}\n\t\t// Else perform full validation with all of those\n\t\t// fixed-line/mobile/etc regular expressions.\n\t\telse if (get_number_type({ phone: national_phone_number, country: country }, metadata.metadata)) {\n\t\t\t\treturn country;\n\t\t\t}\n\t}\n}\n\n// Sort out arguments\nfunction sort_out_arguments(arg_1, arg_2, arg_3, arg_4) {\n\tvar text = void 0;\n\tvar options = void 0;\n\tvar metadata = void 0;\n\n\t// If the phone number is passed as a string.\n\t// `parse('88005553535', ...)`.\n\tif (typeof arg_1 === 'string') {\n\t\ttext = arg_1;\n\t} else throw new TypeError('A phone number for parsing must be a string.');\n\n\t// If \"default country\" argument is being passed\n\t// then move it to `options`.\n\t// `parse('88005553535', 'RU', [options], metadata)`.\n\tif ((typeof arg_2 === 'undefined' ? 'undefined' : _typeof(arg_2)) !== 'object') {\n\t\tif (arg_4) {\n\t\t\toptions = _extends({ defaultCountry: arg_2 }, arg_3);\n\t\t\tmetadata = arg_4;\n\t\t} else {\n\t\t\toptions = { defaultCountry: arg_2 };\n\t\t\tmetadata = arg_3;\n\t\t}\n\t}\n\t// No \"default country\" argument is being passed.\n\t// International phone number is passed.\n\t// `parse('+78005553535', [options], metadata)`.\n\telse {\n\t\t\tif (arg_3) {\n\t\t\t\toptions = arg_2;\n\t\t\t\tmetadata = arg_3;\n\t\t\t} else {\n\t\t\t\tmetadata = arg_2;\n\t\t\t}\n\t\t}\n\n\t// Apply default options.\n\tif (options) {\n\t\toptions = _extends({}, default_options, options);\n\t} else {\n\t\toptions = default_options;\n\t}\n\n\treturn { text: text, options: options, metadata: new Metadata(metadata) };\n}\n\n// Strips any extension (as in, the part of the number dialled after the call is\n// connected, usually indicated with extn, ext, x or similar) from the end of\n// the number, and returns it.\nfunction strip_extension(number) {\n\tvar start = number.search(EXTN_PATTERN);\n\tif (start < 0) {\n\t\treturn {};\n\t}\n\n\t// If we find a potential extension, and the number preceding this is a viable\n\t// number, we assume it is an extension.\n\tvar number_without_extension = number.slice(0, start);\n\t/* istanbul ignore if - seems a bit of a redundant check */\n\tif (!is_viable_phone_number(number_without_extension)) {\n\t\treturn {};\n\t}\n\n\tvar matches = number.match(EXTN_PATTERN);\n\tvar i = 1;\n\twhile (i < matches.length) {\n\t\tif (matches[i] != null && matches[i].length > 0) {\n\t\t\treturn {\n\t\t\t\tnumber: number_without_extension,\n\t\t\t\text: matches[i]\n\t\t\t};\n\t\t}\n\t\ti++;\n\t}\n}\n\n/**\n * @param {string} text - Input.\n * @return {object} `{ ?number, ?ext }`.\n */\nfunction parse_input(text, v2) {\n\t// Parse RFC 3966 phone number URI.\n\tif (text && text.indexOf('tel:') === 0) {\n\t\treturn parseRFC3966(text);\n\t}\n\n\tvar number = extract_formatted_phone_number(text, v2);\n\n\t// If the phone number is not viable, then abort.\n\tif (!number || !is_viable_phone_number(number)) {\n\t\treturn {};\n\t}\n\n\t// Attempt to parse extension first, since it doesn't require region-specific\n\t// data and we want to have the non-normalised number here.\n\tvar with_extension_stripped = strip_extension(number);\n\tif (with_extension_stripped.ext) {\n\t\treturn with_extension_stripped;\n\t}\n\n\treturn { number: number };\n}\n\n/**\n * Creates `parse()` result object.\n */\nfunction result(country, national_number, ext) {\n\tvar result = {\n\t\tcountry: country,\n\t\tphone: national_number\n\t};\n\n\tif (ext) {\n\t\tresult.ext = ext;\n\t}\n\n\treturn result;\n}\n\n/**\n * Parses a viable phone number.\n * Returns `{ country, countryCallingCode, national_number }`.\n */\nfunction parse_phone_number(formatted_phone_number, default_country, metadata) {\n\tvar _extractCountryCallin = extractCountryCallingCode(formatted_phone_number, default_country, metadata.metadata),\n\t countryCallingCode = _extractCountryCallin.countryCallingCode,\n\t number = _extractCountryCallin.number;\n\n\tif (!number) {\n\t\treturn { countryCallingCode: countryCallingCode };\n\t}\n\n\tvar country = void 0;\n\n\tif (countryCallingCode) {\n\t\tmetadata.chooseCountryByCountryCallingCode(countryCallingCode);\n\t} else if (default_country) {\n\t\tmetadata.country(default_country);\n\t\tcountry = default_country;\n\t\tcountryCallingCode = getCountryCallingCode(default_country, metadata.metadata);\n\t} else return {};\n\n\tvar _parse_national_numbe = parse_national_number(number, metadata),\n\t national_number = _parse_national_numbe.national_number,\n\t carrier_code = _parse_national_numbe.carrier_code;\n\n\t// Sometimes there are several countries\n\t// corresponding to the same country phone code\n\t// (e.g. NANPA countries all having `1` country phone code).\n\t// Therefore, to reliably determine the exact country,\n\t// national (significant) number should have been parsed first.\n\t//\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\n\t// get their countries populated with the full set of\n\t// \"phone number type\" regular expressions.\n\t//\n\n\n\tvar exactCountry = find_country_code(countryCallingCode, national_number, metadata);\n\tif (exactCountry) {\n\t\tcountry = exactCountry;\n\t\tmetadata.country(country);\n\t}\n\n\treturn {\n\t\tcountry: country,\n\t\tcountryCallingCode: countryCallingCode,\n\t\tnational_number: national_number,\n\t\tcarrierCode: carrier_code\n\t};\n}\n\nfunction parse_national_number(number, metadata) {\n\tvar national_number = parseIncompletePhoneNumber(number);\n\tvar carrier_code = void 0;\n\n\t// Only strip national prefixes for non-international phone numbers\n\t// because national prefixes can't be present in international phone numbers.\n\t// Otherwise, while forgiving, it would parse a NANPA number `+1 1877 215 5230`\n\t// first to `1877 215 5230` and then, stripping the leading `1`, to `877 215 5230`,\n\t// and then it would assume that's a valid number which it isn't.\n\t// So no forgiveness for grandmas here.\n\t// The issue asking for this fix:\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/159\n\n\tvar _strip_national_prefi = strip_national_prefix_and_carrier_code(national_number, metadata),\n\t potential_national_number = _strip_national_prefi.number,\n\t carrierCode = _strip_national_prefi.carrierCode;\n\n\t// If metadata has \"possible lengths\" then employ the new algorythm.\n\n\n\tif (metadata.possibleLengths()) {\n\t\t// We require that the NSN remaining after stripping the national prefix and\n\t\t// carrier code be long enough to be a possible length for the region.\n\t\t// Otherwise, we don't do the stripping, since the original number could be\n\t\t// a valid short number.\n\t\tswitch (check_number_length_for_type(potential_national_number, undefined, metadata)) {\n\t\t\tcase 'TOO_SHORT':\n\t\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t\tcase 'INVALID_LENGTH':\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tnational_number = potential_national_number;\n\t\t\t\tcarrier_code = carrierCode;\n\t\t}\n\t} else {\n\t\t// If the original number (before stripping national prefix) was viable,\n\t\t// and the resultant number is not, then prefer the original phone number.\n\t\t// This is because for some countries (e.g. Russia) the same digit could be both\n\t\t// a national prefix and a leading digit of a valid national phone number,\n\t\t// like `8` is the national prefix for Russia and both\n\t\t// `8 800 555 35 35` and `800 555 35 35` are valid numbers.\n\t\tif (matches_entirely(national_number, metadata.nationalNumberPattern()) && !matches_entirely(potential_national_number, metadata.nationalNumberPattern())) {\n\t\t\t// Keep the number without stripping national prefix.\n\t\t} else {\n\t\t\tnational_number = potential_national_number;\n\t\t\tcarrier_code = carrierCode;\n\t\t}\n\t}\n\n\treturn {\n\t\tnational_number: national_number,\n\t\tcarrier_code: carrier_code\n\t};\n}\n\n// Determines the country for a given (possibly incomplete) phone number.\n// export function get_country_from_phone_number(number, metadata)\n// {\n// \treturn parse_phone_number(number, null, metadata).country\n// }\n//# sourceMappingURL=parse.js.map","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport parse, { is_viable_phone_number } from './parse';\n\nimport { matches_entirely } from './common';\n\nimport Metadata from './metadata';\n\nvar non_fixed_line_types = ['MOBILE', 'PREMIUM_RATE', 'TOLL_FREE', 'SHARED_COST', 'VOIP', 'PERSONAL_NUMBER', 'PAGER', 'UAN', 'VOICEMAIL'];\n\n// Finds out national phone number type (fixed line, mobile, etc)\nexport default function get_number_type(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t input = _sort_out_arguments.input,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\t// When `parse()` returned `{}`\n\t// meaning that the phone number is not a valid one.\n\n\n\tif (!input.country) {\n\t\treturn;\n\t}\n\n\tif (!metadata.hasCountry(input.country)) {\n\t\tthrow new Error('Unknown country: ' + input.country);\n\t}\n\n\tvar nationalNumber = options.v2 ? input.nationalNumber : input.phone;\n\tmetadata.country(input.country);\n\n\t// The following is copy-pasted from the original function:\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\n\n\t// Is this national number even valid for this country\n\tif (!matches_entirely(nationalNumber, metadata.nationalNumberPattern())) {\n\t\treturn;\n\t}\n\n\t// Is it fixed line number\n\tif (is_of_type(nationalNumber, 'FIXED_LINE', metadata)) {\n\t\t// Because duplicate regular expressions are removed\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\n\t\t//\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\t// v1 metadata.\n\t\t// Legacy.\n\t\t// Deprecated.\n\t\tif (!metadata.type('MOBILE')) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\n\t\t// (no such country in the minimal metadata set)\n\t\t/* istanbul ignore if */\n\t\tif (is_of_type(nationalNumber, 'MOBILE', metadata)) {\n\t\t\treturn 'FIXED_LINE_OR_MOBILE';\n\t\t}\n\n\t\treturn 'FIXED_LINE';\n\t}\n\n\tfor (var _iterator = non_fixed_line_types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar _type = _ref;\n\n\t\tif (is_of_type(nationalNumber, _type, metadata)) {\n\t\t\treturn _type;\n\t\t}\n\t}\n}\n\nexport function is_of_type(nationalNumber, type, metadata) {\n\ttype = metadata.type(type);\n\n\tif (!type || !type.pattern()) {\n\t\treturn false;\n\t}\n\n\t// Check if any possible number lengths are present;\n\t// if so, we use them to avoid checking\n\t// the validation pattern if they don't match.\n\t// If they are absent, this means they match\n\t// the general description, which we have\n\t// already checked before a specific number type.\n\tif (type.possibleLengths() && type.possibleLengths().indexOf(nationalNumber.length) < 0) {\n\t\treturn false;\n\t}\n\n\treturn matches_entirely(nationalNumber, type.pattern());\n}\n\n// Sort out arguments\nexport function sort_out_arguments(arg_1, arg_2, arg_3, arg_4) {\n\tvar input = void 0;\n\tvar options = {};\n\tvar metadata = void 0;\n\n\t// If the phone number is passed as a string.\n\t// `getNumberType('88005553535', ...)`.\n\tif (typeof arg_1 === 'string') {\n\t\t// If \"default country\" argument is being passed\n\t\t// then convert it to an `options` object.\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\n\t\tif ((typeof arg_2 === 'undefined' ? 'undefined' : _typeof(arg_2)) !== 'object') {\n\t\t\tif (arg_4) {\n\t\t\t\toptions = arg_3;\n\t\t\t\tmetadata = arg_4;\n\t\t\t} else {\n\t\t\t\tmetadata = arg_3;\n\t\t\t}\n\n\t\t\t// `parse` extracts phone numbers from raw text,\n\t\t\t// therefore it will cut off all \"garbage\" characters,\n\t\t\t// while this `validate` function needs to verify\n\t\t\t// that the phone number contains no \"garbage\"\n\t\t\t// therefore the explicit `is_viable_phone_number` check.\n\t\t\tif (is_viable_phone_number(arg_1)) {\n\t\t\t\tinput = parse(arg_1, arg_2, metadata);\n\t\t\t} else {\n\t\t\t\tinput = {};\n\t\t\t}\n\t\t}\n\t\t// No \"resrict country\" argument is being passed.\n\t\t// International phone number is passed.\n\t\t// `getNumberType('+78005553535', metadata)`.\n\t\telse {\n\t\t\t\tif (arg_3) {\n\t\t\t\t\toptions = arg_2;\n\t\t\t\t\tmetadata = arg_3;\n\t\t\t\t} else {\n\t\t\t\t\tmetadata = arg_2;\n\t\t\t\t}\n\n\t\t\t\t// `parse` extracts phone numbers from raw text,\n\t\t\t\t// therefore it will cut off all \"garbage\" characters,\n\t\t\t\t// while this `validate` function needs to verify\n\t\t\t\t// that the phone number contains no \"garbage\"\n\t\t\t\t// therefore the explicit `is_viable_phone_number` check.\n\t\t\t\tif (is_viable_phone_number(arg_1)) {\n\t\t\t\t\tinput = parse(arg_1, metadata);\n\t\t\t\t} else {\n\t\t\t\t\tinput = {};\n\t\t\t\t}\n\t\t\t}\n\t}\n\t// If the phone number is passed as a parsed phone number.\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\n\telse if (is_object(arg_1)) {\n\t\t\tinput = arg_1;\n\n\t\t\tif (arg_3) {\n\t\t\t\toptions = arg_2;\n\t\t\t\tmetadata = arg_3;\n\t\t\t} else {\n\t\t\t\tmetadata = arg_2;\n\t\t\t}\n\t\t} else throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.');\n\n\treturn { input: input, options: options, metadata: new Metadata(metadata) };\n}\n\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\nexport function check_number_length_for_type(nationalNumber, type, metadata) {\n\tvar type_info = metadata.type(type);\n\n\t// There should always be \"
Vanity numbers (phone numbers using alphabetic digits such as 1-800-SIX-FLAGS are\n * not found.\n *\n *
This class is not thread-safe.\n */\n\nvar PhoneNumberMatcher = function () {\n\n /**\n * Creates a new instance. See the factory methods in {@link PhoneNumberUtil} on how to obtain a\n * new instance.\n *\n * @param util the phone number util to use\n * @param text the character sequence that we will search, null for no text\n * @param country the country to assume for phone numbers not written in international format\n * (with a leading plus, or with the international dialing prefix of the specified region).\n * May be null or \"ZZ\" if only numbers with a leading plus should be\n * considered.\n * @param leniency the leniency to use when evaluating candidate phone numbers\n * @param maxTries the maximum number of invalid numbers to try before giving up on the text.\n * This is to cover degenerate cases where the text has a lot of false positives in it. Must\n * be {@code >= 0}.\n */\n\n /** The iteration tristate. */\n function PhoneNumberMatcher() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var metadata = arguments[2];\n\n _classCallCheck(this, PhoneNumberMatcher);\n\n this.state = 'NOT_READY';\n this.searchIndex = 0;\n\n options = _extends({}, options, {\n leniency: options.leniency || options.extended ? 'POSSIBLE' : 'VALID',\n maxTries: options.maxTries || MAX_SAFE_INTEGER\n });\n\n if (!options.leniency) {\n throw new TypeError('`Leniency` not supplied');\n }\n\n if (options.maxTries < 0) {\n throw new TypeError('`maxTries` not supplied');\n }\n\n this.text = text;\n this.options = options;\n this.metadata = metadata;\n\n /** The degree of validation requested. */\n this.leniency = Leniency[options.leniency];\n\n if (!this.leniency) {\n throw new TypeError('Unknown leniency: ' + options.leniency + '.');\n }\n\n /** The maximum number of retries after matching an invalid number. */\n this.maxTries = options.maxTries;\n\n this.PATTERN = new RegExp(PATTERN, 'ig');\n }\n\n /**\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\n * that represents a phone number. Returns the next match, null if none was found.\n *\n * @param index the search index to start searching at\n * @return the phone number match found, null if none can be found\n */\n\n\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\n\n\n _createClass(PhoneNumberMatcher, [{\n key: 'find',\n value: function find() // (index)\n {\n // // Reset the regular expression.\n // this.PATTERN.lastIndex = index\n\n var matches = void 0;\n while (this.maxTries > 0 && (matches = this.PATTERN.exec(this.text)) !== null) {\n var candidate = matches[0];\n var offset = matches.index;\n\n candidate = parsePreCandidate(candidate);\n\n if (isValidPreCandidate(candidate, offset, this.text)) {\n var match =\n // Try to come up with a valid match given the entire candidate.\n this.parseAndVerify(candidate, offset, this.text)\n // If that failed, try to find an \"inner match\" -\n // there might be a phone number within this candidate.\n || this.extractInnerMatch(candidate, offset, this.text);\n\n if (match) {\n if (this.options.v2) {\n var phoneNumber = new PhoneNumber(match.country, match.phone, this.metadata.metadata);\n if (match.ext) {\n phoneNumber.ext = match.ext;\n }\n return {\n startsAt: match.startsAt,\n endsAt: match.endsAt,\n number: phoneNumber\n };\n }\n return match;\n }\n }\n\n this.maxTries--;\n }\n }\n\n /**\n * Attempts to extract a match from `candidate`\n * if the whole candidate does not qualify as a match.\n */\n\n }, {\n key: 'extractInnerMatch',\n value: function extractInnerMatch(candidate, offset, text) {\n for (var _iterator = INNER_MATCHES, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var innerMatchPattern = _ref;\n\n var isFirstMatch = true;\n var matches = void 0;\n var possibleInnerMatch = new RegExp(innerMatchPattern, 'g');\n while ((matches = possibleInnerMatch.exec(candidate)) !== null && this.maxTries > 0) {\n if (isFirstMatch) {\n // We should handle any group before this one too.\n var _group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidate.slice(0, matches.index));\n\n var _match = this.parseAndVerify(_group, offset, text);\n if (_match) {\n return _match;\n }\n\n this.maxTries--;\n isFirstMatch = false;\n }\n\n var group = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, matches[1]);\n\n // Java code does `groupMatcher.start(1)` here,\n // but there's no way in javascript to get a group match start index,\n // therefore using the overall match start index `matches.index`.\n var match = this.parseAndVerify(group, offset + matches.index, text);\n if (match) {\n return match;\n }\n\n this.maxTries--;\n }\n }\n }\n\n /**\n * Parses a phone number from the `candidate` using `parseNumber` and\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\n *\n * @param candidate the candidate match\n * @param offset the offset of {@code candidate} within {@link #text}\n * @return the parsed and validated phone number match, or null\n */\n\n }, {\n key: 'parseAndVerify',\n value: function parseAndVerify(candidate, offset, text) {\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\n return;\n }\n\n var number = parseNumber(candidate, {\n extended: true,\n defaultCountry: this.options.defaultCountry\n }, this.metadata.metadata);\n\n if (!number.possible) {\n return;\n }\n\n if (this.leniency(number, candidate, this.metadata.metadata)) {\n // // We used parseAndKeepRawInput to create this number,\n // // but for now we don't return the extra values parsed.\n // // TODO: stop clearing all values here and switch all users over\n // // to using rawInput() rather than the rawString() of PhoneNumberMatch.\n // number.clearCountryCodeSource()\n // number.clearRawInput()\n // number.clearPreferredDomesticCarrierCode()\n\n var result = {\n startsAt: offset,\n endsAt: offset + candidate.length,\n country: number.country,\n phone: number.phone\n };\n\n if (number.ext) {\n result.ext = number.ext;\n }\n\n return result;\n }\n }\n }, {\n key: 'hasNext',\n value: function hasNext() {\n if (this.state === 'NOT_READY') {\n this.lastMatch = this.find(); // (this.searchIndex)\n\n if (this.lastMatch) {\n // this.searchIndex = this.lastMatch.endsAt\n this.state = 'READY';\n } else {\n this.state = 'DONE';\n }\n }\n\n return this.state === 'READY';\n }\n }, {\n key: 'next',\n value: function next() {\n // Check the state and find the next match as a side-effect if necessary.\n if (!this.hasNext()) {\n throw new Error('No next element');\n }\n\n // Don't retain that memory any longer than necessary.\n var result = this.lastMatch;\n this.lastMatch = null;\n this.state = 'NOT_READY';\n return result;\n }\n }]);\n\n return PhoneNumberMatcher;\n}();\n\nexport default PhoneNumberMatcher;\n//# sourceMappingURL=PhoneNumberMatcher.js.map","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport parse from './parse';\nimport Metadata from './metadata';\n\nimport { PLUS_CHARS, VALID_PUNCTUATION, VALID_DIGITS, WHITESPACE, create_extension_pattern } from './common';\n\nimport parsePreCandidate from './findNumbers/parsePreCandidate';\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate';\nimport isValidCandidate from './findNumbers/isValidCandidate';\n\n// Copy-pasted from `./parse.js`.\nvar VALID_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '(?:' + '[' + VALID_PUNCTUATION + ']*' + '[' + VALID_DIGITS + ']' + '){3,}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\nvar EXTN_PATTERNS_FOR_PARSING = create_extension_pattern('parsing');\n\nvar WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+');\nvar PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$');\n\n// // Regular expression for getting opening brackets for a valid number\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\n\nvar VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/;\n\nexport default function findPhoneNumbers(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t text = _sort_out_arguments.text,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\tvar search = new PhoneNumberSearch(text, options, metadata.metadata);\n\n\tvar phones = [];\n\n\twhile (search.hasNext()) {\n\t\tphones.push(search.next());\n\t}\n\n\treturn phones;\n}\n\n/**\n * @return ES6 `for ... of` iterator.\n */\nexport function searchPhoneNumbers(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments2 = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t text = _sort_out_arguments2.text,\n\t options = _sort_out_arguments2.options,\n\t metadata = _sort_out_arguments2.metadata;\n\n\tvar search = new PhoneNumberSearch(text, options, metadata.metadata);\n\n\treturn _defineProperty({}, Symbol.iterator, function () {\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tif (search.hasNext()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: search.next()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t});\n}\n\n/**\n * Extracts a parseable phone number including any opening brackets, etc.\n * @param {string} text - Input.\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\n */\nexport var PhoneNumberSearch = function () {\n\tfunction PhoneNumberSearch(text) {\n\t\tvar options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\tvar metadata = arguments[2];\n\n\t\t_classCallCheck(this, PhoneNumberSearch);\n\n\t\tthis.state = 'NOT_READY';\n\n\t\tthis.text = text;\n\t\tthis.options = options;\n\t\tthis.metadata = metadata;\n\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER +\n\t\t// Phone number extensions\n\t\t'(?:' + EXTN_PATTERNS_FOR_PARSING + ')?', 'ig');\n\n\t\t// this.searching_from = 0\n\t}\n\t// Iteration tristate.\n\n\n\t_createClass(PhoneNumberSearch, [{\n\t\tkey: 'find',\n\t\tvalue: function find() {\n\t\t\tvar matches = this.regexp.exec(this.text);\n\n\t\t\tif (!matches) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar number = matches[0];\n\t\t\tvar startsAt = matches.index;\n\n\t\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '');\n\t\t\tstartsAt += matches[0].length - number.length;\n\t\t\t// Fixes not parsing numbers with whitespace in the end.\n\t\t\t// Also fixes not parsing numbers with opening parentheses in the end.\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\n\t\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '');\n\n\t\t\tnumber = parsePreCandidate(number);\n\n\t\t\tvar result = this.parseCandidate(number, startsAt);\n\n\t\t\tif (result) {\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\t// Tail recursion.\n\t\t\t// Try the next one if this one is not a valid phone number.\n\t\t\treturn this.find();\n\t\t}\n\t}, {\n\t\tkey: 'parseCandidate',\n\t\tvalue: function parseCandidate(number, startsAt) {\n\t\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Don't parse phone numbers which are non-phone numbers\n\t\t\t// due to being part of something else (e.g. a UUID).\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\n\t\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\n\t\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// // Prepend any opening brackets left behind by the\n\t\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\n\t\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\n\t\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\n\t\t\t// if (full_number_starts_at >= 0)\n\t\t\t// {\n\t\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\n\t\t\t// \tstartsAt = full_number_starts_at\n\t\t\t// }\n\t\t\t//\n\t\t\t// this.searching_from = matches.lastIndex\n\n\t\t\tvar result = parse(number, this.options, this.metadata);\n\n\t\t\tif (!result.phone) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresult.startsAt = startsAt;\n\t\t\tresult.endsAt = startsAt + number.length;\n\n\t\t\treturn result;\n\t\t}\n\t}, {\n\t\tkey: 'hasNext',\n\t\tvalue: function hasNext() {\n\t\t\tif (this.state === 'NOT_READY') {\n\t\t\t\tthis.last_match = this.find();\n\n\t\t\t\tif (this.last_match) {\n\t\t\t\t\tthis.state = 'READY';\n\t\t\t\t} else {\n\t\t\t\t\tthis.state = 'DONE';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn this.state === 'READY';\n\t\t}\n\t}, {\n\t\tkey: 'next',\n\t\tvalue: function next() {\n\t\t\t// Check the state and find the next match as a side-effect if necessary.\n\t\t\tif (!this.hasNext()) {\n\t\t\t\tthrow new Error('No next element');\n\t\t\t}\n\n\t\t\t// Don't retain that memory any longer than necessary.\n\t\t\tvar result = this.last_match;\n\t\t\tthis.last_match = null;\n\t\t\tthis.state = 'NOT_READY';\n\t\t\treturn result;\n\t\t}\n\t}]);\n\n\treturn PhoneNumberSearch;\n}();\n\nexport function sort_out_arguments(arg_1, arg_2, arg_3, arg_4) {\n\tvar text = void 0;\n\tvar options = void 0;\n\tvar metadata = void 0;\n\n\t// If the phone number is passed as a string.\n\t// `parse('88005553535', ...)`.\n\tif (typeof arg_1 === 'string') {\n\t\ttext = arg_1;\n\t} else throw new TypeError('A text for parsing must be a string.');\n\n\t// If \"default country\" argument is being passed\n\t// then move it to `options`.\n\t// `findNumbers('88005553535', 'RU', [options], metadata)`.\n\tif ((typeof arg_2 === 'undefined' ? 'undefined' : _typeof(arg_2)) !== 'object') {\n\t\tif (arg_4) {\n\t\t\toptions = _extends({ defaultCountry: arg_2 }, arg_3);\n\t\t\tmetadata = arg_4;\n\t\t} else {\n\t\t\toptions = { defaultCountry: arg_2 };\n\t\t\tmetadata = arg_3;\n\t\t}\n\t}\n\t// No \"default country\" argument is being passed.\n\t// Only international phone numbers are passed.\n\t// `findNumbers('+78005553535', [options], metadata)`.\n\telse {\n\t\t\tif (arg_3) {\n\t\t\t\toptions = arg_2;\n\t\t\t\tmetadata = arg_3;\n\t\t\t} else {\n\t\t\t\tmetadata = arg_2;\n\t\t\t}\n\t\t}\n\n\tif (!options) {\n\t\toptions = {};\n\t}\n\n\t// // Apply default options.\n\t// if (options)\n\t// {\n\t// \toptions = { ...default_options, ...options }\n\t// }\n\t// else\n\t// {\n\t// \toptions = default_options\n\t// }\n\n\treturn { text: text, options: options, metadata: new Metadata(metadata) };\n}\n//# sourceMappingURL=findPhoneNumbers.js.map","var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nimport { is_viable_phone_number } from './parse';\n\n// https://www.ietf.org/rfc/rfc3966.txt\n\n/**\n * @param {string} text - Phone URI (RFC 3966).\n * @return {object} `{ ?number, ?ext }`.\n */\nexport function parseRFC3966(text) {\n\tvar number = void 0;\n\tvar ext = void 0;\n\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\n\ttext = text.replace(/^tel:/, 'tel=');\n\n\tfor (var _iterator = text.split(';'), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n\t\tvar _ref;\n\n\t\tif (_isArray) {\n\t\t\tif (_i >= _iterator.length) break;\n\t\t\t_ref = _iterator[_i++];\n\t\t} else {\n\t\t\t_i = _iterator.next();\n\t\t\tif (_i.done) break;\n\t\t\t_ref = _i.value;\n\t\t}\n\n\t\tvar part = _ref;\n\n\t\tvar _part$split = part.split('='),\n\t\t _part$split2 = _slicedToArray(_part$split, 2),\n\t\t name = _part$split2[0],\n\t\t value = _part$split2[1];\n\n\t\tswitch (name) {\n\t\t\tcase 'tel':\n\t\t\t\tnumber = value;\n\t\t\t\tbreak;\n\t\t\tcase 'ext':\n\t\t\t\text = value;\n\t\t\t\tbreak;\n\t\t\tcase 'phone-context':\n\t\t\t\t// Only \"country contexts\" are supported.\n\t\t\t\t// \"Domain contexts\" are ignored.\n\t\t\t\tif (value[0] === '+') {\n\t\t\t\t\tnumber = value + number;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// If the phone number is not viable, then abort.\n\tif (!is_viable_phone_number(number)) {\n\t\treturn {};\n\t}\n\n\tvar result = { number: number };\n\tif (ext) {\n\t\tresult.ext = ext;\n\t}\n\treturn result;\n}\n\n/**\n * @param {object} - `{ ?number, ?extension }`.\n * @return {string} Phone URI (RFC 3966).\n */\nexport function formatRFC3966(_ref2) {\n\tvar number = _ref2.number,\n\t ext = _ref2.ext;\n\n\tif (!number) {\n\t\treturn '';\n\t}\n\n\tif (number[0] !== '+') {\n\t\tthrow new Error('\"formatRFC3966()\" expects \"number\" to be in E.164 format.');\n\t}\n\n\treturn 'tel:' + number + (ext ? ';ext=' + ext : '');\n}\n//# sourceMappingURL=RFC3966.js.map","import { sort_out_arguments, check_number_length_for_type } from './getNumberType';\n\n/**\n * Checks if a given phone number is possible.\n * Which means it only checks phone number length\n * and doesn't test any regular expressions.\n *\n * Examples:\n *\n * ```js\n * isPossibleNumber('+78005553535', metadata)\n * isPossibleNumber('8005553535', 'RU', metadata)\n * isPossibleNumber('88005553535', 'RU', metadata)\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\n * ```\n */\nexport default function isPossibleNumber(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t input = _sort_out_arguments.input,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\tif (options.v2) {\n\t\tif (!input.countryCallingCode) {\n\t\t\tthrow new Error('Invalid phone number object passed');\n\t\t}\n\t\tmetadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n\t} else {\n\t\tif (!input.phone) {\n\t\t\treturn false;\n\t\t}\n\t\tif (input.country) {\n\t\t\tif (!metadata.hasCountry(input.country)) {\n\t\t\t\tthrow new Error('Unknown country: ' + input.country);\n\t\t\t}\n\t\t\tmetadata.country(input.country);\n\t\t} else {\n\t\t\tif (!input.countryCallingCode) {\n\t\t\t\tthrow new Error('Invalid phone number object passed');\n\t\t\t}\n\t\t\tmetadata.chooseCountryByCountryCallingCode(input.countryCallingCode);\n\t\t}\n\t}\n\n\tif (!metadata.possibleLengths()) {\n\t\tthrow new Error('Metadata too old');\n\t}\n\n\treturn is_possible_number(input.phone || input.nationalNumber, undefined, metadata);\n}\n\nexport function is_possible_number(national_number, is_international, metadata) {\n\tswitch (check_number_length_for_type(national_number, undefined, metadata)) {\n\t\tcase 'IS_POSSIBLE':\n\t\t\treturn true;\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\n\t\t// \treturn !is_international\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n//# sourceMappingURL=isPossibleNumber.js.map","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// This is an enhanced port of Google Android `libphonenumber`'s\n// `asyoutypeformatter.js` of October 26th, 2018.\n//\n// https://github.com/googlei18n/libphonenumber/blob/8d21a365061de2ba0675c878a710a7b24f74d2ae/javascript/i18n/phonenumbers/asyoutypeformatter.js\n//\n// Simplified: does not differentiate between \"local-only\" numbers\n// and \"internationally dialable\" numbers.\n// For example, doesn't include changes like this:\n// https://github.com/googlei18n/libphonenumber/commit/865da605da12b01053c4f053310bac7c5fbb7935\n\nimport Metadata from './metadata';\n\nimport PhoneNumber from './PhoneNumber';\n\nimport { matches_entirely, VALID_DIGITS, VALID_PUNCTUATION, PLUS_CHARS, extractCountryCallingCode } from './common';\n\nimport { extract_formatted_phone_number, find_country_code, strip_national_prefix_and_carrier_code } from './parse';\n\nimport { FIRST_GROUP_PATTERN, format_national_number_using_format, local_to_international_style } from './format';\n\nimport { check_number_length_for_type } from './getNumberType';\n\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber';\n\n// Used in phone number format template creation.\n// Could be any digit, I guess.\nvar DUMMY_DIGIT = '9';\n// I don't know why is it exactly `15`\nvar LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15;\n// Create a phone number consisting only of the digit 9 that matches the\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\nvar LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH);\n\n// The digits that have not been entered yet will be represented by a \\u2008,\n// the punctuation space.\nexport var DIGIT_PLACEHOLDER = 'x'; // '\\u2008' (punctuation space)\nvar DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER);\n\n// A pattern that is used to match character classes in regular expressions.\n// An example of a character class is \"[1-4]\".\nvar CREATE_CHARACTER_CLASS_PATTERN = function CREATE_CHARACTER_CLASS_PATTERN() {\n\treturn (/\\[([^\\[\\]])*\\]/g\n\t);\n};\n\n// Any digit in a regular expression that actually denotes a digit. For\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\n// (8 and 0) are standalone digits, but the rest are not.\n// Two look-aheads are needed because the number following \\\\d could be a\n// two-digit number, since the phone number can be as long as 15 digits.\nvar CREATE_STANDALONE_DIGIT_PATTERN = function CREATE_STANDALONE_DIGIT_PATTERN() {\n\treturn (/\\d(?=[^,}][^,}])/g\n\t);\n};\n\n// A pattern that is used to determine if a `format` is eligible\n// to be used by the \"as you type formatter\".\n// It is eligible when the `format` contains groups of the dollar sign\n// followed by a single digit, separated by valid phone number punctuation.\n// This prevents invalid punctuation (such as the star sign in Israeli star numbers)\n// getting into the output of the \"as you type formatter\".\nvar ELIGIBLE_FORMAT_PATTERN = new RegExp('^' + '[' + VALID_PUNCTUATION + ']*' + '(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)+' + '$');\n\n// This is the minimum length of the leading digits of a phone number\n// to guarantee the first \"leading digits pattern\" for a phone number format\n// to be preemptive.\nvar MIN_LEADING_DIGITS_LENGTH = 3;\n\nvar VALID_INCOMPLETE_PHONE_NUMBER = '[' + PLUS_CHARS + ']{0,1}' + '[' + VALID_PUNCTUATION + VALID_DIGITS + ']*';\n\nvar VALID_INCOMPLETE_PHONE_NUMBER_PATTERN = new RegExp('^' + VALID_INCOMPLETE_PHONE_NUMBER + '$', 'i');\n\nvar AsYouType = function () {\n\n\t/**\n * @param {string} [country_code] - The default country used for parsing non-international phone numbers.\n * @param {Object} metadata\n */\n\tfunction AsYouType(country_code, metadata) {\n\t\t_classCallCheck(this, AsYouType);\n\n\t\tthis.options = {};\n\n\t\tthis.metadata = new Metadata(metadata);\n\n\t\tif (country_code && this.metadata.hasCountry(country_code)) {\n\t\t\tthis.default_country = country_code;\n\t\t}\n\n\t\tthis.reset();\n\t}\n\t// Not setting `options` to a constructor argument\n\t// not to break backwards compatibility\n\t// for older versions of the library.\n\n\n\t_createClass(AsYouType, [{\n\t\tkey: 'input',\n\t\tvalue: function input(text) {\n\t\t\t// Parse input\n\n\t\t\tvar extracted_number = extract_formatted_phone_number(text) || '';\n\n\t\t\t// Special case for a lone '+' sign\n\t\t\t// since it's not considered a possible phone number.\n\t\t\tif (!extracted_number) {\n\t\t\t\tif (text && text.indexOf('+') >= 0) {\n\t\t\t\t\textracted_number = '+';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Validate possible first part of a phone number\n\t\t\tif (!VALID_INCOMPLETE_PHONE_NUMBER_PATTERN.test(extracted_number)) {\n\t\t\t\treturn this.current_output;\n\t\t\t}\n\n\t\t\treturn this.process_input(parseIncompletePhoneNumber(extracted_number));\n\t\t}\n\t}, {\n\t\tkey: 'process_input',\n\t\tvalue: function process_input(input) {\n\t\t\t// If an out of position '+' sign detected\n\t\t\t// (or a second '+' sign),\n\t\t\t// then just drop it from the input.\n\t\t\tif (input[0] === '+') {\n\t\t\t\tif (!this.parsed_input) {\n\t\t\t\t\tthis.parsed_input += '+';\n\n\t\t\t\t\t// If a default country was set\n\t\t\t\t\t// then reset it because an explicitly international\n\t\t\t\t\t// phone number is being entered\n\t\t\t\t\tthis.reset_countriness();\n\t\t\t\t}\n\n\t\t\t\tinput = input.slice(1);\n\t\t\t}\n\n\t\t\t// Raw phone number\n\t\t\tthis.parsed_input += input;\n\n\t\t\t// // Reset phone number validation state\n\t\t\t// this.valid = false\n\n\t\t\t// Add digits to the national number\n\t\t\tthis.national_number += input;\n\n\t\t\t// TODO: Deprecated: rename `this.national_number`\n\t\t\t// to `this.nationalNumber` and remove `.getNationalNumber()`.\n\n\t\t\t// Try to format the parsed input\n\n\t\t\tif (this.is_international()) {\n\t\t\t\tif (!this.countryCallingCode) {\n\t\t\t\t\t// No need to format anything\n\t\t\t\t\t// if there's no national phone number.\n\t\t\t\t\t// (e.g. just the country calling code)\n\t\t\t\t\tif (!this.national_number) {\n\t\t\t\t\t\t// Return raw phone number\n\t\t\t\t\t\treturn this.parsed_input;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If one looks at country phone codes\n\t\t\t\t\t// then he can notice that no one country phone code\n\t\t\t\t\t// is ever a (leftmost) substring of another country phone code.\n\t\t\t\t\t// So if a valid country code is extracted so far\n\t\t\t\t\t// then it means that this is the country code.\n\n\t\t\t\t\t// If no country phone code could be extracted so far,\n\t\t\t\t\t// then just return the raw phone number,\n\t\t\t\t\t// because it has no way of knowing\n\t\t\t\t\t// how to format the phone number so far.\n\t\t\t\t\tif (!this.extract_country_calling_code()) {\n\t\t\t\t\t\t// Return raw phone number\n\t\t\t\t\t\treturn this.parsed_input;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Initialize country-specific data\n\t\t\t\t\tthis.initialize_phone_number_formats_for_this_country_calling_code();\n\t\t\t\t\tthis.reset_format();\n\t\t\t\t\tthis.determine_the_country();\n\t\t\t\t}\n\t\t\t\t// `this.country` could be `undefined`,\n\t\t\t\t// for instance, when there is ambiguity\n\t\t\t\t// in a form of several different countries\n\t\t\t\t// each corresponding to the same country phone code\n\t\t\t\t// (e.g. NANPA: USA, Canada, etc),\n\t\t\t\t// and there's not enough digits entered\n\t\t\t\t// to reliably determine the country\n\t\t\t\t// the phone number belongs to.\n\t\t\t\t// Therefore, in cases of such ambiguity,\n\t\t\t\t// each time something is input,\n\t\t\t\t// try to determine the country\n\t\t\t\t// (if it's not determined yet).\n\t\t\t\telse if (!this.country) {\n\t\t\t\t\t\tthis.determine_the_country();\n\t\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Some national prefixes are substrings of other national prefixes\n\t\t\t\t// (for the same country), therefore try to extract national prefix each time\n\t\t\t\t// because a longer national prefix might be available at some point in time.\n\n\t\t\t\tvar previous_national_prefix = this.national_prefix;\n\t\t\t\tthis.national_number = this.national_prefix + this.national_number;\n\n\t\t\t\t// Possibly extract a national prefix\n\t\t\t\tthis.extract_national_prefix();\n\n\t\t\t\tif (this.national_prefix !== previous_national_prefix) {\n\t\t\t\t\t// National number has changed\n\t\t\t\t\t// (due to another national prefix been extracted)\n\t\t\t\t\t// therefore national number has changed\n\t\t\t\t\t// therefore reset all previous formatting data.\n\t\t\t\t\t// (and leading digits matching state)\n\t\t\t\t\tthis.matching_formats = undefined;\n\t\t\t\t\tthis.reset_format();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// if (!this.should_format())\n\t\t\t// {\n\t\t\t// \treturn this.format_as_non_formatted_number()\n\t\t\t// }\n\n\t\t\tif (!this.national_number) {\n\t\t\t\treturn this.format_as_non_formatted_number();\n\t\t\t}\n\n\t\t\t// Check the available phone number formats\n\t\t\t// based on the currently available leading digits.\n\t\t\tthis.match_formats_by_leading_digits();\n\n\t\t\t// Format the phone number (given the next digits)\n\t\t\tvar formatted_national_phone_number = this.format_national_phone_number(input);\n\n\t\t\t// If the phone number could be formatted,\n\t\t\t// then return it, possibly prepending with country phone code\n\t\t\t// (for international phone numbers only)\n\t\t\tif (formatted_national_phone_number) {\n\t\t\t\treturn this.full_phone_number(formatted_national_phone_number);\n\t\t\t}\n\n\t\t\t// If the phone number couldn't be formatted,\n\t\t\t// then just fall back to the raw phone number.\n\t\t\treturn this.format_as_non_formatted_number();\n\t\t}\n\t}, {\n\t\tkey: 'format_as_non_formatted_number',\n\t\tvalue: function format_as_non_formatted_number() {\n\t\t\t// Strip national prefix for incorrectly inputted international phones.\n\t\t\tif (this.is_international() && this.countryCallingCode) {\n\t\t\t\treturn '+' + this.countryCallingCode + this.national_number;\n\t\t\t}\n\n\t\t\treturn this.parsed_input;\n\t\t}\n\t}, {\n\t\tkey: 'format_national_phone_number',\n\t\tvalue: function format_national_phone_number(next_digits) {\n\t\t\t// Format the next phone number digits\n\t\t\t// using the previously chosen phone number format.\n\t\t\t//\n\t\t\t// This is done here because if `attempt_to_format_complete_phone_number`\n\t\t\t// was placed before this call then the `template`\n\t\t\t// wouldn't reflect the situation correctly (and would therefore be inconsistent)\n\t\t\t//\n\t\t\tvar national_number_formatted_with_previous_format = void 0;\n\t\t\tif (this.chosen_format) {\n\t\t\t\tnational_number_formatted_with_previous_format = this.format_next_national_number_digits(next_digits);\n\t\t\t}\n\n\t\t\t// See if the input digits can be formatted properly already. If not,\n\t\t\t// use the results from format_next_national_number_digits(), which does formatting\n\t\t\t// based on the formatting pattern chosen.\n\n\t\t\tvar formatted_number = this.attempt_to_format_complete_phone_number();\n\n\t\t\t// Just because a phone number doesn't have a suitable format\n\t\t\t// that doesn't mean that the phone is invalid\n\t\t\t// because phone number formats only format phone numbers,\n\t\t\t// they don't validate them and some (rare) phone numbers\n\t\t\t// are meant to stay non-formatted.\n\t\t\tif (formatted_number) {\n\t\t\t\treturn formatted_number;\n\t\t\t}\n\n\t\t\t// For some phone number formats national prefix\n\n\t\t\t// If the previously chosen phone number format\n\t\t\t// didn't match the next (current) digit being input\n\t\t\t// (leading digits pattern didn't match).\n\t\t\tif (this.choose_another_format()) {\n\t\t\t\t// And a more appropriate phone number format\n\t\t\t\t// has been chosen for these `leading digits`,\n\t\t\t\t// then format the national phone number (so far)\n\t\t\t\t// using the newly selected phone number pattern.\n\n\t\t\t\t// Will return `undefined` if it couldn't format\n\t\t\t\t// the supplied national number\n\t\t\t\t// using the selected phone number pattern.\n\n\t\t\t\treturn this.reformat_national_number();\n\t\t\t}\n\n\t\t\t// If could format the next (current) digit\n\t\t\t// using the previously chosen phone number format\n\t\t\t// then return the formatted number so far.\n\n\t\t\t// If no new phone number format could be chosen,\n\t\t\t// and couldn't format the supplied national number\n\t\t\t// using the selected phone number pattern,\n\t\t\t// then it will return `undefined`.\n\n\t\t\treturn national_number_formatted_with_previous_format;\n\t\t}\n\t}, {\n\t\tkey: 'reset',\n\t\tvalue: function reset() {\n\t\t\t// Input stripped of non-phone-number characters.\n\t\t\t// Can only contain a possible leading '+' sign and digits.\n\t\t\tthis.parsed_input = '';\n\n\t\t\tthis.current_output = '';\n\n\t\t\t// This contains the national prefix that has been extracted. It contains only\n\t\t\t// digits without formatting.\n\t\t\tthis.national_prefix = '';\n\n\t\t\tthis.national_number = '';\n\t\t\tthis.carrierCode = '';\n\n\t\t\tthis.reset_countriness();\n\n\t\t\tthis.reset_format();\n\n\t\t\t// this.valid = false\n\n\t\t\treturn this;\n\t\t}\n\t}, {\n\t\tkey: 'reset_country',\n\t\tvalue: function reset_country() {\n\t\t\tif (this.is_international()) {\n\t\t\t\tthis.country = undefined;\n\t\t\t} else {\n\t\t\t\tthis.country = this.default_country;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'reset_countriness',\n\t\tvalue: function reset_countriness() {\n\t\t\tthis.reset_country();\n\n\t\t\tif (this.default_country && !this.is_international()) {\n\t\t\t\tthis.metadata.country(this.default_country);\n\t\t\t\tthis.countryCallingCode = this.metadata.countryCallingCode();\n\n\t\t\t\tthis.initialize_phone_number_formats_for_this_country_calling_code();\n\t\t\t} else {\n\t\t\t\tthis.metadata.country(undefined);\n\t\t\t\tthis.countryCallingCode = undefined;\n\n\t\t\t\t// \"Available formats\" are all formats available for the country.\n\t\t\t\t// \"Matching formats\" are only formats eligible for the national number being entered.\n\t\t\t\tthis.available_formats = [];\n\t\t\t\tthis.matching_formats = undefined;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'reset_format',\n\t\tvalue: function reset_format() {\n\t\t\tthis.chosen_format = undefined;\n\t\t\tthis.template = undefined;\n\t\t\tthis.partially_populated_template = undefined;\n\t\t\tthis.last_match_position = -1;\n\t\t}\n\n\t\t// Format each digit of national phone number (so far)\n\t\t// using the newly selected phone number pattern.\n\n\t}, {\n\t\tkey: 'reformat_national_number',\n\t\tvalue: function reformat_national_number() {\n\t\t\t// Format each digit of national phone number (so far)\n\t\t\t// using the selected phone number pattern.\n\t\t\treturn this.format_next_national_number_digits(this.national_number);\n\t\t}\n\t}, {\n\t\tkey: 'initialize_phone_number_formats_for_this_country_calling_code',\n\t\tvalue: function initialize_phone_number_formats_for_this_country_calling_code() {\n\t\t\t// Get all \"eligible\" phone number formats for this country\n\t\t\tthis.available_formats = this.metadata.formats().filter(function (format) {\n\t\t\t\treturn ELIGIBLE_FORMAT_PATTERN.test(format.internationalFormat());\n\t\t\t});\n\n\t\t\tthis.matching_formats = undefined;\n\t\t}\n\t}, {\n\t\tkey: 'match_formats_by_leading_digits',\n\t\tvalue: function match_formats_by_leading_digits() {\n\t\t\tvar leading_digits = this.national_number;\n\n\t\t\t// \"leading digits\" pattern list starts with a\n\t\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\n\t\t\t// So, after a user inputs 3 digits of a national (significant) phone number\n\t\t\t// this national (significant) number can already be formatted.\n\t\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\n\t\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\n\n\t\t\t// This implementation is different from Google's\n\t\t\t// in that it searches for a fitting format\n\t\t\t// even if the user has entered less than\n\t\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\n\t\t\t// Because some leading digits patterns already match for a single first digit.\n\t\t\tvar index_of_leading_digits_pattern = leading_digits.length - MIN_LEADING_DIGITS_LENGTH;\n\t\t\tif (index_of_leading_digits_pattern < 0) {\n\t\t\t\tindex_of_leading_digits_pattern = 0;\n\t\t\t}\n\n\t\t\t// \"Available formats\" are all formats available for the country.\n\t\t\t// \"Matching formats\" are only formats eligible for the national number being entered.\n\n\t\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are available\n\t\t\t// then format matching starts narrowing down the list of possible formats\n\t\t\t// (only previously matched formats are considered for next digits).\n\t\t\tvar available_formats = this.had_enough_leading_digits && this.matching_formats || this.available_formats;\n\t\t\tthis.had_enough_leading_digits = this.should_format();\n\n\t\t\tthis.matching_formats = available_formats.filter(function (format) {\n\t\t\t\tvar leading_digits_patterns_count = format.leadingDigitsPatterns().length;\n\n\t\t\t\t// If this format is not restricted to a certain\n\t\t\t\t// leading digits pattern then it fits.\n\t\t\t\tif (leading_digits_patterns_count === 0) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tvar leading_digits_pattern_index = Math.min(index_of_leading_digits_pattern, leading_digits_patterns_count - 1);\n\t\t\t\tvar leading_digits_pattern = format.leadingDigitsPatterns()[leading_digits_pattern_index];\n\n\t\t\t\t// Brackets are required for `^` to be applied to\n\t\t\t\t// all or-ed (`|`) parts, not just the first one.\n\t\t\t\treturn new RegExp('^(' + leading_digits_pattern + ')').test(leading_digits);\n\t\t\t});\n\n\t\t\t// If there was a phone number format chosen\n\t\t\t// and it no longer holds given the new leading digits then reset it.\n\t\t\t// The test for this `if` condition is marked as:\n\t\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\n\t\t\t// To construct a valid test case for this one can find a country\n\t\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 ` \n * Warning: This level might result in lower coverage especially for regions outside of country\n * code \"+1\". If you are not sure about which level to use, email the discussion group\n * libphonenumber-discuss@googlegroups.com.\n */\n EXACT_GROUPING: function EXACT_GROUPING(number, candidate, metadata) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsAreExactlyPresent);\n }\n};\n\nfunction containsOnlyValidXChars(number, candidate, metadata) {\n // The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\n // national significant number or (2) an extension sign, in which case they always precede the\n // extension number. We assume a carrier code is more than 1 digit, so the first case has to\n // have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\n // or 'X'. We ignore the character if it appears as the last character of the string.\n for (var index = 0; index < candidate.length - 1; index++) {\n var charAtIndex = candidate.charAt(index);\n\n if (charAtIndex === 'x' || charAtIndex === 'X') {\n var charAtNextIndex = candidate.charAt(index + 1);\n\n if (charAtNextIndex === 'x' || charAtNextIndex === 'X') {\n // This is the carrier code case, in which the 'X's always precede the national\n // significant number.\n index++;\n if (util.isNumberMatch(number, candidate.substring(index)) != MatchType.NSN_MATCH) {\n return false;\n }\n // This is the extension sign case, in which the 'x' or 'X' should always precede the\n // extension number.\n } else if (parseDigits(candidate.substring(index)) !== number.ext) {\n return false;\n }\n }\n }\n\n return true;\n}\n\nfunction isNationalPrefixPresentIfRequired(number, _metadata) {\n // First, check how we deduced the country code. If it was written in international format, then\n // the national prefix is not required.\n if (number.getCountryCodeSource() != 'FROM_DEFAULT_COUNTRY') {\n return true;\n }\n\n var phoneNumberRegion = util.getRegionCodeForCountryCode(number.getCountryCode());\n\n var metadata = util.getMetadataForRegion(phoneNumberRegion);\n if (metadata == null) {\n return true;\n }\n\n // Check if a national prefix should be present when formatting this number.\n var nationalNumber = util.getNationalSignificantNumber(number);\n var formatRule = util.chooseFormattingPatternForNumber(metadata.numberFormats(), nationalNumber);\n\n // To do this, we check that a national prefix formatting rule was present\n // and that it wasn't just the first-group symbol ($1) with punctuation.\n if (formatRule && formatRule.getNationalPrefixFormattingRule().length > 0) {\n if (formatRule.getNationalPrefixOptionalWhenFormatting()) {\n // The national-prefix is optional in these cases, so we don't need to check if it was\n // present.\n return true;\n }\n\n if (PhoneNumberUtil.formattingRuleHasFirstGroupOnly(formatRule.getNationalPrefixFormattingRule())) {\n // National Prefix not needed for this number.\n return true;\n }\n\n // Normalize the remainder.\n var rawInputCopy = PhoneNumberUtil.normalizeDigitsOnly(number.getRawInput());\n\n // Check if we found a national prefix and/or carrier code at the start of the raw input, and\n // return the result.\n return util.maybeStripNationalPrefixAndCarrierCode(rawInputCopy, metadata, null);\n }\n\n return true;\n}\n\nexport function containsMoreThanOneSlashInNationalNumber(number, candidate) {\n var firstSlashInBodyIndex = candidate.indexOf('/');\n if (firstSlashInBodyIndex < 0) {\n // No slashes, this is okay.\n return false;\n }\n\n // Now look for a second one.\n var secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1);\n if (secondSlashInBodyIndex < 0) {\n // Only one slash, this is okay.\n return false;\n }\n\n // If the first slash is after the country calling code, this is permitted.\n var candidateHasCountryCode = number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITH_PLUS_SIGN || number.getCountryCodeSource() === CountryCodeSource.FROM_NUMBER_WITHOUT_PLUS_SIGN;\n\n if (candidateHasCountryCode && PhoneNumberUtil.normalizeDigitsOnly(candidate.substring(0, firstSlashInBodyIndex)) === String(number.getCountryCode())) {\n // Any more slashes and this is illegal.\n return candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0;\n }\n\n return true;\n}\n\nfunction checkNumberGroupingIsValid(number, candidate, metadata, checkGroups) {\n // TODO: Evaluate how this works for other locales (testing has been limited to NANPA regions)\n // and optimise if necessary.\n var normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */);\n var formattedNumberGroups = getNationalNumberGroups(metadata, number, null);\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n\n // If this didn't pass, see if there are any alternate formats, and try them instead.\n var alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode());\n\n if (alternateFormats) {\n for (var _iterator = alternateFormats.numberFormats(), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var alternateFormat = _ref;\n\n formattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat);\n\n if (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\n return true;\n }\n }\n }\n\n return false;\n}\n\n/**\n * Helper method to get the national-number part of a number, formatted without any national\n * prefix, and return it as a set of digit blocks that would be formatted together.\n */\nfunction getNationalNumberGroups(metadata, number, formattingPattern) {\n if (formattingPattern) {\n // We format the NSN only, and split that according to the separator.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return util.formatNsnUsingPattern(nationalSignificantNumber, formattingPattern, 'RFC3966', metadata).split('-');\n }\n\n // This will be in the format +CC-DG;ext=EXT where DG represents groups of digits.\n var rfc3966Format = formatNumber(number, 'RFC3966', metadata);\n\n // We remove the extension part from the formatted string before splitting it into different\n // groups.\n var endIndex = rfc3966Format.indexOf(';');\n if (endIndex < 0) {\n endIndex = rfc3966Format.length;\n }\n\n // The country-code will have a '-' following it.\n var startIndex = rfc3966Format.indexOf('-') + 1;\n return rfc3966Format.slice(startIndex, endIndex).split('-');\n}\n\nfunction allNumberGroupsAreExactlyPresent(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN);\n\n // Set this to the last group, skipping it if the number has an extension.\n var candidateNumberGroupIndex = number.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1;\n\n // First we check if the national significant number is formatted as a block.\n // We use contains and not equals, since the national significant number may be present with\n // a prefix such as a national number prefix, or the country code itself.\n if (candidateGroups.length == 1 || candidateGroups[candidateNumberGroupIndex].contains(util.getNationalSignificantNumber(number))) {\n return true;\n }\n\n // Starting from the end, go through in reverse, excluding the first group, and check the\n // candidate and number groups are the same.\n var formattedNumberGroupIndex = formattedNumberGroups.length - 1;\n while (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0) {\n if (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex]) {\n return false;\n }\n formattedNumberGroupIndex--;\n candidateNumberGroupIndex--;\n }\n\n // Now check the first group. There may be a national prefix at the start, so we only check\n // that the candidate group ends with the formatted number group.\n return candidateNumberGroupIndex >= 0 && endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]);\n}\n\nfunction allNumberGroupsRemainGrouped(metadata, number, normalizedCandidate, formattedNumberGroups) {\n var fromIndex = 0;\n if (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY) {\n // First skip the country code if the normalized candidate contained it.\n var countryCode = String(number.getCountryCode());\n fromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length();\n }\n\n // Check each group of consecutive digits are not broken into separate groupings in the\n // {@code normalizedCandidate} string.\n for (var i = 0; i < formattedNumberGroups.length; i++) {\n // Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\n // doesn't contain the consecutive digits in formattedNumberGroups[i].\n fromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex);\n if (fromIndex < 0) {\n return false;\n }\n // Moves {@code fromIndex} forward.\n fromIndex += formattedNumberGroups[i].length();\n if (i == 0 && fromIndex < normalizedCandidate.length()) {\n // We are at the position right after the NDC. We get the region used for formatting\n // information based on the country code in the phone number, rather than the number itself,\n // as we do not need to distinguish between different countries with the same country\n // calling code and this is faster.\n var region = util.getRegionCodeForCountryCode(number.getCountryCode());\n if (util.getNddPrefixForRegion(region, true) != null && Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\n // This means there is no formatting symbol after the NDC. In this case, we only\n // accept the number if there is no formatting symbol at all in the number, except\n // for extensions. This is only important for countries with national prefixes.\n var nationalSignificantNumber = util.getNationalSignificantNumber(number);\n return startsWith(normalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length), nationalSignificantNumber);\n }\n }\n }\n\n // The check here makes sure that we haven't mistakenly already used the extension to\n // match the last group of the subscriber number. Note the extension cannot have\n // formatting in-between digits.\n return normalizedCandidate.slice(fromIndex).contains(number.getExtension());\n}\n\nfunction parseDigits(string) {\n var result = '';\n\n // Using `.split('')` here instead of normal `for ... of`\n // because the importing application doesn't neccessarily include an ES6 polyfill.\n // The `.split('')` approach discards \"exotic\" UTF-8 characters\n // (the ones consisting of four bytes) but digits\n // (including non-European ones) don't fall into that range\n // so such \"exotic\" characters would be discarded anyway.\n for (var _iterator2 = string.split(''), _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {\n var _ref2;\n\n if (_isArray2) {\n if (_i2 >= _iterator2.length) break;\n _ref2 = _iterator2[_i2++];\n } else {\n _i2 = _iterator2.next();\n if (_i2.done) break;\n _ref2 = _i2.value;\n }\n\n var character = _ref2;\n\n var digit = parseDigit(character);\n if (digit) {\n result += digit;\n }\n }\n\n return result;\n}\n//# sourceMappingURL=Leniency.js.map","import { sort_out_arguments } from './findPhoneNumbers';\nimport PhoneNumberMatcher from './PhoneNumberMatcher';\n\nexport default function findNumbers(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t text = _sort_out_arguments.text,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\tvar matcher = new PhoneNumberMatcher(text, options, metadata);\n\n\tvar results = [];\n\twhile (matcher.hasNext()) {\n\t\tresults.push(matcher.next());\n\t}\n\treturn results;\n}\n//# sourceMappingURL=findNumbers.js.map","import { sort_out_arguments } from './getNumberType';\nimport isValidNumber from './validate';\n\n/**\n * Checks if a given phone number is valid.\n *\n * If the `number` is a string, it will be parsed to an object,\n * but only if it contains only valid phone number characters.\n * If the `number` is an object, it is used as is.\n *\n * The `country` argument is the country the number must belong to.\n * This is a stricter version of `isValidNumber(number, defaultCountry)`.\n * Though restricting a country might not be a good idea.\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\n *\n * Doesn't accept `number` object, only `number` string with a `country` string.\n */\nexport default function isValidNumberForRegion(number, country, _metadata) {\n if (typeof number !== 'string') {\n throw new TypeError('number must be a string');\n }\n\n if (typeof country !== 'string') {\n throw new TypeError('country must be a string');\n }\n\n var _sort_out_arguments = sort_out_arguments(number, country, _metadata),\n input = _sort_out_arguments.input,\n metadata = _sort_out_arguments.metadata;\n\n return input.country === country && isValidNumber(input, metadata.metadata);\n}\n//# sourceMappingURL=isValidNumberForRegion.js.map","import PhoneNumber from './PhoneNumber';\n\nexport default function getExampleNumber(country, examples, metadata) {\n\treturn new PhoneNumber(country, examples[country], metadata);\n}\n//# sourceMappingURL=getExampleNumber.js.map","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nimport PhoneNumber from './PhoneNumber';\nimport parse from './parse';\n\nexport default function parsePhoneNumber(text, defaultCountry, metadata) {\n\tif (isObject(defaultCountry)) {\n\t\tmetadata = defaultCountry;\n\t\tdefaultCountry = undefined;\n\t}\n\treturn parse(text, { defaultCountry: defaultCountry, v2: true }, metadata);\n}\n\n// so istanbul will show this as \"branch not covered\".\n/* istanbul ignore next */\nvar isObject = function isObject(_) {\n\treturn (typeof _ === 'undefined' ? 'undefined' : _typeof(_)) === 'object';\n};\n//# sourceMappingURL=parsePhoneNumber.js.map","module.exports = function cmp (a, b) {\n var pa = a.split('.');\n var pb = b.split('.');\n for (var i = 0; i < 3; i++) {\n var na = Number(pa[i]);\n var nb = Number(pb[i]);\n if (na > nb) return 1;\n if (nb > na) return -1;\n if (!isNaN(na) && isNaN(nb)) return 1;\n if (isNaN(na) && !isNaN(nb)) return -1;\n }\n return 0;\n};\n","import metadata from './metadata.min.json'\n\nimport parsePhoneNumberCustom from './es6/parsePhoneNumber'\n\nimport parseNumberCustom from './es6/parse'\nimport formatNumberCustom from './es6/format'\nimport getNumberTypeCustom from './es6/getNumberType'\nimport getExampleNumberCustom from './es6/getExampleNumber'\nimport isPossibleNumberCustom from './es6/isPossibleNumber'\nimport isValidNumberCustom from './es6/validate'\nimport isValidNumberForRegionCustom from './es6/isValidNumberForRegion'\n\n// Deprecated\nimport findPhoneNumbersCustom, { searchPhoneNumbers as searchPhoneNumbersCustom, PhoneNumberSearch as PhoneNumberSearchCustom } from './es6/findPhoneNumbers'\n\nimport findNumbersCustom from './es6/findNumbers'\nimport searchNumbersCustom from './es6/searchNumbers'\nimport PhoneNumberMatcherCustom from './es6/PhoneNumberMatcher'\n\nimport AsYouTypeCustom from './es6/AsYouType'\n\nimport getCountryCallingCodeCustom from './es6/getCountryCallingCode'\nexport { default as Metadata } from './es6/metadata'\nimport { getExtPrefix as getExtPrefixCustom } from './es6/metadata'\nimport { parseRFC3966 as parseRFC3966Custom, formatRFC3966 as formatRFC3966Custom } from './es6/RFC3966'\nimport formatIncompletePhoneNumberCustom from './es6/formatIncompletePhoneNumber'\nexport { default as parseIncompletePhoneNumber, parsePhoneNumberCharacter } from './es6/parseIncompletePhoneNumber'\n\nexport function parsePhoneNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn parsePhoneNumberCustom.apply(this, parameters)\n}\n\nexport function parseNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn parseNumberCustom.apply(this, parameters)\n}\n\n// Deprecated: remove `parse()` export in 2.0.0.\n// (renamed to `parseNumber()`)\nexport function parse()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn parseNumberCustom.apply(this, parameters)\n}\n\nexport function formatNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn formatNumberCustom.apply(this, parameters)\n}\n\n// Deprecated: remove `format()` export in 2.0.0.\n// (renamed to `formatNumber()`)\nexport function format()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn formatNumberCustom.apply(this, parameters)\n}\n\nexport function getNumberType()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn getNumberTypeCustom.apply(this, parameters)\n}\n\nexport function getExampleNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn getExampleNumberCustom.apply(this, parameters)\n}\n\nexport function isPossibleNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn isPossibleNumberCustom.apply(this, parameters)\n}\n\nexport function isValidNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn isValidNumberCustom.apply(this, parameters)\n}\n\nexport function isValidNumberForRegion()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn isValidNumberForRegionCustom.apply(this, parameters)\n}\n\n// Deprecated.\nexport function findPhoneNumbers()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn findPhoneNumbersCustom.apply(this, parameters)\n}\n\n// Deprecated.\nexport function searchPhoneNumbers()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn searchPhoneNumbersCustom.apply(this, parameters)\n}\n\n// Deprecated.\nexport function PhoneNumberSearch(text, options)\n{\n\tPhoneNumberSearchCustom.call(this, text, options, metadata)\n}\n\n// Deprecated.\nPhoneNumberSearch.prototype = Object.create(PhoneNumberSearchCustom.prototype, {})\nPhoneNumberSearch.prototype.constructor = PhoneNumberSearch\n\nexport function findNumbers()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn findNumbersCustom.apply(this, parameters)\n}\n\nexport function searchNumbers()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn searchNumbersCustom.apply(this, parameters)\n}\n\nexport function PhoneNumberMatcher(text, options)\n{\n\tPhoneNumberMatcherCustom.call(this, text, options, metadata)\n}\n\nPhoneNumberMatcher.prototype = Object.create(PhoneNumberMatcherCustom.prototype, {})\nPhoneNumberMatcher.prototype.constructor = PhoneNumberMatcher\n\nexport function AsYouType(country)\n{\n\tAsYouTypeCustom.call(this, country, metadata)\n}\n\nAsYouType.prototype = Object.create(AsYouTypeCustom.prototype, {})\nAsYouType.prototype.constructor = AsYouType\n\nexport function getExtPrefix()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn getExtPrefixCustom.apply(this, parameters)\n}\n\nexport function parseRFC3966()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn parseRFC3966Custom.apply(this, parameters)\n}\n\nexport function formatRFC3966()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn formatRFC3966Custom.apply(this, parameters)\n}\n\nexport function formatIncompletePhoneNumber()\n{\n\tvar parameters = Array.prototype.slice.call(arguments)\n\tparameters.push(metadata)\n\treturn formatIncompletePhoneNumberCustom.apply(this, parameters)\n}\n\n// Deprecated: remove DIGITS export in 2.0.0 (unused).\nexport { DIGITS } from './es6/common'\n\n// Deprecated: remove this in 2.0.0 and make `custom.js` in ES6\n// (the old `custom.js` becomes `custom.commonjs.js`).\nexport { default as parseCustom } from './es6/parse'\nexport { default as formatCustom } from './es6/format'\nexport { default as isValidNumberCustom } from './es6/validate'\nexport { default as findPhoneNumbersCustom } from './es6/findPhoneNumbers'\nexport { searchPhoneNumbers as searchPhoneNumbersCustom } from './es6/findPhoneNumbers'\nexport { PhoneNumberSearch as PhoneNumberSearchCustom } from './es6/findPhoneNumbers'\nexport { default as getNumberTypeCustom } from './es6/getNumberType'\nexport { default as getCountryCallingCodeCustom } from './es6/getCountryCallingCode'\n\nexport\n{\n\tdefault as AsYouTypeCustom,\n\t// `DIGIT_PLACEHOLDER` is used by `react-phone-number-input`.\n\tDIGIT_PLACEHOLDER\n}\nfrom './es6/AsYouType'\n\nexport function getCountryCallingCode(country)\n{\n\treturn getCountryCallingCodeCustom(country, metadata)\n}\n\n// `getPhoneCode` name is deprecated, use `getCountryCallingCode` instead.\nexport function getPhoneCode(country)\n{\n\treturn getCountryCallingCode(country)\n}\n\n// `getPhoneCodeCustom` name is deprecated, use `getCountryCallingCodeCustom` instead.\nexport function getPhoneCodeCustom(country, metadata)\n{\n\treturn getCountryCallingCodeCustom(country, metadata)\n}"],"sourceRoot":""}Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\n * Chen Li. VLDB J. 12(3): 211-227 (2003).
\n *\n * The string \"211-227 (2003)\" is not a telephone number.\n */\nvar PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/;\n\nexport default function isValidCandidate(candidate, offset, text, leniency) {\n\t// Check the candidate doesn't contain any formatting\n\t// which would indicate that it really isn't a phone number.\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\n\t\treturn;\n\t}\n\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\n\tif (leniency !== 'POSSIBLE') {\n\t\t// If the candidate is not at the start of the text,\n\t\t// and does not start with phone-number punctuation,\n\t\t// check the previous character.\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate)) {\n\t\t\tvar previousChar = text[offset - 1];\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar lastCharIndex = offset + candidate.length;\n\t\tif (lastCharIndex < text.length) {\n\t\t\tvar nextChar = text[lastCharIndex];\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}\n//# sourceMappingURL=isValidCandidate.js.map","// Matches strings that look like dates using \"/\" as a separator.\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\nvar SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/;\n\n// Matches timestamps.\n// Examples: \"2012-01-02 08:00\".\n// Note that the reg-ex does not include the\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\nvar TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/;\nvar TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/;\n\nexport default function isValidPreCandidate(candidate, offset, text) {\n\t// Skip a match that is more likely to be a date.\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\n\t\treturn false;\n\t}\n\n\t// Skip potential time-stamps.\n\tif (TIME_STAMPS.test(candidate)) {\n\t\tvar followingText = text.slice(offset + candidate.length);\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n//# sourceMappingURL=isValidPreCandidate.js.map","import { trimAfterFirstMatch } from './util';\n\n// Regular expression of characters typically used to start a second phone number for the purposes\n// of parsing. This allows us to strip off parts of the number that are actually the start of\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\n// extension so that the first number is parsed correctly.\n//\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\n//\nvar SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/;\n\nexport default function parsePreCandidate(candidate) {\n\t// Check for extra numbers at the end.\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\n\t// from split notations (+41 79 123 45 67 / 68).\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate);\n}\n//# sourceMappingURL=parsePreCandidate.js.map","import Metadata from './metadata';\n\nexport default function (country, metadata) {\n\tmetadata = new Metadata(metadata);\n\n\tif (!metadata.hasCountry(country)) {\n\t\tthrow new Error('Unknown country: ' + country);\n\t}\n\n\treturn metadata.country(country).countryCallingCode();\n}\n//# sourceMappingURL=getCountryCallingCode.js.map","import Metadata from './metadata';\nimport { matches_entirely, VALID_DIGITS } from './common';\n\nvar CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])');\n\n/**\n * Pattern that makes it easy to distinguish whether a region has a single\n * international dialing prefix or not. If a region has a single international\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\n * the tone. If there are multiple available international prefixes in a\n * region, they will be represented as a regex string that always contains one\n * or more characters that are not ASCII digits or a tilde.\n */\nvar SINGLE_IDD_PREFIX = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/;\n\n// For regions that have multiple IDD prefixes\n// a preferred IDD prefix is returned.\nexport function getIDDPrefix(country, metadata) {\n\tvar countryMetadata = new Metadata(metadata);\n\tcountryMetadata.country(country);\n\n\tif (SINGLE_IDD_PREFIX.test(countryMetadata.IDDPrefix())) {\n\t\treturn countryMetadata.IDDPrefix();\n\t}\n\n\treturn countryMetadata.defaultIDDPrefix();\n}\n\nexport function stripIDDPrefix(number, country, metadata) {\n\tif (!country) {\n\t\treturn;\n\t}\n\n\t// Check if the number is IDD-prefixed.\n\n\tvar countryMetadata = new Metadata(metadata);\n\tcountryMetadata.country(country);\n\n\tvar IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix());\n\n\tif (number.search(IDDPrefixPattern) !== 0) {\n\t\treturn;\n\t}\n\n\t// Strip IDD prefix.\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length);\n\n\t// Some kind of a weird edge case.\n\t// No explanation from Google given.\n\tvar matchedGroups = number.match(CAPTURING_DIGIT_PATTERN);\n\t/* istanbul ignore next */\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\n\t\tif (matchedGroups[1] === '0') {\n\t\t\treturn;\n\t\t}\n\t}\n\n\treturn number;\n}\n//# sourceMappingURL=IDD.js.map","import AsYouType from './AsYouType';\n\n/**\n * Formats a (possibly incomplete) phone number.\n * The phone number can be either in E.164 format\n * or in a form of national number digits.\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\n * @return {string} Formatted (possibly incomplete) phone number.\n */\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\n if (!metadata) {\n metadata = country;\n country = undefined;\n }\n return new AsYouType(country, metadata).input(value);\n}\n//# sourceMappingURL=formatIncompletePhoneNumber.js.map","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { sort_out_arguments } from './findPhoneNumbers';\nimport PhoneNumberMatcher from './PhoneNumberMatcher';\n\n/**\n * @return ES6 `for ... of` iterator.\n */\nexport default function searchNumbers(arg_1, arg_2, arg_3, arg_4) {\n\tvar _sort_out_arguments = sort_out_arguments(arg_1, arg_2, arg_3, arg_4),\n\t text = _sort_out_arguments.text,\n\t options = _sort_out_arguments.options,\n\t metadata = _sort_out_arguments.metadata;\n\n\tvar matcher = new PhoneNumberMatcher(text, options, metadata);\n\n\treturn _defineProperty({}, Symbol.iterator, function () {\n\t\treturn {\n\t\t\tnext: function next() {\n\t\t\t\tif (matcher.hasNext()) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: matcher.next()\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tdone: true\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\t});\n}\n//# sourceMappingURL=searchNumbers.js.map","import parseNumber from '../parse';\nimport isValidNumber from '../validate';\nimport { parseDigit } from '../common';\n\nimport { startsWith, endsWith } from './util';\n\n/**\n * Leniency when finding potential phone numbers in text segments\n * The levels here are ordered in increasing strictness.\n */\nexport default {\n /**\n * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\n */\n POSSIBLE: function POSSIBLE(number, candidate, metadata) {\n return true;\n },\n\n\n /**\n * Phone numbers accepted are \"possible\" and \"valid\".\n * Numbers written in national format must have their national-prefix\n * present if it is usually written for a number of this type.\n */\n VALID: function VALID(number, candidate, metadata) {\n if (!isValidNumber(number, metadata) || !containsOnlyValidXChars(number, candidate.toString(), metadata)) {\n return false;\n }\n\n // Skipped for simplicity.\n // return isNationalPrefixPresentIfRequired(number, metadata)\n return true;\n },\n\n\n /**\n * Phone numbers accepted are \"valid\" and\n * are grouped in a possible way for this locale. For example, a US number written as\n * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\n * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\n * Numbers with more than one '/' symbol in the national significant number\n * are also dropped at this level.\n *\n * Warning: This level might result in lower coverage especially for regions outside of\n * country code \"+1\". If you are not sure about which level to use,\n * email the discussion group libphonenumber-discuss@googlegroups.com.\n */\n STRICT_GROUPING: function STRICT_GROUPING(number, candidate, metadata) {\n var candidateString = candidate.toString();\n\n if (!isValidNumber(number, metadata) || !containsOnlyValidXChars(number, candidateString, metadata) || containsMoreThanOneSlashInNationalNumber(number, candidateString) || !isNationalPrefixPresentIfRequired(number, metadata)) {\n return false;\n }\n\n return checkNumberGroupingIsValid(number, candidate, metadata, allNumberGroupsRemainGrouped);\n },\n\n\n /**\n * Phone numbers accepted are {@linkplain PhoneNumberUtil#isValidNumber(PhoneNumber) valid} and\n * are grouped in the same way that we would have formatted it, or as a single block. For\n * example, a US number written as \"650 2530000\" is not accepted at this leniency level, whereas\n * \"650 253 0000\" or \"6502530000\" are.\n * Numbers with more than one '/' symbol are also dropped at this level.\n *