Browse Source

JS and Java Demo updates to show isPossible Reason and E.164 for all cases (#2538)

pull/2423/head
penmetsaa 5 years ago
committed by GitHub
parent
commit
0a45cfd96e
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 294 additions and 246 deletions
  1. +125
    -100
      java/demo/src/com/google/phonenumbers/PhoneNumberParserServlet.java
  2. +66
    -63
      javascript/i18n/phonenumbers/demo-compiled.js
  3. +103
    -83
      javascript/i18n/phonenumbers/demo.js

+ 125
- 100
java/demo/src/com/google/phonenumbers/PhoneNumberParserServlet.java View File

@ -28,28 +28,26 @@ import com.google.i18n.phonenumbers.PhoneNumberToTimeZonesMapper;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType;
import com.google.i18n.phonenumbers.PhoneNumberUtil.ValidationResult;
import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;
import com.google.i18n.phonenumbers.ShortNumberInfo;
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Locale;
import java.util.StringTokenizer;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringEscapeUtils;
/**
* A servlet that accepts requests that contain strings representing a phone number and a default
@ -61,10 +59,11 @@ import javax.servlet.http.HttpServletResponse;
public class PhoneNumberParserServlet extends HttpServlet {
private PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
private ShortNumberInfo shortInfo = ShortNumberInfo.getInstance();
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String phoneNumber = null;
String defaultCountry = null;
String languageCode = "en"; // Default languageCode to English if nothing is entered.
String languageCode = "en"; // Default languageCode to English if nothing is entered.
String regionCode = "";
String fileContents = null;
ServletFileUpload upload = new ServletFileUpload();
@ -106,16 +105,14 @@ public class PhoneNumberParserServlet extends HttpServlet {
if (fileContents == null || fileContents.length() == 0) {
// Redirect to a URL with the given input encoded in the query parameters.
Locale geocodingLocale = new Locale(languageCode, regionCode);
resp.sendRedirect(getPermaLinkURL(phoneNumber, defaultCountry, geocodingLocale,
false /* absoluteURL */));
resp.sendRedirect(
getPermaLinkURL(phoneNumber, defaultCountry, geocodingLocale, false /* absoluteURL */));
} else {
resp.getWriter().println(getOutputForFile(defaultCountry, fileContents));
}
}
/**
* Handle the get request to get information about a number based on query parameters.
*/
/** Handle the get request to get information about a number based on query parameters. */
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String phoneNumber = req.getParameter("number");
if (phoneNumber == null) {
@ -128,20 +125,21 @@ public class PhoneNumberParserServlet extends HttpServlet {
String geocodingParam = req.getParameter("geocodingLocale");
Locale geocodingLocale;
if (geocodingParam == null) {
geocodingLocale = ENGLISH; // Default languageCode to English if nothing is entered.
geocodingLocale = ENGLISH; // Default languageCode to English if nothing is entered.
} else {
geocodingLocale = Locale.forLanguageTag(geocodingParam);
}
resp.setContentType("text/html");
resp.setCharacterEncoding(UTF_8.name());
resp.getWriter().println(
getOutputForSingleNumber(phoneNumber, defaultCountry, geocodingLocale));
resp.getWriter()
.println(getOutputForSingleNumber(phoneNumber, defaultCountry, geocodingLocale));
}
private StringBuilder getOutputForFile(String defaultCountry, String fileContents) {
StringBuilder output = new StringBuilder(
"<HTML><HEAD><TITLE>Results generated from phone numbers in the file provided:"
+ "</TITLE></HEAD><BODY>");
StringBuilder output =
new StringBuilder(
"<HTML><HEAD><TITLE>Results generated from phone numbers in the file provided:"
+ "</TITLE></HEAD><BODY>");
output.append("<TABLE align=center border=1>");
output.append("<TH align=center>ID</TH>");
output.append("<TH align=center>Raw phone number</TH>");
@ -155,25 +153,31 @@ public class PhoneNumberParserServlet extends HttpServlet {
phoneNumberId++;
output.append("<TR>");
output.append("<TD align=center>").append(phoneNumberId).append(" </TD> \n");
output.append("<TD align=center>").append(
StringEscapeUtils.escapeHtml(numberStr)).append(" </TD> \n");
output
.append("<TD align=center>")
.append(StringEscapeUtils.escapeHtml(numberStr))
.append(" </TD> \n");
try {
PhoneNumber number = phoneUtil.parseAndKeepRawInput(numberStr, defaultCountry);
boolean isNumberValid = phoneUtil.isValidNumber(number);
String prettyFormat = isNumberValid
? phoneUtil.formatInOriginalFormat(number, defaultCountry)
: "invalid";
String internationalFormat = isNumberValid
? phoneUtil.format(number, PhoneNumberFormat.INTERNATIONAL)
: "invalid";
String prettyFormat =
isNumberValid ? phoneUtil.formatInOriginalFormat(number, defaultCountry) : "invalid";
String internationalFormat =
isNumberValid ? phoneUtil.format(number, PhoneNumberFormat.INTERNATIONAL) : "invalid";
output.append("<TD align=center>").append(
StringEscapeUtils.escapeHtml(prettyFormat)).append(" </TD> \n");
output.append("<TD align=center>").append(
StringEscapeUtils.escapeHtml(internationalFormat)).append(" </TD> \n");
output
.append("<TD align=center>")
.append(StringEscapeUtils.escapeHtml(prettyFormat))
.append(" </TD> \n");
output
.append("<TD align=center>")
.append(StringEscapeUtils.escapeHtml(internationalFormat))
.append(" </TD> \n");
} catch (NumberParseException e) {
output.append("<TD align=center colspan=2>").append(
StringEscapeUtils.escapeHtml(e.toString())).append(" </TD> \n");
output
.append("<TD align=center colspan=2>")
.append(StringEscapeUtils.escapeHtml(e.toString()))
.append(" </TD> \n");
}
output.append("</TR>");
}
@ -188,26 +192,27 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("</TR>");
}
/**
* Returns a stable URL pointing to the result page for the given input.
*/
/** Returns a stable URL pointing to the result page for the given input. */
private String getPermaLinkURL(
String phoneNumber, String defaultCountry, Locale geocodingLocale, boolean absoluteURL) {
// If absoluteURL is false, generate a relative path. Otherwise, produce an absolute URL.
StringBuilder permaLink = new StringBuilder(
absoluteURL ? "http://libphonenumber.appspot.com/phonenumberparser" : "/phonenumberparser");
StringBuilder permaLink =
new StringBuilder(
absoluteURL
? "http://libphonenumber.appspot.com/phonenumberparser"
: "/phonenumberparser");
try {
permaLink.append(
"?number=" + URLEncoder.encode(phoneNumber != null ? phoneNumber : "", UTF_8.name()));
if (defaultCountry != null && !defaultCountry.isEmpty()) {
permaLink.append("&country=" + URLEncoder.encode(defaultCountry, UTF_8.name()));
}
if (!geocodingLocale.getLanguage().equals(ENGLISH.getLanguage()) ||
!geocodingLocale.getCountry().isEmpty()) {
permaLink.append("&geocodingLocale=" +
URLEncoder.encode(geocodingLocale.toLanguageTag(), UTF_8.name()));
if (!geocodingLocale.getLanguage().equals(ENGLISH.getLanguage())
|| !geocodingLocale.getCountry().isEmpty()) {
permaLink.append(
"&geocodingLocale=" + URLEncoder.encode(geocodingLocale.toLanguageTag(), UTF_8.name()));
}
} catch(UnsupportedEncodingException e) {
} catch (UnsupportedEncodingException e) {
// UTF-8 is guaranteed in Java, so this should be impossible.
throw new AssertionError(e);
}
@ -215,21 +220,21 @@ public class PhoneNumberParserServlet extends HttpServlet {
}
private static final String NEW_ISSUE_BASE_URL =
"https://issuetracker.google.com/issues/new?component=192347&title=";
"https://issuetracker.google.com/issues/new?component=192347&title=";
/**
* Returns a link to create a new github issue with the relevant information.
*/
/** Returns a link to create a new github issue with the relevant information. */
private String getNewIssueLink(
String phoneNumber, String defaultCountry, Locale geocodingLocale) {
boolean hasDefaultCountry = !defaultCountry.isEmpty() && defaultCountry != "ZZ";
String issueTitle = "Validation issue with " + phoneNumber
+ (hasDefaultCountry ? " (" + defaultCountry + ")" : "");
String issueTitle =
"Validation issue with "
+ phoneNumber
+ (hasDefaultCountry ? " (" + defaultCountry + ")" : "");
String newIssueLink = NEW_ISSUE_BASE_URL;
try {
newIssueLink += URLEncoder.encode(issueTitle, UTF_8.name());
} catch(UnsupportedEncodingException e) {
} catch (UnsupportedEncodingException e) {
// UTF-8 is guaranteed in Java, so this should be impossible.
throw new AssertionError(e);
}
@ -243,15 +248,16 @@ public class PhoneNumberParserServlet extends HttpServlet {
private StringBuilder getOutputForSingleNumber(
String phoneNumber, String defaultCountry, Locale geocodingLocale) {
StringBuilder output = new StringBuilder("<HTML><HEAD>");
output.append(
"<LINK type=\"text/css\" rel=\"stylesheet\" href=\"/stylesheets/main.css\" />");
output.append("<LINK type=\"text/css\" rel=\"stylesheet\" href=\"/stylesheets/main.css\" />");
output.append("</HEAD>");
output.append("<BODY>");
output.append("Phone Number entered: " + StringEscapeUtils.escapeHtml(phoneNumber) + "<BR>");
output.append("defaultCountry entered: " + StringEscapeUtils.escapeHtml(defaultCountry)
+ "<BR>");
output.append("Language entered: "
+ StringEscapeUtils.escapeHtml(geocodingLocale.toLanguageTag()) + "<BR>");
output.append(
"defaultCountry entered: " + StringEscapeUtils.escapeHtml(defaultCountry) + "<BR>");
output.append(
"Language entered: "
+ StringEscapeUtils.escapeHtml(geocodingLocale.toLanguageTag())
+ "<BR>");
try {
PhoneNumber number = phoneUtil.parseAndKeepRawInput(phoneNumber, defaultCountry);
output.append("<DIV>");
@ -276,24 +282,33 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("<TABLE border=1>");
output.append("<TR><TD colspan=2>Validation Results</TD></TR>");
appendLine("Result from isPossibleNumber()", Boolean.toString(isPossible), output);
if (!isPossible) {
appendLine("Result from isPossibleNumberWithReason()",
phoneUtil.isPossibleNumberWithReason(number).toString(), output);
output.append("<TR><TD colspan=2>Note: numbers that are not possible have type " +
"UNKNOWN, an unknown region, and are considered invalid.</TD></TR>");
} else {
appendLine("Result from isValidNumber()", Boolean.toString(isNumberValid), output);
if (isNumberValid) {
if (hasDefaultCountry) {
appendLine(
"Result from isValidNumberForRegion()",
Boolean.toString(phoneUtil.isValidNumberForRegion(number, defaultCountry)),
output);
if (isPossible) {
if (phoneUtil.isPossibleNumberWithReason(number)
== ValidationResult.IS_POSSIBLE_LOCAL_ONLY) {
appendLine("Result from isPossibleNumberWithReason()", "IS_POSSIBLE_LOCAL_ONLY", output);
output.append(
"<TR><TD colspan=2>Number is considered invalid as it is "
+ "not a possible national number.</TD></TR>");
} else {
appendLine("Result from isValidNumber()", Boolean.toString(isNumberValid), output);
if (isNumberValid && hasDefaultCountry) {
appendLine(
"Result from isValidNumberForRegion()",
Boolean.toString(phoneUtil.isValidNumberForRegion(number, defaultCountry)),
output);
}
String region = phoneUtil.getRegionCodeForNumber(number);
appendLine("Phone Number region", region == null ? "" : region, output);
appendLine("Result from getNumberType()", numberType.toString(), output);
}
String region = phoneUtil.getRegionCodeForNumber(number);
appendLine("Phone Number region", region == null ? "" : region, output);
appendLine("Result from getNumberType()", numberType.toString(), output);
} else {
appendLine(
"Result from isPossibleNumberWithReason()",
phoneUtil.isPossibleNumberWithReason(number).toString(),
output);
output.append(
"<TR><TD colspan=2>Note: Numbers that are not possible have type UNKNOWN,"
+ " an unknown region, and are considered invalid.</TD></TR>");
}
output.append("</TABLE>");
output.append("</DIV>");
@ -303,20 +318,25 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("<TABLE border=1>");
output.append("<TR><TD colspan=2>Short Number Results</TD></TR>");
boolean isPossibleShort = shortInfo.isPossibleShortNumber(number);
appendLine("Result from isPossibleShortNumber()",
Boolean.toString(isPossibleShort), output);
appendLine(
"Result from isPossibleShortNumber()", Boolean.toString(isPossibleShort), output);
if (isPossibleShort) {
appendLine("Result from isValidShortNumber()",
Boolean.toString(shortInfo.isValidShortNumber(number)), output);
appendLine(
"Result from isValidShortNumber()",
Boolean.toString(shortInfo.isValidShortNumber(number)),
output);
if (hasDefaultCountry) {
boolean isPossibleShortForRegion =
shortInfo.isPossibleShortNumberForRegion(number, defaultCountry);
appendLine("Result from isPossibleShortNumberForRegion()",
Boolean.toString(isPossibleShortForRegion), output);
appendLine(
"Result from isPossibleShortNumberForRegion()",
Boolean.toString(isPossibleShortForRegion),
output);
if (isPossibleShortForRegion) {
appendLine("Result from isValidShortNumberForRegion()",
Boolean.toString(shortInfo.isValidShortNumberForRegion(number,
defaultCountry)), output);
appendLine(
"Result from isValidShortNumberForRegion()",
Boolean.toString(shortInfo.isValidShortNumberForRegion(number, defaultCountry)),
output);
}
}
}
@ -327,11 +347,12 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("<DIV>");
output.append("<TABLE border=1>");
output.append("<TR><TD colspan=2>Formatting Results</TD></TR>");
appendLine("E164 format",
isNumberValid ? phoneUtil.format(number, PhoneNumberFormat.E164) : "invalid",
output);
appendLine("Original format",
phoneUtil.formatInOriginalFormat(number, defaultCountry), output);
appendLine(
"E164 format",
isNumberValid ? phoneUtil.format(number, PhoneNumberFormat.E164) : "invalid",
output);
appendLine(
"Original format", phoneUtil.formatInOriginalFormat(number, defaultCountry), output);
appendLine("National format", phoneUtil.format(number, PhoneNumberFormat.NATIONAL), output);
appendLine(
"International format",
@ -357,8 +378,8 @@ public class PhoneNumberParserServlet extends HttpServlet {
// Note this doesn't handle supplementary characters, but it shouldn't be a big deal as
// there are no dial-pad characters in the supplementary range.
char inputChar = phoneNumber.charAt(i);
appendLine("Char entered: '" + inputChar + "' Output: ",
formatter.inputDigit(inputChar), output);
appendLine(
"Char entered: '" + inputChar + "' Output: ", formatter.inputDigit(inputChar), output);
}
output.append("</TABLE>");
output.append("</DIV>");
@ -369,8 +390,8 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("<TR><TD colspan=2>PhoneNumberOfflineGeocoder Results</TD></TR>");
appendLine(
"Location",
PhoneNumberOfflineGeocoder.getInstance().getDescriptionForNumber(
number, geocodingLocale),
PhoneNumberOfflineGeocoder.getInstance()
.getDescriptionForNumber(number, geocodingLocale),
output);
output.append("</TABLE>");
output.append("</DIV>");
@ -385,9 +406,9 @@ public class PhoneNumberParserServlet extends HttpServlet {
output.append("</TABLE>");
output.append("</DIV>");
if (numberType == PhoneNumberType.MOBILE ||
numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE ||
numberType == PhoneNumberType.PAGER) {
if (numberType == PhoneNumberType.MOBILE
|| numberType == PhoneNumberType.FIXED_LINE_OR_MOBILE
|| numberType == PhoneNumberType.PAGER) {
output.append("<DIV>");
output.append("<TABLE border=1>");
output.append("<TR><TD colspan=2>PhoneNumberToCarrierMapper Results</TD></TR>");
@ -403,10 +424,14 @@ public class PhoneNumberParserServlet extends HttpServlet {
String newIssueLink = getNewIssueLink(phoneNumber, defaultCountry, geocodingLocale);
String guidelinesLink =
"https://github.com/google/libphonenumber/blob/master/CONTRIBUTING.md";
output.append("<b style=\"color:red\">File an issue</b>: by clicking on "
+ "<a target=\"_blank\" href=\"" + newIssueLink + "\">this link</a>, I confirm that I "
+ "have read the <a target=\"_blank\" href=\"" + guidelinesLink
+ "\">contributor's guidelines</a>.");
output.append(
"<b style=\"color:red\">File an issue</b>: by clicking on "
+ "<a target=\"_blank\" href=\""
+ newIssueLink
+ "\">this link</a>, I confirm that I "
+ "have read the <a target=\"_blank\" href=\""
+ guidelinesLink
+ "\">contributor's guidelines</a>.");
} catch (NumberParseException e) {
output.append(StringEscapeUtils.escapeHtml(e.toString()));
}


+ 66
- 63
javascript/i18n/phonenumbers/demo-compiled.js View File

@ -3,15 +3,10 @@
Copyright The Closure Library Authors.
SPDX-License-Identifier: Apache-2.0
*/
var aa=this||self;function ba(a){a.da=void 0;a.ca=function(){return a.da?a.da:a.da=new a}}function h(a,b){function c(){}c.prototype=b.prototype;a.ea=b.prototype;a.prototype=new c;a.prototype.constructor=a};function l(a){if(Error.captureStackTrace)Error.captureStackTrace(this,l);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}h(l,Error);l.prototype.name="CustomError";function ca(a,b){a=a.split("%s");for(var c="",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");l.call(this,c+a[d])}h(ca,l);ca.prototype.name="AssertionError";function da(a,b){throw new ca("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};var n=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function p(a,b){return 0<=n(a,b)}function ea(a,b){a.sort(b||fa)}function fa(a,b){return a>b?1:a<b?-1:0};function ha(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b}function ia(a,b){a:{for(var c in a)if(b.call(void 0,a[c],c,a)){b=c;break a}b=void 0}return b&&a[b]};function ja(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function q(a){var b=document;return"string"===typeof a?b.getElementById(a):a};function ka(a){var b=[];ma(new na,a,b);return b.join("")}function na(){}
function ma(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(Array.isArray(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;f<b;f++)c.push(e),e=d[f],ma(a,e,c),e=",";c.push("]");return}if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();else{c.push("{");f="";for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e=b[d],"function"!=typeof e&&(c.push(f),oa(d,c),c.push(":"),ma(a,e,c),f=","));c.push("}");return}}switch(typeof b){case "string":oa(b,c);break;
case "number":c.push(isFinite(b)&&!isNaN(b)?String(b):"null");break;case "boolean":c.push(String(b));break;case "function":c.push("null");break;default:throw Error("Unknown type: "+typeof b);}}}var pa={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\u000b"},qa=/\uffff/.test("\uffff")?/[\\"\x00-\x1f\x7f-\uffff]/g:/[\\"\x00-\x1f\x7f-\xff]/g;
function oa(a,b){b.push('"',a.replace(qa,function(c){var d=pa[c];d||(d="\\u"+(c.charCodeAt(0)|65536).toString(16).substr(1),pa[c]=d);return d}),'"')};function ra(a,b){this.a=a;this.j=b.name;this.f=!!b.v;this.b=b.c;this.l=b.type;this.i=!1;switch(this.b){case sa:case ta:case ua:case va:case wa:case xa:case ya:this.i=!0}this.g=b.defaultValue}var ya=1,xa=2,sa=3,ta=4,ua=6,va=16,wa=18;function za(a,b){this.b=a;this.a={};for(a=0;a<b.length;a++){var c=b[a];this.a[c.a]=c}}function Aa(a){a=ha(a.a);ea(a,function(b,c){return b.a-c.a});return a}function Ba(a,b){return ia(a.a,function(c){return c.j==b})||null};function r(){this.b={};this.f=this.h().a;this.a=this.g=null}function Ca(a,b){for(var c in a.b){var d=Number(c);a.f[d]||b.call(a,d,a.b[c])}}r.prototype.has=function(a){return t(this,a.a)};r.prototype.get=function(a,b){return u(this,a.a,b)};r.prototype.set=function(a,b){v(this,a.a,b)};r.prototype.add=function(a,b){Da(this,a.a,b)};
function Ea(a,b){for(var c=Aa(a.h()),d=0;d<c.length;d++){var e=c[d],f=e.a;if(t(b,f)){a.a&&delete a.a[e.a];var g=11==e.b||10==e.b;if(e.f){e=w(b,f);for(var k=0;k<e.length;k++)Da(a,f,g?e[k].clone():e[k])}else e=x(b,f),g?(g=x(a,f))?Ea(g,e):v(a,f,e.clone()):v(a,f,e)}}}r.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.b={},a.a&&(a.a={}),Ea(a,this));return a};function t(a,b){return null!=a.b[b]}
function x(a,b){var c=a.b[b];if(null==c)return null;if(a.g){if(!(b in a.a)){var d=a.g,e=a.f[b];if(null!=c)if(e.f){for(var f=[],g=0;g<c.length;g++)f[g]=d.a(e,c[g]);c=f}else c=d.a(e,c);return a.a[b]=c}return a.a[b]}return c}function u(a,b,c){var d=x(a,b);return a.f[b].f?d[c||0]:d}function y(a,b){if(t(a,b))a=u(a,b,void 0);else a:{a=a.f[b];if(void 0===a.g)if(b=a.l,b===Boolean)a.g=!1;else if(b===Number)a.g=0;else if(b===String)a.g=a.i?"0":"";else{a=new b;break a}a=a.g}return a}
function w(a,b){return x(a,b)||[]}function z(a,b){return a.f[b].f?t(a,b)?a.b[b].length:0:t(a,b)?1:0}function v(a,b,c){a.b[b]=c;a.a&&(a.a[b]=c)}function Da(a,b,c){a.b[b]||(a.b[b]=[]);a.b[b].push(c);a.a&&delete a.a[b]}function Fa(a,b){delete a.b[b];a.a&&delete a.a[b]}function Ga(a,b){var c=[],d;for(d in b)0!=d&&c.push(new ra(d,b[d]));return new za(a,c)};function A(){}A.prototype.b=function(a,b){return 11==a.b||10==a.b?this.g(b):"number"!==typeof b||isFinite(b)?b:b.toString()};A.prototype.f=function(a,b){a=new a.b;this.i(a,b);return a};
A.prototype.a=function(a,b){if(11==a.b||10==a.b)return b instanceof r?b:this.f(a.l.prototype.h(),b);if(14==a.b)return"string"===typeof b&&Ha.test(b)&&(a=Number(b),0<a)?a:b;if(!a.i)return b;a=a.l;if(a===String){if("number"===typeof b)return String(b)}else if(a===Number&&"string"===typeof b&&("Infinity"===b||"-Infinity"===b||"NaN"===b||Ha.test(b)))return Number(b);return b};var Ha=/^-?[0-9]+$/;function B(a,b,c){this.j=a;this.m=b;this.l=c}h(B,A);B.prototype.g=function(a){for(var b=Aa(a.h()),c={},d=0;d<b.length;d++){var e=b[d],f=e.a;switch(this.j){case 1:f=e.j;break;case 2:f=ja(e.j.replace(/_/g,"-"))}if(a.has(e))if(e.f){var g=[];c[f]=g;for(f=0;f<z(a,e.a);f++)g.push(this.b(e,a.get(e,f)))}else c[f]=this.b(e,a.get(e))}Ca(a,function(k,m){c[k]=m});return c};B.prototype.b=function(a,b){return this.m&&8==a.b&&"boolean"===typeof b?b?1:0:B.ea.b.call(this,a,b)};
B.prototype.a=function(a,b){return 8==a.b&&"number"===typeof b?!!b:B.ea.a.call(this,a,b)};B.prototype.i=function(a,b){var c=a.h(),d;for(d in b){var e=b[d],f=!/[^0-9]/.test(d);if(f)var g=c.a[parseInt(d,10)]||null;else 2==this.j&&(d=String(d).replace(/([A-Z])/g,"-$1").toLowerCase().replace(/\-/g,"_")),g=Ba(c,d);if(g)if(g.f)for(f=0;f<e.length;f++)a.add(g,this.a(g,e[f]));else a.set(g,this.a(g,e));else f?(g=a,f=Number(d),g.b[f]=e,g.a&&delete g.a[f]):this.l||da("Failed to find field: "+d)}};function C(a,b){null!=a&&this.a.apply(this,arguments)}C.prototype.b="";C.prototype.set=function(a){this.b=""+a};C.prototype.a=function(a,b,c){this.b+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.b+=arguments[d];return this};function D(a){a.b=""}C.prototype.toString=function(){return this.b};/*
var aa=this||self;function ba(a){a.fa=void 0;a.ea=function(){return a.fa?a.fa:a.fa=new a}}function k(a,b){function c(){}c.prototype=b.prototype;a.ga=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.qa=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};function l(a,b){null!=a&&this.a.apply(this,arguments)}l.prototype.b="";l.prototype.set=function(a){this.b=""+a};l.prototype.a=function(a,b,c){this.b+=String(a);if(null!=b)for(var d=1;d<arguments.length;d++)this.b+=arguments[d];return this};function n(a){a.b=""}l.prototype.toString=function(){return this.b};function p(a){if(Error.captureStackTrace)Error.captureStackTrace(this,p);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}k(p,Error);p.prototype.name="CustomError";function ca(a,b){a=a.split("%s");for(var c="",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");p.call(this,c+a[d])}k(ca,p);ca.prototype.name="AssertionError";function da(a,b){throw new ca("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};var q=Array.prototype.indexOf?function(a,b,c){return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,c);for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};function r(a,b){return 0<=q(a,b)}function ea(a,b){a.sort(b||fa)}function fa(a,b){return a>b?1:a<b?-1:0};function ha(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b}function ia(a,b){a:{for(var c in a)if(b.call(void 0,a[c],c,a)){b=c;break a}b=void 0}return b&&a[b]};function ja(a){return String(a).replace(/\-([a-z])/g,function(b,c){return c.toUpperCase()})};function ka(a,b){this.a=a;this.j=b.name;this.f=!!b.v;this.b=b.c;this.l=b.type;this.i=!1;switch(this.b){case la:case ma:case na:case oa:case pa:case qa:case ra:this.i=!0}this.g=b.defaultValue}var ra=1,qa=2,la=3,ma=4,na=6,oa=16,pa=18;function sa(a,b){this.b=a;this.a={};for(a=0;a<b.length;a++){var c=b[a];this.a[c.a]=c}}function ta(a){a=ha(a.a);ea(a,function(b,c){return b.a-c.a});return a}function ua(a,b){return ia(a.a,function(c){return c.j==b})||null};function t(){this.b={};this.f=this.h().a;this.a=this.g=null}function va(a,b){for(var c in a.b){var d=Number(c);a.f[d]||b.call(a,d,a.b[c])}}t.prototype.has=function(a){return v(this,a.a)};t.prototype.get=function(a,b){return w(this,a.a,b)};t.prototype.set=function(a,b){x(this,a.a,b)};t.prototype.add=function(a,b){wa(this,a.a,b)};
function xa(a,b){for(var c=ta(a.h()),d=0;d<c.length;d++){var e=c[d],f=e.a;if(v(b,f)){a.a&&delete a.a[e.a];var g=11==e.b||10==e.b;if(e.f){e=y(b,f);for(var h=0;h<e.length;h++)wa(a,f,g?e[h].clone():e[h])}else e=ya(b,f),g?(g=ya(a,f))?xa(g,e):x(a,f,e.clone()):x(a,f,e)}}}t.prototype.clone=function(){var a=new this.constructor;a!=this&&(a.b={},a.a&&(a.a={}),xa(a,this));return a};function v(a,b){return null!=a.b[b]}
function ya(a,b){var c=a.b[b];if(null==c)return null;if(a.g){if(!(b in a.a)){var d=a.g,e=a.f[b];if(null!=c)if(e.f){for(var f=[],g=0;g<c.length;g++)f[g]=d.a(e,c[g]);c=f}else c=d.a(e,c);return a.a[b]=c}return a.a[b]}return c}function w(a,b,c){var d=ya(a,b);return a.f[b].f?d[c||0]:d}function z(a,b){if(v(a,b))a=w(a,b,void 0);else a:{a=a.f[b];if(void 0===a.g)if(b=a.l,b===Boolean)a.g=!1;else if(b===Number)a.g=0;else if(b===String)a.g=a.i?"0":"";else{a=new b;break a}a=a.g}return a}
function y(a,b){return ya(a,b)||[]}function A(a,b){return a.f[b].f?v(a,b)?a.b[b].length:0:v(a,b)?1:0}function x(a,b,c){a.b[b]=c;a.a&&(a.a[b]=c)}function wa(a,b,c){a.b[b]||(a.b[b]=[]);a.b[b].push(c);a.a&&delete a.a[b]}function za(a,b){delete a.b[b];a.a&&delete a.a[b]}function Aa(a,b){var c=[],d;for(d in b)0!=d&&c.push(new ka(d,b[d]));return new sa(a,c)};/*
Protocol Buffer 2 Copyright 2008 Google Inc.
All other code copyright its respective owners.
@ -29,14 +24,12 @@ B.prototype.a=function(a,b){return 8==a.b&&"number"===typeof b?!!b:B.ea.a.call(t
See the License for the specific language governing permissions and
limitations under the License.
*/
function F(){r.call(this)}h(F,r);var Ia=null;function G(){r.call(this)}h(G,r);var Ja=null;function H(){r.call(this)}h(H,r);var Ka=null;
F.prototype.h=function(){var a=Ia;a||(Ia=a=Ga(F,{0:{name:"NumberFormat",ba:"i18n.phonenumbers.NumberFormat"},1:{name:"pattern",required:!0,c:9,type:String},2:{name:"format",required:!0,c:9,type:String},3:{name:"leading_digits_pattern",v:!0,c:9,type:String},4:{name:"national_prefix_formatting_rule",c:9,type:String},6:{name:"national_prefix_optional_when_formatting",c:8,defaultValue:!1,type:Boolean},5:{name:"domestic_carrier_code_formatting_rule",c:9,type:String}}));return a};F.h=F.prototype.h;
G.prototype.h=function(){var a=Ja;a||(Ja=a=Ga(G,{0:{name:"PhoneNumberDesc",ba:"i18n.phonenumbers.PhoneNumberDesc"},2:{name:"national_number_pattern",c:9,type:String},9:{name:"possible_length",v:!0,c:5,type:Number},10:{name:"possible_length_local_only",v:!0,c:5,type:Number},6:{name:"example_number",c:9,type:String}}));return a};G.h=G.prototype.h;
H.prototype.h=function(){var a=Ka;a||(Ka=a=Ga(H,{0:{name:"PhoneMetadata",ba:"i18n.phonenumbers.PhoneMetadata"},1:{name:"general_desc",c:11,type:G},2:{name:"fixed_line",c:11,type:G},3:{name:"mobile",c:11,type:G},4:{name:"toll_free",c:11,type:G},5:{name:"premium_rate",c:11,type:G},6:{name:"shared_cost",c:11,type:G},7:{name:"personal_number",c:11,type:G},8:{name:"voip",c:11,type:G},21:{name:"pager",c:11,type:G},25:{name:"uan",c:11,type:G},27:{name:"emergency",c:11,type:G},28:{name:"voicemail",c:11,type:G},
29:{name:"short_code",c:11,type:G},30:{name:"standard_rate",c:11,type:G},31:{name:"carrier_specific",c:11,type:G},33:{name:"sms_services",c:11,type:G},24:{name:"no_international_dialling",c:11,type:G},9:{name:"id",required:!0,c:9,type:String},10:{name:"country_code",c:5,type:Number},11:{name:"international_prefix",c:9,type:String},17:{name:"preferred_international_prefix",c:9,type:String},12:{name:"national_prefix",c:9,type:String},13:{name:"preferred_extn_prefix",c:9,type:String},15:{name:"national_prefix_for_parsing",
c:9,type:String},16:{name:"national_prefix_transform_rule",c:9,type:String},18:{name:"same_mobile_and_fixed_line_pattern",c:8,defaultValue:!1,type:Boolean},19:{name:"number_format",v:!0,c:11,type:F},20:{name:"intl_number_format",v:!0,c:11,type:F},22:{name:"main_country_for_code",c:8,defaultValue:!1,type:Boolean},23:{name:"leading_digits",c:9,type:String},26:{name:"leading_zero_possible",c:8,defaultValue:!1,type:Boolean}}));return a};H.h=H.prototype.h;function La(){}h(La,A);La.prototype.f=function(a,b){a=new a.b;a.g=this;a.b=b;a.a={};return a};La.prototype.i=function(){throw Error("Unimplemented");};function I(){}h(I,La);I.prototype.g=function(a){for(var b=Aa(a.h()),c=[],d=0;d<b.length;d++){var e=b[d];if(a.has(e)){var f=e.a;if(e.f){c[f]=[];for(var g=0;g<z(a,e.a);g++)c[f][g]=this.b(e,a.get(e,g))}else c[f]=this.b(e,a.get(e))}}Ca(a,function(k,m){c[k]=m});return c};I.prototype.b=function(a,b){return 8==a.b?b?1:0:A.prototype.b.apply(this,arguments)};I.prototype.a=function(a,b){return 8==a.b?!!b:A.prototype.a.apply(this,arguments)};I.prototype.f=function(a,b){return I.ea.f.call(this,a,b)};function J(){r.call(this)}h(J,r);var Ma=null,Na={oa:0,na:1,ma:5,la:10,ka:20};
J.prototype.h=function(){var a=Ma;a||(Ma=a=Ga(J,{0:{name:"PhoneNumber",ba:"i18n.phonenumbers.PhoneNumber"},1:{name:"country_code",required:!0,c:5,type:Number},2:{name:"national_number",required:!0,c:4,type:Number},3:{name:"extension",c:9,type:String},4:{name:"italian_leading_zero",c:8,type:Boolean},8:{name:"number_of_leading_zeros",c:5,defaultValue:1,type:Number},5:{name:"raw_input",c:9,type:String},6:{name:"country_code_source",c:14,defaultValue:0,type:Na},7:{name:"preferred_domestic_carrier_code",
c:9,type:String}}));return a};J.ctor=J;J.ctor.h=J.prototype.h;/*
function B(){t.call(this)}k(B,t);var Ba=null;function C(){t.call(this)}k(C,t);var Ca=null;function D(){t.call(this)}k(D,t);var Da=null;
B.prototype.h=function(){var a=Ba;a||(Ba=a=Aa(B,{0:{name:"NumberFormat",da:"i18n.phonenumbers.NumberFormat"},1:{name:"pattern",required:!0,c:9,type:String},2:{name:"format",required:!0,c:9,type:String},3:{name:"leading_digits_pattern",v:!0,c:9,type:String},4:{name:"national_prefix_formatting_rule",c:9,type:String},6:{name:"national_prefix_optional_when_formatting",c:8,defaultValue:!1,type:Boolean},5:{name:"domestic_carrier_code_formatting_rule",c:9,type:String}}));return a};B.h=B.prototype.h;
C.prototype.h=function(){var a=Ca;a||(Ca=a=Aa(C,{0:{name:"PhoneNumberDesc",da:"i18n.phonenumbers.PhoneNumberDesc"},2:{name:"national_number_pattern",c:9,type:String},9:{name:"possible_length",v:!0,c:5,type:Number},10:{name:"possible_length_local_only",v:!0,c:5,type:Number},6:{name:"example_number",c:9,type:String}}));return a};C.h=C.prototype.h;
D.prototype.h=function(){var a=Da;a||(Da=a=Aa(D,{0:{name:"PhoneMetadata",da:"i18n.phonenumbers.PhoneMetadata"},1:{name:"general_desc",c:11,type:C},2:{name:"fixed_line",c:11,type:C},3:{name:"mobile",c:11,type:C},4:{name:"toll_free",c:11,type:C},5:{name:"premium_rate",c:11,type:C},6:{name:"shared_cost",c:11,type:C},7:{name:"personal_number",c:11,type:C},8:{name:"voip",c:11,type:C},21:{name:"pager",c:11,type:C},25:{name:"uan",c:11,type:C},27:{name:"emergency",c:11,type:C},28:{name:"voicemail",c:11,type:C},
29:{name:"short_code",c:11,type:C},30:{name:"standard_rate",c:11,type:C},31:{name:"carrier_specific",c:11,type:C},33:{name:"sms_services",c:11,type:C},24:{name:"no_international_dialling",c:11,type:C},9:{name:"id",required:!0,c:9,type:String},10:{name:"country_code",c:5,type:Number},11:{name:"international_prefix",c:9,type:String},17:{name:"preferred_international_prefix",c:9,type:String},12:{name:"national_prefix",c:9,type:String},13:{name:"preferred_extn_prefix",c:9,type:String},15:{name:"national_prefix_for_parsing",
c:9,type:String},16:{name:"national_prefix_transform_rule",c:9,type:String},18:{name:"same_mobile_and_fixed_line_pattern",c:8,defaultValue:!1,type:Boolean},19:{name:"number_format",v:!0,c:11,type:B},20:{name:"intl_number_format",v:!0,c:11,type:B},22:{name:"main_country_for_code",c:8,defaultValue:!1,type:Boolean},23:{name:"leading_digits",c:9,type:String},26:{name:"leading_zero_possible",c:8,defaultValue:!1,type:Boolean}}));return a};D.h=D.prototype.h;/*
Copyright (C) 2010 The Libphonenumber Authors
@ -52,11 +45,11 @@ c:9,type:String}}));return a};J.ctor=J;J.ctor.h=J.prototype.h;/*
See the License for the specific language governing permissions and
limitations under the License.
*/
var K={1:"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "),7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],
var E={1:"US AG AI AS BB BM BS CA DM DO GD GU JM KN KY LC MP MS PR SX TC TT VC VG VI".split(" "),7:["RU","KZ"],20:["EG"],27:["ZA"],30:["GR"],31:["NL"],32:["BE"],33:["FR"],34:["ES"],36:["HU"],39:["IT","VA"],40:["RO"],41:["CH"],43:["AT"],44:["GB","GG","IM","JE"],45:["DK"],46:["SE"],47:["NO","SJ"],48:["PL"],49:["DE"],51:["PE"],52:["MX"],53:["CU"],54:["AR"],55:["BR"],56:["CL"],57:["CO"],58:["VE"],60:["MY"],61:["AU","CC","CX"],62:["ID"],63:["PH"],64:["NZ"],65:["SG"],66:["TH"],81:["JP"],82:["KR"],84:["VN"],
86:["CN"],90:["TR"],91:["IN"],92:["PK"],93:["AF"],94:["LK"],95:["MM"],98:["IR"],211:["SS"],212:["MA","EH"],213:["DZ"],216:["TN"],218:["LY"],220:["GM"],221:["SN"],222:["MR"],223:["ML"],224:["GN"],225:["CI"],226:["BF"],227:["NE"],228:["TG"],229:["BJ"],230:["MU"],231:["LR"],232:["SL"],233:["GH"],234:["NG"],235:["TD"],236:["CF"],237:["CM"],238:["CV"],239:["ST"],240:["GQ"],241:["GA"],242:["CG"],243:["CD"],244:["AO"],245:["GW"],246:["IO"],247:["AC"],248:["SC"],249:["SD"],250:["RW"],251:["ET"],252:["SO"],
253:["DJ"],254:["KE"],255:["TZ"],256:["UG"],257:["BI"],258:["MZ"],260:["ZM"],261:["MG"],262:["RE","YT"],263:["ZW"],264:["NA"],265:["MW"],266:["LS"],267:["BW"],268:["SZ"],269:["KM"],290:["SH","TA"],291:["ER"],297:["AW"],298:["FO"],299:["GL"],350:["GI"],351:["PT"],352:["LU"],353:["IE"],354:["IS"],355:["AL"],356:["MT"],357:["CY"],358:["FI","AX"],359:["BG"],370:["LT"],371:["LV"],372:["EE"],373:["MD"],374:["AM"],375:["BY"],376:["AD"],377:["MC"],378:["SM"],380:["UA"],381:["RS"],382:["ME"],383:["XK"],385:["HR"],
386:["SI"],387:["BA"],389:["MK"],420:["CZ"],421:["SK"],423:["LI"],500:["FK"],501:["BZ"],502:["GT"],503:["SV"],504:["HN"],505:["NI"],506:["CR"],507:["PA"],508:["PM"],509:["HT"],590:["GP","BL","MF"],591:["BO"],592:["GY"],593:["EC"],594:["GF"],595:["PY"],596:["MQ"],597:["SR"],598:["UY"],599:["CW","BQ"],670:["TL"],672:["NF"],673:["BN"],674:["NR"],675:["PG"],676:["TO"],677:["SB"],678:["VU"],679:["FJ"],680:["PW"],681:["WF"],682:["CK"],683:["NU"],685:["WS"],686:["KI"],687:["NC"],688:["TV"],689:["PF"],690:["TK"],
691:["FM"],692:["MH"],800:["001"],808:["001"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],870:["001"],878:["001"],880:["BD"],881:["001"],882:["001"],883:["001"],886:["TW"],888:["001"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],979:["001"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},Oa={AC:[,[,,"(?:[01589]\\d|[46])\\d{4}",
691:["FM"],692:["MH"],800:["001"],808:["001"],850:["KP"],852:["HK"],853:["MO"],855:["KH"],856:["LA"],870:["001"],878:["001"],880:["BD"],881:["001"],882:["001"],883:["001"],886:["TW"],888:["001"],960:["MV"],961:["LB"],962:["JO"],963:["SY"],964:["IQ"],965:["KW"],966:["SA"],967:["YE"],968:["OM"],970:["PS"],971:["AE"],972:["IL"],973:["BH"],974:["QA"],975:["BT"],976:["MN"],977:["NP"],979:["001"],992:["TJ"],993:["TM"],994:["AZ"],995:["GE"],996:["KG"],998:["UZ"]},Ea={AC:[,[,,"(?:[01589]\\d|[46])\\d{4}",
,,,,,,[5,6]],[,,"6[2-467]\\d{3}",,,,"62889",,,[5]],[,,"4\\d{4}",,,,"40123",,,[5]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AC",247,"00",,,,,,,,,,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"(?:0[1-9]|[1589]\\d)\\d{4}",,,,"542011",,,[6]],,,[,,,,,,,,,[-1]]],AD:[,[,,"(?:1|6\\d)\\d{7}|[135-9]\\d{5}",,,,,,,[6,8,9]],[,,"[78]\\d{5}",,,,"712345",,,[6]],[,,"690\\d{6}|[356]\\d{5}",,,,"312345",,,[6,9]],[,,"180[02]\\d{4}",,,,"18001234",,,[8]],[,,"[19]\\d{5}",,,,"912345",,,[6]],
[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AD",376,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1 $2",["[135-9]"]],[,"(\\d{4})(\\d{4})","$1 $2",["1"]],[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["6"]]],,[,,,,,,,,,[-1]],,,[,,"1800\\d{4}",,,,,,,[8]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],AE:[,[,,"(?:[4-7]\\d|9[0-689])\\d{7}|800\\d{2,9}|[2-4679]\\d{7}",,,,,,,[5,6,7,8,9,10,11,12]],[,,"[2-4679][2-8]\\d{6}",,,,"22345678",,,[8],[7]],[,,"5[024-68]\\d{7}",,,,"501234567",,,[9]],[,,"400\\d{6}|800\\d{2,9}",,,,"800123456"],
[,,"900[02]\\d{5}",,,,"900234567",,,[9]],[,,"700[05]\\d{5}",,,,"700012345",,,[9]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"AE",971,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{2,9})","$1 $2",["60|8"]],[,"(\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[236]|[479][2-8]"],"0$1"],[,"(\\d{3})(\\d)(\\d{5})","$1 $2 $3",["[479]"]],[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["5"],"0$1"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"600[25]\\d{5}",,,,"600212345",,,[9]],,,[,,,,,,,,,[-1]]],AF:[,[,,"[2-7]\\d{8}",,,,,,,[9],[7]],[,,"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}",
@ -455,7 +448,10 @@ TL:[,[,,"7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",,,,,,,[7,8]],[,,"(?:2[1-5]|3[1-9]|4[
,,,"390123456789"],"001",882,,,,,,,,,[[,"(\\d{2})(\\d{5})","$1 $2",["16|342"]],[,"(\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[19]"]],[,"(\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["3[23]"]],[,"(\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["1"]],[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["34[57]"]],[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["34"]],[,"(\\d{2})(\\d{4,5})(\\d{5})","$1 $2 $3",["[1-3]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,"348[57]\\d{7}",,,,"34851234567",,,[11]]],883:[,[,,"51\\d{7}(?:\\d{3})?",
,,,,,,[9,12]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"51[013]0\\d{8}|5100\\d{5}",,,,"510012345"],"001",883,,,,,,,,1,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["510"]],[,"(\\d{3})(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["510"]],[,"(\\d{4})(\\d{4})(\\d{4})","$1 $2 $3",["5"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]]],888:[,[,,"\\d{11}",,,,,,,[11]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,
,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",888,,,,,,,,1,[[,"(\\d{3})(\\d{3})(\\d{5})","$1 $2 $3"]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,"\\d{11}",,,,"12345678901"],,,[,,,,,,,,,[-1]]],979:[,[,,"[1359]\\d{8}",,,,,,,[9],[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,"[1359]\\d{8}",,,,"123456789",,,,[8]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],"001",979,,,,,,,,1,[[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[1359]"]]],,[,,,,,,,,,[-1]],,,[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,,[,,,,,,,,
,[-1]]]};/*
,[-1]]]};function F(){t.call(this)}k(F,t);var Fa=null,Ga={pa:0,oa:1,na:5,ma:10,la:20};
F.prototype.h=function(){var a=Fa;a||(Fa=a=Aa(F,{0:{name:"PhoneNumber",da:"i18n.phonenumbers.PhoneNumber"},1:{name:"country_code",required:!0,c:5,type:Number},2:{name:"national_number",required:!0,c:4,type:Number},3:{name:"extension",c:9,type:String},4:{name:"italian_leading_zero",c:8,type:Boolean},8:{name:"number_of_leading_zeros",c:5,defaultValue:1,type:Number},5:{name:"raw_input",c:9,type:String},6:{name:"country_code_source",c:14,defaultValue:0,type:Ga},7:{name:"preferred_domestic_carrier_code",
c:9,type:String}}));return a};F.ctor=F;F.ctor.h=F.prototype.h;function G(){}G.prototype.b=function(a,b){return 11==a.b||10==a.b?this.g(b):"number"!==typeof b||isFinite(b)?b:b.toString()};G.prototype.f=function(a,b){a=new a.b;this.i(a,b);return a};
G.prototype.a=function(a,b){if(11==a.b||10==a.b)return b instanceof t?b:this.f(a.l.prototype.h(),b);if(14==a.b)return"string"===typeof b&&Ha.test(b)&&(a=Number(b),0<a)?a:b;if(!a.i)return b;a=a.l;if(a===String){if("number"===typeof b)return String(b)}else if(a===Number&&"string"===typeof b&&("Infinity"===b||"-Infinity"===b||"NaN"===b||Ha.test(b)))return Number(b);return b};var Ha=/^-?[0-9]+$/;function Ia(){}k(Ia,G);Ia.prototype.f=function(a,b){a=new a.b;a.g=this;a.b=b;a.a={};return a};Ia.prototype.i=function(){throw Error("Unimplemented");};function H(){}k(H,Ia);H.prototype.g=function(a){for(var b=ta(a.h()),c=[],d=0;d<b.length;d++){var e=b[d];if(a.has(e)){var f=e.a;if(e.f){c[f]=[];for(var g=0;g<A(a,e.a);g++)c[f][g]=this.b(e,a.get(e,g))}else c[f]=this.b(e,a.get(e))}}va(a,function(h,m){c[h]=m});return c};H.prototype.b=function(a,b){return 8==a.b?b?1:0:G.prototype.b.apply(this,arguments)};H.prototype.a=function(a,b){return 8==a.b?!!b:G.prototype.a.apply(this,arguments)};H.prototype.f=function(a,b){return H.ga.f.call(this,a,b)};/*
Copyright (C) 2010 The Libphonenumber Authors.
@ -471,42 +467,34 @@ TL:[,[,,"7\\d{7}|(?:[2-47]\\d|[89]0)\\d{5}",,,,,,,[7,8]],[,,"(?:2[1-5]|3[1-9]|4[
See the License for the specific language governing permissions and
limitations under the License.
*/
function Pa(){this.a={}}ba(Pa);
var L={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9"},Qa={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",
7:"7",8:"8",9:"9","+":"+","*":"*","#":"#"},Ra={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9",A:"2",
B:"2",C:"2",D:"3",E:"3",F:"3",G:"4",H:"4",I:"4",J:"5",K:"5",L:"5",M:"6",N:"6",O:"6",P:"7",Q:"7",R:"7",S:"7",T:"8",U:"8",V:"8",W:"9",X:"9",Y:"9",Z:"9"},Sa=/[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?/,Ta=/[+\uff0b]+/,M=/^[+\uff0b]+/,Ua=/([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9])/,Va=/[+\uff0b0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]/,Wa=/[\\\/] *x/,Xa=/[^0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9A-Za-z#]+$/,Ya=/(?:.*?[A-Za-z]){3}.*/,Za=/(?:;ext=([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})|[ \u00a0\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00f3))?n?|\uff45?\uff58\uff54\uff4e?|\u0434\u043e\u0431|[;,x\uff58#\uff03~\uff5e]|int|anexo|\uff49\uff4e\uff54)[:\.\uff0e]?[ \u00a0\t,-]*([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})#?|[- ]+([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,5})#)$/i,
$a=/^[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{2}$|^[+\uff0b]*(?:[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e*]*[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]){3,}[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e*A-Za-z0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]*(?:;ext=([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})|[ \u00a0\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00f3))?n?|\uff45?\uff58\uff54\uff4e?|\u0434\u043e\u0431|[;,x\uff58#\uff03~\uff5e]|int|anexo|\uff49\uff4e\uff54)[:\.\uff0e]?[ \u00a0\t,-]*([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,7})#?|[- ]+([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,5})#)?$/i,
ab=/(\$\d)/,bb=/\$NP/,cb=/\$FG/,db=/\$CC/,eb=/^\(?\$1\)?$/;function fb(a){var b=a.search(Va);0<=b?(a=a.substring(b),a=a.replace(Xa,""),b=a.search(Wa),0<=b&&(a=a.substring(0,b))):a="";return a}function gb(a){return 2>a.length?!1:N($a,a)}function hb(a){return N(Ya,a)?O(a,Ra):O(a,L)}function ib(a){var b=hb(a.toString());D(a);a.a(b)}function jb(a){return null!=a&&(1!=z(a,9)||-1!=w(a,9)[0])}
function O(a,b){for(var c=new C,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.a(d);return c.toString()}function kb(a){return 0==a.length||eb.test(a)}function lb(a){return null!=a&&isNaN(a)&&a.toUpperCase()in Oa}function P(a,b,c){if(0==u(b,2)&&t(b,5)){var d=y(b,5);if(0<d.length)return d}d=y(b,1);var e=Q(b);if(0==c)return S(d,0,e,"");if(!(d in K))return e;a=T(a,d,U(d));b=mb(b,a,c);e=nb(e,a,c);return S(d,c,e,b)}
function ob(a,b,c){var d=y(b,1),e=Q(b);if(!(d in K))return e;a=T(a,d,U(d));b=mb(b,a,2);c=nb(e,a,2,c);return S(d,2,c,b)}function T(a,b,c){return"001"==c?V(a,""+b):V(a,c)}
function pb(a,b,c){if(!lb(c))return P(a,b,1);var d=y(b,1),e=Q(b);if(!(d in K))return e;if(1==d){if(null!=c&&p(K[1],c.toUpperCase()))return d+" "+P(a,b,2)}else if(d==qb(a,c))return P(a,b,2);var f=V(a,c),g=y(f,11);c="";N(Sa,g)?c=g:t(f,17)&&(c=y(f,17));a=T(a,d,U(d));e=nb(e,a,1);b=mb(b,a,1);return 0<c.length?c+" "+d+" "+e+b:S(d,1,e,b)}
function tb(a,b,c){var d;if(d=t(b,5)){d=y(b,1);d=T(a,d,U(d));if(null==d)d=!1;else{var e=Q(b);d=null!=ub(w(d,19),e)}d=!d}if(d)return y(b,5);if(!t(b,6))return P(a,b,2);switch(u(b,6)){case 1:a=P(a,b,1);break;case 5:a=pb(a,b,c);break;case 10:a=P(a,b,1).substring(1);break;default:d=U(y(b,1));c=V(a,d);if(null==c)var f=null;else c=y(c,12),f=0==c.length?null:c=c.replace("~","");c=P(a,b,2);if(null==f||0==f.length)a=c;else{a:{e=y(b,5);e=O(e,L);if(0==e.lastIndexOf(f,0))try{var g=vb(a,wb(a,e.substring(f.length),
d,!1));break a}catch(k){}g=!1}g?a=c:(g=V(a,d),d=Q(b),g=ub(w(g,19),d),null==g?a=c:(d=y(g,4),e=d.indexOf("$1"),0>=e?a=c:(d=d.substring(0,e),d=O(d,L),0==d.length?a=c:(g=g.clone(),Fa(g,4),d=[g],g=y(b,1),c=Q(b),g in K?(a=T(a,g,U(g)),e=ub(d,c),null!=e&&(d=e.clone(),e=y(e,4),0<e.length&&(f=y(a,12),0<f.length?(e=e.replace(bb,f).replace(cb,"$1"),v(d,4,e)):Fa(d,4)),c=xb(c,d,2)),a=mb(b,a,2),a=S(g,2,c,a)):a=c))))}}b=y(b,5);null!=a&&0<b.length&&(g=O(a,Qa),c=O(b,Qa),g!=c&&(a=b));return a}
function Q(a){if(!t(a,2))return"";var b=""+u(a,2);return t(a,4)&&u(a,4)&&0<y(a,8)?Array(y(a,8)+1).join("0")+b:b}function S(a,b,c,d){switch(b){case 0:return"+"+a+c+d;case 1:return"+"+a+" "+c+d;case 3:return"tel:+"+a+"-"+c+d;default:return c+d}}function nb(a,b,c,d){b=0==w(b,20).length||2==c?w(b,19):w(b,20);b=ub(b,a);return null==b?a:xb(a,b,c,d)}
function ub(a,b){for(var c,d=a.length,e=0;e<d;++e){c=a[e];var f=z(c,3);if(0==f||0==b.search(u(c,3,f-1)))if(f=new RegExp(u(c,1)),N(f,b))return c}return null}
function xb(a,b,c,d){var e=y(b,2),f=new RegExp(u(b,1)),g=y(b,5);2==c&&null!=d&&0<d.length&&0<g.length?(b=g.replace(db,d),e=e.replace(ab,b),a=a.replace(f,e)):(b=y(b,4),a=2==c&&null!=b&&0<b.length?a.replace(f,e.replace(ab,b)):a.replace(f,e));3==c&&(a=a.replace(/^[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]+/,""),a=a.replace(/[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]+/g,
"-"));return a}function mb(a,b,c){return t(a,3)&&0!=u(a,3).length?3==c?";ext="+u(a,3):t(b,13)?u(b,13)+y(a,3):" ext. "+y(a,3):""}function yb(a,b){switch(b){case 4:return u(a,5);case 3:return u(a,4);case 1:return u(a,3);case 0:case 2:return u(a,2);case 5:return u(a,6);case 6:return u(a,8);case 7:return u(a,7);case 8:return u(a,21);case 9:return u(a,25);case 10:return u(a,28);default:return u(a,1)}}
function zb(a,b){return W(a,u(b,1))?W(a,u(b,5))?4:W(a,u(b,4))?3:W(a,u(b,6))?5:W(a,u(b,8))?6:W(a,u(b,7))?7:W(a,u(b,21))?8:W(a,u(b,25))?9:W(a,u(b,28))?10:W(a,u(b,2))?u(b,18)||W(a,u(b,3))?2:0:!u(b,18)&&W(a,u(b,3))?1:-1:-1}function V(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=Oa[b];if(null==c)return null;c=(new I).f(H.h(),c);a.a[b]=c}return c}function W(a,b){var c=a.length;return 0<z(b,9)&&-1==n(w(b,9),c)?!1:N(y(b,2),a)}function vb(a,b){var c=Ab(a,b);return Bb(a,b,c)}
function Bb(a,b,c){var d=y(b,1),e=T(a,d,c);if(null==e||"001"!=c&&d!=qb(a,c))return!1;a=Q(b);return-1!=zb(a,e)}function Ab(a,b){if(null==b)return null;var c=y(b,1);c=K[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=Q(b);for(var d,e=c.length,f=0;f<e;f++){d=c[f];var g=V(a,d);if(t(g,23)){if(0==b.search(u(g,23))){a=d;break a}}else if(-1!=zb(b,g)){a=d;break a}}a=null}return a}function U(a){a=K[a];return null==a?"ZZ":a[0]}
function qb(a,b){a=V(a,b);if(null==a)throw Error("Invalid region code: "+b);return y(a,10)}function Cb(a,b,c,d){var e=yb(c,d),f=0==z(e,9)?w(u(c,1),9):w(e,9);e=w(e,10);if(2==d)if(jb(yb(c,0)))a=yb(c,1),jb(a)&&(f=f.concat(0==z(a,9)?w(u(c,1),9):w(a,9)),ea(f),0==e.length?e=w(a,10):(e=e.concat(w(a,10)),ea(e)));else return Cb(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<n(e,b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<n(f,b,1)?0:5}
function Db(a,b){var c=Q(b);b=y(b,1);if(!(b in K))return 1;b=T(a,b,U(b));return Cb(a,c,b,-1)}function Eb(a,b){a=a.toString();if(0==a.length||"0"==a.charAt(0))return 0;for(var c,d=a.length,e=1;3>=e&&e<=d;++e)if(c=parseInt(a.substring(0,e),10),c in K)return b.a(a.substring(e)),c;return 0}
function Fb(a,b,c,d,e,f){if(0==b.length)return 0;b=new C(b);var g;null!=c&&(g=u(c,11));null==g&&(g="NonMatch");var k=b.toString();if(0==k.length)g=20;else if(M.test(k))k=k.replace(M,""),D(b),b.a(hb(k)),g=1;else{k=new RegExp(g);ib(b);g=b.toString();if(0==g.search(k)){k=g.match(k)[0].length;var m=g.substring(k).match(Ua);m&&null!=m[1]&&0<m[1].length&&"0"==O(m[1],L)?g=!1:(D(b),b.a(g.substring(k)),g=!0)}else g=!1;g=g?5:20}e&&v(f,6,g);if(20!=g){if(2>=b.b.length)throw Error("Phone number too short after IDD");
a=Eb(b,d);if(0!=a)return v(f,1,a),a;throw Error("Invalid country calling code");}if(null!=c&&(g=y(c,10),k=""+g,m=b.toString(),0==m.lastIndexOf(k,0)&&(k=new C(m.substring(k.length)),m=u(c,1),m=new RegExp(y(m,2)),Gb(k,c,null),k=k.toString(),!N(m,b.toString())&&N(m,k)||3==Cb(a,b.toString(),c,-1))))return d.a(k),e&&v(f,6,10),v(f,1,g),g;v(f,1,0);return 0}
function Gb(a,b,c){var d=a.toString(),e=d.length,f=u(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp("^(?:"+f+")");if(e=g.exec(d)){f=new RegExp(y(u(b,1),2));var k=N(f,d),m=e.length-1;b=u(b,16);if(null==b||0==b.length||null==e[m]||0==e[m].length){if(!k||N(f,d.substring(e[0].length)))null!=c&&0<m&&null!=e[m]&&c.a(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(g,b),!k||N(f,d))null!=c&&0<m&&c.a(e[1]),a.set(d)}}}
function wb(a,b,c,d){if(null==b)throw Error("The string supplied did not seem to be a phone number");if(250<b.length)throw Error("The string supplied is too long to be a phone number");var e=new C,f=b.indexOf(";phone-context=");if(0<=f){var g=f+15;if("+"==b.charAt(g)){var k=b.indexOf(";",g);0<k?e.a(b.substring(g,k)):e.a(b.substring(g))}g=b.indexOf("tel:");e.a(b.substring(0<=g?g+4:0,f))}else e.a(fb(b));f=e.toString();g=f.indexOf(";isub=");0<g&&(D(e),e.a(f.substring(0,g)));if(!gb(e.toString()))throw Error("The string supplied did not seem to be a phone number");
f=e.toString();if(!(lb(c)||null!=f&&0<f.length&&M.test(f)))throw Error("Invalid country calling code");f=new J;d&&v(f,5,b);a:{b=e.toString();g=b.search(Za);if(0<=g&&gb(b.substring(0,g))){k=b.match(Za);for(var m=k.length,E=1;E<m;++E)if(null!=k[E]&&0<k[E].length){D(e);e.a(b.substring(0,g));b=k[E];break a}}b=""}0<b.length&&v(f,3,b);g=V(a,c);b=new C;k=0;m=e.toString();try{k=Fb(a,m,g,b,d,f)}catch(R){if("Invalid country calling code"==R.message&&M.test(m)){if(m=m.replace(M,""),k=Fb(a,m,g,b,d,f),0==k)throw R;
}else throw R;}0!=k?(e=U(k),e!=c&&(g=T(a,k,e))):(ib(e),b.a(e.toString()),null!=c?(k=y(g,10),v(f,1,k)):d&&Fa(f,6));if(2>b.b.length)throw Error("The string supplied is too short to be a phone number");null!=g&&(c=new C,e=new C(b.toString()),Gb(e,g,c),a=Cb(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&v(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error("The string supplied is too short to be a phone number");if(17<a)throw Error("The string supplied is too long to be a phone number");
if(1<d.length&&"0"==d.charAt(0)){v(f,4,!0);for(a=1;a<d.length-1&&"0"==d.charAt(a);)a++;1!=a&&v(f,8,a)}v(f,2,parseInt(d,10));return f}function N(a,b){return(a="string"==typeof a?b.match("^(?:"+a+")$"):b.match(a))&&a[0].length==b.length?!0:!1};function Hb(a){this.fa=/\u2008/;this.ha="";this.m=new C;this.w="";this.j=new C;this.o=new C;this.l=!0;this.$=this.s=this.ja=!1;this.ga=Pa.ca();this.u=0;this.b=new C;this.aa=!1;this.i="";this.a=new C;this.f=[];this.ia=a;this.g=Ib(this,this.ia)}var Jb=new H;v(Jb,11,"NA");
var Kb=/^[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]*(\$\d[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]*)+$/,Lb=/[- ]/;function Ib(a,b){var c=a.ga;b=lb(b)?qb(c,b):0;a=V(a.ga,U(b));return null!=a?a:Jb}
function Mb(a){for(var b=a.f.length,c=0;c<b;++c){var d=a.f[c],e=y(d,1);if(a.w==e)return!1;var f=a;var g=d,k=y(g,1);D(f.m);var m=f;g=y(g,2);var E="999999999999999".match(k)[0];E.length<m.a.b.length?m="":(m=E.replace(new RegExp(k,"g"),g),m=m.replace(/9/g,"\u2008"));0<m.length?(f.m.a(m),f=!0):f=!1;if(f)return a.w=e,a.aa=Lb.test(u(d,4)),a.u=0,!0}return a.l=!1}
function Nb(a,b){for(var c=[],d=b.length-3,e=a.f.length,f=0;f<e;++f){var g=a.f[f];0==z(g,3)?c.push(a.f[f]):(g=u(g,3,Math.min(d,z(g,3)-1)),0==b.search(g)&&c.push(a.f[f]))}a.f=c}function Ob(a,b){a.ha=Pb(a,b);return a.ha}
function Pb(a,b){a.j.a(b);var c=b;Ua.test(c)||1==a.j.b.length&&Ta.test(c)?("+"==b?(c=b,a.o.a(b)):(c=L[b],a.o.a(c),a.a.a(c)),b=c):(a.l=!1,a.ja=!0);if(!a.l){if(!a.ja)if(Qb(a)){if(Rb(a))return Sb(a)}else if(0<a.i.length&&(b=a.a.toString(),D(a.a),a.a.a(a.i),a.a.a(b),b=a.b.toString(),c=b.lastIndexOf(a.i),D(a.b),a.b.a(b.substring(0,c))),a.i!=Tb(a))return a.b.a(" "),Sb(a);return a.j.toString()}switch(a.o.b.length){case 0:case 1:case 2:return a.j.toString();case 3:if(Qb(a))a.$=!0;else return a.i=Tb(a),Ub(a);
default:if(a.$)return Rb(a)&&(a.$=!1),a.b.toString()+a.a.toString();if(0<a.f.length){b=Vb(a,b);c=Wb(a);if(0<c.length)return c;Nb(a,a.a.toString());return Mb(a)?Xb(a):a.l?Yb(a,b):a.j.toString()}return Ub(a)}}function Sb(a){a.l=!0;a.$=!1;a.f=[];a.u=0;D(a.m);a.w="";return Ub(a)}
function Wb(a){for(var b=a.a.toString(),c=a.f.length,d=0;d<c;++d){var e=a.f[d],f=y(e,1);if((new RegExp("^(?:"+f+")$")).test(b)&&(a.aa=Lb.test(u(e,4)),e=b.replace(new RegExp(f,"g"),u(e,2)),e=Yb(a,e),O(e,Qa)==a.o))return e}return""}function Yb(a,b){var c=a.b.b.length;return a.aa&&0<c&&" "!=a.b.toString().charAt(c-1)?a.b+" "+b:a.b+b}
function Ub(a){var b=a.a.toString();if(3<=b.length){for(var c=a.s&&0==a.i.length&&0<z(a.g,20)?w(a.g,20):w(a.g,19),d=c.length,e=0;e<d;++e){var f=c[e];0<a.i.length&&kb(y(f,4))&&!u(f,6)&&!t(f,5)||(0!=a.i.length||a.s||kb(y(f,4))||u(f,6))&&Kb.test(y(f,2))&&a.f.push(f)}Nb(a,b);b=Wb(a);return 0<b.length?b:Mb(a)?Xb(a):a.j.toString()}return Yb(a,b)}function Xb(a){var b=a.a.toString(),c=b.length;if(0<c){for(var d="",e=0;e<c;e++)d=Vb(a,b.charAt(e));return a.l?Yb(a,d):a.j.toString()}return a.b.toString()}
function Tb(a){var b=a.a.toString(),c=0;if(1!=u(a.g,10))var d=!1;else d=a.a.toString(),d="1"==d.charAt(0)&&"0"!=d.charAt(1)&&"1"!=d.charAt(1);d?(c=1,a.b.a("1").a(" "),a.s=!0):t(a.g,15)&&(d=new RegExp("^(?:"+u(a.g,15)+")"),d=b.match(d),null!=d&&null!=d[0]&&0<d[0].length&&(a.s=!0,c=d[0].length,a.b.a(b.substring(0,c))));D(a.a);a.a.a(b.substring(c));return b.substring(0,c)}
function Qb(a){var b=a.o.toString(),c=new RegExp("^(?:\\+|"+u(a.g,11)+")");c=b.match(c);return null!=c&&null!=c[0]&&0<c[0].length?(a.s=!0,c=c[0].length,D(a.a),a.a.a(b.substring(c)),D(a.b),a.b.a(b.substring(0,c)),"+"!=b.charAt(0)&&a.b.a(" "),!0):!1}function Rb(a){if(0==a.a.b.length)return!1;var b=new C,c=Eb(a.a,b);if(0==c)return!1;D(a.a);a.a.a(b.toString());b=U(c);"001"==b?a.g=V(a.ga,""+c):b!=a.ia&&(a.g=Ib(a,b));a.b.a(""+c).a(" ");a.i="";return!0}
function Vb(a,b){var c=a.m.toString();if(0<=c.substring(a.u).search(a.fa)){var d=c.search(a.fa);b=c.replace(a.fa,b);D(a.m);a.m.a(b);a.u=d;return b.substring(0,a.u+1)}1==a.f.length&&(a.l=!1);a.w="";return a.j.toString()};var Zb={AC:[,[,,"9\\d\\d",,,,,,,[3]],,,[,,"9(?:11|99)",,,,"911"],[,,,,,,,,,[-1]],,,,"AC",,,,,,,,,,,,,,,,,,[,,"9(?:11|99)",,,,"911"],,[,,"9(?:11|99)",,,,"911"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,[,,,,,,,,,[-1]]],AD:[,[,,"1\\d\\d",,,,,,,[3]],,,[,,"11[0268]",,,,"110"],[,,,,,,,,,[-1]],,,,"AD",,,,,,,,,,,,,,,,,,[,,"11[0268]",,,,"110"],,[,,"11[0268]",,,,"110"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,[,,,,,,,,,[-1]]],AE:[,[,,"[149]\\d{2,3}",,,,,,,[3,4]],,,[,,"112|99[7-9]",,,,"112",,,[3]],[,,,,,,,,,[-1]],,,,"AE",,
function Ja(){this.a={}}ba(Ja);
var I={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9"},Ka={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",
7:"7",8:"8",9:"9","+":"+","*":"*","#":"#"},La={0:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9","\uff10":"0","\uff11":"1","\uff12":"2","\uff13":"3","\uff14":"4","\uff15":"5","\uff16":"6","\uff17":"7","\uff18":"8","\uff19":"9","\u0660":"0","\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u06f0":"0","\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9",A:"2",
B:"2",C:"2",D:"3",E:"3",F:"3",G:"4",H:"4",I:"4",J:"5",K:"5",L:"5",M:"6",N:"6",O:"6",P:"7",Q:"7",R:"7",S:"7",T:"8",U:"8",V:"8",W:"9",X:"9",Y:"9",Z:"9"},Ma=/[\d]+(?:[~\u2053\u223C\uFF5E][\d]+)?/,Na=/[+\uff0b]+/,J=/^[+\uff0b]+/,Oa=/([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9])/,Pa=/[+\uff0b0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]/,Qa=/[\\\/] *x/,Ra=/[^0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9A-Za-z#]+$/,Sa=/(?:.*?[A-Za-z]){3}.*/;
function K(a){return"([0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{1,"+a+"})"}
function Ta(){return";ext="+K("20")+"|[ \u00a0\\t,]*(?:e?xt(?:ensi(?:o\u0301?|\u00f3))?n?|\uff45?\uff58\uff54\uff4e?|\u0434\u043e\u0431|anexo)[:\\.\uff0e]?[ \u00a0\\t,-]*"+(K("20")+"#?|[ \u00a0\\t,]*(?:[x\uff58#\uff03~\uff5e]|int|\uff49\uff4e\uff54)[:\\.\uff0e]?[ \u00a0\\t,-]*")+(K("9")+"#?|[- ]+")+(K("6")+"#|[ \u00a0\\t]*(?:,{2}|;)[:\\.\uff0e]?[ \u00a0\\t,-]*")+(K("15")+"#?|[ \u00a0\\t]*(?:,)+[:\\.\uff0e]?[ \u00a0\\t,-]*")+(K("9")+"#?")}
var Ua=new RegExp("(?:"+Ta()+")$","i"),Va=new RegExp("^[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]{2}$|^[+\uff0b]*(?:[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e*]*[0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]){3,}[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\\[\\]/~\u2053\u223c\uff5e*A-Za-z0-9\uff10-\uff19\u0660-\u0669\u06f0-\u06f9]*(?:"+Ta()+")?$","i"),Wa=/(\$\d)/,
Xa=/\$NP/,Ya=/\$FG/,Za=/\$CC/,$a=/^\(?\$1\)?$/;function ab(a){var b=a.search(Pa);0<=b?(a=a.substring(b),a=a.replace(Ra,""),b=a.search(Qa),0<=b&&(a=a.substring(0,b))):a="";return a}function bb(a){return 2>a.length?!1:L(Va,a)}function cb(a){return L(Sa,a)?M(a,La):M(a,I)}function db(a){var b=cb(a.toString());n(a);a.a(b)}function eb(a){return null!=a&&(1!=A(a,9)||-1!=y(a,9)[0])}
function M(a,b){for(var c=new l,d,e=a.length,f=0;f<e;++f)d=a.charAt(f),d=b[d.toUpperCase()],null!=d&&c.a(d);return c.toString()}function fb(a){return 0==a.length||$a.test(a)}function gb(a){return null!=a&&isNaN(a)&&a.toUpperCase()in Ea}function O(a,b,c){if(0==w(b,2)&&v(b,5)){var d=z(b,5);if(0<d.length)return d}d=z(b,1);var e=P(b);if(0==c)return Q(d,0,e,"");if(!(d in E))return e;a=R(a,d,S(d));b=hb(b,a,c);e=ib(e,a,c);return Q(d,c,e,b)}
function jb(a,b){var c=T,d=z(a,1),e=P(a);if(!(d in E))return e;c=R(c,d,S(d));a=hb(a,c,2);b=ib(e,c,2,b);return Q(d,2,b,a)}function R(a,b,c){return"001"==c?U(a,""+b):U(a,c)}
function kb(a,b,c){if(!gb(c))return O(a,b,1);var d=z(b,1),e=P(b);if(!(d in E))return e;if(1==d){if(null!=c&&r(E[1],c.toUpperCase()))return d+" "+O(a,b,2)}else if(d==lb(a,c))return O(a,b,2);var f=U(a,c),g=z(f,11);c="";L(Ma,g)?c=g:v(f,17)&&(c=z(f,17));a=R(a,d,S(d));e=ib(e,a,1);b=hb(b,a,1);return 0<c.length?c+" "+d+" "+e+b:Q(d,1,e,b)}
function mb(a,b){var c=T,d;if(d=v(a,5)){d=z(a,1);d=R(c,d,S(d));if(null==d)d=!1;else{var e=P(a);d=null!=nb(y(d,19),e)}d=!d}if(d)return z(a,5);if(!v(a,6))return O(c,a,2);switch(w(a,6)){case 1:c=O(c,a,1);break;case 5:c=kb(c,a,b);break;case 10:c=O(c,a,1).substring(1);break;default:d=S(z(a,1));b=U(c,d);if(null==b)var f=null;else b=z(b,12),f=0==b.length?null:b=b.replace("~","");b=O(c,a,2);if(null==f||0==f.length)c=b;else{a:{e=z(a,5);e=M(e,I);if(0==e.lastIndexOf(f,0))try{var g=ob(c,pb(c,e.substring(f.length),
d,!1));break a}catch(h){}g=!1}g?c=b:(g=U(c,d),d=P(a),g=nb(y(g,19),d),null==g?c=b:(d=z(g,4),e=d.indexOf("$1"),0>=e?c=b:(d=d.substring(0,e),d=M(d,I),0==d.length?c=b:(g=g.clone(),za(g,4),d=[g],g=z(a,1),b=P(a),g in E?(c=R(c,g,S(g)),e=nb(d,b),null!=e&&(d=e.clone(),e=z(e,4),0<e.length&&(f=z(c,12),0<f.length?(e=e.replace(Xa,f).replace(Ya,"$1"),x(d,4,e)):za(d,4)),b=qb(b,d,2)),c=hb(a,c,2),c=Q(g,2,b,c)):c=b))))}}a=z(a,5);null!=c&&0<a.length&&(g=M(c,Ka),b=M(a,Ka),g!=b&&(c=a));return c}
function P(a){if(!v(a,2))return"";var b=""+w(a,2);return v(a,4)&&w(a,4)&&0<z(a,8)?Array(z(a,8)+1).join("0")+b:b}function Q(a,b,c,d){switch(b){case 0:return"+"+a+c+d;case 1:return"+"+a+" "+c+d;case 3:return"tel:+"+a+"-"+c+d;default:return c+d}}function ib(a,b,c,d){b=0==y(b,20).length||2==c?y(b,19):y(b,20);b=nb(b,a);return null==b?a:qb(a,b,c,d)}
function nb(a,b){for(var c,d=a.length,e=0;e<d;++e){c=a[e];var f=A(c,3);if(0==f||0==b.search(w(c,3,f-1)))if(f=new RegExp(w(c,1)),L(f,b))return c}return null}
function qb(a,b,c,d){var e=z(b,2),f=new RegExp(w(b,1)),g=z(b,5);2==c&&null!=d&&0<d.length&&0<g.length?(b=g.replace(Za,d),e=e.replace(Wa,b),a=a.replace(f,e)):(b=z(b,4),a=2==c&&null!=b&&0<b.length?a.replace(f,e.replace(Wa,b)):a.replace(f,e));3==c&&(a=a.replace(/^[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]+/,""),a=a.replace(/[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]+/g,
"-"));return a}function hb(a,b,c){return v(a,3)&&0!=w(a,3).length?3==c?";ext="+w(a,3):v(b,13)?w(b,13)+z(a,3):" ext. "+z(a,3):""}function rb(a,b){switch(b){case 4:return w(a,5);case 3:return w(a,4);case 1:return w(a,3);case 0:case 2:return w(a,2);case 5:return w(a,6);case 6:return w(a,8);case 7:return w(a,7);case 8:return w(a,21);case 9:return w(a,25);case 10:return w(a,28);default:return w(a,1)}}
function sb(a,b){return V(a,w(b,1))?V(a,w(b,5))?4:V(a,w(b,4))?3:V(a,w(b,6))?5:V(a,w(b,8))?6:V(a,w(b,7))?7:V(a,w(b,21))?8:V(a,w(b,25))?9:V(a,w(b,28))?10:V(a,w(b,2))?w(b,18)||V(a,w(b,3))?2:0:!w(b,18)&&V(a,w(b,3))?1:-1:-1}function U(a,b){if(null==b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=Ea[b];if(null==c)return null;c=(new H).f(D.h(),c);a.a[b]=c}return c}function V(a,b){var c=a.length;return 0<A(b,9)&&-1==q(y(b,9),c)?!1:L(z(b,2),a)}function ob(a,b){var c=ub(a,b);return vb(a,b,c)}
function vb(a,b,c){var d=z(b,1),e=R(a,d,c);if(null==e||"001"!=c&&d!=lb(a,c))return!1;a=P(b);return-1!=sb(a,e)}function ub(a,b){if(null==b)return null;var c=z(b,1);c=E[c];if(null==c)a=null;else if(1==c.length)a=c[0];else a:{b=P(b);for(var d,e=c.length,f=0;f<e;f++){d=c[f];var g=U(a,d);if(v(g,23)){if(0==b.search(w(g,23))){a=d;break a}}else if(-1!=sb(b,g)){a=d;break a}}a=null}return a}function S(a){a=E[a];return null==a?"ZZ":a[0]}
function lb(a,b){a=U(a,b);if(null==a)throw Error("Invalid region code: "+b);return z(a,10)}function wb(a,b,c,d){var e=rb(c,d),f=0==A(e,9)?y(w(c,1),9):y(e,9);e=y(e,10);if(2==d)if(eb(rb(c,0)))a=rb(c,1),eb(a)&&(f=f.concat(0==A(a,9)?y(w(c,1),9):y(a,9)),ea(f),0==e.length?e=y(a,10):(e=e.concat(y(a,10)),ea(e)));else return wb(a,b,c,1);if(-1==f[0])return 5;b=b.length;if(-1<q(e,b))return 4;c=f[0];return c==b?0:c>b?2:f[f.length-1]<b?3:-1<q(f,b,1)?0:5}
function xb(a){var b=T,c=P(a);a=z(a,1);if(!(a in E))return 1;a=R(b,a,S(a));return wb(b,c,a,-1)}function yb(a,b){a=a.toString();if(0==a.length||"0"==a.charAt(0))return 0;for(var c,d=a.length,e=1;3>=e&&e<=d;++e)if(c=parseInt(a.substring(0,e),10),c in E)return b.a(a.substring(e)),c;return 0}
function zb(a,b,c,d,e,f){if(0==b.length)return 0;b=new l(b);var g;null!=c&&(g=w(c,11));null==g&&(g="NonMatch");var h=b.toString();if(0==h.length)g=20;else if(J.test(h))h=h.replace(J,""),n(b),b.a(cb(h)),g=1;else{h=new RegExp(g);db(b);g=b.toString();if(0==g.search(h)){h=g.match(h)[0].length;var m=g.substring(h).match(Oa);m&&null!=m[1]&&0<m[1].length&&"0"==M(m[1],I)?g=!1:(n(b),b.a(g.substring(h)),g=!0)}else g=!1;g=g?5:20}e&&x(f,6,g);if(20!=g){if(2>=b.b.length)throw Error("Phone number too short after IDD");
a=yb(b,d);if(0!=a)return x(f,1,a),a;throw Error("Invalid country calling code");}if(null!=c&&(g=z(c,10),h=""+g,m=b.toString(),0==m.lastIndexOf(h,0)&&(h=new l(m.substring(h.length)),m=w(c,1),m=new RegExp(z(m,2)),Ab(h,c,null),h=h.toString(),!L(m,b.toString())&&L(m,h)||3==wb(a,b.toString(),c,-1))))return d.a(h),e&&x(f,6,10),x(f,1,g),g;x(f,1,0);return 0}
function Ab(a,b,c){var d=a.toString(),e=d.length,f=w(b,15);if(0!=e&&null!=f&&0!=f.length){var g=new RegExp("^(?:"+f+")");if(e=g.exec(d)){f=new RegExp(z(w(b,1),2));var h=L(f,d),m=e.length-1;b=w(b,16);if(null==b||0==b.length||null==e[m]||0==e[m].length){if(!h||L(f,d.substring(e[0].length)))null!=c&&0<m&&null!=e[m]&&c.a(e[1]),a.set(d.substring(e[0].length))}else if(d=d.replace(g,b),!h||L(f,d))null!=c&&0<m&&c.a(e[1]),a.set(d)}}}
function pb(a,b,c,d){if(null==b)throw Error("The string supplied did not seem to be a phone number");if(250<b.length)throw Error("The string supplied is too long to be a phone number");var e=new l,f=b.indexOf(";phone-context=");if(0<=f){var g=f+15;if("+"==b.charAt(g)){var h=b.indexOf(";",g);0<h?e.a(b.substring(g,h)):e.a(b.substring(g))}g=b.indexOf("tel:");e.a(b.substring(0<=g?g+4:0,f))}else e.a(ab(b));f=e.toString();g=f.indexOf(";isub=");0<g&&(n(e),e.a(f.substring(0,g)));if(!bb(e.toString()))throw Error("The string supplied did not seem to be a phone number");
f=e.toString();if(!(gb(c)||null!=f&&0<f.length&&J.test(f)))throw Error("Invalid country calling code");f=new F;d&&x(f,5,b);a:{b=e.toString();g=b.search(Ua);if(0<=g&&bb(b.substring(0,g))){h=b.match(Ua);for(var m=h.length,u=1;u<m;++u)if(null!=h[u]&&0<h[u].length){n(e);e.a(b.substring(0,g));b=h[u];break a}}b=""}0<b.length&&x(f,3,b);g=U(a,c);b=new l;h=0;m=e.toString();try{h=zb(a,m,g,b,d,f)}catch(N){if("Invalid country calling code"==N.message&&J.test(m)){if(m=m.replace(J,""),h=zb(a,m,g,b,d,f),0==h)throw N;
}else throw N;}0!=h?(e=S(h),e!=c&&(g=R(a,h,e))):(db(e),b.a(e.toString()),null!=c?(h=z(g,10),x(f,1,h)):d&&za(f,6));if(2>b.b.length)throw Error("The string supplied is too short to be a phone number");null!=g&&(c=new l,e=new l(b.toString()),Ab(e,g,c),a=wb(a,e.toString(),g,-1),2!=a&&4!=a&&5!=a&&(b=e,d&&0<c.toString().length&&x(f,7,c.toString())));d=b.toString();a=d.length;if(2>a)throw Error("The string supplied is too short to be a phone number");if(17<a)throw Error("The string supplied is too long to be a phone number");
if(1<d.length&&"0"==d.charAt(0)){x(f,4,!0);for(a=1;a<d.length-1&&"0"==d.charAt(a);)a++;1!=a&&x(f,8,a)}x(f,2,parseInt(d,10));return f}function L(a,b){return(a="string"==typeof a?b.match("^(?:"+a+")$"):b.match(a))&&a[0].length==b.length?!0:!1};var Bb={AC:[,[,,"9\\d\\d",,,,,,,[3]],,,[,,"9(?:11|99)",,,,"911"],[,,,,,,,,,[-1]],,,,"AC",,,,,,,,,,,,,,,,,,[,,"9(?:11|99)",,,,"911"],,[,,"9(?:11|99)",,,,"911"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,[,,,,,,,,,[-1]]],AD:[,[,,"1\\d\\d",,,,,,,[3]],,,[,,"11[0268]",,,,"110"],[,,,,,,,,,[-1]],,,,"AD",,,,,,,,,,,,,,,,,,[,,"11[0268]",,,,"110"],,[,,"11[0268]",,,,"110"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,[,,,,,,,,,[-1]]],AE:[,[,,"[149]\\d{2,3}",,,,,,,[3,4]],,,[,,"112|99[7-9]",,,,"112",,,[3]],[,,,,,,,,,[-1]],,,,"AE",,
,,,,,,,,,,,,,,,,[,,"112|99[7-9]",,,,"112",,,[3]],,[,,"112|445[16]|99[7-9]",,,,"112"],[,,,,,,,,,[-1]],[,,,,,,,,,[-1]],,[,,"445\\d",,,,"4450",,,[4]]],AF:[,[,,"[14]\\d\\d(?:\\d{2})?",,,,,,,[3,5]],,,[,,"1(?:0[02]|19)",,,,"100",,,[3]],[,,,,,,,,,[-1]],,,,"AF",,,,,,,,,,,,,,,,,,[,,"1(?:0[02]|19)",,,,"100",,,[3]],,[,,"1(?:0[02]|19)|40404",,,,"100"],[,,,,,,,,,[-1]],[,,"404\\d\\d",,,,"40400",,,[5]],,[,,"404\\d\\d",,,,"40400",,,[5]]],AG:[,[,,"[19]\\d\\d",,,,,,,[3]],,,[,,"9(?:11|99)",,,,"911"],[,,,,,,,,,[-1]],
,,,"AG",,,,,,,,,,,,,,,,,,[,,"9(?:11|99)",,,,"911"],,[,,"176|9(?:11|99)",,,,"176"],[,,,,,,,,,[-1]],[,,"176",,,,"176"],,[,,"176",,,,"176"]],AI:[,[,,"[19]\\d\\d",,,,,,,[3]],,,[,,"911",,,,"911"],[,,,,,,,,,[-1]],,,,"AI",,,,,,,,,,,,,,,,,,[,,"911",,,,"911"],,[,,"176|911",,,,"176"],[,,,,,,,,,[-1]],[,,"176",,,,"176"],,[,,"176",,,,"176"]],AL:[,[,,"[15]\\d{2,5}",,,,,,,[3,4,5,6]],,,[,,"1(?:1(?:2|6[01]\\d\\d)|2[7-9]|3[15]|41)",,,,"112",,,[3,6]],[,,"5\\d{4}",,,,"50000",,,[5]],,,,"AL",,,,,,,,,,,,,,,,,,[,,"1(?:12|2[7-9])",
,,,"112",,,[3]],,[,,"1(?:1(?:6(?:000|1(?:06|11|23))|8\\d\\d)|65\\d|89[12])|5\\d{4}|1(?:[1349]\\d|2[2-9])",,,,"110"],[,,,,,,,,,[-1]],[,,"123",,,,"123",,,[3]],,[,,"131|5\\d{4}",,,,"131",,,[3,5]]],AM:[,[,,"[148]\\d{2,4}",,,,,,,[3,4,5]],,,[,,"10[1-3]",,,,"101",,,[3]],[,,,,,,,,,[-1]],,,,"AM",,,,,,,,,,,,,,,,,,[,,"10[1-3]",,,,"101",,,[3]],,[,,"(?:1|8[1-7])\\d\\d|40404",,,,"100"],[,,,,,,,,,[-1]],[,,"404\\d\\d",,,,"40400",,,[5]],,[,,"404\\d\\d",,,,"40400",,,[5]]],AO:[,[,,"1\\d\\d",,,,,,,[3]],,,[,,"11[235]",
@ -655,10 +643,25 @@ MO:[,[,,"9\\d\\d",,,,,,,[3]],,,[,,"999",,,,"999"],[,,,,,,,,,[-1]],,,,"MO",,,,,,,
See the License for the specific language governing permissions and
limitations under the License.
*/
function $b(){this.a={}}ba($b);function ac(a){return(a=K[a])?a:[]}function bc(a,b,c){var d=ac(y(b,1));if(!p(d,c))return!1;a=cc(a,c);if(!a)return!1;b=dc(b).length;return p(w(u(a,1),9),b)}function ec(a,b){var c=ac(y(b,1));b=dc(b).length;for(var d=0;d<c.length;d++){var e=cc(a,c[d]);if(e&&(e=w(u(e,1),9),p(e,b)))return!0}return!1}function fc(a,b,c){var d=ac(y(b,1));if(!p(d,c))return!1;a=cc(a,c);if(!a)return!1;b=dc(b);c=u(a,1);if(!gc(b,c))return!1;a=u(a,29);return gc(b,a)}
function hc(a,b){var c=ac(y(b,1));a:if(0===c.length)var d=null;else if(1===c.length)d=c[0];else{d=dc(b);for(var e=0;e<c.length;e++){var f=c[e],g=cc(a,f);if(g&&gc(d,u(g,29))){d=f;break a}}d=null}return 1<c.length&&null!=d?!0:fc(a,b,d)}function cc(a,b){if(!b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=Zb[b];if(null==c)return null;c=(new I).f(H.h(),c);a.a[b]=c}return c}function dc(a){if(!t(a,2))return"";var b=""+u(a,2);return t(a,4)&&u(a,4)&&0<y(a,8)?Array(y(a,8)+1).join("0")+b:b}
function gc(a,b){return 0<w(b,9).length&&!p(w(b,9),a.length)?!1:N(y(b,2),a.toString())};function ic(){var a=q("phoneNumber").value,b=q("defaultCountry").value.toUpperCase(),c=q("carrierCode").value,d=new C;try{var e=Pa.ca();if(!lb(b)&&0<a.length&&"+"!=a.charAt(0))throw Error("Invalid country calling code");var f=wb(e,a,b,!0);d.a("****Parsing Result:****\n");d.a(ka((new B(1)).g(f)));d.a("\n\n****Validation Results:****");var g=Db(e,f);var k=0==g||4==g;d.a("\nResult from isPossibleNumber(): ");d.a(k);if(k){var m=vb(e,f);d.a("\nResult from isValidNumber(): ");d.a(m);m&&b&&"ZZ"!=b&&(d.a("\nResult from isValidNumberForRegion(): "),
d.a(Bb(e,f,b)));d.a("\nPhone Number region: ");d.a(Ab(e,f));d.a("\nResult from getNumberType(): ");var E=Ab(e,f),R=T(e,y(f,1),E);if(null==R)var rb=-1;else{var jc=Q(f);rb=zb(jc,R)}switch(rb){case 0:d.a("FIXED_LINE");break;case 1:d.a("MOBILE");break;case 2:d.a("FIXED_LINE_OR_MOBILE");break;case 3:d.a("TOLL_FREE");break;case 4:d.a("PREMIUM_RATE");break;case 5:d.a("SHARED_COST");break;case 6:d.a("VOIP");break;case 7:d.a("PERSONAL_NUMBER");break;case 8:d.a("PAGER");break;case 9:d.a("UAN");break;case -1:d.a("UNKNOWN")}}else{d.a("\nResult from isPossibleNumberWithReason(): ");
switch(Db(e,f)){case 1:d.a("INVALID_COUNTRY_CODE");break;case 2:d.a("TOO_SHORT");break;case 3:d.a("TOO_LONG")}d.a("\nNote: numbers that are not possible have type UNKNOWN, an unknown region, and are considered invalid.")}var la=$b.ca();d.a("\n\n****ShortNumberInfo Results:****");d.a("\nResult from isPossibleShortNumber: ");d.a(ec(la,f));d.a("\nResult from isValidShortNumber: ");d.a(hc(la,f));d.a("\nResult from isPossibleShortNumberForRegion: ");d.a(bc(la,f,b));d.a("\nResult from isValidShortNumberForRegion: ");
d.a(fc(la,f,b));d.a("\n\n****Formatting Results:**** ");d.a("\nE164 format: ");d.a(m?P(e,f,0):"invalid");d.a("\nOriginal format: ");d.a(tb(e,f,b));d.a("\nNational format: ");d.a(P(e,f,2));d.a("\nInternational format: ");d.a(m?P(e,f,1):"invalid");d.a("\nOut-of-country format from US: ");d.a(m?pb(e,f,"US"):"invalid");d.a("\nOut-of-country format from Switzerland: ");d.a(m?pb(e,f,"CH"):"invalid");0<c.length&&(d.a("\nNational format with carrier code: "),d.a(ob(e,f,c)));d.a("\n\n****AsYouTypeFormatter Results****");
var kc=new Hb(b),lc=a.length;for(b=0;b<lc;++b){var sb=a.charAt(b);d.a("\nChar entered: ");d.a(sb);d.a(" Output: ");d.a(Ob(kc,sb))}}catch(mc){d.a("\n"+mc.toString())}q("output").value=d.toString();return!1}var X=["phoneNumberParser"],Y=aa;X[0]in Y||"undefined"==typeof Y.execScript||Y.execScript("var "+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===ic?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=ic;})();
function Cb(){this.a={}}ba(Cb);function Db(a){return(a=E[a])?a:[]}function Eb(a,b,c){var d=Db(z(b,1));if(!r(d,c))return!1;a=Fb(a,c);if(!a)return!1;b=Gb(b).length;return r(y(w(a,1),9),b)}function Hb(a,b){var c=Db(z(b,1));b=Gb(b).length;for(var d=0;d<c.length;d++){var e=Fb(a,c[d]);if(e&&(e=y(w(e,1),9),r(e,b)))return!0}return!1}function Ib(a,b,c){var d=Db(z(b,1));if(!r(d,c))return!1;a=Fb(a,c);if(!a)return!1;b=Gb(b);c=w(a,1);if(!Jb(b,c))return!1;a=w(a,29);return Jb(b,a)}
function Kb(a,b){var c=Db(z(b,1));a:if(0===c.length)var d=null;else if(1===c.length)d=c[0];else{d=Gb(b);for(var e=0;e<c.length;e++){var f=c[e],g=Fb(a,f);if(g&&Jb(d,w(g,29))){d=f;break a}}d=null}return 1<c.length&&null!=d?!0:Ib(a,b,d)}function Fb(a,b){if(!b)return null;b=b.toUpperCase();var c=a.a[b];if(null==c){c=Bb[b];if(null==c)return null;c=(new H).f(D.h(),c);a.a[b]=c}return c}function Gb(a){if(!v(a,2))return"";var b=""+w(a,2);return v(a,4)&&w(a,4)&&0<z(a,8)?Array(z(a,8)+1).join("0")+b:b}
function Jb(a,b){return 0<y(b,9).length&&!r(y(b,9),a.length)?!1:L(z(b,2),a.toString())};function Lb(a){this.ha=/\u2008/;this.ia="";this.m=new l;this.$="";this.j=new l;this.o=new l;this.l=!0;this.aa=this.s=this.ka=!1;this.ba=Ja.ea();this.u=0;this.b=new l;this.ca=!1;this.i="";this.a=new l;this.f=[];this.ja=a;this.g=Mb(this,this.ja)}var Nb=new D;x(Nb,11,"NA");
var Ob=/^[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]*(\$\d[-x\u2010-\u2015\u2212\u30fc\uff0d-\uff0f \u00a0\u00ad\u200b\u2060\u3000()\uff08\uff09\uff3b\uff3d.\[\]/~\u2053\u223c\uff5e]*)+$/,Pb=/[- ]/;function Mb(a,b){var c=a.ba;b=gb(b)?lb(c,b):0;a=U(a.ba,S(b));return null!=a?a:Nb}
function Qb(a){for(var b=a.f.length,c=0;c<b;++c){var d=a.f[c],e=z(d,1);if(a.$==e)return!1;var f=a;var g=d,h=z(g,1);n(f.m);var m=f;g=z(g,2);var u="999999999999999".match(h)[0];u.length<m.a.b.length?m="":(m=u.replace(new RegExp(h,"g"),g),m=m.replace(/9/g,"\u2008"));0<m.length?(f.m.a(m),f=!0):f=!1;if(f)return a.$=e,a.ca=Pb.test(w(d,4)),a.u=0,!0}return a.l=!1}
function Rb(a,b){for(var c=[],d=b.length-3,e=a.f.length,f=0;f<e;++f){var g=a.f[f];0==A(g,3)?c.push(a.f[f]):(g=w(g,3,Math.min(d,A(g,3)-1)),0==b.search(g)&&c.push(a.f[f]))}a.f=c}function Sb(a,b){a.ia=Tb(a,b);return a.ia}
function Tb(a,b){a.j.a(b);var c=b;Oa.test(c)||1==a.j.b.length&&Na.test(c)?("+"==b?(c=b,a.o.a(b)):(c=I[b],a.o.a(c),a.a.a(c)),b=c):(a.l=!1,a.ka=!0);if(!a.l){if(!a.ka)if(Ub(a)){if(Vb(a))return Wb(a)}else if(0<a.i.length&&(b=a.a.toString(),n(a.a),a.a.a(a.i),a.a.a(b),b=a.b.toString(),c=b.lastIndexOf(a.i),n(a.b),a.b.a(b.substring(0,c))),a.i!=Xb(a))return a.b.a(" "),Wb(a);return a.j.toString()}switch(a.o.b.length){case 0:case 1:case 2:return a.j.toString();case 3:if(Ub(a))a.aa=!0;else return a.i=Xb(a),Yb(a);
default:if(a.aa)return Vb(a)&&(a.aa=!1),a.b.toString()+a.a.toString();if(0<a.f.length){b=Zb(a,b);c=$b(a);if(0<c.length)return c;Rb(a,a.a.toString());return Qb(a)?ac(a):a.l?bc(a,b):a.j.toString()}return Yb(a)}}function Wb(a){a.l=!0;a.aa=!1;a.f=[];a.u=0;n(a.m);a.$="";return Yb(a)}
function $b(a){for(var b=a.a.toString(),c=a.f.length,d=0;d<c;++d){var e=a.f[d],f=z(e,1);if((new RegExp("^(?:"+f+")$")).test(b)&&(a.ca=Pb.test(w(e,4)),e=b.replace(new RegExp(f,"g"),w(e,2)),e=bc(a,e),M(e,Ka)==a.o))return e}return""}function bc(a,b){var c=a.b.b.length;return a.ca&&0<c&&" "!=a.b.toString().charAt(c-1)?a.b+" "+b:a.b+b}
function Yb(a){var b=a.a.toString();if(3<=b.length){for(var c=a.s&&0==a.i.length&&0<A(a.g,20)?y(a.g,20):y(a.g,19),d=c.length,e=0;e<d;++e){var f=c[e];0<a.i.length&&fb(z(f,4))&&!w(f,6)&&!v(f,5)||(0!=a.i.length||a.s||fb(z(f,4))||w(f,6))&&Ob.test(z(f,2))&&a.f.push(f)}Rb(a,b);b=$b(a);return 0<b.length?b:Qb(a)?ac(a):a.j.toString()}return bc(a,b)}function ac(a){var b=a.a.toString(),c=b.length;if(0<c){for(var d="",e=0;e<c;e++)d=Zb(a,b.charAt(e));return a.l?bc(a,d):a.j.toString()}return a.b.toString()}
function Xb(a){var b=a.a.toString(),c=0;if(1!=w(a.g,10))var d=!1;else d=a.a.toString(),d="1"==d.charAt(0)&&"0"!=d.charAt(1)&&"1"!=d.charAt(1);d?(c=1,a.b.a("1").a(" "),a.s=!0):v(a.g,15)&&(d=new RegExp("^(?:"+w(a.g,15)+")"),d=b.match(d),null!=d&&null!=d[0]&&0<d[0].length&&(a.s=!0,c=d[0].length,a.b.a(b.substring(0,c))));n(a.a);a.a.a(b.substring(c));return b.substring(0,c)}
function Ub(a){var b=a.o.toString(),c=new RegExp("^(?:\\+|"+w(a.g,11)+")");c=b.match(c);return null!=c&&null!=c[0]&&0<c[0].length?(a.s=!0,c=c[0].length,n(a.a),a.a.a(b.substring(c)),n(a.b),a.b.a(b.substring(0,c)),"+"!=b.charAt(0)&&a.b.a(" "),!0):!1}function Vb(a){if(0==a.a.b.length)return!1;var b=new l,c=yb(a.a,b);if(0==c)return!1;n(a.a);a.a.a(b.toString());b=S(c);"001"==b?a.g=U(a.ba,""+c):b!=a.ja&&(a.g=Mb(a,b));a.b.a(""+c).a(" ");a.i="";return!0}
function Zb(a,b){var c=a.m.toString();if(0<=c.substring(a.u).search(a.ha)){var d=c.search(a.ha);b=c.replace(a.ha,b);n(a.m);a.m.a(b);a.u=d;return b.substring(0,a.u+1)}1==a.f.length&&(a.l=!1);a.$="";return a.j.toString()};function W(a,b,c){this.j=a;this.m=b;this.l=c}k(W,G);W.prototype.g=function(a){for(var b=ta(a.h()),c={},d=0;d<b.length;d++){var e=b[d],f=e.a;switch(this.j){case 1:f=e.j;break;case 2:f=ja(e.j.replace(/_/g,"-"))}if(a.has(e))if(e.f){var g=[];c[f]=g;for(f=0;f<A(a,e.a);f++)g.push(this.b(e,a.get(e,f)))}else c[f]=this.b(e,a.get(e))}va(a,function(h,m){c[h]=m});return c};W.prototype.b=function(a,b){return this.m&&8==a.b&&"boolean"===typeof b?b?1:0:W.ga.b.call(this,a,b)};
W.prototype.a=function(a,b){return 8==a.b&&"number"===typeof b?!!b:W.ga.a.call(this,a,b)};W.prototype.i=function(a,b){var c=a.h(),d;for(d in b){var e=b[d],f=!/[^0-9]/.test(d);if(f)var g=c.a[parseInt(d,10)]||null;else 2==this.j&&(d=String(d).replace(/([A-Z])/g,"-$1").toLowerCase().replace(/\-/g,"_")),g=ua(c,d);if(g)if(g.f)for(f=0;f<e.length;f++)a.add(g,this.a(g,e[f]));else a.set(g,this.a(g,e));else f?(g=a,f=Number(d),g.b[f]=e,g.a&&delete g.a[f]):this.l||da("Failed to find field: "+d)}};function cc(a){var b=[];dc(new ec,a,b);return b.join("")}function ec(){}
function dc(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(Array.isArray(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;f<b;f++)c.push(e),e=d[f],dc(a,e,c),e=",";c.push("]");return}if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();else{c.push("{");f="";for(d in b)Object.prototype.hasOwnProperty.call(b,d)&&(e=b[d],"function"!=typeof e&&(c.push(f),fc(d,c),c.push(":"),dc(a,e,c),f=","));c.push("}");return}}switch(typeof b){case "string":fc(b,c);break;
case "number":c.push(isFinite(b)&&!isNaN(b)?String(b):"null");break;case "boolean":c.push(String(b));break;case "function":c.push("null");break;default:throw Error("Unknown type: "+typeof b);}}}var gc={'"':'\\"',"\\":"\\\\","/":"\\/","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\u000b"},hc=/\uffff/.test("\uffff")?/[\\"\x00-\x1f\x7f-\uffff]/g:/[\\"\x00-\x1f\x7f-\xff]/g;
function fc(a,b){b.push('"',a.replace(hc,function(c){var d=gc[c];d||(d="\\u"+(c.charCodeAt(0)|65536).toString(16).substr(1),gc[c]=d);return d}),'"')};function ic(a){var b=document;return"string"===typeof a?b.getElementById(a):a};var T=Ja.ea();function jc(a){var b=T,c=ub(b,a);b=R(b,z(a,1),c);null==b?a=-1:(a=P(a),a=sb(a,b));switch(a){case 0:return"FIXED_LINE";case 1:return"MOBILE";case 2:return"FIXED_LINE_OR_MOBILE";case 3:return"TOLL_FREE";case 4:return"PREMIUM_RATE";case 5:return"SHARED_COST";case 6:return"VOIP";case 7:return"PERSONAL_NUMBER";case 8:return"PAGER";case 9:return"UAN";case -1:return"UNKNOWN"}}
function kc(){var a=ic("phoneNumber").value,b=ic("defaultCountry").value.toUpperCase(),c=ic("carrierCode").value,d=new l;try{var e=T;if(!gb(b)&&0<a.length&&"+"!=a.charAt(0))throw Error("Invalid country calling code");var f=pb(e,a,b,!0);d.a("****Parsing Result:****\n");d.a(cc((new W(1)).g(f)));d.a("\n\n****Validation Results:****");var g=xb(f);var h=0==g||4==g;d.a("\nResult from isPossibleNumber(): ");d.a(h);var m=xb(f);e=b&&"ZZ"!=b;if(h)if(4==m)d.a("\nResult from isPossibleNumberWithReason(): "),
d.a("IS_POSSIBLE_LOCAL_ONLY"),d.a("\nNumber is considered invalid as it is not a possible national number.");else{var u=ob(T,f);d.a("\nResult from isValidNumber(): ");d.a(u);u&&e&&(d.a("\nResult from isValidNumberForRegion(): "),d.a(vb(T,f,b)));d.a("\nPhone Number region: ");d.a(ub(T,f));d.a("\nResult from getNumberType(): ");d.a(jc(f))}else{d.a("\nResult from isPossibleNumberWithReason(): ");switch(m){case 1:d.a("INVALID_COUNTRY_CODE");break;case 2:d.a("TOO_SHORT");break;case 3:d.a("TOO_LONG");break;
case 5:d.a("INVALID_LENGTH")}d.a("\nNote: Numbers that are not possible have type UNKNOWN, an unknown region, and are considered invalid.")}if(!u){var N=Cb.ea();d.a("\n\n****ShortNumberInfo Results:****");d.a("\nResult from isPossibleShortNumber: ");d.a(Hb(N,f));d.a("\nResult from isValidShortNumber: ");d.a(Kb(N,f));e&&(d.a("\nResult from isPossibleShortNumberForRegion: "),d.a(Eb(N,f,b)),d.a("\nResult from isValidShortNumberForRegion: "),d.a(Ib(N,f,b)))}d.a("\n\n****Formatting Results:**** ");d.a("\nE164 format: ");
d.a(u?O(T,f,0):"invalid");d.a("\nOriginal format: ");d.a(mb(f,b));d.a("\nNational format: ");d.a(O(T,f,2));d.a("\nInternational format: ");d.a(u?O(T,f,1):"invalid");d.a("\nOut-of-country format from US: ");d.a(u?kb(T,f,"US"):"invalid");d.a("\nOut-of-country format from Switzerland: ");d.a(u?kb(T,f,"CH"):"invalid");0<c.length&&(d.a("\nNational format with carrier code: "),d.a(jb(f,c)));d.a("\n\n****AsYouTypeFormatter Results****");var lc=new Lb(b),mc=a.length;for(b=0;b<mc;++b){var tb=a.charAt(b);d.a("\nChar entered: ");
d.a(tb);d.a(" Output: ");d.a(Sb(lc,tb))}}catch(nc){d.a("\n"+nc.toString())}ic("output").value=d.toString();return!1}var X=["phoneNumberParser"],Y=aa;X[0]in Y||"undefined"==typeof Y.execScript||Y.execScript("var "+X[0]);for(var Z;X.length&&(Z=X.shift());)X.length||void 0===kc?Y[Z]&&Y[Z]!==Object.prototype[Z]?Y=Y[Z]:Y=Y[Z]={}:Y[Z]=kc;})();

+ 103
- 83
javascript/i18n/phonenumbers/demo.js View File

@ -34,6 +34,13 @@ goog.require('i18n.phonenumbers.PhoneNumberUtil.ValidationResult');
goog.require('i18n.phonenumbers.ShortNumberInfo');
/**
* @const
* @type {!i18n.phonenumbers.PhoneNumberUtil}
* @private
*/
var phoneUtil_ = i18n.phonenumbers.PhoneNumberUtil.getInstance();
function phoneNumberParser() {
var $ = goog.dom.getElement;
var phoneNumber = $('phoneNumber').value;
@ -41,118 +48,104 @@ function phoneNumberParser() {
var carrierCode = $('carrierCode').value;
var output = new goog.string.StringBuffer();
try {
var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance();
var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode);
var number = phoneUtil_.parseAndKeepRawInput(phoneNumber, regionCode);
output.append('****Parsing Result:****\n');
output.append(goog.json.serialize(new goog.proto2.ObjectSerializer(
goog.proto2.ObjectSerializer.KeyOption.NAME).serialize(number)));
output.append('\n\n****Validation Results:****');
var isPossible = phoneUtil.isPossibleNumber(number);
var isPossible = phoneUtil_.isPossibleNumber(number);
output.append('\nResult from isPossibleNumber(): ');
output.append(isPossible);
if (!isPossible) {
var validationResult = i18n.phonenumbers.PhoneNumberUtil.ValidationResult;
var isPossibleReason = phoneUtil_.isPossibleNumberWithReason(number)
var hasRegionCode = regionCode && regionCode != 'ZZ';
if (isPossible) {
// Checking as isValid() fails if possible local only.
if (isPossibleReason == validationResult.IS_POSSIBLE_LOCAL_ONLY) {
output.append('\nResult from isPossibleNumberWithReason(): ');
output.append('IS_POSSIBLE_LOCAL_ONLY');
output.append(
'\nNumber is considered invalid as it is ' +
'not a possible national number.');
} else {
var isNumberValid = phoneUtil_.isValidNumber(number);
output.append('\nResult from isValidNumber(): ');
output.append(isNumberValid);
if (isNumberValid && hasRegionCode) {
output.append('\nResult from isValidNumberForRegion(): ');
output.append(phoneUtil_.isValidNumberForRegion(number, regionCode));
}
output.append('\nPhone Number region: ');
output.append(phoneUtil_.getRegionCodeForNumber(number));
output.append('\nResult from getNumberType(): ');
output.append(getNumberTypeString(number));
}
} else {
output.append('\nResult from isPossibleNumberWithReason(): ');
var PNV = i18n.phonenumbers.PhoneNumberUtil.ValidationResult;
switch (phoneUtil.isPossibleNumberWithReason(number)) {
case PNV.INVALID_COUNTRY_CODE:
switch (isPossibleReason) {
case validationResult.INVALID_COUNTRY_CODE:
output.append('INVALID_COUNTRY_CODE');
break;
case PNV.TOO_SHORT:
case validationResult.TOO_SHORT:
output.append('TOO_SHORT');
break;
case PNV.TOO_LONG:
case validationResult.TOO_LONG:
output.append('TOO_LONG');
break;
case validationResult.INVALID_LENGTH:
output.append('INVALID_LENGTH');
break;
}
// IS_POSSIBLE shouldn't happen, since we only call this if _not_
// possible.
output.append('\nNote: numbers that are not possible have type ' +
'UNKNOWN, an unknown region, and are considered invalid.');
} else {
var isNumberValid = phoneUtil.isValidNumber(number);
output.append('\nResult from isValidNumber(): ');
output.append(isNumberValid);
if (isNumberValid && regionCode && regionCode != 'ZZ') {
output.append('\nResult from isValidNumberForRegion(): ');
output.append(phoneUtil.isValidNumberForRegion(number, regionCode));
}
output.append('\nPhone Number region: ');
output.append(phoneUtil.getRegionCodeForNumber(number));
output.append('\nResult from getNumberType(): ');
var PNT = i18n.phonenumbers.PhoneNumberType;
switch (phoneUtil.getNumberType(number)) {
case PNT.FIXED_LINE:
output.append('FIXED_LINE');
break;
case PNT.MOBILE:
output.append('MOBILE');
break;
case PNT.FIXED_LINE_OR_MOBILE:
output.append('FIXED_LINE_OR_MOBILE');
break;
case PNT.TOLL_FREE:
output.append('TOLL_FREE');
break;
case PNT.PREMIUM_RATE:
output.append('PREMIUM_RATE');
break;
case PNT.SHARED_COST:
output.append('SHARED_COST');
break;
case PNT.VOIP:
output.append('VOIP');
break;
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;
output.append(
'\nNote: Numbers that are not possible have type UNKNOWN,' +
' an unknown region, and are considered invalid.');
}
if (!isNumberValid) {
var shortInfo = i18n.phonenumbers.ShortNumberInfo.getInstance();
output.append('\n\n****ShortNumberInfo Results:****');
output.append('\nResult from isPossibleShortNumber: ');
output.append(shortInfo.isPossibleShortNumber(number));
output.append('\nResult from isValidShortNumber: ');
output.append(shortInfo.isValidShortNumber(number));
if (hasRegionCode) {
output.append('\nResult from isPossibleShortNumberForRegion: ');
output.append(
shortInfo.isPossibleShortNumberForRegion(number, regionCode));
output.append('\nResult from isValidShortNumberForRegion: ');
output.append(
shortInfo.isValidShortNumberForRegion(number, regionCode));
}
}
var shortInfo = i18n.phonenumbers.ShortNumberInfo.getInstance();
output.append('\n\n****ShortNumberInfo Results:****');
output.append('\nResult from isPossibleShortNumber: ');
output.append(shortInfo.isPossibleShortNumber(number));
output.append('\nResult from isValidShortNumber: ');
output.append(shortInfo.isValidShortNumber(number));
output.append('\nResult from isPossibleShortNumberForRegion: ');
output.append(shortInfo.isPossibleShortNumberForRegion(number, regionCode));
output.append('\nResult from isValidShortNumberForRegion: ');
output.append(shortInfo.isValidShortNumberForRegion(number, regionCode));
var PNF = i18n.phonenumbers.PhoneNumberFormat;
output.append('\n\n****Formatting Results:**** ');
output.append('\nE164 format: ');
output.append(isNumberValid ?
phoneUtil.format(number, PNF.E164) :
'invalid');
output.append(
isNumberValid ? phoneUtil_.format(number, PNF.E164) : 'invalid');
output.append('\nOriginal format: ');
output.append(phoneUtil.formatInOriginalFormat(number, regionCode));
output.append(phoneUtil_.formatInOriginalFormat(number, regionCode));
output.append('\nNational format: ');
output.append(phoneUtil.format(number, PNF.NATIONAL));
output.append(phoneUtil_.format(number, PNF.NATIONAL));
output.append('\nInternational format: ');
output.append(isNumberValid ?
phoneUtil.format(number, PNF.INTERNATIONAL) :
'invalid');
output.append(
isNumberValid ? phoneUtil_.format(number, PNF.INTERNATIONAL) :
'invalid');
output.append('\nOut-of-country format from US: ');
output.append(isNumberValid ?
phoneUtil.formatOutOfCountryCallingNumber(number, 'US') :
'invalid');
output.append(
isNumberValid ?
phoneUtil_.formatOutOfCountryCallingNumber(number, 'US') :
'invalid');
output.append('\nOut-of-country format from Switzerland: ');
output.append(isNumberValid ?
phoneUtil.formatOutOfCountryCallingNumber(number, 'CH') :
'invalid');
output.append(
isNumberValid ?
phoneUtil_.formatOutOfCountryCallingNumber(number, 'CH') :
'invalid');
if (carrierCode.length > 0) {
output.append('\nNational format with carrier code: ');
output.append(phoneUtil.formatNationalNumberWithCarrierCode(number,
carrierCode));
output.append(
phoneUtil_.formatNationalNumberWithCarrierCode(number, carrierCode));
}
output.append('\n\n****AsYouTypeFormatter Results****');
var formatter = new i18n.phonenumbers.AsYouTypeFormatter(regionCode);
@ -171,4 +164,31 @@ function phoneNumberParser() {
return false;
}
function getNumberTypeString(number) {
switch (phoneUtil_.getNumberType(number)) {
case i18n.phonenumbers.PhoneNumberType.FIXED_LINE:
return 'FIXED_LINE';
case i18n.phonenumbers.PhoneNumberType.MOBILE:
return 'MOBILE'
case i18n.phonenumbers.PhoneNumberType.FIXED_LINE_OR_MOBILE:
return 'FIXED_LINE_OR_MOBILE';
case i18n.phonenumbers.PhoneNumberType.TOLL_FREE:
return 'TOLL_FREE';
case i18n.phonenumbers.PhoneNumberType.PREMIUM_RATE:
return 'PREMIUM_RATE';
case i18n.phonenumbers.PhoneNumberType.SHARED_COST:
return 'SHARED_COST';
case i18n.phonenumbers.PhoneNumberType.VOIP:
return 'VOIP';
case i18n.phonenumbers.PhoneNumberType.PERSONAL_NUMBER:
return 'PERSONAL_NUMBER';
case i18n.phonenumbers.PhoneNumberType.PAGER:
return 'PAGER';
case i18n.phonenumbers.PhoneNumberType.UAN:
return 'UAN';
case i18n.phonenumbers.PhoneNumberType.UNKNOWN:
return 'UNKNOWN';
}
}
goog.exportSymbol('phoneNumberParser', phoneNumberParser);

Loading…
Cancel
Save