JAVA/JS/CPP v5.8.8: metadata updates, small test & comment fixes.

git-svn-id: http://libphonenumber.googlecode.com/svn/trunk/resources@620 ee073f10-1060-11df-b6a4-87a95322a99c
diff --git a/PhoneNumberAlternateFormats.xml b/PhoneNumberAlternateFormats.xml
index b74ce20..9f47a2d 100644
--- a/PhoneNumberAlternateFormats.xml
+++ b/PhoneNumberAlternateFormats.xml
@@ -148,6 +148,10 @@
     <!-- Bulgaria (BG) -->
     <territory countryCode="359">
       <availableFormats>
+        <numberFormat pattern="(\d)(\d{3})(\d{2})(\d{2})">
+          <leadingDigits>2</leadingDigits>
+          <format>$1 $2 $3 $4</format>
+        </numberFormat>
         <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
           <leadingDigits>
             48|
@@ -156,6 +160,14 @@
           </leadingDigits>
           <format>$1 $2 $3</format>
         </numberFormat>
+        <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})">
+          <leadingDigits>
+            48|
+            8[7-9]|
+            9[08]
+          </leadingDigits>
+          <format>$1 $2 $3 $4</format>
+        </numberFormat>
       </availableFormats>
     </territory>
 
@@ -379,7 +391,7 @@
           <format>$1/$2 $3 $4</format>
         </numberFormat>
         <!-- 4 digit area codes. -->
-        <numberFormat pattern="(\d{4})(\d{3})(\d{3,4})">
+        <numberFormat pattern="(\d{4})(\d{3})(\d{1,4})">
           <leadingDigits>
             [24-6]|
             [7-9](?:
@@ -904,6 +916,11 @@
     <!-- Estonia (EE) -->
     <territory countryCode="372">
       <availableFormats>
+        <!-- There are about 2 million search results for numbers written with the 6 separate. -->
+        <numberFormat pattern="(\d)(\d{3})(\d{3})">
+          <leadingDigits>6</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
         <numberFormat pattern="(\d{2})(\d{2})(\d{3})">
           <leadingDigits>
             [69]|
@@ -959,6 +976,29 @@
       </availableFormats>
     </territory>
 
+    <!-- Finland (FI) -->
+    <!-- Metadata shared with Åland (AX) -->
+    <territory countryCode="358">
+      <availableFormats>
+        <numberFormat pattern="(\d{2})(\d{3})(\d{3,4})">
+          <leadingDigits>
+            [14]|
+            2[09]|
+            50|
+            7[135]
+          </leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+        <numberFormat pattern="(\d)(\d{3})(\d{3,4})">
+          <leadingDigits>
+            [25689][1-8]|
+            3
+          </leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
     <!-- Great Britain (GB) -->
     <territory countryCode="44" >
       <availableFormats>
@@ -995,6 +1035,26 @@
       </availableFormats>
     </territory>
 
+    <!-- Georgia (GE) -->
+    <territory countryCode="995">
+      <availableFormats>
+        <numberFormat pattern="(\d{2})(\d)(\d{2})(\d{2})(\d{2})" >
+          <leadingDigits>[348]</leadingDigits>
+          <format>$1 $2 $3 $4 $5</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
+    <!-- Gibraltar (GI) -->
+    <territory countryCode="350" >
+      <availableFormats>
+        <numberFormat pattern="(\d{4})(\d{4})">
+          <leadingDigits>2</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
     <!-- Greece (GR) -->
     <territory countryCode="30">
       <availableFormats>
@@ -1027,11 +1087,25 @@
       </availableFormats>
     </territory>
 
+    <!-- Hungary (HU) -->
+    <territory countryCode="36">
+      <availableFormats>
+        <numberFormat pattern="(1)(\d{4})(\d{3})">
+          <leadingDigits>1</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+        <numberFormat pattern="(\d{2})(\d{4})(\d{3})">
+          <leadingDigits>[2-9]</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
     <!-- Indonesia (ID) -->
     <territory countryCode="62">
       <availableFormats>
         <numberFormat nationalPrefixFormattingRule="($NP$FG)"
-          pattern="(\d{2})(\d{4})(\d{4})">
+          pattern="(\d{2})(\d{3,4})(\d{4})">
           <leadingDigits>
             2[124]|
             [36]1
@@ -1098,6 +1172,16 @@
       </availableFormats>
     </territory>
 
+    <!-- Sri Lanka (LK) -->
+    <territory countryCode="94">
+      <availableFormats>
+        <numberFormat pattern="(\d{3})(\d{3})(\d{3})">
+          <leadingDigits>7</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
     <!-- Luxembourg (LU) -->
     <territory countryCode="352">
       <availableFormats>
@@ -1139,6 +1223,16 @@
           </leadingDigits>
           <format>$1 $2 $3</format>
         </numberFormat>
+        <numberFormat pattern="([1-5]\d{2})(\d{2})(\d{2})(\d{2})">
+          <leadingDigits>
+            1[16-8]|
+            2[259]|
+            3[124]|
+            4[17-9]|
+            5[124679]
+          </leadingDigits>
+          <format>$1 $2 $3 $4</format>
+        </numberFormat>
       </availableFormats>
     </territory>
 
@@ -1211,10 +1305,33 @@
           <leadingDigits>[346-9]</leadingDigits>
           <format>$1 $2-$3</format>
         </numberFormat>
+        <numberFormat pattern="(\d{5})(\d{5})">
+          <leadingDigits>[346-9]</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
         <numberFormat pattern="(\d{4})(\d{2})(\d{2})(\d{2})">
           <leadingDigits>[346-9]</leadingDigits>
           <format>$1 $2-$3-$4</format>
         </numberFormat>
+        <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{3})">
+          <leadingDigits>[346-9]</leadingDigits>
+          <format>$1 $2-$3-$4</format>
+        </numberFormat>
+        <numberFormat pattern="(\d{3})(\d)(\d{2})(\d{2})(\d{2})">
+          <leadingDigits>[346-9]</leadingDigits>
+          <format>$1-$2 $3-$4-$5</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
+
+    <!-- Thailand (TH) -->
+    <territory countryCode="66">
+      <availableFormats>
+        <!-- Over a million of the search results are formatted in two blocks like this. -->
+        <numberFormat pattern="(2\d{3})(\d{4})">
+          <leadingDigits>2</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
       </availableFormats>
     </territory>
 
@@ -1289,5 +1406,19 @@
         </numberFormat>
       </availableFormats>
     </territory>
+
+    <!-- Viet Nam (VN) -->
+    <territory countryCode="84">
+      <availableFormats>
+        <numberFormat pattern="(9\d{2})(\d{3})(\d{3})">
+          <leadingDigits>9</leadingDigits>
+          <format>$1 $2 $3</format>
+        </numberFormat>
+        <numberFormat pattern="([48])(\d{2})(\d{3})(\d{3})">
+          <leadingDigits>[48]</leadingDigits>
+          <format>$1 $2 $3 $4</format>
+        </numberFormat>
+      </availableFormats>
+    </territory>
   </territories>
 </phoneNumberMetadata>
diff --git a/PhoneNumberMetadata.xml b/PhoneNumberMetadata.xml
index 9ca1d5b..652cdca 100644
--- a/PhoneNumberMetadata.xml
+++ b/PhoneNumberMetadata.xml
@@ -938,11 +938,6 @@
           <format>$1</format>
           <intlFormat>NA</intlFormat>
         </numberFormat>
-        <numberFormat pattern="(\d{2})" nationalPrefixFormattingRule="$NP$FG">
-          <leadingDigits>0</leadingDigits>
-          <format>$1</format>
-          <intlFormat>NA</intlFormat>
-        </numberFormat>
       </availableFormats>
       <generalDesc>
         <nationalNumberPattern>
@@ -2043,7 +2038,7 @@
                 3|
                 4\d
               )
-            )|
+            )
           )\d{3}|
           4(?:
             0(?:
@@ -2303,7 +2298,7 @@
         <numberFormat pattern="([15-8]\d)(\d{2})(\d{2})(\d{2})">
           <leadingDigits>
             [156]|
-            7[0178]|
+            7[018]|
             8(?:
               0[1-9]|
               [1-79]
@@ -2326,21 +2321,17 @@
         <possibleNumberPattern>\d{8,9}</possibleNumberPattern>
       </generalDesc>
       <fixedLine>
-        <!-- Note that 80 is a valid area code, so we explicitly check for this case that the third
-             digit begins with 1-9 -->
+        <!-- According to the published Excel document the third digit must be 1-9. -->
         <nationalNumberPattern>
           (?:
             1[0-69]|
-            [23][2-8]|
             [49][23]|
             5\d|
             6[013-57-9]|
-            71
-          )\d{6}|
-          8(?:
-            0[1-9]|
-            [1-79]\d
-          )\d{5}
+            71|
+            8[0-79]
+          )[1-9]\d{5}|
+          [23][2-8]\d{6}
         </nationalNumberPattern>
         <possibleNumberPattern>\d{8}</possibleNumberPattern>
         <exampleNumber>12345678</exampleNumber>
@@ -2365,9 +2356,9 @@
       <premiumRate>
         <nationalNumberPattern>
           (?:
-            90|
-            7[07]
-          )\d{6}
+            70[2-7]|
+            90\d
+          )\d{5}
         </nationalNumberPattern>
         <possibleNumberPattern>\d{8}</possibleNumberPattern>
         <exampleNumber>90123456</exampleNumber>
@@ -2424,8 +2415,8 @@
         <nationalNumberPattern>
           6(?:
             [0-24-6]\d|
-            8[0-5]|
-            3[0-3]|
+            8[0-8]|
+            3[0-3]
           )\d{5}|
           7\d{7}
         </nationalNumberPattern>
@@ -3086,7 +3077,7 @@
           1(?:
             1(?:
               5[347]|
-              [6-9]\d|
+              [6-9]\d
             )|
             [2-9][6-9]\d
           )\d{6}|
@@ -4645,7 +4636,9 @@
     <!-- Colombia -->
     <!-- http://www.itu.int/oth/T020200002C/en -->
     <!-- http://en.wikipedia.org/wiki/Telephone_numbers_in_Colombia -->
-    <territory id="CO" countryCode="57" internationalPrefix="00[579]|#555|#999"
+    <!-- Extra international dialling prefixes from www.claro.com.co and www.tigo.com.co. -->
+    <!-- 05 and 005 are for Orbitel: co.orbitel.com -->
+    <territory id="CO" countryCode="57" internationalPrefix="00(?:4(?:[14]4|56)|[579])"
                nationalPrefix="0" nationalPrefixForParsing="0([3579]|4(?:44|56))?"
                mobileNumberPortableRegion="true">
       <availableFormats>
@@ -4742,7 +4735,7 @@
     <!-- Costa Rica -->
     <!-- http://www.itu.int/oth/T0202000030/en -->
     <territory id="CR" countryCode="506" internationalPrefix="00"
-               nationalPrefixForParsing="(19(?:0[0-2468]|19|20|66|77))"
+               nationalPrefixForParsing="(19(?:0[01468]|19|20|66|77))"
                carrierCodeFormattingRule="$CC $FG">
       <availableFormats>
         <numberFormat pattern="(\d{4})(\d{4})">
@@ -4797,10 +4790,7 @@
             0(?:
               [04]0\d{4}|
               10[0-3]\d{3}|
-              2(?:
-                00\d|
-                900
-              )\d{2}|
+              2900\d{2}|
               3[01]\d{4}|
               5\d{5}|
               70[01]\d{3}|
@@ -6519,8 +6509,8 @@
         </numberFormat>
         <numberFormat pattern="(\d{2})(\d{4,10})">
           <leadingDigits>
-            2[09]|
             [14]|
+            2[09]|
             50|
             7[135]
           </leadingDigits>
@@ -7888,8 +7878,15 @@
     </territory>
 
     <!-- Gibraltar -->
+    <!-- http://www.gra.gi/index.php?topic=numbering+plan&section=legislation&site=communications -->
     <territory id="GI" countryCode="350" internationalPrefix="00">
-      <!-- No formatting rules - numbers are always formatted as a block. -->
+      <availableFormats>
+        <!-- Most numbers are formatted as a block -->
+        <numberFormat pattern="(\d{3})(\d{5})">
+          <leadingDigits>2</leadingDigits>
+          <format>$1 $2</format>
+        </numberFormat>
+      </availableFormats>
       <generalDesc>
         <nationalNumberPattern>[2568]\d{7}</nationalNumberPattern>
         <possibleNumberPattern>\d{8}</possibleNumberPattern>
@@ -7898,8 +7895,14 @@
         <nationalNumberPattern>
           2(?:
             00\d|
-            16[0-7]|
-            22[2457]
+            1(?:
+              6[24-7]|
+              9\d
+            )|
+            2(?:
+              00|
+              2[2457]
+            )
           )\d{4}
         </nationalNumberPattern>
         <exampleNumber>20012345</exampleNumber>
@@ -7907,8 +7910,8 @@
       <mobile>
         <nationalNumberPattern>
           (?:
-            5[4-8]|
-            60
+            5[46-8]|
+            62
           )\d{6}
         </nationalNumberPattern>
         <exampleNumber>57123456</exampleNumber>
@@ -8008,7 +8011,7 @@
       <mobile>
         <nationalNumberPattern>
           (?:
-            2[0-2]|
+            2[0-6]|
             [3679]\d
           )\d{5}
         </nationalNumberPattern>
@@ -10559,7 +10562,7 @@
       <mobile>
         <!-- TETRA = TErrestrial Trunked RAdio is included under mobile. -->
         <nationalNumberPattern>
-          38[59]\d{6}|
+          38[589]\d{6}|
           (?:
             6(?:
               1[0-8]|
@@ -10584,6 +10587,9 @@
         <exampleNumber>6101234</exampleNumber>
       </mobile>
       <tollFree>
+        <!-- The UIFN numbers mentioned in the Excel document are not yet included since no real
+             numbers can be found online, and it is not clear what these are; the standard
+             definition would have them under the +800 country code instead of Iceland. -->
         <nationalNumberPattern>800\d{4}</nationalNumberPattern>
         <possibleNumberPattern>\d{7}</possibleNumberPattern>
         <exampleNumber>8001234</exampleNumber>
@@ -10600,7 +10606,6 @@
       </voip>
       <voicemail>
         <nationalNumberPattern>
-          388\d{6}|
           (?:
             6(?:
               2[0-8]|
@@ -10616,7 +10621,8 @@
             95[48]
           )\d{4}
         </nationalNumberPattern>
-        <exampleNumber>388123456</exampleNumber>
+        <possibleNumberPattern>\d{7}</possibleNumberPattern>
+        <exampleNumber>6201234</exampleNumber>
       </voicemail>
     </territory>
 
@@ -15552,7 +15558,7 @@
             )|
             7\d{2}|
             8(?:
-              [26]\d|
+              [256]\d|
               7[15-8]
             )|
             9[0-8]\d
diff --git a/ShortNumberMetadata.xml b/ShortNumberMetadata.xml
index 1ad5ea9..869282a 100644
--- a/ShortNumberMetadata.xml
+++ b/ShortNumberMetadata.xml
@@ -273,9 +273,8 @@
         <possibleNumberPattern>\d{2,3}</possibleNumberPattern>
       </generalDesc>
       <shortCode>
-        <!-- Note that 000 is formatted with national prefix 0. -->
         <nationalNumberPattern>
-          00|
+          000|
           1(?:
             0[0-35-7]|
             1[02-5]|
@@ -290,7 +289,7 @@
         <!-- According to http://wikitravel.org/en/Argentina all 2 and 3 digit numbers are free,
              except for 113. -->
         <nationalNumberPattern>
-          [09]\d{1,2}|
+          [09]\d{2}|
           1(?:
             [02-9]\d?|
             1[0-24-9]?
@@ -669,21 +668,103 @@
 
     <!-- Belgium -->
     <!-- http://www.bipt.be/en/161/ShowContent/502/Database/Databases.aspx -->
-    <!-- http://www.telefoonzones.be/ -->
+    <!-- http://www.mobileweb.be/en/mobileweb/sms-numberplan.asp -->
     <territory id="BE">
       <generalDesc>
-        <nationalNumberPattern>1\d{2}</nationalNumberPattern>
-        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <nationalNumberPattern>
+          1\d{2,5}|
+          [2-9]\d{3}
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
       </generalDesc>
       <shortCode>
         <nationalNumberPattern>
           1(?:
-            0[01]|
-            12
-          )
+            0[0-8]|
+            1(?:
+              [027]|
+              6000
+            )|
+            2(?:
+              0[47]|
+              12|
+              3[0-24]|
+              99
+            )|
+            3(?:
+              0[47]|
+              13|
+              99
+            )|
+            4(?:
+              0[47]|
+              14|
+              50|
+              99
+            )|
+            7(?:
+              00|
+              1[27]|
+              33|
+              65|
+              77
+            )|
+            819
+          )|
+          [2-9]\d{3}
         </nationalNumberPattern>
         <exampleNumber>112</exampleNumber>
       </shortCode>
+      <tollFree>
+        <!-- Documentation from www.childfocus.be says that 110 and 116000 are both free. Other
+             information comes from the website of each number. -->
+        <nationalNumberPattern>
+          1(?:
+            0[25-8]|
+            1(?:
+              0|
+              6\d{3}
+            )|
+            7(?:
+              12|
+              77
+            )
+          )|
+          8\d{3}
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+        <exampleNumber>116000</exampleNumber>
+      </tollFree>
+      <premiumRate>
+        <!-- For the numbers starting with 2-7 or 9, in practice, there is a range of rates; but the
+             maximum is at least half a Euro, and in some cases 31 Euros (for mobile payments) so we
+             consider them all premium rate for now. Other numbers have been assigned here because
+             operators have listed them as being more expensive than normal numbers, e.g.
+             http://www.voo.be/fr/telephone/tarifs-speciaux/ -->
+        <nationalNumberPattern>
+          1(?:
+            212|
+            3(?:
+              0[47]|
+              13
+            )|
+            4[01]4
+          )|
+          [2-79]\d{3}
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{4}</possibleNumberPattern>
+        <exampleNumber>7212</exampleNumber>
+      </premiumRate>
+      <directoryServices>
+        <nationalNumberPattern>1[2-4]\d{2}</nationalNumberPattern>
+        <possibleNumberPattern>\d{4}</possibleNumberPattern>
+        <exampleNumber>1212</exampleNumber>
+      </directoryServices>
+      <smsServices>
+        <nationalNumberPattern>[2-9]\d{3}</nationalNumberPattern>
+        <possibleNumberPattern>\d{4}</possibleNumberPattern>
+        <exampleNumber>2787</exampleNumber>
+      </smsServices>
       <emergency>
         <nationalNumberPattern>
           1(?:
@@ -691,8 +772,42 @@
             12
           )
         </nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
         <exampleNumber>112</exampleNumber>
       </emergency>
+      <expandedEmergency>
+        <!-- http://www.childfocus.be/fr/accueil/ lists this as being an emergency number. -->
+        <nationalNumberPattern>
+          11(?:
+            0|
+            6000
+          )
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+        <exampleNumber>116000</exampleNumber>
+      </expandedEmergency>
+      <carrierSelectionCodes>
+        <nationalNumberPattern>
+          1(?:
+            5(?:
+              1[05]|
+              2[25]|
+              5[15]|
+              66|
+              88|
+              9[59]
+            )|
+            6(?:
+              02|
+              1[167]|
+              36|
+              6[156]
+            )
+          )
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{4}</possibleNumberPattern>
+        <exampleNumber>1510</exampleNumber>
+      </carrierSelectionCodes>
     </territory>
 
     <!-- Burkina Faso -->
@@ -2253,9 +2368,7 @@
             [357]\d{3}|
             80\d{2}
           )|
-          3(?:
-            [357]\d{3}|
-          )|
+          3[357]\d{3}|
           [79]9[57]\d{3}
         </nationalNumberPattern>
         <exampleNumber>010</exampleNumber>
@@ -2964,9 +3077,10 @@
     </territory>
 
     <!-- Gibraltar -->
+    <!-- http://www.gra.gi/index.php?topic=numbering+plan&section=legislation&site=communications-->
     <territory id="GI">
       <generalDesc>
-        <nationalNumberPattern>[18]\d{2,5}</nationalNumberPattern>
+        <nationalNumberPattern>[158]\d{2,5}</nationalNumberPattern>
         <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
       </generalDesc>
       <shortCode>
@@ -2977,7 +3091,10 @@
               2|
               6(?:
                 00[06]|
-                11[17]
+                1(?:
+                  1[17]|
+                  23
+                )
               )|
               8\d{2}
             )|
@@ -2987,16 +3104,76 @@
               7[014]
             )|
             5[015]|
-            9[0349]
+            9[02349]
           )|
+          555|
           8(?:
-            00|
+            008?|
             4[0-2]|
-            8\d
+            88
           )
         </nationalNumberPattern>
         <exampleNumber>116000</exampleNumber>
       </shortCode>
+      <tollFree>
+        <nationalNumberPattern>
+          1(?:
+            00|
+            16\d{3}|
+            23|
+            47\d|
+            5[15]|
+            9[2-4]
+          )|
+          555
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
+        <exampleNumber>100</exampleNumber>
+      </tollFree>
+      <standardRate>
+        <nationalNumberPattern>150</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>150</exampleNumber>
+      </standardRate>
+      <carrierSpecific>
+        <nationalNumberPattern>
+          1(?:
+            18\d{2}|
+            23|
+            51|
+            9[2-4]
+          )|
+          555|
+          8(?:
+            00|
+            88
+          )
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+        <exampleNumber>123</exampleNumber>
+      </carrierSpecific>
+      <carrierServices>
+        <nationalNumberPattern>
+          123|
+          555|
+          8(?:
+            00|
+            88
+          )
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>123</exampleNumber>
+      </carrierServices>
+      <directoryServices>
+        <nationalNumberPattern>
+          1(?:
+            00|
+            18\d{2}
+          )
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{3,5}</possibleNumberPattern>
+        <exampleNumber>11812</exampleNumber>
+      </directoryServices>
       <emergency>
         <nationalNumberPattern>
           1(?:
@@ -3007,6 +3184,17 @@
         <possibleNumberPattern>\d{3}</possibleNumberPattern>
         <exampleNumber>112</exampleNumber>
       </emergency>
+      <expandedEmergency>
+        <nationalNumberPattern>116111</nationalNumberPattern>
+        <possibleNumberPattern>\d{6}</possibleNumberPattern>
+        <exampleNumber>116111</exampleNumber>
+      </expandedEmergency>
+      <!-- Type B codes in the plan. -->
+      <carrierSelectionCodes>
+        <nationalNumberPattern>88[467]</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>884</exampleNumber>
+      </carrierSelectionCodes>
     </territory>
 
     <!-- Greenland -->
@@ -5629,11 +5817,17 @@
     <!-- http://www.itu.int/oth/T02020000A4/en -->
     <!-- http://en.wikipedia.org/wiki/%2B675 -->
     <territory id="PG">
+      <generalDesc>
+        <nationalNumberPattern>0\d{2}</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+      </generalDesc>
+      <shortCode>
+        <nationalNumberPattern>000</nationalNumberPattern>
+        <exampleNumber>000</exampleNumber>
+      </shortCode>
       <emergency>
         <!-- http://www.pngbd.com/emergency.php has been used, excluding fixed-line phone-numbers.
              -->
-        <!-- Since the national prefix is 0, this is parsed with a national number of 00 including
-             Italian leading zero, which means the pattern here won't match. -->
         <nationalNumberPattern>000</nationalNumberPattern>
         <exampleNumber>000</exampleNumber>
       </emergency>
@@ -6975,27 +7169,186 @@
     </territory>
 
     <!-- United States -->
-    <!-- http://www.nanpa.com/reports/reports_npa.html -->
-    <!-- http://en.wikipedia.org/wiki/North_American_Numbering_Plan -->
+    <!-- http://en.wikipedia.org/wiki/North_American_Numbering_Plan#Special_numbers_and_codes -->
+    <!-- http://en.wikipedia.org/wiki/Vertical_service_code -->
+    <!-- http://www.call811.com/how-811-works/default.aspx -->
     <territory id="US">
       <generalDesc>
-        <nationalNumberPattern>[19]\d{2}</nationalNumberPattern>
-        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <nationalNumberPattern>[1-9]\d{2,5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{3,6}</possibleNumberPattern>
       </generalDesc>
       <shortCode>
         <nationalNumberPattern>
-          112|
-          911
+          1(?:
+            1(?:
+              2|
+              5[1-47]|
+              [68]\d|
+              7[0-57]|
+              98
+            )
+          )|
+          [2-9](?:
+            11|
+            \d{4,5}
+          )
         </nationalNumberPattern>
         <exampleNumber>911</exampleNumber>
       </shortCode>
+      <tollFree>
+        <nationalNumberPattern>611</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>611</exampleNumber>
+      </tollFree>
+      <standardRate>
+        <nationalNumberPattern>
+          2(?:
+            3333|
+            42242|
+            56447|
+            6688|
+            75622
+          )|
+          3(?:
+            1010|
+            2665|
+            7404
+          )|
+          40404|
+          560560|
+          6(?:
+            0060|
+            22639|
+            5246|
+            7622
+          )|
+          7(?:
+            0701|
+            3822|
+            4666
+          )|
+          8(?:
+            38255|
+            4816|
+            72265
+          )|
+          99099
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{5,6}</possibleNumberPattern>
+        <exampleNumber>73822</exampleNumber>
+      </standardRate>
+      <premiumRate>
+        <nationalNumberPattern>
+          2(?:
+            4280|
+            5209|
+            7(?:
+              449|
+              663
+            )
+          )|
+          3(?:
+            2340|
+            3786|
+            5564|
+            8(?:
+              135|
+              254
+            )
+          )|
+          4(?:
+            1(?:
+              366|
+              463
+            )|
+            3355|
+            6(?:
+              157|
+              327
+            )|
+            7553|
+            8(?:
+              221|
+              277
+            )
+          )|
+          5(?:
+            2944|
+            4892|
+            5928|
+            9(?:
+              187|
+              342
+            )
+          )|
+          69388|
+          7(?:
+            2(?:
+              078|
+              087
+            )|
+            3(?:
+              288|
+              909
+            )|
+            6426
+          )|
+          8(?:
+            6234|
+            9616
+          )|
+          9(?:
+            5297|
+            6(?:
+              040|
+              835
+            )|
+            7(?:
+              294|
+              688
+            )|
+            9(?:
+              689|
+              796
+            )
+          )
+        </nationalNumberPattern>
+        <exampleNumber>24280</exampleNumber>
+      </premiumRate>
+      <carrierSpecific>
+        <!-- https://support.google.com/plus/answer/1304917
+             611 is listed as working from "most" wireless carriers. -->
+        <nationalNumberPattern>
+          33669|
+          611
+        </nationalNumberPattern>
+        <possibleNumberPattern>\d{5}</possibleNumberPattern>
+        <exampleNumber>33669</exampleNumber>
+      </carrierSpecific>
+      <carrierServices>
+        <!-- http://www.dial611.com/why_611.php -->
+        <nationalNumberPattern>611</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>611</exampleNumber>
+      </carrierServices>
+      <directoryServices>
+        <nationalNumberPattern>411</nationalNumberPattern>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>411</exampleNumber>
+      </directoryServices>
       <emergency>
         <nationalNumberPattern>
           112|
           911
         </nationalNumberPattern>
-        <exampleNumber>112</exampleNumber>
+        <possibleNumberPattern>\d{3}</possibleNumberPattern>
+        <exampleNumber>911</exampleNumber>
       </emergency>
+      <smsServices>
+        <nationalNumberPattern>[2-9]\d{4,5}</nationalNumberPattern>
+        <possibleNumberPattern>\d{5,6}</possibleNumberPattern>
+        <exampleNumber>20566</exampleNumber>
+      </smsServices>
     </territory>
 
     <!-- Uruguay -->
diff --git a/carrier/en/20.txt b/carrier/en/20.txt
index c74f17f..3c18256 100644
--- a/carrier/en/20.txt
+++ b/carrier/en/20.txt
@@ -15,11 +15,3 @@
 2010|Vodafone
 2011|Etisalat
 2012|Mobinil
-2014|Etisalat
-20150|Mobinil
-20151|Vodafone
-20152|Etisalat
-2016|Vodafone
-2017|Mobinil
-2018|Mobinil
-2019|Vodafone
diff --git a/carrier/en/220.txt b/carrier/en/220.txt
index a32391e..1029f0f 100644
--- a/carrier/en/220.txt
+++ b/carrier/en/220.txt
@@ -12,8 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-2202|Africel
+2202|Africell
 2203|QCell
 2206|Comium
-2207|Africel
+2207|Africell
 2209|Gamcel
diff --git a/carrier/en/224.txt b/carrier/en/224.txt
index ad3a4e1..40689f4 100644
--- a/carrier/en/224.txt
+++ b/carrier/en/224.txt
@@ -12,13 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Prefixes from http://www.itu.int/oth/T020200005B/en
+
 22460|Sotelgui
-22461|Orange S.A.
-22462|Orange S.A.
-2246310|Telecel Guinee
-2246335|Telecel Guinee
-2246340|Telecel Guinee
-22464|MTN
+22462|Orange
+22463|Intercel
 22465|Cellcom
-22467|Cellcom
-22468|Orange S.A.
+22466|Areeba
diff --git a/carrier/en/230.txt b/carrier/en/230.txt
index 82d3abc..bc5d01c 100644
--- a/carrier/en/230.txt
+++ b/carrier/en/230.txt
@@ -14,47 +14,48 @@
 
 # Prefixes from http://www.itu.int/oth/T0202000088/en
 
-+230525|Cellplus
-+230529|MTML
-+2305421|Emtel
-+2305422|Emtel
-+2305423|Emtel
-+2305428|Emtel
-+2305429|Emtel
-+230544|Emtel
-+2305471|Mauritius Telecom
-+2305472|Emtel
-+2305473|Emtel
-+2305474|Emtel
-+2305475|Emtel
-+2305476|Emtel
-+2305477|Emtel
-+2305478|Emtel
-+2305479|Emtel
-+230549|Emtel
-+230570|Cellplus
-+230571|Emtel
-+230572|Emtel
-+230573|Emtel
-+230574|Emtel
-+230575|Cellplus
-+230576|Cellplus
-+230577|Cellplus
-+230578|Cellplus
-+230579|Cellplus
-+230582|Cellplus
-+230586|MTML
-+2305871|MTML
-+2305875|Cellplus
-+2305876|Cellplus
-+2305877|Cellplus
-+2305878|Cellplus
-+230590|Cellplus
-+230591|Cellplus
-+230592|Cellplus
-+230593|Emtel
-+230594|Cellplus
-+230595|MTML
-+230596|MTML
-+230597|Emtel
-+230598|Emtel
+230525|Cellplus
+230529|MTML
+2305421|Emtel
+2305422|Emtel
+2305423|Emtel
+2305428|Emtel
+2305429|Emtel
+230544|Emtel
+2305471|Mauritius Telecom
+2305472|Emtel
+2305473|Emtel
+2305474|Emtel
+2305475|Emtel
+2305476|Emtel
+2305477|Emtel
+2305478|Emtel
+2305479|Emtel
+230549|Emtel
+230570|Cellplus
+230571|Emtel
+230572|Emtel
+230573|Emtel
+230574|Emtel
+230575|Cellplus
+230576|Cellplus
+230577|Cellplus
+230578|Cellplus
+230579|Cellplus
+230582|Cellplus
+230585|Emtel
+230586|MTML
+2305871|MTML
+2305875|Cellplus
+2305876|Cellplus
+2305877|Cellplus
+2305878|Cellplus
+230590|Cellplus
+230591|Cellplus
+230592|Cellplus
+230593|Emtel
+230594|Cellplus
+230595|MTML
+230596|MTML
+230597|Emtel
+230598|Emtel
diff --git a/carrier/en/852.txt b/carrier/en/852.txt
index 503d697..6c31285 100644
--- a/carrier/en/852.txt
+++ b/carrier/en/852.txt
@@ -12,184 +12,265 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-852176|PCCW Mobile
-85241|CMCC HK
-852454|PCCW Mobile
-852480|3
-852481|3
-852482|1O1O / One2Free / New World Mobility
-852486|3
-852487|New World Mobility
-852488|1O1O / One2Free / New World Mobility
-852489|1O1O / One2Free / New World Mobility
-852490|PCCW Mobile
-852493|3
-852510|CMCC HK
-8525110|New World Mobility
-8525111|New World Mobility
-8525112|New World Mobility
-8525113|New World Mobility
-8525114|New World Mobility
-852512|CMCC HK
-852513|CMCC HK
-852514|CMCC HK
-852516|CMCC HK
-852517|CMCC HK
+# Prefixes from http://www.ofca.gov.hk/mobile/en/industry_focus/telecommunications/portability/numbering/index.html
+
+852510|China Mobile
+852511|New World Mobility
+852512|China Mobile
+852513|China Mobile
+852514|PCCW Mobile
+8525149|Truphone
+852516|China Mobile
+852517|China Mobile
+852518|PCCW Mobile
 852519|3
-85253|CMCC HK
+852521|1O1O / One2Free
+8525230|PCCW Mobile
+8525231|PCCW Mobile
+8525232|PCCW Mobile
+8525233|PCCW Mobile
+852524|1O1O / One2Free
+852526|China Mobile
+852530|China Mobile
+852531|China Mobile
+852532|PCCW Mobile
+852533|3
+852534|China Mobile
+852536|PCCW Mobile
+852537|China Mobile
+852538|China Unicom
+852539|China Mobile
+852540|New World Mobility
+852541|PCCW Mobile
+852542|China Mobile
+852543|1O1O / One2Free
+852544|China Mobile
+852546|3
+852547|1O1O / One2Free
+852548|China Mobile
+852549|China Mobile
+852550|SmarTone
+852551|China Mobile
+852552|1O1O / One2Free
+852553|China Mobile
+8525540|New World Mobility
+8525541|New World Mobility
+8525542|New World Mobility
+8525543|New World Mobility
+8525544|New World Mobility
+8525545|New World Mobility
+8525546|New World Mobility
+8525547|New World Mobility
+8525548|New World Mobility
+852556|3
+852557|China Mobile
+852558|PCCW Mobile
+852559|SmarTone
+852560|China Mobile
+852561|China Mobile
+852562|China Mobile
+852563|3
+852564|China Mobile
+852566|3
+852568|1O1O / One2Free
+852569|3
+8525900|PCCW Mobile
+8525901|PCCW Mobile
+8525902|PCCW Mobile
+8525903|PCCW Mobile
+8525904|PCCW Mobile
+8525905|PCCW Mobile
+852591|1O1O / One2Free
+852592|1O1O / One2Free
+852593|China Mobile
+852594|PCCW Mobile
+852596|3
+852597|3
+852598|China Mobile
+852599|1O1O / One2Free
 852601|SmarTone
-852602|New World Mobility
-852603|New World Mobility
+852602|1O1O / One2Free
+852603|1O1O / One2Free
 852604|3
-852605|1O1O / One2Free / New World Mobility
-852606|CMCC HK
+852605|1O1O / One2Free
+852606|China Mobile
 852607|3
 852608|3
-852609|CMCC HK
+852609|China Mobile
 852610|3
 852611|SmarTone
 852612|PCCW Mobile
-852613|New World Mobility
-852614|1O1O / One2Free / New World Mobility
-852615|CMCC HK
-852616|1O1O / One2Free / New World Mobility
-852617|New World Mobility
+852613|1O1O / One2Free
+852614|1O1O / One2Free
+852615|China Mobile
+852616|1O1O / One2Free
+852617|1O1O / One2Free
 852618|PCCW Mobile
 852619|3
 852620|3
-852622|CMCC HK
-852623|CMCC HK
+852621|China Mobile
+852622|China Mobile
+852623|China Mobile
+852624|CM Mobile
 852625|PCCW Mobile
 852627|3
-852628|New World Mobility
-852629|1O1O / One2Free / New World Mobility
+852628|1O1O / One2Free
+852629|1O1O / One2Free
 852630|PCCW Mobile
+852631|3
 852632|SmarTone
 852633|3
 852634|3
-852635|CMCC HK
-852637|New World Mobility
+852635|China Mobile
+852637|1O1O / One2Free
 852638|PCCW Mobile
-852639|1O1O / One2Free / New World Mobility
+852639|1O1O / One2Free
 852640|3
-852641|New World Mobility
-852642|New World Mobility
-852643|CMCC HK
+852641|1O1O / One2Free
+852642|1O1O / One2Free
+852643|China Mobile
 852644|PCCW Mobile
+8526450|CITIC
+85264510|CITIC
+85264511|CITIC
+8526452|CITIC
+85264535|CITIC
+85264536|CITIC
+85264537|CITIC
+85264538|CITIC
+85264539|CITIC
+8526454|CITIC
+8526455|CITIC
+8526456|CITIC
+8526457|CITIC
+8526458|CITIC
+8526459|CITIC
 852646|SmarTone
 852647|3
-852648|CMCC HK
+852648|China Mobile
 852649|PCCW Mobile
 852650|3
-852653|New World Mobility
-852654|New World Mobility
-852657|CMCC HK
-852659|New World Mobility
+852651|China-Hongkong Telecom
+852652|China Unicom
+852653|1O1O / One2Free
+852654|1O1O / One2Free
+852655|China Unicom
+852656|China Unicom
+852657|China Mobile
+852658|China Mobile
+852659|1O1O / One2Free
 852660|PCCW Mobile
+852661|China Unicom
 852662|PCCW Mobile
-852664|CMCC HK
-852665|1O1O / One2Free / New World Mobility
-852667|CMCC HK
+852663|China Unicom
+852664|China Mobile
+852665|1O1O / One2Free
+852667|China Mobile
 852668|3
 852669|PCCW Mobile
-852670|CMCC HK
-852671|1O1O / One2Free / New World Mobility
-852672|CMCC HK
-852673|CMCC HK
-852674|CMCC HK
-852675|New World Mobility
-852676|CMCC HK
-852677|1O1O / One2Free / New World Mobility
+852670|China Mobile
+852671|1O1O / One2Free
+852672|China Unicom
+852673|China Mobile
+852674|China Mobile
+852675|1O1O / One2Free
+852676|China Mobile
+852677|1O1O / One2Free
 852679|3
 852680|PCCW Mobile
-852682|New World Mobility
-852683|1O1O / One2Free / New World Mobility
-852684|CMCC HK
-852685|CMCC HK
-852687|CMCC HK
-852688|CMCC HK
-852689|1O1O / One2Free / New World Mobility
+852681|China Unicom
+852682|1O1O / One2Free
+852683|CM Mobile
+852684|China Mobile
+852685|China Mobile
+852687|China Mobile
+852688|China Unicom
+852689|1O1O / One2Free
 852690|3
-852691|CMCC HK
+852691|China Mobile
 852692|PCCW Mobile
-852693|CMCC HK
-852694|CMCC HK
-852695|CMCC HK
-852697|1O1O / One2Free / New World Mobility
+852693|China Mobile
+852694|China Mobile
+852695|China Mobile
+852696|CM Mobile
+852697|1O1O / One2Free
+852698|CM Mobile
+852699|China Mobile
 852901|SmarTone
-852902|1O1O / One2Free / New World Mobility
-852903|1O1O / One2Free / New World Mobility
+852902|1O1O / One2Free
+852903|1O1O / One2Free
 852904|3
-852905|1O1O / One2Free / New World Mobility
-852906|CMCC HK
-852907|1O1O / One2Free / New World Mobility
-852908|1O1O / One2Free / New World Mobility
-852909|1O1O / One2Free / New World Mobility
-852910|1O1O / One2Free / New World Mobility
+852905|CM Mobile
+852906|China Mobile
+852907|PCCW Mobile
+852908|1O1O / One2Free
+852909|1O1O / One2Free
+852910|1O1O / One2Free
 852912|3
 852913|SmarTone
-852914|1O1O / One2Free / New World Mobility
-852915|1O1O / One2Free / New World Mobility
+852914|China Mobile
+852915|1O1O / One2Free
 852916|SmarTone
 852917|SmarTone
-852918|1O1O / One2Free / New World Mobility
-852919|1O1O / One2Free / New World Mobility
-852920|CMCC HK
-852921|New World Mobility
+852918|1O1O / One2Free
+852919|1O1O / One2Free
+852920|China Mobile
+852921|1O1O / One2Free
 852922|SmarTone
 852923|PCCW Mobile
 852924|SmarTone
-852925|New World Mobility
-852926|1O1O / One2Free / New World Mobility
+852925|1O1O / One2Free
+852926|1O1O / One2Free
 852927|PCCW Mobile
 852928|3
-852930|1O1O / One2Free / New World Mobility
+852930|1O1O / One2Free
 852931|SmarTone
 852932|3
-852933|1O1O / One2Free / New World Mobility
-852934|CMCC HK
+852933|1O1O / One2Free
+852934|China Mobile
 852935|3
 852936|3
 852937|3
 852938|SmarTone
-852940|1O1O / One2Free / New World Mobility
+852940|1O1O / One2Free
 852941|3
 852942|3
 852943|SmarTone
 852944|SmarTone
 852945|SmarTone
-852946|1O1O / One2Free / New World Mobility
+852946|1O1O / One2Free
 852947|3
 852948|3
 852949|3
 852950|3
-852951|CMCC HK
+852951|China Mobile
 852952|PCCW Mobile
-852953|1O1O / One2Free / New World Mobility
+852953|1O1O / One2Free
 852954|SmarTone
-852955|New World Mobility
-852956|1O1O / One2Free / New World Mobility
+852955|1O1O / One2Free
+852956|China Unicom
 852957|3
-852958|CMCC HK
-852960|CMCC HK
-852961|1O1O / One2Free / New World Mobility
-852962|New World Mobility
+852958|China Mobile
+852960|China Mobile
+852961|1O1O / One2Free
+852962|1O1O / One2Free
 852963|3
 852964|PCCW Mobile
-852965|New World Mobility
+852965|1O1O / One2Free
 852966|SmarTone
 852967|3
 852968|SmarTone
+852969|China-Hongkong Telecom
 852970|3
-852971|CMCC HK
+852971|China Mobile
 852972|SmarTone
 852973|SmarTone
 852974|3
 852975|3
-852976|1O1O / One2Free / New World Mobility
+852976|1O1O / One2Free
 852977|PCCW Mobile
-852978|New World Mobility
-852979|CMCC HK
+852978|1O1O / One2Free
+852979|China Mobile
 852980|PCCW Mobile
 852981|3
 852982|3
@@ -197,5 +278,5 @@
 852984|SmarTone
 852985|SmarTone
 852986|SmarTone
-852987|New World Mobility
-852988|1O1O / One2Free / New World Mobility
+852987|1O1O / One2Free
+852988|1O1O / One2Free
diff --git a/geocoding/en/220.txt b/geocoding/en/220.txt
index d3d0edc..b503810 100644
--- a/geocoding/en/220.txt
+++ b/geocoding/en/220.txt
@@ -13,11 +13,47 @@
 # limitations under the License.
 
 # Generated from:
-# http://en.wikipedia.org/wiki/+220 [414318078]
+# http://www.itu.int/oth/T020200004F/en
 
 22042|Banjul
-22043|Serekunda
+22043|Bundung/Serekunda
 220441|Sanyang
-220446|Kotu
+2204410|Brufut
+2204412|Tanji
+2204416|Tujereng
+2204417|Sanyang
+2204419|Kartong
+22044195|Berending
+220446|Kotu/Senegambia
 220447|Yundum
+220448|Brikama/Kanilia
+2204480|Bondali
+2204485|Kafuta
+2204486|Gunjur
+2204487|Faraba
+2204488|Sibanor
+2204489|Bwiam
 220449|Bakau
+2205540|Kaiaf
+2205541|Kwenella
+2205542|Nyorojattaba
+2205543|Japeneh/Soma
+2205544|Bureng
+2205545|Pakaliba
+2205546|Kudang
+2205547|Jareng
+220566|Baja Kunda/Basse/Fatoto/Gambisara/Garawol/Misera/Sambakunda/Sudowol
+2205665|Kuntaur
+2205666|Numeyel
+220567|Sotuma
+2205674|Bansang
+2205676|Georgetown
+2205678|Brikama-Ba
+2205710|Barra
+2205714|Ndugukebbe
+2205720|Kerewan
+2205723|Njabakunda
+2205725|Iliasa
+2205735|Farafenni
+2205738|Ngensanjal
+2205748|Kaur