JS: libphonenumber v3.4. Patch contributed by tronikos.
authorlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Tue, 10 May 2011 08:37:27 +0000 (08:37 +0000)
committerlararennie@google.com <lararennie@google.com@ee073f10-1060-11df-b6a4-87a95322a99c>
Tue, 10 May 2011 08:37:27 +0000 (08:37 +0000)
git-svn-id: http://libphonenumber.googlecode.com/svn/trunk@194 ee073f10-1060-11df-b6a4-87a95322a99c

javascript/README
javascript/i18n/phonenumbers/asyoutypeformatter_test.js
javascript/i18n/phonenumbers/demo.html
javascript/i18n/phonenumbers/metadata.js
javascript/i18n/phonenumbers/metadatafortesting.js
javascript/i18n/phonenumbers/metadatalite.js
javascript/i18n/phonenumbers/phonenumberutil.js
javascript/i18n/phonenumbers/phonenumberutil_test.js

index 09d9e46..3513820 100644 (file)
@@ -25,7 +25,7 @@ pages with your web browser:
 
 How to update:
 ==============
-The JavaScript library is ported from the Java implementation (revision 171).
+The JavaScript library is ported from the Java implementation (revision 192).
 When the Java project gets updated follow these steps to update the JavaScript
 project:
 
index 407abaa..1fb2cf1 100644 (file)
@@ -565,6 +565,92 @@ function testAYTFKR() {
   assertEquals('011-9876-7890', f.inputDigit('0'));
 }
 
+function testAYTF_MX() {
+  /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
+  var f = new i18n.phonenumbers.AsYouTypeFormatter('MX');
+
+  // +52 800 123 4567
+  assertEquals('+', f.inputDigit('+'));
+  assertEquals('+5', f.inputDigit('5'));
+  assertEquals('+52 ', f.inputDigit('2'));
+  assertEquals('+52 8', f.inputDigit('8'));
+  assertEquals('+52 80', f.inputDigit('0'));
+  assertEquals('+52 800', f.inputDigit('0'));
+  assertEquals('+52 800 1', f.inputDigit('1'));
+  assertEquals('+52 800 12', f.inputDigit('2'));
+  assertEquals('+52 800 123', f.inputDigit('3'));
+  assertEquals('+52 800 123 4', f.inputDigit('4'));
+  assertEquals('+52 800 123 45', f.inputDigit('5'));
+  assertEquals('+52 800 123 456', f.inputDigit('6'));
+  assertEquals('+52 800 123 4567', f.inputDigit('7'));
+
+  // +52 55 1234 5678
+  f.clear();
+  assertEquals('+', f.inputDigit('+'));
+  assertEquals('+5', f.inputDigit('5'));
+  assertEquals('+52 ', f.inputDigit('2'));
+  assertEquals('+52 5', f.inputDigit('5'));
+  assertEquals('+52 55', f.inputDigit('5'));
+  assertEquals('+52 55 1', f.inputDigit('1'));
+  assertEquals('+52 55 12', f.inputDigit('2'));
+  assertEquals('+52 55 123', f.inputDigit('3'));
+  assertEquals('+52 55 1234', f.inputDigit('4'));
+  assertEquals('+52 55 1234 5', f.inputDigit('5'));
+  assertEquals('+52 55 1234 56', f.inputDigit('6'));
+  assertEquals('+52 55 1234 567', f.inputDigit('7'));
+  assertEquals('+52 55 1234 5678', f.inputDigit('8'));
+
+  // +52 212 345 6789
+  f.clear();
+  assertEquals('+', f.inputDigit('+'));
+  assertEquals('+5', f.inputDigit('5'));
+  assertEquals('+52 ', f.inputDigit('2'));
+  assertEquals('+52 2', f.inputDigit('2'));
+  assertEquals('+52 21', f.inputDigit('1'));
+  assertEquals('+52 212', f.inputDigit('2'));
+  assertEquals('+52 212 3', f.inputDigit('3'));
+  assertEquals('+52 212 34', f.inputDigit('4'));
+  assertEquals('+52 212 345', f.inputDigit('5'));
+  assertEquals('+52 212 345 6', f.inputDigit('6'));
+  assertEquals('+52 212 345 67', f.inputDigit('7'));
+  assertEquals('+52 212 345 678', f.inputDigit('8'));
+  assertEquals('+52 212 345 6789', f.inputDigit('9'));
+
+  // +52 1 55 1234 5678
+  f.clear();
+  assertEquals('+', f.inputDigit('+'));
+  assertEquals('+5', f.inputDigit('5'));
+  assertEquals('+52 ', f.inputDigit('2'));
+  assertEquals('+52 1', f.inputDigit('1'));
+  assertEquals('+52 15', f.inputDigit('5'));
+  assertEquals('+52 1 55', f.inputDigit('5'));
+  assertEquals('+52 1 55 1', f.inputDigit('1'));
+  assertEquals('+52 1 55 12', f.inputDigit('2'));
+  assertEquals('+52 1 55 123', f.inputDigit('3'));
+  assertEquals('+52 1 55 1234', f.inputDigit('4'));
+  assertEquals('+52 1 55 1234 5', f.inputDigit('5'));
+  assertEquals('+52 1 55 1234 56', f.inputDigit('6'));
+  assertEquals('+52 1 55 1234 567', f.inputDigit('7'));
+  assertEquals('+52 1 55 1234 5678', f.inputDigit('8'));
+
+  // +52 1 541 234 5678
+  f.clear();
+  assertEquals('+', f.inputDigit('+'));
+  assertEquals('+5', f.inputDigit('5'));
+  assertEquals('+52 ', f.inputDigit('2'));
+  assertEquals('+52 1', f.inputDigit('1'));
+  assertEquals('+52 15', f.inputDigit('5'));
+  assertEquals('+52 1 54', f.inputDigit('4'));
+  assertEquals('+52 1 541', f.inputDigit('1'));
+  assertEquals('+52 1 541 2', f.inputDigit('2'));
+  assertEquals('+52 1 541 23', f.inputDigit('3'));
+  assertEquals('+52 1 541 234', f.inputDigit('4'));
+  assertEquals('+52 1 541 234 5', f.inputDigit('5'));
+  assertEquals('+52 1 541 234 56', f.inputDigit('6'));
+  assertEquals('+52 1 541 234 567', f.inputDigit('7'));
+  assertEquals('+52 1 541 234 5678', f.inputDigit('8'));
+}
+
 function testAYTFMultipleLeadingDigitPatterns() {
   // +81 50 2345 6789
   /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
index e093707..7eca35b 100644 (file)
@@ -86,6 +86,12 @@ function phoneNumberParser() {
       case PNT.PERSONAL_NUMBER:
         output.append('PERSONAL_NUMBER');
         break;
+      case PNT.PAGER:
+        output.append('PAGER');
+        break;
+      case PNT.UAN:
+        output.append('UAN');
+        break;
       case PNT.UNKNOWN:
         output.append('UNKNOWN');
         break;
index c6e6406..2656993 100644 (file)
@@ -60,7 +60,7 @@ i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = {
 ,57:["CO"]
 ,58:["VE"]
 ,60:["MY"]
-,61:["AU"]
+,61:["AU","CC","CX"]
 ,62:["ID"]
 ,63:["PH"]
 ,64:["NZ"]
@@ -143,7 +143,7 @@ i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = {
 ,355:["AL"]
 ,356:["MT"]
 ,357:["CY"]
-,358:["FI"]
+,358:["FI","AX"]
 ,359:["BG"]
 ,370:["LT"]
 ,371:["LV"]
@@ -352,17 +352,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"AM":[,[,,"[1-36-9]\\d{7}","\\d{5,8}"]
+,"AM":[,[,,"[1-35-9]\\d{7}","\\d{5,8}"]
 ,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}",,,"10123456"]
-,[,,"(?:77|9[1-46-9])\\d{6}","\\d{8}",,,"77123456"]
+,[,,"(?:55|77|9[1-46-9])\\d{6}","\\d{8}",,,"77123456"]
 ,[,,"800\\d{5}","\\d{8}",,,"80012345"]
 ,[,,"90[016]\\d{5}","\\d{8}",,,"90012345"]
 ,[,,"80[1-4]\\d{5}","\\d{8}",,,"80112345"]
 ,[,,"NA","NA"]
 ,[,,"6027\\d{4}","\\d{8}",,,"60271234"]
-,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-9]"]
+,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["1"]
 ,"(0$1)",""]
-,[,"(\\d{2})(\\d{6})","$1 $2",["6"]
+,[,"(\\d{2})(\\d{6})","$1 $2",["[5-7]|9[1-9]"]
 ,"0$1",""]
 ,[,"(\\d{3})(\\d{5})","$1 $2",["[23]"]
 ,"(0$1)",""]
@@ -414,11 +414,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ,"AR",54,"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[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?","9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
 ,"0$1",""]
-,[,"9(11)(\\d{4})(\\d{4})","$1 15-$2-$3",["91"]
+,[,"(9)(11)(\\d{4})(\\d{4})","$2 15-$3-$4",["911"]
 ,"0$1",""]
-,[,"9(\\d{3})(\\d{3})(\\d{4})","$1 15-$2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
+,[,"(9)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
 ,"0$1",""]
-,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 15-$2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
+,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
 ,"0$1",""]
 ,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"]
 ,"0$1",""]
@@ -428,19 +428,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
-,,""]
-,[,"9(11)(\\d{4})(\\d{4})","9 $1 $2-$3",["91"]
-,,""]
-,[,"9(\\d{3})(\\d{3})(\\d{4})","9 $1 $2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
-,,""]
-,[,"9(\\d{4})(\\d{2})(\\d{4})","9 $1 $2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
-,,""]
+]
+,[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3-$4",["911"]
+]
+,[,"(9)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3-$4",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
+]
+,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
+]
 ,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"]
-,,""]
+]
 ,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -478,7 +478,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"AU":[,[,,"[1-578]\\d{5,9}","\\d{6,10}"]
-,[,,"[2378]\\d{8}","\\d{8,9}",,,"212345678"]
+,[,,"[237]\\d{8}|8(?:[68]\\d{3}|7[1-4]\\d{2}|9(?:[02-9]\\d{2}|1(?:[0-57-9]\\d|6[0135-9])))\\d{4}","\\d{8,9}",,,"212345678"]
 ,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}",,,"412345678"]
 ,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}",,,"1800123456"]
 ,[,,"190[0126]\\d{6}","\\d{10}",,,"1900123456"]
@@ -499,23 +499,35 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"$1",""]
 ]
 ,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
+,1,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"AW":[,[,,"[5-9]\\d{6}","\\d{7}"]
-,[,,"5(?:2\\d{2}|8(?:[2-7]\\d|8[0-79]|9[48]))\\d{3}","\\d{7}",,,"5212345"]
-,[,,"(?:5[69]\\d|660|9(?:6\\d|9[02-9])|7[34]\\d)\\d{4}","\\d{7}",,,"5601234"]
+,"AW":[,[,,"[25-9]\\d{6}","\\d{7}"]
+,[,,"5(?:2\\d|8[1-9])\\d{4}","\\d{7}",,,"5212345"]
+,[,,"(?:5(?:6\\d|9[2-478])|6(?:[039]0|22|[46][01])|7[34]\\d|9(?:6[45]|9[4-8]))\\d{4}","\\d{7}",,,"5601234"]
 ,[,,"800\\d{4}","\\d{7}",,,"8001234"]
 ,[,,"900\\d{4}","\\d{7}",,,"9001234"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
-,"AW",297,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{4})","$1 $2",,"",""]
+,[,,"28\\d{5}|501\\d{4}","\\d{7}",,,"5011234"]
+,"AW",297,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"AX":[,[,,"[135]\\d{5,9}|[27]\\d{4,9}|4\\d{5,10}|6\\d{7,8}|8\\d{6,9}","\\d{5,12}"]
+,[,,"18[1-8]\\d{3,9}","\\d{6,12}",,,"1812345678"]
+,[,,"4\\d{5,10}|50\\d{4,8}","\\d{6,11}",,,"412345678"]
+,[,,"800\\d{4,7}","\\d{7,10}",,,"8001234567"]
+,[,,"[67]00\\d{5,6}","\\d{8,9}",,,"600123456"]
+,[,,"NA","NA"]
+,[,,"NA","NA"]
+,[,,"NA","NA"]
+,"AX",358,"00|99[049]","0",,,"0",,,,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,10}",,,"10112345"]
+]
 ,"AZ":[,[,,"[1-9]\\d{7,8}","\\d{5,9}"]
 ,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[02346-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d|44\\d{2})\\d{5}","\\d{5,9}",,,"123123456"]
 ,[,,"(?:[46]0|5[015]|7[07])\\d{7}","\\d{9}",,,"401234567"]
@@ -858,6 +870,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"CC":[,[,,"[1458]\\d{5,9}","\\d{6,10}"]
+,[,,"89162\\d{4}","\\d{8,9}",,,"891621234"]
+,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}",,,"412345678"]
+,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}",,,"1800123456"]
+,[,,"190[0126]\\d{6}","\\d{10}",,,"1900123456"]
+,[,,"NA","NA"]
+,[,,"500\\d{6}","\\d{9}",,,"500123456"]
+,[,,"550\\d{6}","\\d{9}",,,"550123456"]
+,"CC",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"NA","NA"]
+]
 ,"CD":[,[,,"[89]\\d{8}|[1-6]\\d{6}","\\d{7,9}"]
 ,[,,"[1-6]\\d{6}","\\d{7}",,,"1234567"]
 ,[,,"(?:8[0-2489]|9[7-9])\\d{7}","\\d{9}",,,"991234567"]
@@ -997,7 +1021,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"CN":[,[,,"[1-79]\\d{7,11}|8[0-357-9]\\d{6,9}","\\d{4,12}"]
 ,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[159])|4[135]1|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5\\d|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))\\d{7}|80(?:29|6[03578]|7[018]|81)\\d{4}","\\d{4,12}",,,"1012345678"]
-,[,,"1(?:3[0-9]|47|5[0135689]|8[05-9])\\d{8}","\\d{11}",,,"13123456789"]
+,[,,"1(?:3\\d|4[57]|5[0-35-9]|8[025-9])\\d{8}","\\d{11}",,,"13123456789"]
 ,[,,"(?:10)?800\\d{7}","\\d{10,12}",,,"8001234567"]
 ,[,,"16[08]\\d{5}","\\d{8}",,,"16812345"]
 ,[,,"NA","NA"]
@@ -1022,22 +1046,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]
 ,"",""]
 ]
-,[[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"]
-,,""]
+,[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"]
+]
+,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"]
+]
+,[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"]
+]
 ,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"]
-,,""]
-,[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"]
-,,""]
+]
 ,[,"(\\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[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|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]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"]
-,,""]
+]
 ,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"]
-,,""]
-,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"]
-,,""]
+]
 ,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1059,11 +1083,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{7})","$1 $2",["3"]
-,,""]
+]
 ,[,"(1)(\\d{3})(\\d{7})","$1 $2 $3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1071,7 +1095,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"]
 ,[,,"2[24-7]\\d{6}","\\d{8}",,,"22123456"]
-,[,,"8(?:[389]\\d|7[0-3])\\d{5}","\\d{8}",,,"83123456"]
+,[,,"8[36789]\\d{6}","\\d{8}",,,"83123456"]
 ,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
 ,[,,"90[059]\\d{7}","\\d{10}",,,"9001234567"]
 ,[,,"NA","NA"]
@@ -1133,6 +1157,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"CX":[,[,,"[1458]\\d{5,9}","\\d{6,10}"]
+,[,,"89164\\d{4}","\\d{8,9}",,,"891641234"]
+,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}",,,"412345678"]
+,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}",,,"1800123456"]
+,[,,"190[0126]\\d{6}","\\d{10}",,,"1900123456"]
+,[,,"NA","NA"]
+,[,,"500\\d{6}","\\d{9}",,,"500123456"]
+,[,,"550\\d{6}","\\d{9}",,,"550123456"]
+,"CX",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"NA","NA"]
+]
 ,"CZ":[,[,,"[2-9]\\d{8}","\\d{9}"]
 ,[,,"2\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\d{7}","\\d{9}",,,"212345678"]
 ,[,,"60[1-8]\\d{6}|7[2379]\\d{7}","\\d{9}",,,"601123456"]
@@ -1204,7 +1240,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"DM":[,[,,"[57-9]\\d{9}","\\d{7}(?:\\d{3})?"]
 ,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7}(?:\\d{3})?",,,"7674201234"]
-,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-6])\\d{4}","\\d{10}",,,"7672251234"]
+,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-7])\\d{4}","\\d{10}",,,"7672251234"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002123456"]
 ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002123456"]
 ,[,,"NA","NA"]
@@ -1261,11 +1297,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"$1",""]
 ]
 ,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-7]"]
-,,""]
+]
 ,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
-,,""]
+]
 ,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1341,7 +1377,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"ET":[,[,,"[1-59]\\d{8}","\\d{7,9}"]
 ,[,,"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-23]|6[5-8])|5(?:1[57]|44|5[0-4])|6(?:18|2[69]|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}","\\d{7,9}",,,"111112345"]
-,[,,"91[0-8]\\d{6}","\\d{9}",,,"911234567"]
+,[,,"9[12]\\d{7}","\\d{9}",,,"911234567"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1354,7 +1390,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"FI":[,[,,"1\\d{4,11}|[2-9]\\d{4,10}","\\d{5,12}"]
-,[,,"1(?:[35689][1-8]\\d{3,9}|[47]\\d{5,10})|2[1-8]\\d{3,9}|3(?:[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}|","\\d{5,12}",,,"1312345678"]
+,[,,"1(?:[3569][1-8]\\d{3,9}|[47]\\d{5,10})|2[1-8]\\d{3,9}|3(?:[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}","\\d{5,12}",,,"1312345678"]
 ,[,,"4\\d{5,10}|50\\d{4,8}","\\d{6,11}",,,"412345678"]
 ,[,,"800\\d{4,7}","\\d{7,10}",,,"8001234567"]
 ,[,,"[67]00\\d{5,6}","\\d{8,9}",,,"600123456"]
@@ -1369,12 +1405,12 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
-,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{6,10}",,,"10112345"]
+,1,,[,,"NA","NA"]
+,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,10}",,,"10112345"]
 ]
 ,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
 ,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}",,,"3212345"]
-,[,,"(?:7[0-4]|9[29])\\d{5}","\\d{7}",,,"7012345"]
+,[,,"(?:7[0-4]|9[27-9])\\d{5}","\\d{7}",,,"7012345"]
 ,[,,"0800\\d{7}","\\d{11}",,,"08001234567"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1551,7 +1587,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"GH":[,[,,"[235]\\d{6,8}","\\d{7,9}"]
 ,[,,"3(?:0[237]\\d|[167](?:2[0-6]|7\\d)|2(?:2[0-5]|7\\d)|3(?:2[0-37]|7\\d)|4(?:[27]\\d|30)|5(?:2[0-7]|7\\d)|8(?:2[0-2]|7\\d)|9(?:20|7\\d))\\d{5}","\\d{7,9}",,,"302345678"]
-,[,,"2(?:(?:[47]\\d|08)\\d{6}|[368]\\d{7})|54\\d{7}","\\d{9}",,,"231234567"]
+,[,,"(?:2[034678]|54)\\d{7}","\\d{9}",,,"231234567"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1915,30 +1951,20 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"3(?:08162\\d|3\\d{5}|4(?:40[49]06|5624\\d)|7(?:0624\\d|2299\\d))\\d{3}|55\\d{8}","\\d{10}",,,"5512345678"]
 ]
 ,"IN":[,[,,"1\\d{7,11}|[2-9]\\d{9,10}","\\d{6,12}"]
-,[,,"(?:11|2[02]|33|4[04]|79|80)[2-6]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-6]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24-58]|7[23-689]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-6]\\d{5}","\\d{6,10}",,,"1123456789"]
-,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[568]|9[39])|3(?:07|7[3679]|9[689])|4(?:05|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5]|[47]9|50|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[67]|9[6-9])|7(?:0[289]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7[015689]|9[0357-9]))\\d|9\\d{4}|8(?:(?:0[01589]|1[24]|2[2369]|4[023458]|52|6[0589]|7[2569])\\d|8(?:[079]\\d|44)|9[057-9]\\d)\\d)\\d{5}","\\d{10}",,,"9123456789"]
+,[,,"(?:11|2[02]|33|4[04]|79)[2-6]\\d{7}|80[2-46]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-6]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24-58]|7[23-689]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-6]\\d{5}","\\d{6,10}",,,"1123456789"]
+,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0[01589]\\d|1(?:[024]\\d|15|30|7[19]|97)|2(?:[2369]\\d|52|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|[19]1|2\\d|30|4[47]|53|7[45])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[038]|6[0-27-9]))|9\\d{3})\\d{6}","\\d{10}",,,"9123456789"]
 ,[,,"1(?:600\\d{6}|800\\d{4,8})","\\d{8,12}",,,"1800123456"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|39|4[0-389]|5[04-9]|6|7[02-9]|8[0-79])|8(?:0[01589]|1[024]|8[0479]|9[057-9])|9","7(?:2[0579]|39|4[0-389]|5(?:0[0-5]|49|50|[6-9])|6|7[02-9]|8[0-79])|8(?:0[01589]|1[024]|8(?:[079]|44)|9[057-9])|9"]
+,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|15|30|7[19]|97)|2(?:[2369]|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|[19]1|2|30|4[47]|53|7[45])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[038]|6[0-27-9]))|9"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-6]"]
+,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-46]"]
 ,"0$1",""]
-,[,"(\\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])"]
+,[,"(\\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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)"]
 ,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["6(?:12|[2345]1|57|6[13]|7[14]|80)"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[1-9])|[67]1|88)"]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[2-6])|[67]1|88)"]
 ,"0$1",""]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)"]
 ,"0$1",""]
@@ -2098,15 +2124,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"JP":[,[,,"\\d{9,10}","\\d{9,10}"]
 ,[,,"(?:1(?:1[236-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-8])|2[2-9]\\d|[36][1-9]\\d|4(?:6[0235-8]|[2-578]\\d|9[2-59])|5(?:6[1-9]|7[2-8]|[2-589]\\d)|7(?:3[4-9]|4[02-9]|[25-9]\\d)|8(?:3[2-9]|4[5-9]|5[1-9]|8[03-9]|[2679]\\d)|9(?:[679][1-9]|[2-58]\\d))\\d{6}","\\d{9}",,,"312345678"]
-,[,,"[7-9]0\\d{8}","\\d{10}",,,"7012345678"]
-,[,,"120\\d{6}","\\d{9}",,,"120123456"]
+,[,,"(?:[79]0\\d|80[1-9])\\d{7}","\\d{10}",,,"7012345678"]
+,[,,"120\\d{6}|800\\d{7}","\\d{9,10}",,,"120123456"]
 ,[,,"990\\d{6}","\\d{9}",,,"990123456"]
 ,[,,"NA","NA"]
 ,[,,"60\\d{7}","\\d{9}",,,"601234567"]
 ,[,,"50\\d{8}","\\d{10}",,,"5012345678"]
-,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|99)0"]
+,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"]
+,"0$1",""]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57-9]0"]
+,[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[2579]0|80[1-9]"]
 ,"0$1",""]
 ,[,"(\\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])","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"]
 ,"0$1",""]
@@ -2118,16 +2146,16 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["3|4(?:2[09]|7[01])|6[1-9]"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479]"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479][1-9]"]
 ,"0$1",""]
 ]
-,,[,,"NA","NA"]
+,,[,,"20\\d{8}","\\d{10}",,,"2012345678"]
 ,,,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"570\\d{6}","\\d{9}",,,"570123456"]
 ]
 ,"KE":[,[,,"\\d{6,10}","\\d{4,10}"]
 ,[,,"(?:20|4[0-6]|5\\d|6[0-24-9])\\d{4,7}","\\d{4,9}",,,"202012345"]
-,[,,"7(?:1[0-6]|2\\d|3[2-8]|5[0-2]|7[023])\\d{6}","\\d{9}",,,"712123456"]
+,[,,"7(?:0[0-3]|[123]\\d|5[0-3]|7[0-4])\\d{6}","\\d{9}",,,"712123456"]
 ,[,,"8(?:00|88)\\d{6,7}","\\d{9,10}",,,"800123456"]
 ,[,,"9(?:00|1)\\d{6,7}","\\d{8,10}",,,"900123456"]
 ,[,,"NA","NA"]
@@ -2190,11 +2218,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"KM":[,[,,"[37]\\d{6}","\\d{7}"]
+,"KM":[,[,,"[379]\\d{6}","\\d{7}"]
 ,[,,"7(?:6[0-37-9]|7[0-57-9])\\d{4}","\\d{7}",,,"7712345"]
 ,[,,"3[23]\\d{5}","\\d{7}",,,"3212345"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"(?:39[01]|9[01]0)\\d{4}","\\d{7}",,,"9001234"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -2205,8 +2233,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"KN":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
-,[,,"869(?:2(?:29|36)|4(?:6[5-9]|70))\\d{4}","\\d{7}(?:\\d{3})?",,,"8692361234"]
-,[,,"869(?:5(?:5[6-8]|6[5-7])|66[2-9]|76[2-5])\\d{4}","\\d{10}",,,"8695561234"]
+,[,,"869(?:2(?:29|36)|302|4(?:6[5-9]|70))\\d{4}","\\d{7}(?:\\d{3})?",,,"8692361234"]
+,[,,"869(?:5(?:5[6-8]|6[5-7])|66\\d|76[02-6])\\d{4}","\\d{10}",,,"8695561234"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002123456"]
 ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002123456"]
 ,[,,"NA","NA"]
@@ -2388,18 +2416,20 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"LR":[,[,,"(?:[279]\\d|[4-6])\\d{6}","\\d{7,8}"]
+,"LR":[,[,,"(?:[279]\\d|[4-6]|[38]\\d{2})\\d{6}","\\d{7,9}"]
 ,[,,"2\\d{7}","\\d{8}",,,"21234567"]
-,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2})\\d{5}","\\d{7,8}",,,"4612345"]
+,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2}|880\\d)\\d{5}","\\d{7,9}",,,"4612345"]
 ,[,,"NA","NA"]
 ,[,,"90\\d{6}","\\d{8}",,,"90123456"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"33200\\d{4}","\\d{9}",,,"332001234"]
 ,"LR",231,"00","0",,,"0",,,,[[,"([279]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[279]"]
 ,"0$1",""]
 ,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"]
 ,"0$1",""]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[38]"]
+,"0$1",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -2539,22 +2569,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"MD":[,[,,"[256-9]\\d{7}","\\d{8}"]
 ,[,,"(?:2(?:1[0569]|2\\d|3[015-7]|4[1-46-9]|5[0-24689]|6[2-589]|7[1-37]|9[1347-9])|5(?:33|5[257]))\\d{5}","\\d{5,8}",,,"22212345"]
-,[,,"(?:6(?:50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}",,,"65012345"]
+,[,,"(?:6(?:0[0-3]|50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}",,,"65012345"]
 ,[,,"800\\d{5}","\\d{8}",,,"80012345"]
-,[,,"900\\d{5}","\\d{8}",,,"90012345"]
-,[,,"NA","NA"]
+,[,,"90[056]\\d{5}","\\d{8}",,,"90012345"]
+,[,,"808\\d{5}","\\d{8}",,,"80812345"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,"MD",373,"00","0",,,"0",,,,[[,"(22)(\\d{3})(\\d{3})","$1 $2 $3",["22"]
 ,"0$1",""]
 ,[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["2[13-79]|[5-7]"]
 ,"0$1",""]
-,[,"([89]00)(\\d{5})","$1 $2",["[89]"]
+,[,"([89]\\d{2})(\\d{5})","$1 $2",["[89]"]
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"8(?:03|14)\\d{5}","\\d{8}",,,"80312345"]
 ]
 ,"ME":[,[,,"[2-9]\\d{7,8}","\\d{6,9}"]
 ,[,,"(?:20[2-8]|3(?:0[2-7]|1[35-7]|2[367]|3[4-7])|4(?:0[237]|1[2467])|5(?:0[47]|1[27]|2[378]))\\d{5}","\\d{6,8}",,,"30234567"]
@@ -2718,15 +2748,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,"670",[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"MQ":[,[]
-,[]
-,[]
+,"MQ":[,[,,"[56]\\d{8}","\\d{9}"]
+,[,,"596(?:3[0789]|4[28]|[5-7]\\d|9[67])\\d{4}","\\d{9}",,,"596301234"]
+,[,,"696(?:[2-49]\\d|7[0-4]|8[0-6])\\d{4}","\\d{9}",,,"696201234"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"MQ",596,"00","0",,,"0",,,1,,,[,,"NA","NA"]
+,"MQ",596,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""]
+]
+,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
@@ -2834,19 +2866,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"01 $1",""]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"]
 ,"01 $1",""]
-,[,"1([358]\\d)(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"]
+,[,"(1)([358]\\d)(\\d{4})(\\d{4})","045 $2 $3 $4",["1(?:33|55|81)"]
 ,"$1",""]
-,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
+,[,"(1)(\\d{3})(\\d{3})(\\d{4})","045 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
 ,"$1",""]
 ]
 ,[[,"([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})","$1 $2 $3 $4",["1(?:33|55|81)"]
-,,""]
+]
 ,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3036,19 +3068,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1,,[,,"NA","NA"]
 ,[,,"0\\d{4}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}","\\d{5}(?:\\d{3})?",,,"01234"]
 ,1]
-,"NP":[,[,,"[1-8]\\d{5,7}|98[45]\\d{7}","\\d{6,10}"]
-,[,,"(?:1[014-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-4679]|9[1-79])\\d{6}","\\d{6,8}",,,"14567890"]
-,[,,"98[45]\\d{7}","\\d{10}",,,"9841234567"]
+,"NP":[,[,,"[1-8]\\d{7}|9(?:[1-69]\\d{6}|7[2-6]\\d{5,7}|8\\d{8})","\\d{6,10}"]
+,[,,"(?:1[0124-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-79])\\d{6}","\\d{6,8}",,,"14567890"]
+,[,,"9(?:7[45]|8[0145])\\d{7}","\\d{10}",,,"9841234567"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"NP",977,"00","0",,,"0",,,,[[,"(1)([4-6]\\d{3})(\\d{3})","$1 $2 $3",["1[4-6]"]
+,"NP",977,"00","0",,,"0",,,,[[,"(1)(\\d{7})","$1-$2",["1[2-6]"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[01]|[2-8]|9[1-79]"]
+,[,"(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-69]|7[15-9])"]
 ,"0$1",""]
-,[,"(98[45])(\\d{3})(\\d{4})","$1 $2 $3",["98"]
+,[,"(9\\d{2})(\\d{7})","$1-$2",["9(?:7[45]|8)"]
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
@@ -3185,7 +3217,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"PH":[,[,,"[2-9]\\d{7,9}|1800\\d{7,9}","\\d{7,13}"]
 ,[,,"(?:2|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\d{7}","\\d{7,9}",,,"21234567"]
-,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|7[349]|[89]9)\\d{7}","\\d{10}",,,"9051234567"]
+,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|4[89]|7[349]|89|9[49])\\d{7}","\\d{10}",,,"9051234567"]
 ,[,,"1800\\d{7,9}","\\d{11,13}",,,"180012345678"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -3476,16 +3508,16 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"SC":[,[,,"[2-8]\\d{5,6}","\\d{6,7}"]
-,[,,"(?:2(?:1[78]|2[14-69]|3[2-4]|4[1-36-8]|6[167]|[89]\\d)|3(?:2[1-6]|4[4-6]|55|6[016]|7\\d|8[0-589]|9[0-5])|5(?:5\\d|6[0-2])|6(?:0[0-27-9]|1[0-478]|2[145]|3[02-4]|4[124]|6[015]|7\\d|8[1-3])|78[0138])\\d{3}","\\d{6}",,,"217123"]
-,[,,"(?:5(?:[1247-9]\\d|6[3-9])|7(?:[14679]\\d|2[1-9]|8[24-79]))\\d{3}","\\d{6}",,,"510123"]
+,[,,"(?:2?(?:55[0-5]|78[013])|4?(?:2(?:1[78]|2[14-69]|3[2-4]|4[1-36-8]|6[167]|[89]\\d)|3(?:0[34]|2[1-6]|4[4-6]|55|6[016]|7\\d|8[0-589]|9[0-5])|6(?:0[0-256]|1[0-478]|2[145]|3[02-4]|4[124]|6[015]|7\\d|8[1-3])))\\d{3}","\\d{6,7}",,,"4217123"]
+,[,,"2?(?:5(?:[0-46-9]\\d|5[6-9])|7(?:[0-79]\\d|8[24-9]))\\d{3}","\\d{6,7}",,,"2510123"]
 ,[,,"8000\\d{2}","\\d{6}",,,"800000"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"(?:44[1-3]|647)\\d{4}","\\d{7}",,,"4410123"]
-,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[23578]|[46][0-35-9]"]
+,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[3578]|2[1-4689]|6(?:[0-35-9]|4[0-689])"]
 ,"",""]
-,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[46]4"]
+,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2[57]|4[2-46]|647"]
 ,"",""]
 ]
 ,,[,,"NA","NA"]
@@ -3507,7 +3539,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"SE":[,[,,"\\d{7,10}","\\d{5,10}"]
-,[,,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0-38]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[01-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|1[1-5]|2[0-68]|3[0-4]|4\\d|5[0-5]|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0\\d{5,7}|(?:1[0-68]|2\\d|3[02-59]|4[0-4]|5[0-4]|6[01]|7[0135-8]|8[01])\\d{5,6})","\\d{5,9}",,,"8123456"]
+,[,,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0-38]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[01-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|1[0-5]|2[0-68]|3[0-4]|4\\d|5[0-5]|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0\\d{5,7}|(?:1[0-68]|2\\d|3[02-59]|4[0-4]|5[0-4]|6[01]|7[0135-8]|8[01])\\d{5,6})","\\d{5,9}",,,"8123456"]
 ,[,,"7[02-46]\\d{7}","\\d{9}",,,"701234567"]
 ,[,,"20\\d{4,7}","\\d{6,9}",,,"201234567"]
 ,[,,"9(?:00|39|44)\\d{7}","\\d{10}",,,"9001234567"]
@@ -3532,21 +3564,21 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4",["8"]
-,,""]
+]
 ,[,"([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-69]\\d)(\\d{3})(\\d{2})","$1 $2 $3",["1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90"]
-,,""]
+]
 ,[,"(\\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])"]
-,,""]
+]
 ,[,"(\\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])"]
-,,""]
+]
 ,[,"(7[02-467])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7[02-467]"]
-,,""]
+]
 ,[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3",["20"]
-,,""]
+]
 ,[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["9[034]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3667,11 +3699,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"",""]
 ]
 ,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]
-,,""]
+]
 ,[,"(0549)(\\d{6})","($1) $2",["0"]
-,,""]
+]
 ,[,"(\\d{6})","(0549) $1",["[89]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3679,7 +3711,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1]
 ,"SN":[,[,,"[37]\\d{8}","\\d{9}"]
 ,[,,"3(?:010|3(?:8[1-9]|9[2-9]))\\d{5}","\\d{9}",,,"301012345"]
-,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[6-9]|7[45]|8[3-8])|7(?:1[014-8]|2[0-7]|3[0-35-8]|4[0-6]|[56]\\d|7[0-589]|8[01]|9[0-6]))\\d{5}","\\d{9}",,,"701012345"]
+,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[5-9]|7[45]|8[3-8])|7(?:01|1[014-8]|[2-79]\\d|8[019]))\\d{5}","\\d{9}",,,"701012345"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -3755,7 +3787,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"SY":[,[,,"[1-59]\\d{7,8}","\\d{6,9}"]
 ,[,,"(?:1(?:1\\d?|4\\d|[2356])|2[1-35]|3(?:1\\d|[34])|4[13]|5[1-3])\\d{6}","\\d{6,9}",,,"112345678"]
-,[,,"9(?:3[23]|4[457]|55|6[67]|88|9[19])\\d{6}","\\d{9}",,,"944567890"]
+,[,,"9(?:3[23]|4[457]|55|6[67]|88|9[1-49])\\d{6}","\\d{9}",,,"944567890"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -4045,7 +4077,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"UG":[,[,,"\\d{9}","\\d{5,9}"]
 ,[,,"3\\d{8}|4(?:[1-6]\\d|7[136]|8[1356]|96)\\d{6}|20(?:0\\d|24)\\d{5}","\\d{5,9}",,,"312345678"]
-,[,,"7(?:[1578]\\d|0[0-4])\\d{6}","\\d{9}",,,"712345678"]
+,[,,"7(?:[15789]\\d|0[0-4])\\d{6}","\\d{9}",,,"712345678"]
 ,[,,"800[123]\\d{5}","\\d{9}",,,"800123456"]
 ,[,,"90[123]\\d{6}","\\d{9}",,,"901123456"]
 ,[,,"NA","NA"]
@@ -4073,7 +4105,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"US",1,"011","1",,,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,"",""]
 ,[,"(\\d{3})(\\d{4})","$1-$2",,"",""]
 ]
-,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",,,""]
+,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3"]
 ]
 ,[,,"NA","NA"]
 ,1,,[,,"NA","NA"]
@@ -4121,7 +4153,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1]
 ,"VC":[,[,,"[5789]\\d{9}","\\d{7}(?:\\d{3})?"]
 ,[,,"784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8\\d|9[01])|555|638|784)\\d{4}","\\d{7}(?:\\d{3})?",,,"7842661234"]
-,[,,"784(?:4(?:3[0-24]|5[45]|9[2-5])|5(?:2[6-9]|3[0-3]|93))\\d{4}","\\d{10}",,,"7844301234"]
+,[,,"784(?:4(?:3[0-4]|5[45]|9[2-5])|5(?:2[6-9]|3[0-4]|93))\\d{4}","\\d{10}",,,"7844301234"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002345678"]
 ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002345678"]
 ,[,,"NA","NA"]
@@ -4158,8 +4190,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"VI":[,[,,"[3589]\\d{9}","\\d{7}(?:\\d{3})?"]
-,[,,"340(?:6[49]2|7[17]\\d)\\d{4}","\\d{7}(?:\\d{3})?",,,"3406421234"]
-,[,,"340(?:6[49]2|7[17]\\d)\\d{4}","\\d{7}(?:\\d{3})?",,,"3406421234"]
+,[,,"340(?:2(?:01|2[07]|36|44|77)|3(?:32|44)|4(?:4[38]|7[34])|5(?:1[34]|55)|6(?:26|4[23]|9[023])|7(?:[17]\\d|27)|884|998)\\d{4}","\\d{7}(?:\\d{3})?",,,"3406421234"]
+,[,,"340(?:2(?:01|2[07]|36|44|77)|3(?:32|44)|4(?:4[38]|7[34])|5(?:1[34]|55)|6(?:26|4[23]|9[023])|7(?:[17]\\d|27)|884|998)\\d{4}","\\d{7}(?:\\d{3})?",,,"3406421234"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002345678"]
 ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002345678"]
 ,[,,"NA","NA"]
@@ -4287,7 +4319,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"ZM":[,[,,"[289]\\d{8}","\\d{9}"]
 ,[,,"21[1-8]\\d{6}","\\d{9}",,,"211234567"]
-,[,,"9(?:55|6[4-9]|7[4-9])\\d{6}","\\d{9}",,,"955123456"]
+,[,,"9(?:55|6[3-9]|7[4-9])\\d{6}","\\d{9}",,,"955123456"]
 ,[,,"800\\d{6}","\\d{9}",,,"800123456"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
index cd4c0aa..d17b418 100644 (file)
@@ -91,23 +91,23 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["1[02-9]|[23]"]
 ,"0$1",""]
-,[,"9(11)(\\d{4})(\\d{4})","$1 15 $2-$3",["911"]
+,[,"(9)(11)(\\d{4})(\\d{4})","$2 15 $3-$4",["911"]
 ,"0$1",""]
-,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["9(?:1[02-9]|[23])"]
+,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$2 $3-$4",["9(?:1[02-9]|[23])"]
 ,"0$1","0$1 $CC"]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
 ,"0$1",""]
 ]
 ,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["11"]
-,,""]
+]
 ,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["1[02-9]|[23]"]
-,,""]
+]
 ,[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3 $4",["911"]
-,,""]
+]
 ,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3 $4",["9(?:1[02-9]|[23])"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -278,26 +278,26 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,"MX",52,"00","01",,,"01|04[45](\\d{10})","1$1",,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"]
-,"",""]
+,"01 $1",""]
 ,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"]
-,"",""]
+,"01 $1",""]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]"]
-,"",""]
-,[,"1(\\d{2})(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"]
-,"",""]
-,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])"]
-,"",""]
+,"01 $1",""]
+,[,"(1)(\\d{2})(\\d{4})(\\d{4})","045 $2 $3 $4",["1(?:33|55|81)"]
+,"$1",""]
+,[,"(1)(\\d{3})(\\d{3})(\\d{4})","045 $2 $3 $4",["1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])"]
+,"$1",""]
 ]
 ,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"]
-,,""]
+]
 ,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]"]
-,,""]
+]
 ,[,"(1)(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3 $4",["1(?:33|55|81)"]
-,,""]
+]
 ,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -380,7 +380,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"US",1,"011","1"," extn. ",,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,"",""]
 ,[,"(\\d{3})(\\d{4})","$1 $2",,"",""]
 ]
-,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,,""]
+,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3"]
 ]
 ,[,,"NA","NA"]
 ,1,,[,,"800\\d{7}","\\d{10}",,,"1234567890"]
index 8237589..4c81c1a 100644 (file)
@@ -60,7 +60,7 @@ i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = {
 ,57:["CO"]
 ,58:["VE"]
 ,60:["MY"]
-,61:["AU"]
+,61:["AU","CC","CX"]
 ,62:["ID"]
 ,63:["PH"]
 ,64:["NZ"]
@@ -143,7 +143,7 @@ i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = {
 ,355:["AL"]
 ,356:["MT"]
 ,357:["CY"]
-,358:["FI"]
+,358:["FI","AX"]
 ,359:["BG"]
 ,370:["LT"]
 ,371:["LV"]
@@ -352,17 +352,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"AM":[,[,,"[1-36-9]\\d{7}","\\d{5,8}"]
+,"AM":[,[,,"[1-35-9]\\d{7}","\\d{5,8}"]
 ,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}"]
-,[,,"(?:77|9[1-46-9])\\d{6}","\\d{8}"]
+,[,,"(?:55|77|9[1-46-9])\\d{6}","\\d{8}"]
 ,[,,"800\\d{5}","\\d{8}"]
 ,[,,"90[016]\\d{5}","\\d{8}"]
 ,[,,"80[1-4]\\d{5}","\\d{8}"]
 ,[,,"NA","NA"]
 ,[,,"6027\\d{4}","\\d{8}"]
-,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-9]"]
+,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["1"]
 ,"(0$1)",""]
-,[,"(\\d{2})(\\d{6})","$1 $2",["6"]
+,[,"(\\d{2})(\\d{6})","$1 $2",["[5-7]|9[1-9]"]
 ,"0$1",""]
 ,[,"(\\d{3})(\\d{5})","$1 $2",["[23]"]
 ,"(0$1)",""]
@@ -414,11 +414,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ,"AR",54,"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[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?","9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
 ,"0$1",""]
-,[,"9(11)(\\d{4})(\\d{4})","$1 15-$2-$3",["91"]
+,[,"(9)(11)(\\d{4})(\\d{4})","$2 15-$3-$4",["911"]
 ,"0$1",""]
-,[,"9(\\d{3})(\\d{3})(\\d{4})","$1 15-$2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
+,[,"(9)(\\d{3})(\\d{3})(\\d{4})","$2 15-$3-$4",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
 ,"0$1",""]
-,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 15-$2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
+,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$2 15-$3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
 ,"0$1",""]
 ,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"]
 ,"0$1",""]
@@ -428,19 +428,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"]
-,,""]
-,[,"9(11)(\\d{4})(\\d{4})","9 $1 $2-$3",["91"]
-,,""]
-,[,"9(\\d{3})(\\d{3})(\\d{4})","9 $1 $2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
-,,""]
-,[,"9(\\d{4})(\\d{2})(\\d{4})","9 $1 $2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
-,,""]
+]
+,[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3-$4",["911"]
+]
+,[,"(9)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3-$4",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"]
+]
+,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3-$4",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"]
+]
 ,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"]
-,,""]
+]
 ,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -478,7 +478,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"AU":[,[,,"[1-578]\\d{5,9}","\\d{6,10}"]
-,[,,"[2378]\\d{8}","\\d{8,9}"]
+,[,,"[237]\\d{8}|8(?:[68]\\d{3}|7[1-4]\\d{2}|9(?:[02-9]\\d{2}|1(?:[0-57-9]\\d|6[0135-9])))\\d{4}","\\d{8,9}"]
 ,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}"]
 ,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}"]
 ,[,,"190[0126]\\d{6}","\\d{10}"]
@@ -499,23 +499,35 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"$1",""]
 ]
 ,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
+,1,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"AW":[,[,,"[5-9]\\d{6}","\\d{7}"]
-,[,,"5(?:2\\d{2}|8(?:[2-7]\\d|8[0-79]|9[48]))\\d{3}","\\d{7}"]
-,[,,"(?:5[69]\\d|660|9(?:6\\d|9[02-9])|7[34]\\d)\\d{4}","\\d{7}"]
+,"AW":[,[,,"[25-9]\\d{6}","\\d{7}"]
+,[,,"5(?:2\\d|8[1-9])\\d{4}","\\d{7}"]
+,[,,"(?:5(?:6\\d|9[2-478])|6(?:[039]0|22|[46][01])|7[34]\\d|9(?:6[45]|9[4-8]))\\d{4}","\\d{7}"]
 ,[,,"800\\d{4}","\\d{7}"]
 ,[,,"900\\d{4}","\\d{7}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
-,"AW",297,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{4})","$1 $2",,"",""]
+,[,,"28\\d{5}|501\\d{4}","\\d{7}"]
+,"AW",297,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"AX":[,[,,"[135]\\d{5,9}|[27]\\d{4,9}|4\\d{5,10}|6\\d{7,8}|8\\d{6,9}","\\d{5,12}"]
+,[,,"18[1-8]\\d{3,9}","\\d{6,12}"]
+,[,,"4\\d{5,10}|50\\d{4,8}","\\d{6,11}"]
+,[,,"800\\d{4,7}","\\d{7,10}"]
+,[,,"[67]00\\d{5,6}","\\d{8,9}"]
+,[,,"NA","NA"]
+,[,,"NA","NA"]
+,[,,"NA","NA"]
+,"AX",358,"00|99[049]","0",,,"0",,,,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,10}"]
+]
 ,"AZ":[,[,,"[1-9]\\d{7,8}","\\d{5,9}"]
 ,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[02346-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d|44\\d{2})\\d{5}","\\d{5,9}"]
 ,[,,"(?:[46]0|5[015]|7[07])\\d{7}","\\d{9}"]
@@ -858,6 +870,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"CC":[,[,,"[1458]\\d{5,9}","\\d{6,10}"]
+,[,,"89162\\d{4}","\\d{8,9}"]
+,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}"]
+,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}"]
+,[,,"190[0126]\\d{6}","\\d{10}"]
+,[,,"NA","NA"]
+,[,,"500\\d{6}","\\d{9}"]
+,[,,"550\\d{6}","\\d{9}"]
+,"CC",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"NA","NA"]
+]
 ,"CD":[,[,,"[89]\\d{8}|[1-6]\\d{6}","\\d{7,9}"]
 ,[,,"[1-6]\\d{6}","\\d{7}"]
 ,[,,"(?:8[0-2489]|9[7-9])\\d{7}","\\d{9}"]
@@ -997,7 +1021,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"CN":[,[,,"[1-79]\\d{7,11}|8[0-357-9]\\d{6,9}","\\d{4,12}"]
 ,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[159])|4[135]1|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5\\d|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))\\d{7}|80(?:29|6[03578]|7[018]|81)\\d{4}","\\d{4,12}"]
-,[,,"1(?:3[0-9]|47|5[0135689]|8[05-9])\\d{8}","\\d{11}"]
+,[,,"1(?:3\\d|4[57]|5[0-35-9]|8[025-9])\\d{8}","\\d{11}"]
 ,[,,"(?:10)?800\\d{7}","\\d{10,12}"]
 ,[,,"16[08]\\d{5}","\\d{8}"]
 ,[,,"NA","NA"]
@@ -1022,22 +1046,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]
 ,"",""]
 ]
-,[[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"]
-,,""]
+,[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"]
+]
+,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"]
+]
+,[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"]
+]
 ,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"]
-,,""]
-,[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"]
-,,""]
+]
 ,[,"(\\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[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|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]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"]
-,,""]
+]
 ,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"]
-,,""]
-,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"]
-,,""]
+]
 ,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1059,11 +1083,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"(\\d)(\\d{7})","$1 $2",["1(?:8[2-9]|9[0-3]|[2-7])|[24-8]","1(?:8[2-9]|9(?:09|[1-3])|[2-7])|[24-8]"]
-,,""]
+]
 ,[,"(\\d{3})(\\d{7})","$1 $2",["3"]
-,,""]
+]
 ,[,"(1)(\\d{3})(\\d{7})","$1 $2 $3",["1(?:80|9[04])","1(?:800|9(?:0[01]|4[78]))"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1071,7 +1095,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"]
 ,[,,"2[24-7]\\d{6}","\\d{8}"]
-,[,,"8(?:[389]\\d|7[0-3])\\d{5}","\\d{8}"]
+,[,,"8[36789]\\d{6}","\\d{8}"]
 ,[,,"800\\d{7}","\\d{10}"]
 ,[,,"90[059]\\d{7}","\\d{10}"]
 ,[,,"NA","NA"]
@@ -1133,6 +1157,18 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
+,"CX":[,[,,"[1458]\\d{5,9}","\\d{6,10}"]
+,[,,"89164\\d{4}","\\d{8,9}"]
+,[,,"4(?:[0-2]\\d|3[0-57-9]|4[47-9]|5[0-37-9]|6[6-9]|7[07-9]|8[7-9])\\d{6}","\\d{9}"]
+,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}"]
+,[,,"190[0126]\\d{6}","\\d{10}"]
+,[,,"NA","NA"]
+,[,,"500\\d{6}","\\d{9}"]
+,[,,"550\\d{6}","\\d{9}"]
+,"CX",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,,,[,,"NA","NA"]
+,,,[,,"NA","NA"]
+,[,,"NA","NA"]
+]
 ,"CZ":[,[,,"[2-9]\\d{8}","\\d{9}"]
 ,[,,"2\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\d{7}","\\d{9}"]
 ,[,,"60[1-8]\\d{6}|7[2379]\\d{7}","\\d{9}"]
@@ -1204,7 +1240,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"DM":[,[,,"[57-9]\\d{9}","\\d{7}(?:\\d{3})?"]
 ,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-6])\\d{4}","\\d{10}"]
+,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-7])\\d{4}","\\d{10}"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
 ,[,,"900[2-9]\\d{6}","\\d{10}"]
 ,[,,"NA","NA"]
@@ -1261,11 +1297,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"$1",""]
 ]
 ,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-7]"]
-,,""]
+]
 ,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
-,,""]
+]
 ,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -1341,7 +1377,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"ET":[,[,,"[1-59]\\d{8}","\\d{7,9}"]
 ,[,,"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-23]|6[5-8])|5(?:1[57]|44|5[0-4])|6(?:18|2[69]|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}","\\d{7,9}"]
-,[,,"91[0-8]\\d{6}","\\d{9}"]
+,[,,"9[12]\\d{7}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1354,7 +1390,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"FI":[,[,,"1\\d{4,11}|[2-9]\\d{4,10}","\\d{5,12}"]
-,[,,"1(?:[35689][1-8]\\d{3,9}|[47]\\d{5,10})|2[1-8]\\d{3,9}|3(?:[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}|","\\d{5,12}"]
+,[,,"1(?:[3569][1-8]\\d{3,9}|[47]\\d{5,10})|2[1-8]\\d{3,9}|3(?:[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}","\\d{5,12}"]
 ,[,,"4\\d{5,10}|50\\d{4,8}","\\d{6,11}"]
 ,[,,"800\\d{4,7}","\\d{7,10}"]
 ,[,,"[67]00\\d{5,6}","\\d{8,9}"]
@@ -1369,12 +1405,12 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
-,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{6,10}"]
+,1,,[,,"NA","NA"]
+,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,10}"]
 ]
 ,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
 ,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}"]
-,[,,"(?:7[0-4]|9[29])\\d{5}","\\d{7}"]
+,[,,"(?:7[0-4]|9[27-9])\\d{5}","\\d{7}"]
 ,[,,"0800\\d{7}","\\d{11}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1551,7 +1587,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"GH":[,[,,"[235]\\d{6,8}","\\d{7,9}"]
 ,[,,"3(?:0[237]\\d|[167](?:2[0-6]|7\\d)|2(?:2[0-5]|7\\d)|3(?:2[0-37]|7\\d)|4(?:[27]\\d|30)|5(?:2[0-7]|7\\d)|8(?:2[0-2]|7\\d)|9(?:20|7\\d))\\d{5}","\\d{7,9}"]
-,[,,"2(?:(?:[47]\\d|08)\\d{6}|[368]\\d{7})|54\\d{7}","\\d{9}"]
+,[,,"(?:2[034678]|54)\\d{7}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -1915,30 +1951,20 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"3(?:08162\\d|3\\d{5}|4(?:40[49]06|5624\\d)|7(?:0624\\d|2299\\d))\\d{3}|55\\d{8}","\\d{10}"]
 ]
 ,"IN":[,[,,"1\\d{7,11}|[2-9]\\d{9,10}","\\d{6,12}"]
-,[,,"(?:11|2[02]|33|4[04]|79|80)[2-6]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-6]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24-58]|7[23-689]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-6]\\d{5}","\\d{6,10}"]
-,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[568]|9[39])|3(?:07|7[3679]|9[689])|4(?:05|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5]|[47]9|50|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[67]|9[6-9])|7(?:0[289]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7[015689]|9[0357-9]))\\d|9\\d{4}|8(?:(?:0[01589]|1[24]|2[2369]|4[023458]|52|6[0589]|7[2569])\\d|8(?:[079]\\d|44)|9[057-9]\\d)\\d)\\d{5}","\\d{10}"]
+,[,,"(?:11|2[02]|33|4[04]|79)[2-6]\\d{7}|80[2-46]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-6]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|[59][0235-9]|6[235-9]|7[34689]|8[257-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24-58]|7[23-689]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-6]\\d{5}","\\d{6,10}"]
+,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0[01589]\\d|1(?:[024]\\d|15|30|7[19]|97)|2(?:[2369]\\d|52|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|[19]1|2\\d|30|4[47]|53|7[45])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[038]|6[0-27-9]))|9\\d{3})\\d{6}","\\d{10}"]
 ,[,,"1(?:600\\d{6}|800\\d{4,8})","\\d{8,12}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|39|4[0-389]|5[04-9]|6|7[02-9]|8[0-79])|8(?:0[01589]|1[024]|8[0479]|9[057-9])|9","7(?:2[0579]|39|4[0-389]|5(?:0[0-5]|49|50|[6-9])|6|7[02-9]|8[0-79])|8(?:0[01589]|1[024]|8(?:[079]|44)|9[057-9])|9"]
+,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|15|30|7[19]|97)|2(?:[2369]|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|[19]1|2|30|4[47]|53|7[45])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[038]|6[0-27-9]))|9"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-6]"]
+,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-46]"]
 ,"0$1",""]
-,[,"(\\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])"]
+,[,"(\\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[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)"]
 ,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["6(?:12|[2345]1|57|6[13]|7[14]|80)"]
-,"0$1",""]
-,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[1-9])|[67]1|88)"]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[2-6])|[67]1|88)"]
 ,"0$1",""]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)"]
 ,"0$1",""]
@@ -2098,15 +2124,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"JP":[,[,,"\\d{9,10}","\\d{9,10}"]
 ,[,,"(?:1(?:1[236-8]|2[3-6]|3[3-9]|4[2-6]|[58][2-8]|6[2-7]|7[2-9]|9[1-8])|2[2-9]\\d|[36][1-9]\\d|4(?:6[0235-8]|[2-578]\\d|9[2-59])|5(?:6[1-9]|7[2-8]|[2-589]\\d)|7(?:3[4-9]|4[02-9]|[25-9]\\d)|8(?:3[2-9]|4[5-9]|5[1-9]|8[03-9]|[2679]\\d)|9(?:[679][1-9]|[2-58]\\d))\\d{6}","\\d{9}"]
-,[,,"[7-9]0\\d{8}","\\d{10}"]
-,[,,"120\\d{6}","\\d{9}"]
+,[,,"(?:[79]0\\d|80[1-9])\\d{7}","\\d{10}"]
+,[,,"120\\d{6}|800\\d{7}","\\d{9,10}"]
 ,[,,"990\\d{6}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"60\\d{7}","\\d{9}"]
 ,[,,"50\\d{8}","\\d{10}"]
-,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|99)0"]
+,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1-$2-$3",["(?:12|57|99)0"]
+,"0$1",""]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["800"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[57-9]0"]
+,[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["[2579]0|80[1-9]"]
 ,"0$1",""]
 ,[,"(\\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])","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"]
 ,"0$1",""]
@@ -2118,16 +2146,16 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["3|4(?:2[09]|7[01])|6[1-9]"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479]"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[2479][1-9]"]
 ,"0$1",""]
 ]
-,,[,,"NA","NA"]
+,,[,,"20\\d{8}","\\d{10}"]
 ,,,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"570\\d{6}","\\d{9}"]
 ]
 ,"KE":[,[,,"\\d{6,10}","\\d{4,10}"]
 ,[,,"(?:20|4[0-6]|5\\d|6[0-24-9])\\d{4,7}","\\d{4,9}"]
-,[,,"7(?:1[0-6]|2\\d|3[2-8]|5[0-2]|7[023])\\d{6}","\\d{9}"]
+,[,,"7(?:0[0-3]|[123]\\d|5[0-3]|7[0-4])\\d{6}","\\d{9}"]
 ,[,,"8(?:00|88)\\d{6,7}","\\d{9,10}"]
 ,[,,"9(?:00|1)\\d{6,7}","\\d{8,10}"]
 ,[,,"NA","NA"]
@@ -2190,11 +2218,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"KM":[,[,,"[37]\\d{6}","\\d{7}"]
+,"KM":[,[,,"[379]\\d{6}","\\d{7}"]
 ,[,,"7(?:6[0-37-9]|7[0-57-9])\\d{4}","\\d{7}"]
 ,[,,"3[23]\\d{5}","\\d{7}"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"(?:39[01]|9[01]0)\\d{4}","\\d{7}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -2205,8 +2233,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"KN":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
-,[,,"869(?:2(?:29|36)|4(?:6[5-9]|70))\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"869(?:5(?:5[6-8]|6[5-7])|66[2-9]|76[2-5])\\d{4}","\\d{10}"]
+,[,,"869(?:2(?:29|36)|302|4(?:6[5-9]|70))\\d{4}","\\d{7}(?:\\d{3})?"]
+,[,,"869(?:5(?:5[6-8]|6[5-7])|66\\d|76[02-6])\\d{4}","\\d{10}"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
 ,[,,"900[2-9]\\d{6}","\\d{10}"]
 ,[,,"NA","NA"]
@@ -2388,18 +2416,20 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"LR":[,[,,"(?:[279]\\d|[4-6])\\d{6}","\\d{7,8}"]
+,"LR":[,[,,"(?:[279]\\d|[4-6]|[38]\\d{2})\\d{6}","\\d{7,9}"]
 ,[,,"2\\d{7}","\\d{8}"]
-,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2})\\d{5}","\\d{7,8}"]
+,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2}|880\\d)\\d{5}","\\d{7,9}"]
 ,[,,"NA","NA"]
 ,[,,"90\\d{6}","\\d{8}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"33200\\d{4}","\\d{9}"]
 ,"LR",231,"00","0",,,"0",,,,[[,"([279]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[279]"]
 ,"0$1",""]
 ,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"]
 ,"0$1",""]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[38]"]
+,"0$1",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -2539,22 +2569,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"MD":[,[,,"[256-9]\\d{7}","\\d{8}"]
 ,[,,"(?:2(?:1[0569]|2\\d|3[015-7]|4[1-46-9]|5[0-24689]|6[2-589]|7[1-37]|9[1347-9])|5(?:33|5[257]))\\d{5}","\\d{5,8}"]
-,[,,"(?:6(?:50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}"]
+,[,,"(?:6(?:0[0-3]|50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}"]
 ,[,,"800\\d{5}","\\d{8}"]
-,[,,"900\\d{5}","\\d{8}"]
-,[,,"NA","NA"]
+,[,,"90[056]\\d{5}","\\d{8}"]
+,[,,"808\\d{5}","\\d{8}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,"MD",373,"00","0",,,"0",,,,[[,"(22)(\\d{3})(\\d{3})","$1 $2 $3",["22"]
 ,"0$1",""]
 ,[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["2[13-79]|[5-7]"]
 ,"0$1",""]
-,[,"([89]00)(\\d{5})","$1 $2",["[89]"]
+,[,"([89]\\d{2})(\\d{5})","$1 $2",["[89]"]
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
-,[,,"NA","NA"]
+,[,,"8(?:03|14)\\d{5}","\\d{8}"]
 ]
 ,"ME":[,[,,"[2-9]\\d{7,8}","\\d{6,9}"]
 ,[,,"(?:20[2-8]|3(?:0[2-7]|1[35-7]|2[367]|3[4-7])|4(?:0[237]|1[2467])|5(?:0[47]|1[27]|2[378]))\\d{5}","\\d{6,8}"]
@@ -2718,15 +2748,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,,"670",[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
-,"MQ":[,[]
-,[]
-,[]
+,"MQ":[,[,,"[56]\\d{8}","\\d{9}"]
+,[,,"596(?:3[0789]|4[28]|[5-7]\\d|9[67])\\d{4}","\\d{9}"]
+,[,,"696(?:[2-49]\\d|7[0-4]|8[0-6])\\d{4}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"MQ",596,"00","0",,,"0",,,1,,,[,,"NA","NA"]
+,"MQ",596,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""]
+]
+,,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ]
@@ -2834,19 +2866,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"01 $1",""]
 ,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"]
 ,"01 $1",""]
-,[,"1([358]\\d)(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"]
+,[,"(1)([358]\\d)(\\d{4})(\\d{4})","045 $2 $3 $4",["1(?:33|55|81)"]
 ,"$1",""]
-,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
+,[,"(1)(\\d{3})(\\d{3})(\\d{4})","045 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
 ,"$1",""]
 ]
 ,[[,"([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})","$1 $2 $3 $4",["1(?:33|55|81)"]
-,,""]
+]
 ,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3036,19 +3068,19 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1,,[,,"NA","NA"]
 ,[,,"0\\d{4}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}","\\d{5}(?:\\d{3})?"]
 ,1]
-,"NP":[,[,,"[1-8]\\d{5,7}|98[45]\\d{7}","\\d{6,10}"]
-,[,,"(?:1[014-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-4679]|9[1-79])\\d{6}","\\d{6,8}"]
-,[,,"98[45]\\d{7}","\\d{10}"]
+,"NP":[,[,,"[1-8]\\d{7}|9(?:[1-69]\\d{6}|7[2-6]\\d{5,7}|8\\d{8})","\\d{6,10}"]
+,[,,"(?:1[0124-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-46-9]|9[1-79])\\d{6}","\\d{6,8}"]
+,[,,"9(?:7[45]|8[0145])\\d{7}","\\d{10}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
-,"NP",977,"00","0",,,"0",,,,[[,"(1)([4-6]\\d{3})(\\d{3})","$1 $2 $3",["1[4-6]"]
+,"NP",977,"00","0",,,"0",,,,[[,"(1)(\\d{7})","$1-$2",["1[2-6]"]
 ,"0$1",""]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[01]|[2-8]|9[1-79]"]
+,[,"(\\d{2})(\\d{6})","$1-$2",["1[01]|[2-8]|9(?:[1-69]|7[15-9])"]
 ,"0$1",""]
-,[,"(98[45])(\\d{3})(\\d{4})","$1 $2 $3",["98"]
+,[,"(9\\d{2})(\\d{7})","$1-$2",["9(?:7[45]|8)"]
 ,"0$1",""]
 ]
 ,,[,,"NA","NA"]
@@ -3185,7 +3217,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"PH":[,[,,"[2-9]\\d{7,9}|1800\\d{7,9}","\\d{7,13}"]
 ,[,,"(?:2|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\d{7}","\\d{7,9}"]
-,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|7[349]|[89]9)\\d{7}","\\d{10}"]
+,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|4[89]|7[349]|89|9[49])\\d{7}","\\d{10}"]
 ,[,,"1800\\d{7,9}","\\d{11,13}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -3476,16 +3508,16 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"SC":[,[,,"[2-8]\\d{5,6}","\\d{6,7}"]
-,[,,"(?:2(?:1[78]|2[14-69]|3[2-4]|4[1-36-8]|6[167]|[89]\\d)|3(?:2[1-6]|4[4-6]|55|6[016]|7\\d|8[0-589]|9[0-5])|5(?:5\\d|6[0-2])|6(?:0[0-27-9]|1[0-478]|2[145]|3[02-4]|4[124]|6[015]|7\\d|8[1-3])|78[0138])\\d{3}","\\d{6}"]
-,[,,"(?:5(?:[1247-9]\\d|6[3-9])|7(?:[14679]\\d|2[1-9]|8[24-79]))\\d{3}","\\d{6}"]
+,[,,"(?:2?(?:55[0-5]|78[013])|4?(?:2(?:1[78]|2[14-69]|3[2-4]|4[1-36-8]|6[167]|[89]\\d)|3(?:0[34]|2[1-6]|4[4-6]|55|6[016]|7\\d|8[0-589]|9[0-5])|6(?:0[0-256]|1[0-478]|2[145]|3[02-4]|4[124]|6[015]|7\\d|8[1-3])))\\d{3}","\\d{6,7}"]
+,[,,"2?(?:5(?:[0-46-9]\\d|5[6-9])|7(?:[0-79]\\d|8[24-9]))\\d{3}","\\d{6,7}"]
 ,[,,"8000\\d{2}","\\d{6}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"(?:44[1-3]|647)\\d{4}","\\d{7}"]
-,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[23578]|[46][0-35-9]"]
+,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",["[3578]|2[1-4689]|6(?:[0-35-9]|4[0-689])"]
 ,"",""]
-,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[46]4"]
+,[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2[57]|4[2-46]|647"]
 ,"",""]
 ]
 ,,[,,"NA","NA"]
@@ -3507,7 +3539,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"SE":[,[,,"\\d{7,10}","\\d{5,10}"]
-,[,,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0-38]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[01-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|1[1-5]|2[0-68]|3[0-4]|4\\d|5[0-5]|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0\\d{5,7}|(?:1[0-68]|2\\d|3[02-59]|4[0-4]|5[0-4]|6[01]|7[0135-8]|8[01])\\d{5,6})","\\d{5,9}"]
+,[,,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0-38]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[01-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|1[0-5]|2[0-68]|3[0-4]|4\\d|5[0-5]|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0\\d{5,7}|(?:1[0-68]|2\\d|3[02-59]|4[0-4]|5[0-4]|6[01]|7[0135-8]|8[01])\\d{5,6})","\\d{5,9}"]
 ,[,,"7[02-46]\\d{7}","\\d{9}"]
 ,[,,"20\\d{4,7}","\\d{6,9}"]
 ,[,,"9(?:00|39|44)\\d{7}","\\d{10}"]
@@ -3532,21 +3564,21 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"0$1",""]
 ]
 ,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4",["8"]
-,,""]
+]
 ,[,"([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-69]\\d)(\\d{3})(\\d{2})","$1 $2 $3",["1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90"]
-,,""]
+]
 ,[,"(\\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])"]
-,,""]
+]
 ,[,"(\\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])"]
-,,""]
+]
 ,[,"(7[02-467])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7[02-467]"]
-,,""]
+]
 ,[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3",["20"]
-,,""]
+]
 ,[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["9[034]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3667,11 +3699,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"",""]
 ]
 ,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-7]"]
-,,""]
+]
 ,[,"(0549)(\\d{6})","($1) $2",["0"]
-,,""]
+]
 ,[,"(\\d{6})","(0549) $1",["[89]"]
-,,""]
+]
 ]
 ,[,,"NA","NA"]
 ,,,[,,"NA","NA"]
@@ -3679,7 +3711,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1]
 ,"SN":[,[,,"[37]\\d{8}","\\d{9}"]
 ,[,,"3(?:010|3(?:8[1-9]|9[2-9]))\\d{5}","\\d{9}"]
-,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[6-9]|7[45]|8[3-8])|7(?:1[014-8]|2[0-7]|3[0-35-8]|4[0-6]|[56]\\d|7[0-589]|8[01]|9[0-6]))\\d{5}","\\d{9}"]
+,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[5-9]|7[45]|8[3-8])|7(?:01|1[014-8]|[2-79]\\d|8[019]))\\d{5}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -3755,7 +3787,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"SY":[,[,,"[1-59]\\d{7,8}","\\d{6,9}"]
 ,[,,"(?:1(?:1\\d?|4\\d|[2356])|2[1-35]|3(?:1\\d|[34])|4[13]|5[1-3])\\d{6}","\\d{6,9}"]
-,[,,"9(?:3[23]|4[457]|55|6[67]|88|9[19])\\d{6}","\\d{9}"]
+,[,,"9(?:3[23]|4[457]|55|6[67]|88|9[1-49])\\d{6}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
@@ -4045,7 +4077,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"UG":[,[,,"\\d{9}","\\d{5,9}"]
 ,[,,"3\\d{8}|4(?:[1-6]\\d|7[136]|8[1356]|96)\\d{6}|20(?:0\\d|24)\\d{5}","\\d{5,9}"]
-,[,,"7(?:[1578]\\d|0[0-4])\\d{6}","\\d{9}"]
+,[,,"7(?:[15789]\\d|0[0-4])\\d{6}","\\d{9}"]
 ,[,,"800[123]\\d{5}","\\d{9}"]
 ,[,,"90[123]\\d{6}","\\d{9}"]
 ,[,,"NA","NA"]
@@ -4073,7 +4105,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,"US",1,"011","1",,,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,"",""]
 ,[,"(\\d{3})(\\d{4})","$1-$2",,"",""]
 ]
-,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",,,""]
+,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3"]
 ]
 ,[,,"NA","NA"]
 ,1,,[,,"NA","NA"]
@@ -4121,7 +4153,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,1]
 ,"VC":[,[,,"[5789]\\d{9}","\\d{7}(?:\\d{3})?"]
 ,[,,"784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8\\d|9[01])|555|638|784)\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"784(?:4(?:3[0-24]|5[45]|9[2-5])|5(?:2[6-9]|3[0-3]|93))\\d{4}","\\d{10}"]
+,[,,"784(?:4(?:3[0-4]|5[45]|9[2-5])|5(?:2[6-9]|3[0-4]|93))\\d{4}","\\d{10}"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
 ,[,,"900[2-9]\\d{6}","\\d{10}"]
 ,[,,"NA","NA"]
@@ -4158,8 +4190,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ,[,,"NA","NA"]
 ]
 ,"VI":[,[,,"[3589]\\d{9}","\\d{7}(?:\\d{3})?"]
-,[,,"340(?:6[49]2|7[17]\\d)\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"340(?:6[49]2|7[17]\\d)\\d{4}","\\d{7}(?:\\d{3})?"]
+,[,,"340(?:2(?:01|2[07]|36|44|77)|3(?:32|44)|4(?:4[38]|7[34])|5(?:1[34]|55)|6(?:26|4[23]|9[023])|7(?:[17]\\d|27)|884|998)\\d{4}","\\d{7}(?:\\d{3})?"]
+,[,,"340(?:2(?:01|2[07]|36|44|77)|3(?:32|44)|4(?:4[38]|7[34])|5(?:1[34]|55)|6(?:26|4[23]|9[023])|7(?:[17]\\d|27)|884|998)\\d{4}","\\d{7}(?:\\d{3})?"]
 ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
 ,[,,"900[2-9]\\d{6}","\\d{10}"]
 ,[,,"NA","NA"]
@@ -4287,7 +4319,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
 ]
 ,"ZM":[,[,,"[289]\\d{8}","\\d{9}"]
 ,[,,"21[1-8]\\d{6}","\\d{9}"]
-,[,,"9(?:55|6[4-9]|7[4-9])\\d{6}","\\d{9}"]
+,[,,"9(?:55|6[3-9]|7[4-9])\\d{6}","\\d{9}"]
 ,[,,"800\\d{6}","\\d{9}"]
 ,[,,"NA","NA"]
 ,[,,"NA","NA"]
index f3d7051..153cd72 100644 (file)
@@ -23,6 +23,9 @@
  * @author Nikolaos Trogkanis
  */
 
+goog.provide('i18n.phonenumbers.Error');
+goog.provide('i18n.phonenumbers.PhoneNumberFormat');
+goog.provide('i18n.phonenumbers.PhoneNumberType');
 goog.provide('i18n.phonenumbers.PhoneNumberUtil');
 
 goog.require('goog.array');
@@ -663,11 +666,15 @@ i18n.phonenumbers.PhoneNumberUtil.NON_DIGITS_PATTERN_ = /\D+/;
 
 
 /**
+ * This was originally set to $1 but there are some countries for which the
+ * first group is not used in the national pattern (e.g. Argentina) so the $1
+ * group does not match correctly.  Therefore, we use \d, so that the first
+ * group actually used in the pattern will be matched.
  * @const
  * @type {!RegExp}
  * @private
  */
-i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_ = /(\$1)/;
+i18n.phonenumbers.PhoneNumberUtil.FIRST_GROUP_PATTERN_ = /(\$\d)/;
 
 
 /**
@@ -1021,7 +1028,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode =
  * </pre>
  *
  * Refer to the unittests to see the difference between this function and
- * getLengthOfGeographicalAreaCode().
+ * {@link #getLengthOfGeographicalAreaCode}.
  *
  * @param {i18n.phonenumbers.PhoneNumber} number the PhoneNumber object for
  *     which clients want to know the length of the NDC.
@@ -1809,6 +1816,10 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getExampleNumber =
 i18n.phonenumbers.PhoneNumberUtil.prototype.getExampleNumberForType =
     function(regionCode, type) {
 
+  // Check the region code is valid.
+  if (!this.isValidRegionCode_(regionCode)) {
+    return null;
+  }
   /** @type {i18n.phonenumbers.PhoneNumberDesc} */
   var desc = this.getNumberDescByType_(
       this.getMetadataForRegion(regionCode), type);
@@ -2203,9 +2214,6 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getCountryCodeForRegion =
   }
   /** @type {i18n.phonenumbers.PhoneMetadata} */
   var metadata = this.getMetadataForRegion(regionCode);
-  if (metadata == null) {
-    return 0;
-  }
   return metadata.getCountryCodeOrDefault();
 };
 
@@ -2236,9 +2244,6 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getNddPrefixForRegion = function(
   }
   /** @type {i18n.phonenumbers.PhoneMetadata} */
   var metadata = this.getMetadataForRegion(regionCode);
-  if (metadata == null) {
-    return null;
-  }
   /** @type {string} */
   var nationalPrefix = metadata.getNationalPrefixOrDefault();
   // If no national prefix was found, we return null.
@@ -2792,9 +2797,11 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.
     var transformRule = metadata.getNationalPrefixTransformRule();
     /** @type {string} */
     var transformedNumber;
-    if (transformRule == null || transformRule.length == 0 ||
-        prefixMatcher[numOfGroups] == null ||
-        prefixMatcher[numOfGroups].length == 0) {
+    /** @type {boolean} */
+    var noTransform = transformRule == null || transformRule.length == 0 ||
+                      prefixMatcher[numOfGroups] == null ||
+                      prefixMatcher[numOfGroups].length == 0;
+    if (noTransform) {
       transformedNumber = numberStr.substring(prefixMatcher[0].length);
     } else {
       transformedNumber = numberStr.replace(prefixPattern, transformRule);
@@ -2804,7 +2811,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.
         transformedNumber)) {
       return carrierCode;
     }
-    if (numOfGroups > 0) {
+    if ((noTransform && numOfGroups > 0 && prefixMatcher[1] != null) ||
+        (!noTransform && numOfGroups > 1)) {
       carrierCode = prefixMatcher[1];
     }
     number.clear();
index caa11b1..8942460 100644 (file)
@@ -104,6 +104,31 @@ IT_NUMBER.setNationalNumber(236618300);
 IT_NUMBER.setItalianLeadingZero(true);
 
 
+// Numbers to test the formatting rules from Mexico.
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var MX_MOBILE1 = new i18n.phonenumbers.PhoneNumber();
+MX_MOBILE1.setCountryCode(52);
+MX_MOBILE1.setNationalNumber(12345678900);
+
+
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var MX_MOBILE2 = new i18n.phonenumbers.PhoneNumber();
+MX_MOBILE2.setCountryCode(52);
+MX_MOBILE2.setNationalNumber(15512345678);
+
+
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var MX_NUMBER1 = new i18n.phonenumbers.PhoneNumber();
+MX_NUMBER1.setCountryCode(52);
+MX_NUMBER1.setNationalNumber(3312345678);
+
+
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var MX_NUMBER2 = new i18n.phonenumbers.PhoneNumber();
+MX_NUMBER2.setCountryCode(52);
+MX_NUMBER2.setNationalNumber(8211234567);
+
+
 /** @type {i18n.phonenumbers.PhoneNumber} */
 var NZ_NUMBER = new i18n.phonenumbers.PhoneNumber();
 NZ_NUMBER.setCountryCode(64);
@@ -237,8 +262,8 @@ function testGetInstanceLoadARMetadata() {
   assertEquals('0', metadata.getNationalPrefix());
   assertEquals('0(?:(11|343|3715)15)?', metadata.getNationalPrefixForParsing());
   assertEquals('9$1', metadata.getNationalPrefixTransformRule());
-  assertEquals('$1 15 $2-$3', metadata.getNumberFormat(2).getFormat());
-  assertEquals('9(\\d{4})(\\d{2})(\\d{4})',
+  assertEquals('$2 15 $3-$4', metadata.getNumberFormat(2).getFormat());
+  assertEquals('(9)(\\d{4})(\\d{2})(\\d{4})',
                metadata.getNumberFormat(3).getPattern());
   assertEquals('(9)(\\d{4})(\\d{2})(\\d{4})',
                metadata.getIntlNumberFormat(3).getPattern());
@@ -345,6 +370,8 @@ function testGetExampleNumber() {
   assertNotNull(
       phoneUtil.getExampleNumberForType(RegionCode.US, PNT.FIXED_LINE));
   assertNotNull(phoneUtil.getExampleNumberForType(RegionCode.US, PNT.MOBILE));
+  // CS is an invalid region, so we have no data for it.
+  assertNull(phoneUtil.getExampleNumberForType(RegionCode.CS, PNT.MOBILE));
 }
 
 function testNormaliseRemovePunctuation() {
@@ -549,6 +576,37 @@ function testFormatARNumber() {
                phoneUtil.format(AR_MOBILE, PNF.E164));
 }
 
+function testFormatMXNumber() {
+  var PNF = i18n.phonenumbers.PhoneNumberFormat;
+  assertEquals('045 234 567 8900',
+               phoneUtil.format(MX_MOBILE1, PNF.NATIONAL));
+  assertEquals('+52 1 234 567 8900',
+               phoneUtil.format(MX_MOBILE1, PNF.INTERNATIONAL));
+  assertEquals('+5212345678900',
+               phoneUtil.format(MX_MOBILE1, PNF.E164));
+
+  assertEquals('045 55 1234 5678',
+               phoneUtil.format(MX_MOBILE2, PNF.NATIONAL));
+  assertEquals('+52 1 55 1234 5678',
+               phoneUtil.format(MX_MOBILE2, PNF.INTERNATIONAL));
+  assertEquals('+5215512345678',
+               phoneUtil.format(MX_MOBILE2, PNF.E164));
+
+  assertEquals('01 33 1234 5678',
+               phoneUtil.format(MX_NUMBER1, PNF.NATIONAL));
+  assertEquals('+52 33 1234 5678',
+               phoneUtil.format(MX_NUMBER1, PNF.INTERNATIONAL));
+  assertEquals('+523312345678',
+               phoneUtil.format(MX_NUMBER1, PNF.E164));
+
+  assertEquals('01 821 123 4567',
+               phoneUtil.format(MX_NUMBER2, PNF.NATIONAL));
+  assertEquals('+52 821 123 4567',
+               phoneUtil.format(MX_NUMBER2, PNF.INTERNATIONAL));
+  assertEquals('+528211234567',
+               phoneUtil.format(MX_NUMBER2, PNF.E164));
+}
+
 function testFormatOutOfCountryCallingNumber() {
   assertEquals('00 1 900 253 0000',
       phoneUtil.formatOutOfCountryCallingNumber(US_PREMIUM, RegionCode.DE));