Bug 1310863 - Remove DOM/phonenumberutils and related code. r?ehsan draft
authorMichelangelo De Simone <mds@mozilla.com>
Tue, 18 Oct 2016 15:55:00 -0700
changeset 434203 5a72b43f47125e6964e63e24947a3d8e137a67d0
parent 434087 753433776a5e16b1c80c062bc6cdda05f26a81dd
child 536047 a07ef3802771b9a9c43a9b530a921a86148748c2
push id34748
push usermdesimone@mozilla.com
push dateSat, 05 Nov 2016 00:50:18 +0000
reviewersehsan
bugs1310863
milestone52.0a1
Bug 1310863 - Remove DOM/phonenumberutils and related code. r?ehsan MozReview-Commit-ID: 2wednKKUPQf
browser/installer/package-manifest.in
dom/apps/PermissionsTable.jsm
dom/moz.build
dom/phonenumberutils/PhoneNumber.jsm
dom/phonenumberutils/PhoneNumberMetaData.jsm
dom/phonenumberutils/PhoneNumberNormalizer.jsm
dom/phonenumberutils/PhoneNumberService.js
dom/phonenumberutils/PhoneNumberService.manifest
dom/phonenumberutils/PhoneNumberUtils.jsm
dom/phonenumberutils/mcc_iso3166_table.jsm
dom/phonenumberutils/moz.build
dom/phonenumberutils/tests/chrome.ini
dom/phonenumberutils/tests/mochitest.ini
dom/phonenumberutils/tests/test_phonenumber.xul
dom/phonenumberutils/tests/test_phonenumberservice.xul
dom/phonenumberutils/tests/test_phonenumberutils.xul
dom/phonenumberutils/tests/test_phonenumberutils_basics.html
dom/webidl/PhoneNumberService.webidl
dom/webidl/moz.build
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -503,18 +503,16 @@
 @RESPATH@/components/AppsService.manifest
 @RESPATH@/components/recording-cmdline.js
 @RESPATH@/components/recording-cmdline.manifest
 @RESPATH@/components/htmlMenuBuilder.js
 @RESPATH@/components/htmlMenuBuilder.manifest
 
 @RESPATH@/components/PermissionSettings.js
 @RESPATH@/components/PermissionSettings.manifest
-@RESPATH@/components/PhoneNumberService.js
-@RESPATH@/components/PhoneNumberService.manifest
 @RESPATH@/components/NotificationStorage.js
 @RESPATH@/components/NotificationStorage.manifest
 @RESPATH@/components/Push.js
 @RESPATH@/components/Push.manifest
 @RESPATH@/components/PushComponents.js
 
 @RESPATH@/components/remotebrowserutils.manifest
 @RESPATH@/components/RemoteWebNavigation.js
--- a/dom/apps/PermissionsTable.jsm
+++ b/dom/apps/PermissionsTable.jsm
@@ -167,21 +167,16 @@ this.PermissionsTable =  { geolocation: 
                              certified: DENY_ACTION,
                              additional: ["indexedDB-chrome-settings", "settings-api"]
                            },
                            permissions: {
                              app: DENY_ACTION,
                              privileged: DENY_ACTION,
                              certified: ALLOW_ACTION
                            },
-                           phonenumberservice: {
-                             app: DENY_ACTION,
-                             privileged: DENY_ACTION,
-                             certified: ALLOW_ACTION
-                           },
                            fmradio: {
                              app: DENY_ACTION,
                              privileged: ALLOW_ACTION,
                              certified: ALLOW_ACTION
                            },
                            attention: {
                              app: DENY_ACTION,
                              privileged: DENY_ACTION,
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -42,17 +42,16 @@ DIRS += [
     'base',
     'archivereader',
     'bindings',
     'battery',
     'browser-element',
     'cache',
     'canvas',
     'crypto',
-    'phonenumberutils',
     'devicestorage',
     'encoding',
     'events',
     'fetch',
     'filehandle',
     'filesystem',
     'flyweb',
     'gamepad',
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumber.jsm
+++ /dev/null
@@ -1,389 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-
-// Don't modify this code. Please use:
-// https://github.com/andreasgal/PhoneNumber.js
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["PhoneNumber"];
-
-const Cu = Components.utils;
-
-Cu.import('resource://gre/modules/XPCOMUtils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, "PHONE_NUMBER_META_DATA",
-                                  "resource://gre/modules/PhoneNumberMetaData.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "PhoneNumberNormalizer",
-                                  "resource://gre/modules/PhoneNumberNormalizer.jsm");
-this.PhoneNumber = (function (dataBase) {
-  // Use strict in our context only - users might not want it
-  'use strict';
-
-  const MAX_PHONE_NUMBER_LENGTH = 50;
-  const NON_ALPHA_CHARS = /[^a-zA-Z]/g;
-  const NON_DIALABLE_CHARS = /[^,#+\*\d]/g;
-  const NON_DIALABLE_CHARS_ONCE = new RegExp(NON_DIALABLE_CHARS.source);
-  const BACKSLASH = /\\/g;
-  const SPLIT_FIRST_GROUP = /^(\d+)(.*)$/;
-  const LEADING_PLUS_CHARS_PATTERN = /^[+\uFF0B]+/g;
-
-  // Format of the string encoded meta data. If the name contains "^" or "$"
-  // we will generate a regular expression from the value, with those special
-  // characters as prefix/suffix.
-  const META_DATA_ENCODING = ["region",
-                              "^(?:internationalPrefix)",
-                              "nationalPrefix",
-                              "^(?:nationalPrefixForParsing)",
-                              "nationalPrefixTransformRule",
-                              "nationalPrefixFormattingRule",
-                              "^possiblePattern$",
-                              "^nationalPattern$",
-                              "formats"];
-
-  const FORMAT_ENCODING = ["^pattern$",
-                           "nationalFormat",
-                           "^leadingDigits",
-                           "nationalPrefixFormattingRule",
-                           "internationalFormat"];
-
-  var regionCache = Object.create(null);
-
-  // Parse an array of strings into a convenient object. We store meta
-  // data as arrays since thats much more compact than JSON.
-  function ParseArray(array, encoding, obj) {
-    for (var n = 0; n < encoding.length; ++n) {
-      var value = array[n];
-      if (!value)
-        continue;
-      var field = encoding[n];
-      var fieldAlpha = field.replace(NON_ALPHA_CHARS, "");
-      if (field != fieldAlpha)
-        value = new RegExp(field.replace(fieldAlpha, value));
-      obj[fieldAlpha] = value;
-    }
-    return obj;
-  }
-
-  // Parse string encoded meta data into a convenient object
-  // representation.
-  function ParseMetaData(countryCode, md) {
-    var array = eval(md.replace(BACKSLASH, "\\\\"));
-    md = ParseArray(array,
-                    META_DATA_ENCODING,
-                    { countryCode: countryCode });
-    regionCache[md.region] = md;
-    return md;
-  }
-
-  // Parse string encoded format data into a convenient object
-  // representation.
-  function ParseFormat(md) {
-    var formats = md.formats;
-    if (!formats) {
-      return null;
-    }
-    // Bail if we already parsed the format definitions.
-    if (!(Array.isArray(formats[0])))
-      return;
-    for (var n = 0; n < formats.length; ++n) {
-      formats[n] = ParseArray(formats[n],
-                              FORMAT_ENCODING,
-                              {});
-    }
-  }
-
-  // Search for the meta data associated with a region identifier ("US") in
-  // our database, which is indexed by country code ("1"). Since we have
-  // to walk the entire database for this, we cache the result of the lookup
-  // for future reference.
-  function FindMetaDataForRegion(region) {
-    // Check in the region cache first. This will find all entries we have
-    // already resolved (parsed from a string encoding).
-    var md = regionCache[region];
-    if (md)
-      return md;
-    for (var countryCode in dataBase) {
-      var entry = dataBase[countryCode];
-      // Each entry is a string encoded object of the form '["US..', or
-      // an array of strings. We don't want to parse the string here
-      // to save memory, so we just substring the region identifier
-      // and compare it. For arrays, we compare against all region
-      // identifiers with that country code. We skip entries that are
-      // of type object, because they were already resolved (parsed into
-      // an object), and their country code should have been in the cache.
-      if (Array.isArray(entry)) {
-        for (var n = 0; n < entry.length; n++) {
-          if (typeof entry[n] == "string" && entry[n].substr(2,2) == region) {
-            if (n > 0) {
-              // Only the first entry has the formats field set.
-              // Parse the main country if we haven't already and use
-              // the formats field from the main country.
-              if (typeof entry[0] == "string")
-                entry[0] = ParseMetaData(countryCode, entry[0]);
-              let formats = entry[0].formats;
-              let current = ParseMetaData(countryCode, entry[n]);
-              current.formats = formats;
-              return entry[n] = current;
-            }
-
-            entry[n] = ParseMetaData(countryCode, entry[n]);
-            return entry[n];
-          }
-        }
-        continue;
-      }
-      if (typeof entry == "string" && entry.substr(2,2) == region)
-        return dataBase[countryCode] = ParseMetaData(countryCode, entry);
-    }
-  }
-
-  // Format a national number for a given region. The boolean flag "intl"
-  // indicates whether we want the national or international format.
-  function FormatNumber(regionMetaData, number, intl) {
-    // We lazily parse the format description in the meta data for the region,
-    // so make sure to parse it now if we haven't already done so.
-    ParseFormat(regionMetaData);
-    var formats = regionMetaData.formats;
-    if (!formats) {
-      return null;
-    }
-    for (var n = 0; n < formats.length; ++n) {
-      var format = formats[n];
-      // The leading digits field is optional. If we don't have it, just
-      // use the matching pattern to qualify numbers.
-      if (format.leadingDigits && !format.leadingDigits.test(number))
-        continue;
-      if (!format.pattern.test(number))
-        continue;
-      if (intl) {
-        // If there is no international format, just fall back to the national
-        // format.
-        var internationalFormat = format.internationalFormat;
-        if (!internationalFormat)
-          internationalFormat = format.nationalFormat;
-        // Some regions have numbers that can't be dialed from outside the
-        // country, indicated by "NA" for the international format of that
-        // number format pattern.
-        if (internationalFormat == "NA")
-          return null;
-        // Prepend "+" and the country code.
-        number = "+" + regionMetaData.countryCode + " " +
-                 number.replace(format.pattern, internationalFormat);
-      } else {
-        number = number.replace(format.pattern, format.nationalFormat);
-        // The region has a national prefix formatting rule, and it can be overwritten
-        // by each actual number format rule.
-        var nationalPrefixFormattingRule = regionMetaData.nationalPrefixFormattingRule;
-        if (format.nationalPrefixFormattingRule)
-          nationalPrefixFormattingRule = format.nationalPrefixFormattingRule;
-        if (nationalPrefixFormattingRule) {
-          // The prefix formatting rule contains two magic markers, "$NP" and "$FG".
-          // "$NP" will be replaced by the national prefix, and "$FG" with the
-          // first group of numbers.
-          var match = number.match(SPLIT_FIRST_GROUP);
-          if (match) {
-            var firstGroup = match[1];
-            var rest = match[2];
-            var prefix = nationalPrefixFormattingRule;
-            prefix = prefix.replace("$NP", regionMetaData.nationalPrefix);
-            prefix = prefix.replace("$FG", firstGroup);
-            number = prefix + rest;
-          }
-        }
-      }
-      return (number == "NA") ? null : number;
-    }
-    return null;
-  }
-
-  function NationalNumber(regionMetaData, number) {
-    this.region = regionMetaData.region;
-    this.regionMetaData = regionMetaData;
-    this.nationalNumber = number;
-  }
-
-  // NationalNumber represents the result of parsing a phone number. We have
-  // three getters on the prototype that format the number in national and
-  // international format. Once called, the getters put a direct property
-  // onto the object, caching the result.
-  NationalNumber.prototype = {
-    // +1 949-726-2896
-    get internationalFormat() {
-      var value = FormatNumber(this.regionMetaData, this.nationalNumber, true);
-      Object.defineProperty(this, "internationalFormat", { value: value, enumerable: true });
-      return value;
-    },
-    // (949) 726-2896
-    get nationalFormat() {
-      var value = FormatNumber(this.regionMetaData, this.nationalNumber, false);
-      Object.defineProperty(this, "nationalFormat", { value: value, enumerable: true });
-      return value;
-    },
-    // +19497262896
-    get internationalNumber() {
-      var value = this.internationalFormat ? this.internationalFormat.replace(NON_DIALABLE_CHARS, "")
-                                           : null;
-      Object.defineProperty(this, "internationalNumber", { value: value, enumerable: true });
-      return value;
-    },
-    // country name 'US'
-    get countryName() {
-      var value = this.region ? this.region : null;
-      Object.defineProperty(this, "countryName", { value: value, enumerable: true });
-      return value;
-    }
-  };
-
-  // Check whether the number is valid for the given region.
-  function IsValidNumber(number, md) {
-    return md.possiblePattern.test(number);
-  }
-
-  // Check whether the number is a valid national number for the given region.
-  function IsNationalNumber(number, md) {
-    return IsValidNumber(number, md) && md.nationalPattern.test(number);
-  }
-
-  // Determine the country code a number starts with, or return null if
-  // its not a valid country code.
-  function ParseCountryCode(number) {
-    for (var n = 1; n <= 3; ++n) {
-      var cc = number.substr(0,n);
-      if (dataBase[cc])
-        return cc;
-    }
-    return null;
-  }
-
-  // Parse an international number that starts with the country code. Return
-  // null if the number is not a valid international number.
-  function ParseInternationalNumber(number) {
-    var ret;
-
-    // Parse and strip the country code.
-    var countryCode = ParseCountryCode(number);
-    if (!countryCode)
-      return null;
-    number = number.substr(countryCode.length);
-
-    // Lookup the meta data for the region (or regions) and if the rest of
-    // the number parses for that region, return the parsed number.
-    var entry = dataBase[countryCode];
-    if (Array.isArray(entry)) {
-      for (var n = 0; n < entry.length; ++n) {
-        if (typeof entry[n] == "string")
-          entry[n] = ParseMetaData(countryCode, entry[n]);
-        if (n > 0)
-          entry[n].formats = entry[0].formats;
-        ret = ParseNationalNumber(number, entry[n])
-        if (ret)
-          return ret;
-      }
-      return null;
-    }
-    if (typeof entry == "string")
-      entry = dataBase[countryCode] = ParseMetaData(countryCode, entry);
-    return ParseNationalNumber(number, entry);
-  }
-
-  // Parse a national number for a specific region. Return null if the
-  // number is not a valid national number (it might still be a possible
-  // number for parts of that region).
-  function ParseNationalNumber(number, md) {
-    if (!md.possiblePattern.test(number) ||
-        !md.nationalPattern.test(number)) {
-      return null;
-    }
-    // Success.
-    return new NationalNumber(md, number);
-  }
-
-  // Parse a number and transform it into the national format, removing any
-  // international dial prefixes and country codes.
-  function ParseNumber(number, defaultRegion) {
-    var ret;
-
-    // Remove formating characters and whitespace.
-    number = PhoneNumberNormalizer.Normalize(number);
-
-    // If there is no defaultRegion or the defaultRegion is the global region,
-    // we can't parse international access codes.
-    if ((!defaultRegion || defaultRegion === '001') && number[0] !== '+')
-      return null;
-
-    // Detect and strip leading '+'.
-    if (number[0] === '+')
-      return ParseInternationalNumber(number.replace(LEADING_PLUS_CHARS_PATTERN, ""));
-
-    // Lookup the meta data for the given region.
-    var md = FindMetaDataForRegion(defaultRegion.toUpperCase());
-
-    if (!md) {
-      dump("Couldn't find Meta Data for region: " + defaultRegion + "\n");
-      return null;
-    }
-
-    // See if the number starts with an international prefix, and if the
-    // number resulting from stripping the code is valid, then remove the
-    // prefix and flag the number as international.
-    if (md.internationalPrefix.test(number)) {
-      var possibleNumber = number.replace(md.internationalPrefix, "");
-      ret = ParseInternationalNumber(possibleNumber)
-      if (ret)
-        return ret;
-    }
-
-    // This is not an international number. See if its a national one for
-    // the current region. National numbers can start with the national
-    // prefix, or without.
-    if (md.nationalPrefixForParsing) {
-      // Some regions have specific national prefix parse rules. Apply those.
-      var withoutPrefix = number.replace(md.nationalPrefixForParsing,
-                                         md.nationalPrefixTransformRule || '');
-      ret = ParseNationalNumber(withoutPrefix, md)
-      if (ret)
-        return ret;
-    } else {
-      // If there is no specific national prefix rule, just strip off the
-      // national prefix from the beginning of the number (if there is one).
-      var nationalPrefix = md.nationalPrefix;
-      if (nationalPrefix && number.indexOf(nationalPrefix) == 0 &&
-          (ret = ParseNationalNumber(number.substr(nationalPrefix.length), md))) {
-        return ret;
-      }
-    }
-    ret = ParseNationalNumber(number, md)
-    if (ret)
-      return ret;
-
-    // Now lets see if maybe its an international number after all, but
-    // without '+' or the international prefix.
-    ret = ParseInternationalNumber(number)
-    if (ret)
-      return ret;
-
-    // If the number matches the possible numbers of the current region,
-    // return it as a possible number.
-    if (md.possiblePattern.test(number))
-      return new NationalNumber(md, number);
-
-    // We couldn't parse the number at all.
-    return null;
-  }
-
-  function IsPlainPhoneNumber(number) {
-    if (typeof number !== 'string') {
-      return false;
-    }
-
-    var length = number.length;
-    var isTooLong = (length > MAX_PHONE_NUMBER_LENGTH);
-    var isEmpty = (length === 0);
-    return !(isTooLong || isEmpty || NON_DIALABLE_CHARS_ONCE.test(number));
-  }
-
-  return {
-    IsPlain: IsPlainPhoneNumber,
-    Parse: ParseNumber,
-  };
-})(PHONE_NUMBER_META_DATA);
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumberMetaData.jsm
+++ /dev/null
@@ -1,222 +0,0 @@
-/* Automatically generated. Do not edit. */
-// Please use https://github.com/andreasgal/PhoneNumber.js
-
-this.EXPORTED_SYMBOLS = ["PHONE_NUMBER_META_DATA"];
-
-this.PHONE_NUMBER_META_DATA = {
-"46": '["SE","00","0",,,"$NP$FG","\\d{5,10}","[1-9]\\d{5,9}",[["(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1-$2 $3 $4","8",,"$1 $2 $3 $4"],["([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1-$2 $3 $4","1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90",,"$1 $2 $3 $4"],["([1-69]\\d)(\\d{3})(\\d{2})","$1-$2 $3","1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90",,"$1 $2 $3"],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1-$2 $3 $4","1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])",,"$1 $2 $3 $4"],["(\\d{3})(\\d{2,3})(\\d{2})","$1-$2 $3","1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])",,"$1 $2 $3"],["(7\\d)(\\d{3})(\\d{2})(\\d{2})","$1-$2 $3 $4","7",,"$1 $2 $3 $4"],["(77)(\\d{2})(\\d{2})","$1-$2$3","7",,"$1 $2 $3"],["(20)(\\d{2,3})(\\d{2})","$1-$2 $3","20",,"$1 $2 $3"],["(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1-$2 $3 $4","9[034]",,"$1 $2 $3 $4"],["(9[034]\\d)(\\d{4})","$1-$2","9[034]",,"$1 $2"]]]',
-"299": '["GL","00",,,,,"\\d{6}","[1-689]\\d{5}",[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",,,]]]',
-"385": '["HR","00","0",,,"$NP$FG","\\d{6,12}","[1-7]\\d{5,8}|[89]\\d{6,11}",[["(1)(\\d{4})(\\d{3})","$1 $2 $3","1",,],["(6[09])(\\d{4})(\\d{3})","$1 $2 $3","6[09]",,],["(62)(\\d{3})(\\d{3,4})","$1 $2 $3","62",,],["([2-5]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[2-5]",,],["(9\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","9",,],["(9\\d)(\\d{4})(\\d{4})","$1 $2 $3","9",,],["(9\\d)(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4","9",,],["(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3","6[145]|7",,],["(\\d{2})(\\d{3,4})(\\d{3})","$1 $2 $3","6[145]|7",,],["(80[01])(\\d{2})(\\d{2,3})","$1 $2 $3","8",,],["(80[01])(\\d{3,4})(\\d{3})","$1 $2 $3","8",,]]]',
-"670": '["TL","00",,,,,"\\d{7,8}","[2-489]\\d{6}|7\\d{6,7}",[["(\\d{3})(\\d{4})","$1 $2","[2-489]",,],["(\\d{4})(\\d{4})","$1 $2","7",,]]]',
-"258": '["MZ","00",,,,,"\\d{8,9}","[28]\\d{7,8}",[["([28]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","2|8[2-7]",,],["(80\\d)(\\d{3})(\\d{3})","$1 $2 $3","80",,]]]',
-"359": '["BG","00","0",,,"$NP$FG","\\d{5,9}","[23567]\\d{5,7}|[489]\\d{6,8}",[["(2)(\\d{5})","$1 $2","29",,],["(2)(\\d{3})(\\d{3,4})","$1 $2 $3","2",,],["(\\d{3})(\\d{4})","$1 $2","43[124-7]|70[1-9]",,],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3","43[124-7]|70[1-9]",,],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3","[78]00",,],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","999",,],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3","[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","48|8[7-9]|9[08]",,]]]',
-"682": '["CK","00",,,,,"\\d{5}","[2-57]\\d{4}",[["(\\d{2})(\\d{3})","$1 $2",,,]]]',
-"852": '["HK","00",,,,,"\\d{5,11}","[235-7]\\d{7}|8\\d{7,8}|9\\d{4,10}",[["(\\d{4})(\\d{4})","$1 $2","[235-7]|[89](?:0[1-9]|[1-9])",,],["(800)(\\d{3})(\\d{3})","$1 $2 $3","800",,],["(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4","900",,],["(900)(\\d{2,5})","$1 $2","900",,]]]',
-"998": '["UZ","810","8",,,"$NP $FG","\\d{7,9}","[679]\\d{8}",[["([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"291": '["ER","00","0",,,"$NP$FG","\\d{6,7}","[178]\\d{6}",[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
-"95": '["MM","00","0",,,"$NP$FG","\\d{5,10}","[14578]\\d{5,7}|[26]\\d{5,8}|9(?:2\\d{0,2}|[58]|3\\d|4\\d{1,2}|6\\d?|[79]\\d{0,2})\\d{6}",[["(\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","1|2[45]",,],["(2)(\\d{4})(\\d{4})","$1 $2 $3","251",,],["(\\d)(\\d{2})(\\d{3})","$1 $2 $3","16|2",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","67|81",,],["(\\d{2})(\\d{2})(\\d{3,4})","$1 $2 $3","[4-8]",,],["(9)(\\d{3})(\\d{4,6})","$1 $2 $3","9(?:2[0-4]|[35-9]|4[13789])",,],["(9)(4\\d{4})(\\d{4})","$1 $2 $3","94[0245]",,],["(9)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","925",,]]]',
-"266": '["LS","00",,,,,"\\d{8}","[2568]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"245": '["GW","00",,,,,"\\d{7}","[3-79]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"374": '["AM","00","0",,,"($NP$FG)","\\d{5,8}","[1-9]\\d{7}",[["(\\d{2})(\\d{6})","$1 $2","1|47",,],["(\\d{2})(\\d{6})","$1 $2","4[139]|[5-7]|9[1-9]","$NP$FG",],["(\\d{3})(\\d{5})","$1 $2","[23]",,],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3","8|90","$NP $FG",]]]',
-"379": '["VA","00",,,,,"\\d{10}","06\\d{8}",[["(06)(\\d{4})(\\d{4})","$1 $2 $3",,,]]]',
-"61": ['["AU","(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,,"\\d{6,10}","[1-578]\\d{5,9}",[["([2378])(\\d{4})(\\d{4})","$1 $2 $3","[2378]","($NP$FG)",],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[45]|14","$NP$FG",],["(16)(\\d{3})(\\d{2,4})","$1 $2 $3","16","$NP$FG",],["(1[389]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1(?:[38]0|90)","$FG",],["(180)(2\\d{3})","$1 $2","180","$FG",],["(19\\d)(\\d{3})","$1 $2","19[13]","$FG",],["(19\\d{2})(\\d{4})","$1 $2","19[67]","$FG",],["(13)(\\d{2})(\\d{2})","$1 $2 $3","13[1-9]","$FG",]]]','["CC","(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,,"\\d{6,10}","[1458]\\d{5,9}",]','["CX","(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,,"\\d{6,10}","[1458]\\d{5,9}",]'],
-"500": '["FK","00",,,,,"\\d{5}","[2-7]\\d{4}",]',
-"261": '["MG","00","0",,,"$NP$FG","\\d{7,9}","[23]\\d{8}",[["([23]\\d)(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"92": '["PK","00","0",,,"($NP$FG)","\\d{6,12}","1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))",[["(\\d{2})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1",,],["(\\d{3})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4","2[349]|45|54|60|72|8[2-5]|9[2-9]",,],["(\\d{2})(\\d{7,8})","$1 $2","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]",,],["(\\d{3})(\\d{6,7})","$1 $2","2[349]|45|54|60|72|8[2-5]|9[2-9]",,],["(3\\d{2})(\\d{7})","$1 $2","3","$NP$FG",],["([15]\\d{3})(\\d{5,6})","$1 $2","58[12]|1",,],["(586\\d{2})(\\d{5})","$1 $2","586",,],["([89]00)(\\d{3})(\\d{2})","$1 $2 $3","[89]00","$NP$FG",]]]',
-"234": '["NG","009","0",,,"$NP$FG","\\d{5,14}","[1-6]\\d{5,8}|9\\d{5,9}|[78]\\d{5,13}",[["([129])(\\d{3})(\\d{3,4})","$1 $2 $3","[129]",,],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3","[3-6]|7(?:[1-79]|0[1-9])|8[2-9]",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","70|8[01]|90[2359]",,],["([78]00)(\\d{4})(\\d{4,5})","$1 $2 $3","[78]00",,],["([78]00)(\\d{5})(\\d{5,6})","$1 $2 $3","[78]00",,],["(78)(\\d{2})(\\d{3})","$1 $2 $3","78",,]]]',
-"350": '["GI","00",,,,,"\\d{8}","[2568]\\d{7}",[["(\\d{3})(\\d{5})","$1 $2","2",,]]]',
-"45": '["DK","00",,,,,"\\d{8}","[2-9]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"963": '["SY","00","0",,,"$NP$FG","\\d{6,9}","[1-59]\\d{7,8}",[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","[1-5]",,],["(9\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","9",,]]]',
-"226": '["BF","00",,,,,"\\d{8}","[267]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"974": '["QA","00",,,,,"\\d{7,8}","[2-8]\\d{6,7}",[["([28]\\d{2})(\\d{4})","$1 $2","[28]",,],["([3-7]\\d{3})(\\d{4})","$1 $2","[3-7]",,]]]',
-"218": '["LY","00","0",,,"$NP$FG","\\d{7,9}","[25679]\\d{8}",[["([25679]\\d)(\\d{7})","$1-$2",,,]]]',
-"51": '["PE","19(?:1[124]|77|90)00","0",,,"($NP$FG)","\\d{6,9}","[14-9]\\d{7,8}",[["(1)(\\d{7})","$1 $2","1",,],["([4-8]\\d)(\\d{6})","$1 $2","[4-7]|8[2-4]",,],["(\\d{3})(\\d{5})","$1 $2","80",,],["(9\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","9","$FG",]]]',
-"62": '["ID","0(?:0[1789]|10(?:00|1[67]))","0",,,"$NP$FG","\\d{5,11}","[1-9]\\d{6,10}",[["(\\d{2})(\\d{5,8})","$1 $2","2[124]|[36]1","($NP$FG)",],["(\\d{3})(\\d{5,8})","$1 $2","[4579]|2[035-9]|[36][02-9]","($NP$FG)",],["(8\\d{2})(\\d{3,4})(\\d{3,4})","$1-$2-$3","8[1-35-9]",,],["(177)(\\d{6,8})","$1 $2","1",,],["(800)(\\d{5,7})","$1 $2","800",,],["(80\\d)(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4","80[79]",,]]]',
-"298": '["FO","00",,"(10(?:01|[12]0|88))",,,"\\d{6}","[2-9]\\d{5}",[["(\\d{6})","$1",,,]]]',
-"381": '["RS","00","0",,,"$NP$FG","\\d{5,12}","[126-9]\\d{4,11}|3(?:[0-79]\\d{3,10}|8[2-9]\\d{2,9})",[["([23]\\d{2})(\\d{4,9})","$1 $2","(?:2[389]|39)0",,],["([1-3]\\d)(\\d{5,10})","$1 $2","1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])",,],["(6\\d)(\\d{6,8})","$1 $2","6",,],["([89]\\d{2})(\\d{3,9})","$1 $2","[89]",,],["(7[26])(\\d{4,9})","$1 $2","7[26]",,],["(7[08]\\d)(\\d{4,9})","$1 $2","7[08]",,]]]',
-"975": '["BT","00",,,,,"\\d{6,8}","[1-8]\\d{6,7}",[["([17]7)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","1|77",,],["([2-8])(\\d{3})(\\d{3})","$1 $2 $3","[2-68]|7[246]",,]]]',
-"34": '["ES","00",,,,,"\\d{9}","[5-9]\\d{8}",[["([5-9]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[568]|[79][0-8]",,]]]',
-"881": '["001",,,,,,"\\d{9}","[67]\\d{8}",[["(\\d)(\\d{3})(\\d{5})","$1 $2 $3","[67]",,]]]',
-"855": '["KH","00[14-9]","0",,,,"\\d{6,10}","[1-9]\\d{7,9}",[["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","1\\d[1-9]|[2-9]","$NP$FG",],["(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3","1[89]0",,]]]',
-"420": '["CZ","00",,,,,"\\d{9,12}","[2-8]\\d{8}|9\\d{8,11}",[["([2-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[2-8]|9[015-7]",,],["(96\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","96",,],["(9\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","9[36]",,]]]',
-"216": '["TN","00",,,,,"\\d{8}","[2-57-9]\\d{7}",[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
-"673": '["BN","00",,,,,"\\d{7}","[2-578]\\d{6}",[["([2-578]\\d{2})(\\d{4})","$1 $2",,,]]]',
-"290": ['["SH","00",,,,,"\\d{4,5}","[25]\\d{4}",]','["TA","00",,,,,"\\d{4}","8\\d{3}",]'],
-"882": '["001",,,,,,"\\d{7,12}","[13]\\d{6,11}",[["(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3","3[23]",,],["(\\d{2})(\\d{5})","$1 $2","16|342",,],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","34[57]",,],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","348",,],["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3","1",,],["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3","16",,],["(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3","16",,]]]',
-"267": '["BW","00",,,,,"\\d{7,8}","[2-79]\\d{6,7}",[["(\\d{3})(\\d{4})","$1 $2","[2-6]",,],["(7\\d)(\\d{3})(\\d{3})","$1 $2 $3","7",,],["(90)(\\d{5})","$1 $2","9",,]]]',
-"94": '["LK","00","0",,,"$NP$FG","\\d{7,9}","[1-9]\\d{8}",[["(\\d{2})(\\d{1})(\\d{6})","$1 $2 $3","[1-689]",,],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","7",,]]]',
-"356": '["MT","00",,,,,"\\d{8}","[2357-9]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"375": '["BY","810","8","8?0?",,,"\\d{7,11}","[1-4]\\d{8}|[89]\\d{9,10}",[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4","17[0-3589]|2[4-9]|[34]","$NP 0$FG",],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4","1(?:5[24]|6[235]|7[467])|2(?:1[246]|2[25]|3[26])","$NP 0$FG",],["(\\d{4})(\\d{2})(\\d{3})","$1 $2-$3","1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])","$NP 0$FG",],["([89]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","8[01]|9","$NP $FG",],["(8\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","82","$NP $FG",]]]',
-"690": '["TK","00",,,,,"\\d{4}","[2-9]\\d{3}",]',
-"507": '["PA","00",,,,,"\\d{7,8}","[1-9]\\d{6,7}",[["(\\d{3})(\\d{4})","$1-$2","[1-57-9]",,],["(\\d{4})(\\d{4})","$1-$2","6",,]]]',
-"692": '["MH","011","1",,,,"\\d{7}","[2-6]\\d{6}",[["(\\d{3})(\\d{4})","$1-$2",,,]]]',
-"250": '["RW","00","0",,,,"\\d{8,9}","[027-9]\\d{7,8}",[["(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","2","$FG",],["([7-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[7-9]","$NP$FG",],["(0\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","0",,]]]',
-"81": '["JP","010","0",,,"$NP$FG","\\d{8,17}","[1-9]\\d{8,9}|00(?:[36]\\d{7,14}|7\\d{5,7}|8\\d{7})",[["(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3","(?:12|57|99)0",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","800",,],["(\\d{4})(\\d{4})","$1-$2","0077","$FG","NA"],["(\\d{4})(\\d{2})(\\d{3,4})","$1-$2-$3","0077","$FG","NA"],["(\\d{4})(\\d{2})(\\d{4})","$1-$2-$3","0088","$FG","NA"],["(\\d{4})(\\d{3})(\\d{3,4})","$1-$2-$3","00(?:37|66)","$FG","NA"],["(\\d{4})(\\d{4})(\\d{4,5})","$1-$2-$3","00(?:37|66)","$FG","NA"],["(\\d{4})(\\d{5})(\\d{5,6})","$1-$2-$3","00(?:37|66)","$FG","NA"],["(\\d{4})(\\d{6})(\\d{6,7})","$1-$2-$3","00(?:37|66)","$FG","NA"],["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","[2579]0|80[1-9]",,],["(\\d{4})(\\d)(\\d{4})","$1-$2-$3","1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|5(?:76|97)|499|746|8(?:3[89]|63|47|51)|9(?:49|80|9[16])",,],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[03-689]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[024-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])",,],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","1|2(?:2[37]|5[5-9]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:[2-589]|39)|60|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93)",,],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","2(?:9[14-79]|74|[34]7|[56]9)|82|993",,],["(\\d)(\\d{4})(\\d{4})","$1-$2-$3","3|4(?:2[09]|7[01])|6[1-9]",,],["(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","[2479][1-9]",,]]]',
-"237": '["CM","00",,,,,"\\d{8,9}","[2368]\\d{7,8}",[["([26])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","[26]",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[23]|88",,],["(800)(\\d{2})(\\d{3})","$1 $2 $3","80",,]]]',
-"351": '["PT","00",,,,,"\\d{9}","[2-46-9]\\d{8}",[["(2\\d)(\\d{3})(\\d{4})","$1 $2 $3","2[12]",,],["([2-46-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","2[3-9]|[346-9]",,]]]',
-"246": '["IO","00",,,,,"\\d{7}","3\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"227": '["NE","00",,,,,"\\d{8}","[0289]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[289]|09",,],["(08)(\\d{3})(\\d{3})","$1 $2 $3","08",,]]]',
-"27": '["ZA","00","0",,,"$NP$FG","\\d{5,9}","[1-79]\\d{8}|8(?:[067]\\d{7}|[1-4]\\d{3,7})",[["(860)(\\d{3})(\\d{3})","$1 $2 $3","860",,],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[1-79]|8(?:[0-47]|6[1-9])",,],["(\\d{2})(\\d{3,4})","$1 $2","8[1-4]",,],["(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3","8[1-4]",,]]]',
-"962": '["JO","00","0",,,"$NP$FG","\\d{8,9}","[235-9]\\d{7,8}",[["(\\d)(\\d{3})(\\d{4})","$1 $2 $3","[2356]|87","($NP$FG)",],["(7)(\\d{4})(\\d{4})","$1 $2 $3","7[457-9]",,],["(\\d{3})(\\d{5,6})","$1 $2","70|8[0158]|9",,]]]',
-"387": '["BA","00","0",,,"$NP$FG","\\d{6,9}","[3-9]\\d{7,8}",[["(\\d{2})(\\d{3})(\\d{3})","$1 $2-$3","[3-5]",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","6[1-356]|[7-9]",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4","6[047]",,]]]',
-"33": '["FR","00","0",,,"$NP$FG","\\d{9}","[1-9]\\d{8}",[["([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","[1-79]",,],["(1\\d{2})(\\d{3})","$1 $2","11","$FG","NA"],["(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","8","$NP $FG",]]]',
-"972": '["IL","0(?:0|1[2-9])","0",,,"$FG","\\d{4,10}","[17]\\d{6,9}|[2-589]\\d{3}(?:\\d{3,6})?|6\\d{3}",[["([2-489])(\\d{3})(\\d{4})","$1-$2-$3","[2-489]","$NP$FG",],["([57]\\d)(\\d{3})(\\d{4})","$1-$2-$3","[57]","$NP$FG",],["(1)([7-9]\\d{2})(\\d{3})(\\d{3})","$1-$2-$3-$4","1[7-9]",,],["(1255)(\\d{3})","$1-$2","125",,],["(1200)(\\d{3})(\\d{3})","$1-$2-$3","120",,],["(1212)(\\d{2})(\\d{2})","$1-$2-$3","121",,],["(1599)(\\d{6})","$1-$2","15",,],["(\\d{4})","*$1","[2-689]",,]]]',
-"248": '["SC","0[0-2]",,,,,"\\d{6,7}","[2468]\\d{5,6}",[["(\\d{3})(\\d{3})","$1 $2","8",,],["(\\d)(\\d{3})(\\d{3})","$1 $2 $3","[246]",,]]]',
-"297": '["AW","00",,,,,"\\d{7}","[25-9]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"421": '["SK","00","0",,,"$NP$FG","\\d{9}","[2-689]\\d{8}",[["(2)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4","2",,],["([3-5]\\d)(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4","[3-5]",,],["([689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[689]",,]]]',
-"672": '["NF","00",,,,,"\\d{5,6}","[13]\\d{5}",[["(\\d{2})(\\d{4})","$1 $2","1",,],["(\\d)(\\d{5})","$1 $2","3",,]]]',
-"870": '["001",,,,,,"\\d{9}","[35-7]\\d{8}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
-"883": '["001",,,,,,"\\d{9}(?:\\d{3})?","51\\d{7}(?:\\d{3})?",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","510",,],["(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","510",,],["(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3","51[13]",,]]]',
-"264": '["NA","00","0",,,"$NP$FG","\\d{8,9}","[68]\\d{7,8}",[["(8\\d)(\\d{3})(\\d{4})","$1 $2 $3","8[1235]",,],["(6\\d)(\\d{2,3})(\\d{4})","$1 $2 $3","6",,],["(88)(\\d{3})(\\d{3})","$1 $2 $3","88",,],["(870)(\\d{3})(\\d{3})","$1 $2 $3","870",,]]]',
-"878": '["001",,,,,,"\\d{12}","1\\d{11}",[["(\\d{2})(\\d{5})(\\d{5})","$1 $2 $3",,,]]]',
-"239": '["ST","00",,,,,"\\d{7}","[29]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"357": '["CY","00",,,,,"\\d{8}","[257-9]\\d{7}",[["(\\d{2})(\\d{6})","$1 $2",,,]]]',
-"240": '["GQ","00",,,,,"\\d{9}","[23589]\\d{8}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[235]",,],["(\\d{3})(\\d{6})","$1 $2","[89]",,]]]',
-"506": '["CR","00",,"(19(?:0[012468]|1[09]|20|66|77|99))",,,"\\d{8,10}","[24-9]\\d{7,9}",[["(\\d{4})(\\d{4})","$1 $2","[24-7]|8[3-9]",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","[89]0",,]]]',
-"86": '["CN","(1(?:[129]\\d{3}|79\\d{2}))?00","0","(1(?:[129]\\d{3}|79\\d{2}))|0",,,"\\d{4,12}","[1-7]\\d{6,11}|8[0-357-9]\\d{6,9}|9\\d{7,10}",[["(80\\d{2})(\\d{4})","$1 $2","80[2678]","$NP$FG",],["([48]00)(\\d{3})(\\d{4})","$1 $2 $3","[48]00",,],["(\\d{5,6})","$1","100|95",,"NA"],["(\\d{2})(\\d{5,6})","$1 $2","(?:10|2\\d)[19]","$NP$FG",],["(\\d{3})(\\d{5,6})","$1 $2","[3-9]","$NP$FG",],["(\\d{3,4})(\\d{4})","$1 $2","[2-9]",,"NA"],["(21)(\\d{4})(\\d{4,6})","$1 $2 $3","21","$NP$FG",],["([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3","10[1-9]|2[02-9]","$NP$FG",],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1|2[37]|3[12]|51|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|8(?:[57]1|98)","$NP$FG",],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5[02-9]|6[1-46]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|3|5[4-9]|7[02-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])","$NP$FG",],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","1[3-578]",,],["(10800)(\\d{3})(\\d{4})","$1 $2 $3","108",,],["(\\d{3})(\\d{7,8})","$1 $2","950",,]]]',
-"257": '["BI","00",,,,,"\\d{8}","[267]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"683": '["NU","00",,,,,"\\d{4}","[1-5]\\d{3}",]',
-"43": '["AT","00","0",,,"$NP$FG","\\d{3,13}","[1-9]\\d{3,12}",[["(1)(\\d{3,12})","$1 $2","1",,],["(5\\d)(\\d{3,5})","$1 $2","5[079]",,],["(5\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","5[079]",,],["(5\\d)(\\d{4})(\\d{4,7})","$1 $2 $3","5[079]",,],["(\\d{3})(\\d{3,10})","$1 $2","316|46|51|732|6(?:44|5[0-3579]|[6-9])|7(?:1|[28]0)|[89]",,],["(\\d{4})(\\d{3,9})","$1 $2","2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-35-9]|5[468])|7(?:2[1-8]|35|4[1-8]|[5-79])",,]]]',
-"247": '["AC","00",,,,,"\\d{4,6}","[46]\\d{4}|[2-467]\\d{3}|[01589]\\d{5}",]',
-"675": '["PG","00",,,,,"\\d{7,8}","[1-9]\\d{6,7}",[["(\\d{3})(\\d{4})","$1 $2","[13-689]|27",,],["(\\d{4})(\\d{4})","$1 $2","20|7",,]]]',
-"376": '["AD","00",,,,,"\\d{6,8}","(?:[346-9]|180)\\d{5}",[["(\\d{3})(\\d{3})","$1 $2","[346-9]",,],["(180[02])(\\d{4})","$1 $2","1",,]]]',
-"63": '["PH","00","0",,,,"\\d{5,13}","2\\d{5,7}|[3-9]\\d{7,9}|1800\\d{7,9}",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2","($NP$FG)",],["(2)(\\d{5})","$1 $2","2","($NP$FG)",],["(\\d{4})(\\d{4,6})","$1 $2","3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","($NP$FG)",],["(\\d{5})(\\d{4})","$1 $2","346|4(?:27|9[35])|883","($NP$FG)",],["([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[3-8]","($NP$FG)",],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","81|9","$NP$FG",],["(1800)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4","1",,]]]',
-"236": '["CF","00",,,,,"\\d{8}","[278]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"590": ['["GP","00","0",,,"$NP$FG","\\d{9}","[56]\\d{8}",[["([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,,]]]','["BL","00","0",,,,"\\d{9}","[56]\\d{8}",]','["MF","00","0",,,,"\\d{9}","[56]\\d{8}",]'],
-"53": '["CU","119","0",,,"($NP$FG)","\\d{4,8}","[2-57]\\d{5,7}",[["(\\d)(\\d{6,7})","$1 $2","7",,],["(\\d{2})(\\d{4,6})","$1 $2","[2-4]",,],["(\\d)(\\d{7})","$1 $2","5","$NP$FG",]]]',
-"64": '["NZ","0(?:0|161)","0",,,"$NP$FG","\\d{7,11}","6[235-9]\\d{6}|[2-57-9]\\d{7,10}",[["([34679])(\\d{3})(\\d{4})","$1-$2 $3","[346]|7[2-57-9]|9[1-9]",,],["(24099)(\\d{3})","$1 $2","240",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","21",,],["(\\d{2})(\\d{3})(\\d{3,5})","$1 $2 $3","2(?:1[1-9]|[69]|7[0-35-9])|70|86",,],["(2\\d)(\\d{3,4})(\\d{4})","$1 $2 $3","2[028]",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","2(?:10|74)|5|[89]0",,]]]',
-"965": '["KW","00",,,,,"\\d{7,8}","[12569]\\d{6,7}",[["(\\d{4})(\\d{3,4})","$1 $2","[126]|9[04-9]",,],["(\\d{3})(\\d{5})","$1 $2","5[015]|92",,]]]',
-"224": '["GN","00",,,,,"\\d{8,9}","[367]\\d{7,8}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","3",,],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[67]",,]]]',
-"973": '["BH","00",,,,,"\\d{8}","[136-9]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"32": '["BE","00","0",,,"$NP$FG","\\d{8,9}","[1-9]\\d{7,8}",[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","4[6-9]",,],["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[23]|4[23]|9[2-4]",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[156]|7[018]|8(?:0[1-9]|[1-79])",,],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3","(?:80|9)0",,]]]',
-"249": '["SD","00","0",,,"$NP$FG","\\d{9}","[19]\\d{8}",[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,,]]]',
-"678": '["VU","00",,,,,"\\d{5,7}","[2-57-9]\\d{4,6}",[["(\\d{3})(\\d{4})","$1 $2","[579]",,]]]',
-"52": '["MX","0[09]","01","0[12]|04[45](\\d{10})","1$1","$NP $FG","\\d{7,11}","[1-9]\\d{9,10}",[["([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3","33|55|81",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]",,],["(1)([358]\\d)(\\d{4})(\\d{4})","044 $2 $3 $4","1(?:33|55|81)","$FG","$1 $2 $3 $4"],["(1)(\\d{3})(\\d{3})(\\d{4})","044 $2 $3 $4","1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])","$FG","$1 $2 $3 $4"]]]',
-"968": '["OM","00",,,,,"\\d{7,9}","(?:2[2-6]|5|9[1-9])\\d{6}|800\\d{5,6}",[["(2\\d)(\\d{6})","$1 $2","2",,],["(9\\d{3})(\\d{4})","$1 $2","9",,],["([58]00)(\\d{4,6})","$1 $2","[58]",,]]]',
-"599": ['["CW","00",,,,,"\\d{7,8}","[169]\\d{6,7}",[["(\\d{3})(\\d{4})","$1 $2","[13-7]",,],["(9)(\\d{3})(\\d{4})","$1 $2 $3","9",,]]]','["BQ","00",,,,,"\\d{7}","[347]\\d{6}",]'],
-"800": '["001",,,,,,"\\d{8}","\\d{8}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"386": '["SI","00","0",,,"$NP$FG","\\d{5,8}","[1-7]\\d{6,7}|[89]\\d{4,7}",[["(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[12]|3[4-8]|4[24-8]|5[2-8]|7[3-8]","($NP$FG)",],["([3-7]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[37][01]|4[0139]|51|6",,],["([89][09])(\\d{3,6})","$1 $2","[89][09]",,],["([58]\\d{2})(\\d{5})","$1 $2","59|8[1-3]",,]]]',
-"679": '["FJ","0(?:0|52)",,,,,"\\d{7}(?:\\d{4})?","[36-9]\\d{6}|0\\d{10}",[["(\\d{3})(\\d{4})","$1 $2","[36-9]",,],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3","0",,]]]',
-"238": '["CV","0",,,,,"\\d{7}","[259]\\d{6}",[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,,]]]',
-"691": '["FM","00",,,,,"\\d{7}","[39]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"262": ['["RE","00","0",,,"$NP$FG","\\d{9}","[268]\\d{8}",[["([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]','["YT","00","0",,,"$NP$FG","\\d{9}","[268]\\d{8}",]'],
-"241": '["GA","00",,,,,"\\d{7,8}","0?\\d{7}",[["(\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[2-7]","0$FG",],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","0",,]]]',
-"370": '["LT","00","8","[08]",,"($NP-$FG)","\\d{8}","[3-9]\\d{7}",[["([34]\\d)(\\d{6})","$1 $2","37|4(?:1|5[45]|6[2-4])",,],["([3-6]\\d{2})(\\d{5})","$1 $2","3[148]|4(?:[24]|6[09])|528|6",,],["([7-9]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","[7-9]","$NP $FG",],["(5)(2\\d{2})(\\d{4})","$1 $2 $3","52[0-79]",,]]]',
-"256": '["UG","00[057]","0",,,"$NP$FG","\\d{5,9}","\\d{9}",[["(\\d{3})(\\d{6})","$1 $2","[7-9]|20(?:[013-8]|2[5-9])|4(?:6[45]|[7-9])",,],["(\\d{2})(\\d{7})","$1 $2","3|4(?:[1-5]|6[0-36-9])",,],["(2024)(\\d{5})","$1 $2","2024",,]]]',
-"677": '["SB","0[01]",,,,,"\\d{5,7}","[1-9]\\d{4,6}",[["(\\d{2})(\\d{5})","$1 $2","[7-9]",,]]]',
-"377": '["MC","00","0",,,"$NP$FG","\\d{8,9}","[4689]\\d{7,8}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","9","$FG",],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","4",,],["(6)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","6",,],["(\\d{3})(\\d{3})(\\d{2})","$1 $2 $3","8","$FG",]]]',
-"382": '["ME","00","0",,,"$NP$FG","\\d{6,9}","[2-9]\\d{7,8}",[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[2-57-9]|6[036-9]",,],["(67)(9)(\\d{3})(\\d{3})","$1 $2 $3 $4","679",,]]]',
-"231": '["LR","00","0",,,"$NP$FG","\\d{7,9}","2\\d{7}|[37-9]\\d{8}|[45]\\d{6}",[["(2\\d)(\\d{3})(\\d{3})","$1 $2 $3","2",,],["([79]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[79]",,],["([4-6])(\\d{3})(\\d{3})","$1 $2 $3","[4-6]",,],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[38]",,]]]',
-"591": '["BO","00(1\\d)?","0","0(1\\d)?",,,"\\d{7,8}","[23467]\\d{7}",[["([234])(\\d{7})","$1 $2","[234]",,],["([67]\\d{7})","$1","[67]",,]]]',
-"808": '["001",,,,,,"\\d{8}","\\d{8}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"964": '["IQ","00","0",,,"$NP$FG","\\d{6,10}","[1-7]\\d{7,9}",[["(1)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","[2-6]",,],["(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","7",,]]]',
-"225": '["CI","00",,,,,"\\d{8}","[02-7]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"992": '["TJ","810","8",,,"($NP) $FG","\\d{3,9}","[3-59]\\d{8}",[["([349]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3","[34]7|91[78]",,],["([459]\\d)(\\d{3})(\\d{4})","$1 $2 $3","4[48]|5|9(?:1[59]|[0235-9])",,],["(331700)(\\d)(\\d{2})","$1 $2 $3","331",,],["(\\d{4})(\\d)(\\d{4})","$1 $2 $3","3[1-5]",,]]]',
-"55": '["BR","00(?:1[45]|2[135]|31|4[13])","0","(?:0|90)(?:(1[245]|2[135]|[34]1)(\\d{10,11}))?","$2",,"\\d{8,11}","[1-46-9]\\d{7,10}|5\\d{8,9}",[["(\\d{4})(\\d{4})","$1-$2","[2-9](?:[1-9]|0[1-9])","$FG","NA"],["(\\d{5})(\\d{4})","$1-$2","9(?:[1-9]|0[1-9])","$FG","NA"],["(\\d{3,5})","$1","1[125689]","$FG","NA"],["(\\d{2})(\\d{5})(\\d{4})","$1 $2-$3","(?:[189][1-9]|2[12478])9","($FG)",],["(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","[1-9][1-9]","($FG)",],["([34]00\\d)(\\d{4})","$1-$2","[34]00",,],["([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3","[3589]00","$NP$FG",]]]',
-"674": '["NR","00",,,,,"\\d{7}","[458]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"967": '["YE","00","0",,,"$NP$FG","\\d{6,9}","[1-7]\\d{6,8}",[["([1-7])(\\d{3})(\\d{3,4})","$1 $2 $3","[1-6]|7[24-68]",,],["(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","7[0137]",,]]]',
-"49": '["DE","00","0",,,"$NP$FG","\\d{2,15}","[1-35-9]\\d{3,14}|4(?:[0-8]\\d{4,12}|9(?:[0-37]\\d|4(?:[1-35-8]|4\\d?)|5\\d{1,2}|6[1-8]\\d?)\\d{2,8})",[["(1\\d{2})(\\d{7,8})","$1 $2","1[67]",,],["(1\\d{3})(\\d{7})","$1 $2","15",,],["(\\d{2})(\\d{3,11})","$1 $2","3[02]|40|[68]9",,],["(\\d{3})(\\d{3,11})","$1 $2","2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)",,],["(\\d{4})(\\d{2,11})","$1 $2","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])",,],["(3\\d{4})(\\d{1,10})","$1 $2","3",,],["(800)(\\d{7,12})","$1 $2","800",,],["(177)(99)(\\d{7,8})","$1 $2 $3","177",,],["(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3","(?:18|90)0|137",,],["(1\\d{2})(\\d{5,11})","$1 $2","181",,],["(18\\d{3})(\\d{6})","$1 $2","185",,],["(18\\d{2})(\\d{7})","$1 $2","18[68]",,],["(18\\d)(\\d{8})","$1 $2","18[2-579]",,],["(700)(\\d{4})(\\d{4})","$1 $2 $3","700",,],["(138)(\\d{4})","$1 $2","138",,]]]',
-"31": '["NL","00","0",,,"$NP$FG","\\d{5,10}","1\\d{4,8}|[2-7]\\d{8}|[89]\\d{6,9}",[["([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3","1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[4578]",,],["([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1[16-8]|2[259]|3[124]|4[17-9]|5[124679]",,],["(6)(\\d{8})","$1 $2","6[0-57-9]",,],["(66)(\\d{7})","$1 $2","66",,],["(14)(\\d{3,4})","$1 $2","14","$FG",],["([89]0\\d)(\\d{4,7})","$1 $2","80|9",,]]]',
-"970": '["PS","00","0",,,"$NP$FG","\\d{4,10}","[24589]\\d{7,8}|1(?:[78]\\d{8}|[49]\\d{2,3})",[["([2489])(2\\d{2})(\\d{4})","$1 $2 $3","[2489]",,],["(5[69]\\d)(\\d{3})(\\d{3})","$1 $2 $3","5",,],["(1[78]00)(\\d{3})(\\d{3})","$1 $2 $3","1[78]","$FG",]]]',
-"58": '["VE","00","0",,,"$NP$FG","\\d{7,10}","[24589]\\d{9}",[["(\\d{3})(\\d{7})","$1-$2",,,]]]',
-"856": '["LA","00","0",,,"$NP$FG","\\d{6,10}","[2-8]\\d{7,9}",[["(20)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4","20",,],["([2-8]\\d)(\\d{3})(\\d{3})","$1 $2 $3","2[13]|3[14]|[4-8]",,],["(30)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4","30",,]]]',
-"354": '["IS","00",,,,,"\\d{7,9}","[4-9]\\d{6}|38\\d{7}",[["(\\d{3})(\\d{4})","$1 $2","[4-9]",,],["(3\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","3",,]]]',
-"242": '["CG","00",,,,,"\\d{9}","[028]\\d{8}",[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[02]",,],["(\\d)(\\d{4})(\\d{4})","$1 $2 $3","8",,]]]',
-"423": '["LI","00","0",,,,"\\d{7,9}","6\\d{8}|[23789]\\d{6}",[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3","[23789]",,],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","6[56]",,],["(69)(7\\d{2})(\\d{4})","$1 $2 $3","697",,]]]',
-"213": '["DZ","00","0",,,"$NP$FG","\\d{8,9}","(?:[1-4]|[5-9]\\d)\\d{7}",[["([1-4]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[1-4]",,],["([5-8]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[5-8]",,],["(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","9",,]]]',
-"371": '["LV","00",,,,,"\\d{8}","[2689]\\d{7}",[["([2689]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
-"503": '["SV","00",,,,,"\\d{7,8}|\\d{11}","[267]\\d{7}|[89]\\d{6}(?:\\d{4})?",[["(\\d{4})(\\d{4})","$1 $2","[267]",,],["(\\d{3})(\\d{4})","$1 $2","[89]",,],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","[89]",,]]]',
-"685": '["WS","0",,,,,"\\d{5,7}","[2-8]\\d{4,6}",[["(8\\d{2})(\\d{3,4})","$1 $2","8",,],["(7\\d)(\\d{5})","$1 $2","7",,],["(\\d{5})","$1","[2-6]",,]]]',
-"880": '["BD","00[12]?","0",,,"$NP$FG","\\d{6,10}","[2-79]\\d{5,9}|1\\d{9}|8[0-7]\\d{4,8}",[["(2)(\\d{7})","$1-$2","2",,],["(\\d{2})(\\d{4,6})","$1-$2","[3-79]1",,],["(\\d{4})(\\d{3,6})","$1-$2","1|3(?:0|[2-58]2)|4(?:0|[25]2|3[23]|[4689][25])|5(?:[02-578]2|6[25])|6(?:[0347-9]2|[26][25])|7[02-9]2|8(?:[023][23]|[4-7]2)|9(?:[02][23]|[458]2|6[016])",,],["(\\d{3})(\\d{3,7})","$1-$2","[3-79][2-9]|8",,]]]',
-"265": '["MW","00","0",,,"$NP$FG","\\d{7,9}","(?:1(?:\\d{2})?|[2789]\\d{2})\\d{6}",[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3","1",,],["(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","2",,],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[1789]",,]]]',
-"65": '["SG","0[0-3]\\d",,,,,"\\d{8,11}","[36]\\d{7}|[17-9]\\d{7,10}",[["([3689]\\d{3})(\\d{4})","$1 $2","[369]|8[1-9]",,],["(1[89]00)(\\d{3})(\\d{4})","$1 $2 $3","1[89]",,],["(7000)(\\d{4})(\\d{3})","$1 $2 $3","70",,],["(800)(\\d{3})(\\d{4})","$1 $2 $3","80",,]]]',
-"504": '["HN","00",,,,,"\\d{8}","[237-9]\\d{7}",[["(\\d{4})(\\d{4})","$1-$2",,,]]]',
-"688": '["TV","00",,,,,"\\d{5,6}","[29]\\d{4,5}",]',
-"84": '["VN","00","0",,,"$NP$FG","\\d{7,10}","[17]\\d{6,9}|[2-69]\\d{7,9}|8\\d{6,8}",[["([17]99)(\\d{4})","$1 $2","[17]99",,],["([48])(\\d{4})(\\d{4})","$1 $2 $3","[48]",,],["([235-7]\\d)(\\d{4})(\\d{3})","$1 $2 $3","2[025-79]|3[0136-9]|5[2-9]|6[0-46-8]|7[02-79]",,],["(80)(\\d{5})","$1 $2","80",,],["(69\\d)(\\d{4,5})","$1 $2","69",,],["([235-7]\\d{2})(\\d{4})(\\d{3})","$1 $2 $3","2[1348]|3[25]|5[01]|65|7[18]",,],["(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","9",,],["(1[2689]\\d)(\\d{3})(\\d{4})","$1 $2 $3","1(?:[26]|8[68]|99)",,],["(1[89]00)(\\d{4,6})","$1 $2","1[89]0","$FG",]]]',
-"255": '["TZ","00[056]","0",,,"$NP$FG","\\d{7,9}","\\d{9}",[["([24]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[24]",,],["([67]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[67]",,],["([89]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3","[89]",,]]]',
-"222": '["MR","00",,,,,"\\d{8}","[2-48]\\d{7}",[["([2-48]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"230": '["MU","0(?:0|[2-7]0|33)",,,,,"\\d{7,8}","[2-9]\\d{6,7}",[["([2-46-9]\\d{2})(\\d{4})","$1 $2","[2-46-9]",,],["(5\\d{3})(\\d{4})","$1 $2","5",,]]]',
-"592": '["GY","001",,,,,"\\d{7}","[2-4679]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"41": '["CH","00","0",,,"$NP$FG","\\d{9}(?:\\d{3})?","[2-9]\\d{8}|860\\d{9}",[["([2-9]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[2-7]|[89]1",,],["([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","8[047]|90",,],["(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","860",,]]]',
-"39": '["IT","00",,,,,"\\d{6,11}","[01589]\\d{5,10}|3(?:[12457-9]\\d{8}|[36]\\d{7,9})",[["(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3","0[26]|55",,],["(0[26])(\\d{4})(\\d{5})","$1 $2 $3","0[26]",,],["(0[26])(\\d{4,6})","$1 $2","0[26]",,],["(0\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3","0[13-57-9][0159]",,],["(\\d{3})(\\d{3,6})","$1 $2","0[13-57-9][0159]|8(?:03|4[17]|9[245])",,],["(0\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","0[13-57-9][2-46-8]",,],["(0\\d{3})(\\d{2,6})","$1 $2","0[13-57-9][2-46-8]",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","[13]|8(?:00|4[08]|9[59])",,],["(\\d{4})(\\d{4})","$1 $2","894",,],["(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","3",,]]]',
-"993": '["TM","810","8",,,"($NP $FG)","\\d{8}","[1-6]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2-$3-$4","12",,],["(\\d{2})(\\d{6})","$1 $2","6","$NP $FG",],["(\\d{3})(\\d)(\\d{2})(\\d{2})","$1 $2-$3-$4","13|[2-5]",,]]]',
-"888": '["001",,,,,,"\\d{11}","\\d{11}",[["(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3",,,]]]',
-"353": '["IE","00","0",,,"($NP$FG)","\\d{5,10}","[124-9]\\d{6,9}",[["(1)(\\d{3,4})(\\d{4})","$1 $2 $3","1",,],["(\\d{2})(\\d{5})","$1 $2","2[24-9]|47|58|6[237-9]|9[35-9]",,],["(\\d{3})(\\d{5})","$1 $2","40[24]|50[45]",,],["(48)(\\d{4})(\\d{4})","$1 $2 $3","48",,],["(818)(\\d{3})(\\d{3})","$1 $2 $3","81",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","[24-69]|7[14]",,],["([78]\\d)(\\d{3,4})(\\d{4})","$1 $2 $3","76|8[35-9]","$NP$FG",],["(700)(\\d{3})(\\d{3})","$1 $2 $3","70","$NP$FG",],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:8[059]|5)","$FG",]]]',
-"966": '["SA","00","0",,,"$NP$FG","\\d{7,10}","1\\d{7,8}|(?:[2-467]|92)\\d{7}|5\\d{8}|8\\d{9}",[["([1-467])(\\d{3})(\\d{4})","$1 $2 $3","[1-467]",,],["(1\\d)(\\d{3})(\\d{4})","$1 $2 $3","1[1-467]",,],["(5\\d)(\\d{3})(\\d{4})","$1 $2 $3","5",,],["(92\\d{2})(\\d{5})","$1 $2","92","$FG",],["(800)(\\d{3})(\\d{4})","$1 $2 $3","80","$FG",],["(811)(\\d{3})(\\d{3,4})","$1 $2 $3","81",,]]]',
-"380": '["UA","00","0",,,"$NP$FG","\\d{5,9}","[3-689]\\d{8}",[["([3-689]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[38]9|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|9[1-9]",,],["([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","3[1-8]2|4[13678]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8[0-8]|90",,],["([3-6]\\d{3})(\\d{5})","$1 $2","3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])",,]]]',
-"98": '["IR","00","0",,,"$NP$FG","\\d{4,10}","[1-8]\\d{9}|9(?:[0-4]\\d{8}|9\\d{2,8})",[["(21)(\\d{3,5})","$1 $2","21",,],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","[1-8]",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","9",,],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3","9",,],["(\\d{3})(\\d{3})","$1 $2","9",,]]]',
-"971": '["AE","00","0",,,"$NP$FG","\\d{5,12}","[2-79]\\d{7,8}|800\\d{2,9}",[["([2-4679])(\\d{3})(\\d{4})","$1 $2 $3","[2-4679][2-8]",,],["(5[0256])(\\d{3})(\\d{4})","$1 $2 $3","5",,],["([479]00)(\\d)(\\d{5})","$1 $2 $3","[479]0","$FG",],["([68]00)(\\d{2,9})","$1 $2","60|8","$FG",]]]',
-"30": '["GR","00",,,,,"\\d{10}","[26-9]\\d{9}",[["([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3","21|7",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","2[2-9]1|[689]",,],["(2\\d{3})(\\d{6})","$1 $2","2[2-9][02-9]",,]]]',
-"228": '["TG","00",,,,,"\\d{8}","[29]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"48": '["PL","00",,,,,"\\d{6,9}","[12]\\d{6,8}|[3-57-9]\\d{8}|6\\d{5,8}",[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[14]|2[0-57-9]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]",,],["(\\d{2})(\\d{1})(\\d{4})","$1 $2 $3","[12]2",,],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","261|39|5[0137]|6[0469]|7[02389]|8[08]",,],["(\\d{3})(\\d{2})(\\d{2,3})","$1 $2 $3","64",,],["(\\d{3})(\\d{3})","$1 $2","64",,]]]',
-"886": '["TW","0(?:0[25679]|19)","0",,,"$NP$FG","\\d{8,10}","[2-689]\\d{7,8}|7\\d{7,9}",[["([2-8])(\\d{3,4})(\\d{4})","$1 $2 $3","[2-6]|[78][1-9]",,],["([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","80|9",,],["(70)(\\d{4})(\\d{4})","$1 $2 $3","70",,]]]',
-"212": ['["MA","00","0",,,"$NP$FG","\\d{9}","[5689]\\d{8}",[["([56]\\d{2})(\\d{6})","$1-$2","5(?:2[015-7]|3[0-4])|6",,],["([58]\\d{3})(\\d{5})","$1-$2","5(?:2[2-489]|3[5-9])|892",,],["(5\\d{4})(\\d{4})","$1-$2","5(?:29|38)",,],["(8[09])(\\d{7})","$1-$2","8(?:0|9[013-9])",,]]]','["EH","00","0",,,"$NP$FG","\\d{9}","[5689]\\d{8}",]'],
-"372": '["EE","00",,,,,"\\d{4,10}","1\\d{3,4}|[3-9]\\d{6,7}|800\\d{6,7}",[["([3-79]\\d{2})(\\d{4})","$1 $2","[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]",,],["(70)(\\d{2})(\\d{4})","$1 $2 $3","70",,],["(8000)(\\d{3})(\\d{3})","$1 $2 $3","800",,],["([458]\\d{3})(\\d{3,4})","$1 $2","40|5|8(?:00|[1-5])",,]]]',
-"598": '["UY","0(?:1[3-9]\\d|0)","0",,,,"\\d{7,8}","[2489]\\d{6,7}",[["(\\d{4})(\\d{4})","$1 $2","[24]",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","9[1-9]","$NP$FG",],["(\\d{3})(\\d{4})","$1 $2","[89]0","$NP$FG",]]]',
-"502": '["GT","00",,,,,"\\d{8}(?:\\d{3})?","[2-7]\\d{7}|1[89]\\d{9}",[["(\\d{4})(\\d{4})","$1 $2","[2-7]",,],["(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3","1",,]]]',
-"82": '["KR","00(?:[124-68]|[37]\\d{2})","0","0(8[1-46-8]|85\\d{2})?",,"$NP$FG","\\d{4,10}","[1-7]\\d{3,9}|8\\d{8}",[["(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","1(?:0|1[19]|[69]9|5[458])|[57]0",,],["(\\d{2})(\\d{3,4})(\\d{4})","$1-$2-$3","1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][1-9]",,],["(\\d{3})(\\d)(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","131",,],["(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","13[2-9]",,],["(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4","30",,],["(\\d)(\\d{3,4})(\\d{4})","$1-$2-$3","2[1-9]",,],["(\\d)(\\d{3,4})","$1-$2","21[0-46-9]",,],["(\\d{2})(\\d{3,4})","$1-$2","[3-6][1-9]1",,],["(\\d{4})(\\d{4})","$1-$2","1(?:5[46-9]|6[04678]|8[0579])","$FG",]]]',
-"253": '["DJ","00",,,,,"\\d{8}","[27]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"91": '["IN","00","0",,,"$NP$FG","\\d{6,13}","1\\d{7,12}|[2-9]\\d{9,10}",[["(\\d{5})(\\d{5})","$1 $2","7(?:0[2-9]|2[012579]|3[057-9]|4[0-389]|6[0-35-9]|[57]|8[0-79])|8(?:0[015689]|1[0-57-9]|2[2356-9]|3[0-57-9]|[45]|6[02457-9]|7[1-69]|8[0124-9]|9[02-9])|9",,],["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","11|2[02]|33|4[04]|79|80[2-46]",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1(?:2[0-249]|3[0-25]|4[145]|[569][14]|7[1257]|8[1346]|[68][1-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|[36][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)",,],["(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:[23579]|[468][1-9])|[2-8]",,],["(1600)(\\d{2})(\\d{4})","$1 $2 $3","160","$FG",],["(1800)(\\d{4,5})","$1 $2","180","$FG",],["(18[06]0)(\\d{2,4})(\\d{4})","$1 $2 $3","18[06]","$FG",],["(140)(\\d{3})(\\d{4})","$1 $2 $3","140","$FG",],["(\\d{4})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","18[06]","$FG",]]]',
-"389": '["MK","00","0",,,"$NP$FG","\\d{8}","[2-578]\\d{7}",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2",,],["([347]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[347]",,],["([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4","[58]",,]]]',
-"1": ['["US","011","1",,,,"\\d{7}(?:\\d{3})?","[2-9]\\d{9}",[["(\\d{3})(\\d{4})","$1-$2",,,"NA"],["(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,,"$1-$2-$3"]]]','["AI","011","1",,,,"\\d{7}(?:\\d{3})?","[2589]\\d{9}",]','["AS","011","1",,,,"\\d{7}(?:\\d{3})?","[5689]\\d{9}",]','["BB","011","1",,,,"\\d{7}(?:\\d{3})?","[2589]\\d{9}",]','["BM","011","1",,,,"\\d{7}(?:\\d{3})?","[4589]\\d{9}",]','["BS","011","1",,,,"\\d{7}(?:\\d{3})?","[2589]\\d{9}",]','["CA","011","1",,,,"\\d{7}(?:\\d{3})?","[2-9]\\d{9}|3\\d{6}",]','["DM","011","1",,,,"\\d{7}(?:\\d{3})?","[57-9]\\d{9}",]','["DO","011","1",,,,"\\d{7}(?:\\d{3})?","[589]\\d{9}",]','["GD","011","1",,,,"\\d{7}(?:\\d{3})?","[4589]\\d{9}",]','["GU","011","1",,,,"\\d{7}(?:\\d{3})?","[5689]\\d{9}",]','["JM","011","1",,,,"\\d{7}(?:\\d{3})?","[589]\\d{9}",]','["KN","011","1",,,,"\\d{7}(?:\\d{3})?","[589]\\d{9}",]','["KY","011","1",,,,"\\d{7}(?:\\d{3})?","[3589]\\d{9}",]','["LC","011","1",,,,"\\d{7}(?:\\d{3})?","[5789]\\d{9}",]','["MP","011","1",,,,"\\d{7}(?:\\d{3})?","[5689]\\d{9}",]','["MS","011","1",,,,"\\d{7}(?:\\d{3})?","[5689]\\d{9}",]','["PR","011","1",,,,"\\d{7}(?:\\d{3})?","[5789]\\d{9}",]','["SX","011","1",,,,"\\d{7}(?:\\d{3})?","[5789]\\d{9}",]','["TC","011","1",,,,"\\d{7}(?:\\d{3})?","[5689]\\d{9}",]','["TT","011","1",,,,"\\d{7}(?:\\d{3})?","[589]\\d{9}",]','["AG","011","1",,,,"\\d{7}(?:\\d{3})?","[2589]\\d{9}",]','["VC","011","1",,,,"\\d{7}(?:\\d{3})?","[5789]\\d{9}",]','["VG","011","1",,,,"\\d{7}(?:\\d{3})?","[2589]\\d{9}",]','["VI","011","1",,,,"\\d{7}(?:\\d{3})?","[3589]\\d{9}",]'],
-"60": '["MY","00","0",,,,"\\d{6,10}","[13-9]\\d{7,9}",[["([4-79])(\\d{3})(\\d{4})","$1-$2 $3","[4-79]","$NP$FG",],["(3)(\\d{4})(\\d{4})","$1-$2 $3","3","$NP$FG",],["([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3","1[02-46-9][1-9]|8","$NP$FG",],["(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4","1[36-8]0",,],["(11)(\\d{4})(\\d{4})","$1-$2 $3","11","$NP$FG",],["(15[49])(\\d{3})(\\d{4})","$1-$2 $3","15","$NP$FG",]]]',
-"355": '["AL","00","0",,,"$NP$FG","\\d{5,9}","[2-57]\\d{7}|6\\d{8}|8\\d{5,7}|9\\d{5}",[["(4)(\\d{3})(\\d{4})","$1 $2 $3","4[0-6]",,],["(6[6-9])(\\d{3})(\\d{4})","$1 $2 $3","6",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[2358][2-5]|4[7-9]",,],["(\\d{3})(\\d{3,5})","$1 $2","[235][16-9]|8[016-9]|[79]",,]]]',
-"254": '["KE","000","0",,,"$NP$FG","\\d{7,10}","20\\d{6,7}|[4-9]\\d{6,9}",[["(\\d{2})(\\d{5,7})","$1 $2","[24-6]",,],["(\\d{3})(\\d{6,7})","$1 $2","7",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","[89]",,]]]',
-"223": '["ML","00",,,,,"\\d{8}","[246-9]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[246-9]",,],["(\\d{4})","$1","67|74",,"NA"]]]',
-"686": '["KI","00",,"0",,,"\\d{5,8}","[2458]\\d{4}|3\\d{4,7}|7\\d{7}",]',
-"994": '["AZ","00","0",,,"($NP$FG)","\\d{7,9}","[1-9]\\d{8}",[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","(?:1[28]|2(?:[45]2|[0-36])|365)",,],["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[4-8]","$NP$FG",],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","9","$NP$FG",]]]',
-"979": '["001",,,,,,"\\d{9}","\\d{9}",[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3",,,]]]',
-"66": '["TH","00","0",,,"$NP$FG","\\d{4}|\\d{8,10}","[2-9]\\d{7,8}|1\\d{3}(?:\\d{5,6})?",[["(2)(\\d{3})(\\d{4})","$1 $2 $3","2",,],["([13-9]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","14|[3-9]",,],["(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3","1","$FG",]]]',
-"233": '["GH","00","0",,,"$NP$FG","\\d{7,9}","[235]\\d{8}|8\\d{7}",[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[235]",,],["(\\d{3})(\\d{5})","$1 $2","8",,]]]',
-"593": '["EC","00","0",,,"($NP$FG)","\\d{7,11}","1\\d{9,10}|[2-8]\\d{7}|9\\d{8}",[["(\\d)(\\d{3})(\\d{4})","$1 $2-$3","[247]|[356][2-8]",,"$1-$2-$3"],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","9","$NP$FG",],["(1800)(\\d{3})(\\d{3,4})","$1 $2 $3","1","$FG",]]]',
-"509": '["HT","00",,,,,"\\d{8}","[2-489]\\d{7}",[["(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",,,]]]',
-"54": '["AR","00","0","0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))?15)?","9$1","$NP$FG","\\d{6,11}","11\\d{8}|[2368]\\d{9}|9\\d{10}",[["([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","[68]",,],["(\\d{2})(\\d{4})","$1-$2","[2-9]","$FG","NA"],["(\\d{3})(\\d{4})","$1-$2","[2-9]","$FG","NA"],["(\\d{4})(\\d{4})","$1-$2","[2-9]","$FG","NA"],["(9)(11)(\\d{4})(\\d{4})","$2 15-$3-$4","911",,"$1 $2 $3-$4"],["(9)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4","9(?:2[234689]|3[3-8])",,"$1 $2 $3-$4"],["(9)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4","9[23]",,"$1 $2 $3-$4"],["(11)(\\d{4})(\\d{4})","$1 $2-$3","1",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3","2(?:2[013]|3[067]|49|6[01346]|80|9[147-9])|3(?:36|4[1-358]|5[138]|6[24]|7[069]|8[013578])",,],["(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","[23]",,],["(\\d{3})","$1","1[012]|911","$FG","NA"]]]',
-"57": '["CO","00(?:4(?:[14]4|56)|[579])","0","0([3579]|4(?:44|56))?",,,"\\d{7,11}","(?:[13]\\d{0,3}|[24-8])\\d{7}",[["(\\d)(\\d{7})","$1 $2","1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","($FG)",],["(\\d{3})(\\d{7})","$1 $2","3",,],["(1)(\\d{3})(\\d{7})","$1-$2-$3","1(?:80|9[04])","$NP$FG","$1 $2 $3"]]]',
-"597": '["SR","00",,,,,"\\d{6,7}","[2-8]\\d{5,6}",[["(\\d{3})(\\d{3})","$1-$2","[2-4]|5[2-58]",,],["(\\d{2})(\\d{2})(\\d{2})","$1-$2-$3","56",,],["(\\d{3})(\\d{4})","$1-$2","59|[6-8]",,]]]',
-"676": '["TO","00",,,,,"\\d{5,7}","[02-8]\\d{4,6}",[["(\\d{2})(\\d{3})","$1-$2","[1-6]|7[0-4]|8[05]",,],["(\\d{3})(\\d{4})","$1 $2","7[5-9]|8[47-9]",,],["(\\d{4})(\\d{3})","$1 $2","0",,]]]',
-"505": '["NI","00",,,,,"\\d{8}","[12578]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2",,,]]]',
-"850": '["KP","00|99","0",,,"$NP$FG","\\d{6,8}|\\d{10}","1\\d{9}|[28]\\d{7}",[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1",,],["(\\d)(\\d{3})(\\d{4})","$1 $2 $3","2",,],["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","8",,]]]',
-"7": ['["RU","810","8",,,"$NP ($FG)","\\d{10}","[3489]\\d{9}",[["(\\d{3})(\\d{2})(\\d{2})","$1-$2-$3","[1-79]","$FG","NA"],["([3489]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4","[34689]",,],["(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","7",,]]]','["KZ","810","8",,,,"\\d{10}","(?:33\\d|7\\d{2}|80[09])\\d{7}",]'],
-"268": '["SZ","00",,,,,"\\d{8}","[027]\\d{7}",[["(\\d{4})(\\d{4})","$1 $2","[027]",,]]]',
-"501": '["BZ","00",,,,,"\\d{7}(?:\\d{4})?","[2-8]\\d{6}|0\\d{10}",[["(\\d{3})(\\d{4})","$1-$2","[2-8]",,],["(0)(800)(\\d{4})(\\d{3})","$1-$2-$3-$4","0",,]]]',
-"252": '["SO","00","0",,,,"\\d{7,9}","[1-79]\\d{6,8}",[["(\\d)(\\d{6})","$1 $2","2[0-79]|[13-5]",,],["(\\d)(\\d{7})","$1 $2","24|[67]",,],["(\\d{2})(\\d{5,7})","$1 $2","15|28|6[1378]",,],["(69\\d)(\\d{6})","$1 $2","69",,],["(90\\d)(\\d{3})(\\d{3})","$1 $2 $3","90",,]]]',
-"229": '["BJ","00",,,,,"\\d{4,8}","[2689]\\d{7}|7\\d{3}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"680": '["PW","01[12]",,,,,"\\d{7}","[2-8]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"263": '["ZW","00","0",,,"$NP$FG","\\d{3,10}","2(?:[012457-9]\\d{3,8}|6\\d{3,6})|[13-79]\\d{4,8}|8[06]\\d{8}",[["([49])(\\d{3})(\\d{2,5})","$1 $2 $3","4|9[2-9]",,],["([179]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","[19]1|7",,],["(86\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","86[24]",,],["([2356]\\d{2})(\\d{3,5})","$1 $2","2(?:[278]|0[45]|[49]8)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])",,],["(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])|80",,],["([1-356]\\d)(\\d{3,5})","$1 $2","1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])",,],["([1-356]\\d)(\\d{3})(\\d{3})","$1 $2 $3","1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])",,],["([25]\\d{3})(\\d{3,5})","$1 $2","(?:25|54)8",,],["([25]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","(?:25|54)8",,],["(8\\d{3})(\\d{6})","$1 $2","86",,]]]',
-"90": '["TR","00","0",,,,"\\d{7,10}","[2-589]\\d{9}|444\\d{4}",[["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[23]|4(?:[0-35-9]|4[0-35-9])","($NP$FG)",],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[589]","$NP$FG",],["(444)(\\d{1})(\\d{3})","$1 $2 $3","444",,]]]',
-"352": '["LU","00",,"(15(?:0[06]|1[12]|35|4[04]|55|6[26]|77|88|99)\\d)",,,"\\d{4,11}","[24-9]\\d{3,10}|3(?:[0-46-9]\\d{2,9}|5[013-9]\\d{1,8})",[["(\\d{2})(\\d{3})","$1 $2","[2-5]|7[1-9]|[89](?:[1-9]|0[2-9])",,],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3","[2-5]|7[1-9]|[89](?:[1-9]|0[2-9])",,],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","20",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4","2(?:[0367]|4[3-8])",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4","20",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{1,2})","$1 $2 $3 $4 $5","2(?:[0367]|4[3-8])",,],["(\\d{2})(\\d{2})(\\d{2})(\\d{1,4})","$1 $2 $3 $4","2(?:[12589]|4[12])|[3-5]|7[1-9]|8(?:[1-9]|0[2-9])|9(?:[1-9]|0[2-46-9])",,],["(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3","70|80[01]|90[015]",,],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","6",,]]]',
-"47": ['["NO","00",,,,,"\\d{5}(?:\\d{3})?","0\\d{4}|[2-9]\\d{7}",[["([489]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","[489]",,],["([235-7]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[235-7]",,]]]','["SJ","00",,,,,"\\d{5}(?:\\d{3})?","0\\d{4}|[4789]\\d{7}",]'],
-"243": '["CD","00","0",,,"$NP$FG","\\d{7,9}","[2-6]\\d{6}|[18]\\d{6,8}|9\\d{8}",[["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","12",,],["([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","8[0-2459]|9",,],["(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","88",,],["(\\d{2})(\\d{5})","$1 $2","[1-6]",,]]]',
-"220": '["GM","00",,,,,"\\d{7}","[2-9]\\d{6}",[["(\\d{3})(\\d{4})","$1 $2",,,]]]',
-"687": '["NC","00",,,,,"\\d{6}","[2-57-9]\\d{5}",[["(\\d{2})(\\d{2})(\\d{2})","$1.$2.$3","[2-46-9]|5[0-4]",,]]]',
-"995": '["GE","00","0",,,,"\\d{6,9}","[34578]\\d{8}",[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[348]","$NP$FG",],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","7","$NP$FG",],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","5","$FG",]]]',
-"961": '["LB","00","0",,,,"\\d{7,8}","[13-9]\\d{6,7}",[["(\\d)(\\d{3})(\\d{3})","$1 $2 $3","[13-6]|7(?:[2-57]|62|8[0-7]|9[04-9])|8[02-9]|9","$NP$FG",],["([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[89][01]|7(?:[01]|6[013-9]|8[89]|9[1-3])",,]]]',
-"40": '["RO","00","0",,,"$NP$FG","\\d{6,9}","2\\d{5,8}|[37-9]\\d{8}",[["([237]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[23]1",,],["(21)(\\d{4})","$1 $2","21",,],["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[23][3-7]|[7-9]",,],["(2\\d{2})(\\d{3})","$1 $2","2[3-6]",,]]]',
-"232": '["SL","00","0",,,"($NP$FG)","\\d{6,8}","[2-57-9]\\d{7}",[["(\\d{2})(\\d{6})","$1 $2",,,]]]',
-"594": '["GF","00","0",,,"$NP$FG","\\d{9}","[56]\\d{8}",[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"976": '["MN","001","0",,,"$NP$FG","\\d{6,10}","[12]\\d{7,9}|[57-9]\\d{7}",[["([12]\\d)(\\d{2})(\\d{4})","$1 $2 $3","[12]1",,],["([12]2\\d)(\\d{5,6})","$1 $2","[12]2[1-3]",,],["([12]\\d{3})(\\d{5})","$1 $2","[12](?:27|[3-5])",,],["(\\d{4})(\\d{4})","$1 $2","[57-9]","$FG",],["([12]\\d{4})(\\d{4,5})","$1 $2","[12](?:27|[3-5])",,]]]',
-"20": '["EG","00","0",,,"$NP$FG","\\d{5,10}","1\\d{4,9}|[2456]\\d{8}|3\\d{7}|[89]\\d{8,9}",[["(\\d)(\\d{7,8})","$1 $2","[23]",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1[012]|[89]00",,],["(\\d{2})(\\d{6,7})","$1 $2","1[35]|[4-6]|[89][2-9]",,]]]',
-"689": '["PF","00",,,,,"\\d{6}(?:\\d{2})?","4\\d{5,7}|8\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","4[09]|8[79]",,],["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3","44",,]]]',
-"56": '["CL","(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0","0|(1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,"$NP$FG","\\d{7,11}","(?:[2-9]|600|123)\\d{7,8}",[["(\\d)(\\d{4})(\\d{4})","$1 $2 $3","22","($FG)",],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[357]|4[1-35]|6[13-57]","($FG)",],["(9)(\\d{4})(\\d{4})","$1 $2 $3","9",,],["(44)(\\d{3})(\\d{4})","$1 $2 $3","44",,],["([68]00)(\\d{3})(\\d{3,4})","$1 $2 $3","60|8","$FG",],["(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4","60","$FG",],["(1230)(\\d{3})(\\d{4})","$1 $2 $3","1","$FG",],["(\\d{5})(\\d{4})","$1 $2","219","($FG)",],["(\\d{4,5})","$1","[1-9]","$FG","NA"]]]',
-"596": '["MQ","00","0",,,"$NP$FG","\\d{9}","[56]\\d{8}",[["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"508": '["PM","00","0",,,"$NP$FG","\\d{6}","[45]\\d{5}",[["([45]\\d)(\\d{2})(\\d{2})","$1 $2 $3",,,]]]',
-"269": '["KM","00",,,,,"\\d{7}","[379]\\d{6}",[["(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,,]]]',
-"358": ['["FI","00|99[049]","0",,,"$NP$FG","\\d{5,12}","1\\d{4,11}|[2-9]\\d{4,10}",[["(\\d{3})(\\d{3,7})","$1 $2","(?:[1-3]00|[6-8]0)",,],["(\\d{2})(\\d{4,10})","$1 $2","[14]|2[09]|50|7[135]",,],["(\\d)(\\d{4,11})","$1 $2","[25689][1-8]|3",,]]]','["AX","00|99[049]","0",,,"$NP$FG","\\d{5,12}","[135]\\d{5,9}|[27]\\d{4,9}|4\\d{5,10}|6\\d{7,8}|8\\d{6,9}",]'],
-"251": '["ET","00","0",,,"$NP$FG","\\d{7,9}","[1-59]\\d{8}",[["([1-59]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,,]]]',
-"681": '["WF","00",,,,,"\\d{6}","[5-7]\\d{5}",[["(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",,,]]]',
-"853": '["MO","00",,,,,"\\d{8}","[268]\\d{7}",[["([268]\\d{3})(\\d{4})","$1 $2",,,]]]',
-"44": ['["GB","00","0",,,"$NP$FG","\\d{4,10}","\\d{7,10}",[["(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","2|5[56]|7(?:0|6[013-9])",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1(?:1|\\d1)|3|9[018]",,],["(\\d{5})(\\d{4,5})","$1 $2","1(?:38|5[23]|69|76|94)",,],["(1\\d{3})(\\d{5,6})","$1 $2","1",,],["(7\\d{3})(\\d{6})","$1 $2","7(?:[1-5789]|62)",,],["(800)(\\d{4})","$1 $2","800",,],["(845)(46)(4\\d)","$1 $2 $3","845",,],["(8\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","8(?:4[2-5]|7[0-3])",,],["(80\\d)(\\d{3})(\\d{4})","$1 $2 $3","80",,],["([58]00)(\\d{6})","$1 $2","[58]00",,]]]','["GG","00","0",,,"$NP$FG","\\d{6,10}","[135789]\\d{6,9}",]','["IM","00","0",,,"$NP$FG","\\d{6,10}","[135789]\\d{6,9}",]','["JE","00","0",,,"$NP$FG","\\d{6,10}","[135789]\\d{6,9}",]'],
-"244": '["AO","00",,,,,"\\d{9}","[29]\\d{8}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,,]]]',
-"211": '["SS","00","0",,,,"\\d{9}","[19]\\d{8}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"$NP$FG",]]]',
-"373": '["MD","00","0",,,"$NP$FG","\\d{8}","[235-9]\\d{7}",[["(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","22|3",,],["([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","2[13-79]|[5-7]",,],["([89]\\d{2})(\\d{5})","$1 $2","[89]",,]]]',
-"996": '["KG","00","0",,,"$NP$FG","\\d{5,10}","[235-8]\\d{8,9}",[["(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[25-7]|31[25]",,],["(\\d{4})(\\d{5})","$1 $2","3(?:1[36]|[2-9])",,],["(\\d{3})(\\d{3})(\\d)(\\d{3})","$1 $2 $3 $4","8",,]]]',
-"93": '["AF","00","0",,,"$NP$FG","\\d{7,9}","[2-7]\\d{8}",[["([2-7]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[2-7]",,]]]',
-"260": '["ZM","00","0",,,"$NP$FG","\\d{9}","[289]\\d{8}",[["([29]\\d)(\\d{7})","$1 $2","[29]",,],["(800)(\\d{3})(\\d{3})","$1 $2 $3","8",,]]]',
-"378": '["SM","00",,"(?:0549)?([89]\\d{5})","0549$1",,"\\d{6,10}","[05-7]\\d{7,9}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[5-7]",,],["(0549)(\\d{6})","$1 $2","0",,"($1) $2"],["(\\d{6})","0549 $1","[89]",,"(0549) $1"]]]',
-"235": '["TD","00|16",,,,,"\\d{8}","[2679]\\d{7}",[["(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,,]]]',
-"960": '["MV","0(?:0|19)",,,,,"\\d{7,10}","[3467]\\d{6}|9(?:00\\d{7}|\\d{6})",[["(\\d{3})(\\d{4})","$1-$2","[3467]|9(?:[1-9]|0[1-9])",,],["(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","900",,]]]',
-"221": '["SN","00",,,,,"\\d{9}","[3789]\\d{8}",[["(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[379]",,],["(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","8",,]]]',
-"595": '["PY","00","0",,,,"\\d{5,9}","5[0-5]\\d{4,7}|[2-46-9]\\d{5,8}",[["(\\d{2})(\\d{5,7})","$1 $2","(?:[26]1|3[289]|4[124678]|7[123]|8[1236])","($FG)",],["(\\d{3})(\\d{3,6})","$1 $2","[2-9]0","$NP$FG",],["(\\d{3})(\\d{6})","$1 $2","9[1-9]","$NP$FG",],["(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","8700",,],["(\\d{3})(\\d{4,6})","$1 $2","[2-8][1-9]","($FG)",]]]',
-"977": '["NP","00","0",,,"$NP$FG","\\d{6,10}","[1-8]\\d{7}|9(?:[1-69]\\d{6,8}|7[2-6]\\d{5,7}|8\\d{8})",[["(1)(\\d{7})","$1-$2","1[2-6]",,],["(\\d{2})(\\d{6})","$1-$2","1[01]|[2-8]|9(?:[1-69]|7[15-9])",,],["(9\\d{2})(\\d{7})","$1-$2","9(?:6[013]|7[245]|8)",,]]]',
-"36": '["HU","00","06",,,"($FG)","\\d{6,9}","[1-9]\\d{7,8}",[["(1)(\\d{3})(\\d{4})","$1 $2 $3","1",,],["(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","[2-9]",,]]]',
-};
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumberNormalizer.jsm
+++ /dev/null
@@ -1,55 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-
-// Don't modify this code. Please use:
-// https://github.com/andreasgal/PhoneNumber.js
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["PhoneNumberNormalizer"];
-
-this.PhoneNumberNormalizer = (function() {
-  const UNICODE_DIGITS = /[\uFF10-\uFF19\u0660-\u0669\u06F0-\u06F9]/g;
-  const VALID_ALPHA_PATTERN = /[a-zA-Z]/g;
-  const LEADING_PLUS_CHARS_PATTERN = /^[+\uFF0B]+/g;
-  const NON_DIALABLE_CHARS = /[^,#+\*\d]/g;
-
-  // Map letters to numbers according to the ITU E.161 standard
-  var E161 = {
-    'a': 2, 'b': 2, 'c': 2,
-    'd': 3, 'e': 3, 'f': 3,
-    'g': 4, 'h': 4, 'i': 4,
-    'j': 5, 'k': 5, 'l': 5,
-    'm': 6, 'n': 6, 'o': 6,
-    'p': 7, 'q': 7, 'r': 7, 's': 7,
-    't': 8, 'u': 8, 'v': 8,
-    'w': 9, 'x': 9, 'y': 9, 'z': 9
-  };
-
-  // Normalize a number by converting unicode numbers and symbols to their
-  // ASCII equivalents and removing all non-dialable characters.
-  function NormalizeNumber(number, numbersOnly) {
-    if (typeof number !== 'string') {
-      return '';
-    }
-
-    number = number.replace(UNICODE_DIGITS,
-                            function (ch) {
-                              return String.fromCharCode(48 + (ch.charCodeAt(0) & 0xf));
-                            });
-    if (!numbersOnly) {
-      number = number.replace(VALID_ALPHA_PATTERN,
-                              function (ch) {
-                                return String(E161[ch.toLowerCase()] || 0);
-                              });
-    }
-    number = number.replace(LEADING_PLUS_CHARS_PATTERN, "+");
-    number = number.replace(NON_DIALABLE_CHARS, "");
-    return number;
-  };
-
-
-  return {
-    Normalize: NormalizeNumber
-  };
-})();
\ No newline at end of file
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumberService.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const DEBUG = false;
-function debug(s) { dump("-*- PhoneNumberService.js: " + s + "\n"); }
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/DOMRequestHelper.jsm");
-Cu.import("resource://gre/modules/PhoneNumberUtils.jsm");
-Cu.import("resource://gre/modules/PhoneNumberNormalizer.jsm");
-
-XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
-                                   "@mozilla.org/childprocessmessagemanager;1",
-                                   "nsIMessageSender");
-
-// PhoneNumberService
-
-function PhoneNumberService()
-{
-  if (DEBUG) debug("Constructor");
-}
-
-PhoneNumberService.prototype = {
-  __proto__: DOMRequestIpcHelper.prototype,
-
-  receiveMessage: function(aMessage) {
-    if (DEBUG) debug("receiveMessage: " + aMessage.name);
-    let msg = aMessage.json;
-
-    let req = this.getRequest(msg.requestID);
-    if (!req) {
-      return;
-    }
-
-    switch (aMessage.name) {
-      case "PhoneNumberService:FuzzyMatch:Return:KO":
-        Services.DOMRequest.fireError(req.request, msg.errorMsg);
-        break;
-      case "PhoneNumberService:FuzzyMatch:Return:OK":
-        Services.DOMRequest.fireSuccess(req.request, msg.result);
-        break;
-      default:
-        if (DEBUG) debug("Wrong message: " + aMessage.name);
-    }
-    this.removeRequest(msg.requestID);
-  },
-
-  fuzzyMatch: function(aNumber1, aNumber2) {
-    if (DEBUG) debug("fuzzyMatch: " + aNumber1 + ", " + aNumber2);
-    let request = this.createRequest();
-
-    if ((aNumber1 && !aNumber2) || (aNumber2 && !aNumber1)) {
-      // if only one of the numbers is empty/null/undefined and the other
-      // number is not, we can fire false result in next tick
-      Services.DOMRequest.fireSuccessAsync(request, false);
-    } else if ((aNumber1 === aNumber2) ||
-        (PhoneNumberNormalizer.Normalize(aNumber1) === PhoneNumberNormalizer.Normalize(aNumber2))) {
-      // if we have a simple match fire successful request in next tick
-      Services.DOMRequest.fireSuccessAsync(request, true);
-    } else {
-      // invoke fuzzy matching in the parent
-      let options = { number1: aNumber1, number2: aNumber2 };
-      cpmm.sendAsyncMessage("PhoneNumberService:FuzzyMatch",
-                           {requestID: this.getRequestId({request: request}),
-                            options: options});
-    }
-
-    return request;
-  },
-
-  normalize: function(aNumber) {
-    if (DEBUG) debug("normalize: " + aNumber);
-    return PhoneNumberNormalizer.Normalize(aNumber);
-  },
-
-  init: function(aWindow) {
-    if (DEBUG) debug("init call");
-    this.initDOMRequestHelper(aWindow, [
-      "PhoneNumberService:FuzzyMatch:Return:OK",
-      "PhoneNumberService:FuzzyMatch:Return:KO"
-    ]);
-  },
-
-  classID : Components.ID("{e2768710-eb17-11e2-91e2-0800200c9a66}"),
-  contractID : "@mozilla.org/phoneNumberService;1",
-  QueryInterface : XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer,
-                                          Ci.nsISupportsWeakReference,
-                                          Ci.nsIObserver]),
-}
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PhoneNumberService]);
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumberService.manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-component {e2768710-eb17-11e2-91e2-0800200c9a66} PhoneNumberService.js
-contract @mozilla.org/phoneNumberService;1 {e2768710-eb17-11e2-91e2-0800200c9a66}
\ No newline at end of file
deleted file mode 100644
--- a/dom/phonenumberutils/PhoneNumberUtils.jsm
+++ /dev/null
@@ -1,236 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-
-"use strict";
-
-this.EXPORTED_SYMBOLS = ["PhoneNumberUtils"];
-
-const DEBUG = false;
-function debug(s) { if(DEBUG) dump("-*- PhoneNumberutils: " + s + "\n"); }
-
-const Cu = Components.utils;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import('resource://gre/modules/XPCOMUtils.jsm');
-XPCOMUtils.defineLazyModuleGetter(this, "PhoneNumberNormalizer",
-                                  "resource://gre/modules/PhoneNumberNormalizer.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "MCC_ISO3166_TABLE",
-                                  "resource://gre/modules/mcc_iso3166_table.jsm");
-
-#ifdef MOZ_B2G_RIL
-XPCOMUtils.defineLazyServiceGetter(this, "mobileConnection",
-                                   "@mozilla.org/mobileconnection/mobileconnectionservice;1",
-                                   "nsIMobileConnectionService");
-XPCOMUtils.defineLazyServiceGetter(this, "gIccService",
-                                   "@mozilla.org/icc/iccservice;1",
-                                   "nsIIccService");
-#endif
-
-this.PhoneNumberUtils = {
-
-  initParent: function() {
-    ppmm.addMessageListener(["PhoneNumberService:FuzzyMatch"], this);
-    this._countryNameCache = Object.create(null);
-  },
-
-  initChild: function () {
-    this._countryNameCache = Object.create(null);
-  },
-  //  1. See whether we have a network mcc
-  //  2. If we don't have that, look for the simcard mcc
-  //  3. If we don't have that or its 0 (not activated), pick up the last used mcc
-  //  4. If we don't have, default to some mcc
-
-  // mcc for Brasil
-  _mcc: '724',
-
-  getCountryName: function getCountryName() {
-    let mcc;
-    let countryName;
-
-#ifdef MOZ_B2G_RIL
-    // TODO: Bug 926740 - PhoneNumberUtils for multisim
-    // In Multi-sim, there is more than one client in
-    // iccService/mobileConnectionService. Each client represents a
-    // icc/mobileConnection service. To maintain the backward compatibility with
-    // single sim, we always use client 0 for now. Adding support for multiple
-    // sim will be addressed in bug 926740, if needed.
-    let clientId = 0;
-
-    // Get network mcc
-    let connection = mobileConnection.getItemByServiceId(clientId);
-    let voice = connection && connection.voice;
-    if (voice && voice.network && voice.network.mcc) {
-      mcc = voice.network.mcc;
-    }
-
-    // Get SIM mcc
-    let icc = gIccService.getIccByServiceId(clientId);
-    let iccInfo = icc && icc.iccInfo;
-    if (!mcc && iccInfo && iccInfo.mcc) {
-      mcc = iccInfo.mcc;
-    }
-
-    // Attempt to grab last known sim mcc from prefs
-    if (!mcc) {
-      try {
-        mcc = Services.prefs.getCharPref("ril.lastKnownSimMcc");
-      } catch (e) {}
-    }
-
-    // Set to default mcc
-    if (!mcc) {
-      mcc = this._mcc;
-    }
-#else
-
-    // Attempt to grab last known sim mcc from prefs
-    if (!mcc) {
-      try {
-        mcc = Services.prefs.getCharPref("ril.lastKnownSimMcc");
-      } catch (e) {}
-    }
-
-    if (!mcc) {
-      mcc = this._mcc;
-    }
-#endif
-
-    countryName = MCC_ISO3166_TABLE[mcc];
-    if (DEBUG) debug("MCC: " + mcc + "countryName: " + countryName);
-    return countryName;
-  },
-
-  parse: function(aNumber) {
-    if (DEBUG) debug("call parse: " + aNumber);
-    let result = PhoneNumber.Parse(aNumber, this.getCountryName());
-
-    if (result) {
-      let countryName = result.countryName || this.getCountryName();
-      let number = null;
-      if (countryName) {
-        if (Services.prefs.getPrefType("dom.phonenumber.substringmatching." + countryName) == Ci.nsIPrefBranch.PREF_INT) {
-          let val = Services.prefs.getIntPref("dom.phonenumber.substringmatching." + countryName);
-          if (val) {
-            number = result.internationalNumber || result.nationalNumber;
-            if (number && number.length > val) {
-              number = number.slice(-val);
-            }
-          }
-        }
-      }
-      Object.defineProperty(result, "nationalMatchingFormat", { value: number, enumerable: true });
-      if (DEBUG) {
-        debug("InternationalFormat: " + result.internationalFormat);
-        debug("InternationalNumber: " + result.internationalNumber);
-        debug("NationalNumber: " + result.nationalNumber);
-        debug("NationalFormat: " + result.nationalFormat);
-        debug("CountryName: " + result.countryName);
-        debug("NationalMatchingFormat: " + result.nationalMatchingFormat);
-      }
-    } else if (DEBUG) {
-      debug("NO PARSING RESULT!");
-    }
-    return result;
-  },
-
-  parseWithMCC: function(aNumber, aMCC) {
-    if (DEBUG) debug("parseWithMCC " + aNumber + ", " + aMCC);
-    let countryName = MCC_ISO3166_TABLE[aMCC];
-    if (DEBUG) debug("found country name: " + countryName);
-    return PhoneNumber.Parse(aNumber, countryName);
-  },
-
-  parseWithCountryName: function(aNumber, aCountryName) {
-    if (this._countryNameCache[aCountryName]) {
-      return PhoneNumber.Parse(aNumber, aCountryName);
-    }
-
-    if (Object.keys(this._countryNameCache).length === 0) {
-      // populate the cache
-      let keys = Object.keys(MCC_ISO3166_TABLE);
-      for (let i = 0; i < keys.length; i++) {
-        this._countryNameCache[MCC_ISO3166_TABLE[keys[i]]] = true;
-      }
-    }
-
-    if (!this._countryNameCache[aCountryName]) {
-      dump("Couldn't find country name: " + aCountryName + "\n");
-      return null;
-    }
-
-    return PhoneNumber.Parse(aNumber, aCountryName);
-  },
-
-  isPlainPhoneNumber: function isPlainPhoneNumber(aNumber) {
-    var isPlain = PhoneNumber.IsPlain(aNumber);
-    if (DEBUG) debug("isPlain(" + aNumber + ") " + isPlain);
-    return isPlain;
-  },
-
-  normalize: function Normalize(aNumber, aNumbersOnly) {
-    let normalized = PhoneNumberNormalizer.Normalize(aNumber, aNumbersOnly);
-    if (DEBUG) debug("normalize(" + aNumber + "): " + normalized + ", " + aNumbersOnly);
-    return normalized;
-  },
-
-  fuzzyMatch: function fuzzyMatch(aNumber1, aNumber2) {
-    let normalized1 = this.normalize(aNumber1);
-    let normalized2 = this.normalize(aNumber2);
-    if (DEBUG) debug("Normalized Number1: " + normalized1 + ", Number2: " + normalized2);
-    if (normalized1 === normalized2) {
-      return true;
-    }
-    let parsed1 = this.parse(aNumber1);
-    let parsed2 = this.parse(aNumber2);
-    if (parsed1 && parsed2) {
-      if ((parsed1.internationalNumber && parsed1.internationalNumber === parsed2.internationalNumber)
-          || (parsed1.nationalNumber && parsed1.nationalNumber === parsed2.nationalNumber)) {
-        return true;
-      }
-    }
-    let countryName = this.getCountryName();
-    let ssPref = "dom.phonenumber.substringmatching." + countryName;
-    if (Services.prefs.getPrefType(ssPref) == Ci.nsIPrefBranch.PREF_INT) {
-      let val = Services.prefs.getIntPref(ssPref);
-      if (normalized1.length > val && normalized2.length > val
-         && normalized1.slice(-val) === normalized2.slice(-val)) {
-        return true;
-      }
-    }
-    return false;
-  },
-
-  receiveMessage: function(aMessage) {
-    if (DEBUG) debug("receiveMessage " + aMessage.name);
-    let mm = aMessage.target;
-    let msg = aMessage.data;
-
-    switch (aMessage.name) {
-      case "PhoneNumberService:FuzzyMatch":
-        mm.sendAsyncMessage("PhoneNumberService:FuzzyMatch:Return:OK", {
-          requestID: msg.requestID,
-          result: this.fuzzyMatch(msg.options.number1, msg.options.number2)
-        });
-        break;
-      default:
-        if (DEBUG) debug("WRONG MESSAGE NAME: " + aMessage.name);
-    }
-  }
-};
-
-var inParent = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime)
-                 .processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
-if (inParent) {
-  XPCOMUtils.defineLazyModuleGetter(this, "PhoneNumber",
-                                    "resource://gre/modules/PhoneNumber.jsm");
-  XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
-                                     "@mozilla.org/parentprocessmessagemanager;1",
-                                     "nsIMessageListenerManager");
-  PhoneNumberUtils.initParent();
-} else {
-  PhoneNumberUtils.initChild();
-}
-
deleted file mode 100644
--- a/dom/phonenumberutils/mcc_iso3166_table.jsm
+++ /dev/null
@@ -1,244 +0,0 @@
-// MCC(Mobile Country Codes) and country name(ISO3166-1) mapping table.
-// Reference Data from:
-//           http://en.wikipedia.org/wiki/List_of_mobile_country_codes
-
-this.EXPORTED_SYMBOLS = ["MCC_ISO3166_TABLE"];
-
-this.MCC_ISO3166_TABLE = {
-412:'AF',
-276:'AL',
-603:'DZ',
-544:'AS',
-213:'AD',
-631:'AO',
-365:'AI',
-344:'AG',
-722:'AR',
-283:'AM',
-363:'AW',
-505:'AU',
-232:'AT',
-400:'AZ',
-364:'BS',
-426:'BH',
-470:'BD',
-342:'BB',
-257:'BY',
-206:'BE',
-702:'BZ',
-616:'BJ',
-350:'BM',
-402:'BT',
-736:'BO',
-218:'BA',
-652:'BW',
-724:'BR',
-348:'VG',
-528:'BN',
-284:'BG',
-613:'BF',
-642:'BI',
-456:'KH',
-624:'CM',
-302:'CA',
-625:'CV',
-346:'KY',
-623:'CF',
-622:'TD',
-730:'CL',
-460:'CN',
-461:'CN',
-732:'CO',
-654:'KM',
-629:'CG',
-548:'CK',
-712:'CR',
-612:'CI',
-219:'HR',
-368:'CU',
-362:'CW',
-280:'CY',
-230:'CZ',
-630:'CD',
-238:'DK',
-638:'DJ',
-366:'DM',
-370:'DO',
-514:'TL',
-740:'EC',
-602:'EG',
-706:'SV',
-627:'GQ',
-657:'ER',
-248:'EE',
-636:'ET',
-750:'FK',
-288:'FO',
-542:'FJ',
-244:'FI',
-208:'FR',
-742:'GF',
-547:'PF',
-628:'GA',
-607:'GM',
-282:'GE',
-262:'DE',
-620:'GH',
-266:'GI',
-202:'GR',
-290:'GL',
-352:'GD',
-340:'GP',
-535:'GU',
-704:'GT',
-611:'GN',
-632:'GW',
-738:'GY',
-372:'HT',
-708:'HN',
-454:'HK',
-216:'HU',
-274:'IS',
-404:'IN',
-405:'IN',
-406:'IN',
-510:'ID',
-432:'IR',
-418:'IQ',
-272:'IE',
-425:'IL',
-222:'IT',
-338:'JM',
-441:'JP',
-440:'JP',
-416:'JO',
-401:'KZ',
-639:'KE',
-545:'KI',
-467:'KP',
-450:'KR',
-419:'KW',
-437:'KG',
-457:'LA',
-247:'LV',
-415:'LB',
-651:'LS',
-618:'LR',
-606:'LY',
-295:'LI',
-246:'LT',
-270:'LU',
-455:'MO',
-294:'MK',
-646:'MG',
-650:'MW',
-502:'MY',
-472:'MV',
-610:'ML',
-278:'MT',
-551:'MH',
-340:'MQ',
-609:'MR',
-617:'MU',
-334:'MX',
-550:'FM',
-259:'MD',
-212:'MC',
-428:'MN',
-297:'ME',
-354:'MS',
-604:'MA',
-643:'MZ',
-414:'MM',
-649:'NA',
-536:'NR',
-429:'NP',
-204:'NL',
-546:'NC',
-530:'NZ',
-710:'NI',
-614:'NE',
-621:'NG',
-555:'NU',
-534:'MP',
-242:'NO',
-422:'OM',
-410:'PK',
-552:'PW',
-425:'PS',
-714:'PA',
-537:'PG',
-744:'PY',
-716:'PE',
-515:'PH',
-260:'PL',
-268:'PT',
-330:'PR',
-427:'QA',
-647:'RE',
-226:'RO',
-250:'RU',
-635:'RW',
-356:'KN',
-358:'LC',
-308:'PM',
-360:'VC',
-549:'WS',
-292:'SM',
-626:'ST',
-420:'SA',
-608:'SN',
-220:'RS',
-633:'SC',
-619:'SL',
-525:'SG',
-231:'SK',
-293:'SI',
-540:'SB',
-637:'SO',
-655:'ZA',
-214:'ES',
-413:'LK',
-634:'SD',
-746:'SR',
-653:'SZ',
-240:'SE',
-228:'CH',
-417:'SY',
-466:'TW',
-436:'TJ',
-640:'TZ',
-520:'TH',
-615:'TG',
-539:'TO',
-374:'TT',
-605:'TN',
-286:'TR',
-438:'TM',
-376:'TC',
-641:'UG',
-255:'UA',
-424:'AE',
-430:'AE',
-431:'AE',
-235:'GB',
-234:'GB',
-310:'US',
-311:'US',
-312:'US',
-313:'US',
-314:'US',
-315:'US',
-316:'US',
-332:'VI',
-748:'UY',
-434:'UZ',
-541:'VU',
-225:'VA',
-734:'VE',
-452:'VN',
-543:'WF',
-421:'YE',
-645:'ZM',
-648:'ZW'
-}
deleted file mode 100644
--- a/dom/phonenumberutils/moz.build
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-EXTRA_COMPONENTS += [
-    'PhoneNumberService.js',
-    'PhoneNumberService.manifest',
-]
-
-EXTRA_JS_MODULES += [
-    'mcc_iso3166_table.jsm',
-    'PhoneNumber.jsm',
-    'PhoneNumberMetaData.jsm',
-    'PhoneNumberNormalizer.jsm',
-]
-
-EXTRA_PP_JS_MODULES += [
-    'PhoneNumberUtils.jsm',
-]
-
-MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
-MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
deleted file mode 100644
--- a/dom/phonenumberutils/tests/chrome.ini
+++ /dev/null
@@ -1,6 +0,0 @@
-[DEFAULT]
-skip-if = buildapp == 'b2g'
-
-[test_phonenumber.xul]
-[test_phonenumberservice.xul]
-[test_phonenumberutils.xul]
deleted file mode 100644
--- a/dom/phonenumberutils/tests/mochitest.ini
+++ /dev/null
@@ -1,1 +0,0 @@
-[test_phonenumberutils_basics.html]
deleted file mode 100644
--- a/dom/phonenumberutils/tests/test_phonenumber.xul
+++ /dev/null
@@ -1,366 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Any copyright is dedicated to the Public Domain.
-   - http://creativecommons.org/publicdomain/zero/1.0/ -->
-
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        title="Mozilla Bug 781379">
-  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
-  <script type="application/javascript" src="head.js"/>
-  <!-- test results are displayed in the html:body -->
-  <body xmlns="http://www.w3.org/1999/xhtml">
-  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=809213"
-     target="_blank">Mozilla Bug 809213</a>
-  </body>
-
-<script type="application/javascript;version=1.8">
-
-"use strict";
-
-Components.utils.import("resource://gre/modules/PhoneNumber.jsm");
-Components.utils.import("resource://gre/modules/PhoneNumberNormalizer.jsm");
-
-function IsPlain(dial, expected) {
-  var result = PhoneNumber.IsPlain(dial);
-  if (result != expected) {
-    ok(false, dial + " is " + (result ? "" : "not ") + "plain, expects otherwise.");
-  } else {
-    ok(true, dial + " is " + (result ? "" : "not ") + "plain as expected.");
-  }
-}
-
-function Normalize(dial, expected) {
-  var result = PhoneNumberNormalizer.Normalize(dial);
-  if (result !== expected) {
-    ok(false, "normalized " + dial + " to " + result + ", expected " + expected + " instead.");
-  } else {
-    ok(true, "normalized " + dial + " to " + result + " as expected.");
-  }
-}
-
-function Normalize(dial, expected) {
-  var result = PhoneNumberNormalizer.Normalize(dial);
-  if (result != expected) {
-    ok(false, "Normalize error!\n");
-    print("expected: " + expected);
-    print("got: " + result);
-  } else {
-    ok(true, "Normalization OK");
-  }
-}
-
-function CantParse(dial, currentRegion) {
-  var result = PhoneNumber.Parse(dial, currentRegion);
-  if (result) {
-  	ok(false, "Shouldn't parse!\n");
-    print("expected: does not parse");
-    print("got: " + dial + " " + currentRegion);
-  }
-}
-
-function Parse(dial, currentRegion) {
-  dump("try: " + dial + ", " + currentRegion + "\n");
-  var result = PhoneNumber.Parse(dial, currentRegion);
-  if (!result) {
-  	ok(false, "got: " + dial + " " + currentRegion);
-  } else {
-  	ok(true, "Parses!\n");
-  }
-  return result;
-}
-
-function ParseWithIntl(dial, currentRegion) {
-  var result = PhoneNumber.Parse(dial, currentRegion);
-  if (!result) {
-  	ok(false, "got: " + dial + " " + currentRegion);
-  } else {
-    ok(result.internationalNumber, "Has International!");
-  	ok(true, "Parses!\n");
-  }
-  return result;
-}
-
-function Test(dial, currentRegion, nationalNumber, region) {
-  var result = Parse(dial, currentRegion);
-  if (result.region != region || result.nationalNumber != nationalNumber) {
-    ok(false, "expected: " + nationalNumber + " " + region + "got: " + result.nationalNumber + " " + result.region);
-  } else {
-  	ok(true, "Test ok!");
-  }
-  return result;
-}
-
-function Format(dial, currentRegion, nationalNumber, region, nationalFormat, internationalFormat) {
-  var result = Test(dial, currentRegion, nationalNumber, region);
-  if (result.nationalFormat != nationalFormat ||
-      result.internationalFormat != internationalFormat) {
-    ok(false, "expected: " + nationalFormat + " " + internationalFormat + 
-      "got: " + result.nationalFormat + " " + result.internationalFormat);
-  }
-}
-
-function TestProperties(dial, currentRegion) {
-  var result = PhoneNumber.Parse(dial, currentRegion);
-  if (result) {
-    ok(true, "found it");
-    ok(true, "InternationalFormat: " + result.internationalFormat);
-    ok(true, "InternationalNumber: " + result.internationalNumber);
-    ok(true, "NationalNumber: " + result.nationalNumber);
-    ok(true, "NationalFormat: " + result.nationalFormat);
-  } else {
-    ok(true, "not found");
-  }
-}
-
-function TestPropertiesWithExpectedCountry(dial, currentRegion, expectedRegion) {
-  var result = PhoneNumber.Parse(dial, currentRegion);
-  if (result) {
-    ok(true, "found it");
-    ok(true, "InternationalFormat: " + result.internationalFormat);
-    ok(true, "InternationalNumber: " + result.internationalNumber);
-    ok(true, "NationalNumber: " + result.nationalNumber);
-    ok(true, "NationalFormat: " + result.nationalFormat);
-    ok(true, "CountryName: " + result.countryName);
-    is(result.countryName, expectedRegion, "Same region");
-  } else {
-    ok(true, "not found");
-  }
-}
-
-function AllEqual(list, currentRegion) {
-  var first = PhoneNumber.Parse(list.shift(), currentRegion);
-  ok(!!first, "first parses");
-  for (var index in list) {
-    var other = PhoneNumber.Parse(list[index], currentRegion);
-    ok(!!other, "other parses");
-    ok(first.internationalNumber == other.internationalNumber, "first and other match");
-  }
-}
-
-TestProperties("+0988782456");
-TestProperties("+33442020", "ES");
-TestProperties("+43987614", "ES");
-TestProperties("+0988782456");
-TestProperties("+34556657");
-TestProperties("+66554433");
-TestProperties("+43442075");
-TestProperties("+13442074");
-
-TestPropertiesWithExpectedCountry("+4333822222", "DE", "AT");
-TestPropertiesWithExpectedCountry("+19491234567", "DE", "US");
-
-// Test whether could a string be a phone number.
-IsPlain(null, false);
-IsPlain("", false);
-IsPlain("1", true);
-IsPlain("*2", true); // Real number used in Venezuela
-IsPlain("*8", true); // Real number used in Venezuela
-IsPlain("12", true);
-IsPlain("123", true);
-IsPlain("1a2", false);
-IsPlain("12a", false);
-IsPlain("1234", true);
-IsPlain("123a", false);
-IsPlain("+", true);
-IsPlain("+1", true);
-IsPlain("+12", true);
-IsPlain("+123", true);
-IsPlain("()123", false);
-IsPlain("(1)23", false);
-IsPlain("(12)3", false);
-IsPlain("(123)", false);
-IsPlain("(123)4", false);
-IsPlain("123;ext=", false);
-IsPlain("123;ext=1", false);
-IsPlain("123;ext=1234567", false);
-IsPlain("123;ext=12345678", false);
-IsPlain("123 ext:1", false);
-IsPlain("123 ext:1#", false);
-IsPlain("123-1#", false);
-IsPlain("123 1#", false);
-IsPlain("123 12345#", false);
-IsPlain("123 +123456#", false);
-IsPlain("#123#", true);
-IsPlain("*#004#", true);
-IsPlain("*30#", true);
-IsPlain("*#06#", true);
-IsPlain("123456789012345678901234567890123456789012345678901", false); // more than 50 characters
-
-// test normalization
-Normalize(null, "");
-Normalize("", "");
-Normalize("1", "1");
-Normalize("*2", "*2"); // Real number used in Venezuela
-Normalize("*8", "*8"); // Real number used in Venezuela
-Normalize("12", "12");
-Normalize("123", "123");
-Normalize("1a2", "122");
-Normalize("12a", "122");
-Normalize("1234", "1234");
-Normalize("123a", "1232");
-Normalize("+", "+");
-Normalize("+1", "+1");
-Normalize("+12", "+12");
-Normalize("+123", "+123");
-Normalize("()123", "123");
-Normalize("(1)23", "123");
-Normalize("(12)3", "123");
-Normalize("(123)", "123");
-Normalize("(123)4", "1234");
-Normalize("123-1#", "1231#");
-Normalize("123 1#", "1231#");
-Normalize("123 12345#", "12312345#");
-Normalize("123 +123456#", "123+123456#");
-Normalize("#123#", "#123#");
-Normalize("*#004#", "*#004#");
-Normalize("*30#", "*30#");
-Normalize("*#06#", "*#06#");
-
-// Test parsing national numbers.
-Parse("033316005", "NZ");
-Parse("03-331 6005", "NZ");
-Parse("03 331 6005", "NZ");
-
-// Always test CA before US because CA has to load all meta-info for US.
-ParseWithIntl("4031234567", "CA");
-Parse("(416) 585-4319", "CA");
-Parse("647-967-4357", "CA");
-Parse("416-716-8768", "CA");
-Parse("18002684646", "CA");
-Parse("416-445-9119", "CA");
-Parse("1-800-668-6866", "CA");
-Parse("(416) 453-6486", "CA");
-Parse("(647) 268-4778", "CA");
-Parse("647-218-1313", "CA");
-Parse("+1 647-209-4642", "CA");
-Parse("416-559-0133", "CA");
-Parse("+1 647-639-4118", "CA");
-Parse("+12898803664", "CA");
-Parse("780-901-4687", "CA");
-Parse("+14167070550", "CA");
-Parse("+1-647-522-6487", "CA");
-Parse("(416) 877-0880", "CA");
-
-// Testing international prefixes.
-// Should strip country code.
-Parse("0064 3 331 6005", "NZ");
-// Try again, but this time we have an international number with region rode US. It should
-// recognize the country code and parse accordingly.
-Parse("01164 3 331 6005", "US");
-Parse("+64 3 331 6005", "US");
-Parse("64(0)64123456", "NZ");
-// Check that using a "/" is fine in a phone number.
-Parse("123/45678", "DE");
-Parse("123-456-7890", "US");
-
-// Test parsing international numbers.
-Parse("+1 (650) 333-6000", "NZ");
-Parse("1-650-333-6000", "US");
-// Calling the US number from Singapore by using different service providers
-// 1st test: calling using SingTel IDD service (IDD is 001)
-Parse("0011-650-333-6000", "SG");
-// 2nd test: calling using StarHub IDD service (IDD is 008)
-Parse("0081-650-333-6000", "SG");
-// 3rd test: calling using SingTel V019 service (IDD is 019)
-Parse("0191-650-333-6000", "SG");
-// Calling the US number from Poland
-Parse("0~01-650-333-6000", "PL");
-// Using "++" at the start.
-Parse("++1 (650) 333-6000", "PL");
-// Using a full-width plus sign.
-Parse("\uFF0B1 (650) 333-6000", "SG");
-// The whole number, including punctuation, is here represented in full-width form.
-Parse("\uFF0B\uFF11\u3000\uFF08\uFF16\uFF15\uFF10\uFF09" +
-      "\u3000\uFF13\uFF13\uFF13\uFF0D\uFF16\uFF10\uFF10\uFF10",
-      "SG");
-
-// Test parsing with leading zeros.
-Parse("+39 02-36618 300", "NZ");
-Parse("02-36618 300", "IT");
-Parse("312 345 678", "IT");
-
-// Test parsing numbers in Argentina.
-Parse("+54 9 343 555 1212", "AR");
-Parse("0343 15 555 1212", "AR");
-Parse("+54 9 3715 65 4320", "AR");
-Parse("03715 15 65 4320", "AR");
-Parse("+54 11 3797 0000", "AR");
-Parse("011 3797 0000", "AR");
-Parse("+54 3715 65 4321", "AR");
-Parse("03715 65 4321", "AR");
-Parse("+54 23 1234 0000", "AR");
-Parse("023 1234 0000", "AR");
-
-// Test numbers in Mexico
-Parse("+52 (449)978-0001", "MX");
-Parse("01 (449)978-0001", "MX");
-Parse("(449)978-0001", "MX");
-Parse("+52 1 33 1234-5678", "MX");
-Parse("044 (33) 1234-5678", "MX");
-Parse("045 33 1234-5678", "MX");
-
-// Test that lots of spaces are ok.
-Parse("0 3   3 3 1   6 0 0 5", "NZ");
-
-// Test omitting the current region. This is only valid when the number starts
-// with a '+'.
-Parse("+64 3 331 6005");
-Parse("+64 3 331 6005", null);
-
-// US numbers
-Format("19497261234", "US", "9497261234", "US", "(949) 726-1234", "+1 949-726-1234");
-
-// Try a couple german numbers from the US with various access codes.
-Format("49451491934", "US", "451491934", "DE", "0451 491934", "+49 451 491934");
-Format("+49451491934", "US", "451491934", "DE", "0451 491934", "+49 451 491934");
-Format("01149451491934", "US", "451491934", "DE", "0451 491934", "+49 451 491934");
-
-// Now try dialing the same number from within the German region.
-Format("451491934", "DE", "451491934", "DE", "0451 491934", "+49 451 491934");
-Format("0451491934", "DE", "451491934", "DE", "0451 491934", "+49 451 491934");
-
-// Numbers in italy keep the leading 0 in the city code when dialing internationally.
-Format("0577-555-555", "IT", "0577555555", "IT", "05 7755 5555", "+39 05 7755 5555");
-
-// Telefonica tests
-Format("612123123", "ES", "612123123", "ES", "612 12 31 23", "+34 612 12 31 23");
-
-// Chile mobile number from a landline
-Format("0997654321", "CL", "997654321", "CL", "(99) 765 4321", "+56 99 765 4321");
-
-// Chile mobile number from another mobile number
-Format("997654321", "CL", "997654321", "CL", "(99) 765 4321", "+56 99 765 4321");
-
-// Colombian international number without the leading "+"
-Format("5712234567", "CO", "12234567", "CO", "(1) 2234567", "+57 1 2234567");
-
-// Dialing 911 in the US. This is not a national number.
-CantParse("911", "US");
-
-// China mobile number with a 0 in it
-Format("15955042864", "CN", "15955042864", "CN", "0159 5504 2864", "+86 159 5504 2864");
-
-// Testing international region numbers.
-CantParse("883510000000091", "001");
-Format("+883510000000092", "001", "510000000092", "001", "510 000 000 092", "+883 510 000 000 092");
-Format("883510000000093", "FR", "510000000093", "001", "510 000 000 093", "+883 510 000 000 093");
-Format("+883510000000094", "FR", "510000000094", "001", "510 000 000 094", "+883 510 000 000 094");
-Format("883510000000095", "US", "510000000095", "001", "510 000 000 095", "+883 510 000 000 095");
-Format("+883510000000096", "US", "510000000096", "001", "510 000 000 096", "+883 510 000 000 096");
-CantParse("979510000012", "001");
-Format("+979510000012", "001", "510000012", "001", "5 1000 0012", "+979 5 1000 0012");
-
-// Test normalizing numbers. Only 0-9,#* are valid in a phone number.
-Normalize("+ABC # * , 9 _ 1 _0", "+222#*,910");
-Normalize("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "22233344455566677778889999");
-Normalize("abcdefghijklmnopqrstuvwxyz", "22233344455566677778889999");
-
-// 8 and 9 digit numbers with area code in Brazil with collect call prefix (90)
-AllEqual(["01187654321","0411187654321","551187654321","90411187654321","+551187654321"],"BR");
-AllEqual(["011987654321","04111987654321","5511987654321","904111987654321","+5511987654321"],"BR");
-
-</script>
-</window>
deleted file mode 100644
--- a/dom/phonenumberutils/tests/test_phonenumberservice.xul
+++ /dev/null
@@ -1,158 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Any copyright is dedicated to the Public Domain.
-   - http://creativecommons.org/publicdomain/zero/1.0/ -->
-
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        title="Mozilla Bug 781379">
-  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
-  <!-- test results are displayed in the html:body -->
-  <body xmlns="http://www.w3.org/1999/xhtml">
-  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=809213"
-     target="_blank">Mozilla Bug 809213</a>
-  </body>
-
-<script type="application/javascript;version=1.8">
-
-"use strict";
-
-Components.utils.import("resource://gre/modules/Services.jsm");
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-Services.prefs.setIntPref("dom.phonenumber.substringmatching.BR", 8);
-Services.prefs.setCharPref("ril.lastKnownSimMcc", "724");
-
-var pm = SpecialPowers.Cc["@mozilla.org/permissionmanager;1"]
-                      .getService(SpecialPowers.Ci.nsIPermissionManager);
-
-pm.addFromPrincipal(window.document.nodePrincipal, "phonenumberservice",
-                    SpecialPowers.Ci.nsIPermissionManager.ALLOW_ACTION);
-
-function onUnwantedSuccess() {
-  ok(false, "onUnwantedSuccess: shouldn't get here");
-}
-
-function onFailure() {
-  ok(false, "in on Failure!");
-}
-
-var req;
-var index = 0;
-var mozPhoneNumberService = window.navigator.mozPhoneNumberService;
-ok(mozPhoneNumberService, "mozPhoneNumberService exists");
-var steps = [
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("123", "123");
-    req.onsuccess = function(e) {
-      is(req.result, true, "same number");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("abcdef", "222333");
-    req.onsuccess = function(e) {
-      is(req.result, true, "normalize first number");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("abc333", "222def");
-    req.onsuccess = function(e) {
-      is(req.result, true, "normalize first and second number");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("1234567", "1234568");
-    req.onsuccess = function(e) {
-      is(req.result, false, "different numbers should not match");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("1234567", "123456");
-    req.onsuccess = function(e) {
-      is(req.result, false, "different length numbers should not match");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("1234567", "123456---");
-    req.onsuccess = function(e) {
-      is(req.result, false, "invalid number should not match valid number");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("111", undefined);
-    req.onsuccess = function(e) {
-      is(req.result, false, "missing second argument should not match");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch(undefined, "111");
-    req.onsuccess = function(e) {
-      is(req.result, false, "missing first argument should not match");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch(null, "");
-    req.onsuccess = function(e) {
-      is(req.result, true, "missing first argument should fuzzy match empty string");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("+552155555555", "2155555555");
-    req.onsuccess = function(e) {
-      is(req.result, true, "test internationalization of number");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function() {
-    req = mozPhoneNumberService.fuzzyMatch("aaa123456789", "zzzzz123456789");
-    req.onsuccess = function(e) {
-      is(req.result, true, "substring matching should be in effect");
-      next();
-    };
-    req.onerror = onFailure;
-  },
-  function () {
-    ok(true, "all done!\n");
-    SimpleTest.finish();
-  }
-];
-
-function next() {
-  ok(true, "Begin!");
-  if (index >= steps.length) {
-    ok(false, "Shouldn't get here!");
-    return;
-  }
-  try {
-    var i = index++;
-    steps[i]();
-  } catch(ex) {
-    ok(false, "Caught exception", ex);
-  }
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(next);
-</script>
-</window>
deleted file mode 100644
--- a/dom/phonenumberutils/tests/test_phonenumberutils.xul
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- Any copyright is dedicated to the Public Domain.
-   - http://creativecommons.org/publicdomain/zero/1.0/ -->
-
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
-
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-        title="Mozilla Bug 781379">
-  <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"/>
-  <script type="application/javascript" src="head.js"/>
-  <!-- test results are displayed in the html:body -->
-  <body xmlns="http://www.w3.org/1999/xhtml">
-  <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=809213"
-     target="_blank">Mozilla Bug 809213</a>
-  </body>
-
-<script type="application/javascript;version=1.8">
-
-"use strict";
-
-Components.utils.import("resource://gre/modules/Services.jsm");
-Components.utils.import("resource://gre/modules/PhoneNumberUtils.jsm");
-
-Services.prefs.setIntPref("dom.phonenumber.substringmatching.BR", 8);
-Services.prefs.setCharPref("ril.lastKnownSimMcc", "724");
-
-function CantParseWithMcc(dial, mcc) {
-  var result = PhoneNumberUtils.parseWithMCC(dial, mcc);
-  if (result) {
-    ok(false, "Shouldn't parse!\n");
-    dump("expected: does not parse");
-    dump("got: " + dial + " " + mcc);
-  } else {
-    ok(true, "Parses");
-  }
-}
-
-function ParseWithMcc(dial, mcc) {
-  var result = PhoneNumberUtils.parseWithMCC(dial, mcc);
-  if (result) {
-    ok(true, "Parses!\n");
-  } else {
-    ok(false, "Should Parse");
-    dump("expected: parses");
-  }
-}
-
-function ParseWithCountryName(dial, countryName) {
-  var result = PhoneNumberUtils.parseWithCountryName(dial, countryName);
-  if (result) {
-    ok(true, "Parses!\n");
-  } else {
-    ok(false, "Should Parse");
-    dump("expected: parses");
-  }
-}
-
-function CantParseWithCountryName(dial, countryName) {
-  var result = PhoneNumberUtils.parseWithCountryName(dial, countryName);
-  if (result) {
-    ok(false, "Should not Parse");
-    dump("expected: does not parse!\n");
-  } else {
-    ok(true, "Expected Parsing error!\n");
-  }
-}
-
-function FuzzyMatch(number1, number2, expect) {
-  var result = PhoneNumberUtils.fuzzyMatch(number1, number2);
-  is(result, expect, "FuzzyMatch OK!");
-}
-
-// Unknown mcc
-CantParseWithMcc("1234", 123);
-ParseWithMcc("4165555555", 302);
-
-ParseWithCountryName("4155123456", "US");
-CantParseWithCountryName("4155123456", "001");
-CantParseWithCountryName("4155123456", "XXY");
-ParseWithCountryName("4155123456", "US");
-
-
-is(PhoneNumberUtils.normalize("123abc", true), "123", "NumbersOnly");
-is(PhoneNumberUtils.normalize("123abc", false), "123222", "NumbersOnly");
-
-FuzzyMatch("123abc", "123222", true);
-FuzzyMatch("123456789", "123456789", true);
-FuzzyMatch("111", null, false);
-FuzzyMatch("+552155555555", "2155555555", true);
-FuzzyMatch("aaa123456789", "zzzzz123456789", true);
-</script>
-</window>
deleted file mode 100644
--- a/dom/phonenumberutils/tests/test_phonenumberutils_basics.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=674720
--->
-<head>
-  <title>Test for Bug 883923 PhoneNumberUtils FuzzyMatch</title>
-  <script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=883923">Mozilla Bug 883923</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script class="testbody" type="text/javascript">
-
-"use strict";
-
-var mozPhoneNumberService = window.navigator.mozPhoneNumberService;
-is(mozPhoneNumberService, undefined, "mozPhoneNumberService should not be accessible");
-</script>
-</pre>
-</body>
-</html>
deleted file mode 100644
--- a/dom/webidl/PhoneNumberService.webidl
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
-[JSImplementation="@mozilla.org/phoneNumberService;1",
- NavigatorProperty="mozPhoneNumberService",
- ChromeOnly]
-interface PhoneNumberService {
-  DOMRequest fuzzyMatch([TreatNullAs=EmptyString] optional DOMString number1 = "",
-                        [TreatNullAs=EmptyString] optional DOMString number2= "");
-
-  DOMString normalize(DOMString number);
-};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -358,17 +358,16 @@ WEBIDL_FILES = [
     'PerformanceObserver.webidl',
     'PerformanceObserverEntryList.webidl',
     'PerformanceResourceTiming.webidl',
     'PerformanceTiming.webidl',
     'PeriodicWave.webidl',
     'Permissions.webidl',
     'PermissionSettings.webidl',
     'PermissionStatus.webidl',
-    'PhoneNumberService.webidl',
     'Plugin.webidl',
     'PluginArray.webidl',
     'PointerEvent.webidl',
     'PopupBoxObject.webidl',
     'Position.webidl',
     'PositionError.webidl',
     'Presentation.webidl',
     'PresentationAvailability.webidl',