# automatically generated file, don't edit



# Copyright 2011 David Cantrell, derived from data from libphonenumber
# http://code.google.com/p/libphonenumber/
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
#     http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
package Number::Phone::StubCountry::CN;
use base qw(Number::Phone::StubCountry);
  
use strict;
use warnings;
our $VERSION = 1.20121122000027;

my $formatters = [{'pattern' => '(80\\d{2})(\\d{4})','leading_digits' => '80[2678]'},{'pattern' => '([48]00)(\\d{3})(\\d{4})','leading_digits' => '[48]00'},{'pattern' => '(\\d{3,4})(\\d{4})','leading_digits' => '[2-9]'},{'pattern' => '(21)(\\d{4})(\\d{4,6})','leading_digits' => '21'},{'pattern' => '([12]\\d)(\\d{4})(\\d{4})','leading_digits' => '10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]'},{'pattern' => '(\\d{3})(\\d{4})(\\d{4})','leading_digits' => '3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898'},{'pattern' => '(\\d{3})(\\d{3})(\\d{4})','leading_digits' => '3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])'},{'pattern' => '(1[3-58]\\d)(\\d{4})(\\d{4})','leading_digits' => '1[3-58]'},{'pattern' => '(10800)(\\d{3})(\\d{4})','leading_digits' => '10800'}];
my $validators = {'personal_number' => '','toll_free' => '(?:10)?800\\d{7}','pager' => '','mobile' => '1(?:3\\d|4[57]|5[0-35-9]|8[0235-9])\\d{8}','voip' => '','fixed_line' => '21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|8[23])|5(?:3[03-9]|4[36]|5\\d|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[17]\\d|2[248]|3[04-9]|4[3-6]|5[0-3689]|6[2368]|9[02-9])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))\\d{7}|80(?:29|6[03578]|7[018]|81)\\d{4}','special_rate' => '(400\\d{7})|(16[08]\\d{5})|()'};sub areaname { my $self = shift; my $number = $self->{number}; my %map = (8610 => "Beijing",8620 => "Guangzhou\,\ Guangdong",8621 => "Shanghai",8622 => "Tianjin",8623 => "Chongqing",8624 => "Shenyang\,\ Liaoning",8625 => "Nanjing\,\ Jiangsu",8627 => "Wuhan\,\ Hubei",8628 => "Chengdu\,\ Sichuan",8629 => "Xi\'an\,\ Shaanxi",86310 => "Handan\,\ Hebei",86311 => "Shijiazhuang\,\ Hebei",86312 => "Baoding\,\ Hebei",86313 => "Zhangjiakou\,\ Hebei",86314 => "Chengde\,\ Hebei",86315 => "Tangshan\,\ Hebei",86316 => "Langfang\,\ Hebei",86317 => "Cangzhou\,\ Hebei",86318 => "Hengshui\,\ Hebei",86319 => "Xingtai\,\ Hebei",86335 => "Qinhuangdao\,\ Hebei",86349 => "Shuozhou\,\ Shanxi",86350 => "Xinzhou\,\ Shanxi",86351 => "Taiyuan\,\ Shanxi",86352 => "Datong\,\ Shanxi",86353 => "Yangquan\,\ Shanxi",86354 => "Yuci\,\ Shanxi",86355 => "Changzhi\,\ Shanxi",86356 => "Jincheng\,\ Shanxi",86357 => "Linfen\,\ Shanxi",86358 => "Lishi\,\ Shanxi",86359 => "Yuncheng\,\ Shanxi",86370 => "Shangqiu\,\ Henan",86371 => "Zhengzhou\,\ Henan",86372 => "Anyang\,\ Henan",86373 => "Xinxiang\,\ Henan",86374 => "Xuchang\,\ Henan",86375 => "Pingdingshan\,\ Henan",86376 => "Xinyang\,\ Henan",86377 => "Nanyang\,\ Henan",86378 => "Kaifeng\,\ Henan",86379 => "Luoyang\,\ Henan",86391 => "Jiaozuo\,\ Henan",86392 => "Hebi\,\ Henan",86393 => "Puyang\,\ Henan",86394 => "Zhoukou\,\ Henan",86395 => "Luohe\,\ Henan",86396 => "Zhumadian\,\ Henan",86398 => "Sanmenxia\,\ Henan",86410 => "Tieling\,\ Liaoning",86411 => "Dalian\,\ Liaoning",86412 => "Anshan\,\ Liaoning",86413 => "Fushun\,\ Liaoning",86414 => "Benxi\,\ Liaoning",86415 => "Dandong\,\ Liaoning",86416 => "Jinzhou\,\ Liaoning",86417 => "Yingkou\,\ Liaoning",86418 => "Fuxin\,\ Liaoning",86419 => "Liaoyang\,\ Liaoning",86421 => "Chaoyang\,\ Liaoning",86427 => "Panjin\,\ Liaoning",86429 => "Huludao\,\ Liaoning",86431 => "Changchun\,\ Jilin",86432 => "Jilin\,\ Jilin",86433 => "Yanbian\ Zhou\,\ Jilin",86434 => "Siping\,\ Jilin",86435 => "Tonghua\,\ Jilin",86436 => "Baicheng\,\ Jilin",86437 => "Liaoyuan\,\ Jilin",86438 => "Songyuan\,\ Jilin",86451 => "Harbin\,\ Heilongjiang",86452 => "Qiqihar\,\ Heilongjiang",86453 => "Mudanjiang\,\ Heilongjiang",86454 => "Jiamusi\,\ Heilongjiang",86455 => "Suihua\,\ Heilongjiang",86456 => "Heihe\,\ Heilongjiang",86457 => "Jiagedaqi\,\ Heilongjiang",86458 => "Yichun\,\ Heilongjiang",86459 => "Daqing\,\ Heilongjiang",86464 => "Qitaihe\,\ Heilongjiang",86467 => "Jixi\,\ Heilongjiang",86468 => "Hegang\,\ Heilongjiang",86469 => "Shuangyashan\,\ Heilongjiang",86470 => "Hailaer\,\ Inner\ Mongolia",86471 => "Huhehaote\,\ Inner\ Mongolia",86472 => "Baotou\,\ Inner\ Mongolia",86473 => "Wuhai\,\ Inner\ Mongolia",86474 => "Jining\,\ Inner\ Mongolia",86475 => "Tongliao\,\ Inner\ Mongolia",86476 => "Chifeng\,\ Inner\ Mongolia",86477 => "Dongsheng\,\ Inner\ Mongolia",86478 => "Linhe\,\ Inner\ Mongolia",86479 => "Xilinhaote\,\ Inner\ Mongolia",86482 => "Wulanhaote\,\ Inner\ Mongolia",86483 => "Alashanzuoqi\,\ Inner\ Mongolia",86510 => "Wuxi\,\ Jiangsu",86511 => "Zhenjiang\,\ Jiangsu",86512 => "Suzhou\,\ Jiangsu",86513 => "Nantong\,\ Jiangsu",86514 => "Yangzhou\,\ Jiangsu",86515 => "Yancheng\,\ Jiangsu",86516 => "Xuzhou\,\ Jiangsu",86517 => "Huaian\,\ Jiangsu",86518 => "Lianyungang\,\ Jiangsu",86519 => "Changzhou\,\ Jiangsu",86523 => "Taizhou\,\ Jiangsu",86527 => "Suqian\,\ Jiangsu",86530 => "Heze\,\ Shandong",86531 => "Jinan\,\ Shandong",86532 => "Qingdao\,\ Shandong",86533 => "Zibo\,\ Shandong",86534 => "Dezhou\,\ Shandong",86535 => "Yantai\,\ Shandong",86536 => "Weifang\,\ Shandong",86537 => "Jining\,\ Shandong",86538 => "TaiAn\,\ Shandong",86539 => "Linyi\,\ Shandong",86543 => "Binzhou\,\ Shandong",86546 => "Dongying\,\ Shandong",86550 => "Chuzhou\,\ Anhui",86551 => "Hefei\,\ Anhui",86552 => "Bengbu\,\ Anhui",86553 => "Wuhu\,\ Anhui",86554 => "Huainan\,\ Anhui",86555 => "MaAnshan\,\ Anhui",86556 => "Anqing\,\ Anhui",86557 => "Suzhou\,\ Anhui",86558 => "Fuyang\,\ Anhui",86559 => "Huangshan\,\ Anhui",86561 => "Huaibei\,\ Anhui",86562 => "Tongling\,\ Anhui",86563 => "Xuancheng\,\ Anhui",86564 => "LiuAn\,\ Anhui",86565 => "Chaohu\,\ Anhui",86566 => "Chizhou\,\ Anhui",86570 => "Quzhou\,\ Zhejiang",86571 => "Hangzhou\,\ Zhejiang",86572 => "Huzhou\,\ Zhejiang",86573 => "Jiaxing\,\ Zhejiang",86574 => "Ningbo\,\ Zhejiang",86575 => "Shaoxing\,\ Zhejiang",86576 => "Taizhou\,\ Zhejiang",86577 => "Wenzhou\,\ Zhejiang",86578 => "Lishui\,\ Zhejiang",86579 => "Jinhua\,\ Zhejiang",86580 => "Zhoushan\,\ Zhejiang",86591 => "Fuzhou\,\ Fujian",86592 => "Xiamen\,\ Fujian",86593 => "Ningde\,\ Fujian",86594 => "Putian\,\ Fujian",86595 => "Quanzhou\,\ Fujian",86596 => "Zhangzhou\,\ Fujian",86597 => "Longyan\,\ Fujian",86598 => "Sanming\,\ Fujian",86599 => "Nanping\,\ Fujian",86631 => "Weihai\,\ Shandong",86632 => "Zaozhuang\,\ Shandong",86633 => "Rizhao\,\ Shandong",86634 => "Laiwu\,\ Shandong",86635 => "Liaocheng\,\ Shandong",86660 => "Shanwei\,\ Guangdong",86662 => "Yangjiang\,\ Guangdong",86663 => "Jieyang\,\ Guangdong",86668 => "Maoming\,\ Guangdong",86691 => "Jinghong\,\ Yunnan",86692 => "Luxi\,\ Yunnan",86701 => "Yingtan\,\ Jiangxi",86710 => "Xiangfan\,\ Hubei",86711 => "Ezhou\,\ Hubei",86712 => "Xiaogan\,\ Hubei",86713 => "Huanggang\,\ Hubei",86714 => "Huangshi\,\ Hubei",86715 => "Xianning\,\ Hubei",86716 => "Jingzhou\,\ Hubei",86717 => "Yichang\,\ Hubei",86718 => "Enshi\,\ Hubei",86719 => "Shiyan\,\ Hubei",86722 => "Suizhou\,\ Hubei",86724 => "Jingmen\,\ Hubei",86728 => "Xiantao\,\ Hubei",86730 => "Yueyang\,\ Hunan",86731 => "Zhuzhou\,\ Hunan",86734 => "Hengyang\,\ Hunan",86735 => "Chenzhou\,\ Hunan",86736 => "Changde\,\ Hunan",86737 => "Yiyang\,\ Hunan",86738 => "Loudi\,\ Hunan",86739 => "Shaoyang\,\ Hunan",86743 => "Jishou\,\ Hunan",86744 => "Zhangjiajie\,\ Hunan",86745 => "Huaihua\,\ Hunan",86746 => "Yongzhou\,\ Hunan",86750 => "Jiangmen\,\ Guangdong",86751 => "Shaoguan\,\ Guangdong",86752 => "Huizhou\,\ Guangdong",86753 => "Meizhou\,\ Guangdong",86754 => "Shantou\,\ Guangdong",86755 => "Shenzhen\,\ Guangdong",86756 => "Zhuhai\,\ Guangdong",86757 => "Shunde\,\ Guangdong",86758 => "Zhaoqing\,\ Guangdong",86759 => "Zhanjiang\,\ Guangdong",86760 => "Zhongshan\,\ Guangdong",86762 => "Heyuan\,\ Guangdong",86763 => "Qingyuan\,\ Guangdong",86766 => "Yunfu\,\ Guangdong",86768 => "Chaozhou\,\ Guangdong",86769 => "Dongguan\,\ Guangdong",86770 => "Fangchenggang\,\ Guangxi",86771 => "Nanning\,\ Guangxi",86772 => "Liuzhou\,\ Guangxi",86773 => "Guilin\,\ Guangxi",86774 => "Wuzhou\,\ Guangxi",86775 => "Yulin\,\ Guangxi",86776 => "Baise\,\ Guangxi",86777 => "Qinzhou\,\ Guangxi",86778 => "Hechi\,\ Guangxi",86779 => "Beihai\,\ Guangxi",86790 => "Xinyu\,\ Jiangxi",86791 => "Nanchang\,\ Jiangxi",86792 => "Jiujiang\,\ Jiangxi",86793 => "Shangrao\,\ Jiangxi",86794 => "Fuzhou\,\ Jiangxi",86795 => "Yichun\,\ Jiangxi",86796 => "JiAn\,\ Jiangxi",86797 => "Ganzhou\,\ Jiangxi",86798 => "Jingdezhen\,\ Jiangxi",86799 => "Pingxiang\,\ Jiangxi",86812 => "Panzhihua\,\ Sichuan",86813 => "Zigong\,\ Sichuan",86816 => "Mianyang\,\ Sichuan",86817 => "Nanchong\,\ Sichuan",86818 => "Dazhou\,\ Sichuan",86825 => "Suining\,\ Sichuan",86826 => "GuangAn\,\ Sichuan",86827 => "Bazhong\,\ Sichuan",86830 => "Luzhou\,\ Sichuan",86831 => "Yibin\,\ Sichuan",86832 => "Ziyang\,\ Sichuan",86833 => "Leshan\,\ Sichuan",86834 => "Xichang\,\ Sichuan",86835 => "YaAn\,\ Sichuan",86836 => "Kangding\,\ Sichuan",86837 => "MaErkang\,\ Sichuan",86838 => "Deyang\,\ Sichuan",86839 => "Guangyuan\,\ Sichuan",86851 => "Guiyang\,\ Guizhou",86852 => "Zunyi\,\ Guizhou",86853 => "Anshun\,\ Guizhou",86854 => "Duyun\,\ Guizhou",86855 => "Kaili\,\ Guizhou",86856 => "Tongren\,\ Guizhou",86857 => "Bijie\,\ Guizhou",86858 => "Liupanshui\,\ Guizhou",86859 => "Xingyi\,\ Guizhou",86870 => "Zhaotong\,\ Yunnan",86871 => "Kunming\,\ Yunnan",86872 => "Dali\,\ Yunnan",86873 => "Gejiu\,\ Yunnan",86874 => "Qujing\,\ Yunnan",86875 => "Baoshan\,\ Yunnan",86876 => "Wenshan\,\ Yunnan",86877 => "Yuxi\,\ Yunnan",86878 => "Chuxiong\,\ Yunnan",86879 => "Simao\,\ Yunnan",86883 => "Lincang\,\ Yunnan",86886 => "Liuku\,\ Yunnan",86887 => "Zhongdian\,\ Yunnan",86888 => "Lijiang\,\ Yunnan",86891 => "Lhasa\,\ Tibet",86892 => "Rikaze\,\ Tibet",86893 => "Naidong\,\ Tibet",86894 => "Linzhi\,\ Tibet",86895 => "Changdu\,\ Tibet",86896 => "Naqu\,\ Tibet",86897 => "GeEr\,\ Tibet",86898 => "Haikou\,\ Hainan",86901 => "Tacheng\,\ Xinjiang",86902 => "Hami\,\ Xinjiang",86903 => "Hetian\,\ Xinjiang",86906 => "Aletai\,\ Xinjiang",86908 => "Atushi\,\ Xinjiang",86909 => "Bole\,\ Xinjiang",86911 => "YanAn\,\ Shaanxi",86912 => "Yulin\,\ Shaanxi",86913 => "Weinan\,\ Shaanxi",86914 => "Shangzhou\,\ Shaanxi",86915 => "Ankang\,\ Shaanxi",86916 => "Hanzhong\,\ Shaanxi",86917 => "Baoji\,\ Shaanxi",86919 => "Tongchuan\,\ Shaanxi",86930 => "Linxia\,\ Gansu",86931 => "Lanzhou\,\ Gansu",86932 => "Dingxi\,\ Gansu",86933 => "Pingliang\,\ Gansu",86934 => "Xifeng\,\ Gansu",86935 => "Jinchang\,\ Gansu",86936 => "Zhangye\,\ Gansu",86937 => "Jiuquan\,\ Gansu",86938 => "Tianshui\,\ Gansu",86939 => "Wudu\,\ Gansu",86941 => "Hezuo\,\ Gansu",86943 => "Baiyin\,\ Gansu",86951 => "Yinchuan\,\ Ningxia",86952 => "Shizuishan\,\ Ningxia",86953 => "Wuzhong\,\ Ningxia",86954 => "Guyuan\,\ Ningxia",86955 => "Zhongwei\,\ Ningxia",86970 => "Haiyan\,\ Qinghai",86971 => "Xining\,\ Qinghai",86972 => "PingAn\,\ Qinghai",86973 => "Tongren\,\ Qinghai",86974 => "Gonghe\,\ Qinghai",86975 => "Maqin\,\ Qinghai",86976 => "Yushu\,\ Qinghai",86977 => "Delingha\,\ Qinghai",86979 => "GeErmu\,\ Qinghai",86990 => "Kalamayi\,\ Xinjiang",86991 => "Urumchi\,\ Xinjiang",86992 => "Kuitun\,\ Xinjiang",86993 => "Shihezi\,\ Xinjiang",86994 => "Changji\,\ Xinjiang",86995 => "Tulufan\,\ Xinjiang",86996 => "KuErle\,\ Xinjiang",86997 => "Akesu\,\ Xinjiang",86998 => "Kashi\,\ Xinjiang",86999 => "Yining\,\ Xinjiang",);
      foreach my $prefix (map { substr($number, 0, $_) } reverse(1..length($number))) {
        return $map{"86$prefix"} if exists($map{"86$prefix"});
      }
      return undef;
    }
sub new {
  my $class = shift;
  my $number = shift;
  $number =~ s/(^\+86|\D)//g;
  my $self = bless({ number => $number, formatters => $formatters, validators => $validators }, $class);
  return $self->is_valid() ? $self : undef;
}

1;