indicator-china-weather/0000775000175000017500000000000013644025322014172 5ustar fengfengindicator-china-weather/data/0000755000175000017500000000000013530705154015103 5ustar fengfengindicator-china-weather/data/china-city-list.csv0000644000175000017500000122061113530705154020624 0ustar fengfengHEWeather China City List v2.1,update by 2018-06-20,,,,,,,,,,,, City_ID,City_EN,City_CN,Country_code,Country_EN,Country_CN,Province_EN,Province_CN,Admin_ district_EN,Admin_ district_CN,Latitude,Longitude,AD_code, CN101010100,beijing,北京,CN,China,中国,beijing,北京,beijing,北京,39.904987,116.40529,"110100,110000,100000", CN101010200,haidian,海淀,CN,China,中国,beijing,北京,beijing,北京,39.956074,116.31032,110108, CN101010300,chaoyang,朝阳,CN,China,中国,beijing,北京,beijing,北京,39.92149,116.48641,110105, CN101010400,shunyi,顺义,CN,China,中国,beijing,北京,beijing,北京,40.128937,116.65353,110113, CN101010500,huairou,怀柔,CN,China,中国,beijing,北京,beijing,北京,40.324272,116.63712,110116, CN101010600,tongzhou,通州,CN,China,中国,beijing,北京,beijing,北京,39.902485,116.6586,110112, CN101010700,changping,昌平,CN,China,中国,beijing,北京,beijing,北京,40.218086,116.23591,110114, CN101010800,yanqing,延庆,CN,China,中国,beijing,北京,beijing,北京,40.465324,115.98501,110119, CN101010900,fengtai,丰台,CN,China,中国,beijing,北京,beijing,北京,39.863644,116.286964,110106, CN101011000,shijingshan,石景山,CN,China,中国,beijing,北京,beijing,北京,39.9146,116.19544,110107, CN101011100,daxing,大兴,CN,China,中国,beijing,北京,beijing,北京,39.72891,116.338036,110115, CN101011200,fangshan,房山,CN,China,中国,beijing,北京,beijing,北京,39.735535,116.13916,110111, CN101011300,miyun,密云,CN,China,中国,beijing,北京,beijing,北京,40.37736,116.84335,110118, CN101011400,mentougou,门头沟,CN,China,中国,beijing,北京,beijing,北京,39.937183,116.10538,110109, CN101011500,pinggu,平谷,CN,China,中国,beijing,北京,beijing,北京,40.144783,117.112335,110117, CN101011600,dongcheng,东城,CN,China,中国,beijing,北京,beijing,北京,39.917545,116.418755,110101, CN101011700,xicheng,西城,CN,China,中国,beijing,北京,beijing,北京,39.91531,116.36679,110102, CN101020100,shanghai,上海,CN,China,中国,shanghai,上海,shanghai,上海,31.231707,121.47264,"310100,310000", CN101020200,minhang,闵行,CN,China,中国,shanghai,上海,shanghai,上海,31.111658,121.37597,310112, CN101020300,baoshan,宝山,CN,China,中国,shanghai,上海,shanghai,上海,31.398895,121.48994,310113, CN101020400,huangpu,黄浦,CN,China,中国,shanghai,上海,shanghai,上海,31.22277,121.49032,310101, CN101020500,jiading,嘉定,CN,China,中国,shanghai,上海,shanghai,上海,31.383524,121.250336,310114, CN101020600,pudongxinqu,浦东新区,CN,China,中国,shanghai,上海,shanghai,上海,31.245943,121.5677,310115, CN101020700,jinshan,金山,CN,China,中国,shanghai,上海,shanghai,上海,30.724697,121.330734,310116, CN101020800,qingpu,青浦,CN,China,中国,shanghai,上海,shanghai,上海,31.151209,121.11302,310118, CN101020900,songjiang,松江,CN,China,中国,shanghai,上海,shanghai,上海,31.03047,121.22354,310117, CN101021000,fengxian,奉贤,CN,China,中国,shanghai,上海,shanghai,上海,30.912346,121.45847,310120, CN101021100,chongming,崇明,CN,China,中国,shanghai,上海,shanghai,上海,31.626945,121.397514,310151, CN101021200,xuhui,徐汇,CN,China,中国,shanghai,上海,shanghai,上海,31.179974,121.43752,310104, CN101021300,changning,长宁,CN,China,中国,shanghai,上海,shanghai,上海,31.218122,121.4222,310105, CN101021400,jingan,静安,CN,China,中国,shanghai,上海,shanghai,上海,31.229004,121.44823,310106, CN101021500,putuo,普陀,CN,China,中国,shanghai,上海,shanghai,上海,31.241701,121.3925,310107, CN101021600,hongkou,虹口,CN,China,中国,shanghai,上海,shanghai,上海,31.26097,121.49183,310109, CN101021700,yangpu,杨浦,CN,China,中国,shanghai,上海,shanghai,上海,31.270756,121.5228,310110, CN101030100,tianjin,天津,CN,China,中国,tianjin,天津,tianjin,天津,39.125595,117.190186,"120100,120000", CN101030200,wuqing,武清,CN,China,中国,tianjin,天津,tianjin,天津,39.376926,117.05796,120114, CN101030300,baodi,宝坻,CN,China,中国,tianjin,天津,tianjin,天津,39.716965,117.30809,120115, CN101030400,dongli,东丽,CN,China,中国,tianjin,天津,tianjin,天津,39.087765,117.313965,120110, CN101030500,xiqing,西青,CN,China,中国,tianjin,天津,tianjin,天津,39.139446,117.012245,120111, CN101030600,beichen,北辰,CN,China,中国,tianjin,天津,tianjin,天津,39.225555,117.13482,120113, CN101030700,ninghe,宁河,CN,China,中国,tianjin,天津,tianjin,天津,39.328884,117.82828,120117, CN101030800,heping,和平,CN,China,中国,tianjin,天津,tianjin,天津,39.11833,117.19591,120101, CN101030900,jinghai,静海,CN,China,中国,tianjin,天津,tianjin,天津,38.935673,116.9253,120118, CN101031000,jinnan,津南,CN,China,中国,tianjin,天津,tianjin,天津,38.98958,117.382545,120112, CN101031100,binhaixinqu,滨海新区,CN,China,中国,tianjin,天津,tianjin,天津,39.032845,117.654175,120116, CN101031200,hedong,河东,CN,China,中国,tianjin,天津,tianjin,天津,39.122124,117.22657,120102, CN101031300,hexi,河西,CN,China,中国,tianjin,天津,tianjin,天津,39.1019,117.21754,120103, CN101031400,jizhou,蓟州,CN,China,中国,tianjin,天津,tianjin,天津,40.04534,117.40745,120119, CN101031500,nankai,南开,CN,China,中国,tianjin,天津,tianjin,天津,39.120476,117.16415,120104, CN101031600,hebei,河北,CN,China,中国,tianjin,天津,tianjin,天津,39.15663,117.20157,120105, CN101031700,hongqiao,红桥,CN,China,中国,tianjin,天津,tianjin,天津,39.175068,117.1633,120106, CN101040100,chongqing,重庆,CN,China,中国,chongqing,重庆,chongqing,重庆,29.56376,106.55046,"500100,500000,500200", CN101040200,yongchuan,永川,CN,China,中国,chongqing,重庆,chongqing,重庆,29.348747,105.894714,500118, CN101040300,hechuan,合川,CN,China,中国,chongqing,重庆,chongqing,重庆,29.990993,106.26556,500117, CN101040400,nanchuan,南川,CN,China,中国,chongqing,重庆,chongqing,重庆,29.156647,107.09815,500119, CN101040500,jiangjin,江津,CN,China,中国,chongqing,重庆,chongqing,重庆,29.283386,106.25316,500116, CN101040700,yubei,渝北,CN,China,中国,chongqing,重庆,chongqing,重庆,29.601452,106.51285,500112, CN101040800,beibei,北碚,CN,China,中国,chongqing,重庆,chongqing,重庆,29.82543,106.43787,500109, CN101040900,banan,巴南,CN,China,中国,chongqing,重庆,chongqing,重庆,29.38192,106.519424,500113, CN101041000,changshou,长寿,CN,China,中国,chongqing,重庆,chongqing,重庆,29.833672,107.07485,500115, CN101041100,qianjiang,黔江,CN,China,中国,chongqing,重庆,chongqing,重庆,29.527548,108.78258,500114, CN101041200,yuzhong,渝中,CN,China,中国,chongqing,重庆,chongqing,重庆,29.556742,106.56288,500103, CN101041300,wanzhou,万州,CN,China,中国,chongqing,重庆,chongqing,重庆,30.807808,108.38025,500101, CN101041400,fuling,涪陵,CN,China,中国,chongqing,重庆,chongqing,重庆,29.703651,107.394905,500102, CN101041600,chengkou,城口,CN,China,中国,chongqing,重庆,chongqing,重庆,31.946293,108.6649,500229, CN101041700,yunyang,云阳,CN,China,中国,chongqing,重庆,chongqing,重庆,30.930529,108.6977,500235, CN101041800,wuxi,巫溪,CN,China,中国,chongqing,重庆,chongqing,重庆,31.3966,109.628914,500238, CN101041900,fengjie,奉节,CN,China,中国,chongqing,重庆,chongqing,重庆,31.019966,109.465775,500236, CN101042000,wushan,巫山,CN,China,中国,chongqing,重庆,chongqing,重庆,31.074842,109.87893,500237, CN101042100,tongnan,潼南,CN,China,中国,chongqing,重庆,chongqing,重庆,30.189554,105.84182,500152, CN101042200,dianjiang,垫江,CN,China,中国,chongqing,重庆,chongqing,重庆,30.330011,107.348694,500231, CN101042300,liangping,梁平,CN,China,中国,chongqing,重庆,chongqing,重庆,30.672169,107.80003,500155, CN101042400,zhongxian,忠县,CN,China,中国,chongqing,重庆,chongqing,重庆,30.291536,108.03752,500233, CN101042500,shizhu,石柱,CN,China,中国,chongqing,重庆,chongqing,重庆,29.999285,108.11407,500240, CN101042600,dazu,大足,CN,China,中国,chongqing,重庆,chongqing,重庆,29.700499,105.71532,500111, CN101042700,rongchang,荣昌,CN,China,中国,chongqing,重庆,chongqing,重庆,29.403627,105.59406,500153, CN101042800,tongliang,铜梁,CN,China,中国,chongqing,重庆,chongqing,重庆,29.839945,106.05495,500151, CN101042900,bishan,璧山,CN,China,中国,chongqing,重庆,chongqing,重庆,29.59358,106.231125,500120, CN101043000,fengdu,丰都,CN,China,中国,chongqing,重庆,chongqing,重庆,29.866425,107.73248,500230, CN101043100,wulong,武隆,CN,China,中国,chongqing,重庆,chongqing,重庆,29.32376,107.75655,500156, CN101043200,pengshui,彭水,CN,China,中国,chongqing,重庆,chongqing,重庆,29.293856,108.16655,500243, CN101043300,qijiang,綦江,CN,China,中国,chongqing,重庆,chongqing,重庆,29.028091,106.65142,500110, CN101043400,youyang,酉阳,CN,China,中国,chongqing,重庆,chongqing,重庆,28.839828,108.767204,500242, CN101043500,dadukou,大渡口,CN,China,中国,chongqing,重庆,chongqing,重庆,29.481003,106.48613,500104, CN101043600,xiushan,秀山,CN,China,中国,chongqing,重庆,chongqing,重庆,28.444773,108.99604,500241, CN101043700,jiangbei,江北,CN,China,中国,chongqing,重庆,chongqing,重庆,29.575352,106.532845,500105, CN101043800,shapingba,沙坪坝,CN,China,中国,chongqing,重庆,chongqing,重庆,29.541224,106.4542,500106, CN101043900,jiulongpo,九龙坡,CN,China,中国,chongqing,重庆,chongqing,重庆,29.523493,106.48099,500107, CN101044000,nanan,南岸,CN,China,中国,chongqing,重庆,chongqing,重庆,29.523993,106.560814,500108, CN101044100,kaizhou,开州,CN,China,中国,chongqing,重庆,chongqing,重庆,31.167734,108.413315,500154, CN101050101,haerbin,哈尔滨,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.756966,126.64246,"230101,230100,230000", CN101050102,shuangcheng,双城,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.37794,126.308784,230113, CN101050103,hulan,呼兰,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.98423,126.6033,230111, CN101050104,acheng,阿城,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.538372,126.972725,230112, CN101050105,binxian,宾县,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.75937,127.48594,230125, CN101050106,yilan,依兰,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,46.315105,129.5656,230123, CN101050107,bayan,巴彦,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,46.08189,127.4036,230126, CN101050108,tonghe,通河,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.97762,128.74779,230128, CN101050109,fangzheng,方正,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.839535,128.83614,230124, CN101050110,yanshou,延寿,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.455647,128.33188,230129, CN101050111,shangzhi,尚志,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.214954,127.96854,230183, CN101050112,wuchang,五常,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,44.91942,127.15759,230184, CN101050113,mulan,木兰,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.949825,128.04268,230127, CN101050114,daoli,道里,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.762035,126.61253,230102, CN101050115,nangang,南岗,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.75597,126.6521,230103, CN101050116,daowai,道外,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.78454,126.648834,230104, CN101050117,pingfang,平房,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.605568,126.62926,230108, CN101050118,songbei,松北,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.814655,126.563065,230109, CN101050119,xiangfang,香坊,CN,China,中国,heilongjiang,黑龙江,haerbin,哈尔滨,45.713066,126.667046,230110, CN101050201,qiqihaer,齐齐哈尔,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.34208,123.95792,"230201,230200", CN101050202,nehe,讷河,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,48.481133,124.88217,230281, CN101050203,longjiang,龙江,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.336388,123.187225,230221, CN101050204,gannan,甘南,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.91784,123.506035,230225, CN101050205,fuyu,富裕,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.797173,124.46911,230227, CN101050206,yian,依安,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.8901,125.30756,230223, CN101050207,baiquan,拜泉,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.607365,126.09191,230231, CN101050208,keshan,克山,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,48.034344,125.87435,230229, CN101050209,kedong,克东,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,48.03732,126.24909,230230, CN101050210,tailai,泰来,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,46.39233,123.41953,230224, CN101050211,longsha,龙沙,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.341736,123.95734,230202, CN101050212,jianhua,建华,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.354492,123.95589,230203, CN101050213,tiefeng,铁锋,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.3395,123.97356,230204, CN101050214,angangxi,昂昂溪,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.156868,123.81318,230205, CN101050215,fulaerji,富拉尔基,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.20697,123.63887,230206, CN101050216,nianzishan,碾子山,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.51401,122.88797,230207, CN101050217,meilisi,梅里斯,CN,China,中国,heilongjiang,黑龙江,qiqihaer,齐齐哈尔,47.31111,123.7546,230208, CN101050301,mudanjiang,牡丹江,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.582962,129.6186,"231001,231000", CN101050302,hailin,海林,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.57415,129.38791,231083, CN101050303,muling,穆棱,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.91967,130.52708,231085, CN101050304,linkou,林口,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,45.286644,130.2684,231025, CN101050305,suifenhe,绥芬河,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.396866,131.16486,231081, CN101050306,ningan,宁安,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.346836,129.47002,231084, CN101050307,dongning,东宁,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.06358,131.12529,231086, CN101050308,dongan,东安,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.582397,129.62329,231002, CN101050309,yangming,阳明,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.59633,129.63464,231003, CN101050310,aimin,爱民,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.595444,129.60123,231004, CN101050311,xian,西安,CN,China,中国,heilongjiang,黑龙江,mudanjiang,牡丹江,44.58103,129.61311,231005, CN101050401,jiamusi,佳木斯,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.809605,130.36163,"230801,230800", CN101050402,tangyuan,汤原,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.73005,129.90446,230828, CN101050403,fuyuan,抚远,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,48.364708,134.2945,230883, CN101050404,huachuan,桦川,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,47.02304,130.72371,230826, CN101050405,huanan,桦南,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.240116,130.57011,230822, CN101050406,tongjiang,同江,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,47.65113,132.51012,230881, CN101050407,fujin,富锦,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,47.250748,132.03795,230882, CN101050408,xiangyang,向阳,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.809647,130.36179,230803, CN101050409,qianjin,前进,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.812344,130.37769,230804, CN101050410,dongfeng,东风,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.822475,130.40329,230805, CN101050411,jiaoqu,郊区,CN,China,中国,heilongjiang,黑龙江,jiamusi,佳木斯,46.80712,130.3516,230811, CN101050501,suihua,绥化,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.637394,126.99293,"231201,231200", CN101050502,zhaodong,肇东,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.06947,125.9914,231282, CN101050503,anda,安达,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.410614,125.329926,231281, CN101050504,hailun,海伦,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,47.460426,126.96938,231283, CN101050505,mingshui,明水,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,47.18353,125.90755,231225, CN101050506,wangkui,望奎,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.83352,126.48419,231221, CN101050507,lanxi,兰西,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.259037,126.289314,231222, CN101050508,qinggang,青冈,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.686596,126.11227,231223, CN101050509,qingan,庆安,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.879204,127.510025,231224, CN101050510,suiling,绥棱,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,47.247196,127.11112,231226, CN101050511,beilin,北林,CN,China,中国,heilongjiang,黑龙江,suihua,绥化,46.63491,126.99066,231202, CN101050601,heihe,黑河,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,50.249584,127.49902,"231101,231100", CN101050602,nenjiang,嫩江,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,49.17746,125.229904,231121, CN101050603,sunwu,孙吴,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,49.423943,127.32732,231124, CN101050604,xunke,逊克,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,49.582973,128.47615,231123, CN101050605,wudalianchi,五大连池,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,48.512688,126.19769,231182, CN101050606,beian,北安,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,48.245438,126.508736,231181, CN101050607,aihui,爱辉,CN,China,中国,heilongjiang,黑龙江,heihe,黑河,50.249027,127.49764,231102, CN101050701,daxinganling,大兴安岭,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,52.335262,124.711525,"232700,232701", CN101050702,tahe,塔河,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,52.335228,124.71052,232722, CN101050703,mohe,漠河,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,52.972073,122.536255,232723, CN101050704,huma,呼玛,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,51.726997,126.6621,232721, CN101050705,huzhong,呼中,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,52.03336,123.5863,232721, CN101050706,xinlin,新林,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,51.67373,124.395004,232721, CN101050708,jiagedaqi,加格达奇,CN,China,中国,heilongjiang,黑龙江,daxinganling,大兴安岭,50.408726,124.13959,"232701,232701", CN101050801,yichun,伊春,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.726852,128.89928,"230701,230700,230702", CN101050802,wuyiling,乌伊岭,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.59112,129.43785,230714, CN101050803,wuying,五营,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.108204,129.24503,230710, CN101050804,tieli,铁力,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,46.98577,128.03056,230781, CN101050805,jiayin,嘉荫,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.891376,130.39769,230722, CN101050806,nancha,南岔,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.137314,129.28246,230703, CN101050807,youhao,友好,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.8543,128.83896,230704, CN101050808,xilin,西林,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.47944,129.31145,230705, CN101050809,cuiluan,翠峦,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.726227,128.67175,230706, CN101050810,xinqing,新青,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.288292,129.52995,230707, CN101050811,meixi,美溪,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.6361,129.1334,230708, CN101050812,jinshantun,金山屯,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.41295,129.43594,230709, CN101050813,wumahe,乌马河,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.72696,128.80295,230711, CN101050814,tangwanghe,汤旺河,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.45365,129.57224,230712, CN101050815,dailing,带岭,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.02753,129.02115,230713, CN101050816,hongxing,红星,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,48.23837,129.3888,230715, CN101050817,shangganling,上甘岭,CN,China,中国,heilongjiang,黑龙江,yichun,伊春,47.974857,129.02509,230716, CN101050901,daqing,大庆,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.590733,125.11272,"230601,230600", CN101050902,lindian,林甸,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,47.186413,124.87774,230623, CN101050903,zhaozhou,肇州,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,45.708687,125.273254,230621, CN101050904,zhaoyuan,肇源,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,45.518833,125.08197,230622, CN101050905,duerbote,杜尔伯特,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.865974,124.44626,230624, CN101050906,saertu,萨尔图,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.596355,125.11464,230602, CN101050907,longfeng,龙凤,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.573948,125.1458,230603, CN101050908,ranghulu,让胡路,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.653255,124.86834,230604, CN101050909,honggang,红岗,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.40305,124.88953,230605, CN101050910,datong,大同,CN,China,中国,heilongjiang,黑龙江,daqing,大庆,46.034306,124.81851,230606, CN101051001,xinxing,新兴,CN,China,中国,heilongjiang,黑龙江,qitaihe,七台河,45.79426,130.88948,230902, CN101051002,qitaihe,七台河,CN,China,中国,heilongjiang,黑龙江,qitaihe,七台河,45.771267,131.01558,"230901,230900", CN101051003,boli,勃利,CN,China,中国,heilongjiang,黑龙江,qitaihe,七台河,45.75157,130.57503,230921, CN101051004,taoshan,桃山,CN,China,中国,heilongjiang,黑龙江,qitaihe,七台河,45.771217,131.01585,230903, CN101051005,qiezihe,茄子河,CN,China,中国,heilongjiang,黑龙江,qitaihe,七台河,45.77659,131.07156,230904, CN101051101,jixi,鸡西,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.300045,130.97597,"230301,230300", CN101051102,hulin,虎林,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.767986,132.97388,230381, CN101051103,mishan,密山,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.54725,131.87413,230382, CN101051104,jidong,鸡东,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.250893,131.14891,230321, CN101051105,jiguan,鸡冠,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.30034,130.97438,230302, CN101051106,hengshan,恒山,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.21324,130.91063,230303, CN101051107,didao,滴道,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.348812,130.84682,230304, CN101051108,lishu,梨树,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.092194,130.69778,230305, CN101051109,chengzihe,城子河,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.33825,131.0105,230306, CN101051110,mashan,麻山,CN,China,中国,heilongjiang,黑龙江,jixi,鸡西,45.209606,130.48112,230307, CN101051201,hegang,鹤岗,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.332085,130.27748,"230401,230400", CN101051202,suibin,绥滨,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.28989,131.86052,230422, CN101051203,luobei,萝北,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.577576,130.82909,230421, CN101051204,xiangyang,向阳,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.34537,130.29248,230402, CN101051205,gongnong,工农,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.331676,130.27666,230403, CN101051206,nanshan,南山,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.31324,130.27553,230404, CN101051207,xingan,兴安,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.25291,130.23618,230405, CN101051208,dongshan,东山,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.337383,130.31714,230406, CN101051209,xingshan,兴山,CN,China,中国,heilongjiang,黑龙江,hegang,鹤岗,47.35997,130.30534,230407, CN101051301,shuangyashan,双鸭山,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.64344,131.1573,"230501,230500", CN101051302,jixian,集贤,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.72898,131.13933,230521, CN101051303,baoqing,宝清,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.32878,132.20642,230523, CN101051304,raohe,饶河,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.80129,134.02116,230524, CN101051305,youyi,友谊,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.775158,131.81062,230522, CN101051306,jianshan,尖山,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.64296,131.15897,230502, CN101051307,lingdong,岭东,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.591076,131.16368,230503, CN101051308,sifangtai,四方台,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.594345,131.33318,230505, CN101051309,baoshan,宝山,CN,China,中国,heilongjiang,黑龙江,shuangyashan,双鸭山,46.573364,131.4043,230506, CN101060101,changchun,长春,CN,China,中国,jilin,吉林,changchun,长春,43.88684,125.3245,"220101,220100,220000", CN101060102,nongan,农安,CN,China,中国,jilin,吉林,changchun,长春,44.43126,125.175285,220122, CN101060103,dehui,德惠,CN,China,中国,jilin,吉林,changchun,长春,44.53391,125.70332,220183, CN101060104,jiutai,九台,CN,China,中国,jilin,吉林,changchun,长春,44.157154,125.84468,220113, CN101060105,yushu,榆树,CN,China,中国,jilin,吉林,changchun,长春,44.82764,126.55011,220182, CN101060106,shuangyang,双阳,CN,China,中国,jilin,吉林,changchun,长春,43.52517,125.65902,220112, CN101060107,erdao,二道,CN,China,中国,jilin,吉林,changchun,长春,43.870823,125.38473,220105, CN101060108,nanguan,南关,CN,China,中国,jilin,吉林,changchun,长春,43.890236,125.337234,220102, CN101060109,kuancheng,宽城,CN,China,中国,jilin,吉林,changchun,长春,43.903824,125.34283,220103, CN101060110,chaoyang,朝阳,CN,China,中国,jilin,吉林,changchun,长春,43.86491,125.31804,220104, CN101060111,lvyuan,绿园,CN,China,中国,jilin,吉林,changchun,长春,43.892178,125.27247,220106, CN101060201,jilin,吉林,CN,China,中国,jilin,吉林,jilin,吉林,43.84358,126.55302,"220201,220200", CN101060202,shulan,舒兰,CN,China,中国,jilin,吉林,jilin,吉林,44.410908,126.947815,220283, CN101060203,yongji,永吉,CN,China,中国,jilin,吉林,jilin,吉林,43.667416,126.501625,220221, CN101060204,jiaohe,蛟河,CN,China,中国,jilin,吉林,jilin,吉林,43.720577,127.342735,220281, CN101060205,panshi,磐石,CN,China,中国,jilin,吉林,jilin,吉林,42.942474,126.05993,220284, CN101060206,huadian,桦甸,CN,China,中国,jilin,吉林,jilin,吉林,42.97209,126.745445,220282, CN101060207,changyi,昌邑,CN,China,中国,jilin,吉林,jilin,吉林,43.851116,126.57076,220202, CN101060208,longtan,龙潭,CN,China,中国,jilin,吉林,jilin,吉林,43.909756,126.56143,220203, CN101060209,chuanying,船营,CN,China,中国,jilin,吉林,jilin,吉林,43.843803,126.55239,220204, CN101060210,fengman,丰满,CN,China,中国,jilin,吉林,jilin,吉林,43.816593,126.56076,220211, CN101060301,yanji,延吉,CN,China,中国,jilin,吉林,yanbian,延边,42.906963,129.5158,222401, CN101060302,dunhua,敦化,CN,China,中国,jilin,吉林,yanbian,延边,43.36692,128.22986,222403, CN101060303,antu,安图,CN,China,中国,jilin,吉林,yanbian,延边,43.110992,128.90187,222426, CN101060304,wangqing,汪清,CN,China,中国,jilin,吉林,yanbian,延边,43.315426,129.76616,222424, CN101060305,helong,和龙,CN,China,中国,jilin,吉林,yanbian,延边,42.547005,129.00874,222406, CN101060306,yanbian,延边,CN,China,中国,jilin,吉林,yanbian,延边,42.904823,129.51323,222400, CN101060307,longjing,龙井,CN,China,中国,jilin,吉林,yanbian,延边,42.77103,129.42575,222405, CN101060308,hunchun,珲春,CN,China,中国,jilin,吉林,yanbian,延边,42.871056,130.36578,222404, CN101060309,tumen,图们,CN,China,中国,jilin,吉林,yanbian,延边,42.96662,129.8467,222402, CN101060401,siping,四平,CN,China,中国,jilin,吉林,siping,四平,43.170345,124.37079,"220301,220300", CN101060402,shuangliao,双辽,CN,China,中国,jilin,吉林,siping,四平,43.518276,123.50528,220382, CN101060403,lishu,梨树,CN,China,中国,jilin,吉林,siping,四平,43.30831,124.3358,220322, CN101060404,gongzhuling,公主岭,CN,China,中国,jilin,吉林,siping,四平,43.509476,124.81759,220381, CN101060405,yitong,伊通,CN,China,中国,jilin,吉林,siping,四平,43.345463,125.30312,220323, CN101060406,tiexi,铁西,CN,China,中国,jilin,吉林,siping,四平,43.17626,124.36089,220302, CN101060407,tiedong,铁东,CN,China,中国,jilin,吉林,siping,四平,43.16726,124.388466,220303, CN101060501,tonghua,通化,CN,China,中国,jilin,吉林,tonghua,通化,41.721176,125.9365,"220501,220500", CN101060502,meihekou,梅河口,CN,China,中国,jilin,吉林,tonghua,通化,42.530003,125.68734,220581, CN101060503,liuhe,柳河,CN,China,中国,jilin,吉林,tonghua,通化,42.281483,125.74054,220524, CN101060504,huinan,辉南,CN,China,中国,jilin,吉林,tonghua,通化,42.68346,126.04282,220523, CN101060505,jian,集安,CN,China,中国,jilin,吉林,tonghua,通化,41.126274,126.1862,220582, CN101060506,tonghuaxian,通化县,CN,China,中国,jilin,吉林,tonghua,通化,41.677917,125.75312,220521, CN101060507,dongchang,东昌,CN,China,中国,jilin,吉林,tonghua,通化,41.721233,125.936714,220502, CN101060508,erdaojiang,二道江,CN,China,中国,jilin,吉林,tonghua,通化,41.777565,126.04599,220503, CN101060601,baicheng,白城,CN,China,中国,jilin,吉林,baicheng,白城,45.619026,122.84111,"220801,220800", CN101060602,taonan,洮南,CN,China,中国,jilin,吉林,baicheng,白城,45.33911,122.783775,220881, CN101060603,daan,大安,CN,China,中国,jilin,吉林,baicheng,白城,45.50765,124.29151,220882, CN101060604,zhenlai,镇赉,CN,China,中国,jilin,吉林,baicheng,白城,45.84609,123.20225,220821, CN101060605,tongyu,通榆,CN,China,中国,jilin,吉林,baicheng,白城,44.80915,123.08855,220822, CN101060606,taobei,洮北,CN,China,中国,jilin,吉林,baicheng,白城,45.61925,122.8425,220802, CN101060701,liaoyuan,辽源,CN,China,中国,jilin,吉林,liaoyuan,辽源,42.90269,125.14535,"220401,220400", CN101060702,dongfeng,东丰,CN,China,中国,jilin,吉林,liaoyuan,辽源,42.67523,125.529625,220421, CN101060703,dongliao,东辽,CN,China,中国,jilin,吉林,liaoyuan,辽源,42.927723,124.992,220422, CN101060704,longshan,龙山,CN,China,中国,jilin,吉林,liaoyuan,辽源,42.902702,125.145164,220402, CN101060705,xian,西安,CN,China,中国,jilin,吉林,liaoyuan,辽源,42.920414,125.15142,220403, CN101060801,songyuan,松原,CN,China,中国,jilin,吉林,songyuan,松原,45.118244,124.82361,"220701,220700", CN101060802,qianan,乾安,CN,China,中国,jilin,吉林,songyuan,松原,45.006847,124.02436,220723, CN101060803,qianguo,前郭,CN,China,中国,jilin,吉林,songyuan,松原,45.116287,124.826805,220721, CN101060804,changling,长岭,CN,China,中国,jilin,吉林,songyuan,松原,44.27658,123.98518,220722, CN101060805,fuyu,扶余,CN,China,中国,jilin,吉林,songyuan,松原,44.9862,126.042755,220781, CN101060806,ningjiang,宁江,CN,China,中国,jilin,吉林,songyuan,松原,45.1765,124.82785,220702, CN101060901,baishan,白山,CN,China,中国,jilin,吉林,baishan,白山,41.942505,126.42784,"220601,220600", CN101060902,jingyu,靖宇,CN,China,中国,jilin,吉林,baishan,白山,42.38969,126.80839,220622, CN101060903,linjiang,临江,CN,China,中国,jilin,吉林,baishan,白山,41.810688,126.9193,220681, CN101060904,donggang,东岗,CN,China,中国,jilin,吉林,baishan,白山,41.994892,126.64931,220605, CN101060905,changbai,长白,CN,China,中国,jilin,吉林,baishan,白山,41.41936,128.20338,220623, CN101060906,fusong,抚松,CN,China,中国,jilin,吉林,baishan,白山,42.33264,127.273796,220621, CN101060907,jiangyuan,江源,CN,China,中国,jilin,吉林,baishan,白山,42.048107,126.58423,220605, CN101060908,hunjiang,浑江,CN,China,中国,jilin,吉林,baishan,白山,41.943066,126.42803,220602, CN101070101,shenyang,沈阳,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.79677,123.42909,"210101,210100,210000", CN101070102,hunnan,浑南,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.741947,123.458984,210112, CN101070103,liaozhong,辽中,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.512726,122.73127,210115, CN101070104,kangping,康平,CN,China,中国,liaoning,辽宁,shenyang,沈阳,42.74153,123.3527,210123, CN101070105,faku,法库,CN,China,中国,liaoning,辽宁,shenyang,沈阳,42.507046,123.416725,210124, CN101070106,xinmin,新民,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.99651,122.828865,210181, CN101070107,heping,和平,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.788074,123.40666,210102, CN101070108,shenhe,沈河,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.79559,123.445694,210103, CN101070109,dadong,大东,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.808502,123.469955,210104, CN101070110,huanggu,皇姑,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.822334,123.40568,210105, CN101070111,tiexi,铁西,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.787807,123.35066,210106, CN101070112,sujiatun,苏家屯,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.665905,123.341606,210111, CN101070113,shenbeixinqu,沈北新区,CN,China,中国,liaoning,辽宁,shenyang,沈阳,42.05231,123.52147,210113, CN101070114,yuhong,于洪,CN,China,中国,liaoning,辽宁,shenyang,沈阳,41.795834,123.31083,210114, CN101070201,dalian,大连,CN,China,中国,liaoning,辽宁,dalian,大连,38.91459,121.61862,"210201,210200", CN101070202,wafangdian,瓦房店,CN,China,中国,liaoning,辽宁,dalian,大连,39.63065,122.002655,210281, CN101070203,jinzhou,金州,CN,China,中国,liaoning,辽宁,dalian,大连,39.052746,121.78941,210213, CN101070204,pulandian,普兰店,CN,China,中国,liaoning,辽宁,dalian,大连,39.401554,121.9705,210214, CN101070205,lvshun,旅顺,CN,China,中国,liaoning,辽宁,dalian,大连,38.812042,121.26713,210212, CN101070206,changhai,长海,CN,China,中国,liaoning,辽宁,dalian,大连,39.2724,122.58782,210224, CN101070207,zhuanghe,庄河,CN,China,中国,liaoning,辽宁,dalian,大连,39.69829,122.97061,210283, CN101070208,zhongshan,中山,CN,China,中国,liaoning,辽宁,dalian,大连,38.921555,121.64376,210202, CN101070209,xigang,西岗,CN,China,中国,liaoning,辽宁,dalian,大连,38.914265,121.61611,210203, CN101070210,shahekou,沙河口,CN,China,中国,liaoning,辽宁,dalian,大连,38.91286,121.593704,210204, CN101070211,ganjingzi,甘井子,CN,China,中国,liaoning,辽宁,dalian,大连,38.975147,121.58261,210211, CN101070301,anshan,鞍山,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.110626,122.99563,"210301,210300", CN101070302,taian,台安,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.38686,122.42973,210321, CN101070303,xiuyan,岫岩,CN,China,中国,liaoning,辽宁,anshan,鞍山,40.28151,123.28833,210323, CN101070304,haicheng,海城,CN,China,中国,liaoning,辽宁,anshan,鞍山,40.85253,122.7522,210381, CN101070305,tiedong,铁东,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.110344,122.99448,210302, CN101070306,tiexi,铁西,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.11069,122.97183,210303, CN101070307,lishan,立山,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.150623,123.0248,210304, CN101070308,qianshan,千山,CN,China,中国,liaoning,辽宁,anshan,鞍山,41.06891,122.949295,210311, CN101070401,fushun,抚顺,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.922646,124.09798,"210401,210400,210421", CN101070402,xinbin,新宾,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.732456,125.037544,210422, CN101070403,qingyuan,清原,CN,China,中国,liaoning,辽宁,fushun,抚顺,42.10135,124.92719,210423, CN101070405,xinfu,新抚,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.86082,123.902855,210402, CN101070406,dongzhou,东洲,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.86683,124.04722,210403, CN101070407,wanghua,望花,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.851803,123.801506,210404, CN101070408,shuncheng,顺城,CN,China,中国,liaoning,辽宁,fushun,抚顺,41.88113,123.91717,210411, CN101070501,benxi,本溪,CN,China,中国,liaoning,辽宁,benxi,本溪,41.29791,123.770515,"210501,210500", CN101070502,benxixian,本溪县,CN,China,中国,liaoning,辽宁,benxi,本溪,41.18,124.17,210521, CN101070503,pingshan,平山,CN,China,中国,liaoning,辽宁,benxi,本溪,41.29158,123.76123,210502, CN101070504,huanren,桓仁,CN,China,中国,liaoning,辽宁,benxi,本溪,41.268997,125.35919,210522, CN101070505,xihu,溪湖,CN,China,中国,liaoning,辽宁,benxi,本溪,41.330055,123.76523,210503, CN101070506,mingshan,明山,CN,China,中国,liaoning,辽宁,benxi,本溪,41.30243,123.76329,210504, CN101070507,nanfen,南芬,CN,China,中国,liaoning,辽宁,benxi,本溪,41.10409,123.74838,210505, CN101070601,dandong,丹东,CN,China,中国,liaoning,辽宁,dandong,丹东,40.124294,124.38304,"210601,210600", CN101070602,fengcheng,凤城,CN,China,中国,liaoning,辽宁,dandong,丹东,40.457565,124.07107,210682, CN101070603,kuandian,宽甸,CN,China,中国,liaoning,辽宁,dandong,丹东,40.73041,124.78487,210624, CN101070604,donggang,东港,CN,China,中国,liaoning,辽宁,dandong,丹东,39.88347,124.14944,210681, CN101070605,yuanbao,元宝,CN,China,中国,liaoning,辽宁,dandong,丹东,40.136482,124.39781,210602, CN101070606,zhenxing,振兴,CN,China,中国,liaoning,辽宁,dandong,丹东,40.102802,124.36115,210603, CN101070607,zhenan,振安,CN,China,中国,liaoning,辽宁,dandong,丹东,40.158558,124.42771,210604, CN101070701,jinzhou,锦州,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.11927,121.13574,"210701,210700", CN101070702,linghai,凌海,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.171738,121.364235,210781, CN101070703,guta,古塔,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.11572,121.13009,210702, CN101070704,yixian,义县,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.537224,121.24283,210727, CN101070705,heishan,黑山,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.691803,122.11791,210726, CN101070706,beizhen,北镇,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.598763,121.79596,210782, CN101070707,linghe,凌河,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.114662,121.151306,210703, CN101070708,taihe,太和,CN,China,中国,liaoning,辽宁,jinzhou,锦州,41.105377,121.1073,210711, CN101070801,yingkou,营口,CN,China,中国,liaoning,辽宁,yingkou,营口,40.66743,122.23515,"210801,210800", CN101070802,dashiqiao,大石桥,CN,China,中国,liaoning,辽宁,yingkou,营口,40.633972,122.5059,210882, CN101070803,gaizhou,盖州,CN,China,中国,liaoning,辽宁,yingkou,营口,40.405235,122.35554,210881, CN101070804,zhanqian,站前,CN,China,中国,liaoning,辽宁,yingkou,营口,40.66995,122.253235,210802, CN101070805,xishi,西市,CN,China,中国,liaoning,辽宁,yingkou,营口,40.663086,122.21007,210803, CN101070806,bayuquan,鲅鱼圈,CN,China,中国,liaoning,辽宁,yingkou,营口,40.263645,122.12724,210804, CN101070807,laobian,老边,CN,China,中国,liaoning,辽宁,yingkou,营口,40.682724,122.38258,210811, CN101070901,fuxin,阜新,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.058605,121.743126,"210901,210900,210921", CN101070902,zhangwu,彰武,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.384823,122.537445,210922, CN101070903,haizhou,海州,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.01116,121.65764,210902, CN101070904,xinqiu,新邱,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.0866,121.79054,210903, CN101070905,taiping,太平,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.011147,121.677574,210904, CN101070906,qinghemen,清河门,CN,China,中国,liaoning,辽宁,fuxin,阜新,41.780476,121.42018,210905, CN101070907,xihe,细河,CN,China,中国,liaoning,辽宁,fuxin,阜新,42.01922,121.65479,210911, CN101071001,liaoyang,辽阳,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.2694,123.18152,"211001,211000", CN101071002,liaoyangxian,辽阳县,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.21648,123.07967,211021, CN101071003,dengta,灯塔,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.427837,123.32587,211081, CN101071004,gongchangling,弓长岭,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.15783,123.43163,211005, CN101071005,baita,白塔,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.26745,123.17261,211002, CN101071006,wensheng,文圣,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.266766,123.188225,211003, CN101071007,hongwei,宏伟,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.205746,123.20046,211004, CN101071008,taizihe,太子河,CN,China,中国,liaoning,辽宁,liaoyang,辽阳,41.251682,123.18533,211011, CN101071101,tieling,铁岭,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.223316,123.72567,"211201,211200,211221", CN101071102,kaiyuan,开原,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.54214,124.04555,211282, CN101071103,changtu,昌图,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.784443,124.11017,211224, CN101071104,xifeng,西丰,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.73809,124.72332,211223, CN101071105,tiefa,调兵山,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.450733,123.545364,211281, CN101071106,yinzhou,银州,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.29228,123.84488,211202, CN101071107,qinghe,清河,CN,China,中国,liaoning,辽宁,tieling,铁岭,42.542976,124.14896,211204, CN101071201,chaoyang,朝阳,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.57676,120.45118,"211301,211300,211321", CN101071202,shuangta,双塔,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.579388,120.44877,211302, CN101071203,lingyuan,凌源,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.243088,119.40479,211382, CN101071204,kazuo,喀左,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.05,119.43,211324, CN101071205,beipiao,北票,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.803288,120.76695,211381, CN101071206,longcheng,龙城,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.576748,120.413376,211303, CN101071207,jianpingxian,建平县,CN,China,中国,liaoning,辽宁,chaoyang,朝阳,41.402576,119.642365,211322, CN101071301,panjin,盘锦,CN,China,中国,liaoning,辽宁,panjin,盘锦,41.124485,122.06957,"211101,211100", CN101071302,dawa,大洼,CN,China,中国,liaoning,辽宁,panjin,盘锦,40.994427,122.07171,211104, CN101071303,panshan,盘山,CN,China,中国,liaoning,辽宁,panjin,盘锦,41.2407,121.98528,211122, CN101071304,shuangtaizi,双台子,CN,China,中国,liaoning,辽宁,panjin,盘锦,41.190365,122.05573,211102, CN101071305,xinglongtai,兴隆台,CN,China,中国,liaoning,辽宁,panjin,盘锦,41.12242,122.071625,211103, CN101071401,huludao,葫芦岛,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.755573,120.85639,"211401,211400", CN101071402,jianchang,建昌,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.81287,119.80778,211422, CN101071403,suizhong,绥中,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.328407,120.34211,211421, CN101071404,xingcheng,兴城,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.61941,120.72936,211481, CN101071405,lianshan,连山,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.755142,120.85937,211402, CN101071406,longgang,龙港,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,40.70999,120.83857,211403, CN101071407,nanpiao,南票,CN,China,中国,liaoning,辽宁,huludao,葫芦岛,41.098812,120.75231,211404, CN101080101,huhehaote,呼和浩特,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,40.81831,111.6708,"150101,150100,150000", CN101080102,tuzuoqi,土左旗,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,40.41,111.09,150121, CN101080103,tuoxian,托县,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,40.16,111.11,150122, CN101080104,helin,和林,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,40.380287,111.82414,150123, CN101080105,qingshuihe,清水河,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,39.91248,111.67222,150124, CN101080106,saihan,赛罕,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,40.807835,111.69846,150105, CN101080107,wuchuan,武川,CN,China,中国,neimenggu,内蒙古,huhehaote,呼和浩特,41.094482,111.456566,150125, CN101080108,xincheng,新城,CN,China,中国,namenggu,内蒙古,huhehaote,呼和浩特,40.826225,111.68597,150102, CN101080109,huimin,回民,CN,China,中国,namenggu,内蒙古,huhehaote,呼和浩特,40.815147,111.66216,150103, CN101080110,yuquan,玉泉,CN,China,中国,namenggu,内蒙古,huhehaote,呼和浩特,40.79942,111.66543,150104, CN101080201,baotou,包头,CN,China,中国,neimenggu,内蒙古,baotou,包头,40.65817,109.84041,"150201,150200", CN101080202,baiyunebo,白云鄂博,CN,China,中国,neimenggu,内蒙古,baotou,包头,41.769245,109.97016,150206, CN101080203,mandula,满都拉,CN,China,中国,neimenggu,内蒙古,baotou,包头,42.53366,110.12258,150223, CN101080204,tuyouqi,土右旗,CN,China,中国,neimenggu,内蒙古,baotou,包头,40.33,110.32,150221, CN101080205,guyang,固阳,CN,China,中国,neimenggu,内蒙古,baotou,包头,41.030003,110.06342,150222, CN101080206,damaoqi,达茂旗,CN,China,中国,neimenggu,内蒙古,baotou,包头,41.42,110.26,150223, CN101080207,xilamuren,希拉穆仁,CN,China,中国,neimenggu,内蒙古,wulanchabu,包头,41.32316,111.23631,150223, CN101080208,donghe,东河,CN,China,中国,namenggu,内蒙古,baotou,包头,40.587055,110.02689,150202, CN101080209,kundoulun,昆都仑,CN,China,中国,namenggu,内蒙古,baotou,包头,40.661346,109.82293,150203, CN101080210,qingshan,青山,CN,China,中国,namenggu,内蒙古,baotou,包头,40.668556,109.88005,150204, CN101080211,shiguai,石拐,CN,China,中国,namenggu,内蒙古,baotou,包头,40.672092,110.27257,150205, CN101080212,jiuyuan,九原,CN,China,中国,namenggu,内蒙古,baotou,包头,40.600582,109.968124,150207, CN101080301,wuhai,乌海,CN,China,中国,neimenggu,内蒙古,wuhai,乌海,39.673733,106.82556,"150301,150300", CN101080302,haibowan,海勃湾,CN,China,中国,namenggu,内蒙古,wuhai,乌海,39.673527,106.817764,150302, CN101080303,hainan,海南,CN,China,中国,namenggu,内蒙古,wuhai,乌海,39.44153,106.88479,150303, CN101080304,wuda,乌达,CN,China,中国,namenggu,内蒙古,wuhai,乌海,39.50229,106.72271,150304, CN101080401,jining,集宁,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.034134,113.116455,150902, CN101080402,zhuozi,卓资,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,40.89576,112.577705,150921, CN101080403,huade,化德,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.899334,114.01008,150922, CN101080404,shangdu,商都,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.56016,113.560646,150923, CN101080405,wulanchabu,乌兰察布,CN,China,中国,namenggu,内蒙古,wulanchabu,乌兰察布,41.034126,113.11454,"150901,150900", CN101080406,xinghe,兴和,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,40.872437,113.83401,150924, CN101080407,liangcheng,凉城,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,40.531628,112.50091,150925, CN101080408,chayouqianqi,察右前旗,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,40.48,113.13,150926, CN101080409,chayouzhongqi,察右中旗,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.16,112.37,150927, CN101080410,chayouhouqi,察右后旗,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.27,113.11,150928, CN101080411,siziwangqi,四子王旗,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,41.528114,111.70123,150929, CN101080412,fengzhen,丰镇,CN,China,中国,neimenggu,内蒙古,wulanchabu,乌兰察布,40.437534,113.16346,150981, CN101080501,tongliao,通辽,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,43.617428,122.26312,"150501,150500", CN101080502,shebotu,舍伯吐,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,44.03114,121.99002,150521, CN101080503,kezuozhongqi,科左中旗,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,44.08,123.18,150521, CN101080504,kezuohouqi,科左后旗,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,42.58,122.21,150522, CN101080505,qinglongshan,青龙山,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,42.395172,121.039665,150525, CN101080506,kailu,开鲁,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,43.602432,121.3088,150523, CN101080507,kulun,库伦,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,42.73469,121.77489,150524, CN101080508,naiman,奈曼,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,42.84685,120.662544,150525, CN101080509,zhalute,扎鲁特,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,44.555294,120.90527,150526, CN101080510,keerqin,科尔沁,CN,China,中国,namenggu,内蒙古,tongliao,通辽,45.059647,121.47282,150502, CN101080511,bayaertuhushuo,巴雅尔吐胡硕,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,45.069443,120.33295,150526, CN101080512,huolinguole,霍林郭勒,CN,China,中国,neimenggu,内蒙古,tongliao,通辽,45.53236,119.65786,150581, CN101080601,chifeng,赤峰,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,42.27532,118.9568,"150401,150400", CN101080602,hongshan,红山,CN,China,中国,namenggu,内蒙古,chifeng,赤峰,42.269733,118.96109,150402, CN101080603,aluqi,阿鲁旗,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,43.53,120.03,150421, CN101080605,balinzuoqi,巴林左旗,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,43.980717,119.39174,150422, CN101080606,balinyouqi,巴林右旗,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,43.52896,118.678345,150423, CN101080607,linxi,林西,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,43.605328,118.05775,150424, CN101080608,keshiketeng,克什克腾,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,43.256233,117.542465,150425, CN101080609,wengniute,翁牛特,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,42.937126,119.02262,150426, CN101080610,gangzi,岗子,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,42.56465,118.42989,150404, CN101080611,kalaqin,喀喇沁,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,41.92778,118.70857,150428, CN101080612,balihan,八里罕,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,41.51674,118.75042,150429, CN101080613,ningcheng,宁城,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,41.598694,119.33924,150429, CN101080614,aohan,敖汉,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,42.28701,119.90649,150430, CN101080616,yuanbaoshan,元宝山,CN,China,中国,namenggu,内蒙古,chifeng,赤峰,42.04117,119.28988,150403, CN101080617,songshan,松山,CN,China,中国,namenggu,内蒙古,chifeng,赤峰,42.281048,118.93896,150404, CN101080618,fuhe,富河,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,44.452843,119.29289,150422, CN101080619,baoguotu,宝国图,CN,China,中国,neimenggu,内蒙古,chifeng,赤峰,42.32052,120.69266,150430, CN101080701,eerduosi,鄂尔多斯,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.81718,109.99029,"150601,150600,150603", CN101080703,dalate,达拉特,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,40.404076,110.04028,150621, CN101080704,zhungeer,准格尔,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.86522,111.238335,150622, CN101080705,eqianqi,鄂前旗,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,38.11,107.29,150623, CN101080706,henan,河南,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,37.8581,108.7311,150626, CN101080707,yihewusu,伊和乌素,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.69578,109.22149,150625, CN101080708,etuoke,鄂托克,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.095753,107.982605,150624, CN101080709,hangjinqi,杭锦旗,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.831787,108.73632,150625, CN101080710,wushenqi,乌审旗,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,38.59661,108.84245,150626, CN101080711,yijinhuoluo,伊金霍洛,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.604313,109.7874,150627, CN101080712,wushenzhao,乌审召,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.219353,109.016396,150626, CN101080713,dongsheng,东胜,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.81788,109.98945,150602, CN101080714,kangbashi,康巴什,CN,China,中国,neimenggu,内蒙古,eerduosi,鄂尔多斯,39.608303,109.781555,150603, CN101080801,linhe,临河,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,40.75709,107.417015,150802, CN101080802,wuyuan,五原,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.097637,108.27066,150821, CN101080803,dengkou,磴口,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,40.33048,107.00606,150822, CN101080804,wuqianqi,乌前旗,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,40.44,108.39,150823, CN101080805,dashetai,大佘太,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.02305,109.1458,150823, CN101080806,wuzhongqi,乌中旗,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.34,108.31,150824, CN101080807,wuhouqi,乌后旗,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.27,106.59,150825, CN101080808,hailisu,海力素,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.64086,106.8967,150825, CN101080809,narenbaolige,那仁宝力格,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,41.14622,106.45576,150825, CN101080810,hangjinhouqi,杭锦后旗,CN,China,中国,neimenggu,内蒙古,bayannaoer,巴彦淖尔,40.888798,107.14768,150826, CN101080811,bayannaoer,巴彦淖尔,CN,China,中国,namenggu,内蒙古,bayannaoer,巴彦淖尔,40.7574,107.41696,"150801,150800", CN101080901,xilinhaote,锡林浩特,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,43.9443,116.0919,152502, CN101080902,xilinguole,锡林郭勒,CN,China,中国,namenggu,内蒙古,xilinguole,锡林郭勒,43.94402,116.090996,152500, CN101080903,erlianhaote,二连浩特,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,43.652897,111.97981,152501, CN101080904,abaga,阿巴嘎,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,44.022728,114.97062,152522, CN101080906,suzuoqi,苏左旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,43.52,113.38,152523, CN101080907,suyouqi,苏右旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.45,112.39,152524, CN101080908,zhurihe,朱日和,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.40647,112.90234,152524, CN101080909,dongwuqi,东乌旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,45.31,116.58,152525, CN101080910,xiwuqi,西乌旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,44.35,117.36,152526, CN101080911,taipusiqi,太仆寺,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,41.8952,115.28728,152527, CN101080912,xianghuang,镶黄旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.239227,113.84387,152528, CN101080913,zhengxiangbaiqi,正镶白旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.286808,115.031425,152529, CN101080914,zhenglanqi,正蓝旗,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.245895,116.00331,152530, CN101080915,duolun,多伦,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,42.197964,116.47729,152531, CN101080916,boketu,博克图,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,48.753597,121.91604,150782, CN101080917,wulagai,乌拉盖,CN,China,中国,neimenggu,内蒙古,xilinguole,锡林郭勒,45.711323,118.838394,152525, CN101081001,hailaer,海拉尔,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.21389,119.76492,150702, CN101081002,xiaoergou,小二沟,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.17609,123.3242,150723, CN101081003,arongqi,阿荣旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,48.130505,123.464615,150721, CN101081004,molidawa,莫力达瓦,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,48.478386,124.5074,150722, CN101081005,elunchunqi,鄂伦春旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,50.35,123.44,150723, CN101081006,ewenkeqi,鄂温克旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.09,119.45,150724, CN101081007,chenqi,陈旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.19,119.26,150725, CN101081008,xinzuoqi,新左旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,48.13,118.16,150726, CN101081009,xinyouqi,新右旗,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,48.4,116.49,150727, CN101081010,manzhouli,满洲里,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.59079,117.45556,150781, CN101081011,yakeshi,牙克石,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,49.287025,120.729004,150782, CN101081012,zhalantun,扎兰屯,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,48.007412,122.7444,150783, CN101081013,hulunbeier,呼伦贝尔,CN,China,中国,namenggu,内蒙古,hulunbeier,呼伦贝尔,49.215332,119.75817,"150701,150700", CN101081014,eerguna,额尔古纳,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,50.2439,120.178635,150784, CN101081015,genhe,根河,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,50.780453,121.53272,150785, CN101081016,tulihe,图里河,CN,China,中国,neimenggu,内蒙古,hulunbeier,呼伦贝尔,50.480488,121.682495,150782, CN101081017,zhalainuoer,扎赉诺尔,CN,China,中国,namenggu,内蒙古,hulunbeier,呼伦贝尔,49.456566,117.71637,150703, CN101081101,wulanhaote,乌兰浩特,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,46.077236,122.06898,152201, CN101081102,aershan,阿尔山,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,47.177,119.94366,152202, CN101081103,keyouzhongqi,科右中旗,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,45.03,121.28,152222, CN101081104,huerle,胡尔勒,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,46.71723,122.08046,152223, CN101081105,zhanlaite,扎赉特,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,46.725136,122.90933,152223, CN101081106,suolun,索伦,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,46.61903,121.24779,152221, CN101081107,tuquan,突泉,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,45.380985,121.56486,152224, CN101081108,xinganmeng,兴安盟,CN,China,中国,namenggu,内蒙古,xinganmeng,兴安盟,46.076267,122.07032,152200, CN101081109,keyouqianqi,科右前旗,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,46.063,122.069,152221, CN101081110,gaoliban,高力板,CN,China,中国,neimenggu,内蒙古,xinganmeng,兴安盟,44.794903,121.62372,152222, CN101081201,azuoqi,阿左旗,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,39.641,105.111,152921, CN101081202,ayouqi,阿右旗,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,39.13,101.41,152922, CN101081203,ejina,额济纳,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,41.958813,101.06944,152923, CN101081204,guanzihu,拐子湖,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,41.368034,102.41601,152923, CN101081205,jilantai,吉兰泰,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,39.75628,105.75884,152921, CN101081209,bayannuorigong,巴彦诺日公,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,40.166042,104.806656,152921, CN101081210,yabulai,雅布赖,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,39.429592,102.779366,152922, CN101081211,wusitai,乌斯太,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,39.435158,106.71949,152921, CN101081212,luanjingtan,孪井滩,CN,China,中国,neimenggu,内蒙古,alashanmeng,阿拉善盟,37.88537,105.403366,152921, CN101081213,alashanmeng,阿拉善盟,CN,China,中国,namenggu,内蒙古,alashanmeng,阿拉善盟,38.844814,105.70642,152900, CN101090101,shijiazhuang,石家庄,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.045475,114.502464,"130101,130100,130000", CN101090102,jingxing,井陉,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.033615,114.144485,130121, CN101090103,zhengding,正定,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.147835,114.569885,130123, CN101090104,luancheng,栾城,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.88691,114.65428,130111, CN101090105,xingtang,行唐,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.437424,114.552734,130125, CN101090106,lingshou,灵寿,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.306545,114.37946,130126, CN101090107,gaoyi,高邑,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.605713,114.6107,130127, CN101090108,shenze,深泽,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.18454,115.20021,130128, CN101090109,zanhuang,赞皇,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.6602,114.38776,130129, CN101090110,wuji,无极,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.176376,114.977844,130130, CN101090111,pingshan,平山,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.25931,114.18414,130131, CN101090112,yuanshi,元氏,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.762512,114.52618,130132, CN101090113,zhaoxian,赵县,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.75434,114.77536,130133, CN101090114,xinji,辛集,CN,China,中国,hebei,河北,shijiazhuang,石家庄,37.92904,115.21745,130181, CN101090115,gaocheng,藁城,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.033768,114.84965,130109, CN101090116,jinzhou,晋州,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.027477,115.04488,130183, CN101090117,xinle,新乐,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.34477,114.68578,130184, CN101090118,luquan,鹿泉,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.093994,114.32102,130110, CN101090119,changan,长安,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.0475,114.54815,130102, CN101090120,qiaoxi,桥西,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.02838,114.46293,130104, CN101090121,xinhua,新华,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.067142,114.46597,130105, CN101090122,jingxingkuangqu,井陉矿区,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.069748,114.05818,130107, CN101090123,yuhua,裕华,CN,China,中国,hebei,河北,shijiazhuang,石家庄,38.027695,114.53326,130108, CN101090201,baoding,保定,CN,China,中国,hebei,河北,baoding,保定,38.867657,115.48233,"130601,130600", CN101090202,mancheng,满城,CN,China,中国,hebei,河北,baoding,保定,38.95138,115.32442,130607, CN101090203,fuping,阜平,CN,China,中国,hebei,河北,baoding,保定,38.847275,114.1988,130624, CN101090204,xushui,徐水,CN,China,中国,hebei,河北,baoding,保定,39.020393,115.64941,130609, CN101090205,tangxian,唐县,CN,China,中国,hebei,河北,baoding,保定,38.748543,114.98124,130627, CN101090206,gaoyang,高阳,CN,China,中国,hebei,河北,baoding,保定,38.69009,115.77888,130628, CN101090208,jingxiu,竞秀,CN,China,中国,hebei,河北,baoding,保定,38.88662,115.47066,130602, CN101090209,laiyuan,涞源,CN,China,中国,hebei,河北,baoding,保定,39.35755,114.692566,130630, CN101090210,wangdu,望都,CN,China,中国,hebei,河北,baoding,保定,38.707447,115.15401,130631, CN101090212,yixian,易县,CN,China,中国,hebei,河北,baoding,保定,39.35297,115.501144,130633, CN101090213,lianchi,莲池,CN,China,中国,hebei,河北,baoding,保定,38.865005,115.50093,130606, CN101090214,quyang,曲阳,CN,China,中国,hebei,河北,baoding,保定,38.61999,114.704056,130634, CN101090215,lixian,蠡县,CN,China,中国,hebei,河北,baoding,保定,38.49643,115.58363,130635, CN101090216,shunping,顺平,CN,China,中国,hebei,河北,baoding,保定,38.845127,115.13275,130636, CN101090218,zhuozhou,涿州,CN,China,中国,hebei,河北,baoding,保定,39.485764,115.97341,130681, CN101090219,dingzhou,定州,CN,China,中国,hebei,河北,baoding,保定,38.5176,114.99139,130682, CN101090220,anguo,安国,CN,China,中国,hebei,河北,baoding,保定,38.421368,115.33141,130683, CN101090221,gaobeidian,高碑店,CN,China,中国,hebei,河北,baoding,保定,39.32769,115.882706,130684, CN101090222,laishui,涞水,CN,China,中国,hebei,河北,baoding,保定,39.393147,115.71198,130623, CN101090223,dingxing,定兴,CN,China,中国,hebei,河北,baoding,保定,39.266193,115.7969,130626, CN101090224,qingyuan,清苑,CN,China,中国,hebei,河北,baoding,保定,38.77101,115.49222,130608, CN101090225,boye,博野,CN,China,中国,hebei,河北,baoding,保定,38.45827,115.4618,130637, CN101090301,zhangjiakou,张家口,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.8119,114.884094,"130701,130700", CN101090302,xuanhua,宣化,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.609367,115.0632,130705, CN101090303,zhangbei,张北,CN,China,中国,hebei,河北,zhangjiakou,张家口,41.151714,114.71595,130722, CN101090304,kangbao,康保,CN,China,中国,hebei,河北,zhangjiakou,张家口,41.850044,114.61581,130723, CN101090305,guyuan,沽源,CN,China,中国,hebei,河北,zhangjiakou,张家口,41.66742,115.68484,130724, CN101090306,shangyi,尚义,CN,China,中国,hebei,河北,zhangjiakou,张家口,41.08009,113.977715,130725, CN101090307,yuxian,蔚县,CN,China,中国,hebei,河北,zhangjiakou,张家口,39.83718,114.582695,130726, CN101090308,yangyuan,阳原,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.11342,114.16734,130727, CN101090309,huaian,怀安,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.671272,114.42236,130728, CN101090310,wanquan,万全,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.765137,114.73613,130708, CN101090311,huailai,怀来,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.405403,115.52084,130730, CN101090312,zhuolu,涿鹿,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.3787,115.219246,130731, CN101090313,chicheng,赤城,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.912083,115.83271,130732, CN101090314,chongli,崇礼,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.971302,115.281654,130709, CN101090315,qiaodong,桥东,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.813873,114.88566,130702, CN101090316,qiaoxi,桥西,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.824387,114.882126,130703, CN101090317,xiahuayuan,下花园,CN,China,中国,hebei,河北,zhangjiakou,张家口,40.488644,115.281,130706, CN101090401,shuangqiao,双桥,CN,China,中国,hebei,河北,chengde,承德,40.976204,117.939156,130802, CN101090402,chengde,承德,CN,China,中国,hebei,河北,chengde,承德,40.976204,117.939156,"130801,130800", CN101090403,chengdexian,承德县,CN,China,中国,hebei,河北,chengde,承德,40.76864,118.17249,130821, CN101090404,xinglong,兴隆,CN,China,中国,hebei,河北,chengde,承德,40.418526,117.507095,130822, CN101090405,pingquan,平泉,CN,China,中国,hebei,河北,chengde,承德,41.00561,118.69024,130881, CN101090406,luanping,滦平,CN,China,中国,hebei,河北,chengde,承德,40.936646,117.33713,130824, CN101090407,longhua,隆化,CN,China,中国,hebei,河北,chengde,承德,41.316666,117.73634,130825, CN101090408,fengning,丰宁,CN,China,中国,hebei,河北,chengde,承德,41.209904,116.65121,130826, CN101090409,kuancheng,宽城,CN,China,中国,hebei,河北,chengde,承德,40.607983,118.48864,130827, CN101090410,weichang,围场,CN,China,中国,hebei,河北,chengde,承德,41.949406,117.764084,130828, CN101090411,shuangluan,双滦,CN,China,中国,hebei,河北,chengde,承德,40.959755,117.797485,130803, CN101090412,yingshouyingzikuang,鹰手营子矿,CN,China,中国,hebei,河北,chengde,承德,40.546955,117.661156,130804, CN101090501,tangshan,唐山,CN,China,中国,hebei,河北,tangshan,唐山,39.635113,118.17539,"130201,130200", CN101090502,fengnan,丰南,CN,China,中国,hebei,河北,tangshan,唐山,39.56303,118.110794,130207, CN101090503,fengrun,丰润,CN,China,中国,hebei,河北,tangshan,唐山,39.831364,118.15578,130208, CN101090504,luanxian,滦县,CN,China,中国,hebei,河北,tangshan,唐山,39.74485,118.69955,130223, CN101090505,luannan,滦南,CN,China,中国,hebei,河北,tangshan,唐山,39.506203,118.68155,130224, CN101090506,leting,乐亭,CN,China,中国,hebei,河北,tangshan,唐山,39.42813,118.90534,130225, CN101090507,qianxi,迁西,CN,China,中国,hebei,河北,tangshan,唐山,40.146236,118.30514,130227, CN101090508,yutian,玉田,CN,China,中国,hebei,河北,tangshan,唐山,39.88732,117.75366,130229, CN101090509,caofeidian,曹妃甸,CN,China,中国,hebei,河北,tangshan,唐山,39.27828,118.44659,130209, CN101090510,zunhua,遵化,CN,China,中国,hebei,河北,tangshan,唐山,40.188618,117.96587,130281, CN101090511,qianan,迁安,CN,China,中国,hebei,河北,tangshan,唐山,40.012108,118.701935,130283, CN101090513,lunan,路南,CN,China,中国,hebei,河北,tangshan,唐山,39.61516,118.21082,130202, CN101090514,lubei,路北,CN,China,中国,hebei,河北,tangshan,唐山,39.628536,118.174736,130203, CN101090515,guye,古冶,CN,China,中国,hebei,河北,tangshan,唐山,39.715736,118.45429,130204, CN101090516,kaiping,开平,CN,China,中国,hebei,河北,tangshan,唐山,39.67617,118.26443,130205, CN101090601,langfang,廊坊,CN,China,中国,hebei,河北,langfang,廊坊,39.523926,116.70444,"131001,131000", CN101090602,guan,固安,CN,China,中国,hebei,河北,langfang,廊坊,39.436466,116.2999,131022, CN101090603,yongqing,永清,CN,China,中国,hebei,河北,langfang,廊坊,39.319717,116.49809,131023, CN101090604,xianghe,香河,CN,China,中国,hebei,河北,langfang,廊坊,39.757214,117.007164,131024, CN101090605,dacheng,大城,CN,China,中国,hebei,河北,langfang,廊坊,38.699215,116.64073,131025, CN101090606,wenan,文安,CN,China,中国,hebei,河北,langfang,廊坊,38.866802,116.460106,131026, CN101090607,dachang,大厂,CN,China,中国,hebei,河北,langfang,廊坊,39.889267,116.9865,131028, CN101090608,bazhou,霸州,CN,China,中国,hebei,河北,langfang,廊坊,39.117332,116.39202,131081, CN101090609,sanhe,三河,CN,China,中国,hebei,河北,langfang,廊坊,39.982777,117.07702,131082, CN101090610,anci,安次,CN,China,中国,hebei,河北,langfang,廊坊,39.502567,116.69454,131002, CN101090611,guangyang,广阳,CN,China,中国,hebei,河北,langfang,廊坊,39.52193,116.71371,131003, CN101090701,cangzhou,沧州,CN,China,中国,hebei,河北,cangzhou,沧州,38.31058,116.85746,"130901,130900", CN101090702,qingxian,青县,CN,China,中国,hebei,河北,cangzhou,沧州,38.569645,116.83839,130922, CN101090703,dongguang,东光,CN,China,中国,hebei,河北,cangzhou,沧州,37.88655,116.54206,130923, CN101090704,haixing,海兴,CN,China,中国,hebei,河北,cangzhou,沧州,38.141582,117.496605,130924, CN101090705,yanshan,盐山,CN,China,中国,hebei,河北,cangzhou,沧州,38.05614,117.22981,130925, CN101090706,suning,肃宁,CN,China,中国,hebei,河北,cangzhou,沧州,38.4271,115.83585,130926, CN101090707,nanpi,南皮,CN,China,中国,hebei,河北,cangzhou,沧州,38.04244,116.70917,130927, CN101090708,wuqiao,吴桥,CN,China,中国,hebei,河北,cangzhou,沧州,37.62818,116.39151,130928, CN101090709,xianxian,献县,CN,China,中国,hebei,河北,cangzhou,沧州,38.18966,116.12384,130929, CN101090710,mengcun,孟村,CN,China,中国,hebei,河北,cangzhou,沧州,38.057953,117.1051,130930, CN101090711,botou,泊头,CN,China,中国,hebei,河北,cangzhou,沧州,38.07348,116.57016,130981, CN101090712,renqiu,任丘,CN,China,中国,hebei,河北,cangzhou,沧州,38.706512,116.106766,130982, CN101090713,huanghua,黄骅,CN,China,中国,hebei,河北,cangzhou,沧州,38.36924,117.3438,130983, CN101090714,hejian,河间,CN,China,中国,hebei,河北,cangzhou,沧州,38.44149,116.089455,130984, CN101090715,xinhua,新华,CN,China,中国,hebei,河北,cangzhou,沧州,38.308273,116.87305,130902, CN101090716,cangxian,沧县,CN,China,中国,hebei,河北,cangzhou,沧州,38.219856,117.00748,130921, CN101090717,yunhe,运河,CN,China,中国,hebei,河北,cangzhou,沧州,38.307404,116.840065,130903, CN101090801,hengshui,衡水,CN,China,中国,hebei,河北,hengshui,衡水,37.735096,115.66599,"131101,131100", CN101090802,zaoqiang,枣强,CN,China,中国,hebei,河北,hengshui,衡水,37.511513,115.7265,131121, CN101090803,wuyi,武邑,CN,China,中国,hebei,河北,hengshui,衡水,37.803776,115.89242,131122, CN101090804,wuqiang,武强,CN,China,中国,hebei,河北,hengshui,衡水,38.03698,115.97024,131123, CN101090805,raoyang,饶阳,CN,China,中国,hebei,河北,hengshui,衡水,38.23267,115.72658,131124, CN101090806,anping,安平,CN,China,中国,hebei,河北,hengshui,衡水,38.233513,115.51963,131125, CN101090807,gucheng,故城,CN,China,中国,hebei,河北,hengshui,衡水,37.350983,115.96674,131126, CN101090808,jingxian,景县,CN,China,中国,hebei,河北,hengshui,衡水,37.686623,116.258446,131127, CN101090809,fucheng,阜城,CN,China,中国,hebei,河北,hengshui,衡水,37.869946,116.16473,131128, CN101090810,jizhou,冀州,CN,China,中国,hebei,河北,hengshui,衡水,37.54279,115.57917,131103, CN101090811,shenzhou,深州,CN,China,中国,hebei,河北,hengshui,衡水,38.00347,115.554596,131182, CN101090812,taocheng,桃城,CN,China,中国,hebei,河北,hengshui,衡水,37.73224,115.69495,131102, CN101090901,xingtai,邢台,CN,China,中国,hebei,河北,xingtai,邢台,37.05073,114.561134,"130501,130500,130521", CN101090902,lincheng,临城,CN,China,中国,hebei,河北,xingtai,邢台,37.444008,114.506874,130522, CN101090903,qiaodong,桥东,CN,China,中国,hebei,河北,xingtai,邢台,37.064125,114.50713,130502, CN101090904,neiqiu,内丘,CN,China,中国,hebei,河北,xingtai,邢台,37.287663,114.51152,130523, CN101090905,baixiang,柏乡,CN,China,中国,hebei,河北,xingtai,邢台,37.483597,114.69338,130524, CN101090906,longyao,隆尧,CN,China,中国,hebei,河北,xingtai,邢台,37.350925,114.776344,130525, CN101090907,nanhe,南和,CN,China,中国,hebei,河北,xingtai,邢台,37.00381,114.691376,130527, CN101090908,ningjin,宁晋,CN,China,中国,hebei,河北,xingtai,邢台,37.618958,114.92103,130528, CN101090909,julu,巨鹿,CN,China,中国,hebei,河北,xingtai,邢台,37.21768,115.03878,130529, CN101090910,xinhe,新河,CN,China,中国,hebei,河北,xingtai,邢台,37.526215,115.247536,130530, CN101090911,guangzong,广宗,CN,China,中国,hebei,河北,xingtai,邢台,37.075546,115.1428,130531, CN101090912,pingxiang,平乡,CN,China,中国,hebei,河北,xingtai,邢台,37.069405,115.02922,130532, CN101090913,weixian,威县,CN,China,中国,hebei,河北,xingtai,邢台,36.983273,115.27275,130533, CN101090914,qinghe,清河,CN,China,中国,hebei,河北,xingtai,邢台,37.05999,115.669,130534, CN101090915,linxi,临西,CN,China,中国,hebei,河北,xingtai,邢台,36.8642,115.49869,130535, CN101090916,nangong,南宫,CN,China,中国,hebei,河北,xingtai,邢台,37.35967,115.3981,130581, CN101090917,shahe,沙河,CN,China,中国,hebei,河北,xingtai,邢台,36.861904,114.504906,130582, CN101090918,renxian,任县,CN,China,中国,hebei,河北,xingtai,邢台,37.12995,114.68447,130526, CN101090919,qiaoxi,桥西,CN,China,中国,hebei,河北,xingtai,邢台,37.06801,114.47369,130503, CN101091001,handan,邯郸,CN,China,中国,hebei,河北,handan,邯郸,36.612274,114.490685,"130401,130400", CN101091002,fengfeng,峰峰,CN,China,中国,hebei,河北,handan,邯郸,36.420486,114.20994,130406, CN101091003,linzhang,临漳,CN,China,中国,hebei,河北,handan,邯郸,36.337605,114.6107,130423, CN101091004,chengan,成安,CN,China,中国,hebei,河北,handan,邯郸,36.443832,114.68036,130424, CN101091005,daming,大名,CN,China,中国,hebei,河北,handan,邯郸,36.283318,115.15259,130425, CN101091006,shexian,涉县,CN,China,中国,hebei,河北,handan,邯郸,36.563145,113.673294,130426, CN101091007,cixian,磁县,CN,China,中国,hebei,河北,handan,邯郸,36.367672,114.38208,130427, CN101091008,feixiang,肥乡,CN,China,中国,hebei,河北,handan,邯郸,36.55578,114.80515,130407, CN101091009,yongnian,永年,CN,China,中国,hebei,河北,handan,邯郸,36.776413,114.49616,130408, CN101091010,qiuxian,邱县,CN,China,中国,hebei,河北,handan,邯郸,36.81325,115.16859,130430, CN101091011,jize,鸡泽,CN,China,中国,hebei,河北,handan,邯郸,36.91491,114.87852,130431, CN101091012,guangping,广平,CN,China,中国,hebei,河北,handan,邯郸,36.483604,114.95086,130432, CN101091013,guantao,馆陶,CN,China,中国,hebei,河北,handan,邯郸,36.53946,115.289055,130433, CN101091014,weixian,魏县,CN,China,中国,hebei,河北,handan,邯郸,36.354248,114.93411,130434, CN101091015,quzhou,曲周,CN,China,中国,hebei,河北,handan,邯郸,36.7734,114.95759,130435, CN101091016,wuan,武安,CN,China,中国,hebei,河北,handan,邯郸,36.696114,114.19458,130481, CN101091017,hanshan,邯山,CN,China,中国,hebei,河北,handan,邯郸,36.603195,114.484985,130402, CN101091018,congtai,丛台,CN,China,中国,hebei,河北,handan,邯郸,36.61108,114.494705,130403, CN101091019,fuxing,复兴,CN,China,中国,hebei,河北,handan,邯郸,36.615482,114.458244,130404, CN101091101,qinhuangdao,秦皇岛,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.94253,119.58658,"130301,130300", CN101091102,qinglong,青龙,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,40.40602,118.95455,130321, CN101091103,changli,昌黎,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.70973,119.16454,130322, CN101091104,funing,抚宁,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.887054,119.240654,130306, CN101091105,lulong,卢龙,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.89164,118.881805,130324, CN101091106,beidaihe,北戴河,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.825123,119.48628,130304, CN101091107,haigang,海港,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.94346,119.59622,130302, CN101091108,shanhaiguan,山海关,CN,China,中国,hebei,河北,qinhuangdao,秦皇岛,39.998024,119.75359,130303, CN101091201,xionganxinqu,雄安新区,CN,China,中国,hebei,河北,xionganxinqu,雄安新区,39.04315,115.86724,130638, CN101091202,rongcheng,容城,CN,China,中国,hebei,河北,rongcheng,雄安新区,39.05282,115.86625,130629, CN101091203,anxin,安新,CN,China,中国,hebei,河北,anxin,雄安新区,38.929913,115.93198,130632, CN101091204,xiongxian,雄县,CN,China,中国,hebei,河北,xiongxian,雄安新区,38.990818,116.107475,130638, CN101100101,taiyuan,太原,CN,China,中国,shanxi,山西,taiyuan,太原,37.857014,112.54925,"140101,140100,140000", CN101100102,qingxu,清徐,CN,China,中国,shanxi,山西,taiyuan,太原,37.60729,112.35796,140121, CN101100103,yangqu,阳曲,CN,China,中国,shanxi,山西,taiyuan,太原,38.058796,112.67382,140122, CN101100104,loufan,娄烦,CN,China,中国,shanxi,山西,taiyuan,太原,38.066036,111.7938,140123, CN101100105,gujiao,古交,CN,China,中国,shanxi,山西,taiyuan,太原,37.908535,112.174355,140181, CN101100106,jiancaopingqu,尖草坪区,CN,China,中国,shanxi,山西,taiyuan,太原,37.93989,112.48712,140108, CN101100107,xiaodianqu,小店区,CN,China,中国,shanxi,山西,taiyuan,太原,37.817974,112.56427,140105, CN101100108,yingze,迎泽,CN,China,中国,shanxi,山西,taiyuan,太原,37.855804,112.55885,140106, CN101100109,xinghualing,杏花岭,CN,China,中国,shanxi,山西,taiyuan,太原,37.87929,112.560745,140107, CN101100110,wanbailin,万柏林,CN,China,中国,shanxi,山西,taiyuan,太原,37.86265,112.522255,140109, CN101100111,jinyuan,晋源,CN,China,中国,shanxi,山西,taiyuan,太原,37.71562,112.47785,140110, CN101100201,datong,大同,CN,China,中国,shanxi,山西,datong,大同,40.09051,113.30144,"140201,140200,140202", CN101100202,yanggao,阳高,CN,China,中国,shanxi,山西,datong,大同,40.364925,113.74987,140221, CN101100203,datongxian,大同县,CN,China,中国,shanxi,山西,datong,大同,40.039345,113.611305,140227, CN101100204,tianzhen,天镇,CN,China,中国,shanxi,山西,datong,大同,40.421337,114.09112,140222, CN101100205,guangling,广灵,CN,China,中国,shanxi,山西,datong,大同,39.76305,114.27925,140223, CN101100206,lingqiu,灵丘,CN,China,中国,shanxi,山西,datong,大同,39.438866,114.23576,140224, CN101100207,hunyuan,浑源,CN,China,中国,shanxi,山西,datong,大同,39.6991,113.69809,140225, CN101100208,zuoyun,左云,CN,China,中国,shanxi,山西,datong,大同,40.012875,112.70641,140226, CN101100209,kuangqu,矿区,CN,China,中国,shanxi,山西,datong,大同,40.03626,113.168655,140203, CN101100210,nanjiao,南郊,CN,China,中国,shanxi,山西,datong,大同,40.01802,113.16892,140211, CN101100211,xinrong,新荣,CN,China,中国,shanxi,山西,datong,大同,40.25827,113.141045,140212, CN101100301,yangquan,阳泉,CN,China,中国,shanxi,山西,yangquan,阳泉,37.861187,113.58328,"140301,140300,140302", CN101100302,yuxian,盂县,CN,China,中国,shanxi,山西,yangquan,阳泉,38.086132,113.41223,140322, CN101100303,pingding,平定,CN,China,中国,shanxi,山西,yangquan,阳泉,37.80029,113.63105,140321, CN101100304,kuangqu,矿区,CN,China,中国,shanxi,山西,yangquan,阳泉,37.870087,113.55907,140303, CN101100305,jiaoqu,郊区,CN,China,中国,shanxi,山西,yangquan,阳泉,37.94096,113.58664,140311, CN101100401,jinzhong,晋中,CN,China,中国,shanxi,山西,jinzhong,晋中,37.696495,112.736465,"140701,140700", CN101100402,yuci,榆次,CN,China,中国,shanxi,山西,jinzhong,晋中,37.6976,112.74006,140702, CN101100403,yushe,榆社,CN,China,中国,shanxi,山西,jinzhong,晋中,37.06902,112.97352,140721, CN101100404,zuoquan,左权,CN,China,中国,shanxi,山西,jinzhong,晋中,37.079674,113.37783,140722, CN101100405,heshun,和顺,CN,China,中国,shanxi,山西,jinzhong,晋中,37.327026,113.57292,140723, CN101100406,xiyang,昔阳,CN,China,中国,shanxi,山西,jinzhong,晋中,37.60437,113.70617,140724, CN101100407,shouyang,寿阳,CN,China,中国,shanxi,山西,jinzhong,晋中,37.891136,113.17771,140725, CN101100408,taigu,太谷,CN,China,中国,shanxi,山西,jinzhong,晋中,37.424595,112.5541,140726, CN101100409,qixian,祁县,CN,China,中国,shanxi,山西,jinzhong,晋中,37.358738,112.33053,140727, CN101100410,pingyao,平遥,CN,China,中国,shanxi,山西,jinzhong,晋中,37.195473,112.17406,140728, CN101100411,lingshi,灵石,CN,China,中国,shanxi,山西,jinzhong,晋中,36.84747,111.77276,140729, CN101100412,jiexiu,介休,CN,China,中国,shanxi,山西,jinzhong,晋中,37.027615,111.91386,140781, CN101100501,changzhi,长治,CN,China,中国,shanxi,山西,changzhi,长治,36.191113,113.113556,"140401,140400,140402,140421", CN101100502,licheng,黎城,CN,China,中国,shanxi,山西,changzhi,长治,36.50297,113.38737,140426, CN101100503,tunliu,屯留,CN,China,中国,shanxi,山西,changzhi,长治,36.31407,112.89274,140424, CN101100504,lucheng,潞城,CN,China,中国,shanxi,山西,changzhi,长治,36.332233,113.22324,140481, CN101100505,xiangyuan,襄垣,CN,China,中国,shanxi,山西,changzhi,长治,36.532852,113.050095,140423, CN101100506,pingshun,平顺,CN,China,中国,shanxi,山西,changzhi,长治,36.200203,113.43879,140425, CN101100507,wuxiang,武乡,CN,China,中国,shanxi,山西,changzhi,长治,36.834316,112.8653,140429, CN101100508,qinxian,沁县,CN,China,中国,shanxi,山西,changzhi,长治,36.757122,112.70138,140430, CN101100509,zhangzi,长子,CN,China,中国,shanxi,山西,changzhi,长治,36.119484,112.88466,140428, CN101100510,qinyuan,沁源,CN,China,中国,shanxi,山西,changzhi,长治,36.50078,112.34088,140431, CN101100511,huguan,壶关,CN,China,中国,shanxi,山西,changzhi,长治,36.11094,113.20614,140427, CN101100512,jiaoqu,郊区,CN,China,中国,shanxi,山西,changzhi,长治,36.218388,113.10121,140411, CN101100601,jincheng,晋城,CN,China,中国,shanxi,山西,jincheng,晋城,35.497555,112.85127,"140501,140500,140502", CN101100602,qinshui,沁水,CN,China,中国,shanxi,山西,jincheng,晋城,35.689472,112.18721,140521, CN101100603,yangcheng,阳城,CN,China,中国,shanxi,山西,jincheng,晋城,35.482178,112.42201,140522, CN101100604,lingchuan,陵川,CN,China,中国,shanxi,山西,jincheng,晋城,35.775616,113.27888,140524, CN101100605,gaoping,高平,CN,China,中国,shanxi,山西,jincheng,晋城,35.791355,112.930695,140581, CN101100606,zezhou,泽州,CN,China,中国,shanxi,山西,jincheng,晋城,35.61722,112.89914,140525, CN101100701,linfen,临汾,CN,China,中国,shanxi,山西,linfen,临汾,36.08415,111.517975,"141001,141000", CN101100702,quwo,曲沃,CN,China,中国,shanxi,山西,linfen,临汾,35.641388,111.47553,141021, CN101100703,yonghe,永和,CN,China,中国,shanxi,山西,linfen,临汾,36.760612,110.63128,141032, CN101100704,xixian,隰县,CN,China,中国,shanxi,山西,linfen,临汾,36.692677,110.93581,141031, CN101100705,daning,大宁,CN,China,中国,shanxi,山西,linfen,临汾,36.46383,110.75128,141030, CN101100706,jixian,吉县,CN,China,中国,shanxi,山西,linfen,临汾,36.099354,110.68285,141028, CN101100707,xiangfen,襄汾,CN,China,中国,shanxi,山西,linfen,临汾,35.87614,111.44293,141023, CN101100708,puxian,蒲县,CN,China,中国,shanxi,山西,linfen,临汾,36.411682,111.09733,141033, CN101100709,fenxi,汾西,CN,China,中国,shanxi,山西,linfen,临汾,36.65337,111.56302,141034, CN101100710,hongtong,洪洞,CN,China,中国,shanxi,山西,linfen,临汾,36.25574,111.67369,141024, CN101100711,huozhou,霍州,CN,China,中国,shanxi,山西,linfen,临汾,36.57202,111.72311,141082, CN101100712,xiangning,乡宁,CN,China,中国,shanxi,山西,linfen,临汾,35.975403,110.85737,141029, CN101100713,yicheng,翼城,CN,China,中国,shanxi,山西,linfen,临汾,35.73862,111.71351,141022, CN101100714,houma,侯马,CN,China,中国,shanxi,山西,linfen,临汾,35.6203,111.37127,141081, CN101100715,fushan,浮山,CN,China,中国,shanxi,山西,linfen,临汾,35.97136,111.85004,141027, CN101100716,anze,安泽,CN,China,中国,shanxi,山西,linfen,临汾,36.14603,112.25137,141026, CN101100717,guxian,古县,CN,China,中国,shanxi,山西,linfen,临汾,36.26855,111.920204,141025, CN101100718,yaodou,尧都,CN,China,中国,shanxi,山西,linfen,临汾,36.080364,111.52294,141002, CN101100801,yuncheng,运城,CN,China,中国,shanxi,山西,yuncheng,运城,35.022778,111.00396,"140801,140800", CN101100802,linyi,临猗,CN,China,中国,shanxi,山西,yuncheng,运城,35.141884,110.77493,140821, CN101100803,jishan,稷山,CN,China,中国,shanxi,山西,yuncheng,运城,35.60041,110.979,140824, CN101100804,wanrong,万荣,CN,China,中国,shanxi,山西,yuncheng,运城,35.41704,110.84356,140822, CN101100805,hejin,河津,CN,China,中国,shanxi,山西,yuncheng,运城,35.59715,110.710266,140882, CN101100806,xinjiang,新绛,CN,China,中国,shanxi,山西,yuncheng,运城,35.613697,111.225204,140825, CN101100807,jiangxian,绛县,CN,China,中国,shanxi,山西,yuncheng,运城,35.49045,111.57618,140826, CN101100808,wenxi,闻喜,CN,China,中国,shanxi,山西,yuncheng,运城,35.35384,111.22031,140823, CN101100809,yuanqu,垣曲,CN,China,中国,shanxi,山西,yuncheng,运城,35.298294,111.67099,140827, CN101100810,yongji,永济,CN,China,中国,shanxi,山西,yuncheng,运城,34.865124,110.44798,140881, CN101100811,ruicheng,芮城,CN,China,中国,shanxi,山西,yuncheng,运城,34.69477,110.69114,140830, CN101100812,xiaxian,夏县,CN,China,中国,shanxi,山西,yuncheng,运城,35.14044,111.223175,140828, CN101100813,pinglu,平陆,CN,China,中国,shanxi,山西,yuncheng,运城,34.837257,111.21238,140829, CN101100814,yanhu,盐湖,CN,China,中国,shanxi,山西,yuncheng,运城,35.025642,111.000626,140802, CN101100901,shuozhou,朔州,CN,China,中国,shanxi,山西,shuozhou,朔州,39.33126,112.43339,"140601,140600", CN101100902,pinglu,平鲁,CN,China,中国,shanxi,山西,shuozhou,朔州,39.515602,112.29523,140603, CN101100903,shanyin,山阴,CN,China,中国,shanxi,山西,shuozhou,朔州,39.52677,112.8164,140621, CN101100904,youyu,右玉,CN,China,中国,shanxi,山西,shuozhou,朔州,39.98881,112.46559,140623, CN101100905,yingxian,应县,CN,China,中国,shanxi,山西,shuozhou,朔州,39.55919,113.18751,140622, CN101100906,huairen,怀仁,CN,China,中国,shanxi,山西,shuozhou,朔州,39.82079,113.10051,140624, CN101100907,shuocheng,朔城,CN,China,中国,shanxi,山西,shuozhou,朔州,39.324524,112.42867,140602, CN101101001,xinzhou,忻州,CN,China,中国,shanxi,山西,xinzhou,忻州,38.41769,112.733536,"140901,140900", CN101101002,dingxiang,定襄,CN,China,中国,shanxi,山西,xinzhou,忻州,38.484947,112.963234,140921, CN101101003,wutaixian,五台县,CN,China,中国,shanxi,山西,xinzhou,忻州,38.72571,113.25901,140922, CN101101004,hequ,河曲,CN,China,中国,shanxi,山西,xinzhou,忻州,39.381893,111.14661,140930, CN101101005,pianguan,偏关,CN,China,中国,shanxi,山西,xinzhou,忻州,39.442154,111.50048,140932, CN101101006,shenchi,神池,CN,China,中国,shanxi,山西,xinzhou,忻州,39.088467,112.20044,140927, CN101101007,ningwu,宁武,CN,China,中国,shanxi,山西,xinzhou,忻州,39.001717,112.30794,140925, CN101101008,daixian,代县,CN,China,中国,shanxi,山西,xinzhou,忻州,39.06514,112.96252,140923, CN101101009,fanshi,繁峙,CN,China,中国,shanxi,山西,xinzhou,忻州,39.188103,113.26771,140924, CN101101010,wutaishan,五台山,CN,China,中国,shanxi,山西,xinzhou,忻州,38.96864,113.59073,140922, CN101101011,bode,保德,CN,China,中国,shanxi,山西,xinzhou,忻州,39.022575,111.085686,140931, CN101101012,jingle,静乐,CN,China,中国,shanxi,山西,xinzhou,忻州,38.355946,111.94023,140926, CN101101013,kelan,岢岚,CN,China,中国,shanxi,山西,xinzhou,忻州,38.705624,111.56981,140929, CN101101014,wuzhai,五寨,CN,China,中国,shanxi,山西,xinzhou,忻州,38.91276,111.84102,140928, CN101101015,yuanping,原平,CN,China,中国,shanxi,山西,xinzhou,忻州,38.729187,112.713135,140981, CN101101016,xinfu,忻府,CN,China,中国,shanxi,山西,xinzhou,忻州,38.417744,112.734116,140902, CN101101100,lvliang,吕梁,CN,China,中国,shanxi,山西,lvliang,吕梁,37.524364,111.13434,"141101,141100", CN101101101,lishi,离石,CN,China,中国,shanxi,山西,lvliang,吕梁,37.524036,111.13446,141102, CN101101102,linxian,临县,CN,China,中国,shanxi,山西,lvliang,吕梁,37.960808,110.995964,141124, CN101101103,xingxian,兴县,CN,China,中国,shanxi,山西,lvliang,吕梁,38.464134,111.12482,141123, CN101101104,lanxian,岚县,CN,China,中国,shanxi,山西,lvliang,吕梁,38.278652,111.671555,141127, CN101101105,liulin,柳林,CN,China,中国,shanxi,山西,lvliang,吕梁,37.431664,110.89613,141125, CN101101106,shilou,石楼,CN,China,中国,shanxi,山西,lvliang,吕梁,36.999428,110.83712,141126, CN101101107,fangshan,方山,CN,China,中国,shanxi,山西,lvliang,吕梁,37.89263,111.238884,141128, CN101101108,jiaokou,交口,CN,China,中国,shanxi,山西,lvliang,吕梁,36.983067,111.18319,141130, CN101101109,zhongyang,中阳,CN,China,中国,shanxi,山西,lvliang,吕梁,37.342052,111.19332,141129, CN101101110,xiaoyi,孝义,CN,China,中国,shanxi,山西,lvliang,吕梁,37.144474,111.78157,141181, CN101101111,fenyang,汾阳,CN,China,中国,shanxi,山西,lvliang,吕梁,37.267742,111.78527,141182, CN101101112,wenshui,文水,CN,China,中国,shanxi,山西,lvliang,吕梁,37.436314,112.03259,141121, CN101101113,jiaocheng,交城,CN,China,中国,shanxi,山西,lvliang,吕梁,37.555157,112.15916,141122, CN101110101,xian,西安,CN,China,中国,shaanxi,陕西,xian,西安,34.26316,108.94802,"610101,610100,610000", CN101110102,changan,长安,CN,China,中国,shaanxi,陕西,xian,西安,34.157097,108.94158,610116, CN101110103,lintong,临潼,CN,China,中国,shaanxi,陕西,xian,西安,34.372066,109.21399,610115, CN101110104,lantian,蓝田,CN,China,中国,shaanxi,陕西,xian,西安,34.15619,109.317635,610122, CN101110105,zhouzhi,周至,CN,China,中国,shaanxi,陕西,xian,西安,34.161533,108.21647,610124, CN101110106,huyi,鄠邑,CN,China,中国,shaanxi,陕西,xian,西安,34.10867,108.60738,610118, CN101110107,gaoling,高陵,CN,China,中国,shaanxi,陕西,xian,西安,34.535065,109.0889,610117, CN101110108,xincheng,新城,CN,China,中国,shaanxi,陕西,xian,西安,34.26927,108.9599,610102, CN101110109,beilin,碑林,CN,China,中国,shaanxi,陕西,xian,西安,34.25106,108.94699,610103, CN101110110,lianhu,莲湖,CN,China,中国,shaanxi,陕西,xian,西安,34.2656,108.9332,610104, CN101110111,baqiao,灞桥,CN,China,中国,shaanxi,陕西,xian,西安,34.267452,109.06726,610111, CN101110112,weiyang,未央,CN,China,中国,shaanxi,陕西,xian,西安,34.30823,108.94602,610112, CN101110113,yanta,雁塔,CN,China,中国,shaanxi,陕西,xian,西安,34.21339,108.92659,610113, CN101110114,yanliang,阎良,CN,China,中国,shaanxi,陕西,xian,西安,34.66214,109.22802,610114, CN101110200,xianyang,咸阳,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.33344,108.70512,"610401,610400", CN101110201,sanyuan,三原,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.613995,108.94348,610422, CN101110202,liquan,礼泉,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.482582,108.428314,610425, CN101110203,yongshou,永寿,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.69262,108.14313,610426, CN101110204,chunhua,淳化,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.79797,108.58118,610430, CN101110205,jingyang,泾阳,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.528492,108.83784,610423, CN101110206,wugong,武功,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.25973,108.21286,610431, CN101110207,qianxian,乾县,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.52726,108.247406,610424, CN101110208,binxian,彬县,CN,China,中国,shaanxi,陕西,xianyang,咸阳,35.034233,108.08367,610427, CN101110209,changwu,长武,CN,China,中国,shaanxi,陕西,xianyang,咸阳,35.206123,107.79584,610428, CN101110210,xunyi,旬邑,CN,China,中国,shaanxi,陕西,xianyang,咸阳,35.112232,108.337234,610429, CN101110211,xingping,兴平,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.297134,108.488495,610481, CN101110212,qindou,秦都,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.3298,108.69864,610402, CN101110213,weicheng,渭城,CN,China,中国,shaanxi,陕西,xianyang,咸阳,34.336845,108.73096,610404, CN101110300,yanan,延安,CN,China,中国,shaanxi,陕西,yanan,延安,36.59654,109.49081,"610601,610600", CN101110301,yanchang,延长,CN,China,中国,shaanxi,陕西,yanan,延安,36.578304,110.01296,610621, CN101110302,yanchuan,延川,CN,China,中国,shaanxi,陕西,yanan,延安,36.882065,110.190315,610622, CN101110303,zichang,子长,CN,China,中国,shaanxi,陕西,yanan,延安,37.14207,109.675964,610623, CN101110304,yichuan,宜川,CN,China,中国,shaanxi,陕西,yanan,延安,36.050392,110.17554,610630, CN101110305,fuxian,富县,CN,China,中国,shaanxi,陕西,yanan,延安,35.996494,109.38413,610628, CN101110306,zhidan,志丹,CN,China,中国,shaanxi,陕西,yanan,延安,36.823032,108.7689,610625, CN101110307,ansai,安塞,CN,China,中国,shaanxi,陕西,yanan,延安,36.86441,109.32534,610603, CN101110308,ganquan,甘泉,CN,China,中国,shaanxi,陕西,yanan,延安,36.27773,109.34961,610627, CN101110309,luochuan,洛川,CN,China,中国,shaanxi,陕西,yanan,延安,35.762135,109.435715,610629, CN101110310,huangling,黄陵,CN,China,中国,shaanxi,陕西,yanan,延安,35.580166,109.26247,610632, CN101110311,huanglong,黄龙,CN,China,中国,shaanxi,陕西,yanan,延安,35.583275,109.83502,610631, CN101110312,wuqi,吴起,CN,China,中国,shaanxi,陕西,yanan,延安,36.92485,108.17698,610626, CN101110313,baota,宝塔,CN,China,中国,shaanxi,陕西,yanan,延安,36.59629,109.49069,610602, CN101110401,yulin,榆林,CN,China,中国,shaanxi,陕西,yulin,榆林,38.29016,109.741196,"610801,610800", CN101110402,fugu,府谷,CN,China,中国,shaanxi,陕西,yulin,榆林,39.029243,111.06965,610822, CN101110403,shenmu,神木,CN,China,中国,shaanxi,陕西,yulin,榆林,38.83564,110.497,610881, CN101110404,jiaxian,佳县,CN,China,中国,shaanxi,陕西,yulin,榆林,38.0216,110.49337,610828, CN101110405,dingbian,定边,CN,China,中国,shaanxi,陕西,yulin,榆林,37.59523,107.60128,610825, CN101110406,jingbian,靖边,CN,China,中国,shaanxi,陕西,yulin,榆林,37.596085,108.80567,610824, CN101110407,hengshan,横山,CN,China,中国,shaanxi,陕西,yulin,榆林,37.964046,109.292595,610803, CN101110408,mizhi,米脂,CN,China,中国,shaanxi,陕西,yulin,榆林,37.759083,110.17868,610827, CN101110409,zizhou,子洲,CN,China,中国,shaanxi,陕西,yulin,榆林,37.611572,110.03457,610831, CN101110410,suide,绥德,CN,China,中国,shaanxi,陕西,yulin,榆林,37.5077,110.26537,610826, CN101110411,wubu,吴堡,CN,China,中国,shaanxi,陕西,yulin,榆林,37.451923,110.73931,610829, CN101110412,qingjian,清涧,CN,China,中国,shaanxi,陕西,yulin,榆林,37.087704,110.12146,610830, CN101110413,yuyang,榆阳,CN,China,中国,shaanxi,陕西,yulin,榆林,38.299267,109.74791,610802, CN101110501,weinan,渭南,CN,China,中国,shaanxi,陕西,weinan,渭南,34.499382,109.502884,"610501,610500", CN101110503,tongguan,潼关,CN,China,中国,shaanxi,陕西,weinan,渭南,34.544514,110.24726,610522, CN101110504,dali,大荔,CN,China,中国,shaanxi,陕西,weinan,渭南,34.79501,109.94312,610523, CN101110505,baishui,白水,CN,China,中国,shaanxi,陕西,weinan,渭南,35.17729,109.59431,610527, CN101110506,fuping,富平,CN,China,中国,shaanxi,陕西,weinan,渭南,34.746677,109.18717,610528, CN101110507,pucheng,蒲城,CN,China,中国,shaanxi,陕西,weinan,渭南,34.956036,109.58965,610526, CN101110508,chengcheng,澄城,CN,China,中国,shaanxi,陕西,weinan,渭南,35.184,109.93761,610525, CN101110509,heyang,合阳,CN,China,中国,shaanxi,陕西,weinan,渭南,35.2371,110.14798,610524, CN101110510,hancheng,韩城,CN,China,中国,shaanxi,陕西,weinan,渭南,35.47524,110.45239,610581, CN101110511,huayin,华阴,CN,China,中国,shaanxi,陕西,weinan,渭南,34.565357,110.08952,610582, CN101110512,linwei,临渭,CN,China,中国,shaanxi,陕西,weinan,渭南,34.50127,109.503296,610502, CN101110513,huazhou,华州,CN,China,中国,shaanxi,陕西,weinan,渭南,34.51196,109.76141,610503, CN101110601,shangluo,商洛,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.86832,109.93977,"611001,611000", CN101110602,luonan,洛南,CN,China,中国,shaanxi,陕西,shangluo,商洛,34.0885,110.14571,611021, CN101110603,zhashui,柞水,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.682774,109.11125,611026, CN101110604,shangzhou,商州,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.86921,109.93768,611002, CN101110605,zhenan,镇安,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.42398,109.15108,611025, CN101110606,danfeng,丹凤,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.69471,110.33191,611022, CN101110607,shangnan,商南,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.526367,110.88544,611023, CN101110608,shanyang,山阳,CN,China,中国,shaanxi,陕西,shangluo,商洛,33.53041,109.88043,611024, CN101110701,ankang,安康,CN,China,中国,shaanxi,陕西,ankang,安康,32.6903,109.029274,"610901,610900", CN101110702,ziyang,紫阳,CN,China,中国,shaanxi,陕西,ankang,安康,32.520176,108.53779,610924, CN101110703,shiquan,石泉,CN,China,中国,shaanxi,陕西,ankang,安康,33.038513,108.25051,610922, CN101110704,hanyin,汉阴,CN,China,中国,shaanxi,陕西,ankang,安康,32.89112,108.51095,610921, CN101110705,xunyang,旬阳,CN,China,中国,shaanxi,陕西,ankang,安康,32.83357,109.36815,610928, CN101110706,langao,岚皋,CN,China,中国,shaanxi,陕西,ankang,安康,32.31069,108.900665,610925, CN101110707,pingli,平利,CN,China,中国,shaanxi,陕西,ankang,安康,32.38793,109.36186,610926, CN101110708,baihe,白河,CN,China,中国,shaanxi,陕西,ankang,安康,32.809483,110.11419,610929, CN101110709,zhenping,镇坪,CN,China,中国,shaanxi,陕西,ankang,安康,31.883394,109.526436,610927, CN101110710,ningshan,宁陕,CN,China,中国,shaanxi,陕西,ankang,安康,33.312183,108.31371,610923, CN101110711,hanbin,汉滨,CN,China,中国,shaanxi,陕西,ankang,安康,32.69082,109.0291,610902, CN101110801,hanzhong,汉中,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.077667,107.02862,"610701,610700", CN101110802,lueyang,略阳,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.32964,106.1539,610727, CN101110803,mianxian,勉县,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.155617,106.680176,610725, CN101110804,liuba,留坝,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.61334,106.92438,610729, CN101110805,yangxian,洋县,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.22328,107.549965,610723, CN101110806,chenggu,城固,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.1531,107.32989,610722, CN101110807,xixiang,西乡,CN,China,中国,shaanxi,陕西,hanzhong,汉中,32.98796,107.76586,610724, CN101110808,fuoping,佛坪,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.520744,107.98858,610730, CN101110809,ningqiang,宁强,CN,China,中国,shaanxi,陕西,hanzhong,汉中,32.830807,106.25739,610726, CN101110810,nanzheng,南郑,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.00334,106.94239,610703, CN101110811,zhenba,镇巴,CN,China,中国,shaanxi,陕西,hanzhong,汉中,32.535854,107.89531,610728, CN101110812,hantai,汉台,CN,China,中国,shaanxi,陕西,hanzhong,汉中,33.077675,107.02824,610702, CN101110901,baoji,宝鸡,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.369316,107.14487,"610301,610300", CN101110902,weibin,渭滨,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.37101,107.14447,610302, CN101110903,qianyang,千阳,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.642586,107.13299,610328, CN101110904,linyou,麟游,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.677715,107.79661,610329, CN101110905,qishan,岐山,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.44296,107.624466,610323, CN101110906,fengxiang,凤翔,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.521667,107.40057,610322, CN101110907,fufeng,扶风,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.375496,107.89142,610324, CN101110908,meixian,眉县,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.272137,107.75237,610326, CN101110909,taibai,太白,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.059216,107.316536,610331, CN101110910,fengxian,凤县,CN,China,中国,shaanxi,陕西,baoji,宝鸡,33.912464,106.525215,610330, CN101110911,longxian,陇县,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.89326,106.85706,610327, CN101110912,chencang,陈仓,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.35275,107.383644,610304, CN101110913,jintai,金台,CN,China,中国,shaanxi,陕西,baoji,宝鸡,34.37519,107.14994,610303, CN101111001,tongchuan,铜川,CN,China,中国,shaanxi,陕西,tongchuan,铜川,34.91658,108.97961,"610201,610200", CN101111003,yijun,宜君,CN,China,中国,shaanxi,陕西,tongchuan,铜川,35.398766,109.11828,610222, CN101111004,yaozhou,耀州,CN,China,中国,shaanxi,陕西,tongchuan,铜川,34.910206,108.96254,610204, CN101111005,wangyi,王益,CN,China,中国,shaanxi,陕西,tongchuan,铜川,35.0691,109.07586,610202, CN101111006,yintai,印台,CN,China,中国,shaanxi,陕西,tongchuan,铜川,35.111927,109.100815,610203, CN101111101,yangling,杨凌,CN,China,中国,shaanxi,陕西,yangling,杨凌,34.28,108.07,610403, CN101111102,yangling,杨陵,CN,China,中国,shaanxi,陕西,yangling,杨凌,34.27135,108.08635,610403, CN101120101,jinan,济南,CN,China,中国,shandong,山东,jinan,济南,36.675808,117.00092,"370101,370100,370000", CN101120102,changqing,长清,CN,China,中国,shandong,山东,jinan,济南,36.56105,116.74588,370113, CN101120103,shanghe,商河,CN,China,中国,shandong,山东,jinan,济南,37.310543,117.15637,370126, CN101120104,zhangqiu,章丘,CN,China,中国,shandong,山东,jinan,济南,36.71209,117.54069,370114, CN101120105,pingyin,平阴,CN,China,中国,shandong,山东,jinan,济南,36.286922,116.455055,370124, CN101120106,jiyang,济阳,CN,China,中国,shandong,山东,jinan,济南,36.976772,117.17603,370125, CN101120107,lixia,历下,CN,China,中国,shandong,山东,jinan,济南,36.66417,117.03862,370102, CN101120108,shizhong,市中,CN,China,中国,shandong,山东,jinan,济南,36.657352,116.99898,370103, CN101120109,huaiyin,槐荫,CN,China,中国,shandong,山东,jinan,济南,36.668205,116.94792,370104, CN101120110,tianqiao,天桥,CN,China,中国,shandong,山东,jinan,济南,36.693375,116.996086,370105, CN101120111,licheng,历城,CN,China,中国,shandong,山东,jinan,济南,36.681744,117.06374,370112, CN101120201,qingdao,青岛,CN,China,中国,shandong,山东,qingdao,青岛,36.08298,120.35517,"370201,370200", CN101120202,laoshan,崂山,CN,China,中国,shandong,山东,qingdao,青岛,36.10257,120.46739,370212, CN101120203,shinan,市南,CN,China,中国,shandong,山东,qingdao,青岛,36.070892,120.395966,370202, CN101120204,jimo,即墨,CN,China,中国,shandong,山东,qingdao,青岛,36.390846,120.44735,370282, CN101120205,jiaozhou,胶州,CN,China,中国,shandong,山东,qingdao,青岛,36.285877,120.0062,370281, CN101120206,huangdao,黄岛,CN,China,中国,shandong,山东,qingdao,青岛,35.875137,119.99552,370211, CN101120207,laixi,莱西,CN,China,中国,shandong,山东,qingdao,青岛,36.86509,120.52622,370285, CN101120208,pingdu,平度,CN,China,中国,shandong,山东,qingdao,青岛,36.78883,119.959015,370283, CN101120209,shibei,市北,CN,China,中国,shandong,山东,qingdao,青岛,36.08382,120.35503,370203, CN101120210,licang,李沧,CN,China,中国,shandong,山东,qingdao,青岛,36.160023,120.421234,370213, CN101120211,chengyang,城阳,CN,China,中国,shandong,山东,qingdao,青岛,36.30683,120.38914,370214, CN101120301,zibo,淄博,CN,China,中国,shandong,山东,zibo,淄博,36.814938,118.047646,"370301,370300", CN101120302,zichuan,淄川,CN,China,中国,shandong,山东,zibo,淄博,36.64727,117.9677,370302, CN101120303,boshan,博山,CN,China,中国,shandong,山东,zibo,淄博,36.497566,117.85823,370304, CN101120304,gaoqing,高青,CN,China,中国,shandong,山东,zibo,淄博,37.169582,117.82984,370322, CN101120305,zhoucun,周村,CN,China,中国,shandong,山东,zibo,淄博,36.8037,117.851036,370306, CN101120306,yiyuan,沂源,CN,China,中国,shandong,山东,zibo,淄博,36.186283,118.16616,370323, CN101120307,huantai,桓台,CN,China,中国,shandong,山东,zibo,淄博,36.959774,118.101555,370321, CN101120308,linzi,临淄,CN,China,中国,shandong,山东,zibo,淄博,36.816658,118.306015,370305, CN101120309,zhangdian,张店,CN,China,中国,shandong,山东,zibo,淄博,36.80705,118.05352,370303, CN101120401,dezhou,德州,CN,China,中国,shandong,山东,dezhou,德州,37.453968,116.30743,"371401,371400", CN101120402,wucheng,武城,CN,China,中国,shandong,山东,dezhou,德州,37.209526,116.07863,371428, CN101120403,linyi,临邑,CN,China,中国,shandong,山东,dezhou,德州,37.192043,116.86703,371424, CN101120404,lingxian,陵县,CN,China,中国,shandong,山东,dezhou,德州,37.334652,116.56899,371403, CN101120405,qihe,齐河,CN,China,中国,shandong,山东,dezhou,德州,36.795498,116.75839,371425, CN101120406,leling,乐陵,CN,China,中国,shandong,山东,dezhou,德州,37.729115,117.21666,371481, CN101120407,qingyun,庆云,CN,China,中国,shandong,山东,dezhou,德州,37.777725,117.39051,371423, CN101120408,pingyuan,平原,CN,China,中国,shandong,山东,dezhou,德州,37.164467,116.43391,371426, CN101120409,ningjin,宁津,CN,China,中国,shandong,山东,dezhou,德州,37.64962,116.79372,371422, CN101120410,xiajin,夏津,CN,China,中国,shandong,山东,dezhou,德州,36.9505,116.003815,371427, CN101120411,yucheng,禹城,CN,China,中国,shandong,山东,dezhou,德州,36.934486,116.642555,371482, CN101120412,decheng,德城,CN,China,中国,shandong,山东,dezhou,德州,37.453922,116.307076,371402, CN101120413,lingcheng,陵城,CN,China,中国,shandong,山东,dezhou,德州,37.332848,116.57493,371403, CN101120501,yantai,烟台,CN,China,中国,shandong,山东,yantai,烟台,37.539295,121.39138,"370601,370600", CN101120502,laizhou,莱州,CN,China,中国,shandong,山东,yantai,烟台,37.182724,119.94214,370683, CN101120503,changdao,长岛,CN,China,中国,shandong,山东,yantai,烟台,37.916195,120.73834,370634, CN101120504,penglai,蓬莱,CN,China,中国,shandong,山东,yantai,烟台,37.81117,120.76269,370684, CN101120505,longkou,龙口,CN,China,中国,shandong,山东,yantai,烟台,37.648445,120.52833,370681, CN101120506,zhaoyuan,招远,CN,China,中国,shandong,山东,yantai,烟台,37.364918,120.403145,370685, CN101120507,qixia,栖霞,CN,China,中国,shandong,山东,yantai,烟台,37.305855,120.8341,370686, CN101120508,fushan,福山,CN,China,中国,shandong,山东,yantai,烟台,37.496876,121.26474,370611, CN101120509,moup,牟平,CN,China,中国,shandong,山东,yantai,烟台,37.388355,121.60151,370612, CN101120510,laiyang,莱阳,CN,China,中国,shandong,山东,yantai,烟台,36.977036,120.71115,370682, CN101120511,haiyang,海阳,CN,China,中国,shandong,山东,yantai,烟台,36.78066,121.16839,370687, CN101120512,zhifu,芝罘,CN,China,中国,shandong,山东,yantai,烟台,37.540924,121.38588,370602, CN101120513,laishan,莱山,CN,China,中国,shandong,山东,yantai,烟台,37.47355,121.44887,370613, CN101120601,weifang,潍坊,CN,China,中国,shandong,山东,weifang,潍坊,36.70925,119.10708,"370701,370700", CN101120602,qingzhou,青州,CN,China,中国,shandong,山东,weifang,潍坊,36.697857,118.484695,370781, CN101120603,shouguang,寿光,CN,China,中国,shandong,山东,weifang,潍坊,36.874413,118.73645,370783, CN101120604,linqu,临朐,CN,China,中国,shandong,山东,weifang,潍坊,36.516373,118.53988,370724, CN101120605,changle,昌乐,CN,China,中国,shandong,山东,weifang,潍坊,36.703255,118.84,370725, CN101120606,changyi,昌邑,CN,China,中国,shandong,山东,weifang,潍坊,36.85494,119.3945,370786, CN101120607,anqiu,安丘,CN,China,中国,shandong,山东,weifang,潍坊,36.427418,119.20689,370784, CN101120608,gaomi,高密,CN,China,中国,shandong,山东,weifang,潍坊,36.37754,119.757034,370785, CN101120609,zhucheng,诸城,CN,China,中国,shandong,山东,weifang,潍坊,35.997093,119.40318,370782, CN101120610,weicheng,潍城,CN,China,中国,shandong,山东,weifang,潍坊,36.71006,119.10378,370702, CN101120611,hanting,寒亭,CN,China,中国,shandong,山东,weifang,潍坊,36.772102,119.20786,370703, CN101120612,fangzi,坊子,CN,China,中国,shandong,山东,weifang,潍坊,36.654617,119.16633,370704, CN101120613,kuiwen,奎文,CN,China,中国,shandong,山东,weifang,潍坊,36.709496,119.13736,370705, CN101120701,jining,济宁,CN,China,中国,shandong,山东,jining,济宁,35.415394,116.58724,"370801,370800", CN101120702,jiaxiang,嘉祥,CN,China,中国,shandong,山东,jining,济宁,35.398098,116.34289,370829, CN101120703,weishan,微山,CN,China,中国,shandong,山东,jining,济宁,34.809525,117.12861,370826, CN101120704,yutai,鱼台,CN,China,中国,shandong,山东,jining,济宁,34.997707,116.650024,370827, CN101120705,yanzhou,兖州,CN,China,中国,shandong,山东,jining,济宁,35.556446,116.828995,370812, CN101120706,jinxiang,金乡,CN,China,中国,shandong,山东,jining,济宁,35.06977,116.31036,370828, CN101120707,wenshang,汶上,CN,China,中国,shandong,山东,jining,济宁,35.721745,116.487144,370830, CN101120708,sishui,泗水,CN,China,中国,shandong,山东,jining,济宁,35.653217,117.273605,370831, CN101120709,liangshan,梁山,CN,China,中国,shandong,山东,jining,济宁,35.80184,116.08963,370832, CN101120710,qufu,曲阜,CN,China,中国,shandong,山东,jining,济宁,35.59279,116.99188,370881, CN101120711,zoucheng,邹城,CN,China,中国,shandong,山东,jining,济宁,35.40526,116.96673,370883, CN101120712,rencheng,任城,CN,China,中国,shandong,山东,jining,济宁,35.41483,116.59526,370811, CN101120801,taian,泰安,CN,China,中国,shandong,山东,taian,泰安,36.19497,117.12907,"370901,370900", CN101120802,xintai,新泰,CN,China,中国,shandong,山东,taian,泰安,35.910385,117.76609,370982, CN101120803,taishan,泰山,CN,China,中国,shandong,山东,taian,泰安,36.189312,117.12998,370902, CN101120804,feicheng,肥城,CN,China,中国,shandong,山东,taian,泰安,36.1856,116.7637,370983, CN101120805,dongping,东平,CN,China,中国,shandong,山东,taian,泰安,35.930466,116.46105,370923, CN101120806,ningyang,宁阳,CN,China,中国,shandong,山东,taian,泰安,35.76754,116.79929,370921, CN101120807,daiyue,岱岳,CN,China,中国,shandong,山东,taian,泰安,36.1841,117.04353,370911, CN101120901,linyi,临沂,CN,China,中国,shandong,山东,linyi,临沂,35.06528,118.32645,"371301,371300", CN101120902,junan,莒南,CN,China,中国,shandong,山东,linyi,临沂,35.17591,118.838326,371327, CN101120903,yinan,沂南,CN,China,中国,shandong,山东,linyi,临沂,35.547,118.4554,371321, CN101120904,lanling,兰陵,CN,China,中国,shandong,山东,linyi,临沂,34.85557,118.049965,371324, CN101120905,linshu,临沭,CN,China,中国,shandong,山东,linyi,临沂,34.91706,118.64838,371329, CN101120906,tancheng,郯城,CN,China,中国,shandong,山东,linyi,临沂,34.614742,118.342964,371322, CN101120907,mengyin,蒙阴,CN,China,中国,shandong,山东,linyi,临沂,35.712437,117.94327,371328, CN101120908,pingyi,平邑,CN,China,中国,shandong,山东,linyi,临沂,35.51152,117.63188,371326, CN101120909,feixian,费县,CN,China,中国,shandong,山东,linyi,临沂,35.269173,117.96887,371325, CN101120910,yishui,沂水,CN,China,中国,shandong,山东,linyi,临沂,35.78703,118.634544,371323, CN101120911,lanshan,兰山,CN,China,中国,shandong,山东,linyi,临沂,35.06163,118.32767,371302, CN101120912,luozhuang,罗庄,CN,China,中国,shandong,山东,linyi,临沂,34.997204,118.2848,371311, CN101120913,hedong,河东,CN,China,中国,shandong,山东,linyi,临沂,35.085003,118.39829,371312, CN101121001,heze,菏泽,CN,China,中国,shandong,山东,heze,菏泽,35.246532,115.46938,"371701,371700", CN101121002,juancheng,鄄城,CN,China,中国,shandong,山东,heze,菏泽,35.560257,115.51434,371726, CN101121003,yuncheng,郓城,CN,China,中国,shandong,山东,heze,菏泽,35.594772,115.93885,371725, CN101121004,dongming,东明,CN,China,中国,shandong,山东,heze,菏泽,35.28964,115.09841,371728, CN101121005,dingtao,定陶,CN,China,中国,shandong,山东,heze,菏泽,35.0727,115.5696,371703, CN101121006,juye,巨野,CN,China,中国,shandong,山东,heze,菏泽,35.391,116.08934,371724, CN101121007,caoxian,曹县,CN,China,中国,shandong,山东,heze,菏泽,34.823254,115.549484,371721, CN101121008,chengwu,成武,CN,China,中国,shandong,山东,heze,菏泽,34.947365,115.89735,371723, CN101121009,shanxian,单县,CN,China,中国,shandong,山东,heze,菏泽,34.79085,116.08262,371722, CN101121010,mudan,牡丹,CN,China,中国,shandong,山东,heze,菏泽,35.24311,115.47095,371702, CN101121101,binzhou,滨州,CN,China,中国,shandong,山东,binzhou,滨州,37.38354,118.016975,"371601,371600", CN101121102,boxing,博兴,CN,China,中国,shandong,山东,binzhou,滨州,37.147003,118.12309,371625, CN101121103,wudi,无棣,CN,China,中国,shandong,山东,binzhou,滨州,37.74085,117.616325,371623, CN101121104,yangxin,阳信,CN,China,中国,shandong,山东,binzhou,滨州,37.64049,117.58133,371622, CN101121105,huimin,惠民,CN,China,中国,shandong,山东,binzhou,滨州,37.483875,117.50894,371621, CN101121106,zhanhua,沾化,CN,China,中国,shandong,山东,binzhou,滨州,37.698456,118.129906,371603, CN101121107,zouping,邹平,CN,China,中国,shandong,山东,binzhou,滨州,36.87803,117.73681,371626, CN101121108,bincheng,滨城,CN,China,中国,shandong,山东,binzhou,滨州,37.384842,118.02015,371602, CN101121201,dongying,东营,CN,China,中国,shandong,山东,dongying,东营,37.461567,118.507545,"370501,370500,370502", CN101121202,hekou,河口,CN,China,中国,shandong,山东,dongying,东营,37.886017,118.52961,370503, CN101121203,kenli,垦利,CN,China,中国,shandong,山东,dongying,东营,37.58868,118.551315,370505, CN101121204,lijin,利津,CN,China,中国,shandong,山东,dongying,东营,37.493366,118.248856,370522, CN101121205,guangrao,广饶,CN,China,中国,shandong,山东,dongying,东营,37.05161,118.407524,370523, CN101121301,weihai,威海,CN,China,中国,shandong,山东,weihai,威海,37.50969,122.116394,"371001,371000", CN101121302,wendeng,文登,CN,China,中国,shandong,山东,weihai,威海,37.196213,122.05714,371003, CN101121303,rongcheng,荣成,CN,China,中国,shandong,山东,weihai,威海,37.160133,122.4229,371082, CN101121304,rushan,乳山,CN,China,中国,shandong,山东,weihai,威海,36.91962,121.53635,371083, CN101121305,chengshantou,成山头,CN,China,中国,shandong,山东,weihai,威海,37.39439,122.70412,371082, CN101121306,shidao,石岛,CN,China,中国,shandong,山东,weihai,威海,36.89434,122.426506,371082, CN101121307,huancui,环翠,CN,China,中国,shandong,山东,weihai,威海,37.510754,122.11619,371002, CN101121401,zaozhuang,枣庄,CN,China,中国,shandong,山东,zaozhuang,枣庄,34.856422,117.55796,"370401,370400", CN101121402,xuecheng,薛城,CN,China,中国,shandong,山东,zaozhuang,枣庄,34.79789,117.26529,370403, CN101121403,yicheng,峄城,CN,China,中国,shandong,山东,zaozhuang,枣庄,34.76771,117.58632,370404, CN101121404,taierzhuang,台儿庄,CN,China,中国,shandong,山东,zaozhuang,枣庄,34.564816,117.73475,370405, CN101121405,tengzhou,滕州,CN,China,中国,shandong,山东,zaozhuang,枣庄,35.088497,117.1621,370481, CN101121406,shizhong,市中,CN,China,中国,shandong,山东,zaozhuang,枣庄,34.85665,117.55728,370402, CN101121407,shanting,山亭,CN,China,中国,shandong,山东,zaozhuang,枣庄,35.096077,117.45897,370406, CN101121501,rizhao,日照,CN,China,中国,shandong,山东,rizhao,日照,35.42859,119.461205,"371101,371100", CN101121502,wulian,五莲,CN,China,中国,shandong,山东,rizhao,日照,35.751938,119.20674,371121, CN101121503,juxian,莒县,CN,China,中国,shandong,山东,rizhao,日照,35.588116,118.832855,371122, CN101121504,donggang,东港,CN,China,中国,shandong,山东,rizhao,日照,35.42615,119.4577,371102, CN101121505,lanshan,岚山,CN,China,中国,shandong,山东,rizhao,日照,35.119793,119.31584,371103, CN101121601,laiwu,莱芜,CN,China,中国,shandong,山东,laiwu,莱芜,36.214397,117.677734,"371201,371200", CN101121602,laicheng,莱城,CN,China,中国,shandong,山东,laiwu,莱芜,36.21366,117.67835,371202, CN101121603,gangcheng,钢城,CN,China,中国,shandong,山东,laiwu,莱芜,36.058037,117.82033,371203, CN101121701,liaocheng,聊城,CN,China,中国,shandong,山东,liaocheng,聊城,36.456013,115.98037,"371501,371500", CN101121702,guanxian,冠县,CN,China,中国,shandong,山东,liaocheng,聊城,36.483753,115.44481,371525, CN101121703,yanggu,阳谷,CN,China,中国,shandong,山东,liaocheng,聊城,36.11371,115.78429,371521, CN101121704,gaotang,高唐,CN,China,中国,shandong,山东,liaocheng,聊城,36.859756,116.22966,371526, CN101121705,chiping,茌平,CN,China,中国,shandong,山东,liaocheng,聊城,36.591934,116.25335,371523, CN101121706,donge,东阿,CN,China,中国,shandong,山东,liaocheng,聊城,36.336002,116.248856,371524, CN101121707,linqing,临清,CN,China,中国,shandong,山东,liaocheng,聊城,36.842598,115.71346,371581, CN101121708,dongchangfu,东昌府,CN,China,中国,shandong,山东,liaocheng,聊城,36.45606,115.98003,371502, CN101121709,shenxian,莘县,CN,China,中国,shandong,山东,liaocheng,聊城,36.2376,115.66729,371522, CN101130101,wulumuqi,乌鲁木齐,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.792816,87.61773,"650101,650100,650000", CN101130102,tianshan,天山,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.79643,87.62012,650102, CN101130103,xiaoquzi,小渠子,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.51582,87.12283,650121, CN101130104,shayibake,沙依巴克,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.78887,87.59664,650103, CN101130105,dabancheng,达坂城,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.36181,88.30994,650107, CN101130106,xinshi,新市,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.87088,87.56065,650104, CN101130107,shuimogou,水磨沟,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.816746,87.61309,650105, CN101130109,tianchi,天池,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.879143,88.12783,652302, CN101130111,toutunhe,头屯河,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.876053,87.42582,650106, CN101130112,midong,米东,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.960983,87.6918,650109, CN101130113,wulumuqixian,乌鲁木齐县,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.982548,87.5056,650121, CN101130114,xibaiyanggou,西白杨沟,CN,China,中国,xinjiang,新疆,wulumuqi,乌鲁木齐,43.3839,87.13792,650121, CN101130201,kelamayi,克拉玛依,CN,China,中国,xinjiang,新疆,kelamayi,克拉玛依,45.595886,84.87395,"650201,650200,650203", CN101130202,wuerhe,乌尔禾,CN,China,中国,xinjiang,新疆,kelamayi,克拉玛依,46.08776,85.69777,650205, CN101130203,baijiantan,白碱滩,CN,China,中国,xinjiang,新疆,kelamayi,克拉玛依,45.689022,85.12988,650204, CN101130204,dushanzi,独山子,CN,China,中国,xinjiang,新疆,kelamayi,克拉玛依,44.327206,84.88227,650202, CN101130301,shihezi,石河子,CN,China,中国,xinjiang,新疆,shihezi,石河子,44.305885,86.04108,"659001,659009", CN101130302,paotai,炮台,CN,China,中国,xinjiang,新疆,shihezi,石河子,44.821697,85.584625,659001, CN101130303,mosuowan,莫索湾,CN,China,中国,xinjiang,新疆,shihezi,石河子,44.59994,86.09258,652324, CN101130401,changji,昌吉,CN,China,中国,xinjiang,新疆,changji,昌吉,44.014576,87.30401,"652301,652300", CN101130402,hutubi,呼图壁,CN,China,中国,xinjiang,新疆,changji,昌吉,44.189342,86.88861,652323, CN101130404,fukang,阜康,CN,China,中国,xinjiang,新疆,changji,昌吉,44.152153,87.98384,652302, CN101130405,jimusaer,吉木萨尔,CN,China,中国,xinjiang,新疆,changji,昌吉,43.99716,89.18129,652327, CN101130406,qitai,奇台,CN,China,中国,xinjiang,新疆,changji,昌吉,44.021996,89.59144,652325, CN101130407,manasi,玛纳斯,CN,China,中国,xinjiang,新疆,changji,昌吉,44.305626,86.21769,652324, CN101130408,mulei,木垒,CN,China,中国,xinjiang,新疆,changji,昌吉,43.832443,90.28283,652328, CN101130409,caijiahu,蔡家湖,CN,China,中国,xinjiang,新疆,changji,昌吉,44.40734,87.5394,652301, CN101130501,tulufan,吐鲁番,CN,China,中国,xinjiang,新疆,tulufan,吐鲁番,42.947613,89.184074,650400, CN101130502,tuokexun,托克逊,CN,China,中国,xinjiang,新疆,tulufan,吐鲁番,42.793537,88.65577,650422, CN101130503,gaochang,高昌,CN,China,中国,xinjiang,新疆,tulufan,吐鲁番,42.947628,89.18233,650402, CN101130504,shanshan,鄯善,CN,China,中国,xinjiang,新疆,tulufan,吐鲁番,42.8655,90.21269,650421, CN101130601,kuerle,库尔勒,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,41.763123,86.14595,652801, CN101130602,luntai,轮台,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,41.781265,84.24854,652822, CN101130603,yuli,尉犁,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,41.33743,86.26341,652823, CN101130604,ruoqiang,若羌,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,39.023808,88.16881,652824, CN101130605,qiemo,且末,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,38.13856,85.53263,652825, CN101130606,hejing,和静,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,42.31716,86.39107,652827, CN101130607,yanqi,焉耆,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,42.06435,86.5698,652826, CN101130608,shuo,和硕,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,42.268864,86.864944,652828, CN101130609,bayinguoleng,巴音郭楞,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,41.76855,86.15097,652800, CN101130610,bayinbuluke,巴音布鲁克,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,43.031853,84.15905,652827, CN101130611,tieganlike,铁干里克,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,39.02878,88.17605,652824, CN101130612,bohu,博湖,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,41.980167,86.63158,652829, CN101130613,tazhong,塔中,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,39.017822,83.615654,652825, CN101130614,baluntai,巴仑台,CN,China,中国,xinjiang,新疆,bayinguoleng,巴音郭楞,42.74718,86.312126,652827, CN101130701,alaer,阿拉尔,CN,China,中国,xinjiang,新疆,alaer,阿拉尔,40.541916,81.28588,659002, CN101130801,akesu,阿克苏,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.17071,80.26507,"652901,652900", CN101130802,wushi,乌什,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.21587,79.230804,652927, CN101130803,wensu,温宿,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.272995,80.24327,652922, CN101130804,baicheng,拜城,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.7961,81.86988,652926, CN101130805,xinhe,新和,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.551174,82.610825,652925, CN101130806,shaya,沙雅,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.22627,82.78077,652924, CN101130807,kuche,库车,CN,China,中国,xinjiang,新疆,akesu,阿克苏,41.71714,82.96304,652923, CN101130808,keping,柯坪,CN,China,中国,xinjiang,新疆,akesu,阿克苏,40.50624,79.04785,652929, CN101130809,awati,阿瓦提,CN,China,中国,xinjiang,新疆,akesu,阿克苏,40.63842,80.378426,652928, CN101130901,kashi,喀什,CN,China,中国,xinjiang,新疆,kashi,喀什,39.467663,75.989136,"653101,653100", CN101130902,yingjisha,英吉沙,CN,China,中国,xinjiang,新疆,kashi,喀什,38.92984,76.17429,653123, CN101130903,tashikuergan,塔什库尔干,CN,China,中国,xinjiang,新疆,kashi,喀什,37.775436,75.228065,653131, CN101130904,maigaiti,麦盖提,CN,China,中国,xinjiang,新疆,kashi,喀什,38.903385,77.651535,653127, CN101130905,shache,莎车,CN,China,中国,xinjiang,新疆,kashi,喀什,38.414497,77.248886,653125, CN101130906,yecheng,叶城,CN,China,中国,xinjiang,新疆,kashi,喀什,37.884678,77.42036,653126, CN101130907,zepu,泽普,CN,China,中国,xinjiang,新疆,kashi,喀什,38.191216,77.27359,653124, CN101130908,bachu,巴楚,CN,China,中国,xinjiang,新疆,kashi,喀什,39.783478,78.55041,653130, CN101130909,yuepuhu,岳普湖,CN,China,中国,xinjiang,新疆,kashi,喀什,39.23525,76.7724,653128, CN101130910,jiashi,伽师,CN,China,中国,xinjiang,新疆,kashi,喀什,39.494324,76.74198,653129, CN101130911,shufu,疏附,CN,China,中国,xinjiang,新疆,kashi,喀什,39.378307,75.863075,653121, CN101130912,shule,疏勒,CN,China,中国,xinjiang,新疆,kashi,喀什,39.39946,76.05365,653122, CN101131001,yining,伊宁,CN,China,中国,xinjiang,新疆,yili,伊犁,43.92221,81.316345,654002, CN101131002,chabuchaer,察布查尔,CN,China,中国,xinjiang,新疆,yili,伊犁,43.838882,81.15087,654022, CN101131003,nileke,尼勒克,CN,China,中国,xinjiang,新疆,yili,伊犁,43.789738,82.50412,654028, CN101131004,yiningxian,伊宁县,CN,China,中国,xinjiang,新疆,yili,伊犁,43.977875,81.52467,654021, CN101131005,gongliu,巩留,CN,China,中国,xinjiang,新疆,yili,伊犁,43.481617,82.22704,654024, CN101131006,xinyuan,新源,CN,China,中国,xinjiang,新疆,yili,伊犁,43.43425,83.25849,654025, CN101131007,zhaosu,昭苏,CN,China,中国,xinjiang,新疆,yili,伊犁,43.157764,81.12603,654026, CN101131008,tekesi,特克斯,CN,China,中国,xinjiang,新疆,yili,伊犁,43.214863,81.84006,654027, CN101131009,huocheng,霍城,CN,China,中国,xinjiang,新疆,yili,伊犁,44.04991,80.872505,654023, CN101131010,huoerguosi,霍尔果斯,CN,China,中国,xinjiang,新疆,yili,伊犁,44.201668,80.42076,654004, CN101131011,kuitunshi,奎屯,CN,China,中国,xinjiang,新疆,yili,伊犁,44.423447,84.9016,654003, CN101131012,yili,伊犁,CN,China,中国,xinjiang,新疆,yili,伊犁,43.92186,81.31795,654000, CN101131101,tacheng,塔城,CN,China,中国,xinjiang,新疆,tacheng,塔城,46.74628,82.983986,"654201,654200", CN101131102,yumin,裕民,CN,China,中国,xinjiang,新疆,tacheng,塔城,46.20278,82.982155,654225, CN101131103,emin,额敏,CN,China,中国,xinjiang,新疆,tacheng,塔城,46.522556,83.622116,654221, CN101131104,hebukesaier,和布克赛尔,CN,China,中国,xinjiang,新疆,tacheng,塔城,46.793,85.73355,654226, CN101131105,tuoli,托里,CN,China,中国,xinjiang,新疆,tacheng,塔城,45.935863,83.60469,654224, CN101131106,wusu,乌苏,CN,China,中国,xinjiang,新疆,tacheng,塔城,44.430115,84.67763,654202, CN101131107,shawan,沙湾,CN,China,中国,xinjiang,新疆,tacheng,塔城,44.329544,85.622505,654223, CN101131201,hami,哈密,CN,China,中国,xinjiang,新疆,hami,哈密,42.83325,93.51316,650500, CN101131202,yizhou,伊州,CN,China,中国,xinjiang,新疆,hami,哈密,42.83389,93.50917,650502, CN101131203,balikun,巴里坤,CN,China,中国,xinjiang,新疆,hami,哈密,43.599033,93.0218,650521, CN101131204,yiwu,伊吾,CN,China,中国,xinjiang,新疆,hami,哈密,43.25201,94.69277,650522, CN101131301,hetian,和田,CN,China,中国,xinjiang,新疆,hetian,和田,37.108944,79.92754,"653201,653200,653221", CN101131302,pishan,皮山,CN,China,中国,xinjiang,新疆,hetian,和田,37.616333,78.2823,653223, CN101131303,cele,策勒,CN,China,中国,xinjiang,新疆,hetian,和田,37.00167,80.80357,653225, CN101131304,moyu,墨玉,CN,China,中国,xinjiang,新疆,hetian,和田,37.27151,79.736626,653222, CN101131305,luopu,洛浦,CN,China,中国,xinjiang,新疆,hetian,和田,37.074375,80.18404,653224, CN101131306,minfeng,民丰,CN,China,中国,xinjiang,新疆,hetian,和田,37.06491,82.69235,653227, CN101131307,yutian,于田,CN,China,中国,xinjiang,新疆,hetian,和田,36.85463,81.66785,653226, CN101131401,aletai,阿勒泰,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,47.84891,88.13874,"654301,654300", CN101131402,habahe,哈巴河,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,48.059284,86.41896,654324, CN101131405,jimunai,吉木乃,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,47.43463,85.87606,654326, CN101131406,buerjin,布尔津,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,47.70453,86.86186,654321, CN101131407,fuhai,福海,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,47.11313,87.49457,654323, CN101131408,fuyun,富蕴,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,46.993107,89.524994,654322, CN101131409,qinghe,青河,CN,China,中国,xinjiang,新疆,aletai,阿勒泰,46.672447,90.38156,654325, CN101131501,atushi,阿图什,CN,China,中国,xinjiang,新疆,kezhou,克州,39.7129,76.17394,653001, CN101131502,wuqia,乌恰,CN,China,中国,xinjiang,新疆,kezhou,克州,39.716633,75.25969,653024, CN101131503,aketao,阿克陶,CN,China,中国,xinjiang,新疆,kezhou,克州,39.14708,75.94516,653022, CN101131504,aheqi,阿合奇,CN,China,中国,xinjiang,新疆,kezhou,克州,40.93757,78.450165,653023, CN101131505,kezhou,克州,CN,China,中国,xinjiang,新疆,kezhou,克州,39.713966,76.176796,653000, CN101131601,bole,博乐,CN,China,中国,xinjiang,新疆,boertala,博尔塔拉,44.903088,82.072235,652701, CN101131602,wenquan,温泉,CN,China,中国,xinjiang,新疆,boertala,博尔塔拉,44.97375,81.03099,652723, CN101131603,jinghe,精河,CN,China,中国,xinjiang,新疆,boertala,博尔塔拉,44.605644,82.89294,652722, CN101131604,boertala,博尔塔拉,CN,China,中国,xinjiang,新疆,boertala,博尔塔拉,44.90326,82.074776,652700, CN101131606,alashankou,阿拉山口,CN,China,中国,xinjiang,新疆,boertala,博尔塔拉,45.16777,82.56939,652702, CN101131701,tumushuke,图木舒克,CN,China,中国,xinjiang,新疆,tumushuke,图木舒克,39.867317,79.07798,659003, CN101131801,wujiaqu,五家渠,CN,China,中国,xinjiang,新疆,wujiaqu,五家渠,44.1674,87.526886,659004, CN101131901,tiemenguan,铁门关,CN,China,中国,xinjiang,新疆,tiemenguan,铁门关,41.82725,85.50122,659006, CN101131920,kunyu,昆玉,CN,China,中国,xinjiang,新疆,kunyu,昆玉,37.20964,79.291084,659009, CN101132101,beitun,北屯,CN,China,中国,xinjiang,新疆,beitun,北屯,47.353176,87.82493,659005, CN101132201,shuanghe,双河,CN,China,中国,xinjiang,新疆,shuanghe,双河,44.840523,82.35365,659007, CN101132301,kekedala,可克达拉,CN,China,中国,xinjiang,新疆,kekedala,可克达拉,43.6832,80.63579,659008, CN101140101,lasa,拉萨,CN,China,中国,xizang,西藏,lasa,拉萨,29.66036,91.13221,"540101,540100,540000", CN101140102,dangxiong,当雄,CN,China,中国,xizang,西藏,lasa,拉萨,30.47482,91.10355,540122, CN101140103,nimu,尼木,CN,China,中国,xizang,西藏,lasa,拉萨,29.431347,90.16554,540123, CN101140104,linzhou,林周,CN,China,中国,xizang,西藏,lasa,拉萨,29.895754,91.26184,540121, CN101140105,duilongdeqing,堆龙德庆,CN,China,中国,xizang,西藏,lasa,拉萨,29.647346,91.00282,540103, CN101140106,qushui,曲水,CN,China,中国,xizang,西藏,lasa,拉萨,29.349895,90.73805,540124, CN101140107,dazi,达孜,CN,China,中国,xizang,西藏,lasa,拉萨,29.670315,91.350975,540104, CN101140108,mozhugongka,墨竹工卡,CN,China,中国,xizang,西藏,lasa,拉萨,29.834658,91.731155,540127, CN101140109,chengguan,城关,CN,China,中国,xicang,西藏,lasa,拉萨,29.659472,91.13291,540102, CN101140201,rikaze,日喀则,CN,China,中国,xizang,西藏,rikaze,日喀则,29.267519,88.88515,540200, CN101140202,lazi,拉孜,CN,China,中国,xizang,西藏,rikaze,日喀则,29.085136,87.63743,540225, CN101140203,nanmulin,南木林,CN,China,中国,xizang,西藏,rikaze,日喀则,29.680458,89.099434,540221, CN101140204,nielamu,聂拉木,CN,China,中国,xizang,西藏,rikaze,日喀则,28.15595,85.98196,540235, CN101140205,anri,定日,CN,China,中国,xizang,西藏,rikaze,日喀则,28.656668,87.123886,540223, CN101140206,jiangzi,江孜,CN,China,中国,xizang,西藏,rikaze,日喀则,28.908846,89.60504,540222, CN101140207,pali,帕里,CN,China,中国,xizang,西藏,rikaze,日喀则,27.71821,89.15495,540233, CN101140208,zhongba,仲巴,CN,China,中国,xizang,西藏,rikaze,日喀则,29.768335,84.03283,540232, CN101140209,saga,萨嘎,CN,China,中国,xizang,西藏,rikaze,日喀则,29.328194,85.23462,540236, CN101140210,jilong,吉隆,CN,China,中国,xizang,西藏,rikaze,日喀则,28.852415,85.29835,540234, CN101140211,angren,昂仁,CN,China,中国,xizang,西藏,rikaze,日喀则,29.294758,87.23578,540226, CN101140212,dingjie,定结,CN,China,中国,xizang,西藏,rikaze,日喀则,28.36409,87.76772,540231, CN101140213,sajia,萨迦,CN,China,中国,xizang,西藏,rikaze,日喀则,28.901077,88.02301,540224, CN101140214,xietongmen,谢通门,CN,China,中国,xizang,西藏,rikaze,日喀则,29.431597,88.26051,540227, CN101140215,sangzhuzi,桑珠孜,CN,China,中国,xicang,西藏,rikaze,日喀则,29.267002,88.88667,540202, CN101140216,gangba,岗巴,CN,China,中国,xizang,西藏,rikaze,日喀则,28.27437,88.518906,540237, CN101140217,bailang,白朗,CN,China,中国,xizang,西藏,rikaze,日喀则,29.106627,89.26362,540228, CN101140218,yadong,亚东,CN,China,中国,xizang,西藏,rikaze,日喀则,27.482773,88.90681,540233, CN101140219,kangma,康马,CN,China,中国,xizang,西藏,rikaze,日喀则,28.55472,89.6834,540230, CN101140220,renbu,仁布,CN,China,中国,xizang,西藏,rikaze,日喀则,29.230299,89.84321,540229, CN101140301,shannan,山南,CN,China,中国,xizang,西藏,shannan,山南,29.236023,91.766525,540500, CN101140302,gongga,贡嘎,CN,China,中国,xizang,西藏,shannan,山南,29.289078,90.98527,540522, CN101140303,zhanang,扎囊,CN,China,中国,xizang,西藏,shannan,山南,29.246475,91.338,540521, CN101140304,jiacha,加查,CN,China,中国,xizang,西藏,shannan,山南,29.14092,92.59104,540528, CN101140305,langkazi,浪卡子,CN,China,中国,xizang,西藏,shannan,山南,28.96836,90.39875,540531, CN101140306,cuona,错那,CN,China,中国,xizang,西藏,shannan,山南,27.991707,91.96013,540530, CN101140307,longzi,隆子,CN,China,中国,xizang,西藏,shannan,山南,28.408548,92.46331,540529, CN101140308,zedang,泽当,CN,China,中国,xizang,西藏,shannan,山南,29.225254,91.7629,540502, CN101140309,naidong,乃东,CN,China,中国,xizang,西藏,shannan,山南,29.236107,91.76525,540502, CN101140310,sangri,桑日,CN,China,中国,xizang,西藏,shannan,山南,29.259773,92.01573,540523, CN101140311,luozha,洛扎,CN,China,中国,xizang,西藏,shannan,山南,28.385765,90.858246,540527, CN101140312,cuomei,措美,CN,China,中国,xizang,西藏,shannan,山南,28.437353,91.43235,540526, CN101140313,qiongjie,琼结,CN,China,中国,xizang,西藏,shannan,山南,29.025242,91.683754,540524, CN101140314,qusong,曲松,CN,China,中国,xizang,西藏,shannan,山南,29.063656,92.201065,540525, CN101140401,linzhi,林芝,CN,China,中国,xizang,西藏,linzi,林芝,29.654694,94.36235,540400, CN101140402,bomi,波密,CN,China,中国,xizang,西藏,linzi,林芝,29.85877,95.76815,540424, CN101140403,milin,米林,CN,China,中国,xizang,西藏,linzi,林芝,29.213812,94.21368,540422, CN101140404,chayu,察隅,CN,China,中国,xizang,西藏,linzi,林芝,28.660244,97.465004,540425, CN101140405,gongbujiangda,工布江达,CN,China,中国,xizang,西藏,linzhi,林芝,29.88447,93.24651,540421, CN101140406,langxian,朗县,CN,China,中国,xizang,西藏,linzhi,林芝,29.0446,93.073425,540426, CN101140407,motuo,墨脱,CN,China,中国,xizang,西藏,linzhi,林芝,29.32573,95.332245,540423, CN101140408,bayi,巴宜,CN,China,中国,xicang,西藏,linzhi,林芝,29.653732,94.360985,540402, CN101140501,changdu,昌都,CN,China,中国,xizang,西藏,changdu,昌都,31.136875,97.17845,540300, CN101140502,dingqing,丁青,CN,China,中国,xizang,西藏,changdu,昌都,31.41068,95.59775,540324, CN101140503,bianba,边坝,CN,China,中国,xizang,西藏,changdu,昌都,30.93385,94.707504,540330, CN101140504,luolong,洛隆,CN,China,中国,xizang,西藏,changdu,昌都,30.741947,95.82342,540329, CN101140505,zuogong,左贡,CN,China,中国,xizang,西藏,changdu,昌都,29.671335,97.84053,540327, CN101140506,mangkang,芒康,CN,China,中国,xizang,西藏,changdu,昌都,29.686615,98.59644,540328, CN101140507,leiwuqi,类乌齐,CN,China,中国,xizang,西藏,changdu,昌都,31.213049,96.60126,540323, CN101140508,basu,八宿,CN,China,中国,xizang,西藏,changdu,昌都,30.053408,96.91789,540326, CN101140509,jiangda,江达,CN,China,中国,xizang,西藏,changdu,昌都,31.499535,98.21835,540321, CN101140510,chaya,察雅,CN,China,中国,xizang,西藏,changdu,昌都,30.653038,97.565704,540325, CN101140511,gongjue,贡觉,CN,China,中国,xizang,西藏,changdu,昌都,30.859205,98.271194,540322, CN101140512,karuo,卡若,CN,China,中国,xicang,西藏,changdou,昌都,31.137035,97.17825,540302, CN101140601,naqu,那曲,CN,China,中国,xizang,西藏,naqu,那曲,31.476004,92.06021,540600, CN101140602,nima,尼玛,CN,China,中国,xizang,西藏,naqu,那曲,31.784979,87.23665,540629, CN101140603,jiali,嘉黎,CN,China,中国,xizang,西藏,naqu,那曲,30.640846,93.23291,540621, CN101140604,bange,班戈,CN,China,中国,xizang,西藏,naqu,那曲,31.394579,90.011826,540627, CN101140605,anduo,安多,CN,China,中国,xizang,西藏,naqu,那曲,32.2603,91.68188,540624, CN101140606,suoxian,索县,CN,China,中国,xizang,西藏,naqu,那曲,31.886173,93.784966,540626, CN101140607,nierong,聂荣,CN,China,中国,xizang,西藏,naqu,那曲,32.107857,92.30366,540623, CN101140608,baqing,巴青,CN,China,中国,xizang,西藏,naqu,那曲,31.918692,94.05405,540628, CN101140609,biru,比如,CN,China,中国,xizang,西藏,naqu,那曲,31.479918,93.68044,540622, CN101140610,shuanghu,双湖,CN,China,中国,xizang,西藏,naqu,那曲,32.86092,88.8936,540630, CN101140611,shenza,申扎,CN,China,中国,xizang,西藏,naqu,那曲,30.929056,88.70978,540625, CN101140612,seni,色尼,CN,China,中国,xicang,西藏,naqu,那曲,31.469643,92.0535,540602, CN101140701,ali,阿里,CN,China,中国,xizang,西藏,ali,阿里,32.503185,80.1055,542500, CN101140702,gaize,改则,CN,China,中国,xizang,西藏,ali,阿里,32.302074,84.062386,542526, CN101140704,shiquanhe,狮泉河,CN,China,中国,xizang,西藏,ali,阿里,32.501472,80.091,542523, CN101140705,pulan,普兰,CN,China,中国,xizang,西藏,ali,阿里,30.291897,81.17759,542521, CN101140706,zhada,札达,CN,China,中国,xizang,西藏,ali,阿里,31.478586,79.80319,542522, CN101140707,gaer,噶尔,CN,China,中国,xizang,西藏,ali,阿里,32.503372,80.105,542523, CN101140708,ritu,日土,CN,China,中国,xizang,西藏,ali,阿里,33.382454,79.73193,542524, CN101140709,geji,革吉,CN,China,中国,xizang,西藏,ali,阿里,32.38919,81.1429,542525, CN101140710,cuoqin,措勤,CN,China,中国,xizang,西藏,ali,阿里,31.016773,85.159256,542527, CN101150101,xining,西宁,CN,China,中国,qinghai,青海,xining,西宁,36.623177,101.778915,"630101,630100,630000", CN101150102,datong,大通,CN,China,中国,qinghai,青海,xining,西宁,36.931343,101.68418,630121, CN101150103,huangyuan,湟源,CN,China,中国,qinghai,青海,xining,西宁,36.68482,101.263435,630123, CN101150104,huangzhong,湟中,CN,China,中国,qinghai,青海,xining,西宁,36.50042,101.56947,630122, CN101150105,chengdong,城东,CN,China,中国,qinghai,青海,xining,西宁,36.616043,101.7961,630102, CN101150106,chengzhong,城中,CN,China,中国,qinghai,青海,xining,西宁,36.62118,101.78455,630103, CN101150107,chengxi,城西,CN,China,中国,qinghai,青海,xining,西宁,36.628323,101.76365,630104, CN101150108,chengbei,城北,CN,China,中国,qinghai,青海,xining,西宁,36.64845,101.7613,630105, CN101150201,pingan,平安,CN,China,中国,qinghai,青海,haidong,海东,36.502712,102.104294,630203, CN101150202,ledu,乐都,CN,China,中国,qinghai,青海,haidong,海东,36.48029,102.40243,630202, CN101150203,minhe,民和,CN,China,中国,qinghai,青海,haidong,海东,36.329453,102.80421,630222, CN101150204,huzhu,互助,CN,China,中国,qinghai,青海,haidong,海东,36.83994,101.95673,630223, CN101150205,hualong,化隆,CN,China,中国,qinghai,青海,haidong,海东,36.098324,102.26233,630224, CN101150206,xunhua,循化,CN,China,中国,qinghai,青海,haidong,海东,35.847248,102.486534,630225, CN101150207,haidong,海东,CN,China,中国,qinghai,青海,haidong,海东,36.502914,102.10327,630200, CN101150301,tongren,同仁,CN,China,中国,qinghai,青海,huangnan,黄南,35.51634,102.0176,632321, CN101150302,jianzha,尖扎,CN,China,中国,qinghai,青海,huangnan,黄南,35.938206,102.03195,632322, CN101150303,zeku,泽库,CN,China,中国,qinghai,青海,huangnan,黄南,35.036842,101.469345,632323, CN101150304,henan,河南,CN,China,中国,qinghai,青海,huangnan,黄南,34.734524,101.61188,632324, CN101150305,huangnan,黄南,CN,China,中国,qinghai,青海,huangnan,黄南,35.517742,102.01999,632300, CN101150401,gonghe,共和,CN,China,中国,qinghai,青海,hainan,海南,36.280285,100.6196,632521, CN101150402,hainan,海南,CN,China,中国,qinghai,青海,hainan,海南,36.280354,100.619545,632500, CN101150404,guide,贵德,CN,China,中国,qinghai,青海,hainan,海南,36.040455,101.431854,632523, CN101150406,xinghai,兴海,CN,China,中国,qinghai,青海,hainan,海南,35.58909,99.98696,632524, CN101150407,guinan,贵南,CN,China,中国,qinghai,青海,hainan,海南,35.587086,100.74792,632525, CN101150408,tongde,同德,CN,China,中国,qinghai,青海,hainan,海南,35.254494,100.57947,632522, CN101150501,maqin,玛沁,CN,China,中国,qinghai,青海,guoluo,果洛,34.473385,100.24353,632621, CN101150502,banma,班玛,CN,China,中国,qinghai,青海,guoluo,果洛,32.931587,100.73795,632622, CN101150503,gande,甘德,CN,China,中国,qinghai,青海,guoluo,果洛,33.966988,99.90259,632623, CN101150504,dari,达日,CN,China,中国,qinghai,青海,guoluo,果洛,33.753258,99.65172,632624, CN101150505,jiuzhi,久治,CN,China,中国,qinghai,青海,guoluo,果洛,33.430218,101.484886,632625, CN101150506,madu,玛多,CN,China,中国,qinghai,青海,guoluo,果洛,34.91528,98.21134,632626, CN101150507,guoluo,果洛,CN,China,中国,qinghai,青海,guoluo,果洛,34.4736,100.24214,632600, CN101150601,yushu,玉树,CN,China,中国,qinghai,青海,yushu,玉树,33.004047,97.00852,"632701,632700", CN101150602,chenduo,称多,CN,China,中国,qinghai,青海,yushu,玉树,33.367886,97.11089,632723, CN101150603,zhiduo,治多,CN,China,中国,qinghai,青海,yushu,玉树,33.85232,95.616844,632724, CN101150604,zaduo,杂多,CN,China,中国,qinghai,青海,yushu,玉树,32.891888,95.29343,632722, CN101150605,nangqian,囊谦,CN,China,中国,qinghai,青海,yushu,玉树,32.203205,96.4798,632725, CN101150606,qumacai,曲麻莱,CN,China,中国,qinghai,青海,yushu,玉树,34.12654,95.800674,632726, CN101150701,delingha,德令哈,CN,China,中国,qinghai,青海,haixi,海西,37.374554,97.37014,632802, CN101150702,haixi,海西,CN,China,中国,qinghai,青海,haixi,海西,37.85363,95.35723,632800, CN101150708,tianjun,天峻,CN,China,中国,qinghai,青海,haixi,海西,37.29906,99.02078,632823, CN101150709,wulan,乌兰,CN,China,中国,qinghai,青海,haixi,海西,36.93039,98.47985,632821, CN101150712,mangai,茫崖,CN,China,中国,qinghai,青海,haixi,海西,38.15,90.51,632825, CN101150713,dachaidan,大柴旦,CN,China,中国,qinghai,青海,haixi,海西,37.51,95.22,632825, CN101150714,geermu,格尔木,CN,China,中国,qinghai,青海,haixi,海西,36.401543,94.90578,632801, CN101150715,dulan,都兰,CN,China,中国,qinghai,青海,haixi,海西,36.298553,98.089165,632822, CN101150716,lenghu,冷湖,CN,China,中国,qinghai,青海,haixi,海西,37.37,97.37,632825, CN101150801,haiyan,海晏,CN,China,中国,qinghai,青海,haibei,海北,36.95954,100.90049,632223, CN101150802,menyuan,门源,CN,China,中国,qinghai,青海,haibei,海北,37.37663,101.61846,632221, CN101150803,qilian,祁连,CN,China,中国,qinghai,青海,haibei,海北,38.175407,100.24978,632222, CN101150804,haibei,海北,CN,China,中国,qinghai,青海,haibei,海北,36.959435,100.90106,632200, CN101150806,gangcha,刚察,CN,China,中国,qinghai,青海,haibei,海北,37.326263,100.13842,632224, CN101160101,lanzhou,兰州,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.05804,103.823555,"620101,620100,620000", CN101160102,gaolan,皋兰,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.331253,103.94933,620122, CN101160103,yongdeng,永登,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.73443,103.2622,620121, CN101160104,yuzhong,榆中,CN,China,中国,gansu,甘肃,lanzhou,兰州,35.84443,104.114975,620123, CN101160105,chengguan,城关,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.049114,103.841034,620102, CN101160106,qilihe,七里河,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.06673,103.784325,620103, CN101160107,xigu,西固,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.10037,103.62233,620104, CN101160108,anning,安宁,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.10329,103.72404,620105, CN101160109,honggu,红古,CN,China,中国,gansu,甘肃,lanzhou,兰州,36.344177,102.86182,620111, CN101160201,dingxi,定西,CN,China,中国,gansu,甘肃,dingxi,定西,35.57958,104.6263,"621101,621100", CN101160202,tongwei,通渭,CN,China,中国,gansu,甘肃,dingxi,定西,35.208923,105.2501,621121, CN101160203,longxi,陇西,CN,China,中国,gansu,甘肃,dingxi,定西,35.00341,104.63755,621122, CN101160204,weiyuan,渭源,CN,China,中国,gansu,甘肃,dingxi,定西,35.133022,104.21174,621123, CN101160205,lintao,临洮,CN,China,中国,gansu,甘肃,dingxi,定西,35.376232,103.86218,621124, CN101160206,zhangxian,漳县,CN,China,中国,gansu,甘肃,dingxi,定西,34.84864,104.46676,621125, CN101160207,minxian,岷县,CN,China,中国,gansu,甘肃,dingxi,定西,34.439106,104.03988,621126, CN101160208,anding,安定,CN,China,中国,gansu,甘肃,dingxi,定西,35.579765,104.62577,621102, CN101160301,pingliang,平凉,CN,China,中国,gansu,甘肃,pingliang,平凉,35.54279,106.68469,"620801,620800", CN101160302,jingchuan,泾川,CN,China,中国,gansu,甘肃,pingliang,平凉,35.33528,107.36522,620821, CN101160303,lingtai,灵台,CN,China,中国,gansu,甘肃,pingliang,平凉,35.06401,107.62059,620822, CN101160304,chongxin,崇信,CN,China,中国,gansu,甘肃,pingliang,平凉,35.30453,107.03125,620823, CN101160305,huating,华亭,CN,China,中国,gansu,甘肃,pingliang,平凉,35.215343,106.64931,620824, CN101160306,zhuanglang,庄浪,CN,China,中国,gansu,甘肃,pingliang,平凉,35.203426,106.04198,620825, CN101160307,jingning,静宁,CN,China,中国,gansu,甘肃,pingliang,平凉,35.52524,105.73349,620826, CN101160308,kongtong,崆峒,CN,China,中国,gansu,甘肃,pingliang,平凉,35.54173,106.68422,620802, CN101160401,qingyang,庆阳,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.73422,107.638374,"621001,621000", CN101160402,xifeng,西峰,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.73371,107.638824,621002, CN101160403,huanxian,环县,CN,China,中国,gansu,甘肃,qingyang,庆阳,36.56932,107.308754,621022, CN101160404,huachi,华池,CN,China,中国,gansu,甘肃,qingyang,庆阳,36.457302,107.98629,621023, CN101160405,heshui,合水,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.819004,108.01987,621024, CN101160406,zhengning,正宁,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.490643,108.36107,621025, CN101160407,ningxian,宁县,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.50201,107.92118,621026, CN101160408,zhenyuan,镇原,CN,China,中国,gansu,甘肃,qingyang,庆阳,35.677807,107.19571,621027, CN101160409,qingcheng,庆城,CN,China,中国,gansu,甘肃,qingyang,庆阳,36.013504,107.885666,621021, CN101160501,wuwei,武威,CN,China,中国,gansu,甘肃,wuwei,武威,37.929996,102.6347,"620601,620600", CN101160502,minqin,民勤,CN,China,中国,gansu,甘肃,wuwei,武威,38.624622,103.09065,620621, CN101160503,gulang,古浪,CN,China,中国,gansu,甘肃,wuwei,武威,37.47057,102.89805,620622, CN101160504,liangzhou,凉州,CN,China,中国,gansu,甘肃,wuwei,武威,37.93025,102.63449,620602, CN101160505,tianzhu,天祝,CN,China,中国,gansu,甘肃,wuwei,武威,36.97168,103.14204,620623, CN101160601,jinchang,金昌,CN,China,中国,gansu,甘肃,jinchang,金昌,38.514236,102.18789,"620301,620300", CN101160602,yongchang,永昌,CN,China,中国,gansu,甘肃,jinchang,金昌,38.247353,101.971954,620321, CN101160603,jinchuan,金川,CN,China,中国,gansu,甘肃,jinchang,金昌,38.513794,102.18768,620302, CN101160701,zhangye,张掖,CN,China,中国,gansu,甘肃,zhangye,张掖,38.932896,100.455475,"620701,620700", CN101160702,sunan,肃南,CN,China,中国,gansu,甘肃,zhangye,张掖,38.83727,99.61709,620721, CN101160703,minle,民乐,CN,China,中国,gansu,甘肃,zhangye,张掖,38.434456,100.81662,620722, CN101160704,linze,临泽,CN,China,中国,gansu,甘肃,zhangye,张掖,39.15215,100.166336,620723, CN101160705,gaotai,高台,CN,China,中国,gansu,甘肃,zhangye,张掖,39.37631,99.81665,620724, CN101160706,shandan,山丹,CN,China,中国,gansu,甘肃,zhangye,张掖,38.78484,101.08844,620725, CN101160707,ganzhou,甘州,CN,China,中国,gansu,甘肃,zhangye,张掖,38.931774,100.454865,620702, CN101160801,jiuquan,酒泉,CN,China,中国,gansu,甘肃,jiuquan,酒泉,39.744022,98.510796,"620901,620900", CN101160802,suzhou,肃州,CN,China,中国,gansu,甘肃,jiuquan,酒泉,39.74386,98.511154,620902, CN101160803,jinta,金塔,CN,China,中国,gansu,甘肃,jiuquan,酒泉,39.983036,98.90296,620921, CN101160804,akesai,阿克塞,CN,China,中国,gansu,甘肃,jiuquan,酒泉,39.63164,94.33764,620924, CN101160805,guazhou,瓜州,CN,China,中国,gansu,甘肃,jiuquan,酒泉,40.516525,95.780594,620922, CN101160806,subei,肃北,CN,China,中国,gansu,甘肃,jiuquan,酒泉,39.51224,94.87728,620923, CN101160807,yumen,玉门,CN,China,中国,gansu,甘肃,jiuquan,酒泉,40.28682,97.03721,620981, CN101160808,dunhuang,敦煌,CN,China,中国,gansu,甘肃,jiuquan,酒泉,40.141117,94.664276,620982, CN101160901,tianshui,天水,CN,China,中国,gansu,甘肃,tianshui,天水,34.57853,105.725,"620501,620500", CN101160902,qinzhou,秦州,CN,China,中国,gansu,甘肃,tianshui,天水,34.578644,105.72448,620502, CN101160903,qingshui,清水,CN,China,中国,gansu,甘肃,tianshui,天水,34.75287,106.13988,620521, CN101160904,qinan,秦安,CN,China,中国,gansu,甘肃,tianshui,天水,34.862354,105.6733,620522, CN101160905,gangu,甘谷,CN,China,中国,gansu,甘肃,tianshui,天水,34.747326,105.332344,620523, CN101160906,wushan,武山,CN,China,中国,gansu,甘肃,tianshui,天水,34.721954,104.89169,620524, CN101160907,zhangjiachuan,张家川,CN,China,中国,gansu,甘肃,tianshui,天水,34.993237,106.21242,620525, CN101160908,maiji,麦积,CN,China,中国,gansu,甘肃,tianshui,天水,34.563503,105.89763,620503, CN101161001,wudu,武都,CN,China,中国,gansu,甘肃,longnan,陇南,33.388157,104.92986,621202, CN101161002,chengxian,成县,CN,China,中国,gansu,甘肃,longnan,陇南,33.739864,105.734436,621221, CN101161003,wenxian,文县,CN,China,中国,gansu,甘肃,longnan,陇南,32.94217,104.68245,621222, CN101161004,dangchang,宕昌,CN,China,中国,gansu,甘肃,longnan,陇南,34.042656,104.39448,621223, CN101161005,kangxian,康县,CN,China,中国,gansu,甘肃,longnan,陇南,33.328266,105.609535,621224, CN101161006,xihe,西和,CN,China,中国,gansu,甘肃,longnan,陇南,34.013718,105.299736,621225, CN101161007,lixian,礼县,CN,China,中国,gansu,甘肃,longnan,陇南,34.18939,105.18162,621226, CN101161008,huixian,徽县,CN,China,中国,gansu,甘肃,longnan,陇南,33.767784,106.08563,621227, CN101161009,liangdang,两当,CN,China,中国,gansu,甘肃,longnan,陇南,33.91073,106.30696,621228, CN101161010,longnan,陇南,CN,China,中国,gansu,甘肃,longnan,陇南,33.3886,104.92938,"621201,621200", CN101161101,linxia,临夏,CN,China,中国,gansu,甘肃,linxia,临夏,35.59941,103.21163,"622901,622900,622921", CN101161102,kangle,康乐,CN,China,中国,gansu,甘肃,linxia,临夏,35.371906,103.709854,622922, CN101161103,yongjing,永靖,CN,China,中国,gansu,甘肃,linxia,临夏,35.938934,103.31987,622923, CN101161104,guanghe,广河,CN,China,中国,gansu,甘肃,linxia,临夏,35.48169,103.57619,622924, CN101161105,hezheng,和政,CN,China,中国,gansu,甘肃,linxia,临夏,35.425972,103.35036,622925, CN101161106,dongxiang,东乡,CN,China,中国,gansu,甘肃,linxia,临夏,35.66383,103.389565,622926, CN101161107,jishishan,积石山,CN,China,中国,gansu,甘肃,linxia,临夏,35.712906,102.87747,622927, CN101161201,hezuo,合作,CN,China,中国,gansu,甘肃,gannan,甘南,34.985973,102.91149,623001, CN101161202,lintan,临潭,CN,China,中国,gansu,甘肃,gannan,甘南,34.69164,103.35305,623021, CN101161203,zhuoni,卓尼,CN,China,中国,gansu,甘肃,gannan,甘南,34.588165,103.50851,623022, CN101161204,zhouqu,舟曲,CN,China,中国,gansu,甘肃,gannan,甘南,33.782963,104.37027,623023, CN101161205,diebu,迭部,CN,China,中国,gansu,甘肃,gannan,甘南,34.055347,103.22101,623024, CN101161206,maqu,玛曲,CN,China,中国,gansu,甘肃,gannan,甘南,33.99807,102.07577,623025, CN101161207,luqu,碌曲,CN,China,中国,gansu,甘肃,gannan,甘南,34.589592,102.488495,623026, CN101161208,xiahe,夏河,CN,China,中国,gansu,甘肃,gannan,甘南,35.20085,102.520744,623027, CN101161209,gannan,甘南,CN,China,中国,gansu,甘肃,gannan,甘南,34.986355,102.91101,623000, CN101161301,baiyin,白银,CN,China,中国,gansu,甘肃,baiyin,白银,36.54568,104.17361,"620401,620400,620402", CN101161302,jingyuan,靖远,CN,China,中国,gansu,甘肃,baiyin,白银,36.561424,104.68697,620421, CN101161303,huining,会宁,CN,China,中国,gansu,甘肃,baiyin,白银,35.692486,105.05434,620422, CN101161304,pingchuan,平川,CN,China,中国,gansu,甘肃,baiyin,白银,36.72921,104.81921,620403, CN101161305,jingtai,景泰,CN,China,中国,gansu,甘肃,baiyin,白银,37.19352,104.06639,620423, CN101161401,jiayuguan,嘉峪关,CN,China,中国,gansu,甘肃,jiayuguan,嘉峪关,39.78653,98.277306,"620201,620200", CN101170101,yinchuan,银川,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.46637,106.278175,"640101,640100,640000", CN101170102,yongning,永宁,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.28043,106.253784,640121, CN101170103,lingwu,灵武,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.09406,106.3347,640181, CN101170104,helan,贺兰,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.55456,106.3459,640122, CN101170105,xingqing,兴庆,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.46747,106.2784,640104, CN101170106,xixia,西夏,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.492424,106.13212,640105, CN101170107,jinfeng,金凤,CN,China,中国,ningxia,宁夏,yinchuan,银川,38.477352,106.228485,640106, CN101170201,shizuishan,石嘴山,CN,China,中国,ningxia,宁夏,shizuishan,石嘴山,39.01333,106.376175,"640201,640200", CN101170202,huinong,惠农,CN,China,中国,ningxia,宁夏,shizuishan,石嘴山,39.230095,106.77551,640205, CN101170203,pingluo,平罗,CN,China,中国,ningxia,宁夏,shizuishan,石嘴山,38.90674,106.54489,640221, CN101170204,taole,陶乐,CN,China,中国,ningxia,宁夏,shizuishan,石嘴山,38.81181,106.69325,640221, CN101170205,dawukou,大武口,CN,China,中国,ningxia,宁夏,shizuishan,石嘴山,39.014156,106.37665,640202, CN101170301,wuzhong,吴忠,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,37.986164,106.19941,"640301,640300", CN101170302,tongxin,同心,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,36.9829,105.914764,640324, CN101170303,yanchi,盐池,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,37.78422,107.40541,640323, CN101170304,litong,利通,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,37.985966,106.19942,640302, CN101170305,hongsibao,红寺堡,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,37.421616,106.067314,640303, CN101170306,qingtongxia,青铜峡,CN,China,中国,ningxia,宁夏,wuzhong,吴忠,38.021507,106.07539,640381, CN101170401,guyuan,固原,CN,China,中国,ningxia,宁夏,guyuan,固原,36.004562,106.28524,"640401,640400", CN101170402,xiji,西吉,CN,China,中国,ningxia,宁夏,guyuan,固原,35.965385,105.731804,640422, CN101170403,longde,隆德,CN,China,中国,ningxia,宁夏,guyuan,固原,35.618233,106.12344,640423, CN101170404,jinyuan,泾源,CN,China,中国,ningxia,宁夏,guyuan,固原,35.49344,106.33868,640424, CN101170405,yuanzhou,原州,CN,China,中国,ningxia,宁夏,guyuan,固原,36.005337,106.28477,640402, CN101170406,pengyang,彭阳,CN,China,中国,ningxia,宁夏,guyuan,固原,35.849976,106.64151,640425, CN101170501,zhongwei,中卫,CN,China,中国,ningxia,宁夏,zhongwei,中卫,37.51495,105.18957,"640501,640500", CN101170502,zhongning,中宁,CN,China,中国,ningxia,宁夏,zhongwei,中卫,37.489735,105.67578,640521, CN101170503,shapotou,沙坡头,CN,China,中国,ningxia,宁夏,zhongwei,中卫,37.514565,105.19054,640502, CN101170504,haiyuan,海原,CN,China,中国,ningxia,宁夏,zhongwei,中卫,36.562008,105.64732,640522, CN101180101,zhengzhou,郑州,CN,China,中国,henan,河南,zhengzhou,郑州,34.757977,113.66541,"410101,410100,410000", CN101180102,gongyi,巩义,CN,China,中国,henan,河南,zhengzhou,郑州,34.75218,112.98283,410181, CN101180103,xingyang,荥阳,CN,China,中国,henan,河南,zhengzhou,郑州,34.789078,113.391525,410182, CN101180104,dengfeng,登封,CN,China,中国,henan,河南,zhengzhou,郑州,34.459938,113.037766,410185, CN101180105,xinmi,新密,CN,China,中国,henan,河南,zhengzhou,郑州,34.537846,113.380615,410183, CN101180106,xinzheng,新郑,CN,China,中国,henan,河南,zhengzhou,郑州,34.39422,113.73967,410184, CN101180107,zhongmou,中牟,CN,China,中国,henan,河南,zhengzhou,郑州,34.721977,114.02252,410122, CN101180108,shangjie,上街,CN,China,中国,henan,河南,zhengzhou,郑州,34.80869,113.29828,410106, CN101180109,zhongyuan,中原,CN,China,中国,henan,河南,zhengzhou,郑州,34.748287,113.61157,410102, CN101180110,erqi,二七,CN,China,中国,henan,河南,zhengzhou,郑州,34.730934,113.645424,410103, CN101180111,guancheng,管城,CN,China,中国,henan,河南,zhengzhou,郑州,34.746452,113.68531,410104, CN101180112,jinshui,金水,CN,China,中国,henan,河南,zhengzhou,郑州,34.775837,113.686035,410105, CN101180113,huiji,惠济,CN,China,中国,henan,河南,zhengzhou,郑州,34.82859,113.61836,410108, CN101180201,anyang,安阳,CN,China,中国,henan,河南,anyang,安阳,36.103443,114.352486,"410501,410500,410522", CN101180202,tangyin,汤阴,CN,China,中国,henan,河南,anyang,安阳,35.922348,114.36236,410523, CN101180203,huaxian,滑县,CN,China,中国,henan,河南,anyang,安阳,35.574627,114.524,410526, CN101180204,neihuang,内黄,CN,China,中国,henan,河南,anyang,安阳,35.9537,114.90458,410527, CN101180205,linzhou,林州,CN,China,中国,henan,河南,anyang,安阳,36.063404,113.82377,410581, CN101180206,wenfeng,文峰,CN,China,中国,henan,河南,anyang,安阳,36.098103,114.35256,410502, CN101180207,beiguan,北关,CN,China,中国,henan,河南,anyang,安阳,36.10978,114.352646,410503, CN101180208,yindou,殷都,CN,China,中国,henan,河南,anyang,安阳,36.108974,114.300095,410505, CN101180209,longan,龙安,CN,China,中国,henan,河南,anyang,安阳,36.09557,114.323524,410506, CN101180301,xinxiang,新乡,CN,China,中国,henan,河南,xinxiang,新乡,35.19002,113.80618,"410701,410700,410721", CN101180302,huojia,获嘉,CN,China,中国,henan,河南,xinxiang,新乡,35.261684,113.65725,410724, CN101180303,yuanyang,原阳,CN,China,中国,henan,河南,xinxiang,新乡,35.054,113.965965,410725, CN101180304,huixian,辉县,CN,China,中国,henan,河南,xinxiang,新乡,35.46132,113.80252,410782, CN101180305,weihui,卫辉,CN,China,中国,henan,河南,xinxiang,新乡,35.404297,114.06586,410781, CN101180306,yanjin,延津,CN,China,中国,henan,河南,xinxiang,新乡,35.149513,114.20098,410726, CN101180307,fengqiu,封丘,CN,China,中国,henan,河南,xinxiang,新乡,35.04057,114.42341,410727, CN101180308,changyuan,长垣,CN,China,中国,henan,河南,xinxiang,新乡,35.19615,114.673805,410728, CN101180309,hongqi,红旗,CN,China,中国,henan,河南,xinxiang,新乡,35.302685,113.87816,410702, CN101180310,weibin,卫滨,CN,China,中国,henan,河南,xinxiang,新乡,35.304905,113.866066,410703, CN101180311,fengquan,凤泉,CN,China,中国,henan,河南,xinxiang,新乡,35.379856,113.906715,410704, CN101180312,muye,牧野,CN,China,中国,henan,河南,xinxiang,新乡,35.312973,113.89716,410711, CN101180401,xuchang,许昌,CN,China,中国,henan,河南,xuchang,许昌,34.022957,113.826065,"411001,411000,411003", CN101180402,yanling,鄢陵,CN,China,中国,henan,河南,xuchang,许昌,34.100502,114.18851,411024, CN101180403,xiangcheng,襄城,CN,China,中国,henan,河南,xuchang,许昌,33.85594,113.493164,411025, CN101180404,changge,长葛,CN,China,中国,henan,河南,xuchang,许昌,34.219257,113.76891,411082, CN101180405,yuzhou,禹州,CN,China,中国,henan,河南,xuchang,许昌,34.154404,113.47131,411081, CN101180406,weidou,魏都,CN,China,中国,henan,河南,xuchang,许昌,34.02711,113.82831,411002, CN101180407,jianan,建安,CN,China,中国,henan,河南,xuchang,许昌,34.12467,113.82299,411003, CN101180501,pingdingshan,平顶山,CN,China,中国,henan,河南,pingdingshan,平顶山,33.73524,113.30772,"410401,410400", CN101180502,jiaxian,郏县,CN,China,中国,henan,河南,pingdingshan,平顶山,33.971992,113.22045,410425, CN101180503,baofeng,宝丰,CN,China,中国,henan,河南,pingdingshan,平顶山,33.86636,113.06681,410421, CN101180504,ruzhou,汝州,CN,China,中国,henan,河南,pingdingshan,平顶山,34.167408,112.84534,410482, CN101180505,yexian,叶县,CN,China,中国,henan,河南,pingdingshan,平顶山,33.62125,113.3583,410422, CN101180506,wugang,舞钢,CN,China,中国,henan,河南,pingdingshan,平顶山,33.302082,113.52625,410481, CN101180507,lushan,鲁山,CN,China,中国,henan,河南,pingdingshan,平顶山,33.740326,112.9067,410423, CN101180508,shilong,石龙,CN,China,中国,henan,河南,pingdingshan,平顶山,33.90154,112.889885,410404, CN101180509,xinhua,新华,CN,China,中国,henan,河南,pingdingshan,平顶山,33.73758,113.299065,410402, CN101180510,weidong,卫东,CN,China,中国,henan,河南,pingdingshan,平顶山,33.739285,113.310326,410403, CN101180511,zhanhe,湛河,CN,China,中国,henan,河南,pingdingshan,平顶山,33.72568,113.32087,410411, CN101180601,xinyang,信阳,CN,China,中国,henan,河南,xinyang,信阳,32.123276,114.07503,"411501,411500", CN101180602,xixian,息县,CN,China,中国,henan,河南,xinyang,信阳,32.344746,114.740715,411528, CN101180603,luoshan,罗山,CN,China,中国,henan,河南,xinyang,信阳,32.203205,114.53342,411521, CN101180604,guangshan,光山,CN,China,中国,henan,河南,xinyang,信阳,32.0104,114.90358,411522, CN101180605,xinxian,新县,CN,China,中国,henan,河南,xinyang,信阳,31.63515,114.87705,411523, CN101180606,huaibin,淮滨,CN,China,中国,henan,河南,xinyang,信阳,32.45264,115.41545,411527, CN101180607,huangchuan,潢川,CN,China,中国,henan,河南,xinyang,信阳,32.134026,115.050125,411526, CN101180608,gushi,固始,CN,China,中国,henan,河南,xinyang,信阳,32.183075,115.66733,411525, CN101180609,shangcheng,商城,CN,China,中国,henan,河南,xinyang,信阳,31.799982,115.406296,411524, CN101180610,shihe,浉河,CN,China,中国,henan,河南,xinyang,信阳,32.123276,114.07503,411502, CN101180611,pingqiao,平桥,CN,China,中国,henan,河南,xinyang,信阳,32.098396,114.12603,411503, CN101180701,nanyang,南阳,CN,China,中国,henan,河南,nanyang,南阳,32.99908,112.54092,"411301,411300", CN101180702,nanzhao,南召,CN,China,中国,henan,河南,nanyang,南阳,33.488617,112.435585,411321, CN101180703,fangcheng,方城,CN,China,中国,henan,河南,nanyang,南阳,33.25514,113.01093,411322, CN101180704,sheqi,社旗,CN,China,中国,henan,河南,nanyang,南阳,33.056126,112.93828,411327, CN101180705,xixia,西峡,CN,China,中国,henan,河南,nanyang,南阳,33.302982,111.48577,411323, CN101180706,neixiang,内乡,CN,China,中国,henan,河南,nanyang,南阳,33.046356,111.8438,411325, CN101180707,zhenping,镇平,CN,China,中国,henan,河南,nanyang,南阳,33.03665,112.23272,411324, CN101180708,xichuan,淅川,CN,China,中国,henan,河南,nanyang,南阳,33.136105,111.48903,411326, CN101180709,xinye,新野,CN,China,中国,henan,河南,nanyang,南阳,32.524006,112.36562,411329, CN101180710,tanghe,唐河,CN,China,中国,henan,河南,nanyang,南阳,32.687893,112.83849,411328, CN101180711,dengzhou,邓州,CN,China,中国,henan,河南,nanyang,南阳,32.68164,112.09271,411381, CN101180712,tongbai,桐柏,CN,China,中国,henan,河南,nanyang,南阳,32.367153,113.40606,411330, CN101180713,wancheng,宛城,CN,China,中国,henan,河南,nanyang,南阳,32.994858,112.54459,411302, CN101180714,wolong,卧龙,CN,China,中国,henan,河南,nanyang,南阳,32.989876,112.528786,411303, CN101180801,kaifeng,开封,CN,China,中国,henan,河南,kaifeng,开封,34.79705,114.341446,"410201,410200", CN101180802,qixian,杞县,CN,China,中国,henan,河南,kaifeng,开封,34.554585,114.77047,410221, CN101180803,weishi,尉氏,CN,China,中国,henan,河南,kaifeng,开封,34.412254,114.193924,410223, CN101180804,tongxu,通许,CN,China,中国,henan,河南,kaifeng,开封,34.477303,114.467735,410222, CN101180805,lankao,兰考,CN,China,中国,henan,河南,kaifeng,开封,34.8299,114.82057,410225, CN101180806,longting,龙亭,CN,China,中国,henan,河南,kaifeng,开封,34.79983,114.35335,410202, CN101180807,shunhe,顺河,CN,China,中国,henan,河南,kaifeng,开封,34.80046,114.364876,410203, CN101180808,gulou,鼓楼,CN,China,中国,henan,河南,kaifeng,开封,34.79238,114.3485,410204, CN101180809,yuwangtai,禹王台,CN,China,中国,henan,河南,kaifeng,开封,34.779728,114.35024,410205, CN101180810,xiangfu,祥符,CN,China,中国,henan,河南,kaifeng,开封,34.756477,114.43762,410212, CN101180901,luoyang,洛阳,CN,China,中国,henan,河南,luoyang,洛阳,34.66304,112.43447,"410301,410300", CN101180902,xinan,新安,CN,China,中国,henan,河南,luoyang,洛阳,34.72868,112.1414,410323, CN101180903,mengjin,孟津,CN,China,中国,henan,河南,luoyang,洛阳,34.826485,112.44389,410322, CN101180904,yiyang,宜阳,CN,China,中国,henan,河南,luoyang,洛阳,34.51648,112.17999,410327, CN101180905,luoning,洛宁,CN,China,中国,henan,河南,luoyang,洛阳,34.38718,111.655396,410328, CN101180906,yichuan,伊川,CN,China,中国,henan,河南,luoyang,洛阳,34.423416,112.42938,410329, CN101180907,songxian,嵩县,CN,China,中国,henan,河南,luoyang,洛阳,34.13156,112.08777,410325, CN101180908,yanshi,偃师,CN,China,中国,henan,河南,luoyang,洛阳,34.72304,112.78774,410381, CN101180909,luanchuan,栾川,CN,China,中国,henan,河南,luoyang,洛阳,33.783195,111.618385,410324, CN101180910,ruyang,汝阳,CN,China,中国,henan,河南,luoyang,洛阳,34.15323,112.473785,410326, CN101180911,jili,吉利,CN,China,中国,henan,河南,luoyang,洛阳,34.899094,112.58479,410306, CN101180912,laocheng,老城,CN,China,中国,henan,河南,luoyang,洛阳,34.682945,112.477295,410302, CN101180913,xigong,西工,CN,China,中国,henan,河南,luoyang,洛阳,34.667847,112.44323,410303, CN101180914,chanhe,瀍河,CN,China,中国,henan,河南,luoyang,洛阳,34.68474,112.49162,410304, CN101180915,jianxi,涧西,CN,China,中国,henan,河南,luoyang,洛阳,34.65425,112.39925,410305, CN101180916,luolong,洛龙,CN,China,中国,henan,河南,luoyang,洛阳,34.618557,112.456635,410311, CN101181001,shangqiu,商丘,CN,China,中国,henan,河南,shangqiu,商丘,34.437054,115.6505,"411401,411400", CN101181002,liangyuan,梁园,CN,China,中国,henan,河南,shangqiu,商丘,34.436554,115.65459,411402, CN101181003,suixian,睢县,CN,China,中国,henan,河南,shangqiu,商丘,34.428432,115.07011,411422, CN101181004,minquan,民权,CN,China,中国,henan,河南,shangqiu,商丘,34.648457,115.14815,411421, CN101181005,yucheng,虞城,CN,China,中国,henan,河南,shangqiu,商丘,34.399635,115.86381,411425, CN101181006,zhecheng,柘城,CN,China,中国,henan,河南,shangqiu,商丘,34.075275,115.307434,411424, CN101181007,ningling,宁陵,CN,China,中国,henan,河南,shangqiu,商丘,34.4493,115.32005,411423, CN101181008,xiayi,夏邑,CN,China,中国,henan,河南,shangqiu,商丘,34.240894,116.13989,411426, CN101181009,yongcheng,永城,CN,China,中国,henan,河南,shangqiu,商丘,33.931316,116.44967,411481, CN101181010,suiyang,睢阳,CN,China,中国,henan,河南,shangqiu,商丘,34.390537,115.65382,411403, CN101181101,jiaozuo,焦作,CN,China,中国,henan,河南,jiaozuo,焦作,35.23904,113.238266,"410801,410800", CN101181102,xiuwu,修武,CN,China,中国,henan,河南,jiaozuo,焦作,35.229923,113.447464,410821, CN101181103,wuzhi,武陟,CN,China,中国,henan,河南,jiaozuo,焦作,35.09885,113.40833,410823, CN101181104,qinyang,沁阳,CN,China,中国,henan,河南,jiaozuo,焦作,35.08901,112.93454,410882, CN101181105,jiefang,解放,CN,China,中国,henan,河南,jiaozuo,焦作,35.241352,113.22613,410802, CN101181106,boai,博爱,CN,China,中国,henan,河南,jiaozuo,焦作,35.17035,113.06931,410822, CN101181107,wenxian,温县,CN,China,中国,henan,河南,jiaozuo,焦作,34.941235,113.07912,410825, CN101181108,mengzhou,孟州,CN,China,中国,henan,河南,jiaozuo,焦作,34.90963,112.78708,410883, CN101181109,zhongzhan,中站,CN,China,中国,henan,河南,jiaozuo,焦作,35.236145,113.17548,410803, CN101181110,macun,马村,CN,China,中国,henan,河南,jiaozuo,焦作,35.265453,113.3217,410804, CN101181111,shanyang,山阳,CN,China,中国,henan,河南,jiaozuo,焦作,35.21476,113.26766,410811, CN101181201,hebi,鹤壁,CN,China,中国,henan,河南,hebi,鹤壁,35.748238,114.29544,"410601,410600", CN101181202,xunxian,浚县,CN,China,中国,henan,河南,hebi,鹤壁,35.671284,114.55016,410621, CN101181203,qixian,淇县,CN,China,中国,henan,河南,hebi,鹤壁,35.609478,114.20038,410622, CN101181204,heshan,鹤山,CN,China,中国,henan,河南,hebi,鹤壁,35.936127,114.16655,410602, CN101181205,shancheng,山城,CN,China,中国,henan,河南,hebi,鹤壁,35.896057,114.184204,410603, CN101181206,qibin,淇滨,CN,China,中国,henan,河南,hebi,鹤壁,35.748383,114.293915,410611, CN101181301,puyang,濮阳,CN,China,中国,henan,河南,puyang,濮阳,35.768234,115.0413,"410901,410900,410928", CN101181302,taiqian,台前,CN,China,中国,henan,河南,puyang,濮阳,35.996475,115.85568,410927, CN101181303,nanle,南乐,CN,China,中国,henan,河南,puyang,濮阳,36.075203,115.20434,410923, CN101181304,qingfeng,清丰,CN,China,中国,henan,河南,puyang,濮阳,35.902412,115.107285,410922, CN101181305,fanxian,范县,CN,China,中国,henan,河南,puyang,濮阳,35.85198,115.50421,410926, CN101181306,hualong,华龙,CN,China,中国,henan,河南,puyang,濮阳,35.76047,115.03184,410902, CN101181401,zhoukou,周口,CN,China,中国,henan,河南,zhoukou,周口,33.620358,114.64965,"411601,411600", CN101181402,fugou,扶沟,CN,China,中国,henan,河南,zhoukou,周口,34.05406,114.392006,411621, CN101181403,taikang,太康,CN,China,中国,henan,河南,zhoukou,周口,34.06531,114.853836,411627, CN101181404,huaiyang,淮阳,CN,China,中国,henan,河南,zhoukou,周口,33.732548,114.87016,411626, CN101181405,xihua,西华,CN,China,中国,henan,河南,zhoukou,周口,33.784378,114.53007,411622, CN101181406,shangshui,商水,CN,China,中国,henan,河南,zhoukou,周口,33.543846,114.60927,411623, CN101181407,xiangcheng,项城,CN,China,中国,henan,河南,zhoukou,周口,33.443085,114.89952,411681, CN101181408,dancheng,郸城,CN,China,中国,henan,河南,zhoukou,周口,33.643852,115.189,411625, CN101181409,luyi,鹿邑,CN,China,中国,henan,河南,zhoukou,周口,33.86107,115.48639,411628, CN101181410,shenqiu,沈丘,CN,China,中国,henan,河南,zhoukou,周口,33.395515,115.07838,411624, CN101181411,chuanhui,川汇,CN,China,中国,henan,河南,zhoukou,周口,33.614838,114.65214,411602, CN101181501,luohe,漯河,CN,China,中国,henan,河南,luohe,漯河,33.575855,114.026405,"411101,411100", CN101181502,linying,临颍,CN,China,中国,henan,河南,luohe,漯河,33.80609,113.93889,411122, CN101181503,wuyang,舞阳,CN,China,中国,henan,河南,luohe,漯河,33.43628,113.610565,411121, CN101181504,yuanhui,源汇,CN,China,中国,henan,河南,luohe,漯河,33.56544,114.017944,411102, CN101181505,yancheng,郾城,CN,China,中国,henan,河南,luohe,漯河,33.588898,114.016815,411103, CN101181506,zhaoling,召陵,CN,China,中国,henan,河南,luohe,漯河,33.567554,114.05169,411104, CN101181601,zhumadian,驻马店,CN,China,中国,henan,河南,zhumadian,驻马店,32.980167,114.024734,"411701,411700", CN101181602,xiping,西平,CN,China,中国,henan,河南,zhumadian,驻马店,33.382317,114.02686,411721, CN101181603,suiping,遂平,CN,China,中国,henan,河南,zhumadian,驻马店,33.14698,114.00371,411728, CN101181604,shangcai,上蔡,CN,China,中国,henan,河南,zhumadian,驻马店,33.264717,114.26689,411722, CN101181605,runan,汝南,CN,China,中国,henan,河南,zhumadian,驻马店,33.004536,114.3595,411727, CN101181606,biyang,泌阳,CN,China,中国,henan,河南,zhumadian,驻马店,32.72513,113.32605,411726, CN101181607,pingyu,平舆,CN,China,中国,henan,河南,zhumadian,驻马店,32.955627,114.63711,411723, CN101181608,xincai,新蔡,CN,China,中国,henan,河南,zhumadian,驻马店,32.749947,114.97524,411729, CN101181609,queshan,确山,CN,China,中国,henan,河南,zhumadian,驻马店,32.801537,114.02668,411725, CN101181610,zhengyang,正阳,CN,China,中国,henan,河南,zhumadian,驻马店,32.601826,114.38948,411724, CN101181611,yicheng,驿城,CN,China,中国,henan,河南,zhumadian,驻马店,32.97756,114.02915,411702, CN101181701,sanmenxia,三门峡,CN,China,中国,henan,河南,sanmenxia,三门峡,34.777336,111.1941,"411201,411200", CN101181702,lingbao,灵宝,CN,China,中国,henan,河南,sanmenxia,三门峡,34.521263,110.88577,411282, CN101181703,mianchi,渑池,CN,China,中国,henan,河南,sanmenxia,三门峡,34.76349,111.76299,411221, CN101181704,lushi,卢氏,CN,China,中国,henan,河南,sanmenxia,三门峡,34.053993,111.05265,411224, CN101181705,yima,义马,CN,China,中国,henan,河南,sanmenxia,三门峡,34.74687,111.869415,411281, CN101181707,hubin,湖滨,CN,China,中国,henan,河南,sanmenxia,三门峡,34.77812,111.19487,411202, CN101181708,shanzhou,陕州,CN,China,中国,henan,河南,sanmenxia,三门峡,34.720245,111.10385,411203, CN101181801,jiyuan,济源,CN,China,中国,henan,河南,jiyuan,济源,35.090378,112.59005,419001, CN101190101,nanjing,南京,CN,China,中国,jiangsu,江苏,nanjing,南京,32.041546,118.76741,"320101,320100,320000", CN101190102,lishui,溧水,CN,China,中国,jiangsu,江苏,nanjing,南京,31.65306,119.02873,320117, CN101190103,gaochun,高淳,CN,China,中国,jiangsu,江苏,nanjing,南京,31.327131,118.87589,320118, CN101190104,jiangning,江宁,CN,China,中国,jiangsu,江苏,nanjing,南京,31.953419,118.850624,320115, CN101190105,luhe,六合,CN,China,中国,jiangsu,江苏,nanjing,南京,32.340656,118.85065,320116, CN101190107,pukou,浦口,CN,China,中国,jiangsu,江苏,nanjing,南京,32.05839,118.625305,320111, CN101190108,xuanwu,玄武,CN,China,中国,jiangsu,江苏,nanjing,南京,32.05068,118.7922,320102, CN101190109,qinhuai,秦淮,CN,China,中国,jiangsu,江苏,nanjing,南京,32.033817,118.78609,320104, CN101190110,jianye,建邺,CN,China,中国,jiangsu,江苏,nanjing,南京,32.00454,118.73269,320105, CN101190111,gulou,鼓楼,CN,China,中国,jiangsu,江苏,nanjing,南京,32.066967,118.76974,320106, CN101190112,qixia,栖霞,CN,China,中国,jiangsu,江苏,nanjing,南京,32.102146,118.8087,320113, CN101190113,yuhuatai,雨花台,CN,China,中国,jiangsu,江苏,nanjing,南京,31.995947,118.77207,320114, CN101190201,wuxi,无锡,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.57473,120.30167,"320201,320200", CN101190202,jiangyin,江阴,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.910984,120.275894,320281, CN101190203,yixing,宜兴,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.364384,119.82054,320282, CN101190204,xishan,锡山,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.58556,120.3573,320205, CN101190205,huishan,惠山,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.681019,120.30354,320206, CN101190206,binhu,滨湖,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.550228,120.26605,320211, CN101190207,liangxi,梁溪,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.575706,120.29659,320213, CN101190208,xinwu,新吴,CN,China,中国,jiangsu,江苏,wuxi,无锡,31.550966,120.35278,320214, CN101190301,zhenjiang,镇江,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,32.204403,119.45275,"321101,321100", CN101190302,danyang,丹阳,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,31.991459,119.58191,321181, CN101190303,yangzhong,扬中,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,32.237267,119.82806,321182, CN101190304,jurong,句容,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,31.947355,119.16714,321183, CN101190305,dantu,丹徒,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,32.12897,119.43388,321112, CN101190306,jingkou,京口,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,32.206192,119.454575,321102, CN101190307,runzhou,润州,CN,China,中国,jiangsu,江苏,zhenjiang,镇江,32.2135,119.41488,321111, CN101190401,suzhou,苏州,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.29938,120.61958,"320501,320500", CN101190402,changshu,常熟,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.658155,120.74852,320581, CN101190403,zhangjiagang,张家港,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.865553,120.54344,320582, CN101190404,kunshan,昆山,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.381926,120.95814,320583, CN101190405,wuzhong,吴中,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.27084,120.62462,320506, CN101190406,huqiu,虎丘,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.294846,120.56683,320505, CN101190407,wujiang,吴江,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.160404,120.6416,320509, CN101190408,taicang,太仓,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.452568,121.112274,320585, CN101190409,xiangcheng,相城,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.396685,120.61896,320507, CN101190410,gusu,姑苏,CN,China,中国,jiangsu,江苏,suzhou,苏州,31.311415,120.622246,320508, CN101190501,nantong,南通,CN,China,中国,jiangsu,江苏,nantong,南通,32.016212,120.86461,"320601,320600", CN101190502,haian,海安,CN,China,中国,jiangsu,江苏,nantong,南通,32.54029,120.465996,320621, CN101190503,rugao,如皋,CN,China,中国,jiangsu,江苏,nantong,南通,32.39159,120.56632,320682, CN101190504,rudong,如东,CN,China,中国,jiangsu,江苏,nantong,南通,32.311832,121.18609,320623, CN101190505,chongchuan,崇川,CN,China,中国,jiangsu,江苏,nantong,南通,32.015278,120.86635,320602, CN101190506,gangzha,港闸,CN,China,中国,jiangsu,江苏,nantong,南通,32.0403,120.8339,320611, CN101190507,qidong,启东,CN,China,中国,jiangsu,江苏,nantong,南通,31.810158,121.65972,320681, CN101190508,haimen,海门,CN,China,中国,jiangsu,江苏,nantong,南通,31.893528,121.176605,320684, CN101190509,tongzhou,通州,CN,China,中国,jiangsu,江苏,nantong,南通,32.084286,121.07317,320612, CN101190601,yangzhou,扬州,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.393158,119.421005,"321001,321000", CN101190602,baoying,宝应,CN,China,中国,jiangsu,江苏,yangzhou,扬州,33.23694,119.32128,321023, CN101190603,yizheng,仪征,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.271965,119.18244,321081, CN101190604,gaoyou,高邮,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.785164,119.44384,321084, CN101190605,jiangdu,江都,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.426563,119.56748,321012, CN101190606,hanjiang,邗江,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.3779,119.39777,321003, CN101190607,guangling,广陵,CN,China,中国,jiangsu,江苏,yangzhou,扬州,32.392155,119.44227,321002, CN101190701,yancheng,盐城,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.377632,120.14,"320901,320900", CN101190702,xiangshui,响水,CN,China,中国,jiangsu,江苏,yancheng,盐城,34.19996,119.579575,320921, CN101190703,binhai,滨海,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.989887,119.82844,320922, CN101190704,funing,阜宁,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.78573,119.805336,320923, CN101190705,sheyang,射阳,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.77378,120.25745,320924, CN101190706,jianhu,建湖,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.472622,119.793106,320925, CN101190707,dongtai,东台,CN,China,中国,jiangsu,江苏,yancheng,盐城,32.853172,120.3141,320981, CN101190708,dafeng,大丰,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.19953,120.47032,320904, CN101190709,yandu,盐都,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.34129,120.139755,320903, CN101190710,tinghu,亭湖,CN,China,中国,jiangsu,江苏,yancheng,盐城,33.38391,120.13608,320902, CN101190801,xuzhou,徐州,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.26179,117.184814,"320301,320300", CN101190802,tongshan,铜山,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.19288,117.18389,320312, CN101190803,fengxian,丰县,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.696945,116.59289,320321, CN101190804,peixian,沛县,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.729046,116.93718,320322, CN101190805,pizhou,邳州,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.31471,117.96392,320382, CN101190806,suining,睢宁,CN,China,中国,jiangsu,江苏,xuzhou,徐州,33.899223,117.95066,320324, CN101190807,xinyi,新沂,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.36878,118.345825,320381, CN101190808,gulou,鼓楼,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.269398,117.19294,320302, CN101190809,yunlong,云龙,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.254807,117.19459,320303, CN101190810,jiawang,贾汪,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.441643,117.45021,320305, CN101190811,quanshan,泉山,CN,China,中国,jiangsu,江苏,xuzhou,徐州,34.26225,117.18223,320311, CN101190901,huaian,淮安,CN,China,中国,jiangsu,江苏,huaian,淮安,33.597507,119.02126,"320801,320800", CN101190902,jinhu,金湖,CN,China,中国,jiangsu,江苏,huaian,淮安,33.01816,119.01694,320831, CN101190903,xuyi,盱眙,CN,China,中国,jiangsu,江苏,huaian,淮安,33.00439,118.49382,320830, CN101190904,hongze,洪泽,CN,China,中国,jiangsu,江苏,huaian,淮安,33.294975,118.867874,320813, CN101190905,lianshui,涟水,CN,China,中国,jiangsu,江苏,huaian,淮安,33.77131,119.266075,320826, CN101190906,huaiyinqu,淮阴区,CN,China,中国,jiangsu,江苏,huaian,淮安,33.62245,119.02082,320804, CN101190907,qingjiangpu,清江浦,CN,China,中国,jiangsu,江苏,huaian,淮安,33.591652,119.02562,320812, CN101190908,huaianqu,淮安区,CN,China,中国,jiangsu,江苏,huaian,淮安,33.5075,119.14634,320803, CN101191001,lianyungang,连云港,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.600018,119.17882,"320701,320700,320703", CN101191002,donghai,东海,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.522858,118.76649,320722, CN101191003,ganyu,赣榆,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.839153,119.12878,320707, CN101191004,guanyun,灌云,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.298435,119.25574,320723, CN101191005,guannan,灌南,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.092552,119.35233,320724, CN101191006,haizhou,海州,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.601585,119.179794,320706, CN101191007,lianyun,连云,CN,China,中国,jiangsu,江苏,lianyungang,连云港,34.760246,119.33878,320703, CN101191101,changzhou,常州,CN,China,中国,jiangsu,江苏,changzhou,常州,31.772753,119.946976,"320401,320400", CN101191102,liyang,溧阳,CN,China,中国,jiangsu,江苏,changzhou,常州,31.42708,119.487816,320481, CN101191103,jintan,金坛,CN,China,中国,jiangsu,江苏,changzhou,常州,31.744398,119.573395,320413, CN101191104,wujin,武进,CN,China,中国,jiangsu,江苏,changzhou,常州,31.718567,119.95877,320412, CN101191105,tianning,天宁,CN,China,中国,jiangsu,江苏,changzhou,常州,31.779633,119.96378,320402, CN101191106,zhonglou,钟楼,CN,China,中国,jiangsu,江苏,changzhou,常州,31.78096,119.94839,320404, CN101191107,xinbei,新北,CN,China,中国,jiangsu,江苏,changzhou,常州,31.824663,119.974655,320411, CN101191201,taizhou,泰州,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.484882,119.91518,"321201,321200", CN101191202,xinghua,兴化,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.938065,119.840164,321281, CN101191203,taixing,泰兴,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.168785,120.020226,321283, CN101191204,jiangyan,姜堰,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.508484,120.14821,321204, CN101191205,jingjiang,靖江,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.01817,120.26825,321282, CN101191206,hailing,海陵,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.488407,119.92019,321202, CN101191207,gaogang,高港,CN,China,中国,jiangsu,江苏,taizhou,泰州,32.3157,119.88166,321203, CN101191301,suqian,宿迁,CN,China,中国,jiangsu,江苏,suqian,宿迁,33.96301,118.27516,"321301,321300", CN101191302,shuyang,沭阳,CN,China,中国,jiangsu,江苏,suqian,宿迁,34.129097,118.77589,321322, CN101191303,siyang,泗阳,CN,China,中国,jiangsu,江苏,suqian,宿迁,33.711433,118.68128,321323, CN101191304,sihong,泗洪,CN,China,中国,jiangsu,江苏,suqian,宿迁,33.45654,118.21182,321324, CN101191305,suyu,宿豫,CN,China,中国,jiangsu,江苏,suqian,宿迁,33.94107,118.33001,321311, CN101191306,sucheng,宿城,CN,China,中国,jiangsu,江苏,suqian,宿迁,33.937725,118.278984,321302, CN101200101,wuhan,武汉,CN,China,中国,hubei,湖北,wuhan,武汉,30.584354,114.29857,"420101,420100,420000", CN101200102,caidian,蔡甸,CN,China,中国,hubei,湖北,wuhan,武汉,30.582186,114.02934,420114, CN101200103,huangpi,黄陂,CN,China,中国,hubei,湖北,wuhan,武汉,30.874155,114.37402,420116, CN101200104,xinzhou,新洲,CN,China,中国,hubei,湖北,wuhan,武汉,30.84215,114.80211,420117, CN101200105,jiangxia,江夏,CN,China,中国,hubei,湖北,wuhan,武汉,30.349045,114.31396,420115, CN101200106,dongxihu,东西湖,CN,China,中国,hubei,湖北,wuhan,武汉,30.622467,114.14249,420112, CN101200107,jiangan,江岸,CN,China,中国,hubei,湖北,wuhan,武汉,30.594912,114.30304,420102, CN101200108,jianghan,江汉,CN,China,中国,hubei,湖北,wuhan,武汉,30.578772,114.28311,420103, CN101200109,qiaokou,硚口,CN,China,中国,hubei,湖北,wuhan,武汉,30.57061,114.264565,420104, CN101200110,hanyang,汉阳,CN,China,中国,hubei,湖北,wuhan,武汉,30.549326,114.26581,420105, CN101200111,wuchang,武昌,CN,China,中国,hubei,湖北,wuhan,武汉,30.546535,114.30734,420106, CN101200112,qingshan,青山,CN,China,中国,hubei,湖北,wuhan,武汉,30.634214,114.39707,420107, CN101200113,hongshan,洪山,CN,China,中国,hubei,湖北,wuhan,武汉,30.50426,114.40072,420111, CN101200114,hannan,汉南,CN,China,中国,hubei,湖北,wuhan,武汉,30.309637,114.08124,420113, CN101200201,xiangyang,襄阳,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.042427,112.14415,"420601,420600", CN101200202,xiangzhou,襄州,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.085518,112.19738,420607, CN101200203,baokang,保康,CN,China,中国,hubei,湖北,xiangyang,襄阳,31.873507,111.26224,420626, CN101200204,nanzhang,南漳,CN,China,中国,hubei,湖北,xiangyang,襄阳,31.77692,111.84442,420624, CN101200205,yicheng,宜城,CN,China,中国,hubei,湖北,xiangyang,襄阳,31.709204,112.261444,420684, CN101200206,laohekou,老河口,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.385437,111.675735,420682, CN101200207,gucheng,谷城,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.262676,111.640144,420625, CN101200208,zaoyang,枣阳,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.12308,112.76527,420683, CN101200209,xiangcheng,襄城,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.015087,112.15033,420602, CN101200210,fancheng,樊城,CN,China,中国,hubei,湖北,xiangyang,襄阳,32.05859,112.13957,420606, CN101200301,ezhou,鄂州,CN,China,中国,hubei,湖北,ezhou,鄂州,30.396536,114.890594,"420701,420700", CN101200302,liangzihu,梁子湖,CN,China,中国,hubei,湖北,ezhou,鄂州,30.09819,114.68197,420702, CN101200303,huarong,华容,CN,China,中国,hubei,湖北,ezhou,鄂州,30.534468,114.74148,420703, CN101200304,echeng,鄂城,CN,China,中国,hubei,湖北,ezhou,鄂州,30.39669,114.890015,420704, CN101200401,xiaogan,孝感,CN,China,中国,hubei,湖北,xiaogan,孝感,30.926422,113.92666,"420901,420900", CN101200402,anlu,安陆,CN,China,中国,hubei,湖北,xiaogan,孝感,31.26174,113.6904,420982, CN101200403,yunmeng,云梦,CN,China,中国,hubei,湖北,xiaogan,孝感,31.02169,113.75062,420923, CN101200404,dawu,大悟,CN,China,中国,hubei,湖北,xiaogan,孝感,31.565483,114.12625,420922, CN101200405,yingcheng,应城,CN,China,中国,hubei,湖北,xiaogan,孝感,30.939037,113.573845,420981, CN101200406,hanchuan,汉川,CN,China,中国,hubei,湖北,xiaogan,孝感,30.652164,113.835304,420984, CN101200407,xiaochang,孝昌,CN,China,中国,hubei,湖北,xiaogan,孝感,31.251617,113.98896,420921, CN101200408,xiaonan,孝南,CN,China,中国,hubei,湖北,xiaogan,孝感,30.925966,113.92585,420902, CN101200501,huanggang,黄冈,CN,China,中国,hubei,湖北,huanggang,黄冈,30.447712,114.879364,"421101,421100", CN101200502,hongan,红安,CN,China,中国,hubei,湖北,huanggang,黄冈,31.284777,114.6151,421122, CN101200503,macheng,麻城,CN,China,中国,hubei,湖北,huanggang,黄冈,31.177906,115.02541,421181, CN101200504,luotian,罗田,CN,China,中国,hubei,湖北,huanggang,黄冈,30.78168,115.39899,421123, CN101200505,yingshan,英山,CN,China,中国,hubei,湖北,huanggang,黄冈,30.735794,115.67753,421124, CN101200506,xishui,浠水,CN,China,中国,hubei,湖北,huanggang,黄冈,30.454838,115.26344,421125, CN101200507,qichun,蕲春,CN,China,中国,hubei,湖北,huanggang,黄冈,30.234926,115.43397,421126, CN101200508,huangmei,黄梅,CN,China,中国,hubei,湖北,huanggang,黄冈,30.075113,115.94255,421127, CN101200509,wuxue,武穴,CN,China,中国,hubei,湖北,huanggang,黄冈,29.849342,115.56242,421182, CN101200510,tuanfeng,团风,CN,China,中国,hubei,湖北,huanggang,黄冈,30.63569,114.87203,421121, CN101200511,huangzhou,黄州,CN,China,中国,hubei,湖北,huanggang,黄冈,30.447435,114.87894,421102, CN101200601,huangshi,黄石,CN,China,中国,hubei,湖北,huangshi,黄石,30.220074,115.07705,"420201,420200", CN101200602,daye,大冶,CN,China,中国,hubei,湖北,huangshi,黄石,30.098804,114.97484,420281, CN101200603,yangxin,阳新,CN,China,中国,hubei,湖北,huangshi,黄石,29.841572,115.21288,420222, CN101200604,tieshan,铁山,CN,China,中国,hubei,湖北,huangshi,黄石,30.20601,114.90137,420205, CN101200605,xialu,下陆,CN,China,中国,hubei,湖北,huangshi,黄石,30.177845,114.97575,420204, CN101200606,xisaishan,西塞山,CN,China,中国,hubei,湖北,huangshi,黄石,30.205364,115.09335,420203, CN101200607,huangshigang,黄石港,CN,China,中国,hubei,湖北,huangshi,黄石,30.212086,115.090164,420202, CN101200701,xianning,咸宁,CN,China,中国,hubei,湖北,xianning,咸宁,29.832798,114.328964,"421201,421200", CN101200702,chibi,赤壁,CN,China,中国,hubei,湖北,xianning,咸宁,29.716879,113.88366,421281, CN101200703,jiayu,嘉鱼,CN,China,中国,hubei,湖北,xianning,咸宁,29.973364,113.92155,421221, CN101200704,chongyang,崇阳,CN,China,中国,hubei,湖北,xianning,咸宁,29.54101,114.04996,421223, CN101200705,tongcheng,通城,CN,China,中国,hubei,湖北,xianning,咸宁,29.246077,113.81413,421222, CN101200706,tongshan,通山,CN,China,中国,hubei,湖北,xianning,咸宁,29.604456,114.493164,421224, CN101200707,xianan,咸安,CN,China,中国,hubei,湖北,xianning,咸宁,29.824717,114.33389,421202, CN101200801,jingzhou,荆州,CN,China,中国,hubei,湖北,jingzhou,荆州,30.326857,112.23813,"421001,421000,421003", CN101200802,jiangling,江陵,CN,China,中国,hubei,湖北,jingzhou,荆州,30.033918,112.41735,421024, CN101200803,gongan,公安,CN,China,中国,hubei,湖北,jingzhou,荆州,30.059065,112.23018,421022, CN101200804,shishou,石首,CN,China,中国,hubei,湖北,jingzhou,荆州,29.716436,112.40887,421081, CN101200805,jianli,监利,CN,China,中国,hubei,湖北,jingzhou,荆州,29.82008,112.90434,421023, CN101200806,honghu,洪湖,CN,China,中国,hubei,湖北,jingzhou,荆州,29.81297,113.47031,421083, CN101200807,songzi,松滋,CN,China,中国,hubei,湖北,jingzhou,荆州,30.176037,111.77818,421087, CN101200808,shashi,沙市,CN,China,中国,hubei,湖北,jingzhou,荆州,30.315895,112.25743,421002, CN101200901,yichang,宜昌,CN,China,中国,hubei,湖北,yichang,宜昌,30.702637,111.29084,"420501,420500", CN101200902,yuanan,远安,CN,China,中国,hubei,湖北,yichang,宜昌,31.059626,111.64331,420525, CN101200903,zigui,秭归,CN,China,中国,hubei,湖北,yichang,宜昌,30.823908,110.97678,420527, CN101200904,xingshan,兴山,CN,China,中国,hubei,湖北,yichang,宜昌,31.34795,110.7545,420526, CN101200905,xiling,西陵,CN,China,中国,hubei,湖北,yichang,宜昌,30.702477,111.29547,420502, CN101200906,wufeng,五峰,CN,China,中国,hubei,湖北,yichang,宜昌,30.199251,110.674934,420529, CN101200907,dangyang,当阳,CN,China,中国,hubei,湖北,yichang,宜昌,30.824492,111.79342,420582, CN101200908,changyang,长阳,CN,China,中国,hubei,湖北,yichang,宜昌,30.466534,111.19848,420528, CN101200909,yidu,宜都,CN,China,中国,hubei,湖北,yichang,宜昌,30.387234,111.45437,420581, CN101200910,zhijiang,枝江,CN,China,中国,hubei,湖北,yichang,宜昌,30.425364,111.7518,420583, CN101200911,sanxia,三峡,CN,China,中国,hubei,湖北,yichang,宜昌,30.795382,111.16401,420506, CN101200912,yiling,夷陵,CN,China,中国,hubei,湖北,yichang,宜昌,30.770199,111.326744,420506, CN101200913,wujiagang,伍家岗,CN,China,中国,hubei,湖北,yichang,宜昌,30.679052,111.30721,420503, CN101200914,dianjun,点军,CN,China,中国,hubei,湖北,yichang,宜昌,30.692322,111.268166,420504, CN101200915,xiaoting,猇亭,CN,China,中国,hubei,湖北,yichang,宜昌,30.530745,111.42764,420505, CN101201001,enshi,恩施,CN,China,中国,hubei,湖北,enshi,恩施,30.283113,109.48699,"422801,422800", CN101201002,lichuan,利川,CN,China,中国,hubei,湖北,enshi,恩施,30.294247,108.94349,422802, CN101201003,jianshi,建始,CN,China,中国,hubei,湖北,enshi,恩施,30.601631,109.72382,422822, CN101201004,xianfeng,咸丰,CN,China,中国,hubei,湖北,enshi,恩施,29.678967,109.15041,422826, CN101201005,xuanen,宣恩,CN,China,中国,hubei,湖北,enshi,恩施,29.98867,109.48282,422825, CN101201006,hefeng,鹤峰,CN,China,中国,hubei,湖北,enshi,恩施,29.887299,110.0337,422828, CN101201007,laifeng,来凤,CN,China,中国,hubei,湖北,enshi,恩施,29.506945,109.408325,422827, CN101201008,badong,巴东,CN,China,中国,hubei,湖北,enshi,恩施,31.041403,110.33666,422823, CN101201101,shiyan,十堰,CN,China,中国,hubei,湖北,shiyan,十堰,32.646908,110.78792,"420301,420300", CN101201102,zhuxi,竹溪,CN,China,中国,hubei,湖北,shiyan,十堰,32.315342,109.71719,420324, CN101201103,yunxi,郧西,CN,China,中国,hubei,湖北,shiyan,十堰,32.99146,110.426476,420322, CN101201104,yunyang,郧阳,CN,China,中国,hubei,湖北,shiyan,十堰,32.83827,110.812096,420304, CN101201105,zhushan,竹山,CN,China,中国,hubei,湖北,shiyan,十堰,32.22586,110.2296,420323, CN101201106,fangxian,房县,CN,China,中国,hubei,湖北,shiyan,十堰,32.055,110.74197,420325, CN101201107,danjiangkou,丹江口,CN,China,中国,hubei,湖北,shiyan,十堰,32.538837,111.513794,420381, CN101201108,maojian,茅箭,CN,China,中国,hubei,湖北,shiyan,十堰,32.644463,110.78621,420302, CN101201109,zhangwan,张湾,CN,China,中国,hubei,湖北,shiyan,十堰,32.652515,110.77236,420303, CN101201201,shennongjia,神农架,CN,China,中国,hubei,湖北,shennongjia,神农架,31.74445,110.671524,429021, CN101201301,suizhou,随州,CN,China,中国,hubei,湖北,suizhou,随州,31.717497,113.37377,"421301,421300", CN101201302,guangshui,广水,CN,China,中国,hubei,湖北,suizhou,随州,31.617731,113.8266,421381, CN101201303,zengdou,曾都,CN,China,中国,hubei,湖北,suizhou,随州,31.717522,113.37452,421303, CN101201304,suixian,随县,CN,China,中国,hubei,湖北,suizhou,随州,31.854246,113.301384,421321, CN101201401,jingmen,荆门,CN,China,中国,hubei,湖北,jingmen,荆门,31.03542,112.204254,"420801,420800", CN101201402,zhongxiang,钟祥,CN,China,中国,hubei,湖北,jingmen,荆门,31.165573,112.587265,420881, CN101201403,jingshan,京山,CN,China,中国,hubei,湖北,jingmen,荆门,31.022457,113.11459,420821, CN101201404,duodao,掇刀,CN,China,中国,hubei,湖北,jingmen,荆门,30.980799,112.19841,420804, CN101201405,shayang,沙洋,CN,China,中国,hubei,湖北,jingmen,荆门,30.70359,112.595215,420822, CN101201406,dongbao,东宝,CN,China,中国,hubei,湖北,jingmen,荆门,31.03346,112.2048,420802, CN101201501,tianmen,天门,CN,China,中国,hubei,湖北,tianmen,天门,30.65306,113.16586,429006, CN101201601,xiantao,仙桃,CN,China,中国,hubei,湖北,xiantao,仙桃,30.364952,113.45397,429004, CN101201701,qianjiang,潜江,CN,China,中国,hubei,湖北,qianjiang,潜江,30.421215,112.896866,429005, CN101210101,hangzhou,杭州,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.287458,120.15358,"330101,330100,330000", CN101210102,xiaoshan,萧山,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.162931,120.27069,330109, CN101210103,tonglu,桐庐,CN,China,中国,zhejiang,浙江,hangzhou,杭州,29.797438,119.68504,330122, CN101210104,chunan,淳安,CN,China,中国,zhejiang,浙江,hangzhou,杭州,29.604177,119.04427,330127, CN101210105,jiande,建德,CN,China,中国,zhejiang,浙江,hangzhou,杭州,29.472284,119.27909,330182, CN101210106,yuhang,余杭,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.421186,120.301735,330110, CN101210107,linan,临安,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.231153,119.7151,330112, CN101210108,fuyang,富阳,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.049871,119.94987,330111, CN101210109,shangcheng,上城,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.250237,120.17146,330102, CN101210110,xiacheng,下城,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.276272,120.17276,330103, CN101210111,jianggan,江干,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.266603,120.20264,330104, CN101210112,gongshu,拱墅,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.314697,120.150055,330105, CN101210113,xihu,西湖,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.272934,120.14738,330106, CN101210114,binjiang,滨江,CN,China,中国,zhejiang,浙江,hangzhou,杭州,30.206615,120.21062,330108, CN101210201,huzhou,湖州,CN,China,中国,zhejiang,浙江,huzhou,湖州,30.867199,120.1024,"330501,330500", CN101210202,changxing,长兴,CN,China,中国,zhejiang,浙江,huzhou,湖州,31.00475,119.910126,330522, CN101210203,anji,安吉,CN,China,中国,zhejiang,浙江,huzhou,湖州,30.631973,119.68789,330523, CN101210204,deqing,德清,CN,China,中国,zhejiang,浙江,huzhou,湖州,30.534927,119.96766,330521, CN101210205,wuxing,吴兴,CN,China,中国,zhejiang,浙江,huzhou,湖州,30.867252,120.10142,330502, CN101210206,nanxun,南浔,CN,China,中国,zhejiang,浙江,huzhou,湖州,30.872742,120.4172,330503, CN101210301,jiaxing,嘉兴,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.762653,120.75086,"330401,330400", CN101210302,jiashan,嘉善,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.841352,120.92187,330421, CN101210303,haining,海宁,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.525543,120.68882,330481, CN101210304,tongxiang,桐乡,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.629065,120.55109,330483, CN101210305,pinghu,平湖,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.698921,121.01466,330482, CN101210306,haiyan,海盐,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.522223,120.94202,330424, CN101210307,nanhu,南湖,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.764652,120.749954,330402, CN101210308,xiuzhou,秀洲,CN,China,中国,zhejiang,浙江,jiaxing,嘉兴,30.763323,120.72043,330411, CN101210401,ningbo,宁波,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.868387,121.54979,"330201,330200", CN101210402,haishu,海曙,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.874453,121.539696,330203, CN101210403,cixi,慈溪,CN,China,中国,zhejiang,浙江,ningbo,宁波,30.177141,121.248055,330282, CN101210404,yuyao,余姚,CN,China,中国,zhejiang,浙江,ningbo,宁波,30.045404,121.156296,330281, CN101210405,fenghua,奉化,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.662348,121.41089,330213, CN101210406,xiangshan,象山,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.470205,121.87709,330225, CN101210408,ninghai,宁海,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.299835,121.43261,330226, CN101210409,jiangbei,江北,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.888361,121.55928,330205, CN101210410,beilun,北仑,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.90944,121.83131,330206, CN101210411,yinzhou,鄞州,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.831661,121.55843,330212, CN101210412,zhenhai,镇海,CN,China,中国,zhejiang,浙江,ningbo,宁波,29.952106,121.713165,330211, CN101210501,yuecheng,越城,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,29.996992,120.58531,330602, CN101210502,zhuji,诸暨,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,29.713661,120.24432,330681, CN101210503,shangyu,上虞,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,30.01677,120.87418,330604, CN101210504,xinchang,新昌,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,29.501205,120.90566,330624, CN101210505,shengzhou,嵊州,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,29.586605,120.82888,330683, CN101210506,keqiao,柯桥,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,30.078037,120.476074,330603, CN101210507,shaoxing,绍兴,CN,China,中国,zhejiang,浙江,shaoxing,绍兴,29.997116,120.582115,"330601,330600", CN101210601,taizhou,台州,CN,China,中国,zhejiang,浙江,taizhou,台州,28.661379,121.4286,"331001,331000", CN101210603,yuhuan,玉环,CN,China,中国,zhejiang,浙江,taizhou,台州,28.12842,121.23234,331083, CN101210604,sanmen,三门,CN,China,中国,zhejiang,浙江,taizhou,台州,29.118956,121.37643,331022, CN101210605,tiantai,天台,CN,China,中国,zhejiang,浙江,taizhou,台州,29.141127,121.03123,331023, CN101210606,xianju,仙居,CN,China,中国,zhejiang,浙江,taizhou,台州,28.849213,120.73508,331024, CN101210607,wenling,温岭,CN,China,中国,zhejiang,浙江,taizhou,台州,28.36878,121.37361,331081, CN101210610,linhai,临海,CN,China,中国,zhejiang,浙江,taizhou,台州,28.845442,121.131226,331082, CN101210611,jiaojiang,椒江,CN,China,中国,zhejiang,浙江,taizhou,台州,28.67615,121.431046,331002, CN101210612,huangyan,黄岩,CN,China,中国,zhejiang,浙江,taizhou,台州,28.64488,121.26214,331003, CN101210613,luqiao,路桥,CN,China,中国,zhejiang,浙江,taizhou,台州,28.581799,121.37292,331004, CN101210701,wenzhou,温州,CN,China,中国,zhejiang,浙江,wenzhou,温州,28.000574,120.67211,"330301,330300", CN101210702,taishun,泰顺,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.557308,119.71624,330329, CN101210703,wencheng,文成,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.789133,120.09245,330328, CN101210704,pingyang,平阳,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.6693,120.564384,330326, CN101210705,ruian,瑞安,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.779322,120.64617,330381, CN101210706,dongtou,洞头,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.836058,121.15618,330305, CN101210707,yueqing,乐清,CN,China,中国,zhejiang,浙江,wenzhou,温州,28.116083,120.96715,330382, CN101210708,yongjia,永嘉,CN,China,中国,zhejiang,浙江,wenzhou,温州,28.153887,120.69097,330324, CN101210709,cangnan,苍南,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.507744,120.40626,330327, CN101210710,lucheng,鹿城,CN,China,中国,zhejiang,浙江,wenzhou,温州,28.003351,120.67423,330302, CN101210711,longwan,龙湾,CN,China,中国,zhejiang,浙江,wenzhou,温州,27.970255,120.763466,330303, CN101210712,ouhai,瓯海,CN,China,中国,zhejiang,浙江,wenzhou,温州,28.006445,120.637146,330304, CN101210801,lishui,丽水,CN,China,中国,zhejiang,浙江,lishui,丽水,28.451994,119.92178,"331101,331100", CN101210802,suichang,遂昌,CN,China,中国,zhejiang,浙江,lishui,丽水,28.5924,119.27589,331123, CN101210803,longquan,龙泉,CN,China,中国,zhejiang,浙江,lishui,丽水,28.069178,119.13232,331181, CN101210804,jinyun,缙云,CN,China,中国,zhejiang,浙江,lishui,丽水,28.654207,120.078964,331122, CN101210805,qingtian,青田,CN,China,中国,zhejiang,浙江,lishui,丽水,28.135246,120.29194,331121, CN101210806,yunhe,云和,CN,China,中国,zhejiang,浙江,lishui,丽水,28.111076,119.56946,331125, CN101210807,qingyuan,庆元,CN,China,中国,zhejiang,浙江,lishui,丽水,27.61823,119.06723,331126, CN101210808,songyang,松阳,CN,China,中国,zhejiang,浙江,lishui,丽水,28.449938,119.48529,331124, CN101210809,jingning,景宁,CN,China,中国,zhejiang,浙江,lishui,丽水,27.977247,119.63467,331127, CN101210810,liandou,莲都,CN,China,中国,zhejiang,浙江,lishui,丽水,28.451103,119.922295,331102, CN101210901,jinhua,金华,CN,China,中国,zhejiang,浙江,jinhua,金华,29.089523,119.649506,"330701,330700", CN101210902,pujiang,浦江,CN,China,中国,zhejiang,浙江,jinhua,金华,29.451254,119.893364,330726, CN101210903,lanxi,兰溪,CN,China,中国,zhejiang,浙江,jinhua,金华,29.210066,119.46052,330781, CN101210904,yiwu,义乌,CN,China,中国,zhejiang,浙江,jinhua,金华,29.306864,120.07491,330782, CN101210905,dongyang,东阳,CN,China,中国,zhejiang,浙江,jinhua,金华,29.262547,120.23334,330783, CN101210906,wuyi,武义,CN,China,中国,zhejiang,浙江,jinhua,金华,28.896563,119.81916,330723, CN101210907,yongkang,永康,CN,China,中国,zhejiang,浙江,jinhua,金华,28.895292,120.03633,330784, CN101210908,panan,磐安,CN,China,中国,zhejiang,浙江,jinhua,金华,29.052628,120.44513,330727, CN101210909,wucheng,婺城,CN,China,中国,zhejiang,浙江,jinhua,金华,29.082607,119.65258,330702, CN101210910,jindong,金东,CN,China,中国,zhejiang,浙江,jinhua,金华,29.095835,119.68127,330703, CN101211001,quzhou,衢州,CN,China,中国,zhejiang,浙江,quzhou,衢州,28.941708,118.87263,"330801,330800", CN101211002,changshan,常山,CN,China,中国,zhejiang,浙江,quzhou,衢州,28.90004,118.52165,330822, CN101211003,kaihua,开化,CN,China,中国,zhejiang,浙江,quzhou,衢州,29.136503,118.41444,330824, CN101211004,longyou,龙游,CN,China,中国,zhejiang,浙江,quzhou,衢州,29.031364,119.17252,330825, CN101211005,jiangshan,江山,CN,China,中国,zhejiang,浙江,quzhou,衢州,28.734674,118.62788,330881, CN101211006,qujiang,衢江,CN,China,中国,zhejiang,浙江,quzhou,衢州,28.973194,118.95768,330803, CN101211007,kecheng,柯城,CN,China,中国,zhejiang,浙江,quzhou,衢州,28.944538,118.87304,330802, CN101211101,zhoushan,舟山,CN,China,中国,zhejiang,浙江,zhoushan,舟山,30.016027,122.106865,"330901,330900", CN101211102,shengsi,嵊泗,CN,China,中国,zhejiang,浙江,zhoushan,舟山,30.727165,122.45781,330922, CN101211104,daishan,岱山,CN,China,中国,zhejiang,浙江,zhoushan,舟山,30.242865,122.20113,330921, CN101211105,putuo,普陀,CN,China,中国,zhejiang,浙江,zhoushan,舟山,29.945614,122.301956,330903, CN101211106,dinghai,定海,CN,China,中国,zhejiang,浙江,zhoushan,舟山,30.016422,122.1085,330902, CN101220101,hefei,合肥,CN,China,中国,anhui,安徽,hefei,合肥,31.86119,117.28304,"340101,340100,340000", CN101220102,changfeng,长丰,CN,China,中国,anhui,安徽,hefei,合肥,32.478546,117.164696,340121, CN101220103,feidong,肥东,CN,China,中国,anhui,安徽,hefei,合肥,31.883991,117.46322,340122, CN101220104,feixi,肥西,CN,China,中国,anhui,安徽,hefei,合肥,31.719646,117.166115,340123, CN101220105,chaohu,巢湖,CN,China,中国,anhui,安徽,hefei,合肥,31.600517,117.87415,340181, CN101220106,lujiang,庐江,CN,China,中国,anhui,安徽,hefei,合肥,31.251488,117.28984,340124, CN101220107,yaohai,瑶海,CN,China,中国,anhui,安徽,hefei,合肥,31.86961,117.31536,340102, CN101220108,luyang,庐阳,CN,China,中国,anhui,安徽,hefei,合肥,31.86901,117.283775,340103, CN101220109,shushan,蜀山,CN,China,中国,anhui,安徽,hefei,合肥,31.855867,117.26207,340104, CN101220110,baohe,包河,CN,China,中国,anhui,安徽,hefei,合肥,31.82956,117.28575,340111, CN101220201,bengbu,蚌埠,CN,China,中国,anhui,安徽,bengbu,蚌埠,32.939667,117.36323,"340301,340300", CN101220202,huaiyuan,怀远,CN,China,中国,anhui,安徽,bengbu,蚌埠,32.956936,117.20017,340321, CN101220203,guzhen,固镇,CN,China,中国,anhui,安徽,bengbu,蚌埠,33.31868,117.31596,340323, CN101220204,wuhe,五河,CN,China,中国,anhui,安徽,bengbu,蚌埠,33.146202,117.88881,340322, CN101220205,longzihu,龙子湖,CN,China,中国,anhui,安徽,bangbu,蚌埠,32.95045,117.38231,340302, CN101220206,bangshan,蚌山,CN,China,中国,anhui,安徽,bangbu,蚌埠,32.938065,117.35579,340303, CN101220207,yuhui,禹会,CN,China,中国,anhui,安徽,bangbu,蚌埠,32.931934,117.35259,340304, CN101220208,huaishang,淮上,CN,China,中国,anhui,安徽,bangbu,蚌埠,32.963146,117.34709,340311, CN101220301,wuhu,芜湖,CN,China,中国,anhui,安徽,wuhu,芜湖,31.326319,118.37645,"340201,340200", CN101220302,fanyang,繁昌,CN,China,中国,anhui,安徽,wuhu,芜湖,31.080896,118.20135,340222, CN101220303,wuhuxian,芜湖县,CN,China,中国,anhui,安徽,wuhu,芜湖,31.145262,118.5723,340221, CN101220304,nanling,南陵,CN,China,中国,anhui,安徽,wuhu,芜湖,30.919638,118.337105,340223, CN101220305,wuwei,无为,CN,China,中国,anhui,安徽,wuhu,芜湖,31.303076,117.91143,340225, CN101220306,jinghu,镜湖,CN,China,中国,anhui,安徽,wuhu,芜湖,31.32559,118.37634,340202, CN101220307,yijiang,弋江,CN,China,中国,anhui,安徽,wuhu,芜湖,31.313395,118.37748,340203, CN101220308,jiujiang,鸠江,CN,China,中国,anhui,安徽,wuhu,芜湖,31.362717,118.40018,340207, CN101220309,sanshan,三山,CN,China,中国,anhui,安徽,wuhu,芜湖,31.225424,118.233986,340208, CN101220401,huainan,淮南,CN,China,中国,anhui,安徽,huainan,淮南,32.647575,117.018326,"340401,340400", CN101220402,fengtai,凤台,CN,China,中国,anhui,安徽,huainan,淮南,32.705383,116.72277,340421, CN101220403,panji,潘集,CN,China,中国,anhui,安徽,huainan,淮南,32.782116,116.81688,340406, CN101220404,datong,大通,CN,China,中国,anhui,安徽,huainan,淮南,32.632065,117.052925,340402, CN101220405,tianjiaan,田家庵,CN,China,中国,anhui,安徽,huainan,淮南,32.64434,117.01832,340403, CN101220406,xiejiaji,谢家集,CN,China,中国,anhui,安徽,huainan,淮南,32.59829,116.86536,340404, CN101220407,bagongshan,八公山,CN,China,中国,anhui,安徽,huainan,淮南,32.628227,116.84111,340405, CN101220408,shouxian,寿县,CN,China,中国,anhui,安徽,huainan,淮南,32.577305,116.78535,340422, CN101220501,maanshan,马鞍山,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.689362,118.507904,"340501,340500", CN101220502,dangtu,当涂,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.556168,118.489876,340521, CN101220503,hanshan,含山,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.727758,118.105545,340522, CN101220504,hexian,和县,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.716635,118.363,340523, CN101220505,huashan,花山,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.69902,118.51131,340503, CN101220506,yushan,雨山,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.685911,118.4931,340504, CN101220507,bowang,博望,CN,China,中国,anhui,安徽,maanshan,马鞍山,31.56232,118.84374,340506, CN101220601,anqing,安庆,CN,China,中国,anhui,安徽,anqing,安庆,30.50883,117.04355,"340801,340800", CN101220603,taihu,太湖,CN,China,中国,anhui,安徽,anqing,安庆,30.451868,116.30522,340825, CN101220604,qianshan,潜山,CN,China,中国,anhui,安徽,anqing,安庆,30.638222,116.57367,340824, CN101220605,huaining,怀宁,CN,China,中国,anhui,安徽,anqing,安庆,30.734995,116.82867,340822, CN101220606,susong,宿松,CN,China,中国,anhui,安徽,anqing,安庆,30.158327,116.1202,340826, CN101220607,wangjiang,望江,CN,China,中国,anhui,安徽,anqing,安庆,30.12491,116.690926,340827, CN101220608,yuexi,岳西,CN,China,中国,anhui,安徽,anqing,安庆,30.848501,116.36048,340828, CN101220609,tongcheng,桐城,CN,China,中国,anhui,安徽,anqing,安庆,31.050575,116.959656,340881, CN101220610,yingjiang,迎江,CN,China,中国,anhui,安徽,anqing,安庆,30.506374,117.04497,340802, CN101220611,daguan,大观,CN,China,中国,anhui,安徽,anqing,安庆,30.505632,117.034515,340803, CN101220612,yixiu,宜秀,CN,China,中国,anhui,安徽,anqing,安庆,30.541323,117.07,340811, CN101220701,suzhou,宿州,CN,China,中国,anhui,安徽,suzhou,宿州,33.633892,116.984085,"341301,341300", CN101220702,dangshan,砀山,CN,China,中国,anhui,安徽,suzhou,宿州,34.426247,116.35111,341321, CN101220703,lingbi,灵璧,CN,China,中国,anhui,安徽,suzhou,宿州,33.54063,117.55149,341323, CN101220704,sixian,泗县,CN,China,中国,anhui,安徽,suzhou,宿州,33.47758,117.885445,341324, CN101220705,xiaoxian,萧县,CN,China,中国,anhui,安徽,suzhou,宿州,34.183266,116.9454,341322, CN101220706,yongqiao,埇桥,CN,China,中国,anhui,安徽,suzhou,宿州,33.633854,116.98331,341302, CN101220801,fuyang,阜阳,CN,China,中国,anhui,安徽,fuyang,阜阳,32.89697,115.81973,"341201,341200", CN101220802,funan,阜南,CN,China,中国,anhui,安徽,fuyang,阜阳,32.638103,115.59053,341225, CN101220803,yingshang,颍上,CN,China,中国,anhui,安徽,fuyang,阜阳,32.637066,116.259125,341226, CN101220804,linquan,临泉,CN,China,中国,anhui,安徽,fuyang,阜阳,33.0627,115.26169,341221, CN101220805,jieshou,界首,CN,China,中国,anhui,安徽,fuyang,阜阳,33.26153,115.362114,341282, CN101220806,taihe,太和,CN,China,中国,anhui,安徽,fuyang,阜阳,33.16229,115.62724,341222, CN101220807,yingzhou,颍州,CN,China,中国,anhui,安徽,fuyang,阜阳,32.89124,115.81391,341202, CN101220808,yingdong,颍东,CN,China,中国,anhui,安徽,fuyang,阜阳,32.90886,115.85875,341203, CN101220809,yingquan,颍泉,CN,China,中国,anhui,安徽,fuyang,阜阳,32.924797,115.80453,341204, CN101220901,bozhou,亳州,CN,China,中国,anhui,安徽,bozhou,亳州,33.86934,115.782936,"341601,341600", CN101220902,guoyang,涡阳,CN,China,中国,anhui,安徽,bozhou,亳州,33.50283,116.21155,341621, CN101220903,lixin,利辛,CN,China,中国,anhui,安徽,bozhou,亳州,33.1435,116.20778,341623, CN101220904,mengcheng,蒙城,CN,China,中国,anhui,安徽,bozhou,亳州,33.260815,116.56033,341622, CN101220905,qiaocheng,谯城,CN,China,中国,anhui,安徽,bozhou,亳州,33.869286,115.78121,341602, CN101221001,huangshan,黄山,CN,China,中国,anhui,安徽,huangshan,黄山,29.709238,118.31732,"341001,341000", CN101221002,huangshanqu,黄山区,CN,China,中国,anhui,安徽,huangshan,黄山,30.294518,118.13664,341003, CN101221003,tunxi,屯溪,CN,China,中国,anhui,安徽,huangshan,黄山,29.709187,118.31735,341002, CN101221004,qimen,祁门,CN,China,中国,anhui,安徽,huangshan,黄山,29.853472,117.71724,341024, CN101221005,yixian,黟县,CN,China,中国,anhui,安徽,huangshan,黄山,29.923813,117.94291,341023, CN101221006,shexian,歙县,CN,China,中国,anhui,安徽,huangshan,黄山,29.867748,118.428024,341021, CN101221007,xiuning,休宁,CN,China,中国,anhui,安徽,huangshan,黄山,29.788877,118.18853,341022, CN101221008,huangshanfengjingqu,黄山风景区(光明顶),CN,China,中国,anhui,安徽,huangshan,黄山,30.132376,118.16954,341003, CN101221009,huizhou,徽州,CN,China,中国,anhui,安徽,huangshan,黄山,29.825201,118.339745,341004, CN101221101,chuzhou,滁州,CN,China,中国,anhui,安徽,chuzhou,滁州,32.303627,118.31626,"341101,341100", CN101221102,fengyang,凤阳,CN,China,中国,anhui,安徽,chuzhou,滁州,32.867146,117.56246,341126, CN101221103,mingguang,明光,CN,China,中国,anhui,安徽,chuzhou,滁州,32.781204,117.99805,341182, CN101221104,dingyuan,定远,CN,China,中国,anhui,安徽,chuzhou,滁州,32.527103,117.683716,341125, CN101221105,quanjiao,全椒,CN,China,中国,anhui,安徽,chuzhou,滁州,32.09385,118.26858,341124, CN101221106,laian,来安,CN,China,中国,anhui,安徽,chuzhou,滁州,32.45023,118.4333,341122, CN101221107,tianchang,天长,CN,China,中国,anhui,安徽,chuzhou,滁州,32.6815,119.011215,341181, CN101221108,langya,琅琊,CN,China,中国,anhui,安徽,chuzhou,滁州,32.3038,118.316475,341102, CN101221109,nanqiao,南谯,CN,China,中国,anhui,安徽,chuzhou,滁州,32.32984,118.29695,341103, CN101221201,huaibei,淮北,CN,China,中国,anhui,安徽,huaibei,淮北,33.971706,116.79466,"340601,340600", CN101221202,suixi,濉溪,CN,China,中国,anhui,安徽,huaibei,淮北,33.91641,116.76743,340621, CN101221203,duji,杜集,CN,China,中国,anhui,安徽,huaibei,淮北,33.99122,116.83392,340602, CN101221204,xiangshan,相山,CN,China,中国,anhui,安徽,huaibei,淮北,33.970917,116.79077,340603, CN101221205,lieshan,烈山,CN,China,中国,anhui,安徽,huaibei,淮北,33.88953,116.80946,340604, CN101221301,tongling,铜陵,CN,China,中国,anhui,安徽,tongling,铜陵,30.929935,117.816574,"340701,340700", CN101221302,tongguan,铜官,CN,China,中国,anhui,安徽,tongling,铜陵,30.93182,117.81843,340705, CN101221303,yian,义安,CN,China,中国,anhui,安徽,tongling,铜陵,30.952337,117.79229,340706, CN101221304,jiaoqu,郊区,CN,China,中国,anhui,安徽,tongling,铜陵,30.908928,117.80707,340711, CN101221305,zongyang,枞阳,CN,China,中国,anhui,安徽,tongling,铜陵,30.700615,117.22203,340722, CN101221401,xuancheng,宣城,CN,China,中国,anhui,安徽,xuancheng,宣城,30.945667,118.757996,"341801,341800", CN101221402,jingxian,泾县,CN,China,中国,anhui,安徽,xuancheng,宣城,30.685974,118.4124,341823, CN101221403,jingde,旌德,CN,China,中国,anhui,安徽,xuancheng,宣城,30.288057,118.54308,341825, CN101221404,ningguo,宁国,CN,China,中国,anhui,安徽,xuancheng,宣城,30.62653,118.983406,341881, CN101221405,jixi,绩溪,CN,China,中国,anhui,安徽,xuancheng,宣城,30.065268,118.5947,341824, CN101221406,guangde,广德,CN,China,中国,anhui,安徽,xuancheng,宣城,30.893116,119.41752,341822, CN101221407,langxi,郎溪,CN,China,中国,anhui,安徽,xuancheng,宣城,31.127834,119.18502,341821, CN101221408,xuanzhou,宣州,CN,China,中国,anhui,安徽,xuancheng,宣城,30.946003,118.758415,341802, CN101221501,luan,六安,CN,China,中国,anhui,安徽,luan,六安,31.75289,116.507675,"341501,341500", CN101221502,huoqiu,霍邱,CN,China,中国,anhui,安徽,liuan,六安,32.341305,116.27888,341522, CN101221504,jinan,金安,CN,China,中国,anhui,安徽,liuan,六安,31.754492,116.50329,341502, CN101221505,jinzhai,金寨,CN,China,中国,anhui,安徽,liuan,六安,31.681623,115.87852,341524, CN101221506,huoshan,霍山,CN,China,中国,anhui,安徽,liuan,六安,31.402456,116.33308,341525, CN101221507,shucheng,舒城,CN,China,中国,anhui,安徽,liuan,六安,31.462849,116.94409,341523, CN101221508,yuan,裕安,CN,China,中国,anhui,安徽,liuan,六安,31.750692,116.494545,341503, CN101221509,yeji,叶集,CN,China,中国,anhui,安徽,liuan,六安,31.84768,115.9136,341504, CN101221701,chizhou,池州,CN,China,中国,anhui,安徽,chizhou,池州,30.656036,117.48916,"341701,341700", CN101221702,dongzhi,东至,CN,China,中国,anhui,安徽,chizhou,池州,30.096567,117.02148,341721, CN101221703,qingyang,青阳,CN,China,中国,anhui,安徽,chizhou,池州,30.63818,117.85739,341723, CN101221704,jiuhuashan,九华山,CN,China,中国,anhui,安徽,chizhou,池州,30.29,117.47,341723, CN101221705,shitai,石台,CN,China,中国,anhui,安徽,chizhou,池州,30.210323,117.48291,341722, CN101221706,guichi,贵池,CN,China,中国,anhui,安徽,chizhou,池州,30.657377,117.48834,341702, CN101230101,fuzhou,福州,CN,China,中国,fujian,福建,fuzhou,福州,26.075302,119.30624,"350101,350100,350000", CN101230102,minqing,闽清,CN,China,中国,fujian,福建,fuzhou,福州,26.223793,118.868416,350124, CN101230103,minhou,闽侯,CN,China,中国,fujian,福建,fuzhou,福州,26.148567,119.14512,350121, CN101230104,luoyuan,罗源,CN,China,中国,fujian,福建,fuzhou,福州,26.487234,119.55264,350123, CN101230105,lianjiang,连江,CN,China,中国,fujian,福建,fuzhou,福州,26.202108,119.53837,350122, CN101230106,gulou,鼓楼,CN,China,中国,fujian,福建,fuzhou,福州,26.082285,119.29929,350102, CN101230107,yongtai,永泰,CN,China,中国,fujian,福建,fuzhou,福州,25.864824,118.93909,350125, CN101230108,pingtan,平潭,CN,China,中国,fujian,福建,fuzhou,福州,25.503672,119.7912,350128, CN101230109,taijiang,台江,CN,China,中国,fujian,福建,fuzhou,福州,26.058617,119.31016,350103, CN101230110,changle,长乐,CN,China,中国,fujian,福建,fuzhou,福州,25.960583,119.51085,350112, CN101230111,fuqing,福清,CN,China,中国,fujian,福建,fuzhou,福州,25.720402,119.37699,350181, CN101230112,cangshan,仓山,CN,China,中国,fujian,福建,fuzhou,福州,26.038912,119.32099,350104, CN101230113,mawei,马尾,CN,China,中国,fujian,福建,fuzhou,福州,25.991976,119.458725,350105, CN101230114,jinan,晋安,CN,China,中国,fujian,福建,fuzhou,福州,26.078836,119.3286,350111, CN101230201,xiamen,厦门,CN,China,中国,fujian,福建,xiamen,厦门,24.490475,118.11022,"350201,350200", CN101230202,tongan,同安,CN,China,中国,fujian,福建,xiamen,厦门,24.729334,118.15045,350212, CN101230203,siming,思明,CN,China,中国,fujian,福建,xiamen,厦门,24.462059,118.08783,350203, CN101230204,haicang,海沧,CN,China,中国,fujian,福建,xiamen,厦门,24.492512,118.03636,350205, CN101230205,huli,湖里,CN,China,中国,fujian,福建,xiamen,厦门,24.512764,118.10943,350206, CN101230206,jimei,集美,CN,China,中国,fujian,福建,xiamen,厦门,24.572874,118.10087,350211, CN101230207,xiangan,翔安,CN,China,中国,fujian,福建,xiamen,厦门,24.63748,118.24281,350213, CN101230301,ningde,宁德,CN,China,中国,fujian,福建,ningde,宁德,26.65924,119.527084,"350901,350900", CN101230302,gutian,古田,CN,China,中国,fujian,福建,ningde,宁德,26.577492,118.74316,350922, CN101230303,xiapu,霞浦,CN,China,中国,fujian,福建,ningde,宁德,26.882069,120.00521,350921, CN101230304,shouning,寿宁,CN,China,中国,fujian,福建,ningde,宁德,27.457798,119.50674,350924, CN101230305,zhouning,周宁,CN,China,中国,fujian,福建,ningde,宁德,27.103106,119.33824,350925, CN101230306,fuan,福安,CN,China,中国,fujian,福建,ningde,宁德,27.084246,119.650795,350981, CN101230307,zherong,柘荣,CN,China,中国,fujian,福建,ningde,宁德,27.236162,119.898224,350926, CN101230308,fuding,福鼎,CN,China,中国,fujian,福建,ningde,宁德,27.318884,120.219765,350982, CN101230309,pingnan,屏南,CN,China,中国,fujian,福建,ningde,宁德,26.910826,118.98754,350923, CN101230310,jiaocheng,蕉城,CN,China,中国,fujian,福建,ningde,宁德,26.659252,119.52722,350902, CN101230401,putian,莆田,CN,China,中国,fujian,福建,putian,莆田,25.431011,119.00756,"350301,350300", CN101230402,xianyou,仙游,CN,China,中国,fujian,福建,putian,莆田,25.35653,118.69433,350322, CN101230404,hanjiang,涵江,CN,China,中国,fujian,福建,putian,莆田,25.459272,119.1191,350303, CN101230405,xiuyu,秀屿,CN,China,中国,fujian,福建,putian,莆田,25.316141,119.092606,350305, CN101230406,licheng,荔城,CN,China,中国,fujian,福建,putian,莆田,25.430046,119.02005,350304, CN101230407,chengxiang,城厢,CN,China,中国,fujian,福建,putian,莆田,25.433737,119.00103,350302, CN101230501,quanzhou,泉州,CN,China,中国,fujian,福建,quanzhou,泉州,24.908854,118.589424,"350501,350500", CN101230502,anxi,安溪,CN,China,中国,fujian,福建,quanzhou,泉州,25.056824,118.18601,350524, CN101230503,jinmen,金门,CN,China,中国,fujian,福建,quanzhou,泉州,24.436417,118.32322,350527, CN101230504,yongchun,永春,CN,China,中国,fujian,福建,quanzhou,泉州,25.32072,118.29503,350525, CN101230505,dehua,德化,CN,China,中国,fujian,福建,quanzhou,泉州,25.489004,118.24299,350526, CN101230506,nanan,南安,CN,China,中国,fujian,福建,quanzhou,泉州,24.959494,118.38703,350583, CN101230507,chongwu,崇武,CN,China,中国,fujian,福建,quanzhou,泉州,24.893684,118.91855,350521, CN101230508,huian,惠安,CN,China,中国,fujian,福建,quanzhou,泉州,25.028719,118.79895,350521, CN101230509,jinjiang,晋江,CN,China,中国,fujian,福建,quanzhou,泉州,24.807322,118.57734,350582, CN101230510,shishi,石狮,CN,China,中国,fujian,福建,quanzhou,泉州,24.731977,118.6284,350581, CN101230511,licheng,鲤城,CN,China,中国,fujian,福建,quanzhou,泉州,24.907644,118.58893,350502, CN101230512,fengze,丰泽,CN,China,中国,fujian,福建,quanzhou,泉州,24.896042,118.60515,350503, CN101230513,luojiang,洛江,CN,China,中国,fujian,福建,quanzhou,泉州,24.941153,118.67031,350504, CN101230514,quangang,泉港,CN,China,中国,fujian,福建,quanzhou,泉州,25.12686,118.912285,350505, CN101230601,zhangzhou,漳州,CN,China,中国,fujian,福建,zhangzhou,漳州,24.510897,117.661804,"350601,350600", CN101230602,changtai,长泰,CN,China,中国,fujian,福建,zhangzhou,漳州,24.621475,117.75591,350625, CN101230603,nanjing,南靖,CN,China,中国,fujian,福建,zhangzhou,漳州,24.516424,117.36546,350627, CN101230604,pinghe,平和,CN,China,中国,fujian,福建,zhangzhou,漳州,24.366158,117.313545,350628, CN101230605,longhai,龙海,CN,China,中国,fujian,福建,zhangzhou,漳州,24.445341,117.81729,350681, CN101230606,zhangpu,漳浦,CN,China,中国,fujian,福建,zhangzhou,漳州,24.117907,117.61402,350623, CN101230607,zhaoan,诏安,CN,China,中国,fujian,福建,zhangzhou,漳州,23.710835,117.17609,350624, CN101230608,dongshan,东山,CN,China,中国,fujian,福建,zhangzhou,漳州,23.702845,117.42768,350626, CN101230609,yunxiao,云霄,CN,China,中国,fujian,福建,zhangzhou,漳州,23.950485,117.34094,350622, CN101230610,huaan,华安,CN,China,中国,fujian,福建,zhangzhou,漳州,25.001415,117.53631,350629, CN101230611,xiangcheng,芗城,CN,China,中国,fujian,福建,zhangzhou,漳州,24.509954,117.65646,350602, CN101230612,longwen,龙文,CN,China,中国,fujian,福建,zhangzhou,漳州,24.515656,117.67139,350603, CN101230701,longyan,龙岩,CN,China,中国,fujian,福建,longyan,龙岩,25.091602,117.02978,"350801,350800", CN101230702,changting,长汀,CN,China,中国,fujian,福建,longyan,龙岩,25.842278,116.36101,350821, CN101230703,liancheng,连城,CN,China,中国,fujian,福建,longyan,龙岩,25.708506,116.75668,350825, CN101230704,wuping,武平,CN,China,中国,fujian,福建,longyan,龙岩,25.08865,116.10093,350824, CN101230705,shanghang,上杭,CN,China,中国,fujian,福建,longyan,龙岩,25.050018,116.424774,350823, CN101230706,yongding,永定,CN,China,中国,fujian,福建,longyan,龙岩,24.720442,116.73269,350803, CN101230707,zhangping,漳平,CN,China,中国,fujian,福建,longyan,龙岩,25.291597,117.42073,350881, CN101230708,xinluo,新罗,CN,China,中国,fujian,福建,longyan,龙岩,25.0918,117.03072,350802, CN101230801,sanming,三明,CN,China,中国,fujian,福建,sanming,三明,26.265444,117.635,"350401,350400", CN101230802,ninghua,宁化,CN,China,中国,fujian,福建,sanming,三明,26.259932,116.65972,350424, CN101230803,qingliu,清流,CN,China,中国,fujian,福建,sanming,三明,26.17761,116.81582,350423, CN101230804,taining,泰宁,CN,China,中国,fujian,福建,sanming,三明,26.897995,117.17752,350429, CN101230805,jiangle,将乐,CN,China,中国,fujian,福建,sanming,三明,26.728666,117.47356,350428, CN101230806,jianning,建宁,CN,China,中国,fujian,福建,sanming,三明,26.831398,116.84583,350430, CN101230807,mingxi,明溪,CN,China,中国,fujian,福建,sanming,三明,26.357374,117.20184,350421, CN101230808,shaxian,沙县,CN,China,中国,fujian,福建,sanming,三明,26.397362,117.78909,350427, CN101230809,youxi,尤溪,CN,China,中国,fujian,福建,sanming,三明,26.169262,118.188576,350426, CN101230810,yongan,永安,CN,China,中国,fujian,福建,sanming,三明,25.974075,117.36445,350481, CN101230811,datian,大田,CN,China,中国,fujian,福建,sanming,三明,25.690804,117.84936,350425, CN101230812,meilie,梅列,CN,China,中国,fujian,福建,sanming,三明,26.269209,117.63687,350402, CN101230813,sanyuan,三元,CN,China,中国,fujian,福建,sanming,三明,26.234192,117.607414,350403, CN101230901,nanping,南平,CN,China,中国,fujian,福建,nanping,南平,26.635628,118.17846,"350701,350700", CN101230902,shunchang,顺昌,CN,China,中国,fujian,福建,nanping,南平,26.79285,117.80771,350721, CN101230903,guangze,光泽,CN,China,中国,fujian,福建,nanping,南平,27.542803,117.3379,350723, CN101230904,shaowu,邵武,CN,China,中国,fujian,福建,nanping,南平,27.337952,117.49155,350781, CN101230905,wuyishan,武夷山,CN,China,中国,fujian,福建,nanping,南平,27.751734,118.0328,350782, CN101230906,pucheng,浦城,CN,China,中国,fujian,福建,nanping,南平,27.920412,118.53682,350722, CN101230907,jianyang,建阳,CN,China,中国,fujian,福建,nanping,南平,27.332067,118.12267,350703, CN101230908,songxi,松溪,CN,China,中国,fujian,福建,nanping,南平,27.525785,118.78349,350724, CN101230909,zhenghe,政和,CN,China,中国,fujian,福建,nanping,南平,27.365398,118.85866,350725, CN101230910,jianou,建瓯,CN,China,中国,fujian,福建,nanping,南平,27.03502,118.32176,350783, CN101230911,yanping,延平,CN,China,中国,fujian,福建,nanping,南平,26.63608,118.17892,350702, CN101231001,diaoyudao,钓鱼岛,CN,China,中国,fujian,福建,diaoyudao,钓鱼岛,25.73,123.46,710000, CN101240101,nanchang,南昌,CN,China,中国,jiangxi,江西,nanchang,南昌,28.676493,115.89215,"360101,360100,360000", CN101240102,xinjian,新建,CN,China,中国,jiangxi,江西,nanchang,南昌,28.690788,115.82081,360112, CN101240103,nanchangxian,南昌县,CN,China,中国,jiangxi,江西,nanchang,南昌,28.543781,115.94247,360121, CN101240104,anyi,安义,CN,China,中国,jiangxi,江西,nanchang,南昌,28.841333,115.55311,360123, CN101240105,jinxian,进贤,CN,China,中国,jiangxi,江西,nanchang,南昌,28.36568,116.26767,360124, CN101240106,donghu,东湖,CN,China,中国,jiangxi,江西,nanchang,南昌,28.682987,115.88967,360102, CN101240107,xihu,西湖,CN,China,中国,jiangxi,江西,nanchang,南昌,28.6629,115.91065,360103, CN101240108,qingyunpu,青云谱,CN,China,中国,jiangxi,江西,nanchang,南昌,28.635723,115.907295,360104, CN101240109,wanli,湾里,CN,China,中国,jiangxi,江西,nanchang,南昌,28.714804,115.73132,360105, CN101240110,qingshanhu,青山湖,CN,China,中国,jiangxi,江西,nanchang,南昌,28.689293,115.94904,360111, CN101240201,jiujiang,九江,CN,China,中国,jiangxi,江西,jiujiang,九江,29.712034,115.99281,"360401,360400,360402,360421", CN101240202,ruichang,瑞昌,CN,China,中国,jiangxi,江西,jiujiang,九江,29.6766,115.66908,360481, CN101240203,lushan,庐山,CN,China,中国,jiangxi,江西,jiujiang,九江,29.45617,116.04374,360483, CN101240204,wuning,武宁,CN,China,中国,jiangxi,江西,jiujiang,九江,29.260181,115.105644,360423, CN101240205,dean,德安,CN,China,中国,jiangxi,江西,jiujiang,九江,29.327475,115.76261,360426, CN101240206,yongxiu,永修,CN,China,中国,jiangxi,江西,jiujiang,九江,29.018211,115.80905,360425, CN101240207,hukou,湖口,CN,China,中国,jiangxi,江西,jiujiang,九江,29.7263,116.244316,360429, CN101240208,pengze,彭泽,CN,China,中国,jiangxi,江西,jiujiang,九江,29.898865,116.55584,360430, CN101240210,duchang,都昌,CN,China,中国,jiangxi,江西,jiujiang,九江,29.275105,116.20512,360428, CN101240211,xunyang,浔阳,CN,China,中国,jiangxi,江西,jiujiang,九江,29.72465,115.99595,360403, CN101240212,xiushui,修水,CN,China,中国,jiangxi,江西,jiujiang,九江,29.032728,114.573425,360424, CN101240213,gongqingcheng,共青城,CN,China,中国,jiangxi,江西,jiujiang,九江,29.247885,115.80571,360482, CN101240214,lianxi,濂溪,CN,China,中国,jiangxi,江西,jiujiang,九江,29.671888,116.02854,360402, CN101240215,chaisang,柴桑,CN,China,中国,jiangxi,江西,jiujiang,九江,29.60843,115.91132,360404, CN101240301,shangrao,上饶,CN,China,中国,jiangxi,江西,shangrao,上饶,28.44442,117.97118,"361101,361100", CN101240302,poyang,鄱阳,CN,China,中国,jiangxi,江西,shangrao,上饶,28.993374,116.673744,361128, CN101240303,wuyuan,婺源,CN,China,中国,jiangxi,江西,shangrao,上饶,29.254015,117.86219,361130, CN101240304,xinzhou,信州,CN,China,中国,jiangxi,江西,shangrao,上饶,28.445377,117.97052,361102, CN101240305,yugan,余干,CN,China,中国,jiangxi,江西,shangrao,上饶,28.69173,116.69107,361127, CN101240306,wannian,万年,CN,China,中国,jiangxi,江西,shangrao,上饶,28.692589,117.07015,361129, CN101240307,dexing,德兴,CN,China,中国,jiangxi,江西,shangrao,上饶,28.945034,117.578735,361181, CN101240308,shangraoxian,上饶县,CN,China,中国,jiangxi,江西,shangrao,上饶,28.453897,117.90612,361121, CN101240309,yiyang,弋阳,CN,China,中国,jiangxi,江西,shangrao,上饶,28.402391,117.435005,361126, CN101240310,hengfeng,横峰,CN,China,中国,jiangxi,江西,shangrao,上饶,28.415104,117.608246,361125, CN101240311,yanshan,铅山,CN,China,中国,jiangxi,江西,shangrao,上饶,28.310892,117.71191,361124, CN101240312,yushan,玉山,CN,China,中国,jiangxi,江西,shangrao,上饶,28.67348,118.24441,361123, CN101240313,guangfeng,广丰,CN,China,中国,jiangxi,江西,shangrao,上饶,28.440285,118.18985,361103, CN101240401,fuzhou,抚州,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.98385,116.35835,"361001,361000", CN101240402,guangchang,广昌,CN,China,中国,jiangxi,江西,fuzhou,抚州,26.838427,116.32729,361030, CN101240403,anle,乐安,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.420101,115.83843,361025, CN101240404,chongren,崇仁,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.760906,116.05911,361024, CN101240405,jinxi,金溪,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.907387,116.77875,361027, CN101240406,zixi,资溪,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.70653,117.06609,361028, CN101240407,yihuang,宜黄,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.546513,116.22302,361026, CN101240408,nancheng,南城,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.55531,116.63945,361021, CN101240409,nanfeng,南丰,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.210133,116.533,361023, CN101240410,lichuan,黎川,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.29256,116.91457,361022, CN101240411,dongxiang,东乡,CN,China,中国,jiangxi,江西,fuzhou,抚州,28.2325,116.60534,361003, CN101240412,linchuan,临川,CN,China,中国,jiangxi,江西,fuzhou,抚州,27.981918,116.361404,361002, CN101240501,yichun,宜春,CN,China,中国,jiangxi,江西,yichun,宜春,27.8043,114.391136,"360901,360900", CN101240502,tonggu,铜鼓,CN,China,中国,jiangxi,江西,yichun,宜春,28.520956,114.37014,360926, CN101240503,yifeng,宜丰,CN,China,中国,jiangxi,江西,yichun,宜春,28.388288,114.787384,360924, CN101240504,wanzai,万载,CN,China,中国,jiangxi,江西,yichun,宜春,28.104528,114.44901,360922, CN101240505,shanggao,上高,CN,China,中国,jiangxi,江西,yichun,宜春,28.234789,114.932655,360923, CN101240506,jingan,靖安,CN,China,中国,jiangxi,江西,yichun,宜春,28.86054,115.36175,360925, CN101240507,fengxin,奉新,CN,China,中国,jiangxi,江西,yichun,宜春,28.700672,115.3899,360921, CN101240508,gaoan,高安,CN,China,中国,jiangxi,江西,yichun,宜春,28.420952,115.38153,360983, CN101240509,zhangshu,樟树,CN,China,中国,jiangxi,江西,yichun,宜春,28.055899,115.54339,360982, CN101240510,fengcheng,丰城,CN,China,中国,jiangxi,江西,yichun,宜春,28.191584,115.786,360981, CN101240511,yuanzhou,袁州,CN,China,中国,jiangxi,江西,yichun,宜春,27.800117,114.38738,360902, CN101240601,jian,吉安,CN,China,中国,jiangxi,江西,jian,吉安,27.111698,114.986374,"360801,360800", CN101240602,jianxian,吉安县,CN,China,中国,jiangxi,江西,jian,吉安,27.040043,114.90511,360821, CN101240603,jishui,吉水,CN,China,中国,jiangxi,江西,jian,吉安,27.213446,115.13457,360822, CN101240604,xingan,新干,CN,China,中国,jiangxi,江西,jian,吉安,27.755758,115.39929,360824, CN101240605,xiajiang,峡江,CN,China,中国,jiangxi,江西,jian,吉安,27.580862,115.31933,360823, CN101240606,yongfeng,永丰,CN,China,中国,jiangxi,江西,jian,吉安,27.321087,115.43556,360825, CN101240607,yongxin,永新,CN,China,中国,jiangxi,江西,jian,吉安,26.944721,114.24253,360830, CN101240608,jinggangshan,井冈山,CN,China,中国,jiangxi,江西,jian,吉安,26.745918,114.284424,360881, CN101240609,wanan,万安,CN,China,中国,jiangxi,江西,jian,吉安,26.462086,114.78469,360828, CN101240610,suichuan,遂川,CN,China,中国,jiangxi,江西,jian,吉安,26.323706,114.51689,360827, CN101240611,taihe,泰和,CN,China,中国,jiangxi,江西,jian,吉安,26.790165,114.90139,360826, CN101240612,anfu,安福,CN,China,中国,jiangxi,江西,jian,吉安,27.382746,114.61384,360829, CN101240614,jizhou,吉州,CN,China,中国,jiangxi,江西,jian,吉安,27.112368,114.98733,360802, CN101240615,qingyuan,青原,CN,China,中国,jiangxi,江西,jian,吉安,27.105879,115.016304,360803, CN101240616,xiaping,厦坪,CN,China,中国,jiangxi,江西,jian,吉安,26.720444,114.26942,360881, CN101240701,ganzhou,赣州,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.85097,114.94028,"360701,360700", CN101240702,chongyi,崇义,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.68791,114.30735,360725, CN101240703,shangyou,上犹,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.794285,114.540535,360724, CN101240704,nankang,南康,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.66172,114.756935,360703, CN101240705,dayu,大余,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.395937,114.36224,360723, CN101240706,xinfeng,信丰,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.38023,114.93089,360722, CN101240707,ningdu,宁都,CN,China,中国,jiangxi,江西,ganzhou,赣州,26.472054,116.01878,360730, CN101240708,shicheng,石城,CN,China,中国,jiangxi,江西,ganzhou,赣州,26.326582,116.34225,360735, CN101240709,ruijin,瑞金,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.875278,116.03485,360781, CN101240710,yudu,于都,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.955032,115.4112,360731, CN101240711,huichang,会昌,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.599125,115.79116,360733, CN101240712,anyuan,安远,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.13459,115.39233,360726, CN101240713,quannan,全南,CN,China,中国,jiangxi,江西,ganzhou,赣州,24.742651,114.531586,360729, CN101240714,longnan,龙南,CN,China,中国,jiangxi,江西,ganzhou,赣州,24.90476,114.792656,360727, CN101240715,dingnan,定南,CN,China,中国,jiangxi,江西,ganzhou,赣州,24.774277,115.03267,360728, CN101240716,xunwu,寻乌,CN,China,中国,jiangxi,江西,ganzhou,赣州,24.954136,115.6514,360734, CN101240717,xingguo,兴国,CN,China,中国,jiangxi,江西,ganzhou,赣州,26.330488,115.3519,360732, CN101240718,ganxian,赣县,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.865433,115.01846,360704, CN101240719,zhanggong,章贡,CN,China,中国,jiangxi,江西,ganzhou,赣州,25.851368,114.93872,360702, CN101240801,jingdezhen,景德镇,CN,China,中国,jiangxi,江西,jingdezhen,景德镇,29.29256,117.21466,"360201,360200", CN101240802,leping,乐平,CN,China,中国,jiangxi,江西,jingdezhen,景德镇,28.967361,117.12938,360281, CN101240803,fuliang,浮梁,CN,China,中国,jiangxi,江西,jingdezhen,景德镇,29.352251,117.21761,360222, CN101240804,changjiang,昌江,CN,China,中国,jiangxi,江西,jingdezhen,景德镇,29.288465,117.19502,360202, CN101240805,zhushan,珠山,CN,China,中国,jiangxi,江西,jingdezhen,景德镇,29.292812,117.21481,360203, CN101240901,pingxiang,萍乡,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.622946,113.85219,"360301,360300", CN101240902,lianhua,莲花,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.127808,113.95558,360321, CN101240903,shangli,上栗,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.87704,113.80052,360322, CN101240904,anyuan,安源,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.625826,113.85504,360302, CN101240905,luxi,芦溪,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.633633,114.04121,360323, CN101240906,xiangdong,湘东,CN,China,中国,jiangxi,江西,pingxiang,萍乡,27.639318,113.7456,360313, CN101241001,xinyu,新余,CN,China,中国,jiangxi,江西,xinyu,新余,27.810835,114.93083,"360501,360500", CN101241002,fenyi,分宜,CN,China,中国,jiangxi,江西,xinyu,新余,27.8113,114.67526,360521, CN101241003,yushui,渝水,CN,China,中国,jiangxi,江西,xinyu,新余,27.819172,114.92392,360502, CN101241101,yingtan,鹰潭,CN,China,中国,jiangxi,江西,yingtan,鹰潭,28.238638,117.03384,"360601,360600", CN101241102,yujiang,余江,CN,China,中国,jiangxi,江西,yingtan,鹰潭,28.206177,116.82276,360622, CN101241103,guixi,贵溪,CN,China,中国,jiangxi,江西,yingtan,鹰潭,28.283693,117.212105,360681, CN101241104,yuehu,月湖,CN,China,中国,jiangxi,江西,yingtan,鹰潭,28.239077,117.03411,360602, CN101250101,changsha,长沙,CN,China,中国,hunan,湖南,changsha,长沙,28.19409,112.98228,"430101,430100,430000", CN101250102,ningxiang,宁乡,CN,China,中国,hunan,湖南,changsha,长沙,28.253927,112.553185,430182, CN101250103,liuyang,浏阳,CN,China,中国,hunan,湖南,changsha,长沙,28.141111,113.6333,430181, CN101250104,xiangjiangxinqu,湘江新区,CN,China,中国,hunan,湖南,changsha,长沙,28.12,113.05,430104, CN101250105,wangcheng,望城,CN,China,中国,hunan,湖南,changsha,长沙,28.347458,112.81955,430112, CN101250106,changshaxian,长沙县,CN,China,中国,hunan,湖南,changsha,长沙,28.237888,113.0801,430121, CN101250107,furong,芙蓉,CN,China,中国,hunan,湖南,changsha,长沙,28.193106,112.98809,430102, CN101250108,tianxin,天心,CN,China,中国,hunan,湖南,changsha,长沙,28.192375,112.97307,430103, CN101250109,yuelu,岳麓,CN,China,中国,hunan,湖南,changsha,长沙,28.213043,112.91159,430104, CN101250110,kaifu,开福,CN,China,中国,hunan,湖南,changsha,长沙,28.201336,112.98553,430105, CN101250111,yuhua,雨花,CN,China,中国,hunan,湖南,changsha,长沙,28.109938,113.016335,430111, CN101250201,xiangtan,湘潭,CN,China,中国,hunan,湖南,xiangtan,湘潭,27.82973,112.94405,"430301,430300,430321", CN101250202,shaoshan,韶山,CN,China,中国,hunan,湖南,xiangtan,湘潭,27.922682,112.52848,430382, CN101250203,xiangxiang,湘乡,CN,China,中国,hunan,湖南,xiangtan,湘潭,27.734919,112.525215,430381, CN101250204,yuhu,雨湖,CN,China,中国,hunan,湖南,xiangtan,湘潭,27.86077,112.907425,430302, CN101250205,yuetang,岳塘,CN,China,中国,hunan,湖南,xiangtan,湘潭,27.828854,112.927704,430304, CN101250301,zhuzhou,株洲,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.835806,113.15173,"430201,430200,430221", CN101250302,youxian,攸县,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.00007,113.34577,430223, CN101250303,liling,醴陵,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.657873,113.50716,430281, CN101250304,hetang,荷塘,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.833036,113.162544,430202, CN101250305,chaling,茶陵,CN,China,中国,hunan,湖南,zhuzhou,株洲,26.789534,113.54651,430224, CN101250306,yanling,炎陵,CN,China,中国,hunan,湖南,zhuzhou,株洲,26.489458,113.776886,430225, CN101250307,lusong,芦淞,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.827246,113.15517,430203, CN101250308,shifeng,石峰,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.871944,113.11295,430204, CN101250309,tianyuan,天元,CN,China,中国,hunan,湖南,zhuzhou,株洲,27.826908,113.13625,430211, CN101250401,hengyang,衡阳,CN,China,中国,hunan,湖南,hengyang,衡阳,26.900358,112.6077,"430401,430400", CN101250402,hengshan,衡山,CN,China,中国,hunan,湖南,hengyang,衡阳,27.234808,112.86971,430423, CN101250403,hengdong,衡东,CN,China,中国,hunan,湖南,hengyang,衡阳,27.08353,112.95041,430424, CN101250404,qidong,祁东,CN,China,中国,hunan,湖南,hengyang,衡阳,26.78711,112.11119,430426, CN101250405,hengyangxian,衡阳县,CN,China,中国,hunan,湖南,hengyang,衡阳,26.962387,112.37965,430421, CN101250406,changning,常宁,CN,China,中国,hunan,湖南,hengyang,衡阳,26.406773,112.39682,430482, CN101250407,hengnan,衡南,CN,China,中国,hunan,湖南,hengyang,衡阳,26.739973,112.67746,430422, CN101250408,leiyang,耒阳,CN,China,中国,hunan,湖南,hengyang,衡阳,26.414162,112.84721,430481, CN101250409,nanyue,南岳,CN,China,中国,hunan,湖南,hengyang,衡阳,27.240536,112.734146,430412, CN101250410,zhuhui,珠晖,CN,China,中国,hunan,湖南,hengyang,衡阳,26.891064,112.62633,430405, CN101250411,yanfeng,雁峰,CN,China,中国,hunan,湖南,hengyang,衡阳,26.893694,112.61224,430406, CN101250412,shigu,石鼓,CN,China,中国,hunan,湖南,hengyang,衡阳,26.903908,112.607635,430407, CN101250413,zhengxiang,蒸湘,CN,China,中国,hunan,湖南,hengyang,衡阳,26.89087,112.57061,430408, CN101250501,chenzhou,郴州,CN,China,中国,hunan,湖南,chenzhou,郴州,25.793589,113.03207,"431001,431000", CN101250502,guiyang,桂阳,CN,China,中国,hunan,湖南,chenzhou,郴州,25.737448,112.73447,431021, CN101250503,jiahe,嘉禾,CN,China,中国,hunan,湖南,chenzhou,郴州,25.587309,112.37062,431024, CN101250504,yizhang,宜章,CN,China,中国,hunan,湖南,chenzhou,郴州,25.394344,112.94788,431022, CN101250505,linwu,临武,CN,China,中国,hunan,湖南,chenzhou,郴州,25.27912,112.56459,431025, CN101250506,beihu,北湖,CN,China,中国,hunan,湖南,chenzhou,郴州,25.792627,113.03221,431002, CN101250507,zixing,资兴,CN,China,中国,hunan,湖南,chenzhou,郴州,25.974152,113.23682,431081, CN101250508,rucheng,汝城,CN,China,中国,hunan,湖南,chenzhou,郴州,25.553759,113.685684,431026, CN101250509,anren,安仁,CN,China,中国,hunan,湖南,chenzhou,郴州,26.708626,113.27217,431028, CN101250510,yongxing,永兴,CN,China,中国,hunan,湖南,chenzhou,郴州,26.129393,113.11482,431023, CN101250511,guidong,桂东,CN,China,中国,hunan,湖南,chenzhou,郴州,26.073917,113.94588,431027, CN101250512,suxian,苏仙,CN,China,中国,hunan,湖南,chenzhou,郴州,25.793158,113.0387,431003, CN101250601,changde,常德,CN,China,中国,hunan,湖南,changde,常德,29.040224,111.691345,"430701,430700", CN101250602,anxiang,安乡,CN,China,中国,hunan,湖南,changde,常德,29.414482,112.17229,430721, CN101250603,taoyuan,桃源,CN,China,中国,hunan,湖南,changde,常德,28.902735,111.484505,430725, CN101250604,hanshou,汉寿,CN,China,中国,hunan,湖南,changde,常德,28.907318,111.968506,430722, CN101250605,lixian,澧县,CN,China,中国,hunan,湖南,changde,常德,29.64264,111.76168,430723, CN101250606,linli,临澧,CN,China,中国,hunan,湖南,changde,常德,29.443216,111.6456,430724, CN101250607,shimen,石门,CN,China,中国,hunan,湖南,changde,常德,29.584703,111.37909,430726, CN101250608,jinshi,津市,CN,China,中国,hunan,湖南,changde,常德,29.630867,111.87961,430781, CN101250609,wuling,武陵,CN,China,中国,hunan,湖南,changde,常德,29.040478,111.69072,430702, CN101250610,dingcheng,鼎城,CN,China,中国,hunan,湖南,changde,常德,29.014425,111.685326,430703, CN101250700,yiyang,益阳,CN,China,中国,hunan,湖南,yiyang,益阳,28.570066,112.35504,"430901,430900", CN101250701,heshanqu,赫山区,CN,China,中国,hunan,湖南,yiyang,益阳,28.568327,112.36095,430903, CN101250702,nanxian,南县,CN,China,中国,hunan,湖南,yiyang,益阳,29.37218,112.4104,430921, CN101250703,taojiang,桃江,CN,China,中国,hunan,湖南,yiyang,益阳,28.520992,112.13973,430922, CN101250704,anhua,安化,CN,China,中国,hunan,湖南,yiyang,益阳,28.37742,111.221825,430923, CN101250705,yuanjiang,沅江,CN,China,中国,hunan,湖南,yiyang,益阳,28.839712,112.36109,430981, CN101250706,ziyang,资阳,CN,China,中国,hunan,湖南,yiyang,益阳,28.592772,112.33084,430902, CN101250801,loudi,娄底,CN,China,中国,hunan,湖南,loudi,娄底,27.728136,112.0085,"431301,431300", CN101250802,shuangfeng,双峰,CN,China,中国,hunan,湖南,loudi,娄底,27.459126,112.19824,431321, CN101250803,lengshuijiang,冷水江,CN,China,中国,hunan,湖南,loudi,娄底,27.685759,111.43468,431381, CN101250804,louxing,娄星,CN,China,中国,hunan,湖南,loudi,娄底,27.726643,112.008484,431302, CN101250805,xinhua,新化,CN,China,中国,hunan,湖南,loudi,娄底,27.737455,111.30675,431322, CN101250806,lianyuan,涟源,CN,China,中国,hunan,湖南,loudi,娄底,27.6923,111.670845,431382, CN101250901,shaoyang,邵阳,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.237843,111.46923,"430501,430500", CN101250902,longhui,隆回,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.116001,111.03879,430524, CN101250903,dongkou,洞口,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.062286,110.57921,430525, CN101250904,xinshao,新邵,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.311428,111.45976,430522, CN101250905,shaodong,邵东,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.257273,111.74317,430521, CN101250906,suining,绥宁,CN,China,中国,hunan,湖南,shaoyang,邵阳,26.580622,110.155075,430527, CN101250907,xinning,新宁,CN,China,中国,hunan,湖南,shaoyang,邵阳,26.438911,110.859116,430528, CN101250908,wugang,武冈,CN,China,中国,hunan,湖南,shaoyang,邵阳,26.732086,110.6368,430581, CN101250909,chengbu,城步,CN,China,中国,hunan,湖南,shaoyang,邵阳,26.363575,110.313225,430529, CN101250910,shaoyangxian,邵阳县,CN,China,中国,hunan,湖南,shaoyang,邵阳,26.989714,111.2757,430523, CN101250911,shuangqing,双清,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.240002,111.47976,430502, CN101250912,daxiang,大祥,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.233593,111.46297,430503, CN101250913,beita,北塔,CN,China,中国,hunan,湖南,shaoyang,邵阳,27.245687,111.45232,430511, CN101251001,yueyang,岳阳,CN,China,中国,hunan,湖南,yueyang,岳阳,29.37029,113.13286,"430601,430600,430621", CN101251002,huarong,华容,CN,China,中国,hunan,湖南,yueyang,岳阳,29.524107,112.55937,430623, CN101251003,xiangyin,湘阴,CN,China,中国,hunan,湖南,yueyang,岳阳,28.677498,112.88975,430624, CN101251004,miluo,汨罗,CN,China,中国,hunan,湖南,yueyang,岳阳,28.803148,113.07942,430681, CN101251005,pingjiang,平江,CN,China,中国,hunan,湖南,yueyang,岳阳,28.701523,113.59375,430626, CN101251006,linxiang,临湘,CN,China,中国,hunan,湖南,yueyang,岳阳,29.471594,113.450806,430682, CN101251007,yueyanglouqu,岳阳楼区,CN,China,中国,hunan,湖南,yueyang,岳阳,29.366783,113.12075,430602, CN101251008,yunxi,云溪,CN,China,中国,hunan,湖南,yueyang,岳阳,29.473394,113.27387,430603, CN101251009,junshan,君山,CN,China,中国,hunan,湖南,yueyang,岳阳,29.438063,113.00408,430611, CN101251101,zhangjiajie,张家界,CN,China,中国,hunan,湖南,zhangjiajie,张家界,29.127401,110.47992,"430801,430800", CN101251102,sangzhi,桑植,CN,China,中国,hunan,湖南,zhangjiajie,张家界,29.399939,110.16404,430822, CN101251103,cili,慈利,CN,China,中国,hunan,湖南,zhangjiajie,张家界,29.423876,111.132706,430821, CN101251104,wulingyuan,武陵源,CN,China,中国,hunan,湖南,zhangjiajie,张家界,29.347828,110.54758,430811, CN101251105,yongding,永定,CN,China,中国,hunan,湖南,zhangjiajie,张家界,29.125961,110.48456,430802, CN101251201,huaihua,怀化,CN,China,中国,hunan,湖南,huaihua,怀化,27.550081,109.97824,"431201,431200", CN101251202,hecheng,鹤城,CN,China,中国,hunan,湖南,huaihua,怀化,27.548473,109.98224,431202, CN101251203,yuanling,沅陵,CN,China,中国,hunan,湖南,huaihua,怀化,28.455553,110.39916,431222, CN101251204,chenxi,辰溪,CN,China,中国,hunan,湖南,huaihua,怀化,28.005474,110.19695,431223, CN101251205,jingzhou,靖州,CN,China,中国,hunan,湖南,huaihua,怀化,26.573511,109.69116,431229, CN101251206,huitong,会同,CN,China,中国,hunan,湖南,huaihua,怀化,26.870789,109.72079,431225, CN101251207,tongdao,通道,CN,China,中国,hunan,湖南,huaihua,怀化,26.158348,109.783356,431230, CN101251208,mayang,麻阳,CN,China,中国,hunan,湖南,huaihua,怀化,27.865992,109.80281,431226, CN101251209,xinhuang,新晃,CN,China,中国,hunan,湖南,huaihua,怀化,27.359898,109.174446,431227, CN101251210,zhijiang,芷江,CN,China,中国,hunan,湖南,huaihua,怀化,27.437996,109.687775,431228, CN101251211,xupu,溆浦,CN,China,中国,hunan,湖南,huaihua,怀化,27.903803,110.593376,431224, CN101251212,zhongfang,中方,CN,China,中国,hunan,湖南,huaihua,怀化,27.43736,109.94806,431221, CN101251213,hongjiang,洪江,CN,China,中国,hunan,湖南,huaihua,怀化,27.201876,109.831764,431281, CN101251401,yongzhou,永州,CN,China,中国,hunan,湖南,yongzhou,永州,26.434517,111.60802,"431101,431100", CN101251402,qiyang,祁阳,CN,China,中国,hunan,湖南,yongzhou,永州,26.58593,111.85734,431121, CN101251403,dongan,东安,CN,China,中国,hunan,湖南,yongzhou,永州,26.397278,111.313034,431122, CN101251404,shuangpai,双牌,CN,China,中国,hunan,湖南,yongzhou,永州,25.959396,111.66215,431123, CN101251405,daoxian,道县,CN,China,中国,hunan,湖南,yongzhou,永州,25.518444,111.59161,431124, CN101251406,ningyuan,宁远,CN,China,中国,hunan,湖南,yongzhou,永州,25.584112,111.94453,431126, CN101251407,jiangyong,江永,CN,China,中国,hunan,湖南,yongzhou,永州,25.268154,111.3468,431125, CN101251408,lanshan,蓝山,CN,China,中国,hunan,湖南,yongzhou,永州,25.375256,112.1942,431127, CN101251409,xintian,新田,CN,China,中国,hunan,湖南,yongzhou,永州,25.906927,112.220345,431128, CN101251410,jianghua,江华,CN,China,中国,hunan,湖南,yongzhou,永州,25.182596,111.57728,431129, CN101251411,lengshuitan,冷水滩,CN,China,中国,hunan,湖南,yongzhou,永州,26.434364,111.607155,431103, CN101251412,lingling,零陵,CN,China,中国,hunan,湖南,yongzhou,永州,26.223347,111.62635,431102, CN101251501,jishou,吉首,CN,China,中国,hunan,湖南,xiangxi,湘西,28.314827,109.73827,433101, CN101251502,baojing,保靖,CN,China,中国,hunan,湖南,xiangxi,湘西,28.709604,109.65144,433125, CN101251503,yongshun,永顺,CN,China,中国,hunan,湖南,xiangxi,湘西,28.998068,109.853294,433127, CN101251504,guzhang,古丈,CN,China,中国,hunan,湖南,xiangxi,湘西,28.616974,109.94959,433126, CN101251505,fenghuang,凤凰,CN,China,中国,hunan,湖南,xiangxi,湘西,27.948309,109.59919,433123, CN101251506,luxi,泸溪,CN,China,中国,hunan,湖南,xiangxi,湘西,28.214516,110.21443,433122, CN101251507,longshan,龙山,CN,China,中国,hunan,湖南,xiangxi,湘西,29.453438,109.44119,433130, CN101251508,huayuan,花垣,CN,China,中国,hunan,湖南,xiangxi,湘西,28.581352,109.479065,433124, CN101251509,xiangxi,湘西,CN,China,中国,hunan,湖南,xiangxi,湘西,28.314297,109.73974,433100, CN101260101,guiyang,贵阳,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.578342,106.71348,"520101,520100,520000", CN101260102,baiyun,白云,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.67685,106.63303,520113, CN101260103,huaxi,花溪,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.410463,106.67079,520111, CN101260104,wudang,乌当,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.630928,106.76212,520112, CN101260105,xifeng,息烽,CN,China,中国,guizhou,贵州,guiyang,贵阳,27.092665,106.73769,520122, CN101260106,kaiyang,开阳,CN,China,中国,guizhou,贵州,guiyang,贵阳,27.056793,106.96944,520121, CN101260107,xiuwen,修文,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.840672,106.59922,520123, CN101260108,qingzhen,清镇,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.551289,106.470276,520181, CN101260110,yunyan,云岩,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.58301,106.713394,520103, CN101260111,nanming,南明,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.573744,106.715965,520102, CN101260112,guanshanhu,观山湖,CN,China,中国,guizhou,贵州,guiyang,贵阳,26.646358,106.62632,520115, CN101260201,zunyi,遵义,CN,China,中国,guizhou,贵州,zunyi,遵义,27.706627,106.93726,"520301,520300", CN101260203,renhuai,仁怀,CN,China,中国,guizhou,贵州,zunyi,遵义,27.803377,106.412476,520382, CN101260204,suiyang,绥阳,CN,China,中国,guizhou,贵州,zunyi,遵义,27.951342,107.191025,520323, CN101260205,meitan,湄潭,CN,China,中国,guizhou,贵州,zunyi,遵义,27.765839,107.485725,520328, CN101260206,fenggang,凤冈,CN,China,中国,guizhou,贵州,zunyi,遵义,27.960857,107.72202,520327, CN101260207,tongzi,桐梓,CN,China,中国,guizhou,贵州,zunyi,遵义,28.13156,106.82659,520322, CN101260208,chishui,赤水,CN,China,中国,guizhou,贵州,zunyi,遵义,28.587057,105.69811,520381, CN101260209,xishui,习水,CN,China,中国,guizhou,贵州,zunyi,遵义,28.327826,106.20095,520330, CN101260210,daozhen,道真,CN,China,中国,guizhou,贵州,zunyi,遵义,28.880089,107.60534,520325, CN101260211,zhengan,正安,CN,China,中国,guizhou,贵州,zunyi,遵义,28.550337,107.44187,520324, CN101260212,wuchuan,务川,CN,China,中国,guizhou,贵州,zunyi,遵义,28.521566,107.887856,520326, CN101260213,yuqing,余庆,CN,China,中国,guizhou,贵州,zunyi,遵义,27.221552,107.89256,520329, CN101260214,huichuan,汇川,CN,China,中国,guizhou,贵州,zunyi,遵义,27.706627,106.93726,520303, CN101260215,honghuagang,红花岗,CN,China,中国,guizhou,贵州,zunyi,遵义,27.694395,106.94379,520302, CN101260216,bozhou,播州,CN,China,中国,guizhou,贵州,zunyi,遵义,27.535288,106.831665,520304, CN101260301,anshun,安顺,CN,China,中国,guizhou,贵州,anshun,安顺,26.245544,105.93219,"520401,520400", CN101260302,puding,普定,CN,China,中国,guizhou,贵州,anshun,安顺,26.305794,105.745605,520422, CN101260303,zhenning,镇宁,CN,China,中国,guizhou,贵州,anshun,安顺,26.056095,105.768654,520423, CN101260304,pingba,平坝,CN,China,中国,guizhou,贵州,anshun,安顺,26.40608,106.25994,520403, CN101260305,ziyun,紫云,CN,China,中国,guizhou,贵州,anshun,安顺,25.751568,106.08452,520425, CN101260306,guanling,关岭,CN,China,中国,guizhou,贵州,anshun,安顺,25.944248,105.618454,520424, CN101260307,xixiu,西秀,CN,China,中国,guizhou,贵州,anshun,安顺,26.248323,105.94617,520402, CN101260401,duyun,都匀,CN,China,中国,guizhou,贵州,qiannan,黔南,26.258205,107.51702,522701, CN101260402,guiding,贵定,CN,China,中国,guizhou,贵州,qiannan,黔南,26.580807,107.23359,522723, CN101260403,wengan,瓮安,CN,China,中国,guizhou,贵州,qiannan,黔南,27.06634,107.47842,522725, CN101260404,changshun,长顺,CN,China,中国,guizhou,贵州,qiannan,黔南,26.022116,106.44737,522729, CN101260405,fuquan,福泉,CN,China,中国,guizhou,贵州,qiannan,黔南,26.702509,107.51351,522702, CN101260406,huishui,惠水,CN,China,中国,guizhou,贵州,qiannan,黔南,26.128637,106.657845,522731, CN101260407,longli,龙里,CN,China,中国,guizhou,贵州,qiannan,黔南,26.448809,106.97773,522730, CN101260408,luodian,罗甸,CN,China,中国,guizhou,贵州,qiannan,黔南,25.429893,106.75001,522728, CN101260409,pingtang,平塘,CN,China,中国,guizhou,贵州,qiannan,黔南,25.831802,107.32405,522727, CN101260410,dushan,独山,CN,China,中国,guizhou,贵州,qiannan,黔南,25.826283,107.542755,522726, CN101260411,sandu,三都,CN,China,中国,guizhou,贵州,qiannan,黔南,25.985184,107.87747,522732, CN101260412,libo,荔波,CN,China,中国,guizhou,贵州,qiannan,黔南,25.41224,107.8838,522722, CN101260413,qiannan,黔南,CN,China,中国,guizhou,贵州,qiannan,黔南,26.258219,107.51716,522700, CN101260501,kaili,凯里,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.582964,107.97754,522601, CN101260502,cengong,岑巩,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,27.173244,108.81646,522626, CN101260503,shibing,施秉,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,27.034657,108.12678,522623, CN101260504,zhenyuan,镇远,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,27.050234,108.42365,522625, CN101260505,huangping,黄平,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.896973,107.90134,522622, CN101260506,qiandongnan,黔东南,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.583351,107.977486,522600, CN101260507,majiang,麻江,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.494802,107.59317,522635, CN101260508,danzhai,丹寨,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.199497,107.79481,522636, CN101260509,sansui,三穗,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.959885,108.68112,522624, CN101260510,taijiang,台江,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.669138,108.31464,522630, CN101260511,jianhe,剑河,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.727348,108.4405,522629, CN101260512,leishan,雷山,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.381027,108.07961,522634, CN101260513,liping,黎平,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.230637,109.136505,522631, CN101260514,tianzhu,天柱,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.909683,109.2128,522627, CN101260515,jinping,锦屏,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,26.680626,109.20252,522628, CN101260516,rongjiang,榕江,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,25.931086,108.52103,522632, CN101260517,congjiang,从江,CN,China,中国,guizhou,贵州,qiandongnan,黔东南,25.747059,108.91265,522633, CN101260601,tongren,铜仁,CN,China,中国,guizhou,贵州,tongren,铜仁,27.718346,109.19155,520600, CN101260602,jiangkou,江口,CN,China,中国,guizhou,贵州,tongren,铜仁,27.691904,108.84843,520621, CN101260603,yuping,玉屏,CN,China,中国,guizhou,贵州,tongren,铜仁,27.238024,108.917885,520622, CN101260604,wanshan,万山,CN,China,中国,guizhou,贵州,tongren,铜仁,27.51903,109.21199,520603, CN101260605,sinan,思南,CN,China,中国,guizhou,贵州,tongren,铜仁,27.941332,108.25583,520624, CN101260606,bijiang,碧江,CN,China,中国,guizhou,贵州,tongren,铜仁,27.718744,109.192116,520602, CN101260607,yinjiang,印江,CN,China,中国,guizhou,贵州,tongren,铜仁,27.997976,108.40552,520625, CN101260608,shiqian,石阡,CN,China,中国,guizhou,贵州,tongren,铜仁,27.519386,108.22985,520623, CN101260609,yanhe,沿河,CN,China,中国,guizhou,贵州,tongren,铜仁,28.560488,108.49574,520627, CN101260610,dejiang,德江,CN,China,中国,guizhou,贵州,tongren,铜仁,28.26094,108.11732,520626, CN101260611,songtao,松桃,CN,China,中国,guizhou,贵州,tongren,铜仁,28.165419,109.20263,520628, CN101260701,bijie,毕节,CN,China,中国,guizhou,贵州,bijie,毕节,27.301693,105.28501,520500, CN101260702,hezhang,赫章,CN,China,中国,guizhou,贵州,bijie,毕节,27.119244,104.72644,520527, CN101260703,jinsha,金沙,CN,China,中国,guizhou,贵州,bijie,毕节,27.459694,106.2221,520523, CN101260704,weining,威宁,CN,China,中国,guizhou,贵州,bijie,毕节,26.859098,104.28652,520526, CN101260705,dafang,大方,CN,China,中国,guizhou,贵州,bijie,毕节,27.14352,105.60925,520521, CN101260706,nayong,纳雍,CN,China,中国,guizhou,贵州,bijie,毕节,26.769875,105.37532,520525, CN101260707,zhijin,织金,CN,China,中国,guizhou,贵州,bijie,毕节,26.668497,105.769,520524, CN101260708,qianxi,黔西,CN,China,中国,guizhou,贵州,bijie,毕节,27.024923,106.0383,520522, CN101260709,qixingguan,七星关,CN,China,中国,guizhou,贵州,bijie,毕节,27.302086,105.28485,520502, CN101260801,shuicheng,水城,CN,China,中国,guizhou,贵州,liupanshui,六盘水,26.540478,104.95685,520221, CN101260802,liuzhi,六枝,CN,China,中国,guizhou,贵州,liupanshui,六盘水,26.210663,105.474236,520203, CN101260803,liupanshui,六盘水,CN,China,中国,guizhou,贵州,liupanshui,六盘水,26.584642,104.84674,520200, CN101260804,panzhou,盘州,CN,China,中国,guizhou,贵州,liupanshui,六盘水,25.706966,104.46837,520281, CN101260805,zhongshan,钟山,CN,China,中国,guizhou,贵州,liupanshui,六盘水,26.584805,104.846245,520201, CN101260901,xingyi,兴义,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.088598,104.89798,522301, CN101260902,qinglong,晴隆,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.832882,105.21877,522324, CN101260903,xingren,兴仁,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.431377,105.19278,522322, CN101260904,zhenfeng,贞丰,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.385752,105.65013,522325, CN101260905,wangmo,望谟,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.166668,106.09156,522326, CN101260906,qianxinan,黔西南,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.08812,104.89797,522300, CN101260907,anlong,安龙,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.10896,105.4715,522328, CN101260908,ceheng,册亨,CN,China,中国,guizhou,贵州,qianxinan,黔西南,24.983337,105.81241,522327, CN101260909,puan,普安,CN,China,中国,guizhou,贵州,qianxinan,黔西南,25.786404,104.955345,522323, CN101270101,chengdu,成都,CN,China,中国,sichuan,四川,chengdu,成都,30.659462,104.065735,"510101,510100,510000", CN101270102,longquanyi,龙泉驿,CN,China,中国,sichuan,四川,chengdu,成都,30.56065,104.26918,510112, CN101270103,xindu,新都,CN,China,中国,sichuan,四川,chengdu,成都,30.824223,104.16022,510114, CN101270104,wenjiang,温江,CN,China,中国,sichuan,四川,chengdu,成都,30.697996,103.83678,510115, CN101270105,jintang,金堂,CN,China,中国,sichuan,四川,chengdu,成都,30.858418,104.4156,510121, CN101270106,shuangliu,双流,CN,China,中国,sichuan,四川,chengdu,成都,30.573242,103.92271,510116, CN101270107,pidu,郫都,CN,China,中国,sichuan,四川,chengdu,成都,30.808752,103.88784,510117, CN101270108,dayi,大邑,CN,China,中国,sichuan,四川,chengdu,成都,30.586601,103.5224,510129, CN101270109,pujiang,蒲江,CN,China,中国,sichuan,四川,chengdu,成都,30.194359,103.51154,510131, CN101270110,xinjin,新津,CN,China,中国,sichuan,四川,chengdu,成都,30.414284,103.81245,510132, CN101270111,dujiangyan,都江堰,CN,China,中国,sichuan,四川,chengdu,成都,30.99114,103.6279,510181, CN101270112,pengzhou,彭州,CN,China,中国,sichuan,四川,chengdu,成都,30.98516,103.94117,510182, CN101270113,qionglai,邛崃,CN,China,中国,sichuan,四川,chengdu,成都,30.41327,103.46143,510183, CN101270114,chongzhou,崇州,CN,China,中国,sichuan,四川,chengdu,成都,30.631477,103.67105,510184, CN101270115,qingbaijiang,青白江,CN,China,中国,sichuan,四川,chengdu,成都,30.883438,104.25494,510113, CN101270116,jinjiang,锦江,CN,China,中国,sichuan,四川,chengdou,成都,30.657688,104.080986,510104, CN101270117,qingyang,青羊,CN,China,中国,sichuan,四川,chengdou,成都,30.667648,104.05573,510105, CN101270118,jinniu,金牛,CN,China,中国,sichuan,四川,chengdou,成都,30.692059,104.04349,510106, CN101270119,wuhou,武侯,CN,China,中国,sichuan,四川,chengdou,成都,30.630861,104.05167,510107, CN101270120,chenghua,成华,CN,China,中国,sichuan,四川,chengdou,成都,30.660275,104.10308,510108, CN101270121,jianyang,简阳,CN,China,中国,sichuan,四川,chengdu,成都,30.390665,104.55034,510185, CN101270201,panzhihua,攀枝花,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.580446,101.716,"510401,510400", CN101270202,renhe,仁和,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.497185,101.737915,510411, CN101270203,miyi,米易,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.887474,102.10988,510421, CN101270204,yanbian,盐边,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.67762,101.851845,510422, CN101270205,dongqu,东区,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.580887,101.71513,510402, CN101270206,xiqu,西区,CN,China,中国,sichuan,四川,panzhihua,攀枝花,26.596775,101.63797,510403, CN101270301,zigong,自贡,CN,China,中国,sichuan,四川,zigong,自贡,29.352764,104.773445,"510301,510300", CN101270302,fushun,富顺,CN,China,中国,sichuan,四川,zigong,自贡,29.181282,104.98425,510322, CN101270303,rongxian,荣县,CN,China,中国,sichuan,四川,zigong,自贡,29.454851,104.423935,510321, CN101270304,ziliujing,自流井,CN,China,中国,sichuan,四川,zigong,自贡,29.343231,104.77819,510302, CN101270305,gongjing,贡井,CN,China,中国,sichuan,四川,zigong,自贡,29.345675,104.71437,510303, CN101270306,daan,大安,CN,China,中国,sichuan,四川,zigong,自贡,29.367136,104.783226,510304, CN101270307,yantan,沿滩,CN,China,中国,sichuan,四川,zigong,自贡,29.27252,104.87642,510311, CN101270401,mianyang,绵阳,CN,China,中国,sichuan,四川,mianyang,绵阳,31.46402,104.74172,"510701,510700", CN101270402,santai,三台,CN,China,中国,sichuan,四川,mianyang,绵阳,31.090908,105.09032,510722, CN101270403,yanting,盐亭,CN,China,中国,sichuan,四川,mianyang,绵阳,31.22318,105.39199,510723, CN101270405,zitong,梓潼,CN,China,中国,sichuan,四川,mianyang,绵阳,31.635225,105.16353,510725, CN101270406,beichuan,北川,CN,China,中国,sichuan,四川,mianyang,绵阳,31.615864,104.46807,510726, CN101270407,pingwu,平武,CN,China,中国,sichuan,四川,mianyang,绵阳,32.40759,104.530556,510727, CN101270408,jiangyou,江油,CN,China,中国,sichuan,四川,mianyang,绵阳,31.776386,104.74443,510781, CN101270409,fucheng,涪城,CN,China,中国,sichuan,四川,mianyang,绵阳,31.463556,104.740974,510703, CN101270410,youxian,游仙,CN,China,中国,sichuan,四川,mianyang,绵阳,31.484772,104.770004,510704, CN101270411,anzhou,安州,CN,China,中国,sichuan,四川,mianyang,绵阳,31.53894,104.56034,510705, CN101270501,nanchong,南充,CN,China,中国,sichuan,四川,nanchong,南充,30.79528,106.08298,"511301,511300", CN101270502,nanbu,南部,CN,China,中国,sichuan,四川,nanchong,南充,31.349407,106.061134,511321, CN101270503,yingshan,营山,CN,China,中国,sichuan,四川,nanchong,南充,31.075907,106.564896,511322, CN101270504,pengan,蓬安,CN,China,中国,sichuan,四川,nanchong,南充,31.027979,106.41349,511323, CN101270505,yilong,仪陇,CN,China,中国,sichuan,四川,nanchong,南充,31.271261,106.29708,511324, CN101270506,xichong,西充,CN,China,中国,sichuan,四川,nanchong,南充,30.994616,105.89302,511325, CN101270507,langzhong,阆中,CN,China,中国,sichuan,四川,nanchong,南充,31.580465,105.975266,511381, CN101270508,shunqing,顺庆,CN,China,中国,sichuan,四川,nanchong,南充,30.795572,106.08409,511302, CN101270509,gaoping,高坪,CN,China,中国,sichuan,四川,nanchong,南充,30.781809,106.10899,511303, CN101270510,jialing,嘉陵,CN,China,中国,sichuan,四川,nanchong,南充,30.762976,106.067024,511304, CN101270601,dazhou,达州,CN,China,中国,sichuan,四川,dazhou,达州,31.209484,107.50226,"511701,511700", CN101270602,xuanhan,宣汉,CN,China,中国,sichuan,四川,dazhou,达州,31.355024,107.72225,511722, CN101270603,kaijiang,开江,CN,China,中国,sichuan,四川,dazhou,达州,31.085537,107.864136,511723, CN101270604,dazhu,大竹,CN,China,中国,sichuan,四川,dazhou,达州,30.736288,107.20742,511724, CN101270605,quxian,渠县,CN,China,中国,sichuan,四川,dazhou,达州,30.836348,106.97075,511725, CN101270606,wanyuan,万源,CN,China,中国,sichuan,四川,dazhou,达州,32.06777,108.037544,511781, CN101270607,tongchuan,通川,CN,China,中国,sichuan,四川,dazhou,达州,31.213522,107.50106,511702, CN101270608,dachuan,达川,CN,China,中国,sichuan,四川,dazhou,达州,31.199062,107.50793,511703, CN101270701,suining,遂宁,CN,China,中国,sichuan,四川,suining,遂宁,30.513311,105.57133,"510901,510900", CN101270702,pengxi,蓬溪,CN,China,中国,sichuan,四川,suining,遂宁,30.774883,105.7137,510921, CN101270703,shehong,射洪,CN,China,中国,sichuan,四川,suining,遂宁,30.868752,105.38185,510922, CN101270704,chuanshan,船山,CN,China,中国,sichuan,四川,suining,遂宁,30.502647,105.582214,510903, CN101270705,anju,安居,CN,China,中国,sichuan,四川,suining,遂宁,30.34612,105.45938,510904, CN101270706,daying,大英,CN,China,中国,sichuan,四川,suining,遂宁,30.581572,105.25219,510923, CN101270801,guangan,广安,CN,China,中国,sichuan,四川,guangan,广安,30.456398,106.63337,"511601,511600,511602", CN101270802,yuechi,岳池,CN,China,中国,sichuan,四川,guangan,广安,30.533539,106.44445,511621, CN101270803,wusheng,武胜,CN,China,中国,sichuan,四川,guangan,广安,30.344292,106.29247,511622, CN101270804,linshui,邻水,CN,China,中国,sichuan,四川,guangan,广安,30.334324,106.93497,511623, CN101270805,huaying,华蓥,CN,China,中国,sichuan,四川,guangan,广安,30.380573,106.777885,511681, CN101270806,qianfeng,前锋,CN,China,中国,sichuan,四川,guangan,广安,30.4963,106.89328,511603, CN101270901,bazhong,巴中,CN,China,中国,sichuan,四川,bazhong,巴中,31.858809,106.75367,"511901,511900", CN101270902,tongjiang,通江,CN,China,中国,sichuan,四川,bazhong,巴中,31.91212,107.24762,511921, CN101270903,nanjiang,南江,CN,China,中国,sichuan,四川,bazhong,巴中,32.353165,106.843414,511922, CN101270904,pingchang,平昌,CN,China,中国,sichuan,四川,bazhong,巴中,31.562815,107.10194,511923, CN101270905,bazhou,巴州,CN,China,中国,sichuan,四川,bazhong,巴中,31.858366,106.75367,511902, CN101270906,enyang,恩阳,CN,China,中国,sichuan,四川,bazhong,巴中,31.816336,106.48651,511903, CN101271001,luzhou,泸州,CN,China,中国,sichuan,四川,luzhou,泸州,28.889137,105.44335,"510501,510500", CN101271002,jiangyang,江阳,CN,China,中国,sichuan,四川,luzhou,泸州,28.882889,105.44513,510502, CN101271003,luxian,泸县,CN,China,中国,sichuan,四川,luzhou,泸州,29.151287,105.376335,510521, CN101271004,hejiang,合江,CN,China,中国,sichuan,四川,luzhou,泸州,28.810326,105.8341,510522, CN101271005,xuyong,叙永,CN,China,中国,sichuan,四川,luzhou,泸州,28.16792,105.437775,510524, CN101271006,gulin,古蔺,CN,China,中国,sichuan,四川,luzhou,泸州,28.03948,105.81336,510525, CN101271007,naxi,纳溪,CN,China,中国,sichuan,四川,luzhou,泸州,28.77631,105.37721,510503, CN101271008,longmatan,龙马潭,CN,China,中国,sichuan,四川,luzhou,泸州,28.897572,105.43523,510504, CN101271101,yibin,宜宾,CN,China,中国,sichuan,四川,yibin,宜宾,28.76019,104.63082,"511501,511500", CN101271102,cuiping,翠屏,CN,China,中国,sichuan,四川,yibin,宜宾,28.76018,104.63023,511502, CN101271103,yibinxian,宜宾县,CN,China,中国,sichuan,四川,yibin,宜宾,28.695679,104.54149,511521, CN101271104,nanxi,南溪,CN,China,中国,sichuan,四川,yibin,宜宾,28.839806,104.98113,511503, CN101271105,jiangan,江安,CN,China,中国,sichuan,四川,yibin,宜宾,28.728102,105.068695,511523, CN101271106,changning,长宁,CN,China,中国,sichuan,四川,yibin,宜宾,28.57727,104.92112,511524, CN101271107,gaoxian,高县,CN,China,中国,sichuan,四川,yibin,宜宾,28.435677,104.51919,511525, CN101271108,gongxian,珙县,CN,China,中国,sichuan,四川,yibin,宜宾,28.449041,104.712265,511526, CN101271109,junlian,筠连,CN,China,中国,sichuan,四川,yibin,宜宾,28.162018,104.50785,511527, CN101271110,xingwen,兴文,CN,China,中国,sichuan,四川,yibin,宜宾,28.302988,105.23655,511528, CN101271111,pingshan,屏山,CN,China,中国,sichuan,四川,yibin,宜宾,28.64237,104.16262,511529, CN101271201,neijiang,内江,CN,China,中国,sichuan,四川,neijiang,内江,29.58708,105.06614,"511001,511000", CN101271202,dongxing,东兴,CN,China,中国,sichuan,四川,neijiang,内江,29.600107,105.0672,511011, CN101271203,weiyuan,威远,CN,China,中国,sichuan,四川,neijiang,内江,29.52686,104.66833,511024, CN101271204,zizhong,资中,CN,China,中国,sichuan,四川,neijiang,内江,29.775295,104.85246,511025, CN101271205,longchang,隆昌,CN,China,中国,sichuan,四川,neijiang,内江,29.338161,105.28807,511083, CN101271206,shizhong,市中,CN,China,中国,sichuan,四川,najiang,内江,29.585264,105.06547,511002, CN101271301,ziyang,资阳,CN,China,中国,sichuan,四川,ziyang,资阳,30.122211,104.641914,"512001,512000", CN101271302,anyue,安岳,CN,China,中国,sichuan,四川,ziyang,资阳,30.099207,105.33676,512021, CN101271303,lezhi,乐至,CN,China,中国,sichuan,四川,ziyang,资阳,30.27562,105.03114,512022, CN101271305,yanjiang,雁江,CN,China,中国,sichuan,四川,ziyang,资阳,30.121687,104.64234,512002, CN101271401,leshan,乐山,CN,China,中国,sichuan,四川,leshan,乐山,29.582024,103.76126,"511101,511100", CN101271402,qianwei,犍为,CN,China,中国,sichuan,四川,leshan,乐山,29.209782,103.94427,511123, CN101271403,jingyan,井研,CN,China,中国,sichuan,四川,leshan,乐山,29.651646,104.06885,511124, CN101271404,jiajiang,夹江,CN,China,中国,sichuan,四川,leshan,乐山,29.741018,103.578865,511126, CN101271405,muchuan,沐川,CN,China,中国,sichuan,四川,leshan,乐山,28.956339,103.90211,511129, CN101271406,ebian,峨边,CN,China,中国,sichuan,四川,leshan,乐山,29.23027,103.262146,511132, CN101271407,mabian,马边,CN,China,中国,sichuan,四川,leshan,乐山,28.838934,103.54685,511133, CN101271409,emeishan,峨眉山,CN,China,中国,sichuan,四川,leshan,乐山,29.597479,103.492485,511181, CN101271410,shizhong,市中,CN,China,中国,sichuan,四川,leshan,乐山,29.588327,103.75539,511102, CN101271411,shawan,沙湾,CN,China,中国,sichuan,四川,leshan,乐山,29.416536,103.54996,511111, CN101271412,wutongqiao,五通桥,CN,China,中国,sichuan,四川,leshan,乐山,29.406185,103.81683,511112, CN101271413,jinkouhe,金口河,CN,China,中国,sichuan,四川,leshan,乐山,29.24602,103.07783,511113, CN101271414,emeishanshi,峨眉山市,CN,China,中国,sichuan,四川,leshan,乐山,29.601198,103.484505,511181, CN101271501,meishan,眉山,CN,China,中国,sichuan,四川,meishan,眉山,30.048319,103.83179,"511401,511400", CN101271502,renshou,仁寿,CN,China,中国,sichuan,四川,meishan,眉山,29.996721,104.147644,511421, CN101271503,pengshan,彭山,CN,China,中国,sichuan,四川,meishan,眉山,30.192299,103.8701,511403, CN101271504,hongya,洪雅,CN,China,中国,sichuan,四川,meishan,眉山,29.904867,103.37501,511423, CN101271505,danleng,丹棱,CN,China,中国,sichuan,四川,meishan,眉山,30.01275,103.51833,511424, CN101271506,qingshen,青神,CN,China,中国,sichuan,四川,meishan,眉山,29.831469,103.84613,511425, CN101271507,dongpo,东坡,CN,China,中国,sichuan,四川,meishan,眉山,30.048128,103.83155,511402, CN101271601,liangshan,凉山,CN,China,中国,sichuan,四川,liangshan,凉山,27.886763,102.25874,513400, CN101271603,muli,木里,CN,China,中国,sichuan,四川,liangshan,凉山,27.926859,101.28018,513422, CN101271604,yanyuan,盐源,CN,China,中国,sichuan,四川,liangshan,凉山,27.423414,101.50891,513423, CN101271605,dechang,德昌,CN,China,中国,sichuan,四川,liangshan,凉山,27.403828,102.17885,513424, CN101271606,huili,会理,CN,China,中国,sichuan,四川,liangshan,凉山,26.658703,102.24955,513425, CN101271607,huidong,会东,CN,China,中国,sichuan,四川,liangshan,凉山,26.630713,102.57899,513426, CN101271608,ningnan,宁南,CN,China,中国,sichuan,四川,liangshan,凉山,27.065205,102.75738,513427, CN101271609,puge,普格,CN,China,中国,sichuan,四川,liangshan,凉山,27.376827,102.541084,513428, CN101271610,xichang,西昌,CN,China,中国,sichuan,四川,liangshan,凉山,27.885786,102.25876,513401, CN101271611,jinyang,金阳,CN,China,中国,sichuan,四川,liangshan,凉山,27.695915,103.2487,513430, CN101271612,zhaojue,昭觉,CN,China,中国,sichuan,四川,liangshan,凉山,28.010553,102.843994,513431, CN101271613,xide,喜德,CN,China,中国,sichuan,四川,liangshan,凉山,28.305487,102.41234,513432, CN101271614,mianning,冕宁,CN,China,中国,sichuan,四川,liangshan,凉山,28.550844,102.170044,513433, CN101271615,yuexi,越西,CN,China,中国,sichuan,四川,liangshan,凉山,28.639631,102.50887,513434, CN101271616,ganluo,甘洛,CN,China,中国,sichuan,四川,liangshan,凉山,28.977095,102.775925,513435, CN101271617,leibo,雷波,CN,China,中国,sichuan,四川,liangshan,凉山,28.262945,103.57159,513437, CN101271618,meigu,美姑,CN,China,中国,sichuan,四川,liangshan,凉山,28.327946,103.132,513436, CN101271619,butuo,布拖,CN,China,中国,sichuan,四川,liangshan,凉山,27.709063,102.8088,513429, CN101271701,yaan,雅安,CN,China,中国,sichuan,四川,yaan,雅安,29.987722,103.00103,"511801,511800", CN101271702,mingshan,名山,CN,China,中国,sichuan,四川,yaan,雅安,30.084719,103.11221,511803, CN101271703,yingjing,荥经,CN,China,中国,sichuan,四川,yaan,雅安,29.795528,102.84467,511822, CN101271704,hanyuan,汉源,CN,China,中国,sichuan,四川,yaan,雅安,29.349915,102.67715,511823, CN101271705,shimian,石棉,CN,China,中国,sichuan,四川,yaan,雅安,29.234062,102.35962,511824, CN101271706,tianquan,天全,CN,China,中国,sichuan,四川,yaan,雅安,30.059956,102.76346,511825, CN101271707,lushan,芦山,CN,China,中国,sichuan,四川,yaan,雅安,30.152906,102.92402,511826, CN101271708,baoxing,宝兴,CN,China,中国,sichuan,四川,yaan,雅安,30.369026,102.81338,511827, CN101271709,yucheng,雨城,CN,China,中国,sichuan,四川,yaan,雅安,29.98183,103.003395,511802, CN101271801,ganzi,甘孜,CN,China,中国,sichuan,四川,ganzi,甘孜,30.050663,101.96381,"513300,513328", CN101271802,kangding,康定,CN,China,中国,sichuan,四川,ganzi,甘孜,30.050737,101.96406,513301, CN101271803,luding,泸定,CN,China,中国,sichuan,四川,ganzi,甘孜,29.912481,102.23322,513322, CN101271804,danba,丹巴,CN,China,中国,sichuan,四川,ganzi,甘孜,30.877083,101.88612,513323, CN101271805,jiulong,九龙,CN,China,中国,sichuan,四川,ganzi,甘孜,29.001974,101.50694,513324, CN101271806,yajiang,雅江,CN,China,中国,sichuan,四川,ganzi,甘孜,30.03225,101.01573,513325, CN101271807,daofu,道孚,CN,China,中国,sichuan,四川,ganzi,甘孜,30.978767,101.12333,513326, CN101271808,luhuo,炉霍,CN,China,中国,sichuan,四川,ganzi,甘孜,31.392673,100.6795,513327, CN101271809,xinlong,新龙,CN,China,中国,sichuan,四川,ganzi,甘孜,30.93896,100.312096,513329, CN101271810,dege,德格,CN,China,中国,sichuan,四川,ganzi,甘孜,31.806728,98.57999,513330, CN101271811,baiyu,白玉,CN,China,中国,sichuan,四川,ganzi,甘孜,31.208805,98.82434,513331, CN101271812,shiqu,石渠,CN,China,中国,sichuan,四川,ganzi,甘孜,32.975304,98.10088,513332, CN101271813,seda,色达,CN,China,中国,sichuan,四川,ganzi,甘孜,32.268776,100.33166,513333, CN101271814,litang,理塘,CN,China,中国,sichuan,四川,ganzi,甘孜,29.991808,100.26986,513334, CN101271815,batang,巴塘,CN,China,中国,sichuan,四川,ganzi,甘孜,30.005724,99.10904,513335, CN101271816,xiangcheng,乡城,CN,China,中国,sichuan,四川,ganzi,甘孜,28.930855,99.79994,513336, CN101271817,daocheng,稻城,CN,China,中国,sichuan,四川,ganzi,甘孜,29.037544,100.29669,513337, CN101271818,derong,得荣,CN,China,中国,sichuan,四川,ganzi,甘孜,28.71134,99.28803,513338, CN101271901,aba,阿坝,CN,China,中国,sichuan,四川,aba,阿坝,31.899792,102.221375,"513200,513231", CN101271902,wenchuan,汶川,CN,China,中国,sichuan,四川,aba,阿坝,31.47463,103.58067,513221, CN101271903,lixian,理县,CN,China,中国,sichuan,四川,aba,阿坝,31.436764,103.16549,513222, CN101271904,maoxian,茂县,CN,China,中国,sichuan,四川,aba,阿坝,31.680407,103.850685,513223, CN101271905,songfan,松潘,CN,China,中国,sichuan,四川,aba,阿坝,32.63838,103.599174,513224, CN101271906,jiuzhaigou,九寨沟,CN,China,中国,sichuan,四川,aba,阿坝,33.262096,104.23634,513225, CN101271907,jinchuan,金川,CN,China,中国,sichuan,四川,aba,阿坝,31.476357,102.064644,513226, CN101271908,xiaojin,小金,CN,China,中国,sichuan,四川,aba,阿坝,30.999016,102.36319,513227, CN101271909,heishui,黑水,CN,China,中国,sichuan,四川,aba,阿坝,32.06172,102.99081,513228, CN101271910,maerkang,马尔康,CN,China,中国,sichuan,四川,aba,阿坝,31.899761,102.22118,513201, CN101271911,rangtang,壤塘,CN,China,中国,sichuan,四川,aba,阿坝,32.26489,100.97913,513230, CN101271912,nuoergai,若尔盖,CN,China,中国,sichuan,四川,aba,阿坝,33.575935,102.96372,513232, CN101271913,hongyuan,红原,CN,China,中国,sichuan,四川,aba,阿坝,32.793903,102.54491,513233, CN101272001,deyang,德阳,CN,China,中国,sichuan,四川,deyang,德阳,31.12799,104.39865,"510601,510600", CN101272002,zhongjiang,中江,CN,China,中国,sichuan,四川,deyang,德阳,31.03681,104.67783,510623, CN101272003,guanghan,广汉,CN,China,中国,sichuan,四川,deyang,德阳,30.97715,104.281906,510681, CN101272004,shifang,什邡,CN,China,中国,sichuan,四川,deyang,德阳,31.12688,104.17365,510682, CN101272005,mianzhu,绵竹,CN,China,中国,sichuan,四川,deyang,德阳,31.343084,104.200165,510683, CN101272006,luojiang,罗江,CN,China,中国,sichuan,四川,deyang,德阳,31.303282,104.507126,510626, CN101272007,jingyang,旌阳,CN,China,中国,sichuan,四川,deyang,德阳,31.130428,104.38965,510603, CN101272101,guangyuan,广元,CN,China,中国,sichuan,四川,guangyuan,广元,32.433666,105.82976,"510801,510800", CN101272102,wangcang,旺苍,CN,China,中国,sichuan,四川,guangyuan,广元,32.22833,106.29043,510821, CN101272103,qingchuan,青川,CN,China,中国,sichuan,四川,guangyuan,广元,32.585655,105.238846,510822, CN101272104,jiange,剑阁,CN,China,中国,sichuan,四川,guangyuan,广元,32.28652,105.52704,510823, CN101272105,cangxi,苍溪,CN,China,中国,sichuan,四川,guangyuan,广元,31.73225,105.939705,510824, CN101272106,lizhou,利州,CN,China,中国,sichuan,四川,guangyuan,广元,32.432278,105.826195,510802, CN101272107,zhaohua,昭化,CN,China,中国,sichuan,四川,guangyuan,广元,32.32279,105.96412,510811, CN101272108,chaotian,朝天,CN,China,中国,sichuan,四川,guangyuan,广元,32.64263,105.88917,510812, CN101280101,guangzhou,广州,CN,China,中国,guangdong,广东,guangzhou,广州,23.125177,113.28064,"440101,440100,440000,442101", CN101280102,panyu,番禺,CN,China,中国,guangdong,广东,guangzhou,广州,22.938581,113.36462,440113, CN101280103,conghua,从化,CN,China,中国,guangdong,广东,guangzhou,广州,23.545282,113.58739,440117, CN101280104,zengcheng,增城,CN,China,中国,guangdong,广东,guangzhou,广州,23.290497,113.82958,440118, CN101280105,huadu,花都,CN,China,中国,guangdong,广东,guangzhou,广州,23.39205,113.21118,440114, CN101280106,liwan,荔湾,CN,China,中国,guangdong,广东,guangzhou,广州,23.124943,113.243034,440103, CN101280107,yuexiu,越秀,CN,China,中国,guangdong,广东,guangzhou,广州,23.125624,113.280716,440104, CN101280108,haizhu,海珠,CN,China,中国,guangdong,广东,guangzhou,广州,23.10313,113.26201,440105, CN101280109,tianhe,天河,CN,China,中国,guangdong,广东,guangzhou,广州,23.13559,113.335365,440106, CN101280110,baiyun,白云,CN,China,中国,guangdong,广东,guangzhou,广州,23.162281,113.26283,440111, CN101280111,huangpu,黄埔,CN,China,中国,guangdong,广东,guangzhou,广州,23.10324,113.45076,440112, CN101280112,nansha,南沙,CN,China,中国,guangdong,广东,guangzhou,广州,22.79453,113.53738,440115, CN101280201,shaoguan,韶关,CN,China,中国,guangdong,广东,shaoguan,韶关,24.801323,113.591545,"440201,440200", CN101280202,ruyuan,乳源,CN,China,中国,guangdong,广东,shaoguan,韶关,24.77611,113.27842,440232, CN101280203,shixing,始兴,CN,China,中国,guangdong,广东,shaoguan,韶关,24.948364,114.06721,440222, CN101280204,wengyuan,翁源,CN,China,中国,guangdong,广东,shaoguan,韶关,24.353888,114.13129,440229, CN101280205,lechang,乐昌,CN,China,中国,guangdong,广东,shaoguan,韶关,25.128445,113.35241,440281, CN101280206,renhua,仁化,CN,China,中国,guangdong,广东,shaoguan,韶关,25.088226,113.74863,440224, CN101280207,nanxiong,南雄,CN,China,中国,guangdong,广东,shaoguan,韶关,25.115328,114.31123,440282, CN101280208,xinfeng,新丰,CN,China,中国,guangdong,广东,shaoguan,韶关,24.055412,114.20703,440233, CN101280209,qujiang,曲江,CN,China,中国,guangdong,广东,shaoguan,韶关,24.680195,113.60558,440205, CN101280210,zhenjiang,浈江,CN,China,中国,guangdong,广东,shaoguan,韶关,24.803976,113.59922,440204, CN101280211,wujiang,武江,CN,China,中国,guangdong,广东,shaoguan,韶关,24.80016,113.58829,440203, CN101280301,huizhou,惠州,CN,China,中国,guangdong,广东,huizhou,惠州,23.079405,114.4126,"441301,441300", CN101280302,boluo,博罗,CN,China,中国,guangdong,广东,huizhou,惠州,23.167576,114.284256,441322, CN101280303,huiyang,惠阳,CN,China,中国,guangdong,广东,huizhou,惠州,22.78851,114.469444,441303, CN101280304,huidong,惠东,CN,China,中国,guangdong,广东,huizhou,惠州,22.983036,114.72309,441323, CN101280305,longmen,龙门,CN,China,中国,guangdong,广东,huizhou,惠州,23.723894,114.25999,441324, CN101280306,huicheng,惠城,CN,China,中国,guangdong,广东,huizhou,惠州,23.079884,114.41398,441302, CN101280401,meizhou,梅州,CN,China,中国,guangdong,广东,meizhou,梅州,24.299112,116.117584,"441401,441400", CN101280402,xingning,兴宁,CN,China,中国,guangdong,广东,meizhou,梅州,24.138077,115.73165,441481, CN101280403,jiaoling,蕉岭,CN,China,中国,guangdong,广东,meizhou,梅州,24.653313,116.17053,441427, CN101280404,dabu,大埔,CN,China,中国,guangdong,广东,meizhou,梅州,24.351587,116.69552,441422, CN101280405,meijiang,梅江,CN,China,中国,guangdong,广东,meizhou,梅州,24.302593,116.12116,441402, CN101280406,fengshun,丰顺,CN,China,中国,guangdong,广东,meizhou,梅州,23.752771,116.18442,441423, CN101280407,pingyuan,平远,CN,China,中国,guangdong,广东,meizhou,梅州,24.56965,115.89173,441426, CN101280408,wuhua,五华,CN,China,中国,guangdong,广东,meizhou,梅州,23.925425,115.775,441424, CN101280409,meixian,梅县,CN,China,中国,guangdong,广东,meizhou,梅州,24.267824,116.08348,441403, CN101280501,shantou,汕头,CN,China,中国,guangdong,广东,shantou,汕头,23.37102,116.708466,"440501,440500", CN101280502,chaoyang,潮阳,CN,China,中国,guangdong,广东,shantou,汕头,23.262337,116.6026,440513, CN101280503,chenghai,澄海,CN,China,中国,guangdong,广东,shantou,汕头,23.46844,116.76336,440515, CN101280504,nanao,南澳,CN,China,中国,guangdong,广东,shantou,汕头,23.419561,117.02711,440523, CN101280505,longhu,龙湖,CN,China,中国,guangdong,广东,shantou,汕头,23.373755,116.73202,440507, CN101280506,jinping,金平,CN,China,中国,guangdong,广东,shantou,汕头,23.367071,116.70358,440511, CN101280507,haojiang,濠江,CN,China,中国,guangdong,广东,shantou,汕头,23.279345,116.72953,440512, CN101280508,chaonan,潮南,CN,China,中国,guangdong,广东,shantou,汕头,23.249798,116.42361,440514, CN101280601,shenzhen,深圳,CN,China,中国,guangdong,广东,shenzhen,深圳,22.547,114.085945,"440301,440300,440309,440310", CN101280602,luohu,罗湖,CN,China,中国,guangdong,广东,shenzhen,深圳,22.555342,114.123886,440303, CN101280603,futian,福田,CN,China,中国,guangdong,广东,shenzhen,深圳,22.54101,114.05096,440304, CN101280604,nanshan,南山,CN,China,中国,guangdong,广东,shenzhen,深圳,22.531221,113.92943,440305, CN101280605,baoan,宝安,CN,China,中国,guangdong,广东,shenzhen,深圳,22.560078,113.901024,440306, CN101280606,longgang,龙岗,CN,China,中国,guangdong,广东,shenzhen,深圳,22.721512,114.25137,440307, CN101280607,yantian,盐田,CN,China,中国,guangdong,广东,shenzhen,深圳,22.555069,114.23537,440308, CN101280608,longhua,龙华,CN,China,中国,guangdong,广东,shenzhen,深圳,22.696678,114.04544,440309, CN101280609,pingshan,坪山,CN,China,中国,guangdong,广东,shenzhen,深圳,22.689812,114.34818,440310, CN101280701,zhuhai,珠海,CN,China,中国,guangdong,广东,zhuhai,珠海,22.22498,113.553986,"440401,440400", CN101280702,doumen,斗门,CN,China,中国,guangdong,广东,zhuhai,珠海,22.209118,113.29774,440403, CN101280703,jinwan,金湾,CN,China,中国,guangdong,广东,zhuhai,珠海,22.139122,113.34507,440404, CN101280704,xiangzhou,香洲,CN,China,中国,guangdong,广东,zhuhai,珠海,22.27125,113.55027,440402, CN101280800,foshan,佛山,CN,China,中国,guangdong,广东,foshan,佛山,23.028763,113.12272,"440601,440600", CN101280801,shunde,顺德,CN,China,中国,guangdong,广东,foshan,佛山,22.75851,113.28182,440606, CN101280802,sanshui,三水,CN,China,中国,guangdong,广东,foshan,佛山,23.16504,112.899414,440607, CN101280803,nanhai,南海,CN,China,中国,guangdong,广东,foshan,佛山,23.031563,113.14558,440605, CN101280804,gaoming,高明,CN,China,中国,guangdong,广东,foshan,佛山,22.893854,112.882126,440608, CN101280805,chancheng,禅城,CN,China,中国,guangdong,广东,foshan,佛山,23.019644,113.11241,440604, CN101280901,zhaoqing,肇庆,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.051546,112.47253,"441201,441200", CN101280902,guangning,广宁,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.631487,112.44042,441223, CN101280903,sihui,四会,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.340324,112.69503,441284, CN101280904,duanzhou,端州,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.052662,112.47233,441202, CN101280905,deqing,德庆,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.14171,111.78156,441226, CN101280906,huaiji,怀集,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.913073,112.182465,441224, CN101280907,fengkai,封开,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.43473,111.502975,441225, CN101280908,gaoyao,高要,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.027695,112.460846,441204, CN101280909,dinghu,鼎湖,CN,China,中国,guangdong,广东,zhaoqing,肇庆,23.155823,112.56525,441203, CN101281001,zhanjiang,湛江,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.274899,110.364975,"440801,440800", CN101281002,wuchuan,吴川,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.428453,110.78051,440883, CN101281003,leizhou,雷州,CN,China,中国,guangdong,广东,zhanjiang,湛江,20.908524,110.08827,440882, CN101281004,xuwen,徐闻,CN,China,中国,guangdong,广东,zhanjiang,湛江,20.326082,110.17572,440825, CN101281005,lianjiang,廉江,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.61128,110.28496,440881, CN101281006,chikan,赤坎,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.273365,110.36163,440802, CN101281007,suixi,遂溪,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.376915,110.25532,440823, CN101281008,potou,坡头,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.24441,110.455635,440804, CN101281009,xiashan,霞山,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.19423,110.40638,440803, CN101281010,mazhang,麻章,CN,China,中国,guangdong,广东,zhanjiang,湛江,21.265997,110.32917,440811, CN101281101,jiangmen,江门,CN,China,中国,guangdong,广东,jiangmen,江门,22.590431,113.09494,"440701,440700", CN101281103,kaiping,开平,CN,China,中国,guangdong,广东,jiangmen,江门,22.366285,112.69226,440783, CN101281104,xinhui,新会,CN,China,中国,guangdong,广东,jiangmen,江门,22.520247,113.03858,440705, CN101281105,enping,恩平,CN,China,中国,guangdong,广东,jiangmen,江门,22.182957,112.31405,440785, CN101281106,taishan,台山,CN,China,中国,guangdong,广东,jiangmen,江门,22.250713,112.79341,440781, CN101281107,pengjiang,蓬江,CN,China,中国,guangdong,广东,jiangmen,江门,22.59677,113.07859,440703, CN101281108,heshan,鹤山,CN,China,中国,guangdong,广东,jiangmen,江门,22.768105,112.96179,440784, CN101281109,jianghai,江海,CN,China,中国,guangdong,广东,jiangmen,江门,22.57221,113.1206,440704, CN101281201,heyuan,河源,CN,China,中国,guangdong,广东,heyuan,河源,23.746265,114.6978,"441601,441600", CN101281202,zijin,紫金,CN,China,中国,guangdong,广东,heyuan,河源,23.633743,115.18438,441621, CN101281203,lianping,连平,CN,China,中国,guangdong,广东,heyuan,河源,24.364227,114.49595,441623, CN101281204,heping,和平,CN,China,中国,guangdong,广东,heyuan,河源,24.44318,114.941475,441624, CN101281205,longchuan,龙川,CN,China,中国,guangdong,广东,heyuan,河源,24.101173,115.25642,441622, CN101281206,dongyuan,东源,CN,China,中国,guangdong,广东,heyuan,河源,23.789093,114.742714,441625, CN101281207,yuancheng,源城,CN,China,中国,guangdong,广东,heyuan,河源,23.746256,114.69683,441602, CN101281301,qingyuan,清远,CN,China,中国,guangdong,广东,qingyuan,清远,23.685022,113.05122,"441801,441800", CN101281302,liannan,连南,CN,China,中国,guangdong,广东,qingyuan,清远,24.719097,112.29081,441826, CN101281303,lianzhou,连州,CN,China,中国,guangdong,广东,qingyuan,清远,24.783966,112.37927,441882, CN101281304,lianshan,连山,CN,China,中国,guangdong,广东,qingyuan,清远,24.56727,112.086555,441825, CN101281305,yangshan,阳山,CN,China,中国,guangdong,广东,qingyuan,清远,24.470285,112.63402,441823, CN101281306,fogang,佛冈,CN,China,中国,guangdong,广东,qingyuan,清远,23.86674,113.534096,441821, CN101281307,yingde,英德,CN,China,中国,guangdong,广东,qingyuan,清远,24.18612,113.4054,441881, CN101281308,qingxin,清新,CN,China,中国,guangdong,广东,qingyuan,清远,23.73695,113.015205,441803, CN101281309,qingcheng,清城,CN,China,中国,guangdong,广东,qingyuan,清远,23.688976,113.0487,441802, CN101281401,yunfu,云浮,CN,China,中国,guangdong,广东,yunfu,云浮,22.929802,112.04444,"445301,445300", CN101281402,luoding,罗定,CN,China,中国,guangdong,广东,yunfu,云浮,22.765415,111.5782,445381, CN101281403,xinxing,新兴,CN,China,中国,guangdong,广东,yunfu,云浮,22.703203,112.23083,445321, CN101281404,yunan,郁南,CN,China,中国,guangdong,广东,yunfu,云浮,23.237709,111.53592,445322, CN101281405,yuncheng,云城,CN,China,中国,guangdong,广东,yunfu,云浮,22.930826,112.04471,445302, CN101281406,yunan,云安,CN,China,中国,guangdong,广东,yunfu,云浮,23.073153,112.00561,445303, CN101281501,chaozhou,潮州,CN,China,中国,guangdong,广东,chaozhou,潮州,23.661701,116.6323,"445101,445100", CN101281502,raoping,饶平,CN,China,中国,guangdong,广东,chaozhou,潮州,23.66817,117.00205,445122, CN101281503,chaoan,潮安,CN,China,中国,guangdong,广东,chaozhou,潮州,23.461012,116.67931,445103, CN101281504,xiangqiao,湘桥,CN,China,中国,guangdong,广东,chaozhou,潮州,23.664675,116.63365,445102, CN101281601,dongguan,东莞,CN,China,中国,guangdong,广东,dongguan,东莞,23.046238,113.74626,441900, CN101281701,zhongshan,中山,CN,China,中国,guangdong,广东,zhongshan,中山,22.521112,113.38239,442000, CN101281801,yangjiang,阳江,CN,China,中国,guangdong,广东,yangjiang,阳江,21.859222,111.975105,"441701,441700", CN101281802,yangchun,阳春,CN,China,中国,guangdong,广东,yangjiang,阳江,22.169598,111.7905,441781, CN101281803,yangdong,阳东,CN,China,中国,guangdong,广东,yangjiang,阳江,21.864729,112.01127,441704, CN101281804,yangxi,阳西,CN,China,中国,guangdong,广东,yangjiang,阳江,21.75367,111.61755,441721, CN101281805,jiangcheng,江城,CN,China,中国,guangdong,广东,yangjiang,阳江,21.859182,111.96891,441702, CN101281901,jieyang,揭阳,CN,China,中国,guangdong,广东,jieyang,揭阳,23.543777,116.355736,"445201,445200", CN101281902,jiexi,揭西,CN,China,中国,guangdong,广东,jieyang,揭阳,23.4273,115.83871,445222, CN101281903,puning,普宁,CN,China,中国,guangdong,广东,jieyang,揭阳,23.29788,116.165085,445281, CN101281904,huilai,惠来,CN,China,中国,guangdong,广东,jieyang,揭阳,23.029835,116.29583,445224, CN101281905,jiedong,揭东,CN,China,中国,guangdong,广东,jieyang,揭阳,23.569887,116.41295,445203, CN101281906,rongcheng,榕城,CN,China,中国,guangdong,广东,jieyang,揭阳,23.535524,116.35705,445202, CN101282001,maoming,茂名,CN,China,中国,guangdong,广东,maoming,茂名,21.659752,110.91923,"440901,440900", CN101282002,gaozhou,高州,CN,China,中国,guangdong,广东,maoming,茂名,21.915154,110.85325,440981, CN101282003,huazhou,化州,CN,China,中国,guangdong,广东,maoming,茂名,21.654953,110.63839,440982, CN101282004,dianbai,电白,CN,China,中国,guangdong,广东,maoming,茂名,21.50722,111.00726,440904, CN101282005,xinyi,信宜,CN,China,中国,guangdong,广东,maoming,茂名,22.35268,110.94166,440983, CN101282007,maonan,茂南,CN,China,中国,guangdong,广东,maoming,茂名,21.660425,110.92054,440902, CN101282101,shanwei,汕尾,CN,China,中国,guangdong,广东,shanwei,汕尾,22.774485,115.364235,"441501,441500,441502", CN101282102,haifeng,海丰,CN,China,中国,guangdong,广东,shanwei,汕尾,22.971043,115.337326,441521, CN101282103,lufeng,陆丰,CN,China,中国,guangdong,广东,shanwei,汕尾,22.946104,115.6442,441581, CN101282104,luhe,陆河,CN,China,中国,guangdong,广东,shanwei,汕尾,23.302683,115.65756,441523, CN101290101,kunming,昆明,CN,China,中国,yunnan,云南,kunming,昆明,25.04061,102.71225,"530101,530100,530000", CN101290102,wuhua,五华,CN,China,中国,yunnan,云南,kunming,昆明,25.042166,102.704414,530102, CN101290103,dongchuan,东川,CN,China,中国,yunnan,云南,kunming,昆明,26.08349,103.182,530113, CN101290104,xundian,寻甸,CN,China,中国,yunnan,云南,kunming,昆明,25.559475,103.25759,530129, CN101290105,jinning,晋宁,CN,China,中国,yunnan,云南,kunming,昆明,24.666945,102.594986,530115, CN101290106,yiliang,宜良,CN,China,中国,yunnan,云南,kunming,昆明,24.918215,103.14599,530125, CN101290107,shilin,石林,CN,China,中国,yunnan,云南,kunming,昆明,24.754545,103.271965,530126, CN101290108,chenggong,呈贡,CN,China,中国,yunnan,云南,kunming,昆明,24.889275,102.801384,530114, CN101290109,fumin,富民,CN,China,中国,yunnan,云南,kunming,昆明,25.219667,102.49789,530124, CN101290110,songming,嵩明,CN,China,中国,yunnan,云南,kunming,昆明,25.335087,103.03878,530127, CN101290111,luquan,禄劝,CN,China,中国,yunnan,云南,kunming,昆明,25.556534,102.46905,530128, CN101290112,anning,安宁,CN,China,中国,yunnan,云南,kunming,昆明,24.921785,102.48554,530181, CN101290113,taihuashan,太华山,CN,China,中国,yunnan,云南,kunming,昆明,24.959295,102.62554,530112, CN101290114,panlong,盘龙,CN,China,中国,yunnan,云南,kunming,昆明,25.070238,102.72904,530103, CN101290115,guandu,官渡,CN,China,中国,yunnan,云南,kunming,昆明,25.021212,102.723434,530111, CN101290116,xishan,西山,CN,China,中国,yunnan,云南,kunming,昆明,25.02436,102.7059,530112, CN101290201,dali,大理,CN,China,中国,yunnan,云南,dali,大理,25.589449,100.22567,"532901,532900", CN101290202,yunlong,云龙,CN,China,中国,yunnan,云南,dali,大理,25.884954,99.3694,532929, CN101290203,yangbi,漾濞,CN,China,中国,yunnan,云南,dali,大理,25.669542,99.95797,532922, CN101290204,yongping,永平,CN,China,中国,yunnan,云南,dali,大理,25.46128,99.53354,532928, CN101290205,binchuan,宾川,CN,China,中国,yunnan,云南,dali,大理,25.825905,100.57896,532924, CN101290206,midu,弥渡,CN,China,中国,yunnan,云南,dali,大理,25.342594,100.49067,532925, CN101290207,xiangyun,祥云,CN,China,中国,yunnan,云南,dali,大理,25.477072,100.55402,532923, CN101290208,weishan,巍山,CN,China,中国,yunnan,云南,dali,大理,25.23091,100.30793,532927, CN101290209,jianchuan,剑川,CN,China,中国,yunnan,云南,dali,大理,26.530066,99.90588,532931, CN101290210,eryuan,洱源,CN,China,中国,yunnan,云南,dali,大理,26.111183,99.951706,532930, CN101290211,heqing,鹤庆,CN,China,中国,yunnan,云南,dali,大理,26.55839,100.17338,532932, CN101290212,nanjian,南涧,CN,China,中国,yunnan,云南,dali,大理,25.041279,100.518684,532926, CN101290301,honghe,红河,CN,China,中国,yunnan,云南,honghe,红河,23.366776,103.384186,"532500,532529", CN101290302,shiping,石屏,CN,China,中国,yunnan,云南,honghe,红河,23.712568,102.48447,532525, CN101290303,jianshui,建水,CN,China,中国,yunnan,云南,honghe,红河,23.618387,102.820496,532524, CN101290304,mile,弥勒,CN,China,中国,yunnan,云南,honghe,红河,24.40837,103.43699,532504, CN101290305,yuanyang,元阳,CN,China,中国,yunnan,云南,honghe,红河,23.219772,102.83706,532528, CN101290306,lvchun,绿春,CN,China,中国,yunnan,云南,honghe,红河,22.99352,102.39286,532531, CN101290307,kaiyuan,开远,CN,China,中国,yunnan,云南,honghe,红河,23.713833,103.25868,532502, CN101290308,gejiu,个旧,CN,China,中国,yunnan,云南,honghe,红河,23.360382,103.154755,532501, CN101290309,mengzi,蒙自,CN,China,中国,yunnan,云南,honghe,红河,23.366842,103.385,532503, CN101290310,pingbian,屏边,CN,China,中国,yunnan,云南,honghe,红河,22.987013,103.687225,532523, CN101290311,luxi,泸西,CN,China,中国,yunnan,云南,honghe,红河,24.532368,103.75962,532527, CN101290312,jinping,金平,CN,China,中国,yunnan,云南,honghe,红河,22.779982,103.228355,532530, CN101290313,hekou,河口,CN,China,中国,yunnan,云南,honghe,红河,22.507563,103.96159,532532, CN101290401,qujing,曲靖,CN,China,中国,yunnan,云南,qujing,曲靖,25.501556,103.79785,"530301,530300", CN101290402,zhanyi,沾益,CN,China,中国,yunnan,云南,qujing,曲靖,25.600878,103.81926,530303, CN101290403,luliang,陆良,CN,China,中国,yunnan,云南,qujing,曲靖,25.022879,103.655235,530322, CN101290404,fuyuan,富源,CN,China,中国,yunnan,云南,qujing,曲靖,25.67064,104.25692,530325, CN101290405,malong,马龙,CN,China,中国,yunnan,云南,qujing,曲靖,25.429451,103.57876,530321, CN101290406,shizong,师宗,CN,China,中国,yunnan,云南,qujing,曲靖,24.825682,103.993805,530323, CN101290407,luoping,罗平,CN,China,中国,yunnan,云南,qujing,曲靖,24.885708,104.309265,530324, CN101290408,huize,会泽,CN,China,中国,yunnan,云南,qujing,曲靖,26.41286,103.30004,530326, CN101290409,xuanwei,宣威,CN,China,中国,yunnan,云南,qujing,曲靖,26.227777,104.09554,530381, CN101290410,qilin,麒麟,CN,China,中国,yunnan,云南,qujing,曲靖,25.501268,103.79806,530302, CN101290501,baoshan,保山,CN,China,中国,yunnan,云南,baoshan,保山,25.111801,99.16713,"530501,530500", CN101290502,longyang,隆阳,CN,China,中国,yunnan,云南,baoshan,保山,25.112144,99.165825,530502, CN101290503,longling,龙陵,CN,China,中国,yunnan,云南,baoshan,保山,24.591911,98.693565,530523, CN101290504,sidian,施甸,CN,China,中国,yunnan,云南,baoshan,保山,24.730846,99.18376,530521, CN101290505,changning,昌宁,CN,China,中国,yunnan,云南,baoshan,保山,24.823662,99.61234,530524, CN101290506,tengchong,腾冲,CN,China,中国,yunnan,云南,baoshan,保山,25.01757,98.49729,530581, CN101290601,wenshan,文山,CN,China,中国,yunnan,云南,wenshan,文山,23.36951,104.24401,"532601,532600", CN101290602,xichou,西畴,CN,China,中国,yunnan,云南,wenshan,文山,23.437439,104.67571,532623, CN101290603,maguan,马关,CN,China,中国,yunnan,云南,wenshan,文山,23.011723,104.39862,532625, CN101290604,malipo,麻栗坡,CN,China,中国,yunnan,云南,wenshan,文山,23.124203,104.7019,532624, CN101290605,yanshan,砚山,CN,China,中国,yunnan,云南,wenshan,文山,23.6123,104.34399,532622, CN101290606,qiubei,丘北,CN,China,中国,yunnan,云南,wenshan,文山,24.040981,104.19437,532626, CN101290607,guangnan,广南,CN,China,中国,yunnan,云南,wenshan,文山,24.050272,105.05669,532627, CN101290608,funing,富宁,CN,China,中国,yunnan,云南,wenshan,文山,23.626493,105.62856,532628, CN101290701,yuxi,玉溪,CN,China,中国,yunnan,云南,yuxi,玉溪,24.35046,102.54391,"530401,530400", CN101290702,chengjiang,澄江,CN,China,中国,yunnan,云南,yuxi,玉溪,24.66968,102.91665,530422, CN101290703,jiangchuan,江川,CN,China,中国,yunnan,云南,yuxi,玉溪,24.291006,102.74984,530403, CN101290704,tonghai,通海,CN,China,中国,yunnan,云南,yuxi,玉溪,24.112206,102.76004,530423, CN101290705,huaning,华宁,CN,China,中国,yunnan,云南,yuxi,玉溪,24.189808,102.928986,530424, CN101290706,xinping,新平,CN,China,中国,yunnan,云南,yuxi,玉溪,24.0664,101.990906,530427, CN101290707,yimen,易门,CN,China,中国,yunnan,云南,yuxi,玉溪,24.669598,102.16211,530425, CN101290708,eshan,峨山,CN,China,中国,yunnan,云南,yuxi,玉溪,24.173256,102.40436,530426, CN101290709,yuanjiang,元江,CN,China,中国,yunnan,云南,yuxi,玉溪,23.597618,101.99966,530428, CN101290710,hongta,红塔,CN,China,中国,yunnan,云南,yuxi,玉溪,24.350754,102.543465,530402, CN101290801,chuxiong,楚雄,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.041988,101.54604,"532301,532300", CN101290802,dayao,大姚,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.722347,101.3236,532326, CN101290803,yuanmou,元谋,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.703314,101.870834,532328, CN101290804,yaoan,姚安,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.505404,101.238396,532325, CN101290805,mouding,牟定,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.31211,101.543045,532323, CN101290806,nanhua,南华,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.192408,101.274994,532324, CN101290807,wuding,武定,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.5301,102.406784,532329, CN101290808,lufeng,禄丰,CN,China,中国,yunnan,云南,chuxiong,楚雄,25.14327,102.07569,532331, CN101290809,shuangbai,双柏,CN,China,中国,yunnan,云南,chuxiong,楚雄,24.685095,101.63824,532322, CN101290810,yongren,永仁,CN,China,中国,yunnan,云南,chuxiong,楚雄,26.056316,101.67117,532327, CN101290901,puer,普洱,CN,China,中国,yunnan,云南,puer,普洱,22.77732,100.97234,"530801,530800", CN101290902,jinggu,景谷,CN,China,中国,yunnan,云南,puer,普洱,23.500278,100.70142,530824, CN101290903,jingdong,景东,CN,China,中国,yunnan,云南,puer,普洱,24.448523,100.84001,530823, CN101290904,lancang,澜沧,CN,China,中国,yunnan,云南,puer,普洱,22.553083,99.9312,530828, CN101290905,simao,思茅,CN,China,中国,yunnan,云南,puer,普洱,22.776594,100.97323,530802, CN101290906,mojiang,墨江,CN,China,中国,yunnan,云南,puer,普洱,23.428165,101.68761,530822, CN101290907,jiangcheng,江城,CN,China,中国,yunnan,云南,puer,普洱,22.58336,101.859146,530826, CN101290908,menglian,孟连,CN,China,中国,yunnan,云南,puer,普洱,22.325924,99.5854,530827, CN101290909,ximeng,西盟,CN,China,中国,yunnan,云南,puer,普洱,22.644423,99.594376,530829, CN101290911,zhenyuan,镇沅,CN,China,中国,yunnan,云南,puer,普洱,24.005713,101.10851,530825, CN101290912,ninger,宁洱,CN,China,中国,yunnan,云南,puer,普洱,23.062508,101.04524,530821, CN101291001,zhaotong,昭通,CN,China,中国,yunnan,云南,zhaotong,昭通,27.337,103.71722,"530601,530600", CN101291002,ludian,鲁甸,CN,China,中国,yunnan,云南,zhaotong,昭通,27.191637,103.54933,530621, CN101291003,yiliang,彝良,CN,China,中国,yunnan,云南,zhaotong,昭通,27.627424,104.04849,530628, CN101291004,zhenxiong,镇雄,CN,China,中国,yunnan,云南,zhaotong,昭通,27.436268,104.873055,530627, CN101291005,weixin,威信,CN,China,中国,yunnan,云南,zhaotong,昭通,27.843382,105.04869,530629, CN101291006,qiaojia,巧家,CN,China,中国,yunnan,云南,zhaotong,昭通,26.9117,102.92928,530622, CN101291007,suijiang,绥江,CN,China,中国,yunnan,云南,zhaotong,昭通,28.599953,103.9611,530626, CN101291008,yongshan,永善,CN,China,中国,yunnan,云南,zhaotong,昭通,28.231525,103.63732,530625, CN101291009,yanjin,盐津,CN,China,中国,yunnan,云南,zhaotong,昭通,28.106922,104.23506,530623, CN101291010,daguan,大关,CN,China,中国,yunnan,云南,zhaotong,昭通,27.747114,103.89161,530624, CN101291011,shuifu,水富,CN,China,中国,yunnan,云南,zhaotong,昭通,28.629688,104.415375,530630, CN101291012,zhaoyang,昭阳,CN,China,中国,yunnan,云南,zhaotong,昭通,27.336636,103.71727,530602, CN101291101,lincang,临沧,CN,China,中国,yunnan,云南,lincang,临沧,23.886566,100.08697,"530901,530900", CN101291102,cangyuan,沧源,CN,China,中国,yunnan,云南,lincang,临沧,23.146887,99.2474,530927, CN101291103,gengma,耿马,CN,China,中国,yunnan,云南,lincang,临沧,23.534578,99.4025,530926, CN101291104,shuangjiang,双江,CN,China,中国,yunnan,云南,lincang,临沧,23.477476,99.82442,530925, CN101291105,fengqing,凤庆,CN,China,中国,yunnan,云南,lincang,临沧,24.592737,99.91871,530921, CN101291106,yongde,永德,CN,China,中国,yunnan,云南,lincang,临沧,24.028158,99.25368,530923, CN101291107,yunxian,云县,CN,China,中国,yunnan,云南,lincang,临沧,24.439026,100.12563,530922, CN101291108,zhenkang,镇康,CN,China,中国,yunnan,云南,lincang,临沧,23.761415,98.82743,530924, CN101291109,linxiang,临翔,CN,China,中国,yunnan,云南,lincang,临沧,23.886562,100.08649,530902, CN101291201,nujiang,怒江,CN,China,中国,yunnan,云南,nujiang,怒江,25.850948,98.8543,533300, CN101291203,fugong,福贡,CN,China,中国,yunnan,云南,nujiang,怒江,26.902739,98.86742,533323, CN101291204,lanping,兰坪,CN,China,中国,yunnan,云南,nujiang,怒江,26.453838,99.42138,533325, CN101291205,lushui,泸水,CN,China,中国,yunnan,云南,nujiang,怒江,25.851143,98.854065,533301, CN101291207,gongshan,贡山,CN,China,中国,yunnan,云南,nujiang,怒江,27.738054,98.66614,533324, CN101291301,xianggelila,香格里拉,CN,China,中国,yunnan,云南,diqing,迪庆,27.825804,99.708664,533401, CN101291302,deqin,德钦,CN,China,中国,yunnan,云南,diqing,迪庆,28.483273,98.91506,533422, CN101291303,weixi,维西,CN,China,中国,yunnan,云南,diqing,迪庆,27.180948,99.286354,533423, CN101291305,diqing,迪庆,CN,China,中国,yunnan,云南,diqing,迪庆,27.826853,99.70647,533400, CN101291401,lijiang,丽江,CN,China,中国,yunnan,云南,lijiang,丽江,26.872108,100.233025,"530701,530700", CN101291402,yongsheng,永胜,CN,China,中国,yunnan,云南,lijiang,丽江,26.685623,100.7509,530722, CN101291403,huaping,华坪,CN,China,中国,yunnan,云南,lijiang,丽江,26.628834,101.2678,530723, CN101291404,ninglang,宁蒗,CN,China,中国,yunnan,云南,lijiang,丽江,27.281109,100.852425,530724, CN101291405,gucheng,古城,CN,China,中国,yunnan,云南,lijiang,丽江,26.872229,100.23441,530702, CN101291406,yulong,玉龙,CN,China,中国,yunnan,云南,lijiang,丽江,26.830593,100.23831,530721, CN101291501,dehong,德宏,CN,China,中国,yunnan,云南,dehong,德宏,24.436693,98.57836,533100, CN101291503,longchuan,陇川,CN,China,中国,yunnan,云南,dehong,德宏,24.184065,97.79444,533124, CN101291504,yingjiang,盈江,CN,China,中国,yunnan,云南,dehong,德宏,24.709541,97.93393,533123, CN101291506,ruili,瑞丽,CN,China,中国,yunnan,云南,dehong,德宏,24.010735,97.85588,533102, CN101291507,lianghe,梁河,CN,China,中国,yunnan,云南,dehong,德宏,24.80742,98.298195,533122, CN101291508,mangshi,芒市,CN,China,中国,yunnan,云南,dehong,德宏,24.436699,98.57761,533103, CN101291601,jinghong,景洪,CN,China,中国,yunnan,云南,xishuangbanna,西双版纳,22.002087,100.79795,532801, CN101291602,xishuangbanna,西双版纳,CN,China,中国,yunnan,云南,xishuangbanna,西双版纳,22.001724,100.79794,532800, CN101291603,menghai,勐海,CN,China,中国,yunnan,云南,xishuangbanna,西双版纳,21.955866,100.44829,532822, CN101291605,mengla,勐腊,CN,China,中国,yunnan,云南,xishuangbanna,西双版纳,21.479448,101.567055,532823, CN101300101,nanning,南宁,CN,China,中国,guangxi,广西,nanning,南宁,22.82402,108.32001,"450101,450100,450000", CN101300102,xingning,兴宁,CN,China,中国,guangxi,广西,nanning,南宁,22.819511,108.32019,450102, CN101300103,yongning,邕宁,CN,China,中国,guangxi,广西,nanning,南宁,22.756598,108.48425,450109, CN101300104,hengxian,横县,CN,China,中国,guangxi,广西,nanning,南宁,22.68743,109.27099,450127, CN101300105,longan,隆安,CN,China,中国,guangxi,广西,nanning,南宁,23.174763,107.68866,450123, CN101300106,mashan,马山,CN,China,中国,guangxi,广西,nanning,南宁,23.711758,108.172905,450124, CN101300107,shanglin,上林,CN,China,中国,guangxi,广西,nanning,南宁,23.431768,108.603935,450125, CN101300108,wuming,武鸣,CN,China,中国,guangxi,广西,nanning,南宁,23.157164,108.280716,450110, CN101300109,binyang,宾阳,CN,China,中国,guangxi,广西,nanning,南宁,23.216885,108.816734,450126, CN101300110,qingxiu,青秀,CN,China,中国,guangxi,广西,nanning,南宁,22.816614,108.346115,450103, CN101300111,jiangnan,江南,CN,China,中国,guangxi,广西,nanning,南宁,22.799593,108.31048,450105, CN101300112,xixiangtang,西乡塘,CN,China,中国,guangxi,广西,nanning,南宁,22.832779,108.3069,450107, CN101300113,liangqing,良庆,CN,China,中国,guangxi,广西,nanning,南宁,22.75909,108.322105,450108, CN101300201,chongzuo,崇左,CN,China,中国,guangxi,广西,chongzuo,崇左,22.404108,107.35393,"451401,451400", CN101300202,tiandeng,天等,CN,China,中国,guangxi,广西,chongzuo,崇左,23.082483,107.14244,451425, CN101300203,longzhou,龙州,CN,China,中国,guangxi,广西,chongzuo,崇左,22.343716,106.857506,451423, CN101300204,pingxiang,凭祥,CN,China,中国,guangxi,广西,chongzuo,崇左,22.108883,106.75904,451481, CN101300205,daxin,大新,CN,China,中国,guangxi,广西,chongzuo,崇左,22.833368,107.200806,451424, CN101300206,fusui,扶绥,CN,China,中国,guangxi,广西,chongzuo,崇左,22.63582,107.91153,451421, CN101300207,ningming,宁明,CN,China,中国,guangxi,广西,chongzuo,崇左,22.131353,107.06762,451422, CN101300208,jiangzhou,江州,CN,China,中国,guangxi,广西,chongzuo,崇左,22.40469,107.35445,451402, CN101300301,liuzhou,柳州,CN,China,中国,guangxi,广西,liuzhou,柳州,24.314617,109.411705,"450201,450200", CN101300302,liucheng,柳城,CN,China,中国,guangxi,广西,liuzhou,柳州,24.65512,109.24581,450222, CN101300303,chengzhong,城中,CN,China,中国,guangxi,广西,liuzhou,柳州,24.312325,109.41175,450202, CN101300304,luzhai,鹿寨,CN,China,中国,guangxi,广西,liuzhou,柳州,24.483404,109.74081,450223, CN101300305,liujiang,柳江,CN,China,中国,guangxi,广西,liuzhou,柳州,24.257511,109.3345,450206, CN101300306,rongan,融安,CN,China,中国,guangxi,广西,liuzhou,柳州,25.214703,109.40362,450224, CN101300307,rongshui,融水,CN,China,中国,guangxi,广西,liuzhou,柳州,25.068811,109.25275,450225, CN101300308,sanjiang,三江,CN,China,中国,guangxi,广西,liuzhou,柳州,25.78553,109.614845,450226, CN101300309,yufeng,鱼峰,CN,China,中国,guangxi,广西,liuzhou,柳州,24.303848,109.41537,450203, CN101300310,liunan,柳南,CN,China,中国,guangxi,广西,liuzhou,柳州,24.287012,109.395935,450204, CN101300311,liubei,柳北,CN,China,中国,guangxi,广西,liuzhou,柳州,24.359144,109.40658,450205, CN101300401,laibin,来宾,CN,China,中国,guangxi,广西,laibin,来宾,23.733767,109.229774,"451301,451300", CN101300402,xicheng,忻城,CN,China,中国,guangxi,广西,laibin,来宾,24.06478,108.66736,451321, CN101300403,jinxiu,金秀,CN,China,中国,guangxi,广西,laibin,来宾,24.134941,110.18855,451324, CN101300404,xiangzhou,象州,CN,China,中国,guangxi,广西,laibin,来宾,23.959824,109.684555,451322, CN101300405,wuxuan,武宣,CN,China,中国,guangxi,广西,laibin,来宾,23.604162,109.66287,451323, CN101300406,heshan,合山,CN,China,中国,guangxi,广西,laibin,来宾,23.81311,108.88858,451381, CN101300407,xingbin,兴宾,CN,China,中国,guangxi,广西,laibin,来宾,23.732925,109.23054,451302, CN101300501,guilin,桂林,CN,China,中国,guangxi,广西,guilin,桂林,25.274216,110.29912,"450301,450300", CN101300502,xiufeng,秀峰,CN,China,中国,guangxi,广西,guilin,桂林,25.278543,110.29244,450302, CN101300503,longsheng,龙胜,CN,China,中国,guangxi,广西,guilin,桂林,25.796429,110.00942,450328, CN101300504,yongfu,永福,CN,China,中国,guangxi,广西,guilin,桂林,24.986692,109.989204,450326, CN101300505,lingui,临桂,CN,China,中国,guangxi,广西,guilin,桂林,25.246258,110.20549,450312, CN101300506,xingan,兴安,CN,China,中国,guangxi,广西,guilin,桂林,25.609554,110.670784,450325, CN101300507,lingchuan,灵川,CN,China,中国,guangxi,广西,guilin,桂林,25.40854,110.325714,450323, CN101300508,quanzhou,全州,CN,China,中国,guangxi,广西,guilin,桂林,25.929897,111.07299,450324, CN101300509,guanyang,灌阳,CN,China,中国,guangxi,广西,guilin,桂林,25.489098,111.16025,450327, CN101300510,yangshuo,阳朔,CN,China,中国,guangxi,广西,guilin,桂林,24.77534,110.4947,450321, CN101300511,gongcheng,恭城,CN,China,中国,guangxi,广西,guilin,桂林,24.833612,110.82952,450332, CN101300512,pingle,平乐,CN,China,中国,guangxi,广西,guilin,桂林,24.632215,110.64282,450330, CN101300513,lipu,荔浦,CN,China,中国,guangxi,广西,guilin,桂林,24.497786,110.40015,450331, CN101300514,ziyuan,资源,CN,China,中国,guangxi,广西,guilin,桂林,26.0342,110.642586,450329, CN101300515,diecai,叠彩,CN,China,中国,guangxi,广西,guilin,桂林,25.301334,110.30078,450303, CN101300516,xiangshan,象山,CN,China,中国,guangxi,广西,guilin,桂林,25.261986,110.28488,450304, CN101300517,qixing,七星,CN,China,中国,guangxi,广西,guilin,桂林,25.25434,110.31757,450305, CN101300518,yanshan,雁山,CN,China,中国,guangxi,广西,guilin,桂林,25.077646,110.305664,450311, CN101300601,wuzhou,梧州,CN,China,中国,guangxi,广西,wuzhou,梧州,23.474804,111.29761,"450401,450400", CN101300602,tengxian,藤县,CN,China,中国,guangxi,广西,wuzhou,梧州,23.373962,110.93182,450422, CN101300603,wanxiu,万秀,CN,China,中国,guangxi,广西,wuzhou,梧州,23.471317,111.31582,450403, CN101300604,cangwu,苍梧,CN,China,中国,guangxi,广西,wuzhou,梧州,23.845097,111.54401,450421, CN101300605,mengshan,蒙山,CN,China,中国,guangxi,广西,wuzhou,梧州,24.19983,110.5226,450423, CN101300606,cenxi,岑溪,CN,China,中国,guangxi,广西,wuzhou,梧州,22.918406,110.998116,450481, CN101300607,changzhou,长洲,CN,China,中国,guangxi,广西,wuzhou,梧州,23.4777,111.27568,450405, CN101300608,longwei,龙圩,CN,China,中国,guangxi,广西,wuzhou,梧州,23.40996,111.24603,450406, CN101300701,hezhou,贺州,CN,China,中国,guangxi,广西,hezhou,贺州,24.41414,111.552055,"451101,451100", CN101300702,zhaoping,昭平,CN,China,中国,guangxi,广西,hezhou,贺州,24.172958,110.81087,451121, CN101300703,fuchuan,富川,CN,China,中国,guangxi,广西,hezhou,贺州,24.81896,111.27723,451123, CN101300704,zhongshan,钟山,CN,China,中国,guangxi,广西,hezhou,贺州,24.528566,111.30363,451122, CN101300705,babu,八步,CN,China,中国,guangxi,广西,hezhou,贺州,24.412445,111.551994,451102, CN101300706,pinggui,平桂,CN,China,中国,guangxi,广西,hezhou,贺州,24.417149,111.52402,451103, CN101300801,guigang,贵港,CN,China,中国,guangxi,广西,guigang,贵港,23.0936,109.60214,"450801,450800", CN101300802,guiping,桂平,CN,China,中国,guangxi,广西,guigang,贵港,23.382473,110.07467,450881, CN101300803,pingnan,平南,CN,China,中国,guangxi,广西,guigang,贵港,23.544546,110.397484,450821, CN101300804,gangbei,港北,CN,China,中国,guangxi,广西,guigang,贵港,23.107677,109.59481,450802, CN101300805,gangnan,港南,CN,China,中国,guangxi,广西,guigang,贵港,23.067516,109.60467,450803, CN101300806,tantang,覃塘,CN,China,中国,guangxi,广西,guigang,贵港,23.132814,109.415695,450804, CN101300901,yulin,玉林,CN,China,中国,guangxi,广西,yulin,玉林,22.63136,110.154396,"450901,450900", CN101300902,bobai,博白,CN,China,中国,guangxi,广西,yulin,玉林,22.271284,109.98,450923, CN101300903,beiliu,北流,CN,China,中国,guangxi,广西,yulin,玉林,22.701649,110.34805,450981, CN101300904,rongxian,容县,CN,China,中国,guangxi,广西,yulin,玉林,22.856436,110.55247,450921, CN101300905,luchuan,陆川,CN,China,中国,guangxi,广西,yulin,玉林,22.321054,110.26484,450922, CN101300906,xingye,兴业,CN,China,中国,guangxi,广西,yulin,玉林,22.74187,109.87777,450924, CN101300907,yuzhou,玉州,CN,China,中国,guangxi,广西,yulin,玉林,22.632132,110.154915,450902, CN101300908,fumian,福绵,CN,China,中国,guangxi,广西,yulin,玉林,22.58163,110.05415,450903, CN101301001,baise,百色,CN,China,中国,guangxi,广西,baise,百色,23.897741,106.61629,"451001,451000", CN101301002,napo,那坡,CN,China,中国,guangxi,广西,baise,百色,23.400785,105.83355,451026, CN101301003,tianyang,田阳,CN,China,中国,guangxi,广西,baise,百色,23.736078,106.90431,451021, CN101301004,debao,德保,CN,China,中国,guangxi,广西,baise,百色,23.321465,106.618164,451024, CN101301005,jingxi,靖西,CN,China,中国,guangxi,广西,baise,百色,23.134766,106.41755,451081, CN101301006,tiandong,田东,CN,China,中国,guangxi,广西,baise,百色,23.600445,107.12426,451022, CN101301007,pingguo,平果,CN,China,中国,guangxi,广西,baise,百色,23.320478,107.58041,451023, CN101301008,longlin,隆林,CN,China,中国,guangxi,广西,baise,百色,24.774319,105.34236,451031, CN101301009,xilin,西林,CN,China,中国,guangxi,广西,baise,百色,24.49204,105.095024,451030, CN101301010,leye,乐业,CN,China,中国,guangxi,广西,baise,百色,24.782204,106.55964,451028, CN101301011,lingyun,凌云,CN,China,中国,guangxi,广西,baise,百色,24.345642,106.56487,451027, CN101301012,tianlin,田林,CN,China,中国,guangxi,广西,baise,百色,24.290262,106.23505,451029, CN101301013,youjiang,右江,CN,China,中国,guangxi,广西,baise,百色,23.897675,106.61573,451002, CN101301101,qinzhou,钦州,CN,China,中国,guangxi,广西,qinzhou,钦州,21.967127,108.624176,"450701,450700", CN101301102,pubei,浦北,CN,China,中国,guangxi,广西,qinzhou,钦州,22.268335,109.55634,450722, CN101301103,lingshan,灵山,CN,China,中国,guangxi,广西,qinzhou,钦州,22.418041,109.293465,450721, CN101301104,qinnan,钦南,CN,China,中国,guangxi,广西,qinzhou,钦州,21.966808,108.62663,450702, CN101301105,qinbei,钦北,CN,China,中国,guangxi,广西,qinzhou,钦州,22.132761,108.44911,450703, CN101301201,hechi,河池,CN,China,中国,guangxi,广西,hechi,河池,24.695898,108.0621,"451201,451200", CN101301202,tiane,天峨,CN,China,中国,guangxi,广西,hechi,河池,24.985964,107.17494,451222, CN101301203,donglan,东兰,CN,China,中国,guangxi,广西,hechi,河池,24.509367,107.373695,451224, CN101301204,bama,巴马,CN,China,中国,guangxi,广西,hechi,河池,24.139538,107.25313,451227, CN101301205,huanjiang,环江,CN,China,中国,guangxi,广西,hechi,河池,24.827627,108.25867,451226, CN101301206,luocheng,罗城,CN,China,中国,guangxi,广西,hechi,河池,24.779327,108.90245,451225, CN101301207,yizhou,宜州,CN,China,中国,guangxi,广西,hechi,河池,24.492193,108.65397,451203, CN101301208,fengshan,凤山,CN,China,中国,guangxi,广西,hechi,河池,24.544561,107.04459,451223, CN101301209,nandan,南丹,CN,China,中国,guangxi,广西,hechi,河池,24.983192,107.54661,451221, CN101301210,andu,都安,CN,China,中国,guangxi,广西,hechi,河池,23.934963,108.10276,451228, CN101301211,dahua,大化,CN,China,中国,guangxi,广西,hechi,河池,23.739595,107.9945,451229, CN101301212,jinchengjiang,金城江,CN,China,中国,guangxi,广西,hechi,河池,24.695625,108.06213,451202, CN101301301,beihai,北海,CN,China,中国,guangxi,广西,beihai,北海,21.473343,109.119255,"450501,450500", CN101301302,hepu,合浦,CN,China,中国,guangxi,广西,beihai,北海,21.663553,109.20069,450521, CN101301303,weizhoudao,涠洲岛,CN,China,中国,guangxi,广西,beihai,北海,21.042196,109.1166,450502, CN101301304,haicheng,海城,CN,China,中国,guangxi,广西,beihai,北海,21.468443,109.10753,450502, CN101301305,yinhai,银海,CN,China,中国,guangxi,广西,beihai,北海,21.444908,109.118706,450503, CN101301306,tieshangang,铁山港,CN,China,中国,guangxi,广西,beihai,北海,21.5928,109.45058,450512, CN101301401,fangchenggang,防城港,CN,China,中国,guangxi,广西,fangchenggang,防城港,21.614632,108.345474,"450601,450600", CN101301402,shangsi,上思,CN,China,中国,guangxi,广西,fangchenggang,防城港,22.151423,107.98214,450621, CN101301403,dongxing,东兴,CN,China,中国,guangxi,广西,fangchenggang,防城港,21.541172,107.97017,450681, CN101301404,gangkou,港口,CN,China,中国,guangxi,广西,fangchenggang,防城港,21.614407,108.34628,450602, CN101301405,fangcheng,防城,CN,China,中国,guangxi,广西,fangchenggang,防城港,21.764757,108.35843,450603, CN101310101,haikou,海口,CN,China,中国,hainan,海南,haikou,海口,20.031971,110.33119,"460101,460100,460000", CN101310102,xiuying,秀英,CN,China,中国,hainan,海南,haikou,海口,20.008144,110.282394,460105, CN101310103,longhua,龙华,CN,China,中国,hainan,海南,haikou,海口,20.031027,110.330376,460106, CN101310104,qiongshan,琼山,CN,China,中国,hainan,海南,haikou,海口,20.00105,110.35472,460107, CN101310105,meilan,美兰,CN,China,中国,hainan,海南,haikou,海口,20.03074,110.35657,460108, CN101310201,sanya,三亚,CN,China,中国,hainan,海南,sanya,三亚,18.247871,109.50827,"460201,460200", CN101310202,dongfang,东方,CN,China,中国,hainan,海南,dongfang,东方,19.10198,108.653786,469007, CN101310203,lingao,临高,CN,China,中国,hainan,海南,lingao,临高,19.908293,109.6877,469024, CN101310204,chengmai,澄迈,CN,China,中国,hainan,海南,chengmai,澄迈,19.737095,110.00715,469023, CN101310205,danzhou,儋州,CN,China,中国,hainan,海南,zhanzhou,儋州,19.517487,109.57678,460400, CN101310206,changjiang,昌江,CN,China,中国,hainan,海南,changjiang,昌江,19.260967,109.05335,469026, CN101310207,baisha,白沙,CN,China,中国,hainan,海南,baisha,白沙,19.224585,109.45261,469025, CN101310208,qiongzhong,琼中,CN,China,中国,hainan,海南,qiongzhong,琼中,19.03557,109.84,469030, CN101310209,dingan,定安,CN,China,中国,hainan,海南,dingan,定安,19.684965,110.349236,469021, CN101310210,tunchang,屯昌,CN,China,中国,hainan,海南,tunchang,屯昌,19.362917,110.102776,469022, CN101310211,qionghai,琼海,CN,China,中国,hainan,海南,qionghai,琼海,19.246012,110.46678,469002, CN101310212,wenchang,文昌,CN,China,中国,hainan,海南,wenchang,文昌,19.612986,110.753975,469005, CN101310213,haitang,海棠,CN,China,中国,hainan,海南,sanya,三亚,18.407516,109.76078,460202, CN101310214,baoting,保亭,CN,China,中国,hainan,海南,baoting,保亭,18.636372,109.70245,469029, CN101310215,wanning,万宁,CN,China,中国,hainan,海南,wanning,万宁,18.796215,110.388794,469006, CN101310216,lingshui,陵水,CN,China,中国,hainan,海南,lingshui,陵水,18.505007,110.03722,469028, CN101310218,jiyang,吉阳,CN,China,中国,hainan,海南,sanya,三亚,18.247437,109.51208,460203, CN101310219,tianya,天涯,CN,China,中国,hainan,海南,sanya,三亚,18.24734,109.506355,460204, CN101310221,ledong,乐东,CN,China,中国,hainan,海南,ledong,乐东,18.74758,109.175446,469027, CN101310222,wuzhishan,五指山,CN,China,中国,hainan,海南,wuzhishan,五指山,18.77692,109.51666,469001, CN101310223,yazhou,崖州,CN,China,中国,hainan,海南,sanya,三亚,18.352192,109.17431,460205, CN101310301,sansha,三沙,CN,China,中国,hainan,海南,sansha,三沙,16.83104,112.34882,"460301,460300", CN101310302,xisha,西沙,CN,China,中国,hainan,海南,sansha,三沙,16.204546,111.792946,460321, CN101310303,zhongsha,中沙,CN,China,中国,hainan,海南,sansha,三沙,15.206118,118.16009,460323, CN101310304,nansha,南沙,CN,China,中国,hainan,海南,sansha,三沙,9.900863,115.530174,460322, CN101310305,huangyandao,黄岩岛,CN,China,中国,hainan,海南,sansha,三沙,15.198058,117.72041,460323, CN101320101,hongkong,香港,CN,China,中国,hongkong,香港,hongkong,香港,22.307,114.177,"810000,810001,810002,810003,810004,810005,810006,810008,810009,810010,810011,810012,810013,810014,810015,810016,810017", CN101320102,jiulong,九龙,CN,China,中国,hongkong,香港,hongkong,香港,22.312372,114.19305,810007, CN101320103,xinjie,新界,CN,China,中国,hongkong,香港,hongkong,香港,22.381,114.188,810018, CN101330101,macao,澳门,CN,China,中国,macao,澳门,macao,澳门,22.202,113.544,"820000,820001,820002,820003,820004,820005,820007", CN101330102,dangzidao,氹仔岛,CN,China,中国,macao,澳门,macao,澳门,22.202,113.544,820006, CN101330103,luhuandao,路环岛,CN,China,中国,macao,澳门,macao,澳门,22.202,113.544,820008, CN101340101,Taibei,台北,CN,China,中国,taiwan,台湾,taibei,台北,25.04,121.516,710000, CN101340102,taoyuan,桃园,CN,China,中国,taiwan,台湾,taibei,台北,24.998,121.306,710000, CN101340103,xinzhu,新竹,CN,China,中国,taiwan,台湾,taibei,台北,24.809,120.958,710000, CN101340104,yilan,宜兰,CN,China,中国,taiwan,台湾,taibei,台北,24.757,121.741,710000, CN101340201,gaoxiong,高雄,CN,China,中国,taiwan,台湾,gaoxiong,高雄,22.619,120.276,710000, CN101340202,jiayi,嘉义,CN,China,中国,taiwan,台湾,gaoxiong,高雄,23.487,120.441,710000, CN101340203,tainan,台南,CN,China,中国,taiwan,台湾,gaoxiong,高雄,23.004,120.2,710000, CN101340204,taidong,台东,CN,China,中国,taiwan,台湾,gaoxiong,高雄,22.764,121.151,710000, CN101340205,pingdong,屏东,CN,China,中国,taiwan,台湾,gaoxiong,高雄,22.682,120.485,710000, CN101340401,taizhong,台中,CN,China,中国,taiwan,台湾,taizhong,台中,24.144,120.67,710000, CN101340402,miaoli,苗栗,CN,China,中国,taiwan,台湾,taizhong,台中,24.558,120.812,710000, CN101340403,zhanghua,彰化,CN,China,中国,taiwan,台湾,taizhong,台中,24.077,120.535,710000, CN101340404,nantou,南投,CN,China,中国,taiwan,台湾,taizhong,台中,23.916,120.685,710000, CN101340405,hualian,花莲,CN,China,中国,taiwan,台湾,taizhong,台中,23.983,121.603,710000, CN101340406,yunlin,云林,CN,China,中国,taiwan,台湾,taizhong,台中,23.718,120.538,710000,indicator-china-weather/man/0000755000175000017500000000000013530705154014745 5ustar fengfengindicator-china-weather/man/indicator-china-weather.10000644000175000017500000000100613530705154021515 0ustar fengfeng.\" Hey, EMACS: -*- nroff -*- .TH INDICATOR-CHINA_WEATHER 1 "04 Sep 2018" .\" Please adjust this date whenever revising the manpage. .SH NAME indicator-china-weather \- Kylin Weather .SH SYNOPSIS .B indicator-china-weather .SH DESCRIPTION .B indicator-china-weather It is used to display weather information of China. .PP .SH SEE ALSO .BR indicator-china-weather (1), .br .SH AUTHOR indicator-china-weather was written by lixiang . .PP This manual page was written by lixiang . indicator-china-weather/COPYING0000644000175000017500000010451313530705154015231 0ustar fengfeng GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . indicator-china-weather/translations/0000755000175000017500000000000013644020472016712 5ustar fengfengindicator-china-weather/translations/indicator-china-weather_zh_CN.ts0000664000175000017500000006024613644002575025052 0ustar fengfeng AboutDialog Kylin Weather - About 麒麟天气 - 关于 Kylin Weather 麒麟天气 Code website: 代码托管: UbuntuKylin official website: 优麒麟官网: Developer's personal home page: 开发者个人主页: Real-time and three-day weather forecast information is obtained from Ubuntu Kylin weather server, which supports automatic positioning, multi-city switching and automatic data updating. 从麒麟天气服务器实时获取天气实况和三天天气预报,支持自动定位、多城市切换和天气自动更新。 Real-time and three-day weather forecast information is obtained from Ubuntu Kylin weather server, which supports multi-city switching and automatic data updating. 从麒麟天气服务器实时获取天气实况和三天天气预报,支持多城市切换和天气自动更新。 AirWidget aqi:%1 空气质量指数:%1 qlty:%1 空气质量:%1 main:%1 主要污染物:%1 pm25:%1 pm25:%1 pm10:%1 pm10:%1 no2:%1 二氧化氮:%1 so2:%1 二氧化硫:%1 co:%1 一氧化碳:%1 o3:%1 臭氧:%1 CityItemWidget Set as default 设为默认 %1 [Default] %1 [默认] CityWidget Add City 添加城市 Only 10 cities can be added at most! 最多只能添加10个城市! The city already exists! 该城市已存在! At least one city needs to be preserved! 至少需要保留一个城市! ForecastItemWidget Today 今天 ForecastWeatherWidget Life index 生活指数 IndexItemWidget comf 舒适度指数 drsg 穿衣指数 flu 感冒指数 sport 运动指数 trav 旅游指数 uv 紫外线指数 cw 洗车指数 air 空气指数 MainWindow Kylin Weather 麒麟天气 Refresh time 刷新时间 Network not connected 网络未连接 Getting data 正在获取数据 Incorrect access address 访问地址异常 Network error code:%1 网络错误代码:%1 Refresh time:Just updated 刷新时间:刚刚 Refresh time:%1 minute ago 刷新时间:%1 分钟之前 Refresh time:%1 minutes ago 刷新时间:%1 分钟之前 City 城市 Release time 发布时间 Weather Forecast 天气预报 Settings 设置 Kylin Weather - About 麒麟天气 - 关于 Exit 退出 Temperature:%1˚C Temperature:%1˚C 温度:%1˚C Relative humidity:%1 相对湿度:%1 Air quality:%1 空气质量:%1 Unknown 未知 Release time:%1 发布时间:%1 MaskWidget Loading... 正在加载... NetworkErrorWidget retry 重试 Current network exception, please check network settings 当前网络异常,请检查网络设置 NowWeatherWidget Humidity 湿度 Update failure 更新失败 Click to see details of air quality 点击查看空气质量详情 Static wind 静风 %1stage wind %1级风 Unknown 未知 QObject Monday 星期一 Tuesday 星期二 Wednesday 星期三 Thursday 星期四 Friday 星期五 Saturday 星期六 Sunday 星期日 comf 舒适度指数 drsg 穿衣指数 flu 感冒指数 sport 运动指数 trav 旅游指数 uv 紫外线指数 cw 洗车指数 air 空气污染扩散条件指数 Extremely cold 极寒 Cold and cold 奇寒 Severe cold 酷寒 Bitter cold 严寒 Deep cold 深寒 Very cold 大寒 Lesser cold 小寒 Mildly cold 轻寒 Slightly cold 微寒 Cold Warm and cool 温凉 Mild 温和 Warm 温暖 Hot Scorching hot 炎热 Boiling hot 酷热 Excessive heat 奇热 Extremely hot 极热 Kylin Weather (indication-china-weather) 麒麟天气 (国内天气插件) Kylin Weather (indicator-china-weather) 麒麟天气 (中国天气插件) SearchDialog Kylin Weather - Search 麒麟天气 - 查找城市 No Result 没有结果 SearchInputEdit Please input the city to search 请输入城市名查找 SearchTitleBar Kylin Weather - Search 麒麟天气 - 查找城市 SettingDialog Kylin Weather - Setting 麒麟天气 - 设置 Variable configuration 可变配置 Update frequency 更新周期 Background transparency 背景透明度 Fixed configuration 固定配置 Temperature standard 温度标准 Source of weather: heweather 天气来源:和风天气 Kylin Weather - Search 麒麟天气 - 查找城市 No Result 没有结果 Only 10 cities can be added at most! 最多只能添加10个城市! The city already exists! 该城市已存在! Source of weather 天气来源 SettingTitleBar Kylin Weather - Setting 麒麟天气 - 设置 Location Setting 地区设置 System Setting 系统设置 ToolTip Sunrise: %1 sunset: %2 日出: %1 日落: %2 Sunrise and sunset: %1 日出日落:%1 Moonrise: %1 moonset: %2 月升:%1 月降:%2 Moonrise and moonset: %1 月升月降:%1 Relative humidity:%1 相对湿度:%1 Precipitation:%1 mm 降水量:%1 mm Probability of precipitation:%1 降水概率:%1 Atmospheric pressure:%1 hPa 大气压强:%1 hPa UV intensity index:%1 紫外线强度指数:%1 Visibility:%1 km 能见度:%1 km Wind:%1 %2stage direction %3 speed %4 km/h 风:%1 %2级 风向 %3 风速 %4 km/h WeatherWorker Unknown 未知 indicator-china-weather/translations/indicator-china-weather_bo.ts0000664000175000017500000005213513644002575024447 0ustar fengfeng AboutDialog Kylin Weather - About Kylin Weather Code website: UbuntuKylin official website: Developer's personal home page: Real-time and three-day weather forecast information is obtained from Ubuntu Kylin weather server, which supports automatic positioning, multi-city switching and automatic data updating. AirWidget aqi:%1 qlty:%1 main:%1 pm25:%1 pm10:%1 no2:%1 so2:%1 co:%1 o3:%1 CityItemWidget Set as default %1 [Default] CityWidget Add City Only 10 cities can be added at most! The city already exists! At least one city needs to be preserved! ForecastItemWidget Today ForecastWeatherWidget Life index IndexItemWidget comf drsg flu sport trav uv cw air MainWindow Kylin Weather Refresh time Network not connected Getting data Incorrect access address Network error code:%1 Refresh time:Just updated Refresh time:%1 minute ago Refresh time:%1 minutes ago City Release time Weather Forecast Settings Kylin Weather - About Exit Temperature:%1˚C Relative humidity:%1 Air quality:%1 Unknown Release time:%1 MaskWidget Loading... NetworkErrorWidget retry Current network exception, please check network settings NowWeatherWidget Humidity Click to see details of air quality Static wind %1stage wind Unknown QObject Extremely cold Cold and cold Severe cold Bitter cold Deep cold Very cold Lesser cold Mildly cold Slightly cold Cold Warm and cool Mild Warm Hot Scorching hot Boiling hot Excessive heat Extremely hot SearchInputEdit Please input the city to search SearchTitleBar Kylin Weather - Search SettingDialog Kylin Weather - Setting Variable configuration Update frequency Background transparency Fixed configuration Temperature standard Source of weather: heweather Kylin Weather - Search No Result Only 10 cities can be added at most! The city already exists! SettingTitleBar Kylin Weather - Setting Location Setting System Setting ToolTip Sunrise: %1 sunset: %2 Sunrise and sunset: %1 Moonrise: %1 moonset: %2 Moonrise and moonset: %1 Relative humidity:%1 Precipitation:%1 mm Probability of precipitation:%1 Atmospheric pressure:%1 hPa UV intensity index:%1 Visibility:%1 km Wind:%1 %2stage direction %3 speed %4 km/h WeatherWorker Unknown indicator-china-weather/translations/generate_translations_pm.sh0000755000175000017500000000015613530705155024344 0ustar fengfeng#! /bin/bash ts_file_list=(`ls translations/*.ts`) for ts in "${ts_file_list[@]}" do lrelease "${ts}" done indicator-china-weather/indicator-china-weather.desktop0000644000175000017500000000057413530705154022264 0ustar fengfeng[Desktop Entry] Name=indicator-china-weather Name[zh_CN]=麒麟天气 Comment=Indicator applet for current weather conditions in China Comment[zh_CN]=中国实时天气 GenericName=China Weather Applet Keywords=weather,china Exec=/usr/bin/indicator-china-weather %u Icon=indicator-china-weather Terminal=false Type=Application X-GNOME-Autostart-Delay=10 Categories=GNOME;Utility; indicator-china-weather/indicator-china-weather.pro0000664000175000017500000001000313644002575021404 0ustar fengfeng#------------------------------------------------- # # Project created by QtCreator 2019-08-10T17:28:11 # #------------------------------------------------- QT += network isEqual(QT_MAJOR_VERSION, 5) { QT += widgets gui core dbus } TARGET = indicator-china-weather TEMPLATE = app target.source += $$TARGET target.path = /usr/bin !system($$PWD/translations/generate_translations_pm.sh): error("Failed to generate pm") qm_files.files = translations/*.qm qm_files.path = /usr/share/indicator-china-weather/translations/ icons.files += res/indicator-china-weather.png icons.path = /usr/share/pixmaps/ appdesktop.files += indicator-china-weather.desktop appdesktop.path = /usr/share/applications/ startdesktop.files += indicator-china-weather.desktop startdesktop.path = /etc/xdg/autostart/ INSTALLS += target icons qm_files appdesktop startdesktop # The following define makes your compiler emit warnings if you use # any feature of Qt which has been marked as deprecated (the exact warnings # depend on your compiler). Please consult the documentation of the # deprecated API in order to know how to port your code away from it. DEFINES += QT_DEPRECATED_WARNINGS # You can also make your code fail to compile if you use deprecated APIs. # In order to do so, uncomment the following line. # You can also select to disable deprecated APIs only up to a certain version of Qt. #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 CONFIG += c++14 CONFIG += qt warn_on CONFIG += release CONFIG += link_pkgconfig #PKGCONFIG += geoip LIBS += -lGeoIP QMAKE_CPPFLAGS *= $(shell dpkg-buildflags --get CPPFLAGS) QMAKE_CFLAGS *= $(shell dpkg-buildflags --get CFLAGS) QMAKE_CXXFLAGS *= $(shell dpkg-buildflags --get CXXFLAGS) QMAKE_LFLAGS *= $(shell dpkg-buildflags --get LDFLAGS) unix { UI_DIR = .ui MOC_DIR = .moc OBJECTS_DIR = .obj } SOURCES += src/main.cpp \ src/mainwindow.cpp \ src/titlebar.cpp \ src/contentwidget.cpp \ src/nowweatherwidget.cpp \ src/forecastweatherwidget.cpp \ src/translucentlabel.cpp \ src/forecastitemwidget.cpp \ src/tooltip.cpp \ src/indexitemwidget.cpp \ src/settingdialog.cpp \ src/settingtitlebar.cpp \ src/activebutton.cpp \ src/searchtitlebar.cpp \ src/searchinputedit.cpp \ src/searchview.cpp \ src/searchmodel.cpp \ src/searchdelegate.cpp \ src/locationworker.cpp \ src/citywidget.cpp \ src/citylistwidget.cpp \ src/cityitemwidget.cpp \ src/spinbox.cpp \ src/aboutdialog.cpp \ src/menuaction.cpp \ src/menuactiongroup.cpp \ src/global.cpp \ src/preferences.cpp \ src/weatherworker.cpp \ src/networkerrorwidget.cpp \ src/separator.cpp \ src/tipwidget.cpp \ src/texttip.cpp \ src/tipmodule.cpp \ src/promptwidget.cpp \ src/airwidget.cpp \ src/dbusadaptor.cpp \ src/automaticlocation.cpp \ src/maskwidget.cpp HEADERS += src/mainwindow.h \ src/titlebar.h \ src/contentwidget.h \ src/nowweatherwidget.h \ src/forecastweatherwidget.h \ src/translucentlabel.h \ src/forecastitemwidget.h \ src/tooltip.h \ src/indexitemwidget.h \ src/settingdialog.h \ src/settingtitlebar.h \ src/activebutton.h \ src/searchtitlebar.h \ src/searchinputedit.h \ src/searchview.h \ src/searchmodel.h \ src/searchdelegate.h \ src/data.h \ src/locationworker.h \ src/citywidget.h \ src/citylistwidget.h \ src/cityitemwidget.h \ src/spinbox.h \ src/aboutdialog.h \ src/menuaction.h \ src/menuactiongroup.h \ src/global.h \ src/preferences.h \ src/weatherworker.h \ src/networkerrorwidget.h \ src/separator.h \ src/tipwidget.h \ src/texttip.h \ src/tipmodule.h \ src/promptwidget.h \ src/airwidget.h \ src/dbusadaptor.h \ src/automaticlocation.h \ src/maskwidget.h RESOURCES += \ res.qrc TRANSLATIONS += \ translations/indicator-china-weather_zh_CN.ts \ translations/indicator-china-weather_bo.ts indicator-china-weather/res/0000755000175000017500000000000013644002575014766 5ustar fengfengindicator-china-weather/res/delete_hover_press.png0000664000175000017500000010155013643503425021360 0ustar fengfengPNG  IHDR Vu\ pHYs  iTXtXML:com.adobe.xmp Adobe Photoshop CC 2014 (Windows) 2014-12-03T16:31:02+08:00 2014-12-03T16:31:31+08:00 2014-12-03T16:31:31+08:00 image/png 3 069505EF8348FA35AF3BB18BDB09ADFE 07806C65C4910A3DBED1594FDEF99235 0F9DB8F9B3C645EFF27E01C60D3F3432 241ED29BCF42C6B6BBA88600B23F125B 24C1BE3A34E81603B62E933DF8A45E04 257C7629B7F41750316EA19492C65422 298AE66CDDA0676D497FD662CC46E789 2CD3E2E172E32A23791A7458751FD50E 2D49CC94BB3723FCCC22EFB712EAB720 2FBE92DEC98BA5F0C3F3E23C7078B780 33743A05C6E6532EC0B1712581186ECE 358206C7573FC1FFE4A5F9E5999CB595 36760943676D0FFBABD1E11760C9009F 371C9251ADA2EF74EA8EAD34A8EAB242 3B333EB24BC8F5E19741BB267FEC98B4 3B6D44491F9DED4B94BD58F461F37FCB 3F5BC49E27AF78CC3190A749F65E0163 4ABB7175DE4B07BAF86A23279167654A 4BD5C758D3D06A39CBBACFC3CFA34792 4F466871FA7C5D2CBC9EE072C5CA5864 4F89C5CF4A3F2D476B60E939171F684D 504D76B74938B491EB6B067232EFFC41 51BD2AB38F4023E650CC00937FFDE48A 52F09DE3C1E8ACF272BD84B37AB1D87E 53E36C31D071914B7BE4C4F5796F9389 604350187D18A4970E7FC597D2F0A5AA 63087EAEBFC92B4F0A9CEDA020A7618D 6ACCB24275BD1BE78022AE063DA6073E 6EA6F2C20DDFA1CF96272D4DAB888B87 71C29B0895D1963EB7FE853A2CFA684A 73E907B19D895C7623D27D2384D97040 7C3AA90B8556B64CBE9D28EFC5F978D2 7FF4250D27CC1031E2530119C3171AB8 88451B5338AC1BDA3ACE7DA4E8058E11 890B1F3B327CCABD3C7034B167F38F5F 8C3CF085C262AE25F4A0A42D59BDD57A 8E912E694DCD59363B3F4B31DB3BCD35 9127D7520084DF27C836C2028CEB6E44 9BE9A189A40C66D2863CDDA550550285 9E72C6CB84A74DBB76AB0A27FE93F368 A067B8957FADDAD37CC313943DF049D6 A206FA618FBDF04BACAF0165D9621212 A473C2C9FF48C81F2852D3DD7167502B A907F48C2F43385ADC26A7530309EBB0 C237A0DA372A9D9CA8CC8B54B87ADA51 C271AA80C12C938D99C5A935933349F0 C526A4954A8EFB9C3D650E6E0277CCA8 CCEB9531E6B9A8923D10D2CF94B8EFC0 D2A51371CBD3BEF0EB2CA7A3C5B28A7F DB642544BD4335E4970EA86F0215C79F E6AF6CCA6224B98996A12A8A5B81E43E EBB4992A8B3645C35422D58834E532D7 ECE9EE73C1DF76FEE75B006943E411E3 ECFD9E473C1FCA3768337BECF00FD5D2 EE5F6B13980FB69B75DDE567C488B979 EE7580CAA349FD7D681D43075D5A0967 EF70ED6A534AA45A720426BE6A2F997D F590D937E6DD9183BDD272A16DFAC4DE F66863DA2FF0DCC3F1EF5ACA0E1BDE64 F757401DAC87D729C6522CD005D58C01 FDD4CDCD34A4D21D62D693E67B508FF8 adobe:docid:photoshop:042ec86a-52dd-11dc-bb7f-87d1a9f02b07 adobe:docid:photoshop:12edae61-fad8-11dc-a186-e0f9726909ef adobe:docid:photoshop:13ee9aa4-2aef-11dd-8d81-f27eb6d1002b adobe:docid:photoshop:24787f49-1441-11de-9fe4-bb120c50ae92 adobe:docid:photoshop:283bf7e9-2771-11de-a5f7-e5f9c0721d92 adobe:docid:photoshop:3c04fd19-7ab7-11e4-9582-b77f12e67c36 adobe:docid:photoshop:56e07c61-8f58-11dc-b747-dea064cdda7e adobe:docid:photoshop:5bb25fcb-00d5-11dc-8160-fe3baaea4664 adobe:docid:photoshop:6cc72dd4-c122-11da-9ea0-b410217bc604 adobe:docid:photoshop:74161145-7472-11e4-8b3f-d51ff019451e adobe:docid:photoshop:8b1a6435-1e48-11dc-a2d3-f7dac7540843 adobe:docid:photoshop:9d010613-7a9b-11e4-9582-b77f12e67c36 adobe:docid:photoshop:a8c0d594-1c60-11d8-a6cb-cdfe702634db adobe:docid:photoshop:ac3d7b75-e2d1-11de-9b84-fe9a494e706c adobe:docid:photoshop:bf1b42ff-0880-11d7-8913-9a827c8293a3 uuid:029F5456D042DD11AD43D811C1D79D3C uuid:19501508E2EF11DD8BECCB6B4552BEA7 uuid:240F7696E09BDF118943EC7D2E89C0BA uuid:32EB3BAD51E2DC118B9A98C8A0DD8215 uuid:32FF073A8473DE119FF6A9CB3A0D71C3 uuid:40B56E81A826DE11A84EB468E816AF14 uuid:483C8D6A09AEDD119ACB862DDB389351 uuid:4E28CD0BE5B0DE11ACB3A4B3E9D809A9 uuid:57D4D63C0537E011A635EBE38230B841 uuid:5B63012BB648DC11BFB9A185CAE90DF0 uuid:5D0DD3FDB305DF118437EB3D37DD64AD uuid:5D7B3DE51812DF119185DEA6EC2AA3B4 uuid:5EBC258199EAE11189C2DA1478C8C9F2 uuid:6638BA84298FDC119AC3F8EEB4E2F957 uuid:72BAB42AB8F511DBA0B48960EE8E18AC uuid:8418B9F71B19DE11ACD1FD0D79D1C48C uuid:90ADF7D5398A11DF86119436A17CB227 uuid:926b359d-9e47-431d-8750-bf845c6577cd uuid:A9F65486BA09DB11A9D28E7F7AED63E9 uuid:B540613DD2F2DE11B3B3E6BCC2B65928 uuid:B850031313CDDD119358D3EBF934974E uuid:B8D9606773E5DE119A42B7888D73246C uuid:D3A7CD576D58DE1193F18641FDF63895 uuid:D67DE9CEB841DC11A4C59F1431608251 uuid:D840B8FF2B1DDF118724A858B8454A8C uuid:DA1984435469DE11B944F4166779DEBA uuid:DC91D24E8353DE119534A3EB376DEA2D uuid:F4297B0AD6A7E0119054AEDAB6503153 xmp.did:01801174072068118F62EB2ADE46D273 xmp.did:01801174072068119109F305646EB57D xmp.did:018011740720681197A5DAF2583A0A4B xmp.did:0180117407206811A084BF28FE3D9E61 xmp.did:0180117407206811AB08E8E8EE3F0289 xmp.did:0180117407206811B2F4B2F0A10807CB xmp.did:0180117407206811BF9BEF79D798C243 xmp.did:02801174072068118A6DE8CC51352B1F xmp.did:02801174072068119109C65A70401340 xmp.did:03801174072068118A6DD9F43BB7607D xmp.did:038011740720681192B0DD1EFA0D88E6 xmp.did:038011740720681197A5AC1352A6FF54 xmp.did:048011740720681192B0EA0E866BB245 xmp.did:0580117407206811871FDCFA14F2CA87 xmp.did:05801174072068118F62AAC437B0569A xmp.did:058011740720681192B0B61BEB8C9F01 xmp.did:0580117407206811B2F4B2F0A10807CB xmp.did:068011740720681192B0E5094E035523 xmp.did:075DA6E20346E011A104DBD60A09BA11 xmp.did:0796F2FF2720681192B0C5B632F0693B xmp.did:0C6F3843B4FBE11188B1E8BDD53D90A9 xmp.did:0D74CB50B52AE111BCE2DE904F7749CA xmp.did:1354FDEAAC82E111BD62DB4BA1684708 xmp.did:135DA95E51C3E2119485CD76840DA0EC xmp.did:1368CA0A960BE311AE4682675B3E9A53 xmp.did:139A55462279E011B7C7BB0FA8A40C9E xmp.did:1568CA0A960BE311AE4682675B3E9A53 xmp.did:1B23937A3BA3E111A268C964C1959643 xmp.did:1B4CBCBCC095E01189CBD2A609D6972A xmp.did:1BFAE6F7A693E311AB2FAB742EAEDB5A xmp.did:1C8D9B97EDBADF119C55BA856872B7D0 xmp.did:1CC9394224F1E111B9ABE35673A80283 xmp.did:1D13CF493192E311AB2FAB742EAEDB5A xmp.did:23A33346BFA5E311A033D41CADCA8C69 xmp.did:26BFE5D14170DF11B28DA0B9164D66BE xmp.did:26CABB49C55BE2118543DC3ABC338EA4 xmp.did:2ACF258E325DE011A1A5CBD15F1C5D8A xmp.did:2C850DB82F4FE1118594EC5F608593F5 xmp.did:306C746ED2F7E111BD53CF94664BEBEA xmp.did:32013191-910b-f740-8ee4-e119302ccc18 xmp.did:333B092E0D68E1119633ACFF4D03496F xmp.did:375A0B3A38BDE211A0C7EEE8095E5998 xmp.did:3921327295FCE0119420D55B9D0DF2C6 xmp.did:3D21327295FCE0119420D55B9D0DF2C6 xmp.did:3EC156D08B26E311BD3FFBB138CA7E52 xmp.did:3EFA54B0F40FE111AA83ECCF63439026 xmp.did:40B5B13CC0D4E211A0F8A40ED08A7AE6 xmp.did:42D823653257E3118A7FB4DE32CAE3EE xmp.did:43B4CBE681D7E011A526BE08355470F9 xmp.did:4463A16AF341E311AA6AFF46E3A32C35 xmp.did:4476E48D7058E2119E5C9DC2D893986B xmp.did:49629383A75FE211BE5FD8DC69EDD003 xmp.did:4962B478AE93E311AB2FAB742EAEDB5A xmp.did:4B7A12ADF2FFE2119701C3E8E2CBA32A xmp.did:4B7D2A10B996E3119120D50133417628 xmp.did:50B031CCDB98E111BE19B05E1DE1772C xmp.did:51656EC5AD6CE1118573CC62542EF1EF xmp.did:5178A250EF6CE1118573CC62542EF1EF xmp.did:5284CF5C414EE1119A17DD19DF39F556 xmp.did:57A1C52DF060E111AA529252B4C34ED0 xmp.did:5E5CA02C6240E311A887D012E70C1E3F xmp.did:60271FD08F5FE211BE5FD8DC69EDD003 xmp.did:63D21F2E2241E111AEBED233B2B2BBDB xmp.did:6B27B4BD813ADF11BCAAEC6C5DC8AB8A xmp.did:6CF7F57A4588E0118E50D901036E7887 xmp.did:6EE15AA5BFEEE2118F9FEFF9352EDC83 xmp.did:7151EC9085C3E2119485CD76840DA0EC xmp.did:71dc56e5-e055-5b49-b8ac-08fc19339e47 xmp.did:763FC8C77EBAE111BC5594B8606FADF2 xmp.did:76A59B64F891E311AB2FAB742EAEDB5A xmp.did:78A59B64F891E311AB2FAB742EAEDB5A xmp.did:7C80FADD8B3111E2AB5AD75D2661B19B xmp.did:8279DFDDC2F7E111BD53CF94664BEBEA xmp.did:8579DFDDC2F7E111BD53CF94664BEBEA xmp.did:8A947733EA7FE211B026CA3D93CC6880 xmp.did:8B76D4190ACFE11194F189B929F1E3EB xmp.did:8CFA6888BDC9E0118A1894B66E94A91C xmp.did:8D76D4190ACFE11194F189B929F1E3EB xmp.did:90917B61A549E211AAF7D9B03FBC388E xmp.did:94C3EA66E545E3119876F23BD28AAF4A xmp.did:98FC0E0C89A0E111B29BBC3C38868882 xmp.did:99C2BF9AC2D0E011A663A3A0F235368B xmp.did:9C8BE9970400E3119701C3E8E2CBA32A xmp.did:9D1BECD81020681197A5F6F85A622253 xmp.did:9DA8EFF9299DE311B712B7EA38C9FEA8 xmp.did:9c93a680-24f1-c646-aeab-38faf49b228a xmp.did:A0774BA2B769E111A342FC9D7726AB8E xmp.did:A19B51187538E1119063BF48A3C51EAA xmp.did:A2571EBE69B3E11185C7C82D704336BF xmp.did:A51240381845E311B81F8883B98D3C93 xmp.did:A5175DB2056FE111B3D9A81555F1D5A8 xmp.did:A55DB8C3B87211E187B5B933E8DA83E6 xmp.did:A9371036BFF8E1119CC59C0B4EC1EC35 xmp.did:AA12E978F292E311AB2FAB742EAEDB5A xmp.did:AB33C7EFF402E311A629B015FE29A947 xmp.did:AB50521FAFC5E111BC42E26A02820592 xmp.did:ACA7AD64B2AEE1119D79D7B7DE21DF0F xmp.did:AD01ED608B95E111888CF2658EF196E5 xmp.did:AF014875B853E1118EE7E574C350A586 xmp.did:AF7B4A72262068119457B94B0A19120E xmp.did:B28F2993E3FBE1119665ED16B1B03E0D xmp.did:B2B3E4AC3A35E311A3A5CE099DA58CE0 xmp.did:B391F8CD01B511E1A18F97A8D26A3B0F xmp.did:B518C9D19CA7E1118964B3B7AF8C1D56 xmp.did:B6F845E40EC7E1119971B8D30BF0408F xmp.did:BB0F008D11206811BD35B6F06AAF40D7 xmp.did:C28274CEB193E311AB2FAB742EAEDB5A xmp.did:C408B747B4AEE1119D79D7B7DE21DF0F xmp.did:C5CC15B57300E211BB248AC6E3141EFE xmp.did:C79E1726F3CEE11187A5CC8B39C8961F xmp.did:CE153DAB66206811994C9B7F51AE0063 xmp.did:CE9D2C6B6D9EE111A0588B64C21F9F9E xmp.did:D16203B18A55E111AADBA99AFB78CE20 xmp.did:D2E52B51C2D0E111915AB30308CEF0D1 xmp.did:D3258C3318206811B83DC55B43B113F3 xmp.did:D5958034BB27E2118651A73FF7A01E2C xmp.did:D79444774A2068118DBBACDD367EC38B xmp.did:DAFF29841D2068118C14A2A33B576E28 xmp.did:DBD8F5553405E1119D46E5E691047188 xmp.did:DBEECEEDEB2EE111866E89F51FF7D987 xmp.did:DDE729E5E5D9E111B4E6E7878EF63782 xmp.did:E02D6D537529E2119580E8B1B8F1BF12 xmp.did:E15A30AD30F6E111A7FEDB98811DAC38 xmp.did:E15C8DF98B5AE011BBCFC6EA4EB55BFA xmp.did:E1721EF2DB2068119109B10BB0D0BCC2 xmp.did:E2969E558F2FE1119012DA2503D34408 xmp.did:E55A30AD30F6E111A7FEDB98811DAC38 xmp.did:E948F03ED04BE111A679A954F3256CC1 xmp.did:EE58428735206811822AC7D293D6ADD7 xmp.did:EF0E269367B1E1119D8AAF35690FFC21 xmp.did:EF17D91D3220681192B08B72887FDC11 xmp.did:F0EC54C91EF0E011BF318C473C42BF32 xmp.did:F75D918A1120681192B08BEE29C75DD2 xmp.did:F77F117407206811806C9A138DB80561 xmp.did:F77F1174072068119109F8FE27718D5A xmp.did:F77F11740720681192B0B6CBB13A5218 xmp.did:F77F117407206811AAF1F360BEADB6C0 xmp.did:F77F117407206811B04FBAAF7885AEEF xmp.did:F77F117407206811BC5391310951E999 xmp.did:F87F1174072068118AE4FE3FBF51A176 xmp.did:F97F1174072068119A7F833586C6F350 xmp.did:FA7F1174072068119109D4895471EB7A xmp.did:FB7F117407206811871F92CFDFF7440C xmp.did:FB7F1174072068119109C00FC3634517 xmp.did:FBC4D2040A2068119109CC642C44EC0C xmp.did:FC7F1174072068119109C00FC3634517 xmp.did:FD4D6DFF08C0E111A568F02E3B31897D xmp.did:FE7F1174072068119109FEAFD0139520 xmp.did:d56cdb07-1084-41c8-8beb-7032281b987f xmp.did:fb8297f3-4588-8e46-994c-581eb3803745 xmp.iid:dbe71356-5270-f24f-92c1-30ceeb0c7ad0 adobe:docid:photoshop:c4aa85b0-7ac6-11e4-9582-b77f12e67c36 xmp.did:43f19c41-da79-f349-b6cb-07ca22ff4f9e created xmp.iid:43f19c41-da79-f349-b6cb-07ca22ff4f9e 2014-12-03T16:31:02+08:00 Adobe Photoshop CC 2014 (Windows) saved xmp.iid:dbe71356-5270-f24f-92c1-30ceeb0c7ad0 2014-12-03T16:31:31+08:00 Adobe Photoshop CC 2014 (Windows) / 1 720000/10000 720000/10000 2 65535 12 12  cHRMz%u0`:o_F"IDATxڌj0ElS& B3zc֏g:D(K!dHFB) zA}OGOu]K`~' [;1V`Ƙ7 Fmmu.ov}O_F@^ z]E=E4opxBPfH0 ,"?16#0EaY!0Jsh9x5JKǟc=,ˎ.,r.i>I){f)Kk ܀x ZV=hIENDB`indicator-china-weather/res/city_background.png0000664000175000017500000010333613643503425020652 0ustar fengfengPNG  IHDR4ktEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp /P IDATx[vnIC/:>u)v*Ӂ(=ag9_]?_/?GB|-~D|>_OaotKk>G/'~y_s~?ϏS_|~\#~yr~x |?g~k>c}'A7+xW/4|ߧy5r_Ou;>-.^gHvgݿY)?{Ng%jނfݜ_|,>|}P}<+o`{?|oWw?UBgY3`YVQ8+]5Ο+_rYv '}}yoϪ8?b牻\]Wtt<_/=gW߿~>9/ςIYgeX-$ή]y~=[V"oKwsIy'@=s67wsR|>8ys/bUFV\}L)6PKWsuRsQS~o; f UgK5۰s+쾼J8:;k [y~K,J>%i"g+6=gC_z5'fK_Os-\ugWW`E (2M.>G=cl!U0v7U^ q%;ΩN)t=Tq>B8uQr)]>cv~wY5Ec{B *s{+u[&{of1^>e;Tt܅V9S};ͧҙF?s Lv@/kYa޷ O\8mM5Cf)9[ WU5Lqtb+es<f0ymɩ2O7NDk򻥿 Ď&r&1xpZx|p{ۤ" \U(f'(rtRŊ0 ܰ̚Xv/&sujOjxM<%dSwyZh#@78 k-S9ռE4QdlB 3Dlf>mQ0Erol( ܜ_@1K ( Q|^8ȓЉTY}S^jo޷ʢ~U}llihd?7I~M# Jⱞډ^!`ւ}|I9p.d 3i0g{8 d-G@ѝAVƳ~_("]S;hT09…W\hV 2j[3p$G[CW j|ݭqΊ*T>9{hdlຳ_}Bgԃabڇ\KuoqYއ&[4g 6 qm@Lk-ڮs=;,j 6glaLvP~ǹ,zOVԍps.h T鮦I'@2!g}pϻQCw>Lawwc Cq櫦ʸ>ʜ0N^H׽ wfTQhuQ&qLq. p3tjA1Wׄ°g_lsyfq$Gҡ{>XACmۜ+ka"< 1= F)k B:r369s؀b5/Cߛ,VyOAfip88\ } $ˑSЬzvܧ8i&ut0yA>Ȑ0e!1L:!ζZS8(N4A&BG[U)e`y9&Fvzu+gOvmȰ1 _;IwusNfjj8lA(P(T 84bQQEr@=ݤub0]T5 teم8yZS28DžK> ' R?8 *ENq$|<CE9kB;wPg}XXG S~tPF&j2- Dhs-ki+'^, 40ejLc k!_<8_I@nV jsL(1%ꨴ, %Uu1A9N?6vPf@ #i7= qyI(I D86Gc2i^ENM^BZv*8\^?TBruӟ^*Efl7'懶hTICJ] V}ۅݶi&##ՙ!2%s^~P&\%W dAHz)(a_|D3rUR-yA?PeU1LhR ~%&Gs:+"Gp$EldEkoeu"ÏwT5۷t( ]#ƐQ:ڂF |ZO΢vS#;%Tɮrj}6 ȁMK;*m4*5J4 cLAȎGo,jd_J_1\7GRFLexN/Z=7hI&& jh^.:%J։/>~WηtiDFW<ɪK5&q8sq׬V}t"7dpTMWгQρ&L(O$߫}kDk9x?w'whc4~ Sf7egmi23 1 ho@ No 7k|-@aC Xlj9@Tc,25'8ǦݢI7_ZָQx4 l^f\BL2J&_!KT8 .uK}܌~C95rsG}EsoN`k!_K7Ś9)nj}Sl3 64tg= wQQ!+YU4{ >bbzxH@bO=B `59JH3_P=๿cX%@J֗`!8/7o}BRi}_Pz|V0Ս ni_^c~h%\.pǼkmz}/B wS"~2+m`Q{ۮV6]Jw5r3> 8n29ǔF; 6qoi .?H~Tȼ)h#pA|Pp쒃{>3:#(AQȑjE#..<`!P0'MPA>)C=&X{6|1 #gAkO(9ɥ!~Vd4pi_^Tх0h-O8 jy!zȗ1AlQjf: :=lZv)sJ+vh>qDcyI?ܫg{NAŷH5a)1W:/ߓej%(PTv䝾ojǰ<[ׇkopkϖh~Եqڪ2ü-xЌC#(aA szFDOڿKAThKڻ%r|YY&Q^+[6Z yHȥw 7gьjۅ>1;O2U Y |&(frXfUh8E8ղd)A#(]c<+0AZ%8jpFU!axRh[1q_5bv<ˍN4j9 R#a,`O8ͻ@W1Wh# IS:uyЅIJ<12)UB#c78C)CJ`iS^a%{M~ٳQll_mk!u  3#@у ^w>Z-_1ςp z]ՓZnnPOKϓ jxlΊ*zIQrh>mn}IyNpIּ!VjxE\|.H)Ҋ*5r4/r]bMVJ9Y%$ QKm'=%R6~D0Dh>LVX, >0J{dwڇ35mExE'}S heG98xF >iGTYftL¡_^z Q4ҽ/)A.$`boU [C⏨w˷G}6F;Vb! Zbr3JaWrk0-t5BqgZnW?2ewE (G">e;6w7/ٌÀazp:U^HWD\3f_8aDQ}HI:\}8*Hi 8mgs u3{͖E0; 4f?f 5gڀ" G95krY5bV&F-4#Vfe .D a$~;p'2(vz\Xwز c*ThRUx&hHcG 3IhyþR4HIAZ[^ʦ1tX\v"{,c> c> \psz4sh-e+b6?j|g!}!Wݢ@jI9w?Wag8 !|ݑ V"!pU6Ymp" m^G*GÛ \֢[(G;~qW@[uԶ{'@ U+[ϼHzW&=~06~}g2a5U0,kn@uKGz%+A L&)N@5bks'Ӹu$U C#'6ٌlObF,hpkܕ`зVxd;qA9.Lq)-^C(VhsSZ*Il iNf`2L#e9ڂıxq)&OtYmhxT,J5 ?dU:pS㫇M"ftdsNZ6VZ_|, l/ێ5@](Rw{Hͣr8ӨNp=*`?S+Wg8I,evLãVl]jq~c==]k֩Y@n]@lƒui;Y9"a\aC3I 2_*oa= &#]؜N^Z5қ >/M(3VW?=↕FI+9q4Y59j!uE,]VA6zj4p%AM)7gHg ~`*z JYbP+*22Ż]^ 8c]r4[囲2֔NU*k0"OhE=+[T f jay5 Ra>FfaV8{>="9ЂK,Jx14o} /Z\ `# ?g_91 ]CBzWNϽi۶?(.%M2)yRt ^)dub5"c'Ů}/Ha ̹)r~IS5ISUlPXQVsrz;]|s _$_KᩖU<~a:.rr¯UMR;G(Bk6$",HUj+_z%W?U c\lNW%3* /MĢhn%w]ҨD24$3AYg\AX5!k"_va;`?h="BO~]]k3W/`8To!=Z7#FN^,*_X t١mL|IA*2 ^Eҩ\;|Xh 5H@ּF[5lnTFJzE> RNO~4gX(^3Lhpc1,,>Xq镯,ǘ!un7k`iy^1FU3b;."/|X/q筢p[*1S0>ϖNGc,#=os"U/jW/En`*.)/Ud* =!ܜXIT*0"lL *R~.ػ4ڨRZ0e@@ihN 4Ч#4e$T3źyG U'M5O7 <ÀC|)6!x$e=cb_p}i߲E}9T]s|0y %9ά,8,[NZi眥8Wmi;#8 rd,ו?dP5ŀgnnm \DY^?6}G-Az}'& ;٥-+kH/״1|=P%Γ_ 2C7v޿no<Ҫ`M)3I_3a|z_^.TMXzjϿ-n>yg:.E O#tbi-5R ()ǹ~..BNo _=ȝZyAm@4dN;@C̆zp%T F(CX_ւG;{/>֘^ljcbL:v/7 ]0[_9vL2,V-rs|w~AL4B#% 78UHS{l}pd]Rղܿl?ݠ_s7.UbM Y}"'m=pe TS R4 1Ƕ:ꡭ4+_@T %Qk>We^7Z]Ћ-Эyj鶶|ڎub\oryDt?c*bn?ԏ6~0_|i{#MڜdAN"]!?6#eڜG!}T']Lxi,rأnUAW2\Ük(tTkܱ/Avt\Yeyևc&K֦MK[SZ^ NzvWf1=1sr%u8+i 3,:AZA9\*`A% >vV!Nk .^KIW%W9؎ k枮A{x=rujھ9I<*̴cMzj?SKL^Ͼ +\e H–wQ]z8M\+Sh&|@h!g W=pG x/M=Sw{jaiݵSy|vhK39k1VjNe k83Gu|'}AcQA\TZ]k&\EUGu ;uájva 9f1vOp8PC}*->>Q%3 :t(^ym3pl=ҋ-xr$j3Xdd,?]h̰ɰ&ԵE@:;8> 랝jD]tZ ζ`5(`OPƙT3+Gb!ۧmTwR{5NbZaL8} Ɖ)6〹<6$7 YjEn-<;T=ET }VjUZ/.˪e!4Tsvfr3C.%_;0>;@TYsq Z9+ [IgPD>.-ֵcF$^:QV|aAd9o+j}[Q][2d- D'?%PN#2tL_/4ƽrI&jnɡ7,O# Fi3񭖟lg{^N_[?+,_%x=\75Zy=R8@7l~ϐ!\/O/_I tu s .M޾Ze%!D׎ng8&ftio SH RӢyFxQtCxӗmN\y߭fm7{[klmx-ݺ>#dh+k_0z&,!%@m"_|iBՃC_NT q|o;hUMeыb](Goz>jQ]/l9QnNԊ7!oAeЃgC,&Y&[94 =e f],m~@o5NŦ_xF{:t["R1kmcܠKEn l7H-/ \ke~Xo[.x v12h\lޮmj=Zh`ÖsIc|`jDY l@}"W(b` Aؓuf}UȆSgiX\Q 3͙~VJA?q<%gx/ܯ=P?iE秓cK +ls]:k^w82 ފ8i2c>=y c:L'=d~>nEI@6`1匯9Bfuܺl<au0 ׺3pI7G8'7 7HJ%Sxp0:+Dlj?6'L >\zk:UJ_NP[Qz!=Chjx vMD&_ f)~&]<#`<-ϙ9H~h]K}k᬴eg ~30HCr#ΘzifTƿ!㿡x=u=묫IzE =پ{9P=3Z/Χ6}lp^aXh{+lo-+b _jC P6TU8bYyR{VM?Jvj c/v=dTC2|lJCd ⢴8K]cu^*wqn>EN1 49ڵ8?MV"#SPyjGc3L`5dȕd{99gLڳ虤=uP:t04o~]J41ʨǭq?%--M_33LU9aKW={)M5㡡OZ1~sW~Tw<.D8~ O"^kr/B@ʾzhM{t[on:\lޮWF2 =>mV>Abdy)C gNz}܎5GOz-22WhTåFpdg#.#38m?1>͞ݥwTQH"l{~3:j-W+-XY6z;ge,LbE;k[,W4ϝ%d˧ۼVPAѝtCܴ_]s#5UH5ttp{$GWyhp A)vq@ `RO(Yqhg93֦orcHXg dYWKO<^AQl6wд!\d\`};jeMVtQ7:3ReTPyΫ+&bb ~j$?ge8v]<!5ʣ`Vb`\910T\x9,YU "9+)R.!8(-qMa@a n{lLb9m&VS{ N 4:ڍN&ߑa;[0OPci4hCn5&a؄sr-S9sMIYiLFX.ZN)fWC@~G;::q)MEIHaoM;_B8u|} PBSDt$:y^\}Қ;@&W?wzx{;=sh|N)3QL)-1lۄU{` rXF}SYkBj /\Q5ifxmN1,v G%v[S(B6~qZKfoc @5?Dx+E3R0.ȩ#ب/ΈriqyE-E5_nj iƼR+ o'E#S+aI 0X\PD܅wm7g&nDX զg4}knGvLWdŐY.:vjH]"bїܦ͊};hpܟcm(Չ+sK{n0~- ø dc1-{vQI$q E*5»*9EQ.QsQ-,:b[RUw%U\ ֖'m:[Fp  P1]kLFEɃ0 Xa4e.cPOc~ݙqN`gXe&~ag,fxgn(j޸(qޮVLu&8[; K"4Y!Xzw̤݀7RW* [Y;!#~2yɵ$NvR;Bf+}@TKi5t¾U8ZgcS*m"1$R>% @EsYl#fo N~tJ%t>Q%e==}) ǰ5ҡi)r2gD?#ReIs-*a];YpOw!5 EC!>U@s+6MEA㐿8'P~6/ڏ0?f2&#Hn~k!Q05V`AڴO+ؤť,,y 7<).b>PLMhpR;&Hz:C> xMBC|.HLA9b%ͽKk&;6뵉јq>R/VAC: IE:Wi!krjXl&G"p`qpU!y}[Q+sNjg)km1n{zk/~:#Pfx[T3hw]uއave3n\XV\%0Aw6 cE9vu_ޭ]NMs0'PdOiÄw}iT 3~$]RxeSn{ďub]>!tj۔}ڴ=Szd` c$'Sgz(w6Y]Id^e:3IV\hּ44Gp\+Z1E̺~ӬRYkz"ǖ>ɺqGGG<I3S z\rӾܮ^J,҇BdJJI!8]J1%G]鵲%הFZ .w}>6.|us3Ld2=k2aC &-<+.br׀uceJK7D(*G++ͧ<*ZG(vRahC8`YiͼjxM6}~8TwPFbS!K:z'83G³5YH܋N}tKNXvC xh暊Wgh 6v᳨0҈u{瀥]񵝎f"!~cEE8O# RhCV /274\KmZ\^Mh)8q3᧓pʹiaI$] ʉ7RdtV;[hOO pe=G6s J]8OK60o_}.j},>:[x3e3Oœb$C>nݿSV3 v.1=ht6#(u{'6ik5;gDaBRh )Gz5y )3͍8%h$צ?ǽP1f}ΨuaP&D5,+9=Hm選#0Kw(g)բo⳴{Hm!P&Pp{Êo?{h8#lUc|yӝ}g)343aDڏ-Zz۶Xy3_-U4Zěo1 Nۆ7fW$'cdchcw!x4;՜&p$,9wtHl^aa~Hv똘[ &:El*#) ULvrl.cx) 0qʾ&ahKZXS:.2BY2Lش'a2{{SNL|*;9S̸S̾3bkJ:i\ ;Lt nҏT\V `]㙬5i`9y3z60ɝ4c `f I{̰KAN8)yI AAgvoS \ؔiF#ӽKf܎vN@0C;g+I_+CӒ&ˌw[#gRmgplZBê( . S73=)Uwi)|ӥkrd E#Ea$}sZi0܉6a6}τfrg"C&#$\gZ}yYlf@ ɛۡk:ljW^ubFOM^srʋUD8(y8L4E˪ 7U*:ulk<]-U-o5( \ˏF䟞)gȤaМz'jX(k6"$E9tI^hHI)ϡ`l!_a]=w@aX,ߑv귮8Z닸3}ZrdNUͷ rW |#=EZGTƠKO o@Yܦ%::TO;qHޒqB *nn tTZtTW-n3Ƴzk4Sr&)/)LMLʓ/khv-5r$臇BT;ΙBJȋNF_ Tz:m9DZ%J\@6:&#qDZG4 V}_e4A.fڬri<"Ȕo"qJׇɩlVj35Z1I3ŨOq̀RXT5&إSa!0%O렇e2< l1唱q;h=L}<аAgX`G9-\lVڬX9q4T/ \4s<'Mh">J+mWDFBF?~Ɉ'@y!g7i)װIj9lQFm^3Mj"X ~xJ2,QIzQ}ǯ,G~Y }8^𴋤 xzQ;?X?pf,vF=84;4D B#{ݦ+PsI YtP9'w>q=ISATnuݏ紥tpU"QAjA~w LOCOׂk [1)Ҳ[\A@H=R%1AMe q o)5-DrXnd""Y,DC]&mZs托cUW[T-ODzX L4vlpԲ{\"*`>#=MW¶&_"fcZ#T\L>2M <؉No.#{B:7s5sNk&֜PϚ bS+xKz__qpRo$mi<1F$4@6&ֲz ӹR af47S(*ǠdMvv@_NIhr40rѢ&DK|wG8ESL!F7[g Pc [dC]쥢.s+(+Pd"t24Zl3v>VG."!Eeg,9 WqD- 75"gV zi/5m0 'qa`S"֕ %x,ƴ<@Kq]0i/Y#B9)_V cb_+:##kvʠr:.әA>$-kiIgTImyE83uɂjb/fû'A;/aʈ7MQfG&LZ[F%[z۩b6.ZF5)&Udz\HA;%2Ǥ[ (}z,9S>q Zx1Ƶ$ӑ@^[i7ˋ Ft8M&%2%/ #iiJ !dUPl)pO d%Dڥ&%b+LGl ;_t1vP2v0oJj+_ѿ٨ʙS"3k-J>ˌ["Ek`}v tAq|M7ɿ"4~QsAiK)hwO7oěFH޲ϿB.ɂXnVK0MOu>`)o z}͔.R̯=S±^$v _)Q~ak2/5⧋ -S iӫK W6CA=491ҵF]c6Osenvs6'+l@ ?У)%~1|6XQKǩ&C473P;N)w\%5Dc|CwIz:xE uy`%TB҈gpTI {ye*wWBZMaN]'.Ho;"į!DIJuy]z) 8iɮjxt֑́oJ%[8,m!9 JC@xNh}Za8hos$Z زKB7ڪdՉzTymyR=G9O\Rs(+@QTSޫ42UO أ<4J'$$.5(ЌZ3}P-x18C9bh wV^zyjG9;saи+Q]r|t7WX?(o Qã2rvZ;"^ֵuu]G+-ޔJϮ T-Eb۳O(ZIa6/$ z*Z-?ӌ.$&@EKH6q8lBץP"de&ftvyt29fI=80 rۼjH}%}-e;[ -HH!XY]*5];O;џqȅ{En ~ج-F77 bԆ6Yg2-~z;!9pgHX*ˍJb )wPA}=)xטA>^t'.S#r K1OF d #`?dCT-j)hjj2ESԡlI--.M>H?b`dP74ӭl:! &1n0mƤ6a팭$h=yZt8:s5®L~jDL ؊aΣ1ZECm%j|/#kaRzBl8WZHT{3aSmɵאFap>i w-%O^  9ÔeVԄ"0+1'+McN( MS3UHz܋Pc>"-s\п3`Q![48 .l6'Cp"u#~%"^d9e׸G<gk#na?8xxHu>zO%>* -BR>̥έ!i$BCrĞI+%Bt*f#i w\*oL+W!4 * BZm(8dgYw(?W_ef.rw  ( zJe6(^9 l.D|GSoy^!w9 5H_/gBc.8%DBJ%>Ku[:9WԝUkv?i @8F A }yjَS±*%ee:>W]`2Aw\znu$SHPw*sbPVoޛ+ad|" `!=t]!"٨CR0t0}"]}b25.c<("[|}kU\ʘzL8vvRc|̒Tw~&T/ 3}Ã>dn_I\)R:1EJQhUQď-v}81ym3?WӼ/5o}>I7[l+Ꮧ$S= YWg p>{~,>~At#-ҿ]a??P&P}4Vኬ獦 /ͱ#eu#Y]3x[]j*:miU=m[AHGIȪ(*VP<א]eW4m]GmyG>OF שq""h qa<(Gq6fc:fFIb2clvF Wm2-OE?Lc-QeVfz[@1"ZMyGJ#DD:Eȇ֫CHr:3im8X^G++⋒ Vlj]a x :3|&jyE731n%xfUl'18mv貆gwnĨ ԅ{YrzKޜukx&<$m2@\y9f)4a(s^"k~ͫO峡E&pz :$=BY'} ǘ,Z*@-d*;K{#O˾9 RbPtLiJDEuǚF`M Ģ3d?:Q`!E % uTeR4Y7fQIcraL }ߏm1:#߾֡Hiǩf׵ɍm/V5x]z8}P!+<-Y'酇}-)'&'@p7T !JYƑ0|Y )RN?r& #0H;ǡ73 W?l0r!9ï 돣B.na|DOɯX#meI ? gOi'pj^#G_xK=KɃs?Z`W֧6Wv I1KW|}4}/MQxYE\ܟ?۽x8m8te䅢HV*E0s(5~U.LwۊNy埿xbIqnB'qe=>W?~kW/xźJ?Kx\+Aq#ILIJLXmE҅#y}'[.޳`]ML]ae{V! c*]0Jw"yy_^M^z\wvKmgzJwGHz+dRǐPnHڏ[;G Y{{?2kדx5֟5ygnzhGj_)|4hS)IK^ok{V-ŕo?[A n/&qdc0g䡏 w 2]U0:f.&} d1׉bȗ d ;t{n3gV>I/OG<(eu'k[0 }gӔz2qgQzz=B2ueAI{iyRy(63EtyKt|zkm) վrlԞI5ȸ| ks< /V\diz4?|/S}zl6H~6.%RYyÎ %{8K/50D=$-<[tK?+z!\lU+O cVO}Ć^GR69z׹_-;\VݚAGz߮eyps_/0S6+cDߑQ ;~C ҭr!"#r6DWN4 ǁ^m=X&aٚӨ}cۧLpข[YcR5h/+Kl=<:bNc({<t+)Ӗ ׀ # ̴'\q],m(kʅ6y^sखGS(?}X̯>`kdܟy1t^pz#o0qDb|;I.P{LZCJ\^S(92˾ 5vm]> }=Ӧ+V.kWo7OX5ӦW g8PHv²sҷ}Y^+=jVj)5.ト&!zu]|:kA/[#b_Ypx Ù/SL3xEf7{w3m .n(\4ɮ԰=7Ec:vng/g^tKpQn٭)Oo,q|G*/ϭDHgc5zr=7m̭_n~;&Ɏ,*(/ҷv$W sjQ>ӗ/§,lvof醘9z6l"o,=!Q_=(QRkD Y~Fio{zتCDd~mb<?ڭ/K-eLح:=qnKl$kufgrGë_eEgWe%]h>Fg>Q#]8kNZCO2ᣯ ?w'%Cb˱gݮClח/+ 4sњ_^~?ruu=[uvl;-c6ݜu$źJfS/n<*Ts,_w^=tݜv_=,M^#V;:~=..湮Mz,̱E_l/F1_.>ۉy}XA+}rAލ}쩶"/E0gO OK3r6`K]qO'9n+?(C[~>Q Z?be){YA]1\{7^=4whW?ʱr/'t* .պَ֭㣝<xͲLs4JpWk#[#VZRg!{ea6|ݥQ`zk{Of3Y3w /I*qc8G~o?֖Q*'kI%",KF㨧O3}kdD~v: 4=ߟ9QD=+86j@J1-Wwwy/OA"|[?,+Zi}F~(Ӛg»j?f׎X_5ӥ n?b [UVtKbĵTtGKTz#tt=KyW YsGͯ(up&I[dMו ktN;Oyz|)nRmVAq[Χyg]9F@YvsĪϽ.{:9'KYhnH _uC!G)e@z端ҍ)F1m xwC[~2; ? j-ɲH{xuDh45z,:x9?w+WB=\]4(W.a\w4Nq=3WkR(ąxCw,%}ɟD)(܅v9s}o|ϙ|52Λ_Y:{wKү\G2eU6dr_(m jhoO\,ߋNrƼk~k8# =+L#+Ka1&ʓW vr3Fug|d?ߧF؉ϦUe]4YvzrЧ:QZvϓz3.7h٧9,硌Y ?s4<ٺ8̾?PkE| ȮxL(QY뫽Nhr$wCgϻx=?cX6Š 5s`]^6!b?}\,Z.,3%)gMx+{ϫ[Ԃ~dQtk>{Y/DLh>C+~-Qn֣{k(Ktq>uqu-. ̘w7g,SROO{G\\~Q x^2e)jTŮCFkEN6ب_KT^J^5'NwXso=z#}sW^}.aoھ}9DP%B:N3Y/F:QdU7{{1}w8{?,so0euyUzKf٧Op,9G/S5G`YW.}O\=Fe~@]P]l$jޑVf]HTi£=k b6#WIDATxb? m F$a0$)Fb% Ԍa1z4DK|fYS:-RIENDB`indicator-china-weather/res/network_warn.png0000664000175000017500000000367013643503425020223 0ustar fengfengPNG  IHDR-,F1?tEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp yIDATx̙[HQUaKeeŇ(C|( *L^ Ң)Ih!4ȻnY~̙s'{ " ,AX@ `&P F6E/%8T#Ԣ3)DNT5E dŠd \g@e"Q4AXs(Fp 2 8"R$2(A ,p7TS ߂B"-:] Ϯ  !HU7+: 3%C0 `>kU<'^a6*qn[Da4h1bOdAmny|bz} ~>u KDyJEjEիWuH]>xЫIok|d?:*"`.r>6 @H^A"dA:E+}Zzw޻\җepPDw.y9pPMK\tS`Q"p*>nNα۝w?jpZԀIU.JW0mlNdCN隷POˁjX$AnS SWjPq|asTLyJƛ#naBG rZ9b" afKe^rE9L7W fCܦ14Se+X֏ʷE4azv[KdA Nլk+ㅄRR*hWeh}hrH1]HXbCgC&&EtDb)d? &GK-Wr쒜J1zj\%9: Y\wEBL:u "\ 1<L?=zQv]CWө*3|Y,wAkLg?VuIENDB`indicator-china-weather/res/about_normal.png0000664000175000017500000000050413643503425020156 0ustar fengfengPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڬSQ0 H@:s0pPO8X% a8=z]V8[45iScF~v8,(cD0 0* '*pa#R¿Mon>"*AjC|13 ֩w$rfCl tl,pbB HJr@ X^QA2ƒc޷ZI0~H[ڨ;.c=_W ^IENDB`indicator-china-weather/res/temp.png0000664000175000017500000003533213643503425016450 0ustar fengfengPNG  IHDR+>} pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:6AA90633A1EE11E8A573D8C0C35E1D7A xmp.iid:28f0f99f-cfcb-d14b-ab84-44848bad762f xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:28f0f99f-cfcb-d14b-ab84-44848bad762f 2018-08-17T15:59:30+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:23:19+08:00 2018-08-17T15:59:30+08:00 2018-08-17T15:59:30+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 8 16  cHRMz%u0`:o_FIDATxڔ @E_ HR7ob)KIb=/3wQ j'Nb}hx%P% hX.M(vZ)XzQ9Wou1lg |r .;p @ ui_+4;ldr4?IENDB`indicator-china-weather/res/location_bg_hover.png0000664000175000017500000000211413643503425021156 0ustar fengfengPNG  IHDREQptEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp rn^IDATxر E #_1-pW2s\/T [2؃ (P@ (Pa#;qr-zcIENDB`indicator-china-weather/res/move.gif0000664000175000017500000000126613643503425016431 0ustar fengfengGIF89a!@EqJu4a֯v)ں`@lۼ\DžeZƂWŀ1_N[vsLq! NETSCAPE2.0!!,bpZ,Hd":R88 z Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:01+08:00 2018-08-17T11:31:01+08:00 image/png 3 xmp.iid:82db9722-74c2-cb41-82ef-5d96016c18bb xmp.did:82db9722-74c2-cb41-82ef-5d96016c18bb xmp.did:82db9722-74c2-cb41-82ef-5d96016c18bb created xmp.iid:82db9722-74c2-cb41-82ef-5d96016c18bb 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Z cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/202.png0000644000175000017500000003666113530705155021763 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:54+08:00 2018-08-17T11:30:54+08:00 image/png 3 xmp.iid:bded5f03-0e4d-5543-89e6-eefc850dd9cc xmp.did:bded5f03-0e4d-5543-89e6-eefc850dd9cc xmp.did:bded5f03-0e4d-5543-89e6-eefc850dd9cc created xmp.iid:bded5f03-0e4d-5543-89e6-eefc850dd9cc 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 PWr? cHRMz%u0`:o_FIDATxHofD0nD0LhdFF ~q|E r9[}7c @(!@""@(!@"@-@Q+A7 cNZ1wb9;s18 %k#O4d/Ld|0& ;8XXy%GkӲ1aF K 1[ۉEʎ5,7 FɣL> Ų<@ޯ^|/}S1&3eUh03۩V}+27ݲ*a "̕8lRfbS{Ģ&7wz Iab7P2뒘։&*ڡuCH^EFu*vr:{ɶb3Մ5m-j Zh ,VxͥzgXϏv\&Su};Iŧ3Te\SŭnY LUֺ=O$#\H Xmm;Tz1de6wFn˸xӳbMj;WYڱ`=F CYm]O|:6 z2a1G{Uc@}E["=v4$(]Ƀm)N`NI oO%>.*7PlRQTF5e wI^oDPV'z Mtc^)VHȃ׈}&T[<^l,~EkS ww+ӫ,ωNەu#cȏBxӲQ9+%7ֽ\PoZO[NFlQsDmŸ, }6 yprR"ӂ^\XS*cx~ K~ emuGn}Q?Ub H-w .k/ ˴˪JU?@tm[)q*,q.O|SE_~|oQdr(+ohAT[DHBz WgL5-Q HJ"{OM$䭌>O{D}\Lq^^J+dL1хSF']RP?@(!@""S+/;'sgz~Oྉ/yMnPhYÝ.X! Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:50+08:00 2018-08-17T11:30:50+08:00 image/png 3 xmp.iid:c257a58b-3ace-3046-a26f-895ee1ea3f20 xmp.did:c257a58b-3ace-3046-a26f-895ee1ea3f20 xmp.did:c257a58b-3ace-3046-a26f-895ee1ea3f20 created xmp.iid:c257a58b-3ace-3046-a26f-895ee1ea3f20 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 [S cHRMz%u0`:o_F7IDATx\qJ=f3`#0#v+G$G mb#2`Z6`3s1PJB QBJPB((%D(! %D Q(!0`Xێ{59w9gzTB"0*Y/<ɐ~ ` 5+~x"h1f[dɌ1+c|Ď>o?\1&9bfI 5okd$9  fSF$QuN¿;3,;3OٱW.YEK[Z*m. 2Be!)K B!&ˈoɘJZR4F^UUHeTB&1KBQ<:YN 02JZHR:'dnIreW!<[L$sD#!19•u~%ImzȌ BNRUZErꖹ%-h:V*x^Ga1ӿ -€D]"FjqnJ(:NQ]*hrAp`mcM@RqJVcFJq0Ui 4\+J>v@Qc?E$6PT3<JeJgnvJ+kHm+-6I;:P_hmڏZ. IB6l׭۝R))pǂ |5zȌ$(ۂfkz@eM>DdsM=#YY$-$$dQ9h#u0[Tt{*|mQLbCHҬ[~wV'㴏陂аcEY=m9wª|6@v\!)͠w޳g w"o{H]|"Y Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:10+08:00 2018-08-17T11:31:10+08:00 image/png 3 xmp.iid:b8cfea9e-990b-8545-a6e5-66b9e5f87088 xmp.did:b8cfea9e-990b-8545-a6e5-66b9e5f87088 xmp.did:b8cfea9e-990b-8545-a6e5-66b9e5f87088 created xmp.iid:b8cfea9e-990b-8545-a6e5-66b9e5f87088 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 G cHRMz%u0`:o_FIDATx]q8}pWA T`+\ T@H J+g' j 'c 9G"@!"!!D!BD!BDBO @.>EDDF/ce gd<X!~:B"~H!3A5AQcSV{sdɅot3 D# \!fss>+㜯8{ލ=||7d#}12SVmd &Aq%gJa *K5'"rẇ439x66aldLٗTUe--NxV)[B>\wBtW`$uv/b%ޛYPY+MDqxp=j-j,PPMhmJ%ZSAOJj>˔[jb%{zmjMwH Q?JR:)/ā֥!}=>Ee>_g| %"`pDBreAdC&&B)}.bB}[rT}ʨ7) J}Z/2^CKW0Z *CI׉Єɗ9y' e1!Q V2mp~mҙs<(ZN)[ B"F9B);ۻ'HS4V+#U(݉]3A[n;XX:ۛ Rf0̐M8OBo}F #O>+1JBC':D?\c|.Vz9[Yv6&f2LuouVfcm;t?`-m<@nW+y'SL!- cRM8(C]&R{!U :8QIBqD#B;&H>*5΋F.цhΆݦ"S!I! !BDB BDB B'7kgqL/IENDB`indicator-china-weather/res/weather_icons/white/305.png0000644000175000017500000003635313530705155021765 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:05+08:00 2018-08-17T11:31:05+08:00 image/png 3 xmp.iid:78193372-4b01-8849-a39a-f2a4cd94efcd xmp.did:78193372-4b01-8849-a39a-f2a4cd94efcd xmp.did:78193372-4b01-8849-a39a-f2a4cd94efcd created xmp.iid:78193372-4b01-8849-a39a-f2a4cd94efcd 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_F?IDATxu0orq'3A B'2n& dL@QDɶĽl}~II\!@ Gl@(!@""@(t&H~!7P)[7s o\E` @' :0w}ZL@2 CW bg)[c*V\O"}~K 2@ S Mϱ#!ĐX !6^!R{Mݦόl!p> eerWq!Wd.\)=[ƽi_ !F'ysjb)]c{v}q.Kw hmwTr11c0 id!Kv3\S+B2  ti%]i]ɕ'BKd)|Zhc*= 1ewO3̿F%J@ U#|H|f q~׳c%[_$q"deB >{?w P]H:{;i,ety|āRϙ=[Ka1bIϖ!KZ~`cSƾT(TŊ!]E BPB E E BPB `ozkIENDB`indicator-china-weather/res/weather_icons/white/205.png0000644000175000017500000003652413530705155021764 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:56+08:00 2018-08-17T11:30:56+08:00 image/png 3 xmp.iid:96c36b50-8229-f649-9e6b-a73b7d08f799 xmp.did:96c36b50-8229-f649-9e6b-a73b7d08f799 xmp.did:96c36b50-8229-f649-9e6b-a73b7d08f799 created xmp.iid:96c36b50-8229-f649-9e6b-a73b7d08f799 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 * cHRMz%u0`:o_FIDATxq@3ou.D N TRIЁ D*Rq(\~\8f4$;ւJG8BPB ub]urxP__`0cҦp "ԠO1v(1`&nj `괻%0(-X\l`Ȟ;;mOplqd#m^4oRug~Tc1L z}~pu{v}Y Ga}>vmv.mK̓}U&kzeKkZ;3: =WI>6 ܥX9&pv,:Z|R2t/k*a#3wGTO^c\RҐF*=Q$Wp$"b_q&pw@ΐԐxs@keP+j_pIz̬X@^;VG3y ` u$uC| 5cT\+t 6˫|үp,ykU*Yӗ zH_ 95Sbp.NHRKiI U@89\B_ȜͰؖ2Ⱥ[{XrQ􁡟V&[S72W!MפJ0Z"z!y@B B0n%,<~ Cc6' ĎP +g=l rG^80j됙X}n?4^\20bijERl, wfG__VHGz>l0-:S.4U$Q{2( Ѷ:d*_`XW`7(eFŁԌ@gѝ̢x-+[*j&{t!j7A8f}'wI"N98TIM3seLW͖;4 ӲV9>XE` *Ǣc1WE BE BPB E E BPB PB E BPBPry}=w>gdB7_4(tYþ=C_{ Cµx~´""@(WIENDB`indicator-china-weather/res/weather_icons/white/400.png0000644000175000017500000003650613530705155021761 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:11+08:00 2018-08-17T11:31:11+08:00 image/png 3 xmp.iid:d633f359-3354-794d-9f3f-8a6d1f892622 xmp.did:d633f359-3354-794d-9f3f-8a6d1f892622 xmp.did:d633f359-3354-794d-9f3f-8a6d1f892622 created xmp.iid:d633f359-3354-794d-9f3f-8a6d1f892622 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 c1 cHRMz%u0`:o_FIDATxU@_=`C++0TVVV[Xl+ [f7LxsrD1̓1w>PJj.BPB E BE BPU˙g үS}HюYX `֖ ؈a` ,x^  Tt5@[}`Oi1]h^i#$PH|MO5GOp]sRMG(VjVJwTtv}fd TW 7=%6e N bǥbʉ-ϕRO'yu*b),Ms®,%&9,[ w٩bcFa@_*]Mezm.9V+iB TrIy& .,;:dr<"?DfЅ0B cXqXirz(O:QR}1@\T+uyWM};,S"p^t9ƣ(+eL;eʺ*(e\.ZCeYEعxۡsWH^@_~'^3a5K'} )~Hh%.%6h-@ P`^ apS - n&0K2꣺_APd@N-DGu U9|{uU7 ?2dUl=̵yF~[Q )ïf8kly3KjzVjr棆Ym7!t,;[;AMqY4)dx~UOb*ĘtOcWwXJ#d ܓcHxf qg:l9Kwh% E "nGk|!fS2Plוg4*}|r" |N{E0X zfc3ߥRk3 M)&{_j8% I貈>@% ZtYZO;Rg7EŠNUdpazSZ͆bs߂xWDxv1GM@,.-C݃7yW\꠾@~V~jBoE E E BPB PB xp;z-GIENDB`indicator-china-weather/res/weather_icons/white/406.png0000644000175000017500000003732013530705155021762 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:15+08:00 2018-08-17T11:31:15+08:00 image/png 3 xmp.iid:29bfea61-b0e5-5747-9a1e-7cf62ee23c52 xmp.did:29bfea61-b0e5-5747-9a1e-7cf62ee23c52 xmp.did:29bfea61-b0e5-5747-9a1e-7cf62ee23c52 created xmp.iid:29bfea61-b0e5-5747-9a1e-7cf62ee23c52 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Y cHRMz%u0`:o_F$IDATx]u83g%D`HT$SA p*SLf*?8K zp]޻K򗺮 $ ȴti<6Oz߲?lˍ| *Ja_`#ȚWڡz%`X WH;Rq}'[@NE{d֢)C#dRdwZ׵+(y]1}zdAK?R0+1mS3FIby'W9t,+47 "2-A dښo;@4bPj [#uF&"8j9=:͹ qmR`38/Ҵv@*;d=[]̫kRCm!uA)+8]e}yP[#ukf\ۛ`\kǡ|F7void'^z| þ#qy`dtгjǹZb wĎj4ueELo`HeBԮ= 1`E0p H kQ#\:mGmq/;aO"=P\'@nACڢڬ?'|?5"OroVjoi"$D`;kM٘_Afa7|3K7!S[2K?K%>׽qwL 6]X+>K{zo13%&+1@wt;{섛pOBךKږHbNhzd@5輇0ח XH>ѹer T熗ӤS^[j5ԀdBt\JaJq=׾KOhQyb!S%LLM 7p αiG(`|dWO\[ //nhҥ!>]PQzL֤C"[? RM 5YȆLD0|hk䥵[|Uz_.;H>EtLB2!u`'}4NJcXO\*8FSKO+kODE״D4[9 1sDRH^H |/@J^3R\]oqGz r. d*Pu~o; ]1ߺ_38,ϊ.= Rfvw-\&և< zS+YGen@ N)0yiY˄'$&n#f*1# [XA`p"en`:\jV~dLx1k8+5:L^;v dU'H>f,iO۾IB>\E`nȆoqXr Qre; ->Fp!d @@ A   yҽ(IENDB`indicator-china-weather/res/weather_icons/white/207.png0000644000175000017500000003652413530705155021766 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:57+08:00 2018-08-17T11:30:57+08:00 image/png 3 xmp.iid:5444a540-0434-be4c-82c6-eed711c787c4 xmp.did:5444a540-0434-be4c-82c6-eed711c787c4 xmp.did:5444a540-0434-be4c-82c6-eed711c787c4 created xmp.iid:5444a540-0434-be4c-82c6-eed711c787c4 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 FL@ cHRMz%u0`:o_FIDATxq@3ou.D N TRIЁ D*Rq(\~\8f4$;ւJG8BPB ub]urxP__`0cҦp "ԠO1v(1`&nj `괻%0(-X\l`Ȟ;;mOplqd#m^4oRug~Tc1L z}~pu{v}Y Ga}>vmv.mK̓}U&kzeKkZ;3: =WI>6 ܥX9&pv,:Z|R2t/k*a#3wGTO^c\RҐF*=Q$Wp$"b_q&pw@ΐԐxs@keP+j_pIz̬X@^;VG3y ` u$uC| 5cT\+t 6˫|үp,ykU*Yӗ zH_ 95Sbp.NHRKiI U@89\B_ȜͰؖ2Ⱥ[{XrQ􁡟V&[S72W!MפJ0Z"z!y@B B0n%,<~ Cc6' ĎP +g=l rG^80j됙X}n?4^\20bijERl, wfG__VHGz>l0-:S.4U$Q{2( Ѷ:d*_`XW`7(eFŁԌ@gѝ̢x-+[*j&{t!j7A8f}'wI"N98TIM3seLW͖;4 ӲV9>XE` *Ǣc1WE BE BPB E E BPB PB E BPBPry}=w>gdB7_4(tYþ=C_{ Cµx~´""@(WIENDB`indicator-china-weather/res/weather_icons/white/404.png0000644000175000017500000003700713530705155021762 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:14+08:00 2018-08-17T11:31:14+08:00 image/png 3 xmp.iid:66630d8d-42cc-1c4d-b02b-9bd2f64c33bf xmp.did:66630d8d-42cc-1c4d-b02b-9bd2f64c33bf xmp.did:66630d8d-42cc-1c4d-b02b-9bd2f64c33bf created xmp.iid:66630d8d-42cc-1c4d-b02b-9bd2f64c33bf 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Ӧ cHRMz%u0`:o_F[IDATx]q6= pKWL+\ 䭀 @JV*] Wy G-J Еw`B„0&0! &0! & a/+P u0!"U= `7_-bx[Wx„7X5TDB2E?!Tn-UsoK+_upxl )oiX|H)tRʭ$qRI)E6}f4dL\gc28 ąr_!pp-z\.l}/L[K՝|l,etq@^k_Tq2n؉ӃjXŌզ[MI6ٓ*\OY39 m!v920 MȃJf"gbT| ~J I] y:DF|S.GoDAyҾp^KӸ͖תɸăUg:T"UخjH7bòSzxr}RJ[;cGk}h.T? ¼[K,|),+d QHsxeD|Cg #̻ELF`D֎ETO˼"u7Р4urA^g-qYM򕦼=T u.?TԤ8~Qc1d"87!-$FįheViqփc[BY/8Ί]*].Ȯε=O}ۂɮm<F"ĵ=)>[yx%]k>i4!b(TCB2BN|GX| =q16PCgР>ubH>;۟m f;b{f+iny_=ޕ٦M=^0 Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:52+08:00 2018-08-17T11:30:52+08:00 image/png 3 xmp.iid:e2eb4b99-470c-1749-b13c-7f2c9cfefa9b xmp.did:e2eb4b99-470c-1749-b13c-7f2c9cfefa9b xmp.did:e2eb4b99-470c-1749-b13c-7f2c9cfefa9b created xmp.iid:e2eb4b99-470c-1749-b13c-7f2c9cfefa9b 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Ԓ cHRMz%u0`:o_FIDATxHofD0nD0LhdFF ~q|E r9[}7c @(!@""@(!@"@-@Q+A7 cNZ1wb9;s18 %k#O4d/Ld|0& ;8XXy%GkӲ1aF K 1[ۉEʎ5,7 FɣL> Ų<@ޯ^|/}S1&3eUh03۩V}+27ݲ*a "̕8lRfbS{Ģ&7wz Iab7P2뒘։&*ڡuCH^EFu*vr:{ɶb3Մ5m-j Zh ,VxͥzgXϏv\&Su};Iŧ3Te\SŭnY LUֺ=O$#\H Xmm;Tz1de6wFn˸xӳbMj;WYڱ`=F CYm]O|:6 z2a1G{Uc@}E["=v4$(]Ƀm)N`NI oO%>.*7PlRQTF5e wI^oDPV'z Mtc^)VHȃ׈}&T[<^l,~EkS ww+ӫ,ωNەu#cȏBxӲQ9+%7ֽ\PoZO[NFlQsDmŸ, }6 yprR"ӂ^\XS*cx~ K~ emuGn}Q?Ub H-w .k/ ˴˪JU?@tm[)q*,q.O|SE_~|oQdr(+ohAT[DHBz WgL5-Q HJ"{OM$䭌>O{D}\Lq^^J+dL1хSF']RP?@(!@""S+/;'sgz~Oྉ/yMnPhYÝ.X! Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:06+08:00 2018-08-17T11:31:06+08:00 image/png 3 xmp.iid:df6d6867-fc02-9c43-9aed-1a340dc0436b xmp.did:df6d6867-fc02-9c43-9aed-1a340dc0436b xmp.did:df6d6867-fc02-9c43-9aed-1a340dc0436b created xmp.iid:df6d6867-fc02-9c43-9aed-1a340dc0436b 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 xRe cHRMz%u0`:o_FIDATx]u:yNP:AN{ Lv N;A&0t?"Nd=%!$=;ĠCӧ|`0|! BDB BB"@"@!B3?HIgv؎?̬b 6<q@a XO1!-f,82DԊҸ]!דpf NG?$tDw11cl;ncXU39c"`p9pEHR ?.⊻Hp-r\S[J񴗌y=ݔswY2G "|t}\]d4zAp;~c3N5-%I&<np5fOq̓Zo YHO؏ V⛐)MD$a.K_'b24]T^'Zǔh2<l{,yI^?j[{{BTwU /;TY!\ZEL!3ּjYtŌ6]bYk9h#̳L s+V/X!^zәzKd(z-XM>t ʔJ%1N| 8 D,aBiAdC$f(K,N}B|,W 1"EB8%!:_xC a8BvRuЄŗ;N<!4dXL pZ~mʙSӢ񒭈W #&ю+}3$c?De)z1#u՟b) ݅&]wԻEabjmoIYB6ClqZ B F/\?Ɍ-gn$0t"#:KKoG)ފ&'mމv? bжZ:9#$&U}\jBS*e !I/T[exk41z w3¬BTQ0e6Oi6x65n1׎ Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:01+08:00 2018-08-17T11:31:01+08:00 image/png 3 xmp.iid:8d5cee65-1552-2743-9e22-637293030bc0 xmp.did:8d5cee65-1552-2743-9e22-637293030bc0 xmp.did:8d5cee65-1552-2743-9e22-637293030bc0 created xmp.iid:8d5cee65-1552-2743-9e22-637293030bc0 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 i cHRMz%u0`:o_FIDATx\u:6p&t:N2 H'L;DQ$~IIƖԕo`ă[&0! & a0!L aBL Y0!a1:pU3!=%{̢鉔2;lvoQhk\ɆK7S%`u:&4:J)A= R;g" *&- A:T)YX~?؆?Tv@J9n0Y!!(irʺ鞕*!Mf(X]dp"QP2Ir&%ƆA<-ztMDX('Ƚϖ*lHG/f|u㛈KI73 FkM:Rp{#bbPYcr% &RB9RRB ]4dW.vosLS_q9L1: )sk4%:{.XD.%cH "c_ „6eB).2`W_bWnYxȳR#Q%*Oؼ2XѺqnoS) / "Cxn}e':gmMp_!ko:g"03~PD􌎏m_z eK) '`3ˑrnt_Ⱦ2}x]r!TBqF![S[jSl-z~4jUTrf[RK/ 9ޯ{OR뼄46Us]Y*1纽~sh@̍C1"- 7;B/-.ɳ̉4̺],xaLAԆEg#ܤ>x7 N*s{x|![nJqgdIHͶ/ZQJkvwTaRCu>+&BhFAMsrb\Qx^ZԕPN3 )iƝ" !K `(=kr15)Q20VL"BԴ ǦH T9y ! u 70p0JE9T$4PQ hf)Rp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:10+08:00 2018-08-17T11:31:10+08:00 image/png 3 xmp.iid:362aae3f-6f43-144d-a760-217d29d856ec xmp.did:362aae3f-6f43-144d-a760-217d29d856ec xmp.did:362aae3f-6f43-144d-a760-217d29d856ec created xmp.iid:362aae3f-6f43-144d-a760-217d29d856ec 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 &: cHRMz%u0`:o_FIDATxq8_2~ « N J+\ T 8H DW`䃗c ''@HSJ GBPB E BE BPCÅgR Oov~x[1p`C è>a k1-& sajী,1vk3ټ@k_D=f`sR*#WJRuZݣRݶ|AH ֪PBpYs+q)+nŌKbȖRju3ɇn,RwY&3@>FT]ƙќ7;ht'LKMFIfZnprfVB @.LiRpYf ' ?zH]+LJORӭ#&c v){s#/Y}/}]ֲ?*FeJCLK1'-`>jVj%5,c":9w91땸5рuB5<ҳ֘K9+Zhmo+jK'3'Xߴo`_ esf<=k b^ )|0eYߵ oǒJs^7,(zu z[eC%Btk3>/ܰOjb f'@/\at)qZ/gRǺ3JuV2YյUCX}38Bnyw=9A?|>bzҪȈ |[I8SOO0V"P{{s2GQ=#;-b0"r9-gAK?lRuK#" [k;oS~ Kt } @r@ry3߳E{# ^ /LŢof a wB}J.VEG!NZؚT/NX#S89y͒K-Jxoח':: JssCrӈLޖ >xm<630N:ˁG|-FגIJ!vale!RR64G$gYE BE Bԟe(G;xIENDB`indicator-china-weather/res/weather_icons/white/301.png0000644000175000017500000003753713530705155021766 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:02+08:00 2018-08-17T11:31:02+08:00 image/png 3 xmp.iid:736d3a7c-3ed4-0443-b911-27fe38f75711 xmp.did:736d3a7c-3ed4-0443-b911-27fe38f75711 xmp.did:736d3a7c-3ed4-0443-b911-27fe38f75711 created xmp.iid:736d3a7c-3ed4-0443-b911-27fe38f75711 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 6K cHRMz%u0`:o_FIDATx]q8}C*8W1] ,W:ȮLb*Rx~h5a  ;$Zz>UU 0 HHl J\sLq`{g8ظ2O C @ ot,^_8(`20kC+ %6L׀H;y}&S "9ݽL23h]OٶЈ5@>H!KVUjY⪪)G>̊dzk,W@d`;4-o$"gZ11Rɴ(y9'IWql0\ ʁ!%'ٽeɧ&9NEYRp#FNފsdd>Az.̫oR6F} '_.ɇU\29u@yƉ:)SGyȫ!|adeP-qũ AZ#ueELx"aY #'_+բ,$5%ڎZ(5mK tl*;, uFؒqmN?':gb~BPs~b!p(VM ɟ-Ƈb"j>5mקwY8t@ߥv[y!$2K?5d3>ֽ78W6rLVL`&vћzT};jIT%zLF1e c ww5`!L 'km˖Hj0\swtl3!tBK&;0hOݪPrS׆ӤT,Kٞ dj@R);.mQ-a97x\Rm0ruM׮Ĭ,κ2j5#9so%%>.21<@H*FvznVOe1KEQ'MMeNI tݖv|;ֈ&b!&23+IsP;b)B@d|#{r ٷ˶Z)RU:[6a917^: 0>3Ei.eiq>vl-ikTk E- cyRϷ wkdX&74L$yp],_ְLۺJ]#H7& ˠ&?as]"6.tOUJ#9U]شަ#dž=wRa,Yޕf:B\<[<w׎0ylj:v[MQ]xI=Qy7=QGj%a9B$H$?;U~OIENDB`indicator-china-weather/res/weather_icons/white/210.png0000644000175000017500000003526313530705155021757 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:59+08:00 2018-08-17T11:30:59+08:00 image/png 3 xmp.iid:a0cf0ab5-c9cf-f344-a43a-3f56b7aaea7e xmp.did:a0cf0ab5-c9cf-f344-a43a-3f56b7aaea7e xmp.did:a0cf0ab5-c9cf-f344-a43a-3f56b7aaea7e created xmp.iid:a0cf0ab5-c9cf-f344-a43a-3f56b7aaea7e 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 J M cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/501.png0000644000175000017500000003466613530705155021770 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:17+08:00 2018-08-17T11:31:17+08:00 image/png 3 xmp.iid:56605d31-2646-9e43-aef0-90ccd20d94e7 xmp.did:56605d31-2646-9e43-aef0-90ccd20d94e7 xmp.did:56605d31-2646-9e43-aef0-90ccd20d94e7 created xmp.iid:56605d31-2646-9e43-aef0-90ccd20d94e7 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 H9 cHRMz%u0`:o_F IDATx 0D @n!K⃑I{akE D@ D@ D@ܫ$9^އ +&,g,, D@ 8?}L5&d%D@ 9dr~ld D@_@J<y!c Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:55+08:00 2018-08-17T11:30:55+08:00 image/png 3 xmp.iid:62036e65-1112-3f4c-89e6-9b9957778058 xmp.did:62036e65-1112-3f4c-89e6-9b9957778058 xmp.did:62036e65-1112-3f4c-89e6-9b9957778058 created xmp.iid:62036e65-1112-3f4c-89e6-9b9957778058 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 cHRMz%u0`:o_FIDATxHofD0nD0LhdFF ~q|E r9[}7c @(!@""@(!@"@-@Q+A7 cNZ1wb9;s18 %k#O4d/Ld|0& ;8XXy%GkӲ1aF K 1[ۉEʎ5,7 FɣL> Ų<@ޯ^|/}S1&3eUh03۩V}+27ݲ*a "̕8lRfbS{Ģ&7wz Iab7P2뒘։&*ڡuCH^EFu*vr:{ɶb3Մ5m-j Zh ,VxͥzgXϏv\&Su};Iŧ3Te\SŭnY LUֺ=O$#\H Xmm;Tz1de6wFn˸xӳbMj;WYڱ`=F CYm]O|:6 z2a1G{Uc@}E["=v4$(]Ƀm)N`NI oO%>.*7PlRQTF5e wI^oDPV'z Mtc^)VHȃ׈}&T[<^l,~EkS ww+ӫ,ωNەu#cȏBxӲQ9+%7ֽ\PoZO[NFlQsDmŸ, }6 yprR"ӂ^\XS*cx~ K~ emuGn}Q?Ub H-w .k/ ˴˪JU?@tm[)q*,q.O|SE_~|oQdr(+ohAT[DHBz WgL5-Q HJ"{OM$䭌>O{D}\Lq^^J+dL1хSF']RP?@(!@""S+/;'sgz~Oྉ/yMnPhYÝ.X! Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:08+08:00 2018-08-17T11:31:08+08:00 image/png 3 xmp.iid:2ba2eeda-e050-ff43-8e14-491f3cf561a9 xmp.did:2ba2eeda-e050-ff43-8e14-491f3cf561a9 xmp.did:2ba2eeda-e050-ff43-8e14-491f3cf561a9 created xmp.iid:2ba2eeda-e050-ff43-8e14-491f3cf561a9 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 0L cHRMz%u0`:o_FIDATx]q8=2[ BW`Ю@NQ*R@ '$A=3E8O^0|) BDB BB"@"@!J3ZDHDdnOr/۩ V +!~l:B"aLY! C Ʀ4j-#B.J f74$tBs^qΏGN+9~I9n)@!J4;jQR<2d5Os|.OQM r*K%d@Dc/]RU8v^sQT،1;%%--I7up3dfA$ @L)MJq%3IJqf"r5}4 ;o3D,s"q>6itbQ(q>=jHZR>\wBtZdϒ:{,1TVɈfKb&]υZʔl4ɶv%GsA?6qPBT_VxXdOo7$5eI.Ih]g{WB,i̧Dl"!L7v܆RYBߥY BȘےY(?s#RdB?K"3; >AB8BushBŗ{NdG KV2ⶡԸ\~m3 X)ZlIUD,ʨ|P>Jen躞@2~ĬIJ_d|'JFBL.@['",7B@lq; !2r3^pz{*`9@-bNTܧ n|Y.Bb_\uqߥȩs̛ŮSO4aqχ;3M$ji>I4}uQ([Xc5˩b:*o; _]}u|:ĥ=epD%D7}[7i.RbRXNDw=Pd㋃;X5"f!zn؁amJyZL9mDc{3ψu>}|t0GKW\w#p31Ѕr{]:1 Wu3H!9I]1 pT$0P,R[1WsG /{<x㲎zT (Uύ7ԵUBNXH IoԢJ'm-ƥ~d+x )!̐4લ|ỏ{2͓}c !& tx+2 Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31+08:00 2018-08-17T11:31+08:00 image/png 3 xmp.iid:c9e5d06c-4999-2744-b322-d15eab28c8db xmp.did:c9e5d06c-4999-2744-b322-d15eab28c8db xmp.did:c9e5d06c-4999-2744-b322-d15eab28c8db created xmp.iid:c9e5d06c-4999-2744-b322-d15eab28c8db 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 y# cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/201.png0000644000175000017500000003666313530705155021764 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:53+08:00 2018-08-17T11:30:53+08:00 image/png 3 xmp.iid:1c2922ed-89aa-c943-a493-78979a0f485b xmp.did:1c2922ed-89aa-c943-a493-78979a0f485b xmp.did:1c2922ed-89aa-c943-a493-78979a0f485b created xmp.iid:1c2922ed-89aa-c943-a493-78979a0f485b 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 z$ cHRMz%u0`:o_FIDATxq8Ook*X p*XRA%*@* `+U>&%sfılG1Q]@ E BPB PB E BPBPRw.8T}_XB6|Ŝ"uʖ>J4Y}O'G l[L[$2{ `tRTuWےI/ @"MLU2 bd%g#ӥMk`yQmxNqm{| lZgb|hq"1NJ@m |FEZ ڙe?őwTg{MUi=^$WB y I@9(6^i9PWBirM$ ;6hЄ=; @05CMwοt|Z%kEeq 06H"Wb5WO팒#j f$`=4J2W,y'2Z,sGNK/ Fua]Y8 `2r2nV $cDb򥤛ariF^5h#ᲫS;ﭓNAAZ UVǗSu|[j{yYd G>ut9~mvcoX HFlG8}=c"s[2T㰎ޅZ_Vn S+4Ӯ}INBr# C@ztdWlwOHm~IʔțeS|9{ %ZAUWeו;ڇ\ $R6t(fm;&9箝sNS~MF2tFKó?.M '_7RwB#pZ=HlO٧v ˚f xzrIUFr&8<ᫀA,|@y_$cBh(K]Gy2P2ơpap` i/ب >+mP,i@˶M˴O$S6ʞMqmbϐ'nK&}oCP3V:!& nwDYs*>dU{9M YrArU 0! {)!@"@VIENDB`indicator-china-weather/res/weather_icons/white/311.png0000644000175000017500000003703013530705155021753 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:09+08:00 2018-08-17T11:31:09+08:00 image/png 3 xmp.iid:f8ac15fd-e910-114c-8056-abd402eaba18 xmp.did:f8ac15fd-e910-114c-8056-abd402eaba18 xmp.did:f8ac15fd-e910-114c-8056-abd402eaba18 created xmp.iid:f8ac15fd-e910-114c-8056-abd402eaba18 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 . cHRMz%u0`:o_FlIDATxq8dnVtKW`+\ T@+ DW`Cx@g8i9H]@@H!B" D@H!֧+9@W *pFה Kiv<;-n yb$0d jELiZ@@. '>Mg_FS9v[22؉;J [}$9/ e .+)+EvZ4]L2W1t/WM ] Ծp.Kv d42N UC3MRI&^8(T f>EZJWؽ00L d''J*<@'!0n`KL*o'ZO0ՆW70S6{Ҹ$}..i?-yfR]q~vyyWe͘0ѸDQgܭMZˊ+q1.Kl^1㬡@\kW/H7CБ?PZI"r>ENUi/Io-D$7}tm$w@ )sHZ5reC}ުXypK1j6Hf:tU1)[QٕVxBmg'x4땲WGlDKI>Ӥ0V|z#o7PR ![ʝ}F+ +M4\!?[N)@Hy?$hXĥG]o&Br B@H> !ځOGd'PBG\n^`yWf>0c d/k Z?PRc~7f  ;iN8_0\sdI_l:#C&vn]>?fmK aXD[WnW"8ݙǯ)f0Mrtlm-s{ l>S8!ԓ2}UfCMv+F\bj_/$ ;~RlP*: ]:߷\5̶7^95t]m9*\J6?ti+=/ c-^K#ϭw6΄|~%1#" [ܞ .eBB)^C@,p9{'*4qY 5_➣lBE@H! $ oyXC IENDB`indicator-china-weather/res/weather_icons/white/901.png0000644000175000017500000003544513530705155021770 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:22+08:00 2018-08-17T11:31:22+08:00 image/png 3 xmp.iid:5ed1fe80-3ba6-5a4c-ae13-53b783d06de0 xmp.did:5ed1fe80-3ba6-5a4c-ae13-53b783d06de0 xmp.did:5ed1fe80-3ba6-5a4c-ae13-53b783d06de0 created xmp.iid:5ed1fe80-3ba6-5a4c-ae13-53b783d06de0 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 6y cHRMz%u0`:o_FyIDATxm0F?a:A J'@Lt<\(Jv|Es;I/BA !B! JJH:e}tZtp(iUӏ&RR-cI_&NI>$:~m;7I$|PZI$}Ϻ*!!w2;#ĄHvNYFxmN؀ hR){)IB! )*w){!r h,{)=,3[!v )*q){!* FOnc$φ*d ɓIl;ތ qnvyU<$CBg[;tYw{3Qi7 LMUWCHHߩ0ꤑi7BHGL톐YJHHJbjw!}H!@B[!q11$]..^7t8r;%ܠ,%ښ7Y݅I9H2.,y4QhNȅ+| lO2BOH{eg߾6 iA !BA 3θISIENDB`indicator-china-weather/res/weather_icons/white/407.png0000644000175000017500000003714513530705155021770 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:16+08:00 2018-08-17T11:31:16+08:00 image/png 3 xmp.iid:3dfbb6f3-1ad1-7d44-b681-db409adc34aa xmp.did:3dfbb6f3-1ad1-7d44-b681-db409adc34aa xmp.did:3dfbb6f3-1ad1-7d44-b681-db409adc34aa created xmp.iid:3dfbb6f3-1ad1-7d44-b681-db409adc34aa 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ft cHRMz%u0`:o_FIDATx]q8}\tU+S)XvR*S ī@Jb*jA>H}3ۤxO,; a0!L aBL`B¸uBfLH(N\zLHK (=?M&D)-6J)i\qԮџl0 s6H sdd.݄QZԓ̍k6B2"-gBQ^YYXYCYtېCǒlRcjPJ{OوJSO;35TV|6s}{C6w,F%$#[6 Հ%6IN50 iԳk2.B9AX}I:n†4B_ \J %a1_o~kۻyy\^l\*kDd}/&{ HJYċJg7>ΤuQ_Sb!eCCԗ D'&CR:r팄 !:-"l [LL!ؕ]3z^qjC19U"ER; ʰ- ]k JJg}]- `C[7҃I5j  &щ=9b#dax!: (.rh791_f{'-NsQ4G|ʡ |<$F: 徸{5TgՊDp 5:+S#!*/y Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:03+08:00 2018-08-17T11:31:03+08:00 image/png 3 xmp.iid:4f984efe-e585-864a-8a7c-eac76716c810 xmp.did:4f984efe-e585-864a-8a7c-eac76716c810 xmp.did:4f984efe-e585-864a-8a7c-eac76716c810 created xmp.iid:4f984efe-e585-864a-8a7c-eac76716c810 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 # cHRMz%u0`:o_FIDATx]:= Ы``Mq*XS`*`SI UTS@bhm#ۺB6:3 ^{9<O' xxBOſ;(2UdJ\6RuG$H).Q M !II瞄KH|G ŪC'$+!"՘U(N*!e8硃Fk+2ovJ?Hdm2AF e/qFJ$sCQ{d@d` ]z?wQmѹdk6BH{+( X=R ŠơgVrqW$A/Ӕ>N=3㒶dN!U\2oDu {]bҡl"Mn9AggKqIJ]mEVӇrI1C%wLF]lr)IJM'Jz,&qCWL'CK) {-J~^yY6:^q!rC]^xwlY&88JF`9P:à RB F#yYp(7z&dD !B2MTڄ9c \oH +sbÊCىCѨĘ)uҏZ(;BJ]\\wOd]xucȮo {sh$^c L)cyl+Zazer/`w 5Q;m@M__=n5H Zt<+nVYvi>-zb~QX*5:95t9-\#̽xQ'| ]'{V(Bzm&&&2K{AwCԻH ]Eo@Ȣ46H`9*s Jrn֚V6^[?&qGMс-&>Sb= [oi [zл=.Ÿ omhyzX YhdFeB@IJOAizG0r"ҍN2uB,-X@Qӎaaa:;6 Mʒ/\LLVФڛ5'!g1zC){D8cW ItT /DYt/_7/: {۬7yWؐ m cۤoZNdL2֔#ciЭ\A rtGF܇a27cQar$ CGYqhDJXy暼t%Sva;+&eLG=mi8RÂKMH;kuv6`qcK MQC8)*sc@H>ޘ!Yifg-BY٢ rrjhO' ] xB< Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:04+08:00 2018-08-17T11:31:04+08:00 image/png 3 xmp.iid:4b4e84fc-85af-284f-9431-9f6f2e3dcbcd xmp.did:4b4e84fc-85af-284f-9431-9f6f2e3dcbcd xmp.did:4b4e84fc-85af-284f-9431-9f6f2e3dcbcd created xmp.iid:4b4e84fc-85af-284f-9431-9f6f2e3dcbcd 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 cHRMz%u0`:o_FIDATx]q:=` B*XҁS Tl*ST`:0BA&_樂` ?&0! & a0!L2!}D<) UH1! ny}`9BȂ0!#C"OT0r'R1r'K)c{յ1]GJ9\|Cўhd4rRHJ&ǔCEl9";!OH7)CKVDTAZBԻ͝&OV"-#6&׋Gn U"W%IRGs9w[5!;%t {RkldS uD噕BDoV2lX^Ԭ$rA|@?^?+޵GQ^ y%tL+J6…<$2}֜\a>T{dE$OVxN;)Rˌ#\ffٶ*{$6%k?H6J'r$CJ񔤺װW ]&[- L LZA krsK$+&wC^5:PZ 3rDٗd yRr7!_k^i8S5Ze -!Ma#PsB፟y-ˇ Ou6E6Yk/2~BUm_U@]]8K6gN#Pzt*i9扪Rސ$Kr2b9A~V1űis1 DgQ. ?DZb;T/7ݓ sůڑYmڂTx9SzpҺ>z{~tScU,C9-FhEw{v h4Յ!Y9IR\\-pRgu)Ztxe a$>)01H7ɩa)tN|]$$!wLHOH rr!t0XA8u=Zc&eQE&+_gxT/sdc˪G/Y08w?$~AyZõM0u|5کwB~M |&$&B~X7L3Go /Xɂ_ku`C؜-o>#;\cG(YN"⋈]q adŔ]3|BPlb5 yQPl!BkΩ/P=W\E ,YvUnGC` bF(7#|w?|2]CYJםz=8Јp+D'x:BL`B„#`BLh@IjIENDB`indicator-china-weather/res/weather_icons/white/308.png0000644000175000017500000003645713530705155021775 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:07+08:00 2018-08-17T11:31:07+08:00 image/png 3 xmp.iid:1b6e32c7-5052-3141-acd8-6061769b4b52 xmp.did:1b6e32c7-5052-3141-acd8-6061769b4b52 xmp.did:1b6e32c7-5052-3141-acd8-6061769b4b52 created xmp.iid:1b6e32c7-5052-3141-acd8-6061769b4b52 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 -W cHRMz%u0`:o_FIDATxQ0~;5L;A &Lt N3A ȇClK<ϝDO3!(t. @"@(!@(!@/'9#e%U  fؑ§#B̄[qX[!J۫"iަ׌@EsyP|pY#3Wq.Wd.\)=[Ɲa'er$o[:2 e0vGXiCuYK'9.*t-Tq11wmJ2ih > mvj%][Ha]ZI@Z*Hy& \ȿ:\) v Jfx<:L>֊ʰw&eسƱHm.뮁?j*J6R6@L\;j&?wT1gYfhzuQlGf( :eZurӸRgCAOUyV] z.~SW$k˺Lr$ cP/.d3SG1+V\%sS@ܠ:h ¨ ڕˊ5 T(i@?%WA?QPK =͵ܵ R!cԅk ˘}~P6p~hVHr9T*W6XՊ䒭ىD뛴bmg۶xfuG6BL. 0V|i4XB YZb) 2|1h-"#"Gl#>$@OHۣڔ#N]qEtr !w }LLm~Kن׾@Zg&U11"*| q(ՂdxlM HRq~r@ /3?'pRwrӀZyj=02SB bPĂ -YM}Ѣk=(P o޵11"-C*aBbI_25+ %(!@"@] Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:54+08:00 2018-08-17T11:30:54+08:00 image/png 3 xmp.iid:c26a77d8-9125-4549-bd99-26e139fb480d xmp.did:c26a77d8-9125-4549-bd99-26e139fb480d xmp.did:c26a77d8-9125-4549-bd99-26e139fb480d created xmp.iid:c26a77d8-9125-4549-bd99-26e139fb480d 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 :Ū cHRMz%u0`:o_FIDATxHofD0nD0LhdFF ~q|E r9[}7c @(!@""@(!@"@-@Q+A7 cNZ1wb9;s18 %k#O4d/Ld|0& ;8XXy%GkӲ1aF K 1[ۉEʎ5,7 FɣL> Ų<@ޯ^|/}S1&3eUh03۩V}+27ݲ*a "̕8lRfbS{Ģ&7wz Iab7P2뒘։&*ڡuCH^EFu*vr:{ɶb3Մ5m-j Zh ,VxͥzgXϏv\&Su};Iŧ3Te\SŭnY LUֺ=O$#\H Xmm;Tz1de6wFn˸xӳbMj;WYڱ`=F CYm]O|:6 z2a1G{Uc@}E["=v4$(]Ƀm)N`NI oO%>.*7PlRQTF5e wI^oDPV'z Mtc^)VHȃ׈}&T[<^l,~EkS ww+ӫ,ωNەu#cȏBxӲQ9+%7ֽ\PoZO[NFlQsDmŸ, }6 yprR"ӂ^\XS*cx~ K~ emuGn}Q?Ub H-w .k/ ˴˪JU?@tm[)q*,q.O|SE_~|oQdr(+ohAT[DHBz WgL5-Q HJ"{OM$䭌>O{D}\Lq^^J+dL1хSF']RP?@(!@""S+/;'sgz~Oྉ/yMnPhYÝ.X! Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:03+08:00 2018-08-17T11:31:03+08:00 image/png 3 xmp.iid:a1af337f-2581-3d48-aaa9-adbce6ff38d4 xmp.did:a1af337f-2581-3d48-aaa9-adbce6ff38d4 xmp.did:a1af337f-2581-3d48-aaa9-adbce6ff38d4 created xmp.iid:a1af337f-2581-3d48-aaa9-adbce6ff38d4 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 OtF cHRMz%u0`:o_FIDATx]u0 LPu:ĝL$:d ";ƶI }:+5|A@!B@BB"#o_J7*;n|aM<MBȀL Js+!"bRqxzd9uNc>$'ŚP5C`Vr8EeK;ڲCD&,u +M(T0iEv9[zMs)rXzp>K yanCL:Tqd4Xf}%Szؿ&'.H:5S5^ t'!o{%g[\S60399)߶#Ĕ 1Wy!$Lɢ" s)~ v$?%원5V'8]2 8TBPμ#9w̬# `a\EF{hnͅdֵ(o=u+4/eVBxxz꜖vas`oO>ފx[|SA>lM$uEt̓mgtͳ"3=>}괆K|Kg"sJ&Y m͡KIzE9dȨIf}sv3p@9kd#4qqBBFԫT -h2d\ӡ~ _JbP,$j!}&6H lU%!˷1K*>M=[Gŭ\-)%<L᷈⧄PyhlJb ZFH9]y)!+Yݢ~^a nk=ۆRPUCh@l0wBb!]҈Z+&B9=! |KnX,$q1G+MBHHClH,(uT!6$2B ׵e:m :1z1r\`ՈŇ\%XHB>!2b D!K $ 9 թbn"!D !D !o~@!IENDB`indicator-china-weather/res/weather_icons/white/309.png0000644000175000017500000003656213530705155021773 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:07+08:00 2018-08-17T11:31:07+08:00 image/png 3 xmp.iid:baa60950-005d-934b-9766-f9444ce71bd3 xmp.did:baa60950-005d-934b-9766-f9444ce71bd3 xmp.did:baa60950-005d-934b-9766-f9444ce71bd3 created xmp.iid:baa60950-005d-934b-9766-f9444ce71bd3 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 5!f cHRMz%u0`:o_FIDATxq6y?LT*8^*\ tW.W N@tb*@~h91 ERRp,{L v |PJG7@(!@""@(J3R g?^biU +<N ntXjsI0QYbJ ^suYK̈lӭsVTbF0 mZ)|nW*1',mj%-daU従9%\ڒ{Ng{< K^[ ʍlfc1.KN9N=OcYCc[V]<Oo3/a f5+ߩB CowWB,s LǠb/ ̘oFt}BosXRi>k>E^PU_|[NO6A1r(},ܱ; O0Fۆ),LëTQJdk}UCX}XZϭ's!6KWZ}2&~'x݅z ců%M+d3 ܋U}@|Ùo~=#`-"J E B] _7VDr*z6{.6~uu)9+}-Xb/.wF Cmh?ۡ_+Gwqmw(L=HF:R uoG'uLKKGW8T*)NIpB 8P9‰ȴ'#PطE˵*4_ڈB&3Չx81X~zѢo,>,@x_b@E @(!@""@(!@"ʮW˭zIENDB`indicator-china-weather/res/weather_icons/white/206.png0000644000175000017500000003652413530705155021765 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:56+08:00 2018-08-17T11:30:56+08:00 image/png 3 xmp.iid:76703f90-0e2f-1344-91c8-f83785c73433 xmp.did:76703f90-0e2f-1344-91c8-f83785c73433 xmp.did:76703f90-0e2f-1344-91c8-f83785c73433 created xmp.iid:76703f90-0e2f-1344-91c8-f83785c73433 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 үV cHRMz%u0`:o_FIDATxq@3ou.D N TRIЁ D*Rq(\~\8f4$;ւJG8BPB ub]urxP__`0cҦp "ԠO1v(1`&nj `괻%0(-X\l`Ȟ;;mOplqd#m^4oRug~Tc1L z}~pu{v}Y Ga}>vmv.mK̓}U&kzeKkZ;3: =WI>6 ܥX9&pv,:Z|R2t/k*a#3wGTO^c\RҐF*=Q$Wp$"b_q&pw@ΐԐxs@keP+j_pIz̬X@^;VG3y ` u$uC| 5cT\+t 6˫|үp,ykU*Yӗ zH_ 95Sbp.NHRKiI U@89\B_ȜͰؖ2Ⱥ[{XrQ􁡟V&[S72W!MפJ0Z"z!y@B B0n%,<~ Cc6' ĎP +g=l rG^80j됙X}n?4^\20bijERl, wfG__VHGz>l0-:S.4U$Q{2( Ѷ:d*_`XW`7(eFŁԌ@gѝ̢x-+[*j&{t!j7A8f}'wI"N98TIM3seLW͖;4 ӲV9>XE` *Ǣc1WE BE BPB E E BPB PB E BPBPry}=w>gdB7_4(tYþ=C_{ Cµx~´""@(WIENDB`indicator-china-weather/res/weather_icons/white/212.png0000644000175000017500000003525513530705155021762 0ustar fengfengPNG  IHDRddpT pHYs  8 iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31+08:00 2018-08-17T11:31+08:00 image/png 3 xmp.iid:ec56eab2-8b19-e246-a223-bcfe769f43d2 xmp.did:ec56eab2-8b19-e246-a223-bcfe769f43d2 xmp.did:ec56eab2-8b19-e246-a223-bcfe769f43d2 created xmp.iid:ec56eab2-8b19-e246-a223-bcfe769f43d2 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 $. cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/403.png0000644000175000017500000003741613530705155021765 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:13+08:00 2018-08-17T11:31:13+08:00 image/png 3 xmp.iid:a4c26d22-02ec-cd4d-bade-1ab8fb7210a3 xmp.did:a4c26d22-02ec-cd4d-bade-1ab8fb7210a3 xmp.did:a4c26d22-02ec-cd4d-bade-1ab8fb7210a3 created xmp.iid:a4c26d22-02ec-cd4d-bade-1ab8fb7210a3 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 FZ} cHRMz%u0`:o_FbIDATx]q8} r+\ dW 9P DW ^&&H_79AoJ)pI@!B@BB"B"B"||@_B:D oRo~xJǯ&V1Xߗx,A`[a `>-f 5~i" KL1nmBדho|&`|shRCbF)uT8*2^RI϶u9C"bm$e.k`c4}Eµ]L2֖=SJ>xL?ǖnRSwYS "2ֿx.~2zؑӽXnjݧ;&ɤSdKn,YJ9{nG@ YTr?y&gj .#*`z$  1E A |$ !=-POMP=f2|1D <\ʸhJH)g αb^UHl)6^5גMvزض]N_ȍW%dLNBUK.=o^KcB:Xd'Eԉ)ޗ,,.}c<d1$Um4=_Q*?;dUM]'yߒ'=fRuuj1kV黦6 |G}}>lpbXekOA& ǴW{u]VuPʘ?\^v:~wjͫp>ئl9JmDL{V9ɮi_i{둸7$zo1'Rs4: Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:49+08:00 2018-08-17T11:30:49+08:00 image/png 3 xmp.iid:0a10db53-2287-b549-95ed-e37a9a63e653 xmp.did:ce9ef88b-349c-cc4d-890f-079a8e683fd1 xmp.did:ce9ef88b-349c-cc4d-890f-079a8e683fd1 created xmp.iid:ce9ef88b-349c-cc4d-890f-079a8e683fd1 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) saved xmp.iid:0a10db53-2287-b549-95ed-e37a9a63e653 2018-08-17T11:30:49+08:00 Adobe Photoshop CC 2017 (Windows) / 1 720000/10000 720000/10000 2 65535 100 100 t1+1 cHRMz%u0`:o_FIDATxu0du J'0tԙ '7;Af \N 5 @99qrG^}FJ ;Zq0a ,@X a1@O?Q D"icJ1@NP0Z7,EUuXOC^#| S;//5+y@W Gm4"M[WqU}yŮ$d LsMJ:2!Q]]_ !,_nbʙ(.LLa0ا:.f/qέlnd!#?(L%$QqW =^oNt)$(m3Xma!Ndc~aa}\ݾxp1h,tO,FRreYFjĴ7O[p(#ͪZ q`0rJ57w,mhdk"nZvD hq&)Pwe!DC *5 *ùLկϦ&,ۘ"Pnev#G(HV1i֥sڻT0Z@\$& DF 2\ 6T?OuL{Uc'J#IQDƎږdh)YbHǶ]ޭk@%W-񾬦=ċñBu:"W% i dJLYѵUhʷҭ沏Ԧ;:v0$bu:X5dUuu -imU>|]ŵ=oT00oԒy(+a@mzP@¨ޓP\T~ʚX[c6F}Eݙ^ ^aH;`@X a1b @X;$B:KIENDB`indicator-china-weather/res/weather_icons/white/502.png0000644000175000017500000003557013530705155021764 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:18+08:00 2018-08-17T11:31:18+08:00 image/png 3 xmp.iid:53193ffc-36a5-6241-b1bb-3e840ccb0829 xmp.did:53193ffc-36a5-6241-b1bb-3e840ccb0829 xmp.did:53193ffc-36a5-6241-b1bb-3e840ccb0829 created xmp.iid:53193ffc-36a5-6241-b1bb-3e840ccb0829 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 0G cHRMz%u0`:o_FIDATxq@Gʤ: lW`\A T W9ȩ@`1pwFҲcA 3̇7!BA !@B! @ !BA @B!0 [ڲN~Ֆ\IJ$=GGDҭ?rxuO;f6Yiӳq}N<g;Me?;3KGē'*S/#>WnŽf]K]ⳤo-%!jJƒԬ8Pƚ$VJl̊ aѓgǘ:mOb);B5:vS+,;2c Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:58+08:00 2018-08-17T11:30:58+08:00 image/png 3 xmp.iid:c9763de5-4e45-4545-9750-15e829622203 xmp.did:c9763de5-4e45-4545-9750-15e829622203 xmp.did:c9763de5-4e45-4545-9750-15e829622203 created xmp.iid:c9763de5-4e45-4545-9750-15e829622203 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 5{ cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/103.png0000644000175000017500000003712713530705155021761 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:51+08:00 2018-08-17T11:30:51+08:00 image/png 3 xmp.iid:af740be5-9645-6948-af1c-976ef4c3f7ab xmp.did:af740be5-9645-6948-af1c-976ef4c3f7ab xmp.did:af740be5-9645-6948-af1c-976ef4c3f7ab created xmp.iid:af740be5-9645-6948-af1c-976ef4c3f7ab 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 zm cHRMz%u0`:o_FIDATx]u8*]A TX T *H T`^Z!H .A1H_c K!D !!D!B@BB@BB !% !l6% {r!#1LlyohUhb!Ƈ ٖY}VLd:U˱ Z}3 p|%Bx33G]i=O cL |`iImOƏM3kJR ܴ=~to-*^ڦoe9tYWrZ7B =Ms.KJ#OHn)|wmu}1ėqWs  QY划\UqN*km#~E<$ (:H8~Do"fmY(,{?sc!šx n1ĝw]KfrdH~Z.rG1YaBbۋDȄ׆/vvY..qa?(&j,Xc[>ˁG5)"r"Vt1[uT1e rU-7&۹esߏ$BXKeb,mdg :I>,njXDE+ŌV39.,4YaRd)!nGB)ݓ`V7aP=-Z |jlԑk'\_5#rڊYNDwP=Q ]b>ųu3]sKyM-r,Ӛ,nT2U{$W'xOC*3BB~ (#,0 DF'oxB@>ahĞ"O!nsO}bC2r$kHE,ؽHa;/31S?,v5c82ZRZ2&Bc[,N&>8FVl.İtM9J>: s)$N;/0$d!D!!D!B@BB"Bphխt9IENDB`indicator-china-weather/res/weather_icons/white/306.png0000644000175000017500000003657413530705155021773 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:05+08:00 2018-08-17T11:31:05+08:00 image/png 3 xmp.iid:c245638b-5361-2e44-bdbf-14c934f3aca3 xmp.did:c245638b-5361-2e44-bdbf-14c934f3aca3 xmp.did:c245638b-5361-2e44-bdbf-14c934f3aca3 created xmp.iid:c245638b-5361-2e44-bdbf-14c934f3aca3 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 g( cHRMz%u0`:o_FIDATxU0o9_w *&t &H;A`$ f OUvbGds|`}~IOy'BPB E BE BPD>g@ץ:GWQs /ϱ.1)u%{F&0!=& c ƒS6Rߛ^Ȯr-_5\uBSŸ1\x7RtRʙr-R?[J)őYm. 7 %50q=*|e#y3,wr纑G62I=d0bؗ̐GsXlӅ3brF0l6J2EjCm\\Kq} %}]@3QxDi ޡ0w9RZϤ yw FXhFUv){䑍7=Ƹd:ӕY QR1@lRs-ݪP5S;<Y3KE8ຬrcd)Kzek^ysKGCAOeqV[ f_VO]YO/&#og°&5ߥ'X?o` u>GY2AokXC1 z|BQ{]|.h^J_@*k/ҫoщa{љoY=Q羁/7lFȽ'lZmm؝~3]M9Z5;YCmS!l;[; > Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:12+08:00 2018-08-17T11:31:12+08:00 image/png 3 xmp.iid:58a00212-0dd2-a345-8f48-82d5e82c4dd8 xmp.did:58a00212-0dd2-a345-8f48-82d5e82c4dd8 xmp.did:58a00212-0dd2-a345-8f48-82d5e82c4dd8 created xmp.iid:58a00212-0dd2-a345-8f48-82d5e82c4dd8 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Μ cHRMz%u0`:o_F&IDATx]q8}c*SSA BW`ȩ@Nq*+@ p?W{,f0-S^qR p^@!B@BB"B"B"l㏉gЯk=(|_S(KcXX;^W(A`uFўs܎1)Ri28D >1k3=Z9ENLOm~c ^iB(<H8n1[;|(BRjک)gJb6}fsB"bĭ$%UX8uĵ6_q0-/)#kƝi_+fo\7On)M'cǚɗjI',sr&U\̵ hYIL-Y: g٩֐=a_# >7! Jn")ԬHdqG)g4_$2BՎh 1W72\bاo\:*lPuÞnud#2R}!w8Gbnuyg/9S_r 9"xuBF‹k -]!9dkBˍYavB=sV2zm] q~mڙS,U9\|eV[ˉw 阳)}lG vC 4땖]Gikw8߈i ?a>-b[,l5):vN[B19#Ĉ+]~(֜-̧EIqD !.Q0TCJ50~k(h&+cQX8\)b6y>h&*IL5ey qپ T$cb+C O M>RQ%,(+ 3BǻzhoQtxc6Z̻νJh^.>=NfI%O4&mXa>&t6NC*XpsK -y=s0Ik Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:21+08:00 2018-08-17T11:31:21+08:00 image/png 3 xmp.iid:c97f5cda-5048-5d44-8fb3-fff3adb8905e xmp.did:c97f5cda-5048-5d44-8fb3-fff3adb8905e xmp.did:c97f5cda-5048-5d44-8fb3-fff3adb8905e created xmp.iid:c97f5cda-5048-5d44-8fb3-fff3adb8905e 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 8Z+ cHRMz%u0`:o_FxIDATxQ@F? V %PZcv`:*p3q0 y͞3aHvBjL$m/\o[Z!ie H ig[H !”AR p.ܥ셴^]@BgB_^H%!  *q){! &fWncȆyqvdhFz[k^'VMBZ!!Ę[;tYg;3ϧnrg7PL?SaI'nxHCJzH^L,%$]e)qD$dABMj.$־!!=CiGבw@BN 7"KKKmtYy{ɇIENDB`indicator-china-weather/res/weather_icons/white/504.png0000644000175000017500000003557213530705155021770 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:19+08:00 2018-08-17T11:31:19+08:00 image/png 3 xmp.iid:d676b258-a792-5947-865c-4edf6a8b981e xmp.did:d676b258-a792-5947-865c-4edf6a8b981e xmp.did:d676b258-a792-5947-865c-4edf6a8b981e created xmp.iid:d676b258-a792-5947-865c-4edf6a8b981e 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_FIDATx0F?RӁKp:0$JH!w;8:;P~.6rYx ? ZWZ sN0> @B! A !B @BR^;kcX(IFΠbzR]x6 2B1TH))\ՠPCWI0($iS i 9ZRB~6I}ȎA!@fo2~7uH߄hq޸YL ΋{ZI:u;/rXϐ 2$mf$$Crb-K,gH1⚌!+G!#t5B#ߐ!釬_:IOw*+VHyv6Vιֽg+&T1X~V YiG/Ԭ_iWسՅ-ӍyUV9be\7B}dܠ})qj{r!͈RA!>Qo Ï%p[ .|x>LQߠ|,VXg\@ȍvpZZ AT!ru`2ԉe!I A&{rDȼHz!a='2$-Ԋ|vu @B!SZ]yo}S(loI*:]k%['LBA !@B! @ w#,IENDB`indicator-china-weather/res/weather_icons/white/402.png0000644000175000017500000003725313530705155021763 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:12+08:00 2018-08-17T11:31:12+08:00 image/png 3 xmp.iid:d9272718-3d7b-ec4b-a2eb-038cbb751c69 xmp.did:d9272718-3d7b-ec4b-a2eb-038cbb751c69 xmp.did:d9272718-3d7b-ec4b-a2eb-038cbb751c69 created xmp.iid:d9272718-3d7b-ec4b-a2eb-038cbb751c69 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Ց cHRMz%u0`:o_FIDATx]q8}c*+8Dr+] T *]x~v~i 'rdZ>7]) >"!D !!D!!D!B 4y&2З!rw~x&1XH+< !ah6TSG}3B -S*6?{osdWFB@B_c|u;aҕ*JQ)cZ~o&]`HDl?B n')C0Ysk+18|JϚ2<;fI>4S.dcKjI'i9qNj1t2tJ2T z>ØjI2gO@Z5!KJGR)Xq9_#Z|=`D&7]ȣ1&2cO՝ .1){7^slBϥZyӃƈR!T.ZBٽ.k=Ēaֆhྤrvkf(+m:el ׯBch:fZ_},WBx,~߭KG֌kWG'_ S/,bNfO?`1Y<ȧ! \4$ca%[,2Bv .g/)b9 BoTB_!'?"8[ٳa&ŗ؄͗;y-r0G!}Bn%+os%yjg αdVl|GW+-[w `ɻ؎'HsCLRWZ>#PC,%]SNW ixn7դ! ^p~3^Oh?T_ل5i$Dt2ڣ{SEV3K- YLSf,5N|J'<^/<$)(#Cl.nEW,+e饗Kv/6^+'W7pӄR !RPSxAv%$ס[lqyOmGIEYEIMH;257lx'BmuIw0/1*&4l+Rj3F.T;<x&<xhH3'ϣ*Q !H|ǖdg !:m){6~v{V'*{Ce !!D!!D!# Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:14+08:00 2018-08-17T11:31:14+08:00 image/png 3 xmp.iid:c17baed2-daeb-344b-8e6d-f1b5eba17c72 xmp.did:c17baed2-daeb-344b-8e6d-f1b5eba17c72 xmp.did:c17baed2-daeb-344b-8e6d-f1b5eba17c72 created xmp.iid:c17baed2-daeb-344b-8e6d-f1b5eba17c72 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 /E cHRMz%u0`:o_FIDATxu0tmPg:݀l`&(d L&dĩ]Y9>b Y.2h!G  " D$@H " D b%%"yvU`kp/r+䮪/#@=\Ui= ~8Y9:6v2nUx޺֚jڶMiN_e ''fLFfNj>,`vw"0Bivs ^k3DK0Bq@i w{a>&3 g;w ;S^Sb9A0NH `\c!. 8ҷ^6p\0kYV鏵M3i0{Z`/Әq\ vl;WueX'~5@ʖXƖ3@)7* 0 N%z# J v .zkC0&SzQRܤor3oy죁/T{c^Q, * ́LL F@&#e !`T$ WYJ;>z{d zp ?+\&BTu-a `,. ObwY`}T~wVc=|5Pع0,v]1ZHH9À\W9 y\R@Bè0ÿ( 2J]Ʉ1cd46044)W`LyD$@H ""@DD$@HLAm9IENDB`indicator-china-weather/res/weather_icons/white/508.png0000644000175000017500000004021713530705155021764 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:20+08:00 2018-08-17T11:31:20+08:00 image/png 3 xmp.iid:ab190ad1-a64c-524e-b39f-edc5c3c4b9ff xmp.did:ab190ad1-a64c-524e-b39f-edc5c3c4b9ff xmp.did:ab190ad1-a64c-524e-b39f-edc5c3c4b9ff created xmp.iid:ab190ad1-a64c-524e-b39f-edc5c3c4b9ff 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 q; cHRMz%u0`:o_FIDATx]q8+0]A T*S T H p?eh 'JH~'ly 2 2 l H H$[$--ɖ2 *`]x}{*u;r _e9^vf  _ˍB7SLyLbY-̞xQ;W@T>;s1!xy-55+@J2 r>pr 1dXaKkgtRf !B"Xroj !'-@p,l_!9<BN3&;!D:  *U@;(D&5@V<{ bQ2@E=i@yUE.f곧Q)YMVHwf.ev@~{&!n!=x@fFa{9ycw̅LZ3$wP%^xKoʮnq!w  r_ ;3du$ 0Â.:uiB$lڃpC", g9D˞;ԊãgK(:Wd4K8pj^w3@Se&SG'LLGj\ւP6wE$^d!_>>@Mpy/HGv{*6w@80_]33uM).9-v]Ei~*Aܩ\wh*iWT.IflFlxY:JwZENl/em (>Z1<ćrqJZ]U.28y`p&|nrxv ʂ/^=ZI%V*CSH{4-F0tR<ʤ3|&NoSḾhg&t'=DNjd= -ԅ"-seA)%[K9X,k} ԟC@Y1J ~bg,}~P7$rHi .h+= 66 !%r(p;=TpZ =?ZR՘a\J*$e?CM`1}0!9ΦŊ(L$%6rPȻSHঠ8S2VkE\Gs/Oo jb[!˦Y\O[1n1\⶘r.dZdPEvCq栚-4[ ^9w+{55?G$=9wJO`Nz, azVRT*M=B-յ!c4sioEtKbCycд{wp eo4 u.}ՊM?%+1=}R2yQ&uƂ&!=Eg`Ikچ#{mj0K=Y` '$8x@oɐ@nc8B-|gSٗ&mZ)j5R,Pq1]s"ɐx8pbO:@ d~HcՖkQ+7HGvYS Ec|K<.9k!'L7PkTr͆ wƑ6?*"E['=>J8 a[zb3# ҳV;fOd Z)1 OmɎOhq9] ٲbjL kH&SusK~°5U~W3 2 l H H$[$--r-/-IENDB`indicator-china-weather/res/weather_icons/white/500.png0000644000175000017500000003626213530705155021761 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:16+08:00 2018-08-17T11:31:16+08:00 image/png 3 xmp.iid:a4a5e0e9-7a55-f646-93b3-f12a548f486a xmp.did:a4a5e0e9-7a55-f646-93b3-f12a548f486a xmp.did:a4a5e0e9-7a55-f646-93b3-f12a548f486a created xmp.iid:a4a5e0e9-7a55-f646-93b3-f12a548f486a 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 v-E cHRMz%u0`:o_FIDATxu0oru'( I'3AM' 2A&ĝtձs9:pcғޓN1蔷@(!@"@(@(!@""և!&Y1;k[VJw+c$SfM1crcL~{ ] 4EoUw $7Ŧ# $q$J@Lƨ2O*z+ycJ_ԙz~4<>)SoK~Tr7P0G'(:\ ;bW{bj,@ĠϢUCv%ŢBhiN7CYVQ kP`4{&+u?^~ qL\xҸTjƠ}}_}IR: @F 6YV-uR޽KѢ@Ѫ+=_ sO+s[,Fk1=O{ȋuL# I26~"+=N# `\:cS!mJ2'QDbYpS*lKq޳WځrL6@~-?qgRTFJae [Z,X%f wRL[r 3kp?8&a$׮}u8V9",?™"s_v\ӵk3!0F]~r+94X2UˆN,#.ԛZ<:n8^AzJIPbCRjԓDi7 v Nybl8#{_<};IOѾU[rfI(a;K^HGȱ=u0vl.Zpvڷ>ZC4@E E BPB PB E BPB 5U<IENDB`indicator-china-weather/res/weather_icons/white/104.png0000644000175000017500000003730313530705155021756 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:52+08:00 2018-08-17T11:30:52+08:00 image/png 3 xmp.iid:7b02c151-b58c-a848-af73-c680a434121e xmp.did:7b02c151-b58c-a848-af73-c680a434121e xmp.did:7b02c151-b58c-a848-af73-c680a434121e created xmp.iid:7b02c151-b58c-a848-af73-c680a434121e 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_FIDATxq8ǿa]TpN U% GUR UȳCd#27NJOK]Q`GF< 0@Xaa jx Ž7a ~hpP1W5c< yY;|p@T fMMZS]LRy{L2`YӾ` e&Uq c~gE&Yڴu@r69{n鐟LK[7 g`jA`1]FeMd",LkHPXwI՟2j?R N?DjW[b}%vfJ3W8Uŭy. ўJ5hLpS-+'ڱh_.\-5L7 Y:,"S\);u@fki$>1hj܉ eTts%>C9 @5>X5Eh&Ǣ;y5w]Tinhkqξ|7V))g`gd( z48*Y+SE uQO"bGZ@| ތtoegF{.A[*!T-ן՛hgK45htDyՒ@M-I~CQseK%)E!NK $J)G. !]xN~e_< \^b[m<7+2Y_@AD:iyE}U:A$]6^,C򤢌,D@rDLi@(~hmnW[ރ2c3q^Lb]hjY_=21)(11Q1hP5-!8MDd@|b@8m$HK*=#RǶwYKe\|hR~ B@wʅR:q}ִO @bruh#YuyzE?]ʷF -gI P֖oӎEru8 =S-sy[P$3ː[#G !ww CFp,aaׇv2q:yv fuVc(o D8ߋ&p!d͗#p+r}3#maB Z>߫σW/xC֣O4ΤC sR}yN!i]'mtF@;@xx\TԤ:ک'C9$_33h9!:uF1U GV29ATmݽj{P>DBgi.mhd-F 8sVMDthoYqoӿ}@\a' i#L8m=C 2F;Y%& eeCͩ2f 5W|K< ` { Pْa2h啌j4j[4aa 0@Xaa ,@пIENDB`indicator-china-weather/res/weather_icons/white/102.png0000644000175000017500000003615013530705155021753 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:50+08:00 2018-08-17T11:30:50+08:00 image/png 3 xmp.iid:4f4bee81-5f78-c046-8c55-79701dcf2b10 xmp.did:4f4bee81-5f78-c046-8c55-79701dcf2b10 xmp.did:4f4bee81-5f78-c046-8c55-79701dcf2b10 created xmp.iid:4f4bee81-5f78-c046-8c55-79701dcf2b10 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 I cHRMz%u0`:o_FIDATxq@gu`+ ,W lW]RN@*.&bsœt'$3 tnooupa_B(BP !B!BP !B!B(P !B!B([*Hm lb`k{cwr*^)1y$(& W=WpvsPfc6f1&wG.ьOqN]m1fai~" e<6c^YHVqz8=i0Dfa `d'BI ~ EկYzJ2e1H8/R>d!Z&ЕtK=& Ct=QM8џ`0*fPO\w<(K?zTYI=d%jq߳SqPM>yqjSݨr/ 3YcgG5/I6TԱ7VRcEH/kbun397<`SI%5o&˽Iz2&uy>I{'nԜ( J]{ڻO}R{2T=%UDu Te!e>Ò"L2*ͲpYձ:絇wfBXa;E$9[K(nS%; .Bf$1 B ٪tm~μu )OxrJb6Lgp~.)PB:.=w"B+-뙌jX0mlEҥuY[|cߖk Ɩ>uݙ4\{moVbq Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:30:58+08:00 2018-08-17T11:30:58+08:00 image/png 3 xmp.iid:41b2ef94-4c05-b346-a752-5807db591a12 xmp.did:41b2ef94-4c05-b346-a752-5807db591a12 xmp.did:41b2ef94-4c05-b346-a752-5807db591a12 created xmp.iid:41b2ef94-4c05-b346-a752-5807db591a12 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 L cHRMz%u0`:o_FIDATxQ@2);c vTc`  tG~ pw1u]'Ê[@B! @ !![I'IǏ)ܣdNrEZIW,!kF>;c, B zklۣE!bju"' i0%=H*h$=GM)^BA$`~cB ێRI3%ZPSY|>s@XRsdc:^BA,MȋHSL ;B!7떖L#벀, !B|AKL\)Bt^"Bn[3&5޶[څNe$Y<ǫ^@B!g"Tm$񹥽HFH?R76s{BXo E !LV+޿oW*bfRHJZEABB! @ !Bi0HIENDB`indicator-china-weather/res/weather_icons/white/503.png0000644000175000017500000003726413530705155021767 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:18+08:00 2018-08-17T11:31:18+08:00 image/png 3 xmp.iid:43255133-83d1-6245-adae-a0ba0ad385a9 xmp.did:43255133-83d1-6245-adae-a0ba0ad385a9 xmp.did:43255133-83d1-6245-adae-a0ba0ad385a9 created xmp.iid:43255133-83d1-6245-adae-a0ba0ad385a9 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_FIDATx]q8=t*DvT ;@L+0.GBpt I8o4MA< C !D !!D!B@!BE. c ${KHKG:tM_j%F2WtN4DZ!% O:B?r_ x EK Ȅ>mBj;:` 7En]Ʌ:l%kCx]ޟ! OUџumR%G=o@HAaR7+3 D*fBX:hi]!JB5E)kՊ6yꨶb"6cȻ<uTy4zfdҰ/'0l@ݘey9wߚaAYxn*Ɔ86 AwpާIHUAՃ5ǔ[My驓<0w)*Ե†pyAC0%[h}~B^c.Fw98UYwd 5teqyA\'2fiQmC8 .X0Ok2BHC jXk2BiT{ ̋νc[ow4B lIPmԅ;BR8%$A͓ a42ve]^i RqL``hV? ^95 #Q#:IB ƔQ3F/^~rVQzlSpL=3'xE oUkGm#UJ!T;LNNEB8N0 X(U SgmK t}\KW W=պ .7!qܢDv5FZ1ygC.)p߄G:iZznL]0b!6ؑM 7X$s[PA!C|ZΔ UgXIj{"!T1AoWm7ru UVm$C|i lc"u`L6vG尽$M1v2)˷.E?&|ScariַXڽxY" k|E9þYtه(!Cn7f!UPdEKp .e4$k#p93U2AE0 ՙɺNoE2Tc 5%?t.WtIj a? ۫[pԊ) >JSŢbUYxW_["vJMF~$#$"!D !!D!!D9#G17IENDB`indicator-china-weather/res/weather_icons/white/999.png0000644000175000017500000003604213530705155022003 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:22+08:00 2018-08-17T11:31:22+08:00 image/png 3 xmp.iid:162c7f47-530f-934e-a56b-63f697f2914c xmp.did:162c7f47-530f-934e-a56b-63f697f2914c xmp.did:162c7f47-530f-934e-a56b-63f697f2914c created xmp.iid:162c7f47-530f-934e-a56b-63f697f2914c 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 cHRMz%u0`:o_FvIDATxm@'A0p \  A܁d/H+!%X{;m[A7n@@   A@@@   A\D*˱wiƪ:Hx]aJ),|amZv}82:5U8?WUzh7gtdg!Y~oOǗbߢ$c)RX?msrO] ~e&Bt, ꢌ_UɻE$!=I>UYQoaM`1Rqj Hd ?|ɿM?)pV~{9BN|l%k .Rbs-t^D+?JIq@P:|HӥG#amg>-pw<ب@5ByXR⣽G9pm,Qxt!%yZgVzUHR4ދ4ٞr8쀄3:{ h@f_C<y8;O%Ksэ!:pZ¿^`*4yDoP  A@@@   A@@@Q92IENDB`indicator-china-weather/res/weather_icons/white/507.png0000644000175000017500000003554513530705155021773 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:41+08:00 2018-08-17T11:31:19+08:00 2018-08-17T11:31:19+08:00 image/png 3 xmp.iid:68ea7145-930e-c243-8997-ff98285caaa0 xmp.did:68ea7145-930e-c243-8997-ff98285caaa0 xmp.did:68ea7145-930e-c243-8997-ff98285caaa0 created xmp.iid:68ea7145-930e-c243-8997-ff98285caaa0 2018-08-17T10:42:41+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 F~( cHRMz%u0`:o_FIDATxm@GttTWPAD B*HAA tctJxIH+gM7!BA !@B!RR뱒*GI()?4iK ߨxlyM-Nҙe?#^GCT!6eH)ˎ!6k5veTk'y!'@anv!lu!:)vY5e%(Zϴk$>EȦIR ;W#Mn'd`6T8r ?HJaITfY1Y#qKؒ&dJ|+: *!cF)eUY25fB dbY Iuw ,RA7gTm:Fd T19RwmA=pzVBA @B;IS1 YU N-wڦy"SȝzS= Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:53+08:00 2018-08-17T11:33:53+08:00 image/png 3 xmp.iid:978ea07d-ee8f-2149-829b-e09938d9d37f xmp.did:978ea07d-ee8f-2149-829b-e09938d9d37f xmp.did:978ea07d-ee8f-2149-829b-e09938d9d37f created xmp.iid:978ea07d-ee8f-2149-829b-e09938d9d37f 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/202.png0000644000175000017500000003677113530705155022643 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:46+08:00 2018-08-17T11:33:46+08:00 image/png 3 xmp.iid:d9ef85bc-7d91-5a4d-9585-861f7b8ad03c xmp.did:d9ef85bc-7d91-5a4d-9585-861f7b8ad03c xmp.did:d9ef85bc-7d91-5a4d-9585-861f7b8ad03c created xmp.iid:d9ef85bc-7d91-5a4d-9585-861f7b8ad03c 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Ϙ cHRMz%u0`:o_FMIDATxqJEf5ț!3 D`vh" `XF.2V KRacEQ^6 vPB E BPBPB E BE BU׶?dm|~c G FthY%Bbc3'm]' u> ?(&'t6LH "/gYQ ȨVrANBP{o(ۓcsR_YܖeqU.uFպp@FM\fF [X@uCA;(H;)lm/(UPiZ:Q-+Q>Q##Sq e~Ģu=UZ bZ:~t&u@bQ|QuCgB*ݪ.ΨbUDz78Jńq!d?H) ʶBlf Eer-k_39JP9U#u$ qe;!V+JĺwHLe\g*uݲ\Tɕ;hw xmm;OT1d>dlgtuZ;FvE`9 a@ym]|) ZQUax.vS;K0JENUH\GB1&E#Ǭk_Z(|@继벁Xk1gQb>km21fUu@OYZ m~O1#ju oMs@\Rԅoc-0Q\>[J"ޓN ^V?Z2nYD!P>[ǘxxYJpASXwsYV+mT35GG4g8@lG5;%Qhʇ><6K@2[Usfh}Q !Qz&(=\,dAi(W 'C *XՁh,5Ƽ`Y5T )M!ZVi:ۡ8s\-Fc*$$*ܨԨ;9B\̬Ai " %\Y _6)9Mq 5 [%r-A.>ט̳wͦ՞8ӿ¾خ8hYgpv b 9ME E BPB)?J$MXIENDB`indicator-china-weather/res/weather_icons/lightgrey/101.png0000644000175000017500000003713213530705155022631 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:41+08:00 2018-08-17T11:33:41+08:00 image/png 3 xmp.iid:6a47e007-d6ee-704f-97f6-64fc5ad19bb0 xmp.did:6a47e007-d6ee-704f-97f6-64fc5ad19bb0 xmp.did:6a47e007-d6ee-704f-97f6-64fc5ad19bb0 created xmp.iid:6a47e007-d6ee-704f-97f6-64fc5ad19bb0 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 -A cHRMz%u0`:o_FIDATxqL_o}ȗ9C+G`"""G/t2`0~((i="@ " D$@H " D$@}-{u>RJUzrOe:d {Kzn #0@ֳ #1؅ܧj<0 /f䮸׮,.+d#!ܒ `~?&hĐKMq#61!ʀV چE9uǔ/ 4S|{&a̝m=XPR\SDcGtYaù,V&і&ud|(n_x,,9i%ZQjřK$~RNfYy ρwԶ@ᷟ-t&JK@ qރpȍy!gqꥍ:J @xqFW\r~P␙;(Ե.\1gTd;b';C (o+sU1z&rQB֮@@=f@\Vo{RշU[ *GzH&Jkuy{0EЁK)/%XVH)( 8\O4(#~TSŐR[nXaUx8ŒXe[/?E~nGc\SVݲ2`:d)MBɭ6bknw{v0f uBF䂜1hߕh{a鏌xb 3[a%胕yd){sԾ4ȸpYI`ܞp.W\Ok,&ͅiH"#@ZQ%f2e`r3cWb>m |qZNUڶ&F̒+~H@V8Ego/ d^R*\f_wiQDFݳipVB(ܙ8M$ǔ/R ɨ̤Ii ZQhݣ-?wȊ|_ah},;{C`;عCkV l Dny uXMu_ᯯU=PQ5|J #oS!{^u@(r ߹CeܷB\uxj#tFXCy aGQ ߄U@Œx"w^T1j/P=6h] 1ss_k`$(رG^4}P$2Gcu0{b\N. 4E\8OtxѹpLlVPei[    oԨwxGi8m$w;al@+$OH " D$@H " D$@Vz IENDB`indicator-china-weather/res/weather_icons/lightgrey/313.png0000644000175000017500000003735113530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:02+08:00 2018-08-17T11:34:02+08:00 image/png 3 xmp.iid:42752b53-c620-5340-b118-48f2efda30a3 xmp.did:42752b53-c620-5340-b118-48f2efda30a3 xmp.did:42752b53-c620-5340-b118-48f2efda30a3 created xmp.iid:42752b53-c620-5340-b118-48f2efda30a3 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 U cHRMz%u0`:o_F=IDATxuH~ԶqZD0" Ў@D`&Ak",r^%p̱A}7`G @0a ,@X @0mvCSz~ !F?I`7 O#$هƞyV34p`N݂^j`^N'tC)}Jc~6gUߵr!Gzyul;a ?EJ3 &\m }1<ᔽK.]#|ӫf9!JqL?rh1В*k SuK0ԀA$Fu)5no4fYX|HH| Ph*јp 6&6jd)QK>jeOch=lWjJE2{ C-?y@K65+\|=^ !րH)g8xNu$ԯl5i IثנW 8"j& esL\[ȟ"aPRm4?<1AIJj #ȅBja# + |vվsآYqW*ɩP8ª֡2BTntY!Zsε#yc Rd& EFy*3W~MgNLLMލF<5[G W.}HVח(tsm0uQ.}#kI75&!|~U 8 -Hq܁46"&SvPy%`_N&ovǯޕx6mW<2ZN`ok'9 BI>>>0G'Fٰ5;9R:'♚OxwjuȠ&'T& iFN[t7@{諉%Ez4祮?tj!e1#7غ^"<k &M-N`ػ&X->,Y3 .Z5/"XMF Ʀ{1|yy=ES&8*ߣECp5N !m!ygwX6ئߖtmQ#`2ks-Q>$ K+źM3ug0w^Kia^tY{|X^կjoTb% 4 }(^X[e_88X@t^L`( J{5,7ʒ8ʳ%ᖽ+UDX{7$3{ u (k=zi@NJHY$tf A@ZPMD^C{mhM!+| hR8aa ,@X @0E?o>^IENDB`indicator-china-weather/res/weather_icons/lightgrey/305.png0000644000175000017500000003653013530705155022640 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:57+08:00 2018-08-17T11:33:57+08:00 image/png 3 xmp.iid:d7c40ee2-5af5-774a-b5fe-cff89c3c52ff xmp.did:d7c40ee2-5af5-774a-b5fe-cff89c3c52ff xmp.did:d7c40ee2-5af5-774a-b5fe-cff89c3c52ff created xmp.iid:d7c40ee2-5af5-774a-b5fe-cff89c3c52ff 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 &b cHRMz%u0`:o_FIDATxu@s f+\qWp!Te;XY𰇇@Ft0TsM@ E BPB PB [_{kmg@,l^di*p.s2 ;c! S ` zlC1c~L|/>*~ 8D]9]༉N^;!`P=F Wc71:zӀD08ʔՀ\\s'@\>|AP4\ߐ5f*6T@@VV>u91&oku IF8"Hڕ^.C{ԙw唤9Vȱ.UXAոGStYBPBPB E BE BPjfA ]IENDB`indicator-china-weather/res/weather_icons/lightgrey/205.png0000644000175000017500000003663013530705155022640 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:48+08:00 2018-08-17T11:33:48+08:00 image/png 3 xmp.iid:009732ad-e366-1646-a7a1-5df95010e4f9 xmp.did:009732ad-e366-1646-a7a1-5df95010e4f9 xmp.did:009732ad-e366-1646-a7a1-5df95010e4f9 created xmp.iid:009732ad-e366-1646-a7a1-5df95010e4f9 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 3y cHRMz%u0`:o_FIDATxqLŏ3y W *SA (@(WwG, iΙ0`ݽV+tl@7@(!@:vm`Zx_x(q(B1+&%'?B@uH}3'0(-+: TDA qp=@c\^OXo FLPJ H:,y"/@Vj~xm_d{_YbHFb~.@ۼquƽ}ps7S Zz GQe{jZ#kwG޵㵮dؠ[qa5m j HŅe Fg$響osYM:5?ď@&ze JI]  ZW(XVFS䃒لd@>61I[Fj, J}֖3+_%o}UYsrh-g=BGup: $W˱ ڻg [1\B[u XriT YKR:hC im}χ}%1mZ@تEԣ(*Tt]--i |X5)ۯk {v#Fbơ(Rk67^֎=ܡWCbe1^>Wx|Y9[::sX2gsq}1i⍤Ud-5\5.w}ĵV 5Q^,$Q-p)=rS(0^FTIEPΝU<]7v B`݉k|bt}WZ}.~V/ʾ|3QN.=62.c wX}?d`KI]mŖ2@${[+Is;fEP\>Ou@FQZRBS+ȁ@(!@"@(@(!@""@(!@"@"@(9Oe($=?btj'vۧpEQoP貺==@@ Cܕu<*PL{ ""@wKdQ1$IENDB`indicator-china-weather/res/weather_icons/lightgrey/400.png0000644000175000017500000003665513530705155022644 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:03+08:00 2018-08-17T11:34:03+08:00 image/png 3 xmp.iid:a1971a3a-3f05-3f4e-8e64-c5eb2b8df9e2 xmp.did:a1971a3a-3f05-3f4e-8e64-c5eb2b8df9e2 xmp.did:a1971a3a-3f05-3f4e-8e64-c5eb2b8df9e2 created xmp.iid:a1971a3a-3f05-3f4e-8e64-c5eb2b8df9e2 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 #TJ cHRMz%u0`:o_FIDATx˕H,oj;rVG`:":pD`5ڌ:Dг.][Eu =eE BPB E E B5w^Z<cJ|x{2+?,;c!-S ` :ཱC cH30c%G"rUqM p'ǍJ!< N1h|vn?:5B5E}tߕ*-I 'Hc@*T::q",uky`@2]=Ą#>1@ ϝd `b[Zx?ͤ Q=/[*1x3 ں\ 1;] £{u51fyq )ֽ]?: kr՗8S1fq1 >vO+Se1'C9%}P+iO Z+dYw5Pz-s4d JE }ob؀X+9\.XA-GTP,$v&Ͱڮoyr c/%٩:cUVC _K og[&HybY̡۩-DWlr돕/ LZ;doJOێ"3r83ZtJ;Q1f*w3z \W ÖXˋb;6g=DGl`0 W uM~ )CMJX%ֳNS>cI[EWؘq Pq%dVMy' Ս(!&c=>+"IB2/|=ceC#oz6*w`v}u F8zw'5rY+`T;3G,$fWL~P8% )߉GzW'57:tc3 u)M<ɅCSIU5Q`@'\v:n' 뉲"*^ az-8NeE BE BPB E E }IENDB`indicator-china-weather/res/weather_icons/lightgrey/406.png0000644000175000017500000003760413530705155022645 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:07+08:00 2018-08-17T11:34:07+08:00 image/png 3 xmp.iid:af871d69-ac65-4041-abee-007225f94d8b xmp.did:af871d69-ac65-4041-abee-007225f94d8b xmp.did:af871d69-ac65-4041-abee-007225f94d8b created xmp.iid:af871d69-ac65-4041-abee-007225f94d8b 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 QY cHRMz%u0`:o_FIDATx]y8=oW[^C*R8Į v+pR L˼be+>pYB"`HX%{𗏏8G#B|m{$Il7]}g!L*?e]hF]g)#D!D o KqLlo_X$ C"4Wi%DJ\Ô#cӒ: Ɉ$Ѽ`#L"QSrA?9 `&(VP6@tAeut[)L+{)M$&]QVx1adQՋ*ab^<*?`(ϋ1".^C=46eBː:QQBS *n"%E(F_۾/z>v/B8AceQ?ܦ[)g8.+!&^aBB 021>7#Rm9B !׎6 ƳHB E^L1Χ^##B֐S[ǔ{(;nU1- xtCG&%Vè#Xypg/bhVlfyXHgB>*d˷21LFn(:{n$b88BJR(5`sT&d9 +~}p CR+qI;#7 UG`/PsH0Aj XPǢG/h4uYE>9ZV/ږ5>7l3!\ִb_Mtm!a lB\Pq;v8+e"MH1E=xКҷ>шI4CFLlևАEE$Զ?H|sEmݓOqzV]HHL'Ć5I=zźI1i@,G#qp8B!׍ ^:IENDB`indicator-china-weather/res/weather_icons/lightgrey/207.png0000644000175000017500000003663013530705155022642 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:49+08:00 2018-08-17T11:33:49+08:00 image/png 3 xmp.iid:ccee2a37-d341-6747-a2b6-67e16349b654 xmp.did:ccee2a37-d341-6747-a2b6-67e16349b654 xmp.did:ccee2a37-d341-6747-a2b6-67e16349b654 created xmp.iid:ccee2a37-d341-6747-a2b6-67e16349b654 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 w:WF cHRMz%u0`:o_FIDATxqLŏ3y W *SA (@(WwG, iΙ0`ݽV+tl@7@(!@:vm`Zx_x(q(B1+&%'?B@uH}3'0(-+: TDA qp=@c\^OXo FLPJ H:,y"/@Vj~xm_d{_YbHFb~.@ۼquƽ}ps7S Zz GQe{jZ#kwG޵㵮dؠ[qa5m j HŅe Fg$響osYM:5?ď@&ze JI]  ZW(XVFS䃒لd@>61I[Fj, J}֖3+_%o}UYsrh-g=BGup: $W˱ ڻg [1\B[u XriT YKR:hC im}χ}%1mZ@تEԣ(*Tt]--i |X5)ۯk {v#Fbơ(Rk67^֎=ܡWCbe1^>Wx|Y9[::sX2gsq}1i⍤Ud-5\5.w}ĵV 5Q^,$Q-p)=rS(0^FTIEPΝU<]7v B`݉k|bt}WZ}.~V/ʾ|3QN.=62.c wX}?d`KI]mŖ2@${[+Is;fEP\>Ou@FQZRBS+ȁ@(!@"@(@(!@""@(!@"@"@(9Oe($=?btj'vۧpEQoP貺==@@ Cܕu<*PL{ ""@wKdQ1$IENDB`indicator-china-weather/res/weather_icons/lightgrey/404.png0000644000175000017500000003724713530705155022646 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:05+08:00 2018-08-17T11:34:05+08:00 image/png 3 xmp.iid:fc3f725c-e4f5-274c-a385-bc01eee0a9ad xmp.did:fc3f725c-e4f5-274c-a385-bc01eee0a9ad xmp.did:fc3f725c-e4f5-274c-a385-bc01eee0a9ad created xmp.iid:fc3f725c-e4f5-274c-a385-bc01eee0a9ad 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 X cHRMz%u0`:o_FIDATx]uHv,"0`G`Ͷ6-GК< 좬oQ%y2R]o+_\„0&0! & a0! & a0!L4{!D z"ӻWpN ~01VzZƬ؇`[BFD<8_&|8䘦\>{sRE#=gB!2AW99>fZuNk8$dp&sm5KI1MHWLl5S 1$t^|@XwfIٌ%}0U%"75uuFmRt^51 tj`K]B30@Q4m K:޻3p?k@:iBJdZR\.3gB?"[+E|!ĂTzBe'l:q yhߤ̤Ʒ:c6fX(٦nFFю*!R-Җ4(L>C񊯫ϨX(P"LQr} 8:Iul-g32"6WRjN 25zN5}RwCsgܣ0ñyd<,6Ml,ZtPiQ3jr;'numcK6'C%4N~ct4l#ȴdyUBЯbdQ$3k8gL LR 6%$YJspaS;Ȑ ~UT*d7ڣlB'q"nMJ]BEء^^B6gx(|q^7S{TwvHdC(=~Ok<8YjC*OI^c=H&'nsT]]X)5$魆l$q2W.41Kf7F+oᚗLPNw Zjq5QK=!4}s3(3tΨ,sCx1tbQEd.s>ñWEM>^CYK*:?l„0„0&awIENDB`indicator-china-weather/res/weather_icons/lightgrey/200.png0000644000175000017500000003677113530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:44+08:00 2018-08-17T11:33:44+08:00 image/png 3 xmp.iid:44418736-81bb-304a-8313-1266a94dd627 xmp.did:44418736-81bb-304a-8313-1266a94dd627 xmp.did:44418736-81bb-304a-8313-1266a94dd627 created xmp.iid:44418736-81bb-304a-8313-1266a94dd627 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 w cHRMz%u0`:o_FMIDATxqJEf5ț!3 D`vh" `XF.2V KRacEQ^6 vPB E BPBPB E BE BU׶?dm|~c G FthY%Bbc3'm]' u> ?(&'t6LH "/gYQ ȨVrANBP{o(ۓcsR_YܖeqU.uFպp@FM\fF [X@uCA;(H;)lm/(UPiZ:Q-+Q>Q##Sq e~Ģu=UZ bZ:~t&u@bQ|QuCgB*ݪ.ΨbUDz78Jńq!d?H) ʶBlf Eer-k_39JP9U#u$ qe;!V+JĺwHLe\g*uݲ\Tɕ;hw xmm;OT1d>dlgtuZ;FvE`9 a@ym]|) ZQUax.vS;K0JENUH\GB1&E#Ǭk_Z(|@继벁Xk1gQb>km21fUu@OYZ m~O1#ju oMs@\Rԅoc-0Q\>[J"ޓN ^V?Z2nYD!P>[ǘxxYJpASXwsYV+mT35GG4g8@lG5;%Qhʇ><6K@2[Usfh}Q !Qz&(=\,dAi(W 'C *XՁh,5Ƽ`Y5T )M!ZVi:ۡ8s\-Fc*$$*ܨԨ;9B\̬Ai " %\Y _6)9Mq 5 [%r-A.>ט̳wͦ՞8ӿ¾خ8hYgpv b 9ME E BPB)?J$MXIENDB`indicator-china-weather/res/weather_icons/lightgrey/307.png0000644000175000017500000003732213530705155022642 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:58+08:00 2018-08-17T11:33:58+08:00 image/png 3 xmp.iid:8b826004-d465-cc4b-ab8e-0f1d7cabc29e xmp.did:8b826004-d465-cc4b-ab8e-0f1d7cabc29e xmp.did:8b826004-d465-cc4b-ab8e-0f1d7cabc29e created xmp.iid:8b826004-d465-cc4b-ab8e-0f1d7cabc29e 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 I鄪 cHRMz%u0`:o_F&IDATxUHFs#@D" D`Mh"{ˊF{piڲԒȶ\M@X a1b @X ars)=H/ =U~GHCzG>="% ;XHQ$^/o]-\~wKd-D.rp=}n5Q*GcUc; G +@) &.xR(R ({G ;Rz^5} c$oHZٵМ*չ JSuAs0ԄZi$3PlmPaddi]]UXbLg0@qdc.xZl;Tœ@K&Fdd- Xd[Xyuּm Z&`Jq @fZİyCl![)wTHdGwWXx³/>@ $B"\4OwT` QTB3 Rʢ] >oJwC{Oj!D:) QY?dMj1tGx.شDJ`?]GbqeyLc(M^} j~0@ש55\@s@Yִĵ)c!Ďq|Bɴ c8*^b X.A!Ρ/p|͹Xiޑ8t]Gn*8!|36-pZailŧELLQAد:ɚŖygnhKsv[3}>aզOJ޸۩'|Ois [LZhIЛ5]VzUC [cKs]4ڇx|/`I&]W);征,?4kmQ VN~ xI@v]rAו5lCf\h][5𵖼זlf)MTtqẠk0L Ll늎54K6k $Fôom5Cmu3Ol n 0H UKb\{nlFg}*5H6f5_sg^NP׵o[H1 ̗ܼ|SpOPψ ߘ|F]׼t z@*=RȰ>HP~:غ [b{Aj7跊'^1EGbS?^W7靆 ķt JXXRRm0C=~JsK \ iUT,0a1b eQ >=IENDB`indicator-china-weather/res/weather_icons/lightgrey/300.png0000644000175000017500000003737713530705155022645 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:54+08:00 2018-08-17T11:33:54+08:00 image/png 3 xmp.iid:e654e138-9039-464e-be98-0535ab124673 xmp.did:e654e138-9039-464e-be98-0535ab124673 xmp.did:e654e138-9039-464e-be98-0535ab124673 created xmp.iid:e654e138-9039-464e-be98-0535ab124673 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ˱ cHRMz%u0`:o_FSIDATx]uJItW\A ,WIH@r+0 _~L*xkڕE {O0ܙ; `B„0&0! &aצ'Ȳ ʼnl! i|δaDW jDʾH dL}^R~"K a&GRBj,"c^}:BB"-fB~ rFcl ɿOK}$@hYjFG-/TҲDXkF5˄|B\2rP``4*-$4 -c"rm]-τDH3( S3dMF9ŀmu\Eq34 }͉ר: {s' $G$%C ]B^![7nE$D2\V ޅoE_nxFoA='K )kd "%ԕ,!b9!(2b}&^X !.l?X7+_.<c4R~Qv :jK!uzHHYn}SY9H߳:sߖpc؎ar=ќ;tF(v'>!wWRsQÚ:/(eBzk+;_l, dQ> U9pSY^eY6K yW]Zdtޭ!_G6zN#>/v TVH H'cSXAJNa.1>C+!=gBbѲ\i5'*Y@@rwQUk s]0YG m !wsT9R͔b:\9JJ@Vw$8G\VLdE3:0Hw5ȨV .ΐC8ꎹ$!S)*{ :f H!.1{OmRŠ\J1 wٲ$M[j,E{\".#0xQ$4{#k6]!6 bR8&dEא(dĨBS1%!2~r3M%@姣6/UP_*(031 Ճt=))FPPLJR I4✯A= #25OZV\V}մ?/?&`\XeiB/6p0iJ]poا{xL΍q M'KxLipְ8rO;4nThA5j*`o\5L-P1<@A_2!"=[hصmѯec;y\`BL`B„0&0| [[GIENDB`indicator-china-weather/res/weather_icons/lightgrey/312.png0000644000175000017500000003673113530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:02+08:00 2018-08-17T11:34:02+08:00 image/png 3 xmp.iid:c339b61e-d122-254f-9faa-53326201f815 xmp.did:c339b61e-d122-254f-9faa-53326201f815 xmp.did:c339b61e-d122-254f-9faa-53326201f815 created xmp.iid:c339b61e-d122-254f-9faa-53326201f815 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 $> cHRMz%u0`:o_F-IDATxuJ?=_*\W`HV`R}\At+p9 g7Zq QwA@ " D$@H "jZu`h?iJ~x!Szkf1 kfx:cK[PԏԴp .7Np΢r~A\[ lO -39uMk@ LxJipj٫c4,;aʪ`1̛Xx!DGxMdj))m6P9 i0uD~7ykFJۙ&:k! PiZ՘r@M{@JY1U*6ÿ HĮ48PEI@Y%E? kY(d2X>xg@b,]b(o!,WVAZ'bWȧ15X}Nk 1&o;~ ;JgwmLA8Ԓ(gZoZbYb7+k_w祥 Gx Va=>""b*(zJHVU⑶SX3b"b@ȉ/P΂Pe2%ACliu9uG,.U0690EW}vOk<џvBL-"$G5iN{YW,)jcYRR=8xH@{1[sW)X mM/_a|4Q :^<HpVxH4CѺ`]$)K  "o  QIENDB`indicator-china-weather/res/weather_icons/lightgrey/301.png0000644000175000017500000004003113530705155022623 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:54+08:00 2018-08-17T11:33:54+08:00 image/png 3 xmp.iid:7a8ad391-8d2b-ba48-b160-3b9bf92fbfb1 xmp.did:7a8ad391-8d2b-ba48-b160-3b9bf92fbfb1 xmp.did:7a8ad391-8d2b-ba48-b160-3b9bf92fbfb1 created xmp.iid:7a8ad391-8d2b-ba48-b160-3b9bf92fbfb1 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 g cHRMz%u0`:o_FmIDATx]u8VWr*T dW  U1, I¼E(r>7pb|u*p8q8@?^p8oB$2+ i VYcf1ŕU`<[ȬVbJ=DTZjS!bk}YZWBh*J)@ȫ y]+X !'7X^9I.k լaM yE6?LrYM#_ώj~) pO +;d{8S!)?˽_?(&?;Cp"+,,E5_Z[1 HFCbM_.qaʁiKBE2(m4oX&ZH&D)0rc3+w8/o޺t[)<@͑65EPYװ\" !o2%|%, .@2QPLFFӆ>X Ūď1c^Y<#J$\VMz]2 y먇v;e!!e%L1^WQb(iSO0lSC&Ď(`24 [dANtAOB/T v=VB `+\+AA,Ɉ>{#xHDWW1r̹D`!ŲO"Ǹ"cUς*YSxY$U)sK=BۆP/8զLmHIhe(dQC$0HEF,$3 |ckE]po]ܭM?ñMwY8zC&] <%I@x OϿ%ܖ*t]OP7m &` |^z;E7:_C}~]1VNuHĹ֣EN`Q6舼$`5AxF; cEg_V$QZSpS՚k|yɼyHDi4!ԽQ'Æ0{D#i3=MZWP} VA2W(\fhmLEM cكIVBvӱ%_y#Xyj)ű3ݴeY 9,TQhm*0V.˗M>N 2 Fy). iW*&l5fWBgyMk*^U6d= I1Ul*}<) * ոL W~1dUo,b^@s>À3$k&=W2y62̚S~|G Hߥ@p*3,T.2Sow[Mx\R&;WUckZB1mjA9b*Q Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:51+08:00 2018-08-17T11:33:51+08:00 image/png 3 xmp.iid:1a2e0241-a0a3-2d48-97be-d11106a05e03 xmp.did:1a2e0241-a0a3-2d48-97be-d11106a05e03 xmp.did:1a2e0241-a0a3-2d48-97be-d11106a05e03 created xmp.iid:1a2e0241-a0a3-2d48-97be-d11106a05e03 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 > cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/501.png0000644000175000017500000003473013530705155022636 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:09+08:00 2018-08-17T11:34:09+08:00 image/png 3 xmp.iid:8f23200a-8c84-704e-bb7f-394cca9ab6ca xmp.did:8f23200a-8c84-704e-bb7f-394cca9ab6ca xmp.did:8f23200a-8c84-704e-bb7f-394cca9ab6ca created xmp.iid:8f23200a-8c84-704e-bb7f-394cca9ab6ca 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 q? cHRMz%u0`:o_F,IDATx 0Lѹ\IX:E7%h `"'[eY~zx@ D@ D@+ Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:47+08:00 2018-08-17T11:33:47+08:00 image/png 3 xmp.iid:cc132251-6a09-8a43-be9d-21d95a4c0033 xmp.did:cc132251-6a09-8a43-be9d-21d95a4c0033 xmp.did:cc132251-6a09-8a43-be9d-21d95a4c0033 created xmp.iid:cc132251-6a09-8a43-be9d-21d95a4c0033 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100  cHRMz%u0`:o_FMIDATxqJEf5ț!3 D`vh" `XF.2V KRacEQ^6 vPB E BPBPB E BE BU׶?dm|~c G FthY%Bbc3'm]' u> ?(&'t6LH "/gYQ ȨVrANBP{o(ۓcsR_YܖeqU.uFպp@FM\fF [X@uCA;(H;)lm/(UPiZ:Q-+Q>Q##Sq e~Ģu=UZ bZ:~t&u@bQ|QuCgB*ݪ.ΨbUDz78Jńq!d?H) ʶBlf Eer-k_39JP9U#u$ qe;!V+JĺwHLe\g*uݲ\Tɕ;hw xmm;OT1d>dlgtuZ;FvE`9 a@ym]|) ZQUax.vS;K0JENUH\GB1&E#Ǭk_Z(|@继벁Xk1gQb>km21fUu@OYZ m~O1#ju oMs@\Rԅoc-0Q\>[J"ޓN ^V?Z2nYD!P>[ǘxxYJpASXwsYV+mT35GG4g8@lG5;%Qhʇ><6K@2[Usfh}Q !Qz&(=\,dAi(W 'C *XՁh,5Ƽ`Y5T )M!ZVi:ۡ8s\-Fc*$$*ܨԨ;9B\̬Ai " %\Y _6)9Mq 5 [%r-A.>ט̳wͦ՞8ӿ¾خ8hYgpv b 9ME E BPB)?J$MXIENDB`indicator-china-weather/res/weather_icons/lightgrey/310.png0000644000175000017500000003754313530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8 iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34+08:00 2018-08-17T11:34+08:00 image/png 3 xmp.iid:25728d4a-083a-114f-bd1f-4935e4367a58 xmp.did:25728d4a-083a-114f-bd1f-4935e4367a58 xmp.did:25728d4a-083a-114f-bd1f-4935e4367a58 created xmp.iid:25728d4a-083a-114f-bd1f-4935e4367a58 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ?k cHRMz%u0`:o_FIDATx]uH4ްA#)H@v#0Lfi< =%E9:֑QQ[[]|~~1\„0&0! & a0! & a0!L4ڀb }J/#k2g"$Swm."cAt_յcک$ GIIZkZZ`A/k SUkrP3ɐ |dJFFLF*wfS!sƙYOAd>$2şJ01 BvRԒ)p 5%BʫE%}R"@')2W ƅGEK\718='R7ڑ4:7Ww_!!豈$ʧ3_!EmL:aFa|s֎bm.]|͹U#JdiK:BxUU 8 %p؁45"3) S;\"eξN2/?̈xl3 _qI9 Or¼7 PCj۸ !޺V/.;ܧ0aI <4a06}6SFL- zS5-j!'6Wq)k!E {}h, YgMڇxс2WVkzJ\Z 1]B+]碼UEvP=/J' j: *V=WO̚\"4tM_6}ֹMB]ѶkEM -!iRhIV6!귯=|F9^<.!uBy cW>մst6}='e|Ē 0)/P5_XҊ}0\g> \4>y,Ξ>뒰]VeIQuq8̾^ۖjL/i@?+"/紌ŕ$RnWee@; I5AA-|3`Tt1] oICA7jώgj{V} !qL5:`HRU<5:}z9CEiQEzO |$$Cnv7Х jH{ttTE *ed`xMeb Evbp&1Đ0! & a0!L aB'r4s-IENDB`indicator-china-weather/res/weather_icons/lightgrey/211.png0000644000175000017500000003533713530705155022640 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:52+08:00 2018-08-17T11:33:52+08:00 image/png 3 xmp.iid:c581b3d7-0fd4-5d4e-be9c-4df46f8eb0d6 xmp.did:c581b3d7-0fd4-5d4e-be9c-4df46f8eb0d6 xmp.did:c581b3d7-0fd4-5d4e-be9c-4df46f8eb0d6 created xmp.iid:c581b3d7-0fd4-5d4e-be9c-4df46f8eb0d6 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Ņ cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/201.png0000644000175000017500000003676713530705155022647 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:45+08:00 2018-08-17T11:33:45+08:00 image/png 3 xmp.iid:cec1366f-9ce2-2b42-a44b-4038904be258 xmp.did:cec1366f-9ce2-2b42-a44b-4038904be258 xmp.did:cec1366f-9ce2-2b42-a44b-4038904be258 created xmp.iid:cec1366f-9ce2-2b42-a44b-4038904be258 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 n) cHRMz%u0`:o_FKIDATxu8ƿp=lc^8,T`B0ĩ:T0W%w`սW}QU@ E BPB PB E BPBPRuQ Hg~uR@@`ز˺V |O WԠ=}ȕ,ģzm@B^^vG *"4bFU+x9)?Y9DboFk(B븞%>w/0]Hrw3)+ ໼a{Gew|mIȣTR!t \@i:_DSC mG:a\xVt aFJwϮ($ DWZx3>?5_ 23sRkJZaX| f($,q>dwFdG~c> GCo^z1wUY$FE/yZc?e^`0J~#H"ZD[)UJ.χ6eRG-?BZh?RF96d&-nRת%뻯 O*S r8j nWa?ZPf%DU;8\$ 1,{?Ñ{<-J߲  'y1r%3uw]W?I_?دxoDk)볯z Ok*>C-o7ĶF9:@~3q^d?Z.]ul3?\.ip Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:01+08:00 2018-08-17T11:34:01+08:00 image/png 3 xmp.iid:68ea66e2-190f-fb4b-8167-3b6a11e57804 xmp.did:68ea66e2-190f-fb4b-8167-3b6a11e57804 xmp.did:68ea66e2-190f-fb4b-8167-3b6a11e57804 created xmp.iid:68ea66e2-190f-fb4b-8167-3b6a11e57804 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ls cHRMz%u0`:o_FIDATxuHh"hE`,G`)G̶6-GL/Wts8聠>4 " D$@H " Dd[t=z 96+RJ @~gR gXOے,f `+1Ď|?G`$ɣ V5m 9m }&c`ItuàwO>?y#k誀pKfWvP&y\v\p̣Pl2}FPJ.p{:ƖŦr&C [P6(M+jШ3a &KiAȨqS UTbH`.gF6<>d12OLLHld- $bw ,:ToV7{$>|kKJ<?b}o#NP`Z~d@R]b G v9B FBVJDkjOS*ƨ_%R*;uQ>φ; ¡6tݳE)z^Y󮿫5R)B) :[sH#+f1I{ya bqZDyk )RJƼ M0@IYEJj;APec(+ zF4aֵ+ +Ej}`^K~-N!4{҂ g@Dڗ_r"io7E(9|GٵV#qĜ)hVu[# `g>35fj#flK]ƐߟO]|͹0H1\Z~I3q8񈪍r+`02@D"R6CVPy%XfdmbI[ޙxl3ZET 6–_ uç ,>ګ3rtϘ% ȁaѱgdOgZ1y7s'3 "kzYOS{gcq Gx5LÅC?{0  $.a6c|\$0L/!\[@n; ]jТ%ںsɇþ.@2c"Ŭr]A7hpq=M?@{oOW) 51,KV+j.a;,Pv)WZ:<-JmC٣dR* A2t{eˎkQq7cβR22m{aW֛ӳ+ǃs(kI(78᪳;gBc~HbP'F%@V4 ReQ@{C_-}FXRRr3'$3k3zm?8U Pe  "" D$@Ȣy[G8IENDB`indicator-china-weather/res/weather_icons/lightgrey/901.png0000644000175000017500000003556413530705155022650 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:13+08:00 2018-08-17T11:34:13+08:00 image/png 3 xmp.iid:63f85d58-093b-a848-82c9-8134d20ace25 xmp.did:63f85d58-093b-a848-82c9-8134d20ace25 xmp.did:63f85d58-093b-a848-82c9-8134d20ace25 created xmp.iid:63f85d58-093b-a848-82c9-8134d20ace25 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 sȌ cHRMz%u0`:o_FIDATxq@GdRK= +R 0Rt\: >OdbcH+7#[h,OGB{A{G@B! @ !B:߀H$}4.Hz+gp!H%=Iɐ?SY$)$咆mm!$#IK{eV&@,m?BH\[$"R#IV3-+ Be\E^iRCHG-zSz~Ƹ!}l"!@'RG ^t9dB!ȄB =R}/ ^n/4 ,@Bm!D)AȕKpw1B.g.Q$-轟#|&5s_"<Y}gm#OUT&~p$}qD̮$CVΌ9O aQCS1ITnۅ$j~$>AKF-B EB9A,dӷ.[1iJJTn B~ |[ל9TGN[!+uTt60\ Br-V'(e˛`S'EK ynok4nsӶT,ōO͙!|CܦM>F:O64~t琅@B!BA2ߞ"dIENDB`indicator-china-weather/res/weather_icons/lightgrey/407.png0000644000175000017500000003745113530705155022646 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:07+08:00 2018-08-17T11:34:07+08:00 image/png 3 xmp.iid:d7eb5f8c-f50b-6b41-9da2-b403c2be59d0 xmp.did:d7eb5f8c-f50b-6b41-9da2-b403c2be59d0 xmp.did:d7eb5f8c-f50b-6b41-9da2-b403c2be59d0 created xmp.iid:d7eb5f8c-f50b-6b41-9da2-b403c2be59d0 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 cHRMz%u0`:o_F}IDATx]u>ؠג J&OP{;ęv'^y tK,Hm$,IF}uE>@>!!D!B@BB"B&|j@Q}x5o.H$Dўs ON^T։ORfٹX9 dB}) ҐJF( a&RB'vNGHH%B.rϚA45ҡJp/_&"SjI쑶p/Uұ=Xi Bm& !ױb=H D@ H~Fl☘T[L}P hTduv6mb@mQt\Dr3f4 }6e/M:' ˉOȕ M e󉢨Tf+qw(<6m ߌzIRV˪s2rWnoĨ;(:#>= $VQ}&$@]b8X+<~ c[#K=A]%2TW7i  8T1dlPgTmw KuQ?)PՉy7eQؐjO@;Z9R"v7xu)iL_lcN2qٚRJR=B-x6glCR{ૄ$4UrԒOErwGj! &{-!-!jF?)vYɒft`P1s{ +fܹ]pTsNBy2!9 #.3\{CmXŠكGM*bD,Feӱ*7){ФYnhŊzӜÆp .;^41Ig`ϚMmH!ˢIY$`:Cׄ,5'3f*M`$l}=45WwG]v̕Q031 oխҟ<yb3ƻ rF^cC6$|49_zL7;~flG <:t:i J IY*m,:;VC:^/$$݉%WT-]&,y~V4┩uikCnW8,3,ۜWxbB 0<$]C-uÃ!CDԖ+,\:x_86aɘ +Gsh^Ʉ\9ս7N~ņLY\%#'nt$(2weY ]@ B&3U|@Ni&,H`l3{^L!᝸c- IŬQ'!_ Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:56+08:00 2018-08-17T11:33:56+08:00 image/png 3 xmp.iid:44258915-4b8c-0a45-a708-2792d5df1364 xmp.did:44258915-4b8c-0a45-a708-2792d5df1364 xmp.did:44258915-4b8c-0a45-a708-2792d5df1364 created xmp.iid:44258915-4b8c-0a45-a708-2792d5df1364 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ^ cHRMz%u0`:o_FIDATx\q:=}k b*X@@@$Vp Vx+Xu}DQlcْ]`K9'K7 6LA $  B!p}߀^1H@H^1!"`DdaAoz! {fdȈ "Yyx: mLLLHȀ;. !qI!Hنu5zϗw Czm/wwz9M!Qș*jH+"m(gK9QY>xHBhA<(c\zd>~Fz .$2LzAבIYSu(2Sx!2w,ǐ5VH*d"9~"I҂ RsE&}"$!GFd≛>4~zNbtB"3!E7)JnBfR\bx\b5}zq1/Ԇ3U ȍG5mA_1RDbeWY|-Ncb9_^C=>3r?.giIQ RCƘpJH ).{@BHi6Iዑ$h9cT뻓` D)}Y(In0ƶqGV r@R2kCw%?;}dJB| n.L)^JبȹdxIJrn̉ B zri1#D.tWξ6!#"y DȌH9|BPp8Ar22l"[^Ҵyf _D&Dr,.k">lq2CgF__Ck!k6EcYm|+Xw5.1b+*K}mSæd!CA%GhC',D>+y9+SbO>0MTC:P5 T=wWmrC(|/omZ'3Wib2WAwbe%)a#w縁d5dn;g/SDqXAUR WGN . X} d2K2Xl1ȄwUC1uB68 v5lB^&dF.~@ZχΔ<6{k-r^մh6t*kQ?v'4 Wk4ÙEȺF}*ǽi(cpR| DUEMbC[gEd DUEo|T ŬAU&CUVS!F|dӄ訢,{Д2+BtTQnQ\cbzoLܑ2פ%HN3 tHtrЎ퐵!kgSGŶh:~dTIPB{)_=w}0}[ D/g}>{=A9 *dԮrDϑKC!@H@ $  B!*IENDB`indicator-china-weather/res/weather_icons/lightgrey/304.png0000644000175000017500000003730013530705155022633 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:56+08:00 2018-08-17T11:33:56+08:00 image/png 3 xmp.iid:76cf65d6-6658-1040-a125-c62563e07ee0 xmp.did:76cf65d6-6658-1040-a125-c62563e07ee0 xmp.did:76cf65d6-6658-1040-a125-c62563e07ee0 created xmp.iid:76cf65d6-6658-1040-a125-c62563e07ee0 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 >9 cHRMz%u0`:o_FIDATxu:ƿh;Nt`* PPHx* ^k d!~pB2 !յ ,wK@X a1X4}) !}L$p D Ok9A|XTO[Ŋne9U>=TH 1 8bQ!6#|D?ߩv{-uGyFY肀sw:ŗ !qLZ\jr+8oA}v5`TiҒOL|m  ~\O,T\k)#([wȊ>Xh;' wR%n;ze)oӷSUcOMߍ SF.QO{Db3zbǪO@9C}}iWGTx5- @|Z-/U;-q]VbQ/KJS.yK i.ȯ DJYUeZ Ow1q.hj02}t0Bd]YP# HO~K.% vV%xakӅh#k%,%Rlog3/RJ za/uTWmYIM[IAm6x6w^Vkg`靇w\!NIs @A1IQI! @X a1b s`sQIENDB`indicator-china-weather/res/weather_icons/lightgrey/308.png0000644000175000017500000003663313530705155022647 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:59+08:00 2018-08-17T11:33:59+08:00 image/png 3 xmp.iid:52972f26-0e23-e245-b40d-34c6bdac9cff xmp.did:52972f26-0e23-e245-b40d-34c6bdac9cff xmp.did:52972f26-0e23-e245-b40d-34c6bdac9cff created xmp.iid:52972f26-0e23-e245-b40d-34c6bdac9cff 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 /H cHRMz%u0`:o_FIDATxuJ? "+T@*RA L*/W 8e]IHwp@ivf|=@E BPB E E BSO>9J;ÉRR |a{kĝi @rLcV!nxc-G"9+ k\q!]{2 ӈ.N]1JeC Ff:6 &:Lihpb˂sH[,#(%KNTαbӣ9!y  +#4ÄK;4Նp6:c|1n1:m5EtWC*+1dlH\ $5Όl{:]ʬx2NYYKf݅mTlUw]2k8yڼn wV&y(ꓻ.[K_m_#Nn0#=3 xt]mc ɽ|i$$1R*mBHuSR*ƀhSqg#`>mC=(YRq@ lFeͻYY"#v IENDB`indicator-china-weather/res/weather_icons/lightgrey/203.png0000644000175000017500000003677113530705155022644 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:46+08:00 2018-08-17T11:33:46+08:00 image/png 3 xmp.iid:a3ead171-cc4b-7646-b516-ba5a694a9f9d xmp.did:a3ead171-cc4b-7646-b516-ba5a694a9f9d xmp.did:a3ead171-cc4b-7646-b516-ba5a694a9f9d created xmp.iid:a3ead171-cc4b-7646-b516-ba5a694a9f9d 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 | cHRMz%u0`:o_FMIDATxqJEf5ț!3 D`vh" `XF.2V KRacEQ^6 vPB E BPBPB E BE BU׶?dm|~c G FthY%Bbc3'm]' u> ?(&'t6LH "/gYQ ȨVrANBP{o(ۓcsR_YܖeqU.uFպp@FM\fF [X@uCA;(H;)lm/(UPiZ:Q-+Q>Q##Sq e~Ģu=UZ bZ:~t&u@bQ|QuCgB*ݪ.ΨbUDz78Jńq!d?H) ʶBlf Eer-k_39JP9U#u$ qe;!V+JĺwHLe\g*uݲ\Tɕ;hw xmm;OT1d>dlgtuZ;FvE`9 a@ym]|) ZQUax.vS;K0JENUH\GB1&E#Ǭk_Z(|@继벁Xk1gQb>km21fUu@OYZ m~O1#ju oMs@\Rԅoc-0Q\>[J"ޓN ^V?Z2nYD!P>[ǘxxYJpASXwsYV+mT35GG4g8@lG5;%Qhʇ><6K@2[Usfh}Q !Qz&(=\,dAi(W 'C *XՁh,5Ƽ`Y5T )M!ZVi:ۡ8s\-Fc*$$*ܨԨ;9B\̬Ai " %\Y _6)9Mq 5 [%r-A.>ט̳wͦ՞8ӿ¾خ8hYgpv b 9ME E BPB)?J$MXIENDB`indicator-china-weather/res/weather_icons/lightgrey/302.png0000644000175000017500000003713113530705155022633 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:55+08:00 2018-08-17T11:33:55+08:00 image/png 3 xmp.iid:f9bbdf00-0661-8b4a-98e7-86410c549cc0 xmp.did:f9bbdf00-0661-8b4a-98e7-86410c549cc0 xmp.did:f9bbdf00-0661-8b4a-98e7-86410c549cc0 created xmp.iid:f9bbdf00-0661-8b4a-98e7-86410c549cc0 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 3nh cHRMz%u0`:o_FIDATxq:ƿl,ETSA,TRIx+lyK|+ !3B #,0$?s#ɾy}S@X a1º)7G ^?P_ p *YMϜT` ?gSh/k/+`%m ``>D:F q_ԉ*[q89J?^_߽0N(~oO{[z\T7}rY@C[d".˅Ihz[~Sp)kF)HS-+ Ɛ^P6"NY[f*CEjZBLY3FNr,(̵'DHlX^"\QpIH@"JC]eF$nCbNipft o ɭBbz4J-1Rn4zq()†Pgtۊ>DcQQuZ9S;aB":7)z!{|.(^=9B]H jeaeX^PmE2exkX} Rg>RB%cܵ!+e`Av>RVQAYFfc;B9LG^m-󹯌H?RNt-s 4BqpdLpޮEQS\PY'cD5y0 z(d9GV' Ȍ"ϵwǎ#f\1l4:yfIKӅC#JbX9}D`s.Elq ϒf~Fs?}mFZB<w=1:ёxֳmenn[a6G1&ɳۊNt ?zNZ66S"Rq(pOnrX(-額 /~E:+}=%#t Xm@mlu@VԐn`uh>V(UѨ-ܪx } 5@BMP- M 2x~[RB HD@X 674 M`5$C@}Y4#a1a ,@X $\?_IENDB`indicator-china-weather/res/weather_icons/lightgrey/309.png0000644000175000017500000003671513530705155022651 0ustar fengfengPNG  IHDRddpT pHYs  8 iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34+08:00 2018-08-17T11:34+08:00 image/png 3 xmp.iid:5b239630-c6d6-e54b-bc4c-e2210addca4f xmp.did:5b239630-c6d6-e54b-bc4c-e2210addca4f xmp.did:5b239630-c6d6-e54b-bc4c-e2210addca4f created xmp.iid:5b239630-c6d6-e54b-bc4c-e2210addca4f 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 `*8 cHRMz%u0`:o_F'IDATx_vH?8+h^ dmV0 @gaV ¼˘4̃NyEAC!Ñx~UP齽j> "@(!@"@"Zۆe}#K%24 HC&mk?ĝi` (m(X,f`RB/G`eS `@ ״pw=w{&U`ECzg UC1Ywc]qMH @)EGs~{ṣPqh簑cTl,1$#x%Ɂе,.ŵ3IS5` a s #A]HqSU~WbPH|m Hj:٘t@哫U*U$RD',%Uwa % CuݣžWJ2UF'.ovIYIGCxÉR7ֱiD,:sW&MC1 }m!ʗNBc6bO)ڨ>*1&km^F !/;Q ~^bkb]`+Y[]#:cVFkGܸPs6s^5bRn\@2(HuBtccLB[*z2p&=(N@nwALPfCЭ7(:,7 H @r֣:0ǒ_nKSouf/TC ÚK ҫo q߲o<1ƬU0`QIZ;fKϪN"̏Wp&+w(>霴w/?bv1Vg #c~`,uq\ Z~IE3߱T#U<(7PFH]oȟ-"pwEUoPeXۧNsvJWԘQIwrFP5Lzm#OWiyɚfrsn;4ajC9f5Zl@9mT;W{"7\5_ֽ4F zlprT r~ku`9Ohb;3޶rս^^"#lba8WX2ޔ 7GS;ӂxJ>}N7{ed.9!X7Jmʃd$YP8$m:-"@(!@"@"@(!@\?;ʈyPIENDB`indicator-china-weather/res/weather_icons/lightgrey/206.png0000644000175000017500000003663013530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:48+08:00 2018-08-17T11:33:48+08:00 image/png 3 xmp.iid:c3c27f93-7ec6-6b4c-991d-173dee854d6b xmp.did:c3c27f93-7ec6-6b4c-991d-173dee854d6b xmp.did:c3c27f93-7ec6-6b4c-991d-173dee854d6b created xmp.iid:c3c27f93-7ec6-6b4c-991d-173dee854d6b 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ߞ( cHRMz%u0`:o_FIDATxqLŏ3y W *SA (@(WwG, iΙ0`ݽV+tl@7@(!@:vm`Zx_x(q(B1+&%'?B@uH}3'0(-+: TDA qp=@c\^OXo FLPJ H:,y"/@Vj~xm_d{_YbHFb~.@ۼquƽ}ps7S Zz GQe{jZ#kwG޵㵮dؠ[qa5m j HŅe Fg$響osYM:5?ď@&ze JI]  ZW(XVFS䃒لd@>61I[Fj, J}֖3+_%o}UYsrh-g=BGup: $W˱ ڻg [1\B[u XriT YKR:hC im}χ}%1mZ@تEԣ(*Tt]--i |X5)ۯk {v#Fbơ(Rk67^֎=ܡWCbe1^>Wx|Y9[::sX2gsq}1i⍤Ud-5\5.w}ĵV 5Q^,$Q-p)=rS(0^FTIEPΝU<]7v B`݉k|bt}WZ}.~V/ʾ|3QN.=62.c wX}?d`KI]mŖ2@${[+Is;fEP\>Ou@FQZRBS+ȁ@(!@"@(@(!@""@(!@"@"@(9Oe($=?btj'vۧpEQoP貺==@@ Cܕu<*PL{ ""@wKdQ1$IENDB`indicator-china-weather/res/weather_icons/lightgrey/212.png0000644000175000017500000003533713530705155022641 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:52+08:00 2018-08-17T11:33:52+08:00 image/png 3 xmp.iid:fad7f564-800e-c64f-9dbb-fb94ddea0143 xmp.did:fad7f564-800e-c64f-9dbb-fb94ddea0143 xmp.did:fad7f564-800e-c64f-9dbb-fb94ddea0143 created xmp.iid:fad7f564-800e-c64f-9dbb-fb94ddea0143 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/403.png0000644000175000017500000003774613530705155022651 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:05+08:00 2018-08-17T11:34:05+08:00 image/png 3 xmp.iid:eac18732-d885-7e48-93c6-8d326d28d20a xmp.did:eac18732-d885-7e48-93c6-8d326d28d20a xmp.did:eac18732-d885-7e48-93c6-8d326d28d20a created xmp.iid:eac18732-d885-7e48-93c6-8d326d28d20a 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 `$5 cHRMz%u0`:o_F:IDATx]˕H3XvpLG`!#ZmmZAk"Y@Ox޷>ܼA|P(! %D Q(!JB QBJPBJPBkѴkm~t91]#qX@}o4eXN쐮9i N} =BFHW3\+~昦[uCgA#s4]ѩl槶?XA99;z}̸Nm$IH#Wۜ6⚐,n'8@pQ>N'9!q;z RR38)k {)L$<glLKN]p[}Y~_|T22@q¢1% Mv\"d$^eQK"FaOLʫGMKMRD2!X'>2 ƒВM\! \;FyH@*<$$- HVƘXkkӈ.b _cb+}Ǥ/a|blqGwrcXkxQ8!jG1!?"C1fw6B#x2!+k1I S[~ ΠEYR5;{7DJ/Ra-g2aQHDFWUKN&傽RK=s(_2$7_"To|tBԙ_fSoyb/ESFqUB.UPcL("(>ߩ̏/BJvr?km2󆽔Ng*sF*e:aJ05k\>$%so62B;B0%-ҖW| +ϨX(wFH}ß?-"03EjU@L՗`U'I/6PgJUs"6 \tӧvb}yJF}ǰHY pvfّ ~ Cj:y<Ƙ i@yYCǧyOlمMɘ#|f3"i-ƘP:]cȲs^;=t"T%$)PCs'GW5!aP(qǽ^bN=N\a!B|ҳN~ttr$P[W_Fd児V#:>قBIHuqW5nrS]<&6V?{H88\`ZM/,)rt㔏a3BJIA1i\3Ȭv `ŧ<&kxLM1ؿj8mצ@sXI x_g^u$WSɥ?tx>]|[ϣ(nS*!юi-*! Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:41+08:00 2018-08-17T11:33:41+08:00 image/png 3 xmp.iid:2b699698-24c4-5e47-b1f8-07e09a382bf8 xmp.did:da4ac565-d7a1-0543-bb87-7d2c8400435b xmp.did:da4ac565-d7a1-0543-bb87-7d2c8400435b created xmp.iid:da4ac565-d7a1-0543-bb87-7d2c8400435b 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) saved xmp.iid:2b699698-24c4-5e47-b1f8-07e09a382bf8 2018-08-17T11:33:41+08:00 Adobe Photoshop CC 2017 (Windows) / 1 720000/10000 720000/10000 2 65535 100 100 :z cHRMz%u0`:o_F/IDATxq05. 0N*] lU`u`Pg\t@7ñ#>.u;Zq0a ,@X a1V.-@Ji)]?&@NV !i!1GɄ{7fF=` znXN-c@[SrU*e tP;\Íb@r]+*Õ;g z+f^\UWY}k7RUS%[h82ML9Se=~gXI0~`p_%<- l.!$ .!uJDRgꇭH g:Q[`1umvv6 8=gK3X!ăvCƬIq5c15%}syU,FG0=-<,S@NC^6z042Q`H `X7ަѴ ִeq]uLĴ8\ڍV*|@b IJ=pM SDJ7 D`A?GlͅG@o?L1*2%oͥ>jU}9鄝By{>۪|1F}وW*P@ D/ (@*^wK@#`YJoBY3+bHm o;<dK @:}:d'V@T:eRg ,b @0a wdC]QIENDB`indicator-china-weather/res/weather_icons/lightgrey/502.png0000644000175000017500000003603513530705155022637 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:09+08:00 2018-08-17T11:34:09+08:00 image/png 3 xmp.iid:4eea87fe-c3b2-da47-8d21-6e1645e17530 xmp.did:4eea87fe-c3b2-da47-8d21-6e1645e17530 xmp.did:4eea87fe-c3b2-da47-8d21-6e1645e17530 created xmp.iid:4eea87fe-c3b2-da47-8d21-6e1645e17530 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 ؍e cHRMz%u0`:o_FqIDATxQ@:W@:8| ++*P+*@@@sy x~86KnaF /ߗM8ytS!BA !@B! @ !BA @B!8|;Yמm?%$&x~HJ$s.hP'sDPҥ5:йuRB+Bn!KzNهkI,$=8V]җt_*m4Qz#sK$d*iR3>-Ȕ^ŝ_n97=,I[^[j/K+5ɖ26.m{Rr! MR+\]x)MERI,{~v%sM2y[)9M&YZy1φZM ɲlGv[f.";9ιy xJBX2d Ϩox \˯L2޲H ױaUr驧⳨)l_T,S;!Zӏ!9#EZ1= e^a/@!k XjnBeCr>bq],#aEv~Nvu mkV* k[J55[91ܬ뽖9w>HKl_x,3^<׮YlfQQ-jgbY/}79k-s[!~daoy"Ǫ2Iz}hU׻>:Wkk⹐T3ToPlJI[I! t!rjP/C\gJH(ih!A !B @B!BA !B! ĿDc%IENDB`indicator-china-weather/res/weather_icons/lightgrey/208.png0000644000175000017500000003533713530705155022646 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:50+08:00 2018-08-17T11:33:50+08:00 image/png 3 xmp.iid:7091f950-ebeb-e844-9cb7-79ab5df69690 xmp.did:7091f950-ebeb-e844-9cb7-79ab5df69690 xmp.did:7091f950-ebeb-e844-9cb7-79ab5df69690 created xmp.iid:7091f950-ebeb-e844-9cb7-79ab5df69690 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 9+`= cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/103.png0000644000175000017500000003724013530705155022633 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:43+08:00 2018-08-17T11:33:43+08:00 image/png 3 xmp.iid:a06df4a9-103b-be4c-9a0b-2bc848cef5c5 xmp.did:a06df4a9-103b-be4c-9a0b-2bc848cef5c5 xmp.did:a06df4a9-103b-be4c-9a0b-2bc848cef5c5 created xmp.iid:a06df4a9-103b-be4c-9a0b-2bc848cef5c5 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 d cHRMz%u0`:o_FIDATxuH~o6(#0@R"tl٘ɠ&BJe@ #YHD|MN " D$@H " udYևM83xgqY-bی,$,@ܺd=O+g&@Y %6Y3P\e'ݫp9&s?Z5de + Cā`F=]|VJ'wE>?:UEL)fma9T@눠$-Ҿ7R!Vb?϶XK*C2ۜU@X -Adžۖ$C,JȠhӕ|_%$ٶ1r 0TSHBQ/MޅQ r*PMNAǾ2(/eY A8)WuA)>hd.q8UK0,@LC M(NA}tc57QcڛF97:dL;4 ,˜ƽ^ [va/m"B G)Q(:UH(؊[ѧ} Uۄ[PO(_S5w kpaJjа)K^yLkza-Ld\K (8#[%" 礿f}RլHk\90F%0|H8o7Z;6¾ǥ++/zVK)SOԅUpCNZNśeKߘ+ӧXLy3}vg<"OXP00DA^ǖ%t}}mƙ4q8KZ&KLHYArmD\נ\=]u2)FUHf6~^>gCCg1Z?TvR#epp:!K9%~X*x" d,kol;>}Viq5.\])iGDrk9ܙr}r[sLY?\@<+ߢuXP2SmA $6\WKEzN(]@kj0c +f *}CpJEnē' =mcP.1$}g(Z8^x1~P-x\3Q|3^;UY_׺Ǿ[:Eh7.+2wI sO1\752m]Py<~+'(+ɲ,P=YW$}l֑bx2-oW!*/qo@~1xtS@+uE^ .G%2 oq_؋6=3%Zlb8FqgTQѷzUA5KC+vT.v~wy '(@bHJ֟l Üf-e[Z^*7+cAawy{N`D^ ""@DD$@H "E%Y^ Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:57+08:00 2018-08-17T11:33:57+08:00 image/png 3 xmp.iid:b24ed50a-0268-224a-8105-b51a66658659 xmp.did:b24ed50a-0268-224a-8105-b51a66658659 xmp.did:b24ed50a-0268-224a-8105-b51a66658659 created xmp.iid:b24ed50a-0268-224a-8105-b51a66658659 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 *T$ cHRMz%u0`:o_F5IDATxu8?}L+\R@V+RAD[AW\BWnރ14DH==32ECq0"7oooD$@H ""@DD$@HmvC!"_@7I _MuFAMFUdCb#p Ph\јp m*?X01 .Q/$fw,V^3+ȂE2[ C9OcoaYIC&x9WL$#.GsL8n)<5 R*xQ5DM<ϕREo@Up!p6P+ޓE)z]UּgDMf1tMɏxZwDkaW3בtr[bJנfW ?5ҍ:d&:eU@R*ludj-d,lj%g 傍 9+ |F4bֽ+ KE8"μޗ(:u**΀'go7E(,rJG³G2+ JHkHJF@lUNgemڄKF<5[G†>% ?tsm0V:NC Z~RkZo8\xFB'> a=46"2wm(l=AX| 6ح:)|#mS?\> `~% dfP}a""@bFA_xі>LUڳ-}YwcǏ-}p5A?U-O8V}jKow-CO [\pemҖހdK[zR~5?Dp2(k~|2H vOW2wӝʒGemlk;YsẇUI |@V-'@(_e[:GX6 [:GXKKtc Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:03+08:00 2018-08-17T11:34:03+08:00 image/png 3 xmp.iid:0e0a4f35-9d39-6c44-9568-11e4f165d998 xmp.did:0e0a4f35-9d39-6c44-9568-11e4f165d998 xmp.did:0e0a4f35-9d39-6c44-9568-11e4f165d998 created xmp.iid:0e0a4f35-9d39-6c44-9568-11e4f165d998 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 @x cHRMz%u0`:o_FIDATxuH "W\AD `W[ VD \ŗF1ǀW8' \S{zcIc@) 9{^sͽP\eq>:"(';:. ]c!ba9!U w] ҃Cu%P*!< :/&KA](s)]}eߖ 9O%Ƽ:T)I*VwaZ M@2qȫG@D&B3T @2QM,= +I|uHo8Qx[G0 9YtcC2섏}j ,!Yc(Xk'gӜ &eGe?6ƔWb.ȬY8G{jc28k QY~׏Țxt (xhYbM0זtqe&,l(礽r jaͩ9ݸ~XkDP(==_crJ)E" b؂T+9],A- 6P, EP3$T_yñۢ[iT^3B 갊W\IϾ-G|cJdBdu~}WXWڑh$ 4~UMg6猖 3N9g̺l#ᮞ|Ɛj_.a Xy\LZ^QibW Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:13+08:00 2018-08-17T11:34:13+08:00 image/png 3 xmp.iid:b8fbf32a-f471-1e41-946f-0136cd2de746 xmp.did:b8fbf32a-f471-1e41-946f-0136cd2de746 xmp.did:b8fbf32a-f471-1e41-946f-0136cd2de746 created xmp.iid:b8fbf32a-f471-1e41-946f-0136cd2de746 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 O cHRMz%u0`:o_FIDATxq@GdRK/{&WK*`\ Cy/V t@|2hY-zofG kȏOGb5vB! @B!Br>6ww#EҨ~-駤m=s D.I@s O!EH%t+i`vB1K4e}l!B0"mWχjŤaI^.Z+jJ叐"D6̷9ȏH{[=|UW qέ1X BL-!\\H_49eB!ĄA =R}+ Vf/ā^"@ipo/B{{\3q!|fuO2IBNg!i>BNQw)) +~ WѰٛI\%J䜫3 Y9S"xt{!%|!!!# R[]RĒR1t:>}*7!Uo!Ǚ1٪,ٽRIzPY#\nsnNǰ9e@)K\S:)-ZZ.HUs%Bt眛tR\\kԜ b*w[w頮a"幥?Ki~w`sB !@B! g IENDB`indicator-china-weather/res/weather_icons/lightgrey/504.png0000644000175000017500000003565613530705155022651 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:11+08:00 2018-08-17T11:34:11+08:00 image/png 3 xmp.iid:faacafb8-8cca-d249-9480-ba94972a1478 xmp.did:faacafb8-8cca-d249-9480-ba94972a1478 xmp.did:faacafb8-8cca-d249-9480-ba94972a1478 created xmp.iid:faacafb8-8cca-d249-9480-ba94972a1478 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 D cHRMz%u0`:o_FIDATxm0@#ij ` 1Ϗ{s!BA !@B! @ !BW@]ק/VsJ$H*Zsotգ'BrIێ[+I3RߧlH)CYoecqAFTH.) ݠPӺszfPH6R*yR_ՠ@d/-s1!&DF>9LMSq>MUH'jXB!$~dSzn1J, c bYH#+@$BY3QHsMd ܡ[ [*X+ŐUHϚV3疈v_o4tP#r5"rsn=y $i+ѱ $h>u6'ODmBb1 z,js霫(XfϗhN*]/e !#a0dt"v$v6mB_ɓy!5Ll%="$.0ũHcq"$";JU s"$.(&~ꤑ:٤2u&u@B!@­:a!v'_!ȸH+7Ȯ+B6ц,`RG @B! A !B3Q1ɶIENDB`indicator-china-weather/res/weather_icons/lightgrey/402.png0000644000175000017500000003757413530705155022647 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:04+08:00 2018-08-17T11:34:04+08:00 image/png 3 xmp.iid:6bc6adf4-d5f5-8b41-80e1-81a9f0cd2ad7 xmp.did:6bc6adf4-d5f5-8b41-80e1-81a9f0cd2ad7 xmp.did:6bc6adf4-d5f5-8b41-80e1-81a9f0cd2ad7 created xmp.iid:6bc6adf4-d5f5-8b41-80e1-81a9f0cd2ad7 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 E_a cHRMz%u0`:o_FIDATx]͕Ho#|"0!"Xk_Fh#=L.մ@ =yyy;x"PBJPB(%D(%D(!GXk;GBzУcEHG1D~8 FC:gCz,HcCA'2"zеJHs0M{0 vKI19MMzf{H6?wDV_LNݧm5B"Ww{%mBb _pAcH{᛾ |#߸ |=iZ*`NNZ{ S% 'r)3-lKiN]p;}YP|L12@qʢ1% MnT&AȎE-]Ad!23-V^=lZrnBV"$"?Y H>}HV[@(n626B;"0%-Җg|;꯼F{`0Rv }ZD `RgH/N:hiw_peD<2Z8s`-!3k~Ӏ#A椸r <(^Џ;2A%XS|Cߗ K AIzb%d<%NsmdF"+{9ȍxTɂ+c<a8UK'3wLGFāTꬪr3)]ǓG;i-&ƘH:UcfhI@|)PGzQFBcy Ms'_Uђjbۤev:J88mk\8-Gd1deIp)~x$Si2< !/sYvN dX7Ajg(G0 X9+G0-ㅐKEĠ%]G/8m.E!SBnQ!u4%ԯ3 ߖm~hWExڸt aJɏE3SB.{Hz-4%m12S^d"4xwh+d)! %D Q(! %D Q(!iX~(IENDB`indicator-china-weather/res/weather_icons/lightgrey/405.png0000644000175000017500000003636513530705155022647 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:06+08:00 2018-08-17T11:34:06+08:00 image/png 3 xmp.iid:171ae9d7-8382-7240-894d-567c52c0f8cc xmp.did:171ae9d7-8382-7240-894d-567c52c0f8cc xmp.did:171ae9d7-8382-7240-894d-567c52c0f8cc created xmp.iid:171ae9d7-8382-7240-894d-567c52c0f8cc 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 {rCW cHRMz%u0`:o_FIIDATxq@k\RAT r + D@/tl!j?Ì=ps: H@ " D$@H "2ۡ (.==Gށi1M_5\qAwrW-(kT fTHGw/L,fٗ(kO:Q!m[9Taȍ #»G]*޷pU%bK @*ė$dt`rv }B ~މʂ+kbYRJ wSKxp+*-ƣ o5-z&Xw0z, < >CR&=rJwV56 !7C7LP]RfC|uঁD8Mf# %; _؃ HfQCYlB Ȏu=!|p^Y ޅ DS/f° dI!m?~O2]0l#~iK\" @${@srjm{ͩmG} `<Ekech0;>l[#e|9$4 1 ; cFc5̮n0b ˞"P+(/A +K~'7>Lo3~K+m#A (`CLP0I æq #F&b9@ed  Gy 2{Jd*@ƀaԬd,1o2:J`#R^nb`R 0\I|7q~ǑQZnW3UZRiHg Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:12+08:00 2018-08-17T11:34:12+08:00 image/png 3 xmp.iid:31bed80b-bf50-7747-b5ed-6004a7f40c04 xmp.did:31bed80b-bf50-7747-b5ed-6004a7f40c04 xmp.did:31bed80b-bf50-7747-b5ed-6004a7f40c04 created xmp.iid:31bed80b-bf50-7747-b5ed-6004a7f40c04 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 *X cHRMz%u0`:o_F 6IDATx]UH}{"qu#D0v",`WnIzOO~%uUW/8qq8q8@8@ N N '̟ [QE?0{^HIC?hH >'(DX>43 sU a>kE +URVz4Y9Vk U$M ~E@#=ۘ= )Tzn ,Aks'IM1xMʡ .t`A0E.N]S/e>*(,N@<K #-hLV~0}? 2se}MޒL}_w/P̯L{~H^8^t%Yנ[HVYˮ`Dd$kCL8~J #UX1`.:h1 /|۶iE5.I}.k,* qCaW \8mr#\9CAh\I[+px5+_~Wiyg?Kkr,nXqm}jOMdXeWdm(@o0N(}9҂5gWfwEЮ%ߤ@#٣oL茎Y_\d+`[J%jy`qq5H*ĕEk?a_ҭZFd 0sƒ,PdH.r1p =MSVslb0#EeQ԰|_|# S׉ekAj"HZXPu|qOȝGd=iW0}+ }Y  n1'-Ha!&W0amIv%BȲeN."^Q:WRu_VՀ< f;1X+5y [ă}=c K7QN4ckiz!#vcm欲 ?vY"5qUlppU)q/&Pd-hb=0ꛭQ@ s|Q@"  vBmi3ŔcPR"+ٛu\G@LĶ;y!>ejEױ;VtdMu i%H#KYGИy$pKz eixFE|6)>#TȺK[""FiX+MQn2"hYږ-)j.K6AH%v2ZR$$sͲmsIF?!6~cd;RF{^WF -iv^< }.] 9>H-yWsijUĉqq8q8qE:M^IENDB`indicator-china-weather/res/weather_icons/lightgrey/500.png0000644000175000017500000003641313530705155022635 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:08+08:00 2018-08-17T11:34:08+08:00 image/png 3 xmp.iid:8c435070-c474-1042-a8bf-900675a56fdc xmp.did:8c435070-c474-1042-a8bf-900675a56fdc xmp.did:8c435070-c474-1042-a8bf-900675a56fdc created xmp.iid:8c435070-c474-1042-a8bf-900675a56fdc 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 4U cHRMz%u0`:o_F_IDATxU@/c*6N  WS 0 W O1ɶ,X,}~hwPztS@ E BPB PB E BPBP;˾XVmè@. 5Z$!@6 P!xpSFQx02: `& ڰp wGOwq~nJӊ][sQx,!'Q9+Ia"Y5EF(Q0FYDΙ0kI֙Փ~c;HѓAtH kE]t3mAi穤;!Hhr2sph~QK[o L(5z @3L)t(4Wt!*r 1kV!Uin(' t/tJGvB!Zc (Մ"_5\e(_Q؈@`UцȯE.2St͑m Ps-O0mffSmsd*E96MKIC(]ޙS@\V~8hMC!IIMNf\]*E~ DP}iGw OF-mϋvT57u2e)S@m.RTCV^r-~ G+zQ'4po)6ƾm55Ukfwa|:muft+Ǣk0ޛ)6T,;0̰;!J`99MZ -0P&֚h &-U:~ }$ZmԞGIi C6DŤ퓠i@yøD^E& te+F ZA>]DRVYk|"$c[4)ΡiMY \m'1?2nô)@(@(!@""@(!@" oJnNIENDB`indicator-china-weather/res/weather_icons/lightgrey/104.png0000644000175000017500000003735013530705155022636 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:44+08:00 2018-08-17T11:33:44+08:00 image/png 3 xmp.iid:5a6deb88-0680-5241-a978-555604bd3e0f xmp.did:5a6deb88-0680-5241-a978-555604bd3e0f xmp.did:5a6deb88-0680-5241-a978-555604bd3e0f created xmp.iid:5a6deb88-0680-5241-a978-555604bd3e0f 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 |V cHRMz%u0`:o_F}ﷸR[vBH~f/XX }bJdd3$I$ILG&k̲S `"eGƦ#cβ8uH f70sˬlHa.Ft DbܢjjS-.8-D%Uпh @8e %d-jfxp@?+,y&l$IX?ffC!6DXZ!(Ge, ." [~| Eti,IΠ~ʓ S\f-~q@F`k iu ]\ҷ>@n ?sPI 5] yqӞ w_(H2ڈ~G@7IxFɄYC+ʱ:rwi${$iGg&/r*f"cʹ6RpIpa؇a0Nw }U4s ֠ܮb€ALH 0@:ZAsNP&#mC >YemGHe4ŊRB xs{s h(Kqږor/~1@> ;e]V@a l 1@GoݚIENDB`indicator-china-weather/res/weather_icons/lightgrey/102.png0000644000175000017500000003631513530705155022634 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:42+08:00 2018-08-17T11:33:42+08:00 image/png 3 xmp.iid:e73d7dbb-66d5-024b-bf1e-24fd2e4cdf94 xmp.did:e73d7dbb-66d5-024b-bf1e-24fd2e4cdf94 xmp.did:e73d7dbb-66d5-024b-bf1e-24fd2e4cdf94 created xmp.iid:e73d7dbb-66d5-024b-bf1e-24fd2e4cdf94 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 Oka cHRMz%u0`:o_F!IDATxU@xG .{E@T]r T+t { 9x,Y+$g1άWg ;s(P B!B(B B!B(BPB!B(BPi/[,+YB1tKHHJ$h&"'`ɔ {׎ik:@|i)Ԕ\s%Q Kt Meu9;vO^C"jP% C"+TwtOeWG@j.+Ȁ(y'!ƵECi&0Wo&N&Bd\7ZyɺrUV$M\FJΜ7#yTH)+.e-ș @ dl_.(SQVl|u}ǘIJ)B* \LT>54LE䘄DR}CBEI3J2u %-GG&ģjbb[X.z&$u@]7YuN4:1F5إt}$fQ?ƘSXk%elT&.; S.ZKs;=E(Kc6D&Z`{giyIaSvJSN)-"1Cmp#Y&_!P 1&Np;#dfG HBn4R2޽ UG-CH^0,9Qʭ* \?玬ҨX5@dwd*m#7R| !SB>_m xEʁ!WBp%ӷU]C܆'-p*H 3hTxϸseTfSe;\F[tD>YiWww47Rԧ,YEGUFM[:&c[,*\V! wJ  D;pDO(2RO#}ߩ1p깬RF,ה%١BB(BP !B!BP !B!B(P !B!B(.?F~IENDB`indicator-china-weather/res/weather_icons/lightgrey/209.png0000644000175000017500000003533713530705155022647 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:33:50+08:00 2018-08-17T11:33:50+08:00 image/png 3 xmp.iid:e9542ebe-f607-3c49-9ed6-196c9c020f2a xmp.did:e9542ebe-f607-3c49-9ed6-196c9c020f2a xmp.did:e9542ebe-f607-3c49-9ed6-196c9c020f2a created xmp.iid:e9542ebe-f607-3c49-9ed6-196c9c020f2a 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 9m cHRMz%u0`:o_F3IDATxQ0Eo2.%֦B T @ d;;h 眙,Qt'=K/. tB! @B!BsS)dHJ*$5ƘF2)]rC7,'d)nͺ1YB`L} ;U1CBzD1s%/!!mB YkIϒdDxuBA -{kIJw䖰]BGʄڕˣ1Jy>$srC:ubC<*-bYE !y5F;D]+irGH?4!9Dr.m5&!B !.SD$B*>ȭs޶6t /FH`ً@B!PDe>؄J!kd<ֽgN#SGDq,@ !?gW!R#߁Rtt/~ d!@ !BA 8m"IENDB`indicator-china-weather/res/weather_icons/lightgrey/503.png0000644000175000017500000003743213530705155022642 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:10+08:00 2018-08-17T11:34:10+08:00 image/png 3 xmp.iid:eea72a05-2ee3-9244-92e0-590c13eb85fc xmp.did:eea72a05-2ee3-9244-92e0-590c13eb85fc xmp.did:eea72a05-2ee3-9244-92e0-590c13eb85fc created xmp.iid:eea72a05-2ee3-9244-92e0-590c13eb85fc 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 TH cHRMz%u0`:o_FnIDATxQ:V/zTS&**HP ַ'JI,VLK?o9@K$H @ H$ @ A$c{)%׽D1}H|/ӫ!( p Stނ>rba-J68$0 Z6i Ҷ@%p `bpl ` +n cVgnQ7?氷p_0׈~ @\,)3gҩG4"|R@3(0BcwAʄf*S-wJ\LVbk=Y ~:-lQ8ؘ/Qt??O7%r3+8 1KJPW1=_7gk)e4& JbeڊkQI[2MCqaVR\= RʾJ#xdYIkcsǁĝf5-D]".)a;tބUnQF:5Aa #axmkC4͐v_wpyo@9r̔"\0I)P/t0= !=+Ol %kΫ#u:g`B,Mt+ 6sa1(Kf#bqaoqiŜy"XBC[u9j @}kMd  ̋P] 95eC_x*1 6At͹F)eĵ$ 0dN'-֐LJyJ7ʵ\30Q߱n$@:-qP7fþe/ 7Nee]ǜ$YVwN}X<RcV ^eD@ oLϻb6 tkf>51<H%+-B|<Ҍxf&k1LY- 5<;Ç-ӖhfW[>:0G1Lw@b~nPm# $>8}b󐦡u}M6Cݜ2%k?(q-r9@1nC54u!x"5ѠcrsGAC*;kAj>$؁47WrK$V*K~P?2CYҬL2˖n4/R<(ѹF2 /OߪŁΕF3i?a^kMA1Q\ɺ0k ޲c!1#p ͨO=y-9XC3}>@-L;t>Vuթ/'Yշ$}8EDz#mLjp97 - 4^  ;4/ו)x\[5i۞yK+dեO y$H!@ H$  A$Gç9IENDB`indicator-china-weather/res/weather_icons/lightgrey/999.png0000644000175000017500000003610313530705155022657 0ustar fengfengPNG  IHDRddpT pHYs  8&iTXtXML:com.adobe.xmp Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:14+08:00 2018-08-17T11:34:14+08:00 image/png 3 xmp.iid:9e2a3a1e-534e-2347-a059-d5291def047f xmp.did:9e2a3a1e-534e-2347-a059-d5291def047f xmp.did:9e2a3a1e-534e-2347-a059-d5291def047f created xmp.iid:9e2a3a1e-534e-2347-a059-d5291def047f 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 D cHRMz%u0`:o_FIDATxm@ǁ `W)0@qv*U ,w WCh v,Zq?"h>  A@@@   A@@@O>RJ"R?H0\-"_"8E3ccΫ(t `8q6"ּrs~/"E)6,Njgtdg!/Y]n=lzgEEqd kM9![b3utEʥDiaro㊫F2TiP]"^jc*8,1"#y*%mu-Meޣ`LZHۓR.%]}1J@ΖX'2u`u[v}JR) >ӤB0]$X&ɕR՜4"7]ٮޗOżS[K2?֖cߓ>X枲ڎ`+Mtl9Yn7 im=I>rE=HcTn+sҊD?vG Ul Nq=RJl@ >!#HRnH [鼤4VTv@N#iheƲxϫN<GcuЩ8zu>s/9#L(iCfߐy\g&udH4~\ RZzC\LQRO3:v[%C|$Z>%SdLmf]EXVYgf(m]do_G@-{ Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:42:30+08:00 2018-08-17T11:34:11+08:00 2018-08-17T11:34:11+08:00 image/png 3 xmp.iid:1354852e-4126-b54c-9441-ab39001f906c xmp.did:1354852e-4126-b54c-9441-ab39001f906c xmp.did:1354852e-4126-b54c-9441-ab39001f906c created xmp.iid:1354852e-4126-b54c-9441-ab39001f906c 2018-08-17T10:42:30+08:00 Adobe Photoshop CC 2017 (Windows) 1 720000/10000 720000/10000 2 65535 100 100 x cHRMz%u0`:o_FIDATxq@g\J˞ *Cp t@Rƞ}l$x|^@ۧ}ڽ9K@B! @ !mh|\R&i'Ms7L%tHY#+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/202.png0000644000175000017500000000310213530705155022433 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxu8Dž ֩` ,TpPB@ s@*pƊl->H AAAAAAAAAX,m^!a%qm'Z~&h@ʕome[C<Hȇ1 qh([ o 1%,`KE?ɅiH. r;c2 sg1nDq+0OM`8~T{!@!%.ƀ &ۄgAWV:M TȬ8W@(w6agVS\x4svP"d)b Σ~kU`:hCK-MC9rGI91fl]]m_Dkyu\s0X~WC9uGRBw}\ERTyC]neDn/ڝ;#*uR;.5OHі(Prֆ SXjUJʎe.heQe.u9wc]5үSg%7bkLg dh.1wWU:[ued5@4oҞP_Pg>D|ѫ;@8 =c%,R!+Q'QJ(bڲ+yŹ- |#8[+anGG]AɄq9 B%7o62p$@qy%x5_{Hȩ4bX&QYdr $+D [#X)^']'W2b50շ7L(*Ķ~ BӄRԯ G6ѿS}_hڥ@ķ *KYX_bФ2 B)YHB|CAHxU״ VrC\\t?V2E0+r#ܠ=Є!yitJ@:vs2M",ʸ֠7gurE E$(e)F hst YSwB^InUVIՀ.L'ު-DPɊdSE}k ޞVR-yb`ī^AKyTVb%~;1k Pe$A<] O RCqr@8qQW'M]{.8Ao:kYϬ\ρգNn- jB1׵J+X&EbQ|e2*2ʶP@ q-R1 ʔ$#AA mp I cYcUrR@Ϗ"V[W"#}<%"0}BEL.SexVXL`@ @@3+=]ӒkBˊ+]oc%x\&   ڪ TtIENDB`indicator-china-weather/res/weather_icons/darkgrey/101.png0000644000175000017500000000300613530705155022434 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\q:H1$ PPA8@*A|*tpvfufY~3[ҷo%@ @ @ @ d!VWH)Q.B%b&_KD'JqmsqA&^7'FL^XG~>mP@BbCr&y`>X붹eH;>|gvBO\?,3HJsIJ180eDqFd N)qbd\0 屬 Y # dE MODXQmyW %ٺ\ۗ ."px;KXzI%/SЏ&K?hmF~A@A@t$!79L+KJ1Ns>FjiN"QLF]`=)j =id?5BJ=cT1~pጕ}RRAWj_^? BO̊E.J@̊CoU0pLSSc~tAM9'2fLfjV c"C '3:6k]r,2!}",Uw Lِ꼪FB}N8 "ء<q+^Y-2d!bz擽~Ha#(GQM'uҙ&Dے<JAg4F` =5"Sw{(VCA(c+--]]"b>S *e-xߜ?kKx *z'c~f QyCU?XQ+AТ!o3El!2!l篱JEb|FȚ)z:@I^GyG=zz$J]68 e/O}2Il˖hߝ,U҅2`V D-]MI|- /`g/_?ɿ%*G@ ϫ/!hh߫r啀F]/Rդˡ1SqU(4raiHJߤLP@j0/ȗ󯌈fC`|ĆgPz$5Xge {_*)^^ukk²LPYלGK"-tN[8^ZqLo0Գ 1!mx-ٹ28u燣kpI;Nf_X6H )ig{i"h?KLnJ7UHptmՕ#C6i}N}fG Yk LO1U:-0%z"y6peخ1܊{Vhv)OsLHF NKol5唰 c?٩/t^m'}%B3Bn] p$dFk 1g}NcJNW^ $.;o+Z~8" D.m/ʤ]:!Yݿcd]tn-,԰u88Y}N L-t[r1RO ,Xm N[ xQXn2AMAzQ|х 1?M;P߬} VP;C.U:iCRoMt:m!잴z]0$),u?!WuY=`4rmU=EhXVT:`t!^LFeQ ;ܨե5阹x,.Z,GH;(nf y;1bs HCѰoZ!䩶ŊyU@ E@   @   @ @  n*F,=sc[}q?ƀ~r[?VpY{$r>xs4!AAAm 0VxIENDB`indicator-china-weather/res/weather_icons/darkgrey/400.png0000644000175000017500000000250113530705155022435 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\u@/ D vv*WTT ,\A.yrY q9saIJ49d֛K~@ou &u u{_;Df󧤘 C`jP,bnO!X@DlS|Jlֺ @Hr|az.x?67IG b|CHB!Zi C8x>˔cVJW#")P6p)VM|;dV}I|d.gg' EVuE+jr*yc I!c>6IFߕ,u?7ȠNd0zLliNuxa7wQ}@h-|%M{u Ȩ+e#26#噈Co*iU(qI.J`GW'hvp :\Qv,{w>Oi;I{J3E6)V-2:Hsu:\$1:N 'bȴoEMĘgB-BZ8]y1¸ZhޖN~D^> Sf*NnVPu sCψO&cf#s "6)!0KEKcU^ ;XaP~4O*ioJ!>S&h((5]/,Wcʹ{ VCl ɧuW\bDl#K6"Y "U7v=pTkF#: ȓ(YX&ɒw*YػuOy)vK1iEMʘ5Om !̃ b59"T2Jԛ3[U< ܣ #븺Zr%PUL+(dvoBv&jJ\%D>"PH*y%=#> 0mo1tuIENDB`indicator-china-weather/res/weather_icons/darkgrey/406.png0000644000175000017500000000353713530705155022455 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx];vF*.҅IZJPJT H (pNHTww)3Ͼ>  8yy fƕ{=IKr5ƺ=!aSҨSo Ȉj 1'sX W:+e2--І8"zR~δcMS%toq-0犵sq~%$E~9d"lr~w"BX[f;Ѥt*K._@o Z5^(3"9WQ m{Y4]ܰA#ܗt0Lִ\i^UI˷yi9<1wBT0"yz6GE oc ɐ2vm,ASU(%jR[mCȥZU!4{ctJ )#}Xih|U4n ֹ0[a.$M W"uII}^>0Dȭ#V C+@D ܃J,M3* ;+!CB?9YSuĖ8l(]I2!یzb"ƃ1Hu!j7*!q1Ds٠@JKBXQWnRLV6$tMUubB"0UE i j@ZjE.~UBvB{}owrygt㐈hW+꧗U :^ښ!DkĉUW5wh)ތ])'4ry/!AUcr{QD bEw 0iL)zB;3R`DLs#SVI1|lkPoQ'ua:($Ա[~҃GU qea\n?;s:\ag| )~>^\hZR)y˯ /OMGX%fnC yUam!h( )1\ey`3xT]M;j5SrԽZ4hU ׌FXX*m? {xc!gh⊹kFHlȚMH1l挄@"V{wcUwWDuzbJ?K= {/'vvB`k^0Ayá!5V!9A̎_DYW.kp qc)q UXh϶oj9@Ezie@4Oq'+%**j-v.]I] ' 5R*81@UB'iCRoMt:m!잴z]0$),u?!WuY=`4rmU=EhXVT:`t!^LFeQ ;ܨե5阹x,.Z,GH;(nf y;1bs HCѰoZ!䩶ŊyU@ E@   @   @ @  n*F,=sc[}q?ƀ~r[?VpY{$r>xs4!AAAm 0VxIENDB`indicator-china-weather/res/weather_icons/darkgrey/404.png0000644000175000017500000000312013530705155022437 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\=Hn1-fO`8EL  `#p#kfn׼ҸխԪ`0 `0 `0 h7.vdt YHy%Mo\y%QWVhȝRR0v%WJMVMYx\D01o5 uPcs%E1,{4M;bB&8W6W=6l"Hτ1/- tn@F@F@7W꾡!P,K:k1JȊp:2QCi`Ϡ#ЁGPb@;rr˘Bh2)<9IӼ@Qѩ`ĉH\bҩI>hß+~ !482 oG%jIOf}q` fteJCÊU"W@Fz%FP!̳}ɫi_{&&eB*³k fyAϵ 229Y|ZC|2O?BWйpXy1g'Z4o-+8Aø>蔙Lޕx[_[s\m]D]ЉS׵X+W !0ؔ|Ɲ?ѳЙxU(trH>-xgiHDLR@j05//wmQ3t!?hb30OKUՋ73~ %:ND9Q| 'iw\CzgH&~t0鐰]'u_C4) DI_,lWj"vˬKZ:3UqB0R.wLKn]] 並K >[YaCX_KH'* '$WS?Te="NLϚ,4m:x5syu X+US..Û!Љ!vLTwqm|$E@E3)8}lrFcHb +? N" u&_qswߣ^h|ƫP?rum‰/X~?M֐8R u )55R4į!U]E@|ϟ4J˹3xbEvSۗMaB,!t b ni8;?,AMm˄K!)IBμU7`I0 `0 Z)uIENDB`indicator-china-weather/res/weather_icons/darkgrey/200.png0000644000175000017500000000310213530705155022431 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxu8Dž ֩` ,TpPB@ s@*pƊl->H AAAAAAAAAX,m^!a%qm'Z~&h@ʕome[C<Hȇ1 qh([ o 1%,`KE?ɅiH. r;c2 sg1nDq+0OM`8~T{!@!%.ƀ &ۄgAWV:M TȬ8W@(w6agVS\x4svP"d)b Σ~kU`:hCK-MC9rGI91fl]]m_Dkyu\s0X~WC9uGRBw}\ERTyC]neDn/ڝ;#*uR;.5OHі(Prֆ SXjUJʎe.heQe.u9wc]5үSg%7bkLg dh.1wWU:[ued5@4oҞP_Pg>D|ѫ;@8 =c%,R!+Q'QJ(bڲ+yŹ- |#8[+anGG]AɄq9 B%7o62p$@qy%x5_{Hȩ4bX&QYdr $+D [#X)^']'W2b50շ7L(*Ķ~ BӄRԯ G6ѿS}_hڥ@ķ *KYX_bФ2 B)YHB|CAHxU״ VrC\\t?V2E0+r#ܠ=Є!yitJ@:vs2M",ʸ֠7gurE E$(e)F hst YSwB^InUVIՀ.L'ު-DPɊdSE}k ޞVR-yb`ī^AKyTVb%~;1k Pe$A<] O RCqr@8qQW'M]{.8Ao:kYϬ\ρգNn- jB1׵J+X&EbQ|e2*2ʶP@ q-R1 ʔ$#AA mp I cYcUrR@Ϗ"V[W"#}<%"0}BEL.SexVXL`@ @@3+=]ӒkBˊ+]oc%x\&   ڪ TtIENDB`indicator-china-weather/res/weather_icons/darkgrey/307.png0000644000175000017500000000320213530705155022442 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<$IDATx]=zF+҅SVsgѥ3t e* e*LJxXovV%U2z$hF}`FsܿB0 `0 `0 `srٓ/}u/3!ʗyUeB1/ yo7D 5T@դsWb:-QEy f4>%1k#ysLA W b|^* .B 7=$I 2L^1?0Sڎ4Y*)p6pՕJEM|qΕWXlBJy"n'ͦ tKVG8N ]o7: #D ^v纍O= N{~S=jl h`&_8Z\!#q~! 8$YLOYWlx%!L.+j&w&3q9-ܱtه\J c%>.nYbC4`y_5lHt*I8$~%&ڧS%?o}C4O?E옆#R^~fAc=e Nft eK!a5 a"$P@Fz%AX!̳}wѩɿ<왠F6'/R|+2~]dx" e4ro<4}B΋9֚yi| 4K[2M{/+K1Wk gq\ߪX){'!)j RvMUԑX;:;Xa@h!? "Xt͐I Z H E3#b]L{AE6[ *CGx^\hܭwa'8s2 E?49ȋⴇwC$y`WlW u α|׬_>ĮETd ,nl'&EJy7<`?Su,Ǫ8!W)LTBj@*VPixB&9ι6]T+; '_;N= ygD]Q4*Ȕ}RBSI_¶t:ibGcfMвbM,nuW)1_Ɋl,C%rs>l2RilaRFU*0Ho_ C֐;d(q0;qc~itf*O[灚Nk몞J 9T? A|%$VuY#;fAF4uՍsG;: qsGxttNpNc%rIAR~ ao>0 }>`0 `0 ƹ?dϨqnIENDB`indicator-china-weather/res/weather_icons/darkgrey/300.png0000644000175000017500000000326713530705155022446 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<YIDATx]=v6zؒ҅>Re*'XO`N L%tRtހR  آ4{| 0,c0 `0 `0`8cI" >xZ)~~&0EVkwʯJ7eBIb\z) 9bШK "ɚ"`~vON w*6h"}QJ)@k.!l'5stP)Dbݵ*_dDCih8^PG7nPBtHkKD6b# ^ȹ8-@˄|@De|S,{Y4 h%9J!cQ6$ =_kOs{ k su;5BO,y5†P=2.TEꂘ'C5VncM:bp{*9v!\ear Sn1I }k!8CbD^mR򒛊ē@*o)}zPn/e$vdff )@cW5%y|`߳czWtTJ Qd&l%nm$sgjOY!~T2tDw q %2T*&r +5^` [4\&#D 5oH"o}9tk7Ipt5y4Uh \g,"! l3dsq^n ;P,C9O?TS%0 uVTu+\J2F[s7=҈45R՗w!kRF*hh7c m$KrM׊bOQR)8ihbOq?ECd}=SwFeMw>C v)CGzT]&wdKQR{!s>9js%U8[妎.`S_l2'R ? qYJz!}٬ƘDXx)x!|\i.=a~'X&*XnF噛%P.@5V/[^o.- *u>ު"u_xl1`B<`AO* z@ʵm>N(Eb `0 `0 q8`jk_āIENDB`indicator-china-weather/res/weather_icons/darkgrey/312.png0000644000175000017500000000261413530705155022444 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<.IDATx\U@9, bWep TQ2+DqvYf^<>#H3GJso$)lDm8dr7]~)ޜDX!nͅnqοb. "H-jPŪFxYW4UO1fmۡ_YX. C믗]$p纝YoO# ax;LKjDzıg#".2f[QeVR: d$]$CC2V(Dap- DqZLT E_W%$o4ݗ{SǮΞNthA3'2Llou{-Hw_~bA6I!3xG@ .!ldsU@F]=.^6B!Vy" `cn&P"V֨ꍐ։+Bb+X zugۗ-NN~awBNCׄn dOxvt\KpDd0m' 3V#qE\ +/1֤W4o[~'?" Sf*^uiCqnk>O:v0SKI}D%Nnw\*ZϸPܟUЙz}" rAe?--QE3$fRy Eq]L(b5#+g)?UʉA~{{G]޵{\2w9cƦ6B!ᠮ  "h xP=m%gڦAcLqt!6v:ilWL~?Uy?8=}%$vt/|=]=Y'cf &5A! [GPvB|-UN݉{Tf؃!8^#i@H 1.$u>B%wئP>׶\PͶ}>N=wYIHH]5椳2BcGK@em*yKb򎻒Օ7ȿ)DbS<蘨!@d|ߦQdc鰗Rc2r]]eHu_<|>sv:@ᥑ_>(iHx;ȷQU2uk$[{> iמGUE@gq ]Ba\[ԫ#PXLɩA oP(QeulOW:0j0˲wF˷4MIˎ|8g?A?9 v;!@RuRhY+Y!(/Вo"}I0߀clm_<5;k1l >f tUi}3r(]JPYYI᳜1 i0伓H,9D*G\[H=G/rPGo t0Du.囜xŌ/ cdCE9n)̓hrGvVu뢪Ӿҕ~ 9{e5{(Ժ,0A-:C-CrV  ɳ60꣞h2]H&냜 P1k\@c *8CѐG+Z8&}$U"%+IhtQdD@7[Y$J-@dHcuFYRGz]6u]C{CdvNKYR1t)~,T_IL8p4Fb@=iUQ-n*9b4eBt h8nx s/tm5>з ȡbl2smԀYBv;O<-{[xt Z8VMÈg͊[/)znuHBdUfgcn=M{% A/4eY47?™O0c=Mo?^N8n.KÙZѪɂ#`*ro|``m@t"q )Z?)j昴,-i0o.)Ji%s\F_/b"=@Ae-1RnjRJ|PF\S4d'yy)(yTysq!C̙mIJU}EA@ Mil qQ ˰n]Ȭ@t#3 iͥ4L4V_0ħ`VJ8#L5}qD" 5L3Ǜ˝h P|,n9VT   {,J(QD-O:a#Lݭ4IENDB`indicator-china-weather/res/weather_icons/darkgrey/210.png0000644000175000017500000000110413530705155022432 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxm0a # #dv&NtlB#0#Xc&6d>#+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/501.png0000644000175000017500000000042113530705155022436 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx P m,0 oßR*TkwouŎ0JU$rN}e*L'~'~OF2{Pr؍y8dCVfԲ\% (y3IENDB`indicator-china-weather/res/weather_icons/darkgrey/204.png0000644000175000017500000000307013530705155022441 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxy:ƅ LPg .LP0l`:N:A=Ar+ l![`|>t$         Z,\K|8ʶm-_?^;rËlna[ٖU@6π=mØ94RP؂){D׺O 1%,`KE_ɅiH. r;!c`9cH݈q+0OM`8~TItN\د۔t s\ޠ+\\:8W@(w6c VS\x4svP"d)b)Σ~k];5:tF (KZr/طk_s0,wOwmY؁\ӆ Sfa(ױ1U}/ٯr$K Τf iw|kwϨ]<8.]6(>ʶFX6 ^AbVY+!(;6XpY4@+3ݤ*- odvsv=oH N1Wx߈16N0a;Xc>tb5SТ=?4}Wwp"{JۙWYҥ>]!+QVJ(cڲɫyE\ds0q9 B%(h3pb;2*=PCQ5q Ws=jqc \h1,eS䊨,2cs +D3 uƄocSNOdjTK[+ao30J MJWJ KS6PY筧N 0"дHWķ \)TʰZ rIOBd@ٗSo%*G48%BQOf"^e?{s~[-d,;"2ҷYB&/mѭJ(1f)|(㒟+9oUul+{M(^tLҋ-KYkX+ǧ2'Ru[Vzm!CF$*{xa=2-JezEgٽdJ6jb^,^[W%X L] u6uuԵ' (zVjHurKmQ҈P)5j2ZPY/U_lvRYfQE4XCYnhc ^DAE;rA3ed8(3IJmnb!ii,+q j7R")(j_b4OLPӤK0nf!q2{O+e,r0@   QCp|_(ZKW{7OW\/+W\[rJ'8M" !AAAU 09IENDB`indicator-china-weather/res/weather_icons/darkgrey/310.png0000644000175000017500000000336513530705155022446 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx]Oz8tݍݍs]wCN8A ']'09AqOqN0 F<ϼYے+?1@ @ @ ~crZE#^!%`?1FDxGΏ,^*$fͯ!~Ri401הAO"S$fQ9)lJ&k93"H$_u9SJI1 ~%bD{MKB9ڸF8xrh;S ZDR1ۛ)|h Ώ/B` H)>dA\d$tm〈2}m{K؀i/ȦBG+pXܴ `e0?yҠq%D_>IH8 h%@ELaK*OۜyEQ;@I /,vĭ6(a'NIǬcnȗn+=&%!)LµO;8p$ceOEvE6?!wdOH-BCGoQXBhgY./! w Gu^00`șR#!ĵذ[֤=ϤĐ^I\S,CÆIDgPN diԿBCtϐ%;E3R~n*%C")q *c32 %!`իja݅"$@>Rb| BȘےxAS'ӰO(4!z^BKfO0AB B Q= 9:Әk<!x-\yqWjmf~v[I]&SXHjgr횺GvjEiH1 N4) ,SrʫlƒyOx̊W2C.~g"K,fH &iB3A;#b窦VPǒ /[ 7] *u5i|bj.YHxǽW}Ml3W.} N܎+pi+cm3$,sMr-x#His,J5@1xuRTtQ]KFAu-*ZZ3-9bnK۝ڒ :+wB:[9HI݀6d5c:ɸZTBؾ1tΥYӐ4;Զ _0%hJRu3{3kBD\>hLu&MLUaنQ/W:+ Fe:hf"U} ;QsY8 oN#'$3vr#0~TAtsb&T \["}>>o`0sבGxu֨b]yw: WߗH|DrC] \yp%ݠOiwBJHAo3H<=[+UV,n95}.Re y:Gs #+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/201.png0000644000175000017500000000301313530705155022433 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\q:, TRA** [N`*_˫`J̹"l{f48=@ @ @ @ @ \%"x<q,GDWunDdnAn9_ C"ɩCJBKq ݞs~B z"k9HW`|Η(DZxO^t[߮u,"f}%i;؈}9 ymj:Ș-}!$?Bzt/, @L;A&&QMW]|Hs~ʬAG9W$}|h2s!gҒedF?0"|#+߳r ?f@tF.W7B68^z"e v߮:[ 1x) ,]RyB7q9)o(w vP*O 2aLKY a*[VΏ]0;HWBHe$X1&ON"3a ǏoiHrPAh&{9*@^%ah !C'f"&i}w rsF9+L^/}0T@&}iqUy`HZY}m0ZHB.3b#N/ʂmWyBV19Ek/!t9$/F}lGe蓢±BmG`~U{?L!8LcԾD iNjU(\EkX¢i^u աF13dK+ivr5|#h LCA' S;ïvC Pگ)^7RC򴆏ʖe S#&ꄄ|o 䙓uZN"bmAblrl׳T9ʢd3F>wV9[3BrL UF^GBh$MrGʆ(q+#$%>c*XhGa$_mB[DEC-վ i{`I+i*LHD᳼"By;DZ^a͏bLH;D 5T@sקb"ּ9i|Jf֦V?+߳`B;-$g6:X>szPI(q+y-b~3HB%ڰĴ\8;|g֌h4디#>-=>mAE(D *C%aWצ$Ϙ55S5` ѐqBL&B| v?2`߸DbDb7Г>*H{E?BU?Bb8G@ 4U4Ο\y%QWA(d'O3)U2XR ;E%\Y_ '6 AEg J0o:#aL(•"g$~>".-긓ax},bi$k5zdfg= ʇ`+§Sl:?!@{?gd@tY!ۜ2vX qNr&Sg9["ֶB^<8BQnږ[em:Ĕe&4h:mל,/߈*7%}Ob 6jNͰW# 240|H)׊YBlSzQr>|^öS(dqht+'WkQaehazkUTQov>EBJ۹BYy.bSDpu> l5ֽ'm#DB_&9f /'e:AT JN>FQQf`؎ 閔gIJ|$IƝ`s"K `0 `0|PSj;IENDB`indicator-china-weather/res/weather_icons/darkgrey/901.png0000644000175000017500000000144213530705155022446 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx1R0@E{ .*Ӆ"B{ kth;:>R3fu,ےތ[h%۲m @썩2b"SI_%7{Iw!8ɭIj*L-cǧШXz蒦~˗~}"#3?BǭvX^!$=|0j+?B}:_X6-s" !%"!@vBBWA !r/^3B! Ш7텼#oLB0sY!D]\"!LZ̉BZ'hLG4^'(C5?#km᜻GHsm~d|ώQ)"qz%"CI jw}=F}ޓ ˙!2@!$̩TnBb!GHdB,B2!ʏ]H[TJt>eN &r}%CѷQ-Isnm#~顸+XʣB0^ү+\ YϤF舐}u[> kqC쇀8噸~R1|aGk]6"n$ulG]bK?x6Њ f8IENDB`indicator-china-weather/res/weather_icons/darkgrey/407.png0000644000175000017500000000334213530705155022450 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx]=v8f)nPvOLeO , $[9n;i܀\Lv`PELt0 `0 `0 o0,칖־ 9KѨyŵ{W%1!CS㴂bШ+?*E5#ǩ 'b\{ %?kw.6h"}Byv$.k.!lghROHŖ"#BH@؎/[@ +7D #=5 h bN5Ņxފ8L;H_^ CPWDi6~lZ*ӆ;  e^_tn op{[aEPN[dxI"uAsE6 Q)zY&![*0rleu:#o$m7j3QH+BBPJ~MJ G}S'@.ۊJwdۋr!HUMr^FlMvNWjB"iJB6XB͓x0|l=),[󸦂bCf@ Pʉ،zQj$DlM>G74>JeM2 <4u{vnKvTRB%+` q?ECd]9DNeʪީe˚)o}C v+C1hovM ~*XvECNs>Xj2U8[j妎.`:' !$OGFxI :!CZyUhETH+'`]R Ǻh>G1 EcWatB4A̖Q?du uC!L %uld9<]资Op;%p@HxT;APHuϿFH*8eBW[hD`/"6" Om$kD&x<h_X H{mxMC= [ۙ Lg{E7 `afaJ4fC*O ~4Tbmrj*ϝa2d7pubj꽼ۢa>Ύ%S+V fqLd!O'&*N/$!"9LjHRx/L#tM.lEe9tڲ#u5}} #bOJ|τE י9][tI`0 `0 `0^.IENDB`indicator-china-weather/res/weather_icons/darkgrey/303.png0000644000175000017500000000340513530705155022443 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx]u8-73r*T $W )Cw@U =-;!)=>! |o?!1sVՈ~aWD(WN?S!-!{.{-$ `pne]5)V]C[d-|{ K7OWbT!_.<DB+0>`\ֽQl<$rV bǎY$1!|CmØYY`F_&8Z 2X؄1]nGo!'[!wY*E6!ȋE؂/jJ!+V`LR"*'ue.ئLl!ng0i "" M3z) ٨]脪$/Dm?٠^tXG QL}vPEo 1).onB^GUQKԸ2Yٺh]lPY{}ZroLG̠^6f~Ej)qTb!NL :"쩶jA ZGCiD^cY-cL O%ރCd2 CTEm]]H#TXm0@ $Y\*+WX5vh^K^͒7RY.@#MTQU-RakbD-*:/ `0 4ik= yK$Q53$f)% "m=lϤ R< bOFR3FU+A )6<0C2W(kޗסd6x5WH0xmsyQ7BTFE|WO!?ƢSb22ba)YHț%f2vڿ~FRMolm%mO0ɰrABn,S!R[e))CFPi&$D'05;&aB0W^|O§ZWY94+6HDNu$q#݆1tΥSKB!Zpcˈ̕DD#Fp˕FI|>w6U(D +$aq*ѯuEK:MT E_Aƞ}@i4ݗ)Կ[Y~7Ƞ~S&2=&Bq}w9G^^y]?rgN Yx>tdYy%*\yQZ(dl'g:\Q%, 6NaOOzA#밢J<#$a٣j  f9dĻ4n#gF-#)Íd=WPUbEf.}b*L\#L9a.3Y vt:!׊C꘩ŭĤ$!D*2&GuIg5bmHt0qe8Et_㵍u;pg"'6y42a\4be>֠hn&P"VpQՅ֝-B\#NXBxyg~ޗ8:Z: -ۄ Vd3m ,…29tah[!fv>OB-BZ8]y1#g/iN~D^>ri{̔$읪uYM12M{FE^Z?w8)NNDDJ\* ':tf`UFAVC.>E$bd4B\&LPSPj0H^X^tKICEF߮rv"#{sPN姅݊D]ڽMzEN#ɍ@JM6wɶ\RKB6ET=8VEdZGP֝@H|22ږ Bң}"Ϙlϝ./ߨKkgm@;qolmDJÇA ," ϽZB?Z6'1(͢%Z3T~ !U8: GLIENDB`indicator-china-weather/res/weather_icons/darkgrey/203.png0000644000175000017500000000307013530705155022440 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxy:ƅ LPg .LP0l`:N:A=Ar+ l![`|>t$         Z,\K|8ʶm-_?^;rËlna[ٖU@6π=mØ94RP؂){D׺O 1%,`KE_ɅiH. r;!c`9cH݈q+0OM`8~TItN\د۔t s\ޠ+\\:8W@(w6c VS\x4svP"d)b)Σ~k];5:tF (KZr/طk_s0,wOwmY؁\ӆ Sfa(ױ1U}/ٯr$K Τf iw|kwϨ]<8.]6(>ʶFX6 ^AbVY+!(;6XpY4@+3ݤ*- odvsv=oH N1Wx߈16N0a;Xc>tb5SТ=?4}Wwp"{JۙWYҥ>]!+QVJ(cڲɫyE\ds0q9 B%(h3pb;2*=PCQ5q Ws=jqc \h1,eS䊨,2cs +D3 uƄocSNOdjTK[+ao30J MJWJ KS6PY筧N 0"дHWķ \)TʰZ rIOBd@ٗSo%*G48%BQOf"^e?{s~[-d,;"2ҷYB&/mѭJ(1f)|(㒟+9oUul+{M(^tLҋ-KYkX+ǧ2'Ru[Vzm!CF$*{xa=2-JezEgٽdJ6jb^,^[W%X L] u6uuԵ' (zVjHurKmQ҈P)5j2ZPY/U_lvRYfQE4XCYnhc ^DAE;rA3ed8(3IJmnb!ii,+q j7R")(j_b4OLPӤK0nf!q2{O+e,r0@   QCp|_(ZKW{7OW\/+W\[rJ'8M" !AAAU 09IENDB`indicator-china-weather/res/weather_icons/darkgrey/302.png0000644000175000017500000000300313530705155022434 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx]y8. moQ*\A ,W@@i+X1ݛK 1R" pӯE3fB0 `0 cHbnzu䑢JyL{Thë2S,dc54;J2'pTPu'B'b  E\t:; `mi׊ T#:N ԱI[.bB-e)3̅{P\o>*dtwb$kR~?lQZKص!`pnۺ\oRgKЄKWk'=ĂT;B_2ogk D Z"* g }oۺg'@6jIÌAlBp( ) װ~ '0r"m0/D#ÖċkBB@ !)+ y !8n|$FF*T{ׄf TP/-Q],.s%k5(.1'<+a:` 뾋v-.kl?Ba;QYWZWj][:.wp*[~jVGB|so8Umw$ɀw=Gr-uNǤkU CLx2|E1ZqicXI!$sqB-[DA4=C&JW{ݽ^G8uh6^&s]>nC{j }O ,!JF̵UI׎̵%U@*)Mdj!ǿO9!f 2~jݫ^Z\%n5wX56Ķ<_QL@HR5!-ʐd!M*{sD'{;Jsl!i" B95 HuY27VBp@%\2O̟$dBXG c Aʽc'd&눞H!,DQHHr-`0 `0 c .ŞIENDB`indicator-china-weather/res/weather_icons/darkgrey/309.png0000644000175000017500000000257713530705155022462 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<!IDATxOv0eEw ꞠuN뮰* ' 9! Jw]V7n{Oρ-i4ew?r2C_u A Їs]!JH'#Pƺ%Js? AV0˰֠jڧxYʿ?3 k.'wgFd|1yGbh|ZS˅! ]y:)pZbcsv,圍HqJo/Jm bukXn#2ʦ\p9= ?~–ap5 E1:L}tV1Z< B;C?I fB(l_hO^w^!A~|IwBfbf:1DZ(_ Aijm F{ۡg%A8Q&g!/-Č/#%\ ;/.IP5n+~'?" D.m/ʤL{ۼJqi W6}H.ЭŘ9"S$\WngU *3Qow*cAA-ޫETbC|eX&MQ(4U]/,V[Cl XJ;X&BM.!Au =.a֦ʢ[<]S2yK\T]ymYw.Rϔ \k1Yms줗ۧC_1C{RAh,AZDszݑjDQz]-@'u!+fIENDB`indicator-china-weather/res/weather_icons/darkgrey/206.png0000644000175000017500000000264613530705155022453 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<HIDATxU@+XU@@b aMa{y_ggvv2`AAAA;x?`0Պed=U+v#jhc^'5N@@f#%75R{X]g<Z9@ R?sCjնOoE<_ "\u'zKuO a\"ƛPǒohD4I7i,Nۚ}fjR/GvaszSm6|vik /$n5CE#8/Y?ˍQ>iCRoMt:m!잴z]0$),u?!WuY=`4rmU=EhXVT:`t!^LFeQ ;ܨե5阹x,.Z,GH;(nf y;1bs HCѰoZ!䩶ŊyU@ E@   @   @ @  n*F,=sc[}q?ƀ~r[?VpY{$r>xs4!AAAm 0VxIENDB`indicator-china-weather/res/weather_icons/darkgrey/212.png0000644000175000017500000000110413530705155022434 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxm0a # #dv&NtlB#0#Xc&6d>#+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/403.png0000644000175000017500000000363513530705155022451 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<?IDATx]K6$ZAVV0ˬa+Vr0rYfTy~~ؒ%ͻe]>`0 `0 `0 m!e$_c*?Ly ȗO "(HU^gB1/ yĖ?U`B`wBH9ET ToRDk2Mjm$V^3eB#s:] JJB7ZN' %%%G5Tqq̳k Co o go x) #^!ɀ(ہR뫐K J#ύP1vUSMg 1 hL&lQ~B:!d~$2c B }ß.d%*H`||_i$d l@@h|ay%TMμ"`kNHȂ'gRpKIG%R\'T wA܀#m*Jx#16@'\\d,ip"bFv2S0CFC}ith 5vx%DX%f$ҞyMD6.Ppϡ"!ĵ(X3).[kgRc(cC8oy;"SЁPkvZE4}q)21A^p=ucpwܵdg=ѹA(Bp0@و:p8ɛ.kA{̐C I! vTDog{7TGx4<~cHي|&|k%%* /?xڕ-A &5<gg";%+4R}s={$~6{P ]2Х .S{hN6g&1ųH/+ ]P]UVA, Tvld nI,8.  ;h k鳼Y=DYÜ[ _xE5<Aw7uhHp{Ps{ wyG1RiF5 ;HհJrYT[ ca( L11P48"OP{RrY/Jй,dNI%/\Wj>Rֹ,W~/! WŸ뿡tûq4We $':e=k+"p232i]Snp*bmZeN|6DocUZdOi)COHq_U" XJ ޴;Tr!s5`V Z8$hNf/fseA:ύsM_k=AE=]JJV$]y̘C?' `0w'[TW?IENDB`indicator-china-weather/res/weather_icons/darkgrey/100.png0000644000175000017500000000273313530705155022441 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<}IDATx\1r0$).].]Ez28zX~.Xҥd^cLq($q$pDbB0 `0 `0 mu]~oC[pJvph$p/;xX } &DI/1_!?̏h$pg𻻂2s򊦪g{MGgM+FN6r^,d SRVPƮ=6`oewaloLSZ0uĺ.H 'EJ,Ubv7Gb=tܲٻ;B pҷフ)0SGMiN]E4KJ<հ6.3ᴧJ^6:͢_GN,u|Yϳ.xˈٷL}+G+uZĭ_K i$^ #):H?P0 =CsDR!3}Y(ѸB2:YY6;i2IH4#wqN]Vjc"SlTGWWa͌ІN:DDw6x]A?'X`2TMS>LJͶB.FF7U8 '&*>sH3J2 A1]qƁ=Ux89SUlAtI8B0p5SN * ! $ #V39Uӫ@ƽxZWJQӍVΪRnD}.LAMK񒎯4`k;u'tq2VQy BrYCB9! $J.RQ|ñ,>6fIENDB`indicator-china-weather/res/weather_icons/darkgrey/502.png0000644000175000017500000000156413530705155022450 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx욿r@tI0 wt::<*e'0Oxt1rYw$7sI~{G9bPAJ.W.YzJHZwHLΤуG"Wcl~S!"4vok@Dʴe=k)W!"l(oV 1@/hJZE;5Cw#apY\;GH=jyBpijFjJK-+S=g2_:c[MEv_W-ET#e3ے+ܦYE?6u!q5>׆_zƻJ%qN!C5SR+^= 4IENDB`indicator-china-weather/res/weather_icons/darkgrey/208.png0000644000175000017500000000110413530705155022441 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxm0a # #dv&NtlB#0#Xc&6d>#+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/103.png0000644000175000017500000000313613530705155022442 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\AvHmA,YN9 O |嬬 ̜`47H)A-U遄wկR@ @ @ X, {U%zV2z4!>ܕIџ>~ˈe`4~>/;%Lӟ.1@ct,Bw:ǒ M,d,BOlSF @L~ :?!3ПwM=h/ ԋRkeH^{ b p9W&*ݕ!eb ̵{q-Ad5{"~o:/꘼o"DYXJjtIdLEEY L y(r{M+jxL}+L$3ug"l`XLFX< ːSy$ şJ+B4) CDdd檽BbhKICq1Kn2  TUGpamABDŪ;W;8!X,nŊlM^W׹H1!@ߝ_Pp׀ü:dCIIؼ-N ])o$ Dݢ+{'d_ %[Y `AB-Po,:enI"W4qeŝpC9wZ3w7\ ScKYBYEh'rvZ,*z%:dn8_i#e ]wlT=lj/\VB 3.Y:!,ɶVKN J!w>%BK7ŠɈK:19?ՎKy"p_NH_{1#lZ|f =52L$O?7ysW a I@q1tÔ̢%q' 2ED\D;b%Cr 뚐4yo=;Sli%@.It7$:0 ;I$vmcM=#"(+ Bj.> {@FoԀ$Uo<+>1+%oIUN-MVKh($_biK9BK D2HyFON~W㹄KI^vсđ/!X_U:$efK[^q0t밸/kșj[=P t_ y|AE*ܳҢd1(B> B|A n^[Hڈ"I M`U@1XkȬTfxq}[UMw֘2?=C!%fݟy+ q)pQBrv2KwNH)\* -+ 'xh"1IƇg @ @  ~0ghI|IENDB`indicator-china-weather/res/weather_icons/darkgrey/306.png0000644000175000017500000000263713530705155022454 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<AIDATx\z0S6:atcy& LiF#S'h #P6-p:NH}cǾ%`x<>/m1)H "Lt[v_7DH0OIc  mP &a4D+f)h_no9i0=m?`JD􍟞vnvbC<:$I8Qn1-a~=Kf5"b2ڟ kuҪ@ƒۜ_W.`ywHAr5$ac]g􊚩Byc I!}@m4-˵)$ߑ,Ud]'2=&Bq6s}Ãnϫ /r+o{*ԟoq4d&{#C U6U2չ* АQXzR9v%#4J>ajhI&,vxRD48o:щϰv,{ .!}g6W#Fڑl0?R99Zl ,tZu OCqd1Y\)_CvjdmQ0U#Gtُ!`ࠀ $ uҎZ*LJBd[` l.~Hy㶡$cGҩ.!c,O ,3VW*# 6*}K,K#$dRy E=#bvP,o7Xs6 *{7 B`~.TqL,+]]'Y/7E% :e[$K2R>!\4'.b\'YԐюǛ*K(nBjQ~]eRCB5EYY>)Tf,&e|:`Wԇnr"vy߅,6PrK;Gg>\kҵeun;JhW롯) 2Od!@TbJ"8ts@%Ė!paGioЅfJSR.)WIIωa#@!a.u*b9w+JIENDB`indicator-china-weather/res/weather_icons/darkgrey/401.png0000644000175000017500000000274413530705155022447 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\Mv0iݕ ]wNI]=AjF ďmɖ`i~eI`0 `0 `0f#jMf|ď1!ȗ+BRٞL"e*[1sbЂm 1:5&jV, `?7[OQf/[W͈ Km` D eI8Dzhz瞧 78j%tHĵsVJJSh?:Πu< #Ŷd<;shțf$t>3ETNM붱آ&IlO>;5P#FG@ d{[gxy4$w+~OI$}wd&Y0p ASEϕWu%XlLDHy&۹t*֎X+q;MKb`''`tjGF+s%w,{ !¹$cVH"HOáfN 2 aPj%ɢXW,T!PlkTԄ#Lw>= l\kĀv,VaRB nˤ@` v{EN _j*: 8|RhN_ᏈÏ5?E<2 ɣՒNuǚ)89+ +kkTu&hu劐XKK, I3?K-NN~q]ׄ0N#;õPƿpAǵ 229k ѳG:O^ߍ$)-O/p :Sf*~QPkΥQuum$ciGQFl !01GE->1 L`ZB}k yK,"K#$FRy EqWL;]cH_6Xsnb3 t:-!c"OL$6@mh$S wm +v pӚ0o乨zPT%ZƟT(\kyBJU׉gRjPITb7&O&j@"v rU0bb*FBdw MK'CQ~NM:LVדs*O-&klki2 yB#Y %o~bH^1}e,ٔ', 18)a4 \ᙆ̋-yB֐$JhA/gz+Lo'9 MyZ;.[{ˑm$t6|4&jjBrȄUBB:B|OfOZ!>&tm]BvB=`0 `0zz:IENDB`indicator-china-weather/res/weather_icons/darkgrey/900.png0000644000175000017500000000144013530705155022443 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx=R0r[-b[ 'tt(![n(3L5G}3cbٲ- ޘX,&29]} ^Y#d22YLe˲e2K//]T?K<ғL^nk4P_ɐe /D?/!(Xm!NjGuB:` _5ڪ@ ˆNb>v CȐN34#;eC!3̛!6YqtBBW A !N_g%CAaޠKdB!v%CdB"829mSw>i'(OPk~js!eY RC&zRPKDnjw=ם| Ǚ! 4D!W9MAqNq7WEEŞ!AB e!. rqHPJũ)sۜF/o6\GF=k&fdwNpskk_%;g`=oWΤF舐v_^>p7"2%;qZE#q}]cxÎ׺j(FEJݛ3~Er-ZV@+ 0U=iIENDB`indicator-china-weather/res/weather_icons/darkgrey/504.png0000644000175000017500000000143213530705155022444 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx1n@Ei,S )'Yt'SN,]ʝK!  #FyX ?gggw6J岐bJZ)}LJ$I|ZJ$񧧻6&J#4,(׉s/AlOg_ ym?Kј:tւ4ٺ$6m;^*Pgų˳MYe`%o6U='c<&GzcvC\n4b/FȒ]m-{Ƽ{!J1{䐇#,HdU\MQ!0e:<%t/yxLw4e")Z1AKSTcR WaXN Fߡ0w"9Mx:?)I¡,3M-3. 9\u2q(S rǠ$|jxq(6:U'}oK1{c<#M?(1Zx{~a+ صc#FDP<#ǽ CXYTiB~Ä4C҂m 1)5&V ToSD >E!Z'Gz!GwLd׶ZҳYHJ[07c(C_VvQUE/B"2X4cμܗ-NNdw7!rd 9}kfzU(a;5f,G<f^LYFkmwG % 0C[2KػoKGcJՍO#uF<\K57W3<2U!1 O h\]*H[Nwp^b4C" elS&(Tj0q/ I/ꤣ&E1.$汰m&.ф<W5Px%eL8+`Dl !f?TF؏+@z[2yZWk sa1ˮD8z*8mK5#NkA5Ȟ.gJз9=Kb0cۍjl'94 rzCȼchsv@k*6-Z QG} Pi NAsDq Vz!ъWaTH axd|\6*B,K8NcmOZqΎYCkuTRe ֐#kK LԦZVBBS GgńL0`0 `0mÿ >G cIENDB`indicator-china-weather/res/weather_icons/darkgrey/405.png0000644000175000017500000000235613530705155022452 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx;r0AI].ӥ }sN +RTVfJ " d0 v)Fd|]쒄`X,bX,bX, [\zTԲ{j@bK0Vr᱉\=e h:V%a uꬡ*bm:c^䪰|cR?E++fߟ#JSa<"K:֩)XMY#ov80l ΠQ20w9r,= ZCUL}=\°:m-0\XHw:BNPh\ru??ءzG na}J:1>kxX"ק6Zq0-5UfCePՇ_.pYeEJ]_Y|HˆOJbH.bm !w*N`yٰJ&^uc;Y2u5;83O + ɴa›j0ցmY|GW-a58 ÅF$uM ! *[qx[{kqXʨ°:eE ǒ۽ði!3m8e!k||?DV0ߪ],q,PA- f[^pi  [@6KߋePVhMR$Q0 c@B1h !°Z:: SՂ1JJ4r)vYP~F>n G0#AU{ahP*^ačf*D _xOd~7,yJ{"S^-}꫅L<f:зgѩmmM5{fkS|jr{e%ԟ{E yO4,Zq$ (or?W]W3L@yP%/9[L*,? LBҗSX,bX,bX,b? Oip>EIENDB`indicator-china-weather/res/weather_icons/darkgrey/508.png0000644000175000017500000000446613530705155022462 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx]MvHn2Ynr '0>'/g prVYY>A 9AF.nI$p.uɓ'O6dj"iJBrh*#f*8Q `y[sQ*6}b_c"e$M5%ƘL28`J3&ro_Gձ4oDe\o R)M,or^_J5}$)Ѡ҉FKT-QjLR8,ŧ3!4:ԌkF@(n ײtFi<eς)LZVANAR>3MI$ds۹ow. D sL=gYѹ,(R(`6kѐx?ig^\!z!=⮓ϓs8 L+e%%~,DїM\CrLAŦBsͳZbt3 _R@T57km'$Swڑ C}yh* a=>#kwї$_+CҪG@"wwOGưF#bGb!?J7\@1&S-?L >DM*Ai"Uߜsh+n iIn'1^͹ k1먄/ 7_6R%w{ 9%XFW׹MQMj]1%YՑTŹ[l!$\ @Vqa&~G*L2EV92sn_"3H5o:(', ӝf7.ܸ^t&Q=X䗽mS*f}c uIL$gAYNj KSH/նF{pPJ*ycNZ`NUajP3JagR8n B;9̄q]lEVUba)Mogqe{|r|lRi; l J9 }\e k`%4 S^3om.uRl?W5f6'C(@TjP(?((yQsԾV00IX@z`>kRzBܯVW41mh= /Og aϾSu{k&_r"0,UݺОF#5Y!96 e !]a5VB$ʭ/Pm3ӧS! Pژh0H::-2ap@U^h:6QW@4m#/W&:-SkZ /^4Pt6+-;{ūE~Źpe!l<3 EhF@i=h =ҸAe284NmhI@ŽERhE%e7~Qa'M1#Δ4:*+{F:``.?#Ӗ%ߘC?K@|ivM (mMHB Gb)DƿIٮlLT~re{OQe8E?ƗFg C zyS+h V۶nɓ'OB\D LY+.Y&>Eo wZ3Kr^eW\L F@'3nmHARI\ FnR6e}sbIENDB`indicator-china-weather/res/weather_icons/darkgrey/104.png0000644000175000017500000000334013530705155022440 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx\u:V|NPgG&O0A&L3A %9 `[֧I2c@ @ Vդz8c҇{MzIZNu  B,±:xh@^8bc2D}p<S9plL|Uh)5=k*չnZ!|Udx R%1U:YBruqoaloޙS{4YeV᤬?De4uN=M3tRӥ0Uq!95tOcf SE&@!3 J%R~Є~)waP&y ]70#&b0\3`Tf2Sn$,3bBIߞ/ɉDŽ@oJ~>K4x+ ,:;7/\'GN\ Nss9~>_T]/LVk'zɂQwDƹ޽fZGjA&&IC B1)_7qs('4$ YW!{zU>ŶS,$oh; ){y "#DSZ e){0ˈP0JR|a11h H$LO;CKf&˒B'K^DU[Lm!^_ƢC?E`LW*IBxT c~T2!見2b*bH,rͯ+W%HI\-7[7!&!h2Zp` y_x'?*h(WŠee R]U'8 $6r* 'blYgu&&c04B!-_Y$BC  gSBl#jqIȟC:Xt$H$M+q,ܳx)#IGċmsKե|'p; =†~d!yZvJ4hS+!19o?R4}yOHλ 2女٪k%W(c "g,Q#m;ňo`^m5*-C!Ip[;6ɶ- M ̚!zBnnQQn5)/18/4d!ɸ0KБ8I|P=Mn 0'l7[L^"d-.(bxo A" qb{BxqIG.J Dڻܘ:p"8Q- $od8Ws`~a?OvX dPW ƞO6 <3u~?F&nI/Kxb{_ @9&_ƒcv: W&K,7bBezw8kt/`aS;:1 #{S/S }hBPS5m.׾YBt``KX!dI,NpL$}#C4I&dfhpEqQ!erH!! |KJ!2~p|=wJ6oA7X{ >'@ @ _'`йNNEIENDB`indicator-china-weather/res/weather_icons/darkgrey/102.png0000644000175000017500000000206513530705155022441 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATx_R0C 0'h8A '9o'>:E#ǎoFK?i")}mt:Ṁ-_M9r.My6eiDp"ʔ#BV)wWRMXխ)?L}k)/|ܛ2̹6S61g2e=ԕHefΥv{A/e'ћI#aݍq/1 I%3#NcnIo3qfj'GGM`Y"qCiҮ|ߖojArD9KV #BHByC"ʋ?;8NRkbpZ+ԺߩpvςJ1Tr?fM;l@Y b fAóC[P#Y o3a!gĶEe5s ֊.S+ * ކmIՐ\׋;yD*pXMFuVdUn#wy1#V8v51s=4W JxZi7`fY?rFFox|%x,lJ=M'}C:y<09<(v`ǽ< *ȹ:CL, h>ޒ&S Z:KVl 9C6dtVsJ$Ng1[Gg+^Ȋ C Avϯ&9PDeY9CLmKPA$sݹ|+2q[5D;4P @pIENDB`indicator-china-weather/res/weather_icons/darkgrey/209.png0000644000175000017500000000110413530705155022442 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxm0a # #dv&NtlB#0#Xc&6d>#+ead-eGkrv:X;`ܶ3mBh%n!3fe0tFQ'['X!ҹ uGu*8jPRO?dܶmF2*oD>$2[ݍO~d@ٙekć&` oFKt.Ebh%kL-* K6]6ykU)] 3[>Z0Io{)O[W0Im6 >'F q= WI {+q^>8A@d@l+aH]_R6}IENDB`indicator-china-weather/res/weather_icons/darkgrey/503.png0000644000175000017500000000327613530705155022453 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<`IDATx]=v6颜`'ݥ[N *SY:w]|stv, J]Io! `#j(`0 `0 `0^*7\.2{'1!(BA?1s&D}e/{τ\U쐜/@dBIRebQmz+YfmdEN7 9r>R=%BTm6(dY΂Bb,|"bgn ;$hX8qԫڕilz|L|NJ11S"וsy0|ƦTuI@&5M#-#1xt>|(YBtsFNݨ`ń#)i$ iz%"mZr5lj%V5@RVtFY_Q7ФM;**]#ǼVW:51bK:t6䱢`m6 :d#hy-&"\!!>m#G^p6E7/ GMY4NZ2WYSm0I$!Qo$z`tT^; q윽0G$aFe'/!Ú&9xO-.%"0Ֆt=}NN=cX7oxL`彰KNAmHSGe}ٻWT歃W".B1,k<]7Hi[%R!:c8EkdLx/" 6ejL"RxHDЁOʋxKD'Uhy=7]vBB0n oFXX(^|2* ɹid<; yk&KHzVMr&S}ӏDego Ϛj ڗ' ϟ5PZjB0&G7AG<ؼŠvHfOn|"̶RBlI̒P2 E)ِ!!&;AŔmHH8nIX$#Y& $-_ni%87y'5Q_ |"D,!hέwT& $") AiP sq&ߣ:F$6)}L,U u;  dbYMiħ `0 `0 qjWEנ{IENDB`indicator-china-weather/res/weather_icons/darkgrey/999.png0000644000175000017500000000173213530705155022471 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<|IDATx욍q0iؠޠl2e &h2A RNQa=sw#X<|Vh.vXNߛ}Xvs"gkc8\1L fEXc]"xU9fcSF1~4I V{p80cHccWY !@M8>sď?w@ݍ)~Djjly X͋b,z=FXJf%`M|Pպ_G1V XnJA >+c޹Z&!hz;IrsQz,$*r,<֤gsYׂd ny )IwdiBXNRm؂PtWW" m҅42cqs ;U:_yL:=]+E ߐߵ":f"> IJ![AnR<ÆR蒰xZR}6R|jA(mSR7ji: u;,9XZ'Re\֑,k=g/uCj]p1Xv"ď/1Ҥ4Ru]OꏘBi7) DдV>IM50ҾGelV"fH2~Hcxgj8VKMoTDJ&+]~ 9|6\+Z%Z+Q*t$.F*9E66}<:a6˲}pr|E<O!Mew>!"։)IENDB`indicator-china-weather/res/weather_icons/darkgrey/507.png0000644000175000017500000000145313530705155022452 0ustar fengfengPNG  IHDRddpTtEXtSoftwareAdobe ImageReadyqe<IDATxq@;P`]d q T97C*(,9>ɻ hiޓ1VLe;#B>FB^~6{ ɶt6<֜{-Bd*)(fEB]cXPڡ'3B7ex Ć&r3+NJfVNBʩ^ڑ{lyHkܬCl al xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:5505296DA1EE11E8B930D2F41734D111 xmp.iid:575569b3-e58b-e041-9671-02efadde363d xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:575569b3-e58b-e041-9671-02efadde363d 2018-08-17T16:02:50+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:22:43+08:00 2018-08-17T16:02:50+08:00 2018-08-17T16:02:50+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 dL cHRMz%u0`:o_F2IDATxԿKQ+ߡ?"Hצƚ 8Xp%J'7!ppqinv­z=sp{nSk'&p 2s9,cE`;qhj2Ko C<{jA[->EĨU4 È`mg֪UJٯxK)q xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:6F1F1171A1EE11E8AD40FE173AA34C91 xmp.iid:d7674978-37c4-f840-8bf9-9d167dc1691e xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:d7674978-37c4-f840-8bf9-9d167dc1691e 2018-08-17T15:54:10+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:23:27+08:00 2018-08-17T15:54:10+08:00 2018-08-17T15:54:10+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 12 16 " cHRMz%u0`:o_F(IDATx|+Da&#bfl,XYOv6R'(el֒lH+YXHM~{v;o}}o;=9@h ƫ@XTԼpw"^|Emj_V%&S])_UH@Mi *z42a.m,#~R b3AXNRkGx.;:^QrK=0kC}P(ثިjOBPUԽq%8\]uSj-4Kl+80 ;΀4A XIENDB`indicator-china-weather/res/min_normal_btn.png0000664000175000017500000000203713643503425020475 0ustar fengfengPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp Q?IDATxֱ EA02 ^Mq/ȪV C 0GB> IENDB`indicator-china-weather/res/comf_index.png0000664000175000017500000000261313643503425017612 0ustar fengfengPNG  IHDR-tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp < IDATxb? 466؛  F2fFFF2Dq1k T+@iFbD @j 7).@S)`'\I8A}}=HK!0@>#[`D6&0?D(b 7Pc(_bv .b(GQ( ?Bi_] mϑ. '##2P_0f@\l|&,?hP`!\6kV3AIt CPC8AT30Ime/> `>X `-A[ /!°@lėE%% kDLhbC\ DCbhk7IENDB`indicator-china-weather/res/current_wind.png0000664000175000017500000003555013643503425020210 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:A61E341CA1EC11E89649E7605D25BFA0 xmp.iid:5d8e0344-2a61-744f-8f01-d3b758bcd03e xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:5d8e0344-2a61-744f-8f01-d3b758bcd03e 2018-08-17T16:02:39+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:10:40+08:00 2018-08-17T16:02:39+08:00 2018-08-17T16:02:39+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 UPp6 cHRMz%u0`:o_F*IDATx̔?K@G_WEDt)Sq\ 8vqpW\AETݭ <SMӴr!w/?K"^@W4 6BRVU`BN Pm`0"NcLj]RgՂZR~^jMWwy5N19Բ@M;[SJ3Q ,9p \T[v69ʮI\ 9'W಍ h8iWBO)B-&7,lXL]tbBr/nѿc wQIENDB`indicator-china-weather/res/add_hover_btn.png0000664000175000017500000000212013643503425020266 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp ܅bIDATxb ߋrpdJM[hWo0@E0 0&0BÖ.d1z4DK|fY0} AIENDB`indicator-china-weather/res/flu_index.png0000664000175000017500000000253113643503425017453 0ustar fengfengPNG  IHDR-tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp >`kIDATxb? 0p0b)cfddd8x \ R@M0zf i< #]0D%1P@<ULFdAFd3EL7xb=c.!Ao@,A(AدHs#@H pYXLĚ@pY~0j" ZkM!2h@k\f< I)lH p#Z!#b9t >@ Q2ha-RJ?f.^M n hHLcz^§x@op2(G5X! ċ aCfGKSIENDB`indicator-china-weather/res/min_hover_btn.png0000664000175000017500000000207313643503425020330 0ustar fengfengPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp Ϟ[IDATxb|1&uF0Q:ł| hXIDATx=Aa*McBƛYLe#L 2ج( AR(0\cGNᅵޟ=jp1zvs$Q88Ny&"l?(zN%% rF^h4N"79; 9qArmT*l65JNJ|>fk4V8N4@UDFcnhjAvL7p(%+TNl6L\jX,H%Y e(}ЃԜ5$>@$]P(0[7DPYq@DapQ8pZmg\>lAX,龧58oz/8k'‰p"ϤkE)\Z?kIENDB`indicator-china-weather/res/indicator-china-weather_min.png0000664000175000017500000000272413643503425023036 0ustar fengfengPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<&iTXtXML:com.adobe.xmp <|ODIDATx|SKhAfmMLHm*Ui (xR1G=x  Ҋ*b)""xV !jC&[ÙY#)cfgeYpڱ^  ?ERxI X 'ϗ9y3@"yAR?u1ቾQM7GWU\A{?Z*܎lו ȫ1IO=O5 ܈EjnMWxug]iճ pgrYYW>2#'Zi MUeSEhheM)`xØl9t$|lϹI)E $Q\m-  $`MT:pkqe@ &aƩ #L'9Ƶv<(g SO ^ v5:H9Dm-Y_>,nbvL(Mc5 X] e>ա:?H}7?SH9cj.i?<c>lhi_/T1^)_9Q9Sv MY9.v= 2UxIENDB`indicator-china-weather/res/ok_disabled_btn.png0000664000175000017500000000272313643503425020604 0ustar fengfengPNG  IHDR[ũtEXtSoftwareAdobe ImageReadyqe<qiTXtXML:com.adobe.xmp o7IDATxϋAQgB$iVtIYZXXXd#Peqv2ƕy9[<\eiI2T* BZ~h WD4M䕈vp8<8`) n{h4}>Ktfj&|>t:@P(kՅe0!"(\. bX(Z,x<s>&JY.pA:͆# CD"o^O4|PHRxJ&FWMW 8tѐ3EVT5g܁5$IB:08-yAJ%~b|0|-ZuvJxǟ1yoz/8MDD^I|LB_ EIIENDB`indicator-china-weather/res/cash_wash_index.png0000664000175000017500000003546513643503425020641 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:5A080F15A1EE11E8AF6ADBD4C65852BD xmp.iid:0883191f-60ab-b045-bbe1-fd2cead363da xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:0883191f-60ab-b045-bbe1-fd2cead363da 2018-08-17T15:59:24+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:22:51+08:00 2018-08-17T15:59:24+08:00 2018-08-17T15:59:24+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 \ cHRMz%u0`:o_FIDATx!KQʡU?6h2l1],킠ed&-k}^07,-K/8(jwgĽ`ykN)SpIvM*~Tp[ Qaş/3udspX1;a1A(p pV3WYF1 3 zwIDATx̔O@7^'a8ܘ#3k b(AEL,3sKQ U_P\^iҴ1K>ޏ{5$iR+ڀAek4JPŻEu)#=f`+"a&" {6Ys !;{N}ihpql^\|Ü=+XOy32e-+ʉ{t)!0傥⠋YJv9m&>Ata3-dN[K,&AjJ\Vр 1!%ꉁ`YK4ǣo4;KAۿ3#n.X:dx2){Y2\l .{NOϗ7v-Ͳ?_`%dԴvIENDB`indicator-china-weather/res/life_index_d.png0000664000175000017500000000225613643503425020113 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<riTXtXML:com.adobe.xmp 4=IDATxb?57hll$;01 D ;dp!u5T3jX$H! Hq20l0 _t!Pbn > ZXN@ @}@ Hq.ð1Hq-4)-Rv@\ 5aB: ~ @WD( Kc Ftփ0KKMN! rKJӄIENDB`indicator-china-weather/res/subtract_normal_btn.png0000664000175000017500000000207213643503425021540 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp nLIDATxb? m F$F NK7)qGcs0BJ0R0Dh-IENDB`indicator-china-weather/res/unlink.png0000664000175000017500000000731713643503425017005 0ustar fengfengPNG  IHDR]ٹ.tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp T8 IDATx]A(63 hA9vvD:d{/Yx@ag}30BN.:hD:H`Y:`mDl\?U[]]]]=S>;[U]{. 8W9oYLʲ8M>;wľ}w*E!.wT7yOr5n:B}7+ Aj8\n1+_Y *Ah?Jб+# 6ۘ &5" >tj Ђ}Y e$!&jt _1}Uta#BShCƙ~L}ɊIDÝ!|5O3&iMÝJ} &JJ S!)h~A_t)(I2 A(&Ȧ _i)}-xZpSL<*75)J|9jI}ތY+eRFoܾ=o74f rQQ y1l⅖23*.ŨyP9^j?r~UlQ:)!8u.}[uo1%e8l%y1K&X~DžYX[uS˪™H5 l8]i!{#f^DKpI%ޒ=s맔6Ci$mO:kԞ?!}C]3I"r2vJNsTv'e.:íq"kF Qa|7 ~E,' a TW A6vܱ BZ7v`éV`B$/x%:c:F'j,6>C{x>|6$PQcbnu3c|_UFx Hg\໶EO7e\|x$ӈ;>8eNaȴ> 0PUÈO=쓮aAm-IѾ mm$듷ddu>eW-[M]0gIq%S=gz&8146"U, CƂiC&Bs=և%߿ߪ3c5A8ꟃECySyE%>~ܱqx|T*z@~Ć&F gcD,Y |swIP^aهHAݗ-^dO\f#JxL.N#*Fmp>.T>C:^:]_g7MOe\?<:gĈG?G"hLj8Cn]6y w&z:`zv ~7%s]&_2X+w'%BN- /?y" ȑي< 0|Ju#m+g5Abr+H|L||;wa.xqXԁ-CtjZda*|cDx :Yfh{{^#&Z/EL=ſęHo&t\jO:`;ۺ3/tF:ufv3xohW\5& +r[NxP6lAfWi9F r[fx[>;^U `˨3baMߪ#—`)6]B\:~/e;tW^om>Vgg]{iKOHoib^(F|d;x LC_<8w`;۽Qh[ ~P2㿜;wYm2u-Kd`]636u/m CU]le _]Deۤ B&H C'PPz\C,=M63ڮիʤأY<߷)de'mr%߶b, G?  (vRlex Xyr d:h+6I3v0Ql/6n9ޟ,!?!6ϧ7o2I0*WBKPQ9e;/d>9WigLŽO~~}ݩx]k#f:w9xN=ZQ ÏMGrU?CGړ6\OXTGmEvو@ Ar0d9sÇYInijji! 0އr`IENDB`indicator-china-weather/res/delete_normal_btn.png0000664000175000017500000000212213643503425021147 0ustar fengfengPNG  IHDRsO/tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp [S:dIDATxblhh`3`L T#60Ƕĸj?? Z 2Gz\a͹qyB0j `!23I5 x(IENDB`indicator-china-weather/res/current_sd.png0000664000175000017500000003550313643503425017653 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:ACD28D7AA1EC11E8AE8EEAF630BF9BE5 xmp.iid:0dfef4ec-c618-6445-9bc0-46462ab139b4 xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:0dfef4ec-c618-6445-9bc0-46462ab139b4 2018-08-17T16:02:32+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:10:51+08:00 2018-08-17T16:02:32+08:00 2018-08-17T16:02:32+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20  cHRMz%u0`:o_FIDATx-KDAuMk͆(f \"@dbPLaAӲ~u` 9gfLCNQ:]G@GZ4P= ~G=P%sJ~h-znSsz.V_rNˢ SjS~tf=4 '"?9f÷ȯ&j&AU`?Ћbi3nՅU ζ%:P7Fy)+>+{)igIENDB`indicator-china-weather/res/set_city.png0000664000175000017500000000202713643503425017321 0ustar fengfengPNG  IHDR w&tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp ,+)IDATxb?dDdb  ,P$bw8IENDB`indicator-china-weather/res/location.png0000664000175000017500000000221213643503425017302 0ustar fengfengPNG  IHDR B%tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp IDATxd=`D"vz =.Ԓh8'0A 7ql=hCr&wŌItanlPo ʗiV4r t{;0p:ok5赗` ?1ɏP9sIENDB`indicator-china-weather/res/subtract_hover_btn.png0000664000175000017500000000210513643503425021370 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp v8WIDATxb ߋrpdJM[hWo0@E0jp2_KbFaH$TBu@PIENDB`indicator-china-weather/res/sd.png0000664000175000017500000003552313643503425016113 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:EED8219FA1ED11E8B68DAAF258232E0D xmp.iid:8381a3ee-4ed3-5f48-a65e-72df6986e42c xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:8381a3ee-4ed3-5f48-a65e-72df6986e42c 2018-08-17T15:59:42+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:19:52+08:00 2018-08-17T15:59:42+08:00 2018-08-17T15:59:42+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 bQ cHRMz%u0`:o_FIDATxԿ+aӝ V b\nwSJd0`0IreT0t]3|{zn}|gz>s9NLQƎfTh~41UFɓF p7x"p[aG8 *Eu. V̹ʯcE^L( _{hn] t[6?02IENDB`indicator-china-weather/res/background/0000755000175000017500000000000013643503425017104 5ustar fengfengindicator-china-weather/res/background/weather-few-clouds.png0000664000175000017500000021076013643503425023327 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:E9ED1A21A44C11E8B5F899AF7FC77F10 xmp.iid:4c50c1e3-c736-5248-bc90-8fa5ff6c1b78 xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:327c8ddb-d3fb-f548-ae1d-7d41ca6c9d81 2018-08-20T15:45:57+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:4c50c1e3-c736-5248-bc90-8fa5ff6c1b78 2018-08-29T17:31:50+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:21:27+08:00 2018-08-29T17:31:50+08:00 2018-08-29T17:31:50+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 : cHRMz%u0`:o_FIDATxٲm[v6T.2f&&pP!),Ba^~?/ R"Me"o]sl~Xkz1> R @H{{sGnfuttttϏF33][w_w0/o꿞 3׸=O?Zb?0?tTkCyI#?Fo~H>_q~@G ox orGnގ77&ni˳#o\kqn /C\ ϫߡcӺDߎϰ~p%G9/:p䟼 @õ6!B7cu+P~~}=L|pAϺ7\3!yW;9-԰A jAuQ`Np`x qrE+>:TXE1'XuVI1>H?i8V&Å<~wVT=ՔGz|fʟ"~&R-TƛK#73Y_o(a.<=b|ϭyf, Mt/+¯ϔ(IPil?;^㇎x1Q5ǯu<?3'}~V^~DχjG}{41.8[x>i(=Sq{3a s3ݸU2p>܅|q5?_ #@ rf"{ $B&Yj者^+$+ə 5K=\0Y|x|NjpT2 D8L0%bnJU& g6|d{< duR}Tj0O>/%@q\+nO0# M qӖ Uu5gjӁ 'r$t )~{my-*%$\-WBd\`9ZQJ(x֎pbXLc:|h+#9wՏ"ÛX @kWÆ:7gu7^H+<}XaKrJ22@כxu*Y8a>aw䑬Fq?>Sa@fdHa'hnO@Ls>n3, $Ip"0+_#ڂ/gd sF1Ky*r*M6@njcij8Wϣ&E? E5bʘ>zW匋>1gػY$Y, scT7c3X?C#a F(z*|`6b>~Il+l Qk d.Ls{.˚*Ȉ'> 4a.5}ɭWP > 5D|@NĚQaHw+CЗ8hhBXh Y3VLYIn.NL+ M7^^~-}0n pDC3aͦ\ꞑc5Xp?1c\\r^U&;1 3)C% Q7OC,G# qN7EnccѩEZH!3l% Ȣ|+7R@h\"0]SA<ˆ!С kd1FLʠ o_.ERucя璾b(]&dP%tF!'o={X@GdvvRRDhcXtC&p5*~) 5i%@7â\qˎKߛ=㐗).r%tU،5' ՚d1;b]fu_'C!mq:Ehj60 TR0SgDE[ТЊ֔,X\܎| 3 '<-\_wD)'& : Adǵ8N.Țnb`-x2d<0'p!p:h^p}I#`Je< OӮl0éZV8;:'ǝx|$huS ܨiBے}>f y={bv \촙=H.MHt3F ɡI GqYqo'W]qf?g}p5GubtUFR8uDl߻2 ar8`9E6 B9tͺ/uYx+ZŏӃxvF1[{JGt(Og$GWBs%]Cۿ`S΍~6|ns#Sؠ g]9RYz1)cʰ0yX,1a7(_ <CꠅIsMn'o@ZnyX@fO6{~ov' ^;恏Jޝ8I1\pV|5+]Rk ZA JKKV|kRj)i$3\r]SJП!(t4U&VIscqͼ߈({MwOA 0B8ZQO1mZ_ܝ  H>ze"/Y f=!z!T!dXIYV= )C&s$yo0<"do8։T;Ufšl'5n*y4*LÑ0i(~#^'wαG[ő<ܱFs~)Oho=}woVz܌1` [>mT(P+w\-ƚd1^hb QN͑9٬$.<`lj>@}T)Zwz&D!<{ɂz+BFk;,VcZLiPiB0 CVʬ✰QNIiIk[dqR6Z8͞ =e: 0 E*$/:[Qh!&o: RIA{ɞzid&[-϶ipGUٗߚ}b1^o⡽O5 3Mby}w:)7q5;}(1Eq29m.dR!q=tĢ7~:BS31T׏_3Y7.Y桪t K<#>5r9tN7נfSKb<;>%CQ6M¨ 2,Gx2 LLgXPĕ1y}bnjfן!Sl[=C 1Џϛ|cd6a:6Dڼj%>ޞy@=DmrB%槪N+zȹ‹1:V- ?($HOZ_98^)T: *}U.&NGrZP}BūEv^LN^|9d(>a 3$a*8r}(D !F"cVԧ6l)Ն$Elr~~*5". +c޴l=}fwwdO2pBԡN M}|it'f<>-\Ul}#5PB?5t}Bx(  X@EP;r~{jP5߄c߯ͽ7_?Þ答MQ""/*-$ԐHS4X5,\@إn7P*'m%F@T ej'F&[0tKM8%Äe:kQinjOrם1ŸwY?yu Ǟ'01 JnI:1ibYl)."oO=.ކ nv<#mh=?icP]f~Z 3Ը`zg^,XRl'I^+gXmK9R6 mgyQYbZP#rGLs9 x{~`lĘd I>y8|uY(DpSAq4NٻNhEU(+4i_LqG0W2Ʌ^0,C}L,eWuB2VN*Z!}IkMD-+Bz' r9NZ/Ti4إ#Q QMp&*B{%Kh8"8Y%*E[iKf/Cm.#bBi&&4 i'&e=4 `>owgwonwOn ݉97 RؔVZ'@"[ D7s9(53D"r fB3Ms$yLfa<.0*L)zҞ-t}gv`C5h UJhHVR2s [sE,Lۻ0ܤEq-bҼvb؀$ɂt,'/%!3nF\9VXqb7S.?{mƮ{1)]u XGRJe yߥ9$M}ݟ.&3^,']OHٕ5!#偪Ф"U9bFѨw*I,Nat(gRܕQGZ\4ti&)mxG&U$J.!0yq L$&̍F7.j{|>(~'ɟfy!7 fPF+ѩvXm"2cH$.+"@`* dE^Y=5WAv O ]a kBx),==m/?K_^ 4@[6*w&w;tӋ{@oʙIsj~o0z}f8>&Vlu.Dz]Nazo[$̾nW+S,xqBT*zt"o./ق~:D^ ucHn'[d$L&#>9Nޙ`Kg;$"#?q2!jBc WΗ/J u-ܟIiGOpL,W[2nrv{4Y$3Ne.+Ti H]{qI~$?db\$gfO7gZM۔W"o DVf٪P@5KÌD (?*v0!K30,' $U|M,lR+$b&\L ƄFFt\F*Eg|9>'nkwgf,SKb%.+Bӣh/N]E_zLj yG>}<ݕ]t՘=3d8~'gػO/u(<L|Wx͞ߚ}^<ߏ϶yq}i&Qշ_XL Ikb$)Y$?0fЈ9Aw>Uk:\S" @*,_fc‘\}tTvo3v}q~~G^nP:T,fCpZ껅N}uÍg4Dwx bP|4&[[` ^G*O޺߮Bb#YEù(Ӌg_[-cg;˦a3ey q<ʳv͛K rԚJ섘bL?`Ga##_jX oT.'D䛈U(e Qg3W[4 W'uiUA$ʏa lhsd~l{p1*xr< _tH@l]8g_?ث=޷9QHp- )|5^y:|Ptj*vIrHu@:3( #y=* N2cU9XJZK"Fb bVgS<"3Wb1Dw=ofo=TP V\3 ^ B1 Jq E{Ȁ4vЄS/?vRBMqI?k0x'rC8@)|bEcTYXC n~&t J9Z(0Dž.tIZls=i^"tf RuV"`b֔QZ%Kc?9_ W "c֘ Z;D cBIu3X .j Yh~zωNA01 )B(ڮ:i^ock TI3,1p8$5nNC8J^ zBUt]c(aދN}:ҠL$.]}N~*cN 5Mctt)?|{v9HL&Jq|BI54 ZNsE-. UOPc=t ^j:aT$*Kp{kgL S a&fxeyxv5q7<v)~F8G|-WN,BD/S4i"H:i{f_}{'0nQ0FZG *BPizq #*p?f'jR&Z()줙l-fAF: WT ;{7͛ökz+L"E׋gfxՎ`2յ$PDΜӛzJD@ތ ADۑ؝Ω' agq{zԥ2+u7`OjiD$΄1%Ug4J_g`:NR%Ӓ6[밡D<0[OOSрZS YqlZ9A-tprVfQo=xLe!@SzoT[5svQ%K22F}ﻻ@_Y;NFlwm33bbVAGjVֲ1dqO=* SR0x*T= ʡjok7>#.?aΛGB.?7{"y.lnd^}/O ;T+UfKg}کPh=~v+DWIzlvv 5Njnd*pPIד3SZCL+\6r[}j:6:`e$K|?%ģOB 5&J/3`j9b=Zגo%Up4Tl,PJbM@svLMX iN:lTf*[)& Tb\cfMRp;ZWy+pT2aiC@*9Ia*97=.:PH̔dgDx chtgRz(jŭdmKr=7s?>q @|M5NgsџMF'ꔜYcVnn3"&A\V@)8aQ}hxfY)  s>6HƞJ57a5uGtxڜb~a:r+?'aLM gN1_9Gbv@h shRТ3 ] 7N넱-0[q=ۂqoiO8 4 6I;?RF#ukBscp2,|dFƺnԵq<켙^Cu \MhI 2 TN AiR=wuӣ#PDfy)<ss뗼{N =(X4i2q*D\L9Ev=[J1RicaTj3۴#q,.~G:J^E!DY|}R~#7B][e^˄DˎČc\ Vk>3{&hy4Q(J2PI ŐD'Wd2`@>Vj|#NE'm:0m)$m]#~m!)U~œ[9f.%1wh_'-,f"~ ue[89cqqiæCR'c$sUU*;*t}UBG"\*҇Ї 0DDB%Ȓ46e˄kL4/L*r2Pqͺ ׈`Q}Z_"\:͉q=~ Y?!SpogH8ˆ)@TXd kLJI=_y9 =}|" ykB&Qv!tP9ו׾3 t@ӂgQhq6L"Ёݟ/m˓ev]D йM25&SOoKx{Q`WL cPPi f;_,N ̅f!G9_52tnzt8~lG! KYKsdV&ģ&-F]T_Ҝ^wRԽ8`qDǵ1~9 ]Oи;^>H -?a=zޭkfJt5˂X}0ǂ>DQ,ĉ th._y޻8N"u/u rjő%Kvυ s`(;O7v^g3Y8Ne5ҟ, re zs@?}fD L @;ފAHRv9HI!ю=?<ٜ>*t' h ImQ#TlzU9Λ},{e0zQ7Y{L1[vfL& Jk$1׼f/|KԊpYqs6OfP`ۋIKrNIn|,C>Ko9g4[lV f_}+aR''!TVQi3߸>T7q9c sR/:Ty+RΞ%OZ!VDy^ /.lr\ Oh_~0t<̋^qx~Š8zJ;9c_ɸAO04ŅGԴЪBp@Y󑇌# > ״Xd^ T%zC~?Tw=S*p|j v/tUƵ,/{?dNqTc*`/}3aI dyP(Ioxs/bl]jdo7/7<}enB8| O&S i5aIi+-V3]ŧ0D{vD& ~!}Q |: Pq)Jka$! `@55"{?F0E @:kM^oQ""#drghXrQ3R}ᆡf:C d\"Wp:0]ց^SN{˱?~Fx>gPO:~mqm(_j$ɐ76efE(C!$7^^|) ozڥw)ƌ'Gd'PTNԎgw4_hѿ*};ݟhl숌!l=rif IFd N?gf#i+5t <Ąk3|:4uJ)Hfo͛/V0V8/mLHߗq?O6fo?x{q>9ö2J@{w/VZ_}G>ݫhT}'.:cSβԂ77dVX=QH{d7mpfm(~h ,c&7=ղEe_Ug+n%*²B0 m;X`$^aDD +eB9PpbU;Hn xN6Xk'յsnD埥7^l;l[=: ۖt vwm2]D\yE>fwZ.2 zX-|āg~e ]N+ĸP\r 1Yy7SeںX>qM6pd,'weIP %w'&M`o彄 9 IpB L~}pCF 7ʭyOgu)>榴b =,&ovcѪp*+Iqg0{~gE,4AM:`?d?d/_~7|:{FU0^Okgփww=|d%gruis++P%?Y`ዟ]N)/wgt6!_^=\F_[c=ޣ#g"j3pMu$pqtGkwd>N:+X;W 0 T Gʜ8ȸxYMw{26{Mf]l:vj**A;i]He(lEcm3aBqU" g'wN.W 7YOv+Z 0\3?4ovWھ}U.IG(iɵ%N~-%HRZ"L..kѰ0f1ښ.8}!ւ>\jz}{~s(Kgv˄<|zt9x9<(qR:E*+<xh2*+;A^s.'t# 1r(NxA"16'Y+!+;dWE*nAA]W q]s^rEvR7E] ;qXOf?l?plh2(E3.D,~&~Y{ ?w߽}wg^3皘*:'GyV y PJX /)XHa6a< H!1$@z?YT6ehYߟ`=lwRl 3+M}\fGg?k:xfv$V쒴Eg .&l=dž@[O7?:i\ |yΰu3n 4h#MpJrnef^v~(TuNsg$15LQ➧d pfgz8ƏZrGp 1׼sIǡEc?[_Trb@֜hPͮ,0 Y" y5rC]n}5T%2q8,?MH4k+LBmi)QZ, ]+]\zdUӲLgሩبu4HK%Ug{2k(NSl-P€)~/v1~B}:".? Th<ӄ0\=Uc0us!D(NK{8OE=hJnjg+Ǩ6dz鼹%KLsOBD/E;Å8| 9g|,증 tDE}ڕ=b_]ֲʕVtpQ"yo3A.GE @Qh &Ixd$pNO6yNk9yK,?st)KQΰ{>|]0up썛$1”3.6 MpÄeikGq&ave/ (I9'}[~kE;s"껬D]°oTI A׫^{7Fqfȣx RmAdk-oy$G}4y\oKo_1i3TUnd[w."JrVA8 KOx4x~%V%^ǟkzlf kc=98Љb #1*jeTe_/E=zӐBP2t=a΋@&uMU<0AnBBF*ybA=q(0$C֖5Nb?vl+kd:^nEӰ""TWMݏTOK4~R!2k䴙HnQ^Dz{7-j;I\wm!(sZ7 qՃ.F~"nݧ=WO퓯6,~zsYE.aX6㹆g('O&r"Q)X{X}Wˁ +G\Dְ%Vswgf,F861$ scU)0t.ٙsI5k}nLR/Mk=݀ӭ6F( Ħ % wgiLDj/IJ[fuK\w&xx~{~~nE7$ TwpE%-=H, ꖭLᣢ q67" ̡8O`RѼ{7;f& &C @CS:}83Ĭ: kau 9b[_?ط %h$KW!s'HB'-< oDU;R71yۑ$=B˜p׽vi}k5Q헟ۯdPut%vф-ʰHJW13!@(4M@DFAC7 V8AgtklISXܱf齫ԋO3 J# 8Ppu(c:u:B"wOsSϚitlHg#Yf5:(r35fb3nhNPe Hf {z9{/@<`)C q޵ s} D!s #09  sw9*-05v[ߟ`/ɛGOK>ItjgEŃdVPJ4{}hS(+#l8cBItg9 6 R}b_nv/L:)gR|͙K xqc=n,b}1EN0s7ayk!Fܤ1W`ňk E!-f/"gfQGatHA2Zc]%1ΟtTCFe,0 N-;'l&]ϛ<mI Ǝe2}!'(Wՙ-#:꽰片K߅By>Fw\ qZtm@n` cqEȜ'ýS32$G+M~n,쑟_| ~_\ݽT_1B ]!x#Z}W| [gH>NRhVShՁosxqJxrX\Cǥ8ƭ]4UZpv2{x@6kEy+hؒ|ES! tD'NR ü@ ԡI]3O7 {_)YV#y_7 -+olNm1X`ݡV/# ZN\iq_hϟ;$Vc]ͪ}5qɹB:ɌЃn6:VJ5/nz}T(K+CGFY#dXUC?eҎQs#1!Ctgeڎ74i*crlF߲0_ۘ>E-t mʞ\bGL5 0ePj6FdMG9dB7 oѣ3QB5פ0t;ܑnz1LtMUƄh0KR #qQ݃ >vԐ4!~\(^6MtA8Z`:BAjE}n7AvڌWo_s wsԱrzx-h5 ?t1<@ SlF1I"g}~B:O@cW)T&u~#ZI]Pܴ\PFSu ɵr>JKj7`i]SJiiVw‚A8LQ7Zb<>å{d +VXpPyYv7=D}Y8{m;-c ?mSj>5BX<@?1bG:L6 "^)9 2 X{'g<$mu.tZ iAVR8a}E/?td54uArԶ)7MUMHXzq; X3uT~ xt~~dcE US~zr#&"y jVל(.#UٱϋAe'Bl,Pj7W%Q!+PΊPhAKdtj[g$ʗ:z&"hz>f~`ltOշ\<_nW˴ !0`?w?|{῔&?qhb޷q"Utdq"Wm ѣ:(sq࿺?H@쒳p*^DrȝՏhx `QiiPX,ޙ832"!;A47ˎdSuƗAsUg80 zQFy1ڕB%S ʪk'?-Z9?j xr1gθn'O`oovyF1 qڽёv;Q=8P{wI3/NMCVK;@>5>yMhf8/>0#y~HʳL~9A`*&;tIVٱ -*T<&bRk,1[h)c`n!2$8 eOP,jd!f[Y'H:Hfp4NHp=yȐupT~>YN?&vHԈ^o^J^0ؽ]z?.gVogRvܸf[҉/ռ3ƶёLF  ib7cy\Bsw4.AHqhY~m"`__ rR̋p.Gj'U rG~fGE@i11㥀7ٌ;;BJ39h8/F Wn+n0u贌S;b;qH&4zҮDBIE h!:LON$ r*HIK=01w`h.wmٷ8o ЂI\r>>fP(&%pt!Rl]e~6(+ܑw:VIPf78@تrQ;:%g|qoLfQ >f(UgkՉb՗GXnT*]*SF-;ؗv!\,= +ɘcYQ 1vnU Uoat?aIXfI\ Z;kэ{՚ʹ_`+Sxa )%7T.pW^XxgJY; UMzgsT0ĵkGoo}aldf#ħ&h,堞.ӹ(:( YVY"2bF(_$Xu;bU`=لmgjqJ+xv+5fFm|OU^,=jƣć 7p\((@ $w^8ɐOtײ"\4N1 LI6qy']2e( Yyi[-k|ؿ/t}W3dб!'`t5W;q<BAAKjE94 s>a [F7,gPᴩ?A," ̱ĺt[#4iUzsu?JR',RUj^El׾ tu9HVc? I]=,1&腟*1̻ g 8A@"[ZCK$XYd 9 h p& +Tq8sNS?mI0y:cJ_\4jji F^Tpp`EBlV?wdnԄl"ǃsN VGsJΜ @@Q2.tm.D>Lj_i$!SDR86""= K1p4V8W"ft:Q[mZvd78Pb" 0[bZRh9hm3W]&~0$arˑمV΀(ޟe>[j8@_E9jO@I N*jy;+/3 d( hej ,g|3xSJr$+n=4dG.,u|*~5×(NݐKG> xC9)3TQgYW8{2A.g;]$UYIKC<6߻̕ GM_ qͤ~5!V4Zvkb'gQ=SVHޫVm  %*8/:.8_0牨)=ÚImz$gw1ɢliAW/@pΉy?j1u'V;b1X !Di\`+D#! ɫPl> 'aqN>ڋTMmԜ䡸?y;. 6Er?A X85ND8~iD7bۜZZXgN; tke0a;rڇ:6AB7D \7Րu, J, @:F`&9lSB8aP#3$"Д#E𙢸4t$m.cr}0OYIڦr}Mc3ѼJb4$?+ #D,7]$NuJ;V)RبN/2-\GUtpV䘢p6bSGaaIo6FM ŀaעYF0THzE0]⣇^,!H%\Ien3z(kJÑZYv]oW{b@7mZoEyQ UcYP J̏Q2甬2` FTzD8Z1G'D/*BMgnN#Ui&NPѰ2'aG0h Ҟ:3o*GZ<5G7#yO!!y|T*~x;¹䢋I *ZsE O#[i#vG 6O;CoHPU \ش<0!z38'>K`` -p͒xg@Yd0|17]_j|]_&a&1\G26v ;? !VRߌ=,T(HdH5ki5 PT2ZE05)p8^s;7$7~ Je6+򁥱ݍBԤ;$ aJGMQT;Ϋ'SB mA͋zLeb%N2d8jiegIzb2ytR6Pv #u)n4~5 5GMxTa$i=?n b?xJ6R ۯNUeZ_e ^mޚUzGGO&npr,v܂:-i(&*vm##׋GކdZeZT==kd90y8hßp.:vX?T-ϴㅑ\D}a7ZE}W7jiVvzhH*^)Q)cVchH IԼ T5ka$7eҁLĐmAC E  Pz"*&Jw/id|Tj5]^'ꃾmZus3:4m59Ӷ_܃c oTqfV1Y4{pUL&F!f+59if}VRPKt'qTeJ_ B<2 rԡ#qI_3}*ow-0:>f7B)L`sZR&JGXYug_q.=Zۺ-d oޠVm,dp GO'ä];>dGZpRJa4ײQC{LL6 ݈ P-zMbЗH{ez)aXpdM&T4*>c'[$2i BN"=UxM >}P_s!,(6Pz{lGBAM̑YW+3`}ԦI׈~;u 0y]fMajMa,Њ#:dw/\%75ו|܁.l, 9ꠂIi tŨskF<qpd9FM~ƽxXZ.MF|2<pD!W{SĤ jW,\P=DTȢP|*v$\|]zz~ݩ9{iaOnB4({-o, w<5kw3[Z;m99{#ezI.NXzBIGxx mZL9Q4o ?Y+XTB7(]X\`=F\X:_|c) ~$ W;gGL2Ov`*t0QZ?c|=3(?[wL7B{_K)2YL?K!D^??k!]# Kb|Fj3@~6qF5+nWk;~1*};]ʍ!JβlUƐiP+-̛S,-bP|V^ 'zyld ץdCY5= MOX8+Ůn=zK׉cj1ZGzAQxbB~Q0DN;DhAgiFѤ!Io<&h`AUh"HG25spf{nSQѼv1{zM tec[%s3 |ݳ \Kx56(tM>Gδt0h]y'wگwSqگC}U1㸻wVnǸu= 2awȬs1 ^2˃{4A.4|JϪW'n VIwΕ8E`F+wS-b^HBl1v P/3 (,! ©s*0m[e+<:~7fV0 M68Z1 衈dq_ n,׿irMQ(]XfqɱfSH<=v>5RO=wqH3rdE$XO{AūbEHR.hĸhzG>"SMϰ!2y̼X-ք:] hij9#Q1\ 5Uu7pG58~:`Ӝd ʀLY'Vӄ%lpw.y%.=sxGvU` 竡tn ˼B3\wR@$smVOtvHƉLc{-'}.ǦR[ţ |bCN75JBKk*W]1K jʣ99ѹ ȕ' i-T8rl3#e"B bpS2!)\qw^3\7b%)j@GdhsM܉Ͳe`O|v'P/y185#[_q3!֚)",>)gV<[pć󫉣X9*dRi dW{‚[$ͱ1S}tTVL9ca<8Jc. # ɖ,掜sY7̂zVM>󨮰5Վ1h0&L!#G å+#/"ڏl{`p X"[t]r%?l:ȴ*%y;XAxI1j?ni4Ufo&b kD:rFEaݢc왘ǎ?H9džzr9QBNmGbbiih:{3 FΈZ9_ g '}\5zp9!HU7`Y@D+P`O86)k#QS+I=8$ԩ Ş 9:3,8=l0=/ >] / J-z+g:OCPƜ+ ~!u bCA2Bp{pщ7[AmA`yŃ XCY!cÙ@ |a/6f(_ <tXa+|\@Ll7T q W]*!L7$)bD7{m𭀾ol7m ݶ,mvJT>L.qeA,X DK&W"/uKbꭾ{P| eO֖/Ynn<<'bu ? k˅soh WV7%R@fOPI_|wbnBoy`TJbRSq<Ԅ:٭3}p ~4oXN"(Sf){1&-$-Q?*+kEXAEVnœ5|X Ʌ$l-+ErǭMj7zw:Ef.>n]Yƣw"ʆ:=E.p2a<ҍsZRKJ͒OP,loT'T6RrB2d!DH~q^{ k `}!p8) Q-L/{tkŋq-[uoL tpBciWsF@F YTjT9#]//Ƶ͗y(9&mY1̘}Np6$]RF+y^SGxԹ>^fhS%PmAήUՋ幕ڔ5*H(a{ #nlgg-Np ѡY-q0QjhF^҅bi;iKѥÚntQ3O39}/Z@Du bwu6MpRQ΂̍18Lۊ\瀣@[US5Sa96uꝶ~cgsj~+xeb*CTX[]`Gը4o1ނ57ĕ"Zfy),06D, yDu9 ~nH-, _Ԡ61]pMIE A:ƭ9$QrZ4༕$CL`VtUl>_T)pJa(?(Kd;]O:_!YdZJ;^!Zw8JYV4u?;ItGs26S6?LM:ƈ3ҖіZӃl)]$}`΁ăN:V!aK(ipm~opL<Hsv(aHys`D_Nxi`L d 6*J0I DEڵx)~1`A)MQ@|ddYEiN-WŬFGq_.bp YfGY]TԏFߐ\Tמ*&0VuxȠԨ;<ܡMt'X+ oNqt"9`䀉$\O浉CuvӜShʊX,^]'^:XKP&JǝPC|sOB(g+E@3Aq@#} Hf`1ϗ A~~h|*w\99oa(Jq5sbN ZWSK!Zoj1o4O- 3Q8 ,iX(siuH6ZPvqMߏo 2Q֔i]x.B0Q, S5>c:eXr"I]\c]VgNi(sڲw5WJӄh:Tk)ȥj |n;xT>ygibGUHU#KxDTx"N-٬al_Ƨ:& 7T@&bS(/PҒnpB"NhvB8VZ8;(]Ҕ'8`%gd@ ?@pAm-b`ǎi\]z}P%Kkh5C,=Zp>^f^`bR%g5e4*- [*)) Aw'oyV^qlJB$17-zmg4H .PۦCL'bYQ2#WEJ*=G*9S5=NFGl/7 dҏͨal=ZQQ3:V; ˜<ɱHE"ARXE$[ Ww,o]c,I_YcU#w9N`n4iUwU\gOt|(sBkPl͵?@@\#.\YtMПKڡS!ardMF>@avC5*gƏ=gE@zs樏qTz1ivUowbE*Pdfu9\Mnf2hCf;nDC*0Z(+l͗|LBM0&3]Z0uح^AAf2菻tP'өLhLG##tpa>k T=4=MAWkqH>uYF:NU{ 3~wЦ՘k2}`@q #:هa{UdsQHxy9ewJ,܃ e9cG\IzB"Ə`{onaxҎ.00|bⰝҧ7 cC_ 4|Ab7V if1K`He>%=mz1OaYQ͛>4*XIYZY,<&PDf$OZ1-lx)A@gQIK Q^-N{:!!$:>tE<4R)pR82W"WaI%:0s&ƲLOf`ZdިJW8G pK1Za+8*gE+'F(kQ\R\O0x{Yhϭl.iDAIJHz5 M0 v("ߓq? Kw|܍IP g^m1PXU-聬>%'Zl܂݇(@ >Vx"@RaZʦ*KPDEbQ0 !O 50|WŦR{h#[S0uZU,0xOޝ}1_O; x[.wHXa.5ݔH} `fϊ_aClZi:nnjWq!(Dtj-LEbgG^[K w畮 ;0XȚE,"iL}REFR'f}Ÿ"١< `ҋg5;I}U\CyC өMY@xV#X;c$@f7 lmR%VkMygar9RcQ4Pp꣸WBȏN\qK#u]zf@",1;3[,(r Z;j.-Tר~Po(\YP_ kA-y :ȩTet ~^2)].e,Ἁ]LpSV*-Ԫ:;.XDneAUc#a$ҟAP8OȵD\TiN#nR/-LstRXswytCkjc5'7#' IrVW:nƤ+AhSo7,0ߐlLjGhp M 2$0"cG"wZ?&o`sdrggmCG Z9 T59`WpiG Saf{ BT|$9\{;{0jD tۮpu`D"pZ)$2!A6O>KX.EH38$BF'GT(XC(yxB*01!Tx3P6%*]Pv:[!,u ‘ 16@aBU[<ܫWrnPOU "V)[LVYTK24r7c)Yze$kFuX 4lDf[qz}ESad@`~nl~jrVz؍J-0`I(Nckz:*O!đ0^4-g;<n9aeD7:.X\,h:L?1;=dh.0}GKv<*fℾ/ā^\5˱'VF44-5*PY=UIri|9P=?UU;'ShزYnԶh(xGS⊨b3q{I*#.˾z֏nCg=ʍO4( 25B;qv5ơ'JWQhMRABJF7 ӊH|-PL/z"qe P~EΡT7(\,Ane{ 7H(a$y攑F)7pu!$]R+>1=ƭ!ʉ5, #y8^ʿjC10Xe;L'P79411FM(㉤lϧ^ѻLOf K"\0< W:' i͎ ?|ڎL NP|f?y/:&Y/;Zp;'Tx~&$M䨘s%ș*Jv(U@訮h< "!ZV6 rf Şݼ.bܚ-᎙Ti);a$̘4?c'CƤ0Z )}c,, :(Œ|§.K1 .*yIN׻ `&XlvKX=hѩGTO{,&D=1j Em{Њ6YgC9EV_cjɂ32:7y1G(DÑ;wc0~d]K%z|M!X.ti+Gl'T9v"2d.tw< b8=[b箏>#j]h 3գP]ȤQΟ =7_gdB8a/@h6ٔz+:nJ@-?Jyu0a(p85Q ŋP5TvEr5#Xz`nK- (p4KrTV_T KdGݺ{4n ,0ҏR%eX|3 gZ"5Cz5smWjP;9Ŭ E AWH*UÁitUN+z<l?0QxV&H8%H`Ok{6Tq6Ki=,;^Y]Sx&S n50$1F~?V"(AޱТEHڳ 7p\# on5sܳ8f,zIq㾰&)TF/9];E'ctDe!NŐu2<8w0t,P$HA#ɿ9*0=P\vdȎ^>)9=pz,0·Xr7͈# Ǿ^%g t,x=%gsqΟ?RVL/Bz6P7y[Vxg+ppXG<ⷥi,11.pLeXf3 E2Wsֱ ֜0lUۂҟF&\e.m7x2L@Q'Ͳm({q X+!g ![VM0uL* )Yv q'[DB|eZӔ(mXAyC{YȌ.K1P+4|kձ*qx+=7gpEQ&y䰃7T`'}ݸ.⨊5$ڍ%[UN L+_j^qқ]Z7xگFzVlзIT7֓% Qn,~hu\" }6qβJ2qZ]YFdSst,s>˪ o:>ċ`aWޠyl9ʘs@ső(#Mf戻W8 _!F~8o cRA=OJ7ylF5֕n8Y m, V=IZeS>V ˍx%n%?qD5eN 7[|yו;\b-c¡MHS^%LKlI9۔Ʋ_MqAfU15@!KͤX0{Z>z 7T0Y>HEgW>*QōL~J]b/ 踀c9ESbA~^pc+P@4JJ%sՖr V-Oc0ܧp<͈ǑbѾgHd jKY$ "Am\C!#IFy)ÃYOd`HjՋrҿ5'2=='!k4&]h> X9sV0SPE9QwHHc(P lfVZo+L^NO߉CC^C:X Ǎ3$p󊲄ZEB$vIZf٫r`G+e35 x؛洐c6V,9UK[dj*7y%;UG?# 8̌-* Vz;j$lz*#CVx;1gMozd|*#1sg:v8Jc<9,,<?f\6l'MxwքG! S׾_cԑf0Cxg鏈t` #c-0o-,o=S|XCNdvϰfvΧ˟m$\n̷#ϬfnjzM{^=^>z/|ϤON7zKh>ԸS8@qMMOGbXz.|Sx 灏yRH R7'>ZZ- yx?7yA5$q 3bٱb^ _(pyPOv]G6,ܲ!"b )Qx'1yT_;aXm>Y;Yt2Z}|&#Qa̞^Þߛ=$iu`_*J.nTctl^>|^}d?||V\lq  x0nM_>vZ4c "tE5|MVxP:x2ñ}זo7&s>7mk䆮y^]V(?f;t㟟=#d)zlfߵXǟog;ztK'$p_8ݝ~~>Ow+P9 e&^9,Lg5gm^Fœ` ۣ둸bYXO7=pl{'ڸ;]+ӥ=m3%;EK?uUWnEzHETS?˵|"KV&y{'^<,ф*7F76 kL1!ez{ѭ) H"@.:ۂu㫤s<;ђ닼tw`Lo8N\l;ߵpp s^jyX\4"1cɟ-sG;J|'"!HV4Rdy&jco]6O06Nt=#3m]_f6ڦN& љFfSL$$Y1isoO0;_ݷa7{qTgaf|}ŐkVN@n;#~D87'4,/@%)a 3 ijev`x5!Olw6O?5$mqWG'T, iaT3npcaEpV.H>@;n,V;%f(0ASTKy4ϛٓk{ަój5sjGd[#,޳ KݮX4^ Eڜr yQ:,F.܉L{_deLEF'`:EIGdFTn+lzqow>>W_^~|t`zr 3AI},v*pSN0g!ZpwJȒl6S,lu XLZYDA+OMۓa?Yhk0K5 i#x U_ëkeF~ާwlO?A;;+7<7V)Ja5,,aUC*\1Nn ĢGi"^L%@ɾ}ei?}'N620G9U:|X0icV)`Ҭ$V WVqP(sC AHś@3;̞l'g62 >N;Bбɢnջ,_0I'r:QǺ܌ 3O3{&q4 wP^Wm/kT:!D`: ~%[NE"5= ysj$KI.=?4gkO?W_CxP.WN+#SGf-7{hSZUGІkC jBc 1 ]56{N"mTrAHߖ/&yDJ,R ~smI!(?s wtJ:junЋ,YwÉ-%[.b 2\%T&;M1MƉ3FW<b^^R>˗S#XݑtR=3tMiv;CrtQ)D{J8cH4R#BYRQ p ifbpF$}SCvÂ5ړɝ32vdE n&eTFU#.֍\F,?uO0|Ju+BūHomf?f<ވWtٓfRvY'JN];5!9#JNpJF^}m ̻^)^\ߟaffVA t%p0N /AXlI+titפ&PLo0 X(q_y-յpJ#"+r|Lt7\I+un(Wdq+SPyv6盽 7!p؝O{&.lGQNb !CEheшg0XiZ_q"G$-΋X͠q?9g~ك}-0-Lp|ܤ6Xz*ֽbճ. snra_ߙ==]N 4,7뽺U#0nXJOd#F?7#YOg/|WXc:|7x09 S2(MNOX";}ٮ;~3lRў7{z<At,8Nq{މ#){%LhahhN3Vn.qRn4:F'Д !v{G/6޺T`1PIEEHҔޗid%"6huw~qq@|TA_~7`r+xB+Ų&sq7{ʤ5|#V_vwoׯh?l|WFL\mػU/6/+7|c@:@PS6+p.;m~Eظ h̃p<җ)9d+P<^̹S+?U6q'ĠG嚞7ow޺h=xmA1EҴ\a KX,q"L]ZYK%m֘Hr"6@5I3Nnz"R6g,k ;Gj/j pJz.1裓G'+O?RhAeMVtc%p%L7y,O~Fq$/(NwۖVӭ= gŵͦIwgwf6{z{JmOϓVf^N1o__X~ˇS7i_7h_|GPl(pj7ܫ7[}Yhx#|n*j4 -+^eb1y"E4Pj-S,2]b]?/^5_ȟf{IOCNV9 yl^>zqW"fKvW_]W_~oޯ~^d~9ӯe.H㱀,(˴Hk%.eA[dAg:Wfi+`bH>7߿${o[O`y3.-Vӿj?b_|?/B<~* 6gvkֻ3og9t>D/:Jzœ+ddJEZ{,1۝<BрǤ.P8V#jXY|V;';f߾T1?|^#bGfEaނJ&==?_vf{wO7'l-p_y{y{sUϯ履v-&0[Vo{Mr7 +᚜|M6: +2Vf2OO0 oΔXhm/<l6j^I٣J}ѿfsOp]q5.㯬q'_o_}z|ɿ"Z/rm_)tyi &h+V"C+uhß?O&7ECIVsbuJjh;Oa<=Ҝ//Gʗ'A$xoQE$mPUpq{Nm!s؇~0gۿ^?@o+P@S[&gȭojؿoW񙜯NݼvBŃOW_qP3H|wWI zooWToYmgW}tE٣c AηGw_ѝ/Ń=rg%XY7ӈw-3{E+W_r_Ce[:#m, wp$ݿ#?v;WxgO`g{iz,- ѤMhRUa)&-!>t{]y߯7EqoXe;;?~۟}^>, J1֑xu=f1י1Xohr_}u/HϺ@zw2f'/pdf]vh lɏ+?dy#TBT9Gsrmz,%>6:o0nC.t>4AV 7w aٯwA+O7{)?웗_|i鷼H?sx?x?d{'7x|?/짟־s+O7u:]m7'jXhS]v.STlbyr'Ofvgש|ۿt'_k8Wuo3S9;>>Ќg?^?x ۰{dusA~p} ៿OY',(qYKQ5q`-8AЖN/EieE~n,>gt5ZNL Ҟ\Oce=qU9|/.//B-jO)G"*2>xfua[} 3t?8gן_]r%<Ev&oWN3ura% '7ˎʱtjlDoQXlF̛ |-_¹;~g >z*k}-oi~{AWǜ9&Ǣ{=~f<ݧ߱_|qZ1WJYWH-~^gݰ?t20>|/|g߾n㟿?E`0wx?,HBzG`21fymt-[}}Nɕ 2"!2g8,dWF7KMwtt`o۫?'=8Cs{g a#P'_G%ћT5i|w`];M̯I]KECmq=9šM^ѩS1㎎udw?>d/>y`Ge,x8sb9HL`f2Ā@,8=0/laЖT7LMs`NLyV&['㎎'ٟ}`W?R8 .80l.}"/ɕAj1M#@-4 #D>?6%1;::&_\h_l3[32)'}s.yT`XLp~sߴ1^7NoONf㓑f?|o.^w&3#Ƒo?irV 8(|;?rVi2]`:wtt0ớK3%_~z wUūb;TZQeVI; iU.%-IV K dpdo'^cff~KgCn|]>O,\;!J4 56o@ TUv f4ɸx)콧'I߼~g=Ͽd!Oi(n&VVrOIvu6]vUbW'㎎xvwv/uN_uqn~EcpPڟ^v 5xdMWd7j{O>|~o /.JK˘_|G담ٷO̢ncNY'ҟߙd=5{f>*o*NɸUW//i_}|WW{T5fʙn3{zɝٳ3Ž{؋;؋'yOoEvqGGߘxq{q[^uvkc߽_I?N0?zN fZdɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dܗqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸNA<BPo13V,`f 1f `1`f 1f `1`f 1f `1`f 1f `1`1`f 1f `1`f 11k$[ o/dwk}IENDB`indicator-china-weather/res/background/weather-fog.png0000664000175000017500000020547513643503425022041 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:E4A5C452A44C11E88D1994E8327A4842 xmp.iid:d0e56041-4733-2642-b3f3-fdb782ff3c0c xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:acb0e30c-aadc-8342-b6d3-8192d9b6badf 2018-08-20T15:45:42+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:d0e56041-4733-2642-b3f3-fdb782ff3c0c 2018-08-29T17:31:28+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:15:31+08:00 2018-08-29T17:31:28+08:00 2018-08-29T17:31:28+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 g1 cHRMz%u0`:o_FCIDATxIeYr\{f>{xsfX-?jWզzU d"9|67^wQ" *DDs5lX?>foa0wnf6ЊCx =\mLx 29|?kY\Xw4uX؋ߗ5VOߡ{oÛ>v->Gֵ{~o}Lu,z=Z6yf zCB|~X>+=)U9䘸2OϞ^_bY(zNp[0᛬_h𾿠?~eS߆ ˷zs`{ur >!|8"]%oH +<,wVʈkEC56^ݬp$cXqxJ–PɌ{ Zvhp𱨫z=< ʚ}M4 Iku;omp}ݑ0p,{op&Fಁuϱ5 =$D<% tXX6BIe]l>򒴙C,9Ya[q'ƖgFs_A@?p[9\aYgGIvČyR[7r*xAO1c7<">!"I (&()|TVJXq}+{({(0 YÃg~t[>=ܓFA7oHuƚZF< 1] /q!Lp-1RxvםХNa{S ؈RR%W*{{q?z=`o>z=JxHܰ%Xހ:dj *a۪P/ZZ~n\lۍRF@emXW,BHgW"Ʃv[ yI%'Ϲn!PyEeZ2"UQƪ.$ɥ{jcj|x(^~H,K`UsH$=†b*t"׭i1^7U^J&q wT]+0 R!CE֎9# v\W8"Uf6#J3tD=9"\';zr>l X^&(M0 ȉ C)L/+@_,.SAYᆻE ,6ĤbE@2Eb-&y 8~/BE`$`zѐ$OWR)ej_c= [ P {V5WHȊN.!zQPipBļ@a=-0\D2_KT_o)CvskodcP!ۂz-@;-HsH*n'7FG֨yEwȟ">BOn|E9) qClt@ S\:J冄`m9|X4ZD(`$Yr~ 6>VӍunh\zrfZhUkX8<|Gb3 \~.+Px]D5坣dR"_Mc(pm8eRtkT3h+{]\:*3ܨ{ ~GiTSڴ 0H'쭋 _|m ldcX0Ɖ yB9DUP:(ːRhuW7HpO}h@ʦVڵXѓY"ӆ \(N3v/)C.B.R }E5y>BOY'Kw"lX<DXhz8,*>k;`J@]eruK SH{Am^u!2RHtY׋mˤ!\0. \7ݞQ~3"e AC, z*-ɠ|#׼LzMy#D6%~wM$ ]bV]6qOGEN30 DtWI,t$jROL Y .'bwBCiJZj7c?n<JUz SGՁ5lpHs8'>f!)]F8%9yLIL 4|КIE4eqmXVx0Y.ҬF!6Q(]iI0^#/p% fe"#PVS8 TpB*[SosN)v tYrCJm=5$&=CHy7Ct_i1.DHK{LjM_3 C)ɣ8eצPx_K#h "^v}}TtQ5OXU H9(J0:Q(WL uT`+&X&Bq}a(Q0%i=W724WQ@ʩ\c/(rሃp9UpEqXoT6BI۹ޥ:0V vZ6.ahtXE*ȩ€@lń U3pJ<)Pb0hw<&hF2ib0ȣw:*MqMz6r)R<1)JpΡ/ Қ {!1izCNr@gYq0n/{E|d:,^I  ? 8Lࡈ]4Dp-5o!-˭`rʅG1e;84c`e Yb[H<n™ ruT${(xGH]EByAϏ|X{/7+C"D7I^D<t}NHI N!/8?r)^59x =eƅo.10U&.,2!kP3TG%}LK(rD&Z0EB_RHGj''q=Vx8X2.A NDnC(D;i=3+kicv|458i)#[n D4|׌KLƤ!B#Ӱ 2_К*)_O1O">% +p1Yӆ H/M:J(4QMt7wFA|rMwq|y~S].\9Gy L `xJB2w$mt 5t#vحnܸn/.JQ tҲKZY B%۲DꃓR>Ɯ#"ITCL,@؁ԣ8ZN8pKND}Y(a51p# ٚX5ܙZ /+|%F?z_eDr9F(Tg PAB?j.-j̈ET 2N<Vl ~A|%ѠQl[tX}OئpJd3s>|BM'(#bUh*÷ 7P iEʽTS,X X)C6MJ-H t#r!kcqd<Ënry!^n¹=7MlGCT=s{؊5KfP!lմ1K&$IBD]M:dV&%"N>Ǐ$^\'go u7\nPpggawf;*n1:=X9ëT8!4=J'!qX=At4+!*#x Dc٪2)VZ.иr=T/*\X^rba%Ff05T<[ySoA}# B<@pV &wfPtgP1Vh 8.2 &a͎yԉCnFRn{:v+H`OŃ.~ɼTzPZBKDT\mpHi 䏕|~\\^d+ݧ<\u4/' BB]TI4¢&72XK?d5 E3^=.\E2uJC ZaSڭb9G.#H^zC4CAT6n汢`(ю-qrjFrA A!XM,3Y{9xfQ xAA|/fIeU(q9!C&=tLT#ѨZQ&* $zq`<M8d|^LÒ`as1``֫Us`їR? D,םrS=4?}?%fzR}J QOZ:iY@Dd3jFpJ合oTZg٢&3U*0ŠѮDa#% `6fC>hy˸ARO~gC*$%R:lnŧ| 7Gc; 1k Q$ٲH3qQH},rܪCTV-&AD'2 FKdf?BJl">.d9c,]7pcjF5Or5njPJZ)qN1xnTX2XU1P*"h&Z0^Q [PUQ/$C}HSBŽ57z\Ni#4$GA_Lx:;W@x$qnQNV EH NaW`&BNibLHTygy(3^?:*eӐTƢ~̀RRwaU`݄큠M<`jOO&B Q&аw*ca7f?۫ZөL􅣫p%q P+zzX34dƤLK _=Φ'*žxE<Yjd: <CDfю 5djIcxab1<@& `B@G:Ē>L4Kq.+2+TD'O J2\59\f SI$Ikp1i X8+X4 CRMUiEC*[vUmd{#S,i(Ǯ8D3{nU{MJkKx HzD8'H-˅>$1 :U&B G8"}$^3&ɨ(/s½U i Ғ|D݋]kvl@} 9A`@EYBH)\2F;%_FԪcP#kgvjg֏#W~6VMēXen2B |;X檥Xڌ=SePu7hHBUZyY̬(&<*S/S/:lAcd%IB., r~qMD^#< K](؄ERK^,TZE:cT{_!ªtniT,di_T}ٵ:ymW;265\p\iKPQ1K黪 n>xƫ^hRc,9EhN<ܘ(1Aݩ²QLZQ~V : Dp ,!`pP2d"q̠C~;_ntί.8Cɑ1hRX >Y4%ZΝ֚9,KWa\V@Dz!'좞\кh8Ω@e,`ܲ&:b٦ FQ6=(-ov"Yk z~FV76sb3 ^v Eyowh82|r !h@(2MgvϥS9lfxH7z"rT]es!E0z *{B7C:VJ^tIǃT3ܬŊGCeCL5Ar#z=ou5 50TĘrMwB3@103471O8]}FZ qY .G lڮ9|DɀS%& \J>Gd='̆MJ}cWoq ayܗP?H)}!EϹrV.V]&?C2 ]nf4@XQ; 4o*yơ9N S8{-2Z*մ-i@ jPr'%^ta Lr@dNhu54nYX\Q */6R:;&ndhjSraf}%L :-VG.e{q:r#J.J/@p6R_E 7 T *3\G'7U6*Ô/DG8;o5X<ί+\ ɲC0 hk=|N^YJ| h * 0ɽbh5D@)OEQiU6lB-N̹,Q `g=0iN髆u^rm^ +7lҲw k6Ei;Syt$6pui|VۉE$]{o,#IƮj` I,TJVCⴲxkuԩ5 J Jn"Jճ۲gmܖp(x4z]Y/<.Xh *=G90iyr7fh F_ZlM6(Hhv![ҤrI  PBx,NS`B)=*^nͮh[[Q "TㅶNyx8PB!jAkdn67`bi׳߆M$۹wXyzw>"Ft.rHBY*0ۍ-D 6LTki$9'vjz9c0itY3AB kpNtq3ff'䤗֌D1Y1r3?Joٝ1L@i7V\EyV)dr \at7P.KxjwH *!\dyFqn:9bx ҢjH& Z8DHS~W@sC%F-/8Ag1}FD4t( PsAA v ((h=D @$o $*3qCzD lB.( ~pm20Mq<'аNXi ҟFu\yNhG*NMg+.:C65";23BL-Bc0a(6 )aaԤ)]CXtY: KYaӇZzr`A :/TgXFh t3i S` k ʘ)w5#->l xݜ\c {`ꉨdi< V 7DAr ~7(@=wظv3FBP'"*VLX9{AnF^ucF:(d=JIA/O.Ń%B=Mpc**R5b>("O4& 9MXxC;@<Up}&02l+:zQdc5\* 61 ς1m]2Y"ۋ/ MHYP{-\mti-;̘DSDFź`{=йa(V}jfڔυ8tzPA;7z"]L 0g"eS2>;69im6]Y< iV A3Io-;X&!(vy n(…LϏ.>-~6EZxq|*ԇi""})"1ID{] tձW >7FaU6oA\\׶pN q9 ?!cwI7,|%N׈G]+e&O(Y`?699k9 m)pAkyc(PO hkl(ͭQkq95:`w'#_tSu"q?i06iٰxp2.F%ћ,%7ڌ ՉF[ij A-JL-kg=l'5ݜUf?r3ǚ, RbœyU6C]O\]Y:.^17⃺AQd4'peYcy hmV!4`J_]}}STITQ@ܳ f5y2px.-R ZٸIa"sWf& 6Ox-|> j|nlEUR031,L||!w֣Xht|SV7c煾nf1?hbiCGצ{ J"H"QW6D/CQTP$F4Rix"nT$fR*c]C eLn*=!'&oalL aheG8H. ֤v2SΪdybaņK D~^ERٞ3lGE\|-zab-ܞ9zl,S`7|9&eĆOӉCBCPצ`Dg+L0C]p 8aS%m85 .k= G:5nBDz]1ȋaM%&ҶX$+Q]~b3hmDm|lƉJ4w#bmR'Ivc:39d;2BKTCL5}òtQXg-Hh'Mz%`<ʄ%'Mp&3_!)o#62*<”QNlRYs]<3n֑>6U$xu.iƒ^hLyM' ̆ QZV8/cSnn1|ݸt[, υNXSD<ݐ]7EȊ'VP:R(ɹIǽgq,=Zz?fL8H;58('BO:2Ä+iLlT8i:.y(eGbxp8bOsTF2Vt\7^Q 4 OfW0(d_6L܍X C^L.bџh19V+H{znNg(auk"/0Wy\8%̭|梬=w ww,5kb鿰Y@n(WiQ@ \l"X5 O`G),zYNfզ’Len'sXJ$Gg`ރonfݚFɅCx%4f}ri3S3"2 xy"%QZZBE [tY Mc1ni6V4jTHPԌ-> kkk#3aLyC6a6Fc.8~# nqɱunÊ\vF_5cZ4eUc[ѻjg4dezKsz`#xlPikGE9xhDTTV -y re: o scLGApfN=amFd0ĐBKkŞ\!V\^ad1AiVnI%d(,G̑2$=DCHm0LniI0tǂLyE* !il VkJ8ֻzADCKV.PRg3 Djf>&{ru!)ktA|@-j:("9*y[YO 6n%۲qYr2" Y"DЫΔW|8C 67}DKm_F,.2?%a!)dj'4"ւylt{yڨbscw2n㮥wi{hB$ܝ#p IM&Ǫa>ƂЗĞ8|E!G n T$146z+&l+ : عq&Ynw596W1rkG& +&ܰ3jKg뮤w=} -a*.n$x0 7JRmH pDYҦ+[(˻y&UsI/Qs/&iIȂqŕXƛYYd)4\'w2xhKO8Ӧλ)atSY7lQ'̑dQ3]Lȡ:rHlq"_I7Wr^zT¹yG31P d_w&=vY|kC:WM Royϖ]7Xʂ+7{t3~՚,Ar4Fz%K#2 OM9 Y$<vUvKé Zg>UMndcsY_td[KtWB/#z#ԈrUrn܈EMN')7؍˩ɺW[q&xJ2^4-DW8.auvJy6!6-xSДݫAFj[uY#21 a nVa5.uoI'teo,VGhY=#8)& f8_J Gi^\4?N-%[gu@։їpb?:3g0J۟&M7_1)Vq #@[+U`෋vpnMmի' SlNt>)5Woo FZF'vHCc.]=nQ!s]؋VndzP3*;xD4{QDZ3t JD !D>5 mpչC'moԏ/Dy̪u~{nvއ[:ָPȱ."ZMxYb}CbNBI-΍Nw\9@9LrD嘱؂XZ}nѢ]c,Ұ)'1^7/"cbsR@feǏ 55zE"rbcQ̒voxѝ$f0uBDlLtbؼKC4QIM`X\ucUE[RD#踸+=+ o1~ƣ /G"갃f:5ց_9p]suf:my`f J Ӵ[aTo6luEܸcO[-/]KŠk@k&2@q'sj(OBlL8;yZq <}t. jtҵnH;\) 4jq%f[(kE@{ίgE36Ȋ)L^<ȶܸ-KdR6>By8 G P@uyyv+4a= LD&blkUY9Pk1@klpoƺVeGde" r^:~? çbyƵ#$t՟&H/<) Dz3;AeJ8 L?&Fdũ_%b:,YG^# KJ_y@"GT Q:4sgLu ZEV9LeP,)?_3@QD'w\FkP>_Ah5k"AhcQ:| Cj]?3|<ؑRfeT%=Lg2 gtQXt[U7łO+n͎;ڼ) ܅̍Qƭ;k:LjAtu|7 ~fUzY@`~A2_B6(#f`F, H:?^'c. Y;s7DEȚxLrAn4,2+x(%)EZ]V96paPÃJRbѲ1ɡ'J`?Ƅg\\ۀ 5 +:66ΐ WawO'W޸RGfVm@*۟Q< KE%CLkX;AC>ClBb7f$)yXM}"x ۤ4R1qO,Q(3M,5jSc]xAG#BS{|wj"GV.)N5]A7<5`ԝA}pe]W:[xhr-ja ^913)CȆjlrr1:6GClXȶ~0w;$meV&eׇz+•Q%r0n17~.ao0 MQb[3}5P,W`C| P< Vy 9"cjfIs4%tοC?mOdU% hRub85R=U%_W pfLΌcܭbeEqÑi!EFh2n+XNHZlhj%>.u2.d$ 6q ,eo|MN&fM&1s1#װDB&>`zG5]fu.X D]#c<G颋#|#KJgt&^JeӋYc-ĥ)l ɀE%xPk.j,nT&[=Xµ%L 59iYM3Y/m6Ƙ*)^q>7$T#AcRu@G6fSHu7:m*]$e$"AB4&bh!,ZwM;: E0VB;Le0߹کp wv ߕO Uh5ysHc9H+Q7L$C;B\kb7ťx)چc0<_J >) 9L'|wW$MLh&JK R؟[@+2;4bYFϕuLMʒ~aIMPP.I딑+@SeyᝣҜlQL6LTǺ.z}oK}r ZgNV86ƀk T;&g"US̬*d>}M3KZq8[Gs-cΧ*oo)N+xTy3>M[qaTVM_/ 쀕$72;F]x 7Du6ߔ^Gtr= M#⪪F|puf6% G}+5hm^$6JQFpwY,6L`\RvPY0d760h|W! PF>x̢pV)I+D,C' ؠ )q1= {- Y:g =g)S.a1"  SIqHrd!>Z1254ko8ҠF! I,PmF Dڕ_^ɗSF44(aZ6a`FRB~9{8< M:=籨p[sIlUk b˸_i 4bC︠Uק+ C8\& ruvd/\ɂ$#yu8xrzNa ~c_y(CrРd.Qpzs7Ss S*;ׂ4Z/PV ddv>J5^L(Іʕle:M-1 Z{q8I"\=lpLQSjm,us.9 )M0 xY ;# NOދrd/]h& " - hN _Upv=$>6.ry\-eV1@5o00ZT$i(6:?+?NRo%Oj&8Pkb+!R*O"92 p܏.+Nm,Tԕub^\tNa^d>8Sm n@z|5;SGz9) hԌV?w݅4!̾{ژŅӫ+#*AޱYژ$W1Ү"G>pe䬺b8/,SS&K'튡{sfy8B*ͭ!_DeUY̑ Lihe 鱋y]9CQHuayvY_oӇX9m{e{rOfI,6[Qt\Gf\_29'J<\MH݊kn؎( 2Q&8VتTTEoi26gL 1ΈMGG`"έL>}@ ‡ 4W;L2A+N Z '8&9Ucؕè)5\=ݔn%N-7hgz\r9CB ,5~l8BX/8UzZ  a U)4E&ښD<Єt]N>&.㽈 ra<a8MfnIПQ;d۴7Έ9v:fVP錁n 6T}\Q-ړJG@W!01;)"j4=\#5Lѝ| 0eYlg:DB.&gŌP79=pQ1,Gx4#dKL82* 7D7NNS-,x; Y6ڻ^k'Kf1uRaB3mZ4a5:$[uQ'FQ;\ aBb0C56'03y8 eE9V\ cv6cc#$''2IJnf,z Ù 0]$U.ɝ"„zn"(x| U'3 ACSzI$1d L-顺[\c^dJLQ| ֠cQ$*6Xth&L;pSuYPb,6YxHOKj\ɆVĄ;;K0^H`&%n &Q(8gBlYV 0O 팘νrI ^+#OÒ"4{sWd 0+P a+6+,1*fl6Ac 3ZI,&")4Fp&H,Eh$`D'$׀PYF%(.S+%L')]A0.U-T{pDW^&gl;̗۱ (L{U)` 4\X"n ͎^,p+VA ^å# HnWIKAwJ ųp|rc< l 'ny IGaV6, Gm:น9مŬãO*J]nnBjrg|e8H 8gqC\XLæZܤR|G.l Ul]tAwB} ZZ4 {3c:evDn˞!=@QJZVue#:&1nPR`|. ES0[T"?2 8LNAGD2ib&ﶏL.'ORf1]NPL o19Wve0雊8φ͉dqwcb]r^9E?nrDbjEQ@"Q3F [Q7>V2*5|*^%8 큵Ǖ˚ + a5拊 x!nEg6!$ E@b3wB\\qRsS(OLHL}8=Пh 'a&7|H4? D%']bPᯀ<~y0WYi|f헸h8nMJY0%~vi[.(ZAH΃&剧a>*vXFTG8LJdT"[*y[c8;.p_;u8pAɝ"ycw+b)YabY(V'=m2HC!R0d{L4(V*$F5Н9[T_e'H 4;T<㒰?uL6R'_D̈́nx@}dnN[w5 !5Pvn+A\#̄Tb` 80>/ӠL=ݤzCGV :Y`T<_%d`n7;Kf GjA-d >\+y& f]) 6ӀLl敪Bz5>aMj`2Mv)56G׿'CŃj42v,gp ,p!uϫ$Na +M\7>][ vW5F #Dt_uqc=|HBbLz_ m|XG58U&S9pߞ@Rᕟ=<WlH lja D`] yQG$r1p,Hd\q6T+9I#yO!cM$jgWo{SpiLr(AsjW%ٖ|L"cv VoȼT1_ȊP]~zFyX/X3,YeU8"2O>*yڐd&Aq|9+So2 H;$['lNћ!bf쉛=\fͲa,DHpM㑳ds0NGO ڽ6ss03.\eWrG `.L@A 8E>$&^nV4 s']Fq@4o 1y/}s{;rp.N bcT wJ "=Hq]qb' 3$L+%>a¤Q B"2N~9L91>ʪG2.6 =:$u'Jdz,"OHwapv 9 ڍV\A!)rU:pgT"C81xe O%=iYoUrSį*;@~r#?`Kl_yҫ(q6t̠M'\m\~v8^唨Rd ]1²hUVDYB>I̬xQ>S9w8m8") jV,׎$Φ4ng`frU?/Q)͗%}Y7gB@@IZkGB\ 9mA^0e l^x "5@_;;Y?gϨ2(U ʽF9ZOz#5"Iռp]m)& !;үǿwc@rz7oBßމ/UӒW:A8N˹ktf]E"Ԫaӝ;:Pz9ch9Շې6|ݣPԂU]Z ڿ./:#ړ kKL`ȟ'IeINvE`MDyA^9, ;w" b# K+es.w/,Vm, 8GDiSm{>Y vaA @)z` ڳ|oVuiHfD=vaFNM\-#eXPڨi3#rN;-OM򗃇vӫAckjv&G#ծ wjOmnz)!9#{랝vr,PrS{^0J 2TgH_y<3\AFʦ4TNi֝E.m#0$<ғkP XC̞xbfn?|n>(Z'&甫|aͽ ,Ra;߈IydkddjvN ivi`m K7͊ZD 8D}W74+[&].rX=:%eZK#bfA6CR1iEtjڧHԱ=|\ ,DG8?3E΋Dz ¶? zZAO%CVCGQ^_5\$.ƓҊqyxBB5=djES04-(7tʿN`dpcʼnd/i- Ar1GWi#G"2҄[UlJHҵO%,A~ڳH&&`r |U~niㅡA;Xϟ?ل`...u- Y |NU30suQ:D k%8%rD3܃ `zdh:kɌᩩHЙ}qn޼_@dY{8DQBC@*3ȺZT\Is++ɑ3l hJW֟j@0V\jaB 'g7HxTģ'LHw 6/ޞg7 UOKN0tXantv\Z s+'UÒq9JuƵeqO {Un;+h=h])q 5v3Mns˿|㬜|S ~Z̺5r!!w̌tcVFVRլbNm*jURa{D7-,H^|!W0ǧv/SŇڰkV.Ḇd.)C89B_ kFKe/ 5NqDݴRp}>ɫN9i$ƿ+Vk;e^^jsUyj਻)ŹvuU&8x|}6Vq *Od!I Ggٝ^ Rҁ>̩JYQ(q(%]M[s,'mʙ3t^xx<+xo'˩PȖf%">ʹK{ދeMLiW63 Y M!īw 0#F 7<7f3V RPV-]obx-CLR~nK|)ܲ2\DǶh06Mjb5ɇe aF G7[&rq!|M]Ll@5fIl;oь5x4qѷa-WTAb/ϙzUMvG7.n!*vZ!BeJ$[YnYtJc/ݳֳעj2'"*|35su^Z8"&H#Ϣhؐt ˓C_* "Q$*Yw7R\թDR\WP(SƣeH f}Ȼ&,*GE|Ry^$r@9_5Vl( njnTZ1 G)h5yLRnhIzVC ;LWiiYvއx"qFڗZ>G:_FGq /a՟9 x9R$.5ׁƄ#|<:(YLXÑT p_%Eqr$"_2ba+ǁKt۸Ĝ /8`/T:Tl FSB37*WR9&=B!P.3,r1J~`X-iW)^@3rVwug&߼|hiI\^^ګ/eAMsU~2=V fŒddMGMsCrBf"uhWW?ou2"\!3{.rLk*DlYb,yM0kfE0Ro#׋kzȝ%<+?\YT1LQP~ e+ܱ n& Sa1,+gxu]h=_8)ZX~?am%=K<;o"R߼I -x<  z0P4EO_Xa72WImݲ2؄9 Q |^n/^2-oCbfEYGyb~7dlIRVq`tPMXG,>6a(VcXP{ GϘah a!0bԈhI7o|܇|pn8^, P&b:5sbu-,Zt]KBkҠcaDL\ IaPLP|>P 4;;8Ʋ522yQHYxꡧQ=HU` FP~@pdP Te iX^չE*Gr MXbS@ ?M5W_". c1&R1ŢQ"cS kb P*Ii|#NqjO="GW! a.&2kO 6Yy߿&vQ^.a`cP#~ ͡`KEҷ=E EɎ;t\]Rш6$x^85AXAyY'e'L!s dB 2RQMH^}܉%7ѩ[^{ d dj9s\U{ 4 `NU6\ ZCEUTW';VH'D}.Mg5,0x~MyfΛ7o{۝Rs SlQP)fYCNE|1뙔F6yV 'U[s pP$/Ȧ;]138f֦F7Q &@PA"/`|b&i%_hi۞u #Ąip! }{j  %@Q%LUthO5?gyj[뉠 7d= YtG4I2Dܚ;{uVs%\%e[X_TEc8C{`LF)^r$2Q8ʞRZC=[CO>[HNϧ~zJ!m+T ,3zr dHb{d8 :,xTjڞ ޙ gLj={f',Uz ~19(8qLzG6MN)&kf?ߺMW%cɁ7A i$`/7!/29bO0ث/{8 I$3] mV{X[&r(쬐E ׵@eUz͏J~a.q߼~0˜hD,%b˞f+Z`a5. # mF eILuP$/+M~<> cH(NqYY^s=oN1F!X; rXSK C"uy,XPx=Q?ׯ_a0okoY?qޞa  n`YGl&?D i7&ʓyVPRet;[a d0CF: ~iƢ4$TH&bHďMmCnzF1Q Il( h+pFU,i^఼n`h̎${qyOL 7̒a޽盚_ c2?lLS6 ܄4]hY4DEu0]Yx,"b)餇߻xׄ4(UU{b棰hx *^!qN); 4M{ґ < .t\8 &R=3ml"mdHg$g򧜜+dnNόi v[2.::YTz1& Ƈu9ɳ0No_o{1@~ݻT NE6UIݎ;dꅸwf>VHkgf?5psS};Y[O }boSU_&K `܈)fsU=๮v@9L H|G>FLV(֥p*ӭPye.fy1_/z Y$ c:dVe%LNaUlO7꯷AW`JC!{2\sn 8]xg}Vim I?uCA ^ql^,#msV)rbo߾1LI IyL6r_ymo ng|a, F<߫A!۸6Ƶ9"9CZ.Aݦ؍ CLGp-J#PA?9$1C#.wA1Jk`Ƚ݈PE,Q`TO`JҪ/;[plI{d2G|P`fTo8A $5uz ʏͅwRTCz !$upˆb/v.obOcno^̶R̼.jv]P&@F͕+:g_l!K!ѭԀԆN 2&E0ˠ1i2E0AI>pc^-BƧƂ?5H 2shv0aM ,ۓ6H'V("r|쐲w"W3: n 1Aˍ5of􀚞bd`ꢉ)vyqWs;QbBNql=B3 ~-y7jCln䵥$ ܵyUCQn>&& u^:.;s[uE<&s<QǜV!/=[!X!\ Pkc s3 CUk2 6:Q"rba*%q@ۆ- 6)3,b%U+8b9J fb""0afd*~)6G-v ѹ!>"WDFP!mұ.ʿzCnҠd:Ⰷ "$¡ jtSh/ 6_KA*Eъ840uJ~ iLႥVqWOIm/񀰃_5+3^dnDcdA(p'3E\Ldð@Сpf"ݧK˞U4YX.z!8WE&&4|}E.6D(Heٞm F,JlϓoBMrȀ$y2=2aa, :a48Џ&16d_qD)j&-Czt40!7b#Dڰ1IÙ]f *(>w Hl&M&LIof<b4 `Âade:n^ެGHI4ڞEB$8 +lM~B[J 2tNבJxPJѹ(0[<}UNjl Mw]ځ[: UЃg8: AeY!2E/,x.g׎%:)l@⁘B7ZGF_kTsò[ Nlz8ӓƙUc%WF[Nc.ɿP (2 C#݋Mu_j6X41-( #5\,`8kz/K$*$K.֨%Jn(+Gzxe.2Cv4-z\%Z0Pz.$r1cPTae8EָV-8b&QǷ& C|Hsqy@$*Ù?CݫGsˢVi鎢'PCVyg-Ļ|b@cd\},D|ϥE#+C ɼ!\ >(<^ (7?O,U J|v}ˉ|Da܃Y{uڐEw.4A%.~'?oz0Gr3I~![PcEj-"SԆA&ı 3gYؑzntЊ}YݵW@%3(LGCcыGۥP`BLV*Ui0&ՆH1 1Q2tbRH Zv+Qk:=RтB$΁JL}_ ኾg:vmъ}9KLZ6L8?ׅreUW'n aN6nD6$Iˀ4t4œ˜ OM/NQKCkc)ZrMiR6v&,VEH|&ƕd ]la44ܒ!fXc58kc10) ՅOӢ< xp /".yx 4W~]5:}vV6Y -iX;pe_ `K[Y2u[Od3YXr4d" t:8 e%k[4 5x8ڗ\[im܈؂ћYRLM<#B%(Jae,q&qt)s0ge:ˆiO eѐGcՏč+=u#LTE(#hIߑ,plf]bV)b0*۳I`-&ܚhCn` % -Zȱ/$&٤J%x^8` U3^P~ +uPŅ@MhZa=^<^?" kNxtzrE7| ۚ=ȿ9V `Ґ5SDm<@d-$4Aނ0rDXjͤ?' "shQH|9揱D2)~Lf+"#18/ [l9 2=t;#xMWjY|eï=gj@ʡ j91}fpԲO':h&c-BR&Jsޚ$2q1>6 V[P(@]&q^P3{EychdV2 CXIJгs/DmpM;vXȗsILN:۟~ 4"~B*NV9jMn3W9`9r7`\=4fڜƒl\%~C^EK x}h-@ݎ=D{8SqO4PL; Y_ $B_vU*7ԉ وQƌ\V}~G(6҄a}? FqӁ.᪝\˜P"7B$!0ff BZƻYd#ozTiOmZޡH2In&]`A||mE_%cCt#F*S"vꑹ [Y01Cj&@+q42i8c!@1D# CVx kW$ڔ!?1Pc&ܭt\m)zp iaۚAڹps*@=7W#[IdƜ܅K45dץ)'(ԣplR+?83,9KenRj??hiY4T^YSHku1xlg,XdR>*y85sF2X3 :qsaŃ@DQoyr؉1 ߨꖱ|2!PnD+IK(Kn ubaހ/EXfxy)k8o.BMXओ㕈 " NL͋xOx)" @N,11Vbe*)tRw0 P'<;+>6`C u~w?=x';!јdQߡp7 xqFEFBw3n;X`WA^4B wfgby+PT,Hq3YYZ7(Nq c,W]]Ƿ d\$!rN:ݦ D\N/gVH۲@sHA;Q^\Hy&ΜȈm-prM4 "ȦltB}`p;I#w܇vj6C7Gح>bT:ZnWfs=byu8H{:.\:/:*juoNWŦMHT7\h{@ ,@:F\'UO̔&QOHFzY}}\tA "[0=S>` ڦ""3Mf%怶ap*)杪!vĽEHvHO\Dyf 'Au&+ptٔdXLnnG<晐o,T䉃\|JUϋ##*S;(v*nVVpN5T"Q`KD<34]*!]ݡ(:=2LI(⥩u;򡯜t?M|AU"<ѽfk0eO_mƶ1e0 !p`|3S,5l9'Zr2%pl5ټyi}4\Nq1eB!37': ʓBOJUa?hTcU]BiP"B.l,F/=A*'*/q $ Cʣ!뤕w-nt 5\!4Y5gn3|=6d3+$Z^& yZe''LMIqZ݊m805{PUSx\y S/73[m2L7ikn% ΠV =(.$nBe[ '>b.Uh[9̒Bi5j<2)d J\H8sG waLQ[ ;s1R]RrI獚}9a: T1F*Wd!8L=t#ZIcuxA2pR<(QM vɁ.}V%0 nvYB HWTLL;X1Sg5~PV;qp dW;U?[ L?bq rs6Sq18P2P5#<PeIs,/$b6(+bFsƯ5f!W[68K_9xt=uHc!8^28by f&B7]ܪ ̟vlgГn6)rMtIZ VUᬘT*H,uSbidRhdF+^Jx&Q%Ys,ŘHmq8d _Y}{eAj<dB)फ़;QCBMAm!!R*1!\׷AU1_AʒD( 7a2cܕ` S#Zu6F(nΒpb$Lڋp04 SI>[S@b2 3%89S(" Lտ*(O){ĨI""7%dx2,O DZsƚV<ڨ9R`ĭBp@*Ԅl3gnr烊QFB,qjU VtMz14ÿ,Iw:ԐЄv(LIt }M(l%"7&PΟ]Iוd@)耏Oꔰk#Oפl؀n'6P'(W4_vV42|H(#vk1+Psj`զ@zE[mvƊEOxXa'u"4:݆4dk%'7mf"iӇylLi5.on ߉kF&6uXL!ʄ!HVk ѥ@0J~= (69bCtQHn>ĉ0W*7B7L7%8KrQ!aK8`lxBW]񋦎Wv sBd$KG&mhL~2>dRbMETIMO>=(kc;i’|7j 6\?.Z,VޖS,t ] ^JXT+YLKϔ[% Zg*Kor= 6XܔSXÅmr&3,,',,eIɲ0B=0._޿$y,'[@' _qQUz<[;' G JfS7܃ܞ9¹4 ˄ Y/1p?Pև܇@,eT~2TxZ qeb**?*^Sg>Moc+nbLaPMkRhk=+..^[GmPJX״}$r.D|sс::*k` hU3v6ʧde- lYYS<슉Lk߹'K'Ks_^^n.IR"ZlWtai*G"8x2.NNn8ӝNv^\5h&ϲ,Ol߿;{wv~~^Ncc{MKj4\hiuP D^LT[T\VOҖHX5u`x Tqo^;`M4nEhl]PbF#?e_->ætgN Na7\BdY^ 8$f}򾼼'k4h5-DjhI,KVLNOO3;qn<7nٍvk$#+l|ڏOIؕ_wSN֭[Ŏ{no߾wo۷[̾s/ٳ⢴D1DmF>GF3,uBVeW5~zzf;CMMDQW4)K িI473[piyv''ۓ-'b]'-K'kvF&t frb {qy}0=/&TwΌ^nݺe7oݰ[7o-K=wĮfe|x{~&V`fUg ͛7uۼwݻ{...ѣ'C{5urL lNrq I0i/:xЇkG:XkḜnwr ;6k#a5TV֓_hP*EP*ud;Sy xz+6[xY`nݲ۷7[vM;Y܄Ux3 g@~A=1z+N*h]=VTJ^W̻ng}}'k{=~...5rgN992`K22&DHF[볳{CE[8sTM(D8dҜR~gʺhnCE˳evNvvr ,0l!F0m긞K@si zumF ʆX"G x@~Օaˍ;]\ ޟ_ݹwn߾eܶ۷n[6e p&VFCE oɶb(TDY3 <s[)MLՌ65 쓝6yhzݾs~~}S{#{EdrϨ*[v.x:%NE$ $jY'Ͷ\&o1i4SnE9IguP.G11td~+@H(F#NNO7[ +{ΆT5UZuW -d-#5 JX,V- |p\v%ƎPa;tnܼa7oܴn؍7&Xs6*)q?WC,R [ȮNA,;CN-R<_;4!;vcnԥ@(.Uh?>#{=z>zd˹ljn&uv}Pw~tiE!T[doHRQ+<ҘO1jȬD'-7pzeiY0g =!>mA McFpPcܒ`l {%=Uˈ;qݽc޵osq7 /^Q|doÏ؇>w'8pU*$8fܓƭ*P,Iդ;5PlI( :JޱM ԰Ȱ}BIKLɉv;=]`' 0ITA=`M6'B!4$I+khnVzNwvwݽ{v-3t2qyxNvv///P9_\\3լyQ9%cdơ2QQ%J8-?n]{QzŦN'ы1ٙ}Ձ"G{pOK:DZ iYVHC tJI q>I dcҹ䇠O5F \cɩ)PGʃ^d.==;?oOJ޼ym#QUG0Ix]1c(h;*Y10H ˤLpHGWYXSTf"Ze0%4j`FN FB{^b Mqf)HM4H:ưv[?99ڽ޽vr^ fQ25Z+Ôglg'Z=!*ّcG:&?G1LƏ9] йtg}}gǗ#{ƅ6R`(7*>#5FCa='9B%I{*PhD+ZaL;==ӐI&9Q@Q.(m XkO]G<SsCXk%Az6@agg{ݻs;LGiѠ/n I){dAwRDDJLB2Ə#)Id]Y+"-Q7nް>[7&DGXyLNG6uݗO>^|m>GO6nNmL|vc=l>掗Y&):V($x7fWr'nW%_E])z?\|ƙ}8|+> ><ل؏{N}7`ˋ#OR_Ñh"#5ϧ;}q,h[wn۷wn7~eO</3ހDKu Խāq1:Uqdy"lƂg&Zz}.nQζ Ĥ{D'|=č:ʵO:;;>>?7kc?e-|y6_^_'=Aѣʫ<ɏ_?TgToX:߅]_CGW罔OZJ>#{=~~xߝĎ{pĂ0ӑ>ndRltA3jdc.GIe9ggvz:y횉`vtS5XFW]lGM~rb|`>|`oߺ0GW?k!;_^\lz~qivi^ٷ (&z٠|ҳbAϘ?@2rI6[:{qa_~}s{={.ݥ 3ԅX+tϘ%\jju/219`3;qj'''Gku)!5Wͽ^n歛v ;=;O-vPq>뛷o.ݻMb|/߽o7owk{`ꨏݻw>|p/ɿV8_W$mﺛ11˟[!9~qP8Ȍ47Cwk彀ú~TaJR $ʦd/ mq>cۯD{>}}{qa=ǏM+/r&>"oVWNZQPm+ű9N솝;;޾}g/^/_ڳg?ggܞ=}f/^K/i:7Ï>0dmWXU-yЭ*8kXʒnY!O=a^Lb~z]//w0SY1E:'-blͣfpxy,aOc{AH ɞ >nKO>d>c*￝X߿g߳[c{艽z޾}k/^gϞ=.]59LP OSҦ[$M瞫(دvZz_z2<.޿ߒІ``2&*=U9w1{V3&!!/\FS84 }|oO>؋/Hsg ŤAۘL<'o@Y'[T:_w;yfg3JP%h_~f~}'ا~z*NNN>>4UϞ='ؓ'Oɓɳ Ϟ3ai|~BBôtK~$~Z ?_><^cC<{ty6 AO$Aƙ5`κSJ0۪1` pjh:&JG<;!e ,;>w'BhYt|K|&3Я8Ur u|M"ob|}W_ k5{XE?~?zb>GO=V9]SWWgF=Zpst? X 9Hw-*-o8/wRŢgH^땒nD8y4o$1W0.8;/ܾs{=}Ԟ<~jogz"fzWaE1" ᐰ;E02ݼuӾs//>/>aVE'駟ؿ43hC?xho^Up3)~zeW$}S0:v#ʹ _~/~n__WwK{ãaט6Q/S\'ܾmwn߶jߜyԞxAg"q=w[r?w}ohB)dzߩkI͟Cu9Xlg{9ե{5qݝ+kCsM_گ~k)ؙ&w]~ݻ{՚?~jO>\G]P4.QtLp;;頤ٖxoW_}i_}}^wFg/]^^w}o}{rJfd{YOMWMq %ٌvX̰3߫8_^ˋK{yiT'S?]8Ϟ>__=|g/BS{乽^\=+I)$96[{4<;;g,vM/oҾK;[7/^;~xC3TǦ]_u7c6nqdի~w}g<nf/nxwo~;Krd\2KJG%!qg5>&>N_sYH{!(nvqrr~2[_ڿ7i;ᄈGQJe|k{={^~\ASbʨ6g\H,'葇m뼳}|q5/jG",V,{ԗۿh=4&i[[_ػwɓgs{Gܹ{׾+o}}'Db> ׿Ç) %TW7+lf$KC٠YĨ: 3't̥Jdpzjnnxo~S曯o6=ѣG?أGO׫%{_տܳwڇ>O>k(i/x~_7ŋ+D,fK|R*S>Eeckr vqPJ6]6Cr> Sz/y[C~aOg??|a/_^ګ勗k{}Vjo9w';sݼyܹcn޴woݻw޽v޽D5k?s_~_ٓOI % ̫eL34dZ(b2Ќq@W.D!FoG0Lٹmi+#$y^A+Şfwmt~촧:S/ɓwKͯkϹvG(h"V_0/Д. vDNA~`S"tg*lMt*Zed 4m";==wqo;=zXl-Ig_آU"/ ]V:<HKd  C4AU!G|ճ(w ߅v{v;/~n_7@XOltW}B3Ϸ_"s } nPDNT%Vʱ2hq9Hy:d#dfܻwk?կ~myjɽ[!vTR/[5v\9z\`S9{ CuTOϓ de&mqGG?|>>3w¾;o~g{({$"B39Njljqak$U-Nľo`?|o᭙$\TtLu*EzI`3I~4٢x,.+Dxygg}gb y13 - _?- O-]#~tW&'NH?k޾wᄋw Fb3R'Y]]_A dWq$jz jqGGǵtg~}c?ޞ>}nC6:MܘqGGyg|ro#{=H*a^wq]/c?3o}n.:::wܱ;w33 ?|=zlO?!?un??s\'9Ļ,'v=fN@qvv 3H>$=}̞?{nI 9܉BL'LΝ;vy*A-|+㎎Xeſk{G{ǽ˗ڛU\oOҊv,_.?w sݹw ݻwݿ{mqNUŭ[֭[知{歽|^|e/_oڛ7o7[;wnޝ4rbg7Ngv yݸyn޺ioݲ[o۷lSi'㎎2q y}GG޿88jMߟK+ǝྱ- l;ݜ9!qGG?Kldo}:::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2KɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGG'㎎N;:::::wtttt2dɸqGGGGG'㎎N;::::wttttt2dɸqGGGGG'㎎N;::::wtttt W3}):::: lIeIENDB`indicator-china-weather/res/background/weather-clear-night.png0000664000175000017500000005656613643503425023470 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:9391198DA44C11E89D7DB4DEC16538C6 xmp.iid:ea369fdb-bf45-524e-ab5c-ae81da2c5b9b xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:68b1f1ac-208a-5e42-b6c1-b89a1d75389b 2018-08-20T15:45:18+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:ea369fdb-bf45-524e-ab5c-ae81da2c5b9b 2018-08-29T17:32:05+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-20T15:42:23+08:00 2018-08-29T17:32:05+08:00 2018-08-29T17:32:05+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 #- cHRMz%u0`:o_F!|IDATxˋn}g}{Uun}9Acb2$@YA#ǂ٠AC!& !F@@Hv3(6&cɢ}UzoV{s>tAYۿ_%}YmF(AP|of_ l_(I2 l1v=c2,*cJc2*c c2@j@a g TvD$q_/J~?~GY^0(0g_,I~}ANMc8p#kc aIs0tNoNG \2a `!l=ALJB9Bx?Ø6!,5հ<41$a}n@a?1Mak5<ݤ$=X[Ku hS;>y5\9c<_gpc@e `5X;VmK"1a PإpQ.ޘFUMYHOU! 9TTQAS6X;kIyOtQ oLH$Iݍ=Z0dQYVKdm `ADmE򫿤Ưq`ޒ(hgЦp)V];Da0U2В]Kzr|7~wDތ(1FEY(+LK" V[eSzjQ s^i'm `3!\Xu㳾p+/aXZEQ ӤMYU;[ 5`@IZO26SQ(;_Wu%7ZV+ fʊj@U֧^EY-!C%Q$IʊBY^R fZ;P8VsLYLxPcꇀEyt7ki' +i/V-T:/ţ0P󟕕S^W5lQ;JDQVOSZ S;5!|l{)$qN+5F{<1Ml%D|T/8aNW,$͏r9/(T-NQ]cm'j'q=U8="TDa$ 7Ҭ88Rj*&iFGXZhIʋRّݠ@N{ޒȊBqt5*c`8Z%4͏jFvKVҌhjT,nxMW;l4p2ea %i%S츶wPg|9wQN6KV+Z昦Ykt۴$nS)ըJiI,~u5|L-^ng~U慮nLWne`zRK9I IV;;]UNףL1Kv+l1MW խd$p ݩc(T+dңR4; ߍ1wZ:we'!ը@VpyiV,w<8ҝFhhʆTz[VTߜ: mku紧^54uq=aTz/[Ͷ*4dG3C^[ykrNOC ') a O궒-gIӈ;Dwsߌz2m `Nke/ 95GDw^{ђȋR^h$2~]HV^Iݠ3?]9qy3͸"ܦ2 ":T5~|v7n̝d_Ip^ce ~Ki7p2]8pQۧ+-9}xuhBe R۪J{ifQLW3IOw$ F=qc*c`Zq^2Kb֒NNKo>]iIeG*cAnYy 'ĉ8 ^.ãS6[=7{ϲik4MbCki53Is=8Z-y{vXNkLY9 Ɠ%}v;z`qUP9.X(lZjK«~8͎b]Ew%!Iף=f㩌lRn%ὗ1FYQj0 :k޼uڴ$м(r(1:V'na, Ɠw[+7*ίojTZ3$p:=8g~%1N36|'k'3mv϶$*ɵ.CB6>ӒډO$FTiv>g G~<$9%QnGalK"+ ӥ'28|-}}=|r?_eEϯ4O\RV;~%`<=t~+yG㫁=t2:Zv~5 4xZos}-{e^GC'g.C]&GY ~_SWñW?׾*',h>/姌>wX?O?/$eGTi#၏xx5_U̔w>?z|udqhS(hH!{)7JDD?~Co~`˜4mNe@1PS1i F,;cy1!|P1[%<92b@e+ |ZjKp^;Zb c&S90Wv5f>Kr90؉j6^s˜~#9n<+" h[nĠ2MS cf6gI1a ϒƳ1( #c>2x݌1 Fy Qsl5k@^~\GW :* IRJ7Tȇ k05FKEU-UÜ_xʘqJP(IWCeE/u5\բ'c_o/K;y%aL}./K˜#cDz5FqsUpYђ1{;|hDz1FqoЕSVܠa e_{a0ﬖWj-9 UనJe<TZc|s^iQ̧q΀0,yKBT^06a@`ZqZc? l*cfQEY^^<_X$ DѼҢdw5l+فoI<sjt ƨ+-4/q8lY܎^T&Y :Ns, XaPϒ4/8Ae 5F$Qܴ$$)- Mt0f p8f:q<UJnЁX(k%2 yI/Ʊ*c`mkՉca8YQUg@fQ+ԉϜgI`Ø'CuDA$EqӒ1n&DFiAe 1F8^iIxI,SZ0] T%QS-,5JSnЁXjz^4UVae [1ƱqRNB,š1w%(R՚oo)ILt8ʘp0Z~8XjI3Z$>gLSREe>iS'ӿw̾~8>uqNk>=z6ckS/Qvޮ\}ם1wVHҧOW8"8+R祪JVrź<\/5k_كo?)k  : a4ώ)>~uz(inxT|LW"|SerHs,_ ݛYR, ͞׻aU%óy$[nS|܁5eZIWצZ޹\zT~C1WVtނX] [̃W;-)>N˝rOe{d0 0ǿ( ~|nbMwm  rñL+8YP/f@mƩ8/+2s*mYj=, 'j~V& T:dx3Ӱfr${ O2M@E8tM@?TN2) }1VƨeVnɍcʧ\Y~LʶzFO%m)dmN"k˶O5n>/T 'r7ARu]5/ie;Qs@v2~e_5dict20q먀8Uu3fj6U_rs>n/%kd[~[QxSpUpWVeΫOn&rYA`n%yi=}gPy1.n 礣.E n̓冓 uWVIW5I>c%ϋtX֨Ub_xr1mhƘ!j! ^*.ٝ*:Iݖ³[}g=Vn U-7[+lPq~bFhʉ/Rtwyr墭0~P9W#WJ zNZ^ߎtVT\Uei.rtFˎ}R\T\dܿg*<00{`gyTLT~̴.Q(GR`滶(dt/lYqY78«\Ot{J޾xR5xPL4j)yZ"nTTN .Zj}Z+b VTT_=P|g*a `[W~qF&J3{Lpr4?LU'nX&*IXa褭O$ :.Dqyrd*i7'#V{c7D u0DA+swu|+'WRUV5Ujmw cSLg.G{#Ia6 ЍdP޹UoQ=60pp򮬿ivGFca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@3@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1ca 10@a 0@c 1@a 0@c 1ca 1#qzs_f(`kN`IENDB`indicator-china-weather/res/background/weather-rain.png0000664000175000017500000021174113643503425022210 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:D20E1D23A44C11E89211E623D0401C5B xmp.iid:22473c25-d366-b945-a1f0-bbc84ad6b214 xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:07fd4224-fb17-774f-95f1-c2dfabc19dd5 2018-08-20T15:46:02+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:22473c25-d366-b945-a1f0-bbc84ad6b214 2018-08-29T17:30:46+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:11:36+08:00 2018-08-29T17:30:46+08:00 2018-08-29T17:30:46+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 ! cHRMz%u0`:o_FIDATxےd[="rUu] (0/$%=Qf2CCҗK$۩sKDcΝ"HTUe^k1Dž_~_~_~/y? y-7¾f X+}v^ww-ka]jۛ_o7\-xy[~zW·&=կ+uvtΗ[h5@rZr;ͽ&BW]Ѯo-ob[g_4Um-?DDۿaWu5ksXHsC/󩊲6.>Ol{|?T{{AiWO_ÐEs/ ys}l^͆"@`~K~7q݀y}ץ_/ݾg͍uYܹMulwH6-kޣy wmXS3ús2T{9)?=1}LJ+kI{iM~^Y߈e]햌l55|Ba_eNb>v=GyS6Akt/K|o+Җ|Vℼp=qͰh C!cx\u.zukI]ʨbaư~w/~#valh7+Lsve3Re nw6NsSE_ l6jýE$zփ*Bq6 Ylc93YOn[țS}}GW9ʵχ}X[YF^= א.͝M+ Ǧ,`}^ o6_U]6n-`^˼ټ#ɹB ́X9V%sI܎Z9!崶X/r٢[XQ|P2_[HH;z6w!CϹ]?+k|mhwGJEadtA27 @(m{eg#ӽJ`+8{#r}_-g3n*l[MMAlT "˳˄,^ m|Xeh,?SJ74p3kv{1{m!6`-4@.֍af)mP=g=ľpVmSث8k!-(pňӍk {:ts a!PawRD>"uO |˩H P^ym8;SnED*@yK}|V +#tYX7@\Jo0tߗz:<|J?ҁXR*s66|ҍultil&SaH CTzbymaA]f;;%M%'(_f8yPK#k LƤW9aF"p N+ںmd:R Ӡ #Dyvy",$cV{sk Hg΋(G:nP܆"׿nk uy#X:e͠iSuaA%"Ҡp>6KDցŒmR|B*2#Crh}X+_ց<"Bf(]<3DHAEyۀcҘ?TybvG;3:=r{nmg o%q{ϩ$۾qfp`\"KRz;Py? Tsf!n#jv`DZ*FwV}˖! 6Uer?r*faR2V:&!;IBi4-} $!yn!.5}&zj׍,5N>nUVZEL@"fն2jҸW^QQ&ǹn_~^fvTeAU ~E? cJR(pe@GgTRGƇըdp  3kfF97v@k+#D^մ?on*1Ff @.%7#1?>٧}hn1ڙye[pZ6ywJvvSn܃:\e 3z3 0h+ 2z^121G{W[P8Q|y{rCbvGB`o(`QS;gȤQ\Kg7b ;nO1rG7k*C2H͟Fa?;Arg [A6/aLawg3܆MiYW0 G1kC|񽤒=BE~1ESolriߝD32:jsз}nx֊5k+&MIf$0ḕ/ 0+S(9 ^m6IWB,ʋ-=1cSG~' ԁ.+v>4ӁH;|w0tHWʈJp1?yX eʠ4L^%Yr;Z+CaҘ?;Z"}:iiNyMa #: GH(]h;2FJG 2#MT(3ŝo:<[XŬG~D)+ZSa3;|A1NE`- RØL9:,!ҘUSCF)h6RAO@ۡJZj{ⲡ|3BhptrC:ϼ.h`S2 ,ܑu6PqiQ-fTb3|mFT@)&G*P;ж0+zsxdQsB*ȳղ>33~[/7a;Mvqo oDtT3Å4܅Qn*ߗmH,Nq?S<=PdV6t`˲@83ЭV2Q5{Ρu@[CA봬y[-3 q}goAH[lpt>L1xyCcpCiEr"sg8P+Wdo ͗SV*uqChߙGEUy R#cn14|}c(jWy-f1;g9f.wM/ޝ]d}?oc h &*pk@xW4q-4zFPf lZ3mi2:IZ?SrΆKAO^FuֻwㆱFgsC{Nu][f4Hǘ0P0xJLq{r%mnQra`v36"%cSTó4\ܨN"g"';6+ab,Q:[K[\z=8!CN&YnWL~Wbo2:۪TZG.Xk5~-qĂcjӢ4Z;h< Lk;cdLiu>cw bu5S׎&5\଑6ع r^ 3ʤ!X+os" t4&!TKEcCetYv2l^(6B*\ϤKB^ 7$ @0pYLp;EM"gH }>4AZA|#01Ve(ۿ,%Im=3C!=H"lJs{PTmSǰ[RԆOLAVҹ>12EȑnMr]p= X;&䤑'o,@#Ik Cǥa}nnØCªL{a lin]$]*C :wT|N m=]vƺn~:22x68e<;悃y a"SF7@ț/?+,r> 1'+%}{l$Hk=rv!#m/{3(|haK@pPǥℬ.hl>t%6E/P4aQU:22&peG7m i0jS~Bxn8ƍΖz?k2x@%~1_h30Yl* b(AN2cC)8% 3׺T DyCu8j\QGh6 +w܅N!l]+=[ϷXVf= j3˥&5W6-r^LP$U^/i7\1_ \H1FdO&.8Y8 1 ZY7 Hnyn_Ջzxrk]jT:SQܹ DdW+Iu?2Sb;f.9s{= aieDco;y4p<,RSSJ笥˫%kGMYX`}d۟_q pA1v͓ Jm6ɵY5bahæbyÅ̗|ʍhq2 ~?@T֕nh͊4A(lf0X&DR)`MG7lmn8,MmXڲ(F3k2Cf;X)봏`B'BV-w'*15(6.Rf[`OZY&o Bj^¨ukyaū{*!R%# *Z"&MT" Y-6VGJtQE-ZE"6E4C\,.;U\v@ fCFfP1egT^2]q˲74dnh`C{L<(]r" ?g'lI??k|͢B](B0e_ 4IOb'Dmv`{t-iG,O\TҼ2Gf5Z^{j!w4G3%ѡ7^'(+j8ב6pG e wrw[e$RÁ NEHa1Pn0*TRBY;J5ɾtzT:@Nwi/tTF4<^ wSLa=dIƠϏdcWК(YdlK!1vٴ. Q' d?aI&t(Ĩe ꧶PdVuzd?BG6 v8U(|YzAll~{8#>f^E,`Tܷv4Q\ sAIw+ \&!Pۻܩž(g]Ay2O{Gtr \n7&ߥ!F EQV%X6i]FSm!1lԶܾDȫ$6oc#Emc 4Sl0JWw9"Xe6@dNMJ,0ZȌ"z47} (%gS~@Sߤqwwy"fZᡳq:Ή%J4/bv:|m1X^(^GB )!?aAF= 7EҌ%Oǰv;nr7p~^&OڔݬK3َLf!EL7z 3ALHEUٷhYfۡ@:}bKÔ7j/~*/k?F@%~TAn@ޟӱʺٲ)nJp:e٦gІ V}F'hTሧNj [6$7.3]5U@:mA%d:h|2;66 \$I5(jMqO0]'A ؞\HPYv}O-rnB }& 9pq;GT:)\(iȺW4'AEԕ& 0P{ƨӫL0Oqtg/-`V,Q@q#K$|>p?t~!J!- O瘏F MEhj+~8X 3~6iN ֈfVN[Qߩ̹Wp<$I|"Eqd) os+cz@O&j:]753y\yh V"8oNJϢ2YWg ӏ=~fIP7c_[6mT5* $sD@}?]}cO fz7E6((m? R*EGC5F?*&Q^L* v! jnNχ>Rtg]D3!gg(YO-è Rqa*6k[p :єe84I(e.g6s`'Me}C4}dqf-Xntjݢ'%#N53ڞ|z~K3&41?=~6 wE59&J0ϰOέۃX#c/HOļ4n3aemp翲&WU ,Hm<[ZѲK'p WYb'K0oI.0pw7|=TV7[H3m\o4ב{Zw\h4*{ԘYJbUao`&9L*e41V/_ex|aٮ"i#G\lwKW fÑ0N 4` E54HӻuS&}W+yx8|[RN$~9Gǝc3>j^PD( iis9|(tv;-xt*gZ0Fchm$(.PNlN畮x~^>OA{S=fs6aYh%[ۺs)<- C6-3>)0P;մ^ ~jxt-SZdKvncmouUb2eÈw(zXSdN1ˌTt=Xhqavez@~)í Zه&(ۥȹwkSB;X'D QUlMxm2 kwDgk9`K?XbZK@Iڣ׽}Oy%}S0f?-eFWh"Ԛc4k݉>}H=ع m~9"n2cÉ©eEɋ&V3Ӱ6ɂ3 h]c iJ+;pc^/31&MC Z'juC:!Bq֐dmViĂRE϶Z)2 M€Ul^D# ;SGGـRE /ś$O.(PXj buN0чKf5(ry?o()TVGMpam3(בjϟh?Nxxn?7N@֏?(FBu 1bͿ5I/\n?\`k;ɶw(9mR`ljʡjd\DsL#9iI[iC/7lXCq$J/ʢ~?as.[9;l $QYګ IHk^&xx~ Gw^I6 5Zn{JN^Nog!&4՜3hCXɬۉdBU1RJBKDp(^'r>+]Ir[=LWmW q?640ץNl83ɚ2DZ/zd?W©S[ !+ 3ydӨR`y:Ҁf y^D!XV fp_BF͚&7; ? Qc路`7ʠiӸ#ACAɠ}`".N|w6#G0LOP?˓gdXj2qcDS-Vt:H qvSs\)W'7>Ѷ28ܰ3Q蠂ck#7{5_ ~5ky1 P4tK D+9:ѓˆ:DS3謙ƃݰ6:_ن,~jFtd&xdL>>N'йnD,v_Ycx%*:E^6WʼQ$1SAK^Ye;=q9Gn\}|REVd4خg0۞` $x6Tshmܓsߴ#ߜ6x8\z} -g "l,v'2VҊDs};:#D+JF;dm-2)9UNˊ^tH#AF<*AgŴX?W9a" 2xݶ)@$y}G! Ɯ a}f`O{rk<['9b3|Gp),(_/P.y^ 'HRrSnj`J7/agTU$%(6h:ACnݰ$Mg# QֿBj=P{"C"@ޔOY(f%a 8vH'8#8B3stoi#<>ʍLmމRDCy`V&š`31fIC```Ha *(9܁N!y@4F]Yq)Wo~!̋q:]Ke]afDyd_"ӘXaZњȪYiUJ}8a2hy`$@4j`&UsW?@di&Ne {"]uG/v(X橈ܖF:.Ħ lYo(EURDmT (qWIg c &՟)jd$^UƗ~&$|aݦޏ2 2 {Kԣ@4(e: N竌YĜx~$5^m N,"¦X" &;# K<#qYdjJfi&gP $`dX.,Q72jucDy\HN|9+4Uai~ S- GDjULMv+4H֋zZ,о2s@\ʼidR"a(mVjm׭Iۘa v=eM"x5DJpqV:PP\+KafZYGܣVYEukװ9e̕nYfh#Of #,8ZiZG\.&zD!]h18sћu1P<-[Q6P"r1k[yTܶ_Δɉ(0A۰&xˊm4E%}/nb܋&\t6DfĒA4o;ko` Ҿa+4z~ xU{Y7&hmrI jl"[DrFaf0M2vbt6}|^cGyQ6srW Y_{T \C:oEń0lک79 YR,|C-Nlʦ|gN{eYfw&!daeUJ'RlYӸqڔo|[fD{Č+}!}^3Trs,|~׵*,t$K& bK4~0GE/k/%Il! *+ȍqfB!8)$۸RylH[`n^Ë#`?VFm %iXAd&R{5+ d8=:*&S XWip0xj(l?Bi4aa7ihmBP:Eijo/ zݴt[}]?Rgæ! (Q%z@rjN6%M?0{@㎆es.3ꉙBLe!9-em[W%X=Ĵze^̶ o"'t7"M7h%lM`MJo6WR.Zj,ǁ岱)k1Ml0F{&nζضϮf,\dzdK^0U2E QDL0c( f avai|e2 'd@[/_gy(\iV^jG2 wv~yF9½)JMPIzh{Liͫ$c*[B~ (g(kS_'xFǢ`S9VZ{ĤE=0Uʽ eu3[pqV#&l/vXXhSq[Y}6n 8z3~xv]4BZDL'o!l gEjMEke,(FI{8 <~uRDihe݆3M`4a 2 sZ J2ʠLjLi.%-* 3@H>Q"=vvvJ& $ϓu4U*wO3Hm@+nm *,}6 Y.Bc% D]- ![R-Xt)<ښg 5f^.;Y3pc U#C&Zmd4*)3-dJaU'¥`3\L$Hg(kXr11 B-vI9A+eoXHd*]W^xfLp\)5B!#zids(IJ5I=~SHq \=ÜΫV漮#Uˆۏ9'*0|ܾ>X> :mfr:5SsÂTS0jY=MX=g4oi G<(뢔;(ay1bL<ȧVFy]ѱqcQC+>l:Y-Y$ 6H'4x?{^@bgEQ#͇9ido)̖c ayF*%* Kɍ]umGuݫ{u@[,NwE5yxinD@r;ݻy[Xl&ب}*`!3m*Uh,+0xՀ6U0qi۟b+ ,O CD~4*BH®u/\`^ r;aEQ_,EsS6,}zʭHDXO&z h>%VL *0]7Zek!ݝZ%4JeyѤiTfLv`' &u-"*@5V>!5C~3 8 Sa:ٴ!'ddNn޿;kM zv t\Wg([{06JQvuiu($٠L.Y&._bOZfX`#P[r|F|`sxY@#~*-bĒA?2HeUp9Jzp|Akn$/9!^qD,j]gI>0{v{Itӯ$Ea* u0V . sXqCr(8 a41Z̫El{?tĻjpBh5K^5, 9`aKA k͖58g6[ZGUlx8{^sU\uo&RW.HF%2yvG ;eE3)l.! `#0d[qyg,!,N-D1龢nȂH8Ƶ4g cb],Rm:8ԔkϾ*ϖT[Šdax Bb.a0G} MwQ#?,Ce`-<$.[Pw62ዂM˲2Gwu@3q޳[6SoOұC(s 4zl>Ti,!VZ L }ږ?ϨñoDzai=,:.3"A)- ܑ [M6B&-^[+_99 pOSiPb˽@?ů|5qTENa7"i0.wH@1F2 G aEf1cV a6"u,CRCeC`х56y NӦw$k`*ųJ3NA*魌VǫX*Δ.4Y6/:ܬ=+&8Oƚg|֞&ܒo0 ,6,Vz#Rl9S%MA>ͳb$itϔM B9u3:o =,:oJҎbΔvfSuBZ!l_!ml[O&VEʝcX7t_`zfvʪiLg# Ο60b7nbR0C(#o};+Z:,p/`X,qSRY+$,*\Rd^HUZ\(4)5Պ2ڞ n)N}{Xs)gC bG鍇z83e&{2AlQ+#D_0), jƝAQ#lfcl#.Fꯈ!<؄*d-lu~ V^־?nl/F4]5k$xF(IUuW!gc'PYQK%%P%:B}v_Sr4#bPbh1G$٨vV#{oB?Ȉ`H6riʝMh01KXƒpiA6xM߇Em8ͺU{vE 2rL.µt4(a$ͮi chIWy5 cQOX.gFńChfgӮZ=Qɮp3 m(Ĉ,ʆA#Ţw,EE_vtԹ TFy< HGꓜA `Dh&QqѦ.24\㳤Ftod_h4/>zM^KVD7h.^)-Zox tdO+Z2 b֤ԚHUQ4lmٴJQ& ȀXiYV6v& 9m;LdU AsU"g5?TuټϭNs O/k0̢2SOwGE7HÊgaql?u" x6Shp) H GC)E9|.ǟ^MB\ؤlk2MERwٳg *=_y 8SU>bVcQuAEY$u"ae#>1 LOb2F&P\LOðhJ)e#J~l;-Rj>5ċx&R5[f7(o;,c$/> dgkV5 dXw̚lnםL 620+7t8ln{VH`}F F 1Bn7ULB'cΌ0:NW'%LeJF>61yNJ4Lv8g#0?r_inX:Dn)s;Dmg5l 6C9e*{nաRف' 8lR&7ʼv'<>]pYq\Nۃ11\@~}e'2BG8ŋ`3ɒqyZJ0a|!NzzePL2ɔkdbXceP8t48>7g,Kl,:LB:߈vjwW# [Z\i)(tc{57Rh\eT劌 Du\%cKx1'4< Spbnё84QC(T_0ÞP$F̡1sތۗC•Wݹ4x֘$?rgn, Tj&5 1| ٔ=n3 3sIVF$ӦDz"∘(Eͮ' mq?{3q>VFh&z#0?Ǧ'fb3Je[D.Iv9jۥlEH`3QnOoa5;yC!ohųhI=z*&V$ޟzE$;BϷ!瑆=Ox7m ׏@ZXY{QQ*hDCo*^1jbJ|u!V$G(N,\4k(XVO< k>0gׄQ;%uwr#N(Ue*$.|mB~~,xIlfR+iL\ba\K.SP2ǖsIHl'ejq>vf:P.oD" 7]i'/1$̘kcf'DKQ43o2gdoÅWRQ[Uj-2Q]PǍʱv¨%Qgs٘.ưNwx-徚X#ȔzRb]y|Єv#  \X_`oUBD=UJ5{f }uv1A-|,Y]ދ~$5%$2%":'[Mы~p`_>{V\j ?qLyC<WZjS>ldY+R|/Mxb@Ѐc`,XCA9 VYa=hGduyK:h"u8sO{p$A+ǐ 7IKZ|@x(fEK@ { cG>at,RD*=(\屫(mD/]ha}]|' pwd ܄? ySJrrGj''u 5HQwQ94"/(Kt@g0`plRGVHToTG$qaEp >/X.i\%xc 5!GQ+Sg]DN;g='PG==SҸ'0B@9P?1!e䕜@Gu`wMP&Hr;y<8R^/Fy9j%Ni^*Hc̡QLrn+yH/%l1!)߿?uf3km) QdC#gRY\Wv +J5NOEN"G݆ 4w kLXFEj-k$sDzom?1:3V^Zͬf/(wk5ΕS ͕|z|kyÕ{Vܳߞte !SHCMt< NIJ's vIJV)yꀇ3 , .KA'4XB$3Nv .qE͸0۔:XII"yv)kb\$xND?Fk2u+X{C536& J`'6> UF-'niqdV!GvO޾}'.WNg!I5>uuB\"4.C-ayv}[wMnxxRX&&-kV/p3*˹@ \9l8\ >Hoq\i8|sr~Eɳ;pn$dK)N @)iZ3pZ«žX+\(ِJ@[a>o{J\鬙0.&X/װސ˃mRxRxת}7Yw9VU$6pݤ.o`q/_\?,Rs9qV <=.8 <Ȧ$R֔3q6ķG&U(IwM'0 ]ԓ1$Fue'<)."aY?Vf!dl0,?&דu=t(SRK6nt!8H,kȅU}t}o~U_}S56d2MwA i$ƞIeJ%9{ }hD|Lz+fU)^0tYAC'Hn/cyApIJ,8?/,AsL?U^,KlK8q`YO.5* 9ƵJȘ)?υtZQF09 1njTQ̊ReܜMm;C~PjSU opV)j^_I)ax+F0D܍;J! 1To?_=!0y? ]E_T.A-6&15=fKtwrZnaX#\Q3Y,.8pݐ/7\wgNnڲ\ ^<\6I_w8'`ʾܫPtl:VUy/ >4񌝘9d*3UBNNs]#{%HpO3Hd%yk6 -P#H #CQ>RGtDM<Ѧ^R0Wxxy{a2(Y93-'"٥4<|33JTrҠb<Ы]<Œ@l<Lb"9vv?#w3\r8tU| ,reulqcjΕuq #O2201m_!;+C1_PZ&SFū. w3ўHT(&7AzN UfDSg柵ʪC3hYC,JI1ËFjӠ$Gj2gC)(muGf&ZKd/f$M;x$VŖ7nNZP6H~(b퉚=? iJIGAդ* ]0*RUj TVH蝤;0ozJb\D#E8%15驫PPs(# "Ǣp ^No{ۅ3b&+ Yp#iMB0'p4&0lzrTf$ t&+[(,ȇ8a-pO/s*|e0Ŀ56Ck1J<|`I>I=yBDϣ"_<݂woiza[;55;U"afUYjLЋu aAd u6fFq[DgcRP'LΈNʂo{фt0gk{â_ Ql$ "\6WHz#"K09ѰrJNxQ:$Zxj$Zh!dj t_|‹WG~k.ym EhemʷP5[z}»7gC;_44Mcl<+6,Jv lYDܳCWh=Dٳhmh/h`Y35d\ HoI9aQ'\,Gl|Xt؝[2ls⦰jw.QGJr Q!u@M[݄NSdl¤cL2 [LPfZu0sl-V/@|h2zz*cFeX/줶<t]sKڈ"mid״&r_d]YcXQ5pPI&sRJu^Cq lJᔩ7<@'e1f#i3USFq_t3ؙkkDl !?g#zZ- Z -cT:v;n̘9ijF4p+0y !S_ `vU>H[?ώ(g CSbv@||366.?TS[D*p=7)Tf0QZ5Mus*2 lNx|ADlmA ܋ŚUTVHitQ@SVd_c&"wOVtY _IetmvV ߦJ$YkE@i!] 1~׼,C-P 2%j k!yvXkZDY/)1DSaY ER§P[ӬU5rcHnvfseU0^2s%^O{ H\&R8LV9sH[ݰ' _}RYPI0NV:Vf!ɗ-ғfITd-l";f o jT֬;VULEBGc q[qs`!5=vĒh hߞ|#nY=죿!kU gƑJ#Q䔷rvYN+Bڏ[datXMؓ'gkHTCT(hC(W:4ů^a,+FT"Z[ϣGz$8L76|m 6 uY0nk6wl;Gw@޿H*Il"hφAtfkCUv1р}Sf,.~7(_dZt[M'#J`r]F!z"ث\lϨ3[jY5EI>W.CH ?#kܢRՐQIڥdUl* Fic&6P3%G~@)#OOxD|04HA+c"S &Ӧ{[EiQs`8jEB >(k?RIךF=KdWf4y'(]2d3G > SeoW[P-SMQ(ܪE)¸\xE:Ht_ᒊG PMGXDh2NfD 7QЦ\7/da% eV5}DTÆ[Wڣ7ѰBC 1PnG?KDH;oy:i)T,,>N#Q W|0q!/^?jO;tkMMSӗFrW^(&NGxVc+Vf5$ +@|60~tłU1%Ƣb)^aWiȃĿE:N%T٠; P_G9&m{k##7+dg9)AtnT~-̅0?;9a 8[(\~H\~O+;9if>(0Aa36l2ʹ>b 3eHN7Prr- ,͇`'䋗{*~/\3(V'$\stu0[}]0[l?=᏿{TkDzy~IW/w1f܆I\yxr,к=Hvu sPj~Ѧ_F2c_#(@'7.K%I tʶ-#PäBk򷊊nS&Ze)sjhMzr{qw|xHE Lۻaww \#ЕpMM@?K{A~ ?0񢢹(=Erae|BhC  m5/~ tGBL:ϼv1!]\MFQfVX{Ik`}#|FkD0`n('{dzjB+˜lt LrjzU:C! &! yHE%eAF&"zn.'5oo%*'֓9EZFK:\b~e S&p?|7k*_>\!lj8pp^r«OOǁwWr^<)pWxݔK@!XIaDXs@^ Ml"-Q#7k5ltoHD'xtL)iqHL,wg\1V*q7ōNU3*GiZ~u>L ޣr7]/_?}@:ӒIM4Q]m?QfLI4 l2(C>GRVх+[Fgc7+ ;BlQ[\tBi_V 4W]łnn-zDP]f1˲HKLCx'KG*TKLMI7h`e + o[A]4ċ Z|.7|xĻwg`w/xyxoθqݚ)]" L>n(S(3]LϊRNJ,HNc9$>7g5@3thu%%4"}=8Et ϰRΎEeƘJ*Ϝ4IXHrn癎1A6vPbSKewS jY5 Ft2򬁩=Q]=dB $cl$CfWl( CMiH8-XO搨v\`=Dx&zo/8<=] 8w/_3x8]u#N_Kjj$e鵬kdmhסrԮx$>JgmV(sA&=†8oߜ|ˌVm@/xm% en\7}`ClTHy2`w)v> n32V D̥(0SE,b̄| XwDkE_uSDK4@ 0wz}T.A5~^[SJ*~@4q-z b~n|8Cfe2z#{z D,xyӕ#|~167+1;xwr |[`#qm4~/ .i/azb KsG<PaUHܢ&jT &y!H7!<\٤I3~l0_ )ք 3v斸?JC|rLLJ{7<< xun3NG0/,b9bJ`Ɂi`Xv-E+Ux%a!0y鹛d$sV%CFeА"X9])P~ J!O sḮzMbw%ŀn{!Jzܞ9tqLrS"P~PU̕Ș,,E*q*v(!ќ~6>S)S7DX . 5+r{k[c6"ZUa&%w*(Æ޿[p<^}^1Z?/ /7E1p#MK,K,,QF}<^`Ѷ)hz2P)OmQc֍x;|G,l洱'Hú1C rΦTvJzojYQJ743%7fV49$̻a Cr}jeQ8$J:I/ 83jL Vzla@l_Z|eW~N 'P-o0Y u \WLlHV}f?aSQc`kFCx;ʊZU[Xe]l<}V7uxqeCbsI\#ݗQwSNa>Xh+)(T#f9 sKljN$5|LfbrgTi;dbggYdFDq-Q#*O9~HȨc\>Fsܨp7FmPsB2X,&ī~l.Lo.c<{K@s0ǟpp?7 B$tv_I'&YXtSl׷yW6TJ0a9"1B8v{XIOɛ"PtC?d3Pb9|PTԕZƨYdV%!x^"x9@9lu׶=]Ug,:0K(Ok2[mt?WOx~*4<.3A$]l*Pi#m}= _߈j= EIx4[ ,D}^^0*^ uP2dܤp$̭Af%$iL9MHedkjK|!'۔A 辉aҹIAGkQTNH.0 ST:ic֩SM]4<eWwOF($P$d BpEPd6FI vZt]@#u.[ :U!{I)~q{WW &8+SʘdpHGXU+~bxD-070ɪHw#39{+<* mhqCAja .w{E:F;y\,1'ϩ2-A= (&lm:%7s WӍنa 7UI+5Sl/~O*Pȑ^>Q^^ҩ,2\-u<WcBin+DAN&,euL<=V"06j ?.Kk{㬞`ߡԸ UcKXxJFyg/"bsz ~@{鈢 zKBXainkqλӟ5n]taA]A;JVVRjr{PJq&4ؘ/>o7 K);a.KvJvKԺbñNfQOw W]8Ssz{S3@0wˢ=h \0J FWv(շigk)K2*ʐDTL$8c5g+:cJ!qI;U jBJ={f+zQNDZZYu݊3Y%}>KOy{CIw$6gmpuIAh #_?` ⏿}4.ǚ^. Xb)f pγepdzY[*H:8B%TJMjI5ms޺5k,g,M^wZZ.`0 9NىZ9 3x:ӂj?Pz9>>OI'ۤY n:PL` kl2msÂR_#gӶ0$*-ɾ'ĐVgn3*w{#ˡ@4M%sFtR[9boL>?lM)BR.Iŵns]4eOnĠ9Jegֵda' (tǦc!`4sa+}>“vALRKtaS|K2z&[9h'z;#sV  [2.R=8Nݣ$S\6 Nodg; QRXX^I $j*CXvu^pt~-Hݤ[}'?#^߻U.:i (I׵d$BPZJhĬ kb'2!P[xKV Lһ8]$w殅(q""mNDaHB`aQ rh%PJ/Լ5~JH>Z~%5*Yv<>4iZL" yK'yH|?yH6rpi~U?iwOS^.Kyi m(e]H o^` hvaMR'W i?E/#\1蕙~yz__TغrTMA"ϿO[1ҠTQh^$y=-մb`cCcCE@Go^t\(sVEçuM hS5:˪Kmwl)skt.fcnz&VH\%NEޔJ3YTNS+< ws[jOY}ZbsdO6( ͰfyxfزFM͖#>Ϗ F)s8l] (}mV=;܍a(a*l0TLF͉^ӖU=RTQ!(}(,6~EN/Pnj 5C3Ivoj "/=!(LKa5y e)llxMPhUnQ(E)V(UIém6|ev@Th3 7\=T Lb#PTEbΛ&6}v \8 ;hhyDCeNjѼ:!}>$v\Z 4"r^aCE}oOG= }N إ34GʙC4$|Mmܒ42 4{PT*WbYf3]4m%@c:^f|D(IH"U kFܩ`G`R̃B`yu)-bc\tcRx o<{_ 4NK?ғGI5Vܟ]w21+O0@m^9D9TdhZs-?м?3l`5Or{5#+U n4 aaA|ċAfXﭗGϊVǚt߇sKDTPD&V*:$u5eY"t*Y[SUoJ]39* Bc*fU$%&t`J#,rUh"WY6Сה ')U?=OxEE@XwQ `A|b!)לG~WCZs$v9}3qu="4$: 2gkrq)jgD7]l5aiK-#֊h1HGajBeyseMJM3v"Q% :x]dHM.!*SNImGrFˆ2L7e~kdOJQ.BLsP(e Q=pں:alK55 M .ґ=h25EFn!ӓ4KS HB0r{{"ms59O%$uzOMLRV]d#(Qcx:/acôk,QߠM8"zpIWE)Afxg!SEc&U% gV;C:PCVJSdo_?<7^bBnQRny4=hw;G9NDJwiO_u9 Y4Y䘱+XbBbqh(8(L7ܢffbr!mBncCi˨ ך Оآ8& ē;o;3Dl'u:J?g,אHEA1qf)B <Z) s1ިE` bu;\@ g UH嵋P|e60JHfV8t%3:D8zGY52b5jܪt&*r446f ު56 3n׸xzKdr:b33@oGGnZH, ̱49&'';EB|UdeoƧC弪%۝)Ȯ%B0R4Z8B<Yu!ꓝQS9\?Aq{ x2i6LcY_-x挏>9 .XX iKLbzՋs֟a%d^MߘM݃Qd*I%38Ec03ucV&wSIw4, ɩ}) 8lBH6p>\@ݢ /t tB!++ɦjB13y669 E|w~|ެŦMe8|tVO &h)x]{8 *Ke1qL8?_-DsO˹[ }CguvYYb=c} pWg@9ƻN6Pcnլ%f@Z EH(k[@٢PLO0p `_> O82p9/X.M}Oċ%-*S=Ty[9<%q{=ډUQ(Yzbd* 1$Uy QZDGt֍PخR"cgrs̄[kZ6)2h0 t@,TiR5y0MC$yLTS pTM+J>ƨvyV 5!(6HS{Y2hw%(񩙆S&nTk%Z< nlw/OK߼#qVK`,XX.{_K|7 Nx<ρ~}Ñ x˥4) L2Hբ(gòq[[(dghtcQ)b1j0O)8: YX .NQ |g9@D5Rh`n"q 8h c =YI~(&gLUnb#%d>(;t]7ޕ3 .)gS,ECKV}X}e]d?Nmv9UCct.C~&J}U9@SUN?+;g U=M(>wW,<8wwo$ExV ޿ȁ|Vs7pqX?=. ^8,/^ Rf gܺt I8Wc&NZϷ%.UlqT3 fO-Jiѝٍ5:/jĞ a6lƴSmZ}$v&L+$j9Tx#w&f kI#eÌa V@*Z* *&~U- dypzv#@U5b^Nח=]7j}S\!(o../?:y[w3p'۟ρ,nB[D}Ѫ<+B64Yg?-Qda@UäzJPJ t]!U:*{0,4) <m` G,#$Qid_q6)t4jTЎ2q;-M&^#iUp3' j/-Pz[T|ՃBW8 ,PZ{AR9zp~2 0^^g#wfE)#Щ$阪3:0;G"PϢH}!.eF;ƛa^TO_fnFy R|'au[Oo/EwĻ7yW#=# LGhP~Fʈ',Q'@r(YfF( CJ421YbǼIzC7W S8/]99}'iۥʤT,36r*BRQHTK&f=4`d6fɌ+_΁q$/3JO¹=e* Ok|< q~4å|?j՚,pDӸjH$. bʓ ߶p*+q[-:r7|ʳ̛W:'e u\zf3Nٸa6rv\pyJ\F:0No3L%>0b0:r*Ɇm*L);hb5l@"NꩆsuNS%TW# INQزU3W4Mnr=/#p< +U-"@,q)b24V10F`p`^r}\,3lQØ!J?ܑt_z!6`e;uFn෴oLDGvseI4F;QT:Rg$\;:S9CPl`j_BacKRUj5fj̭fy%m]R1ln` nK i:]hKKF?p 7")yCq|}v,r=NK$Y1ʖ/I xM*bR6&recF(t[ĵ`Y@ W^s qX7 Q1 Ht>'v <3Ut 9aIչʢPΰbFI>mw30Pd~Lv$}XE⼕}M_i.PmٴC r*9o켶TYr g: Ĵln#M,+=ڿXRdٝGãxWB2<⨡Q0Z%hH놷A%p!*йCe،x?e<=sȠ\Um2UC؈fĠ B$LL`RjuaNƢMNq !gĚєhEݔs eHzK .p2JkMf.a!@L4uHP5dY Oa`%=p.<;ߵVP :*Ef h̏rSjBӵsp(hrL>H$Ao%2՘`qBs KzW}'jb!CV66߲S~߀$ VkUe#lD<9nxxJ#C0onlzUщtߚ7'!qh9ŌO`R" qCĦ/cEaDM7LQTe,V4r16ցcj'uA `1̑U,3: 2wOIK|(W_36#^b ]6CfMt Q!OA~]Ac^m)9j;wۻ ;3K~I6H#Ku -dL V=~JXkR ̟Y@vʹ_d4~d-u"Z$5Q{|vpTkϗņ;~(&5iDz) aE^lzrlUt!#cq P$4t=2y|Sz9X32H91z+VԌ ãŒ3W0[Xd!)w(]i/1Q!oU7hӜ'cIL&-&Vo? "eV8QA7kTjIS2o<ڎTFm\,pv&$[f_fv 0|*hn$]b%"(x7sB nI"h1.|F?DRhbr1e@Pִ/MYz9r * myrFZԕ1PMUZ>A3nrI1ti s&Fta,5c@:j8^M‚(_&[{^ZZZl{;NMj8NIel - F⫃;≎ɚ:cJ~4C~&Wmb'_%apǤfl)[uj`Pf`kɵ]>, ,2SY0ZlJ\S7d*Rs"iE&] o}7- +,<.ǻ=4db_$ysk-};y"1*;j#GHEflGr ;9&Sttec@V3RC; kJo]ž uV~NC̿Mp{ I2AskS7g ;%h3} osykyESsq׎zZNͬz8 w6L{&:XD&SD]+aƴ4e~-%%ȩ׍/2 ehyX)8>M|\Gw1Rk'r:) f:)R4jH@*GT#hPE^ p_Ntv 3t Ml u>a՝lȀTuq}6/ xv㵚c!OﴤeA*P`XTIۚYŖnrtYLX( fFCp&e P _{SljRe:xybЉT˅Ե67LGh^Ȋ)-pncI2U1١DۅlH2skwt"cPᄒDVHuL#nJ:K=kv3mZ5YS`xija,*e&xDsgx@|Z(C%mM;*|φ?sd搳-e*7K w?dرS#J(֬5̀d`gZYCi&18\F<ʮ6:OpDŽ `4R/vGZjo0<תWa+۴T,=gIUܑinWql?"_Ѫ`m-sZJ|V hQN}d0 މaa mkV=)9L;TZmK5P,#Nd,J c1ayU Uql<W"S")dtU6AClqx\<凫,Z2p:=KfayMgDpoxܸlBAsRAv+7SizU+O,xHL?”(b JK &usBHyL- LL&x3f~ Uzc0YmPJQQÊ*gԟc1 .3j:IޱW(C-e*i#$ G}f{u8:z9Er_~dT{ ޝhƫp\2䝹y)4`:fj :d,IB3d6N{WTd{ZMܑ[-O)&L9mnUurqzpڑ& ,m^)%-{JT@GCS+!xP?W*|vJ%6 =y GO˥``>c7?[ΒQÖmKR/vMNB}v3M$N3Pcn%XK9.C9,'tiLZy_hTp\:l˙9#jo`S!$mF1Z,0p=E`1[f$xוey|_L=ә&p ZրR$Z vh}1EI֎i)vy;-ɢ֐t!XB'J(}̫iA%ǫ0TyPDovc&{1_4I,R|YQcmVγ 3wGԄ k pE"+ PJs"m.Qv9k]lRa{GTl/nֶ$ DZRz.97=鎷Ǡz ճl y8r\7AwW~xGGQg*[nF(yɳ Vs 񅅑wzXmsx!L!Q,1-F[`)g$}K˽!ivm)NR=Y2mQ$,'+n2«|kml[hw-+-u$O{ak=8G8CX8חdDnwNU% sȯP(<@(UQTvxUp\ӁDcܛF՞] \ :h($z6lm *1ӤP/^PA!':StYA0;1?!ΠE?GhiŒ[ֽӡA#gY(&w7'zƩ8nǰ(Y Hx"Ӊ8#p8;1p r=rx_n_-W p>_|9.ρ\4l͉19ګ_KL[ :M !IX0z,k:c;N;tG{t8Zh.6ݾY8'jrӸuM9OO>?]x~ }\_}7_^xzT{I6!na". Dx=:m1QuWs ϧ-,S_ýRQDQml.H~.!˧iP {uBR,PXNFACu64 +tlu[Pqڥ[~hd/qK\|Q/X8(f-`*3B8,Dq@ܽ=q86h5F|N.FCK `?^+~eo^x~ݔ m3>??o] .U8 ,qۨE;U ޝNVRlriaQ FJ|vcѱ0QYqk+AMa _ЪScBtRl@` q%#^}2?6o#rPmbt jIB};*!JXE9hrξ۱=nfa.,[b'Íi 's{R TGt w׍AǶ^\N/lPVû.{IR5Wnu//xfW?^pYb'iLN7sðMu7rűD(d| *V sdrW"7X#%#0,ƀI2]R5j߷i&Q 7ɖ7xGx\i|aB5H!F]/J8 soYۜQ!hٜ@PTxښGxn̗3p˲ZzzW/#g6)Nk5?uXefļh[0u3 rR,aR3AlbA:l]3t}fo_|3hKӛC1zyxc4X'61]A!a&`^.Jk fAͲ6]Jd<p:^ÑGylqMYz-a: b_87z1HWAZt{ADM~a 3xb/e`ZO)5 ]-czMi[NڭCfW<\)JuqSB_Ehs,b j-Rinl/D*-l  0X̏< %[GC/?:ū=.d,E6 `o؃yϔ x/ˎuoN_7 ?|{, )eN+422d@\OE&֙Sϐ I v#K$5.BG]!aEPL$Fyml}N$B% 4X\Yq<#0: Gj2ՌE$01+H? (дvER䅊:uBGXȦ>q|_ h끣Q$w/?>G.[?݌4?;>o_ᄒ(O2F}@#M[IZ *Apl:dn 61qHsÙkB+ <ۗhMXF>;t"xPhţ}3,<$5I ֳ,A.*Q?2.h;L`Z)uBUm6oieXv8۳B}٦ !Hv]GVZn@2^~|G51aٮE\k+;7NW:Xbݘy4 vQ|?$Vk*Ȧ#[a$To{G5?2mrWrXŴʧB>∟n} .53.PF2ϒ0U-̪,FrJTZ]}sX2Ll n)aVQwMppZl8p#N'Į@t&N[xfݝoZU[6 JXV^[j]8?蓁G{ 6J~@dWJe+p?%ߗ oo(w1>)fp R ;gV[}mG|+8iKlۭEکYx hG |傯p۷a&ьs2.H!VF3@#^Y?'ejc(mCV  -c4Gⳟ|?^\pf%EՉoG4NΣ-w@,P8]qџSJZ@CΝd VGoRi;HF}ۻˬ+)vHimg=A #g?_pφaX C) 1ٹ( NMYId9%v;ԛǿ)j['ON7U?/k*Ƌ׶9⻯_7_dPP)l#" e)ais3."ao˭8=ч>kŕ(y7uSZɮi2x%pXj'L ̕ao 0!A^aPɠSR(s?= |G͏`E{L?u{6zO;4pH^\/eXvDF :ӡEGa;ߋ?YƲ#p3q > O͟)+ enmj,8s/Ca~Pj* \`|3JUm%(uz`pp0e%  7e( 8c3E ~g@>u?r-2;G\owבrPbs= J{(VovJWe\o5#~H  -NWH@ߺ*շofp4?݃dǫ /fx>x~\-˥ZC}mjy??vƖ$c¥&isQu"]YNLg<C͎sM6namR{ޏQ<矱5{qol ! WǏ,ֺqE?=r |_}y7a @LBpA+& D5ʔ> Vٗ)dH뜩y [H2t3>} }*F(w()xѸݟ>^g^a?6cw ޾ ͂]  |7/:'?9OctsN ms#5TSuhH37 r_u>%q͹܅hmQ{dYn(8`?g8_6|eSmeh \sg\1O1 kB,L2nFQ4 L0<24TdDr?= |򓁏>u_wg_,|_ r5{_|?9%ĐllG˴?sx{s * ` w}eB+\gєSmGjpoo7otⲶ L-Z#&ú(-[|HyYUtY6w}ήfm Gb/>tlHk 'W':r<=o[7Љ?ܑG"3,^ǐMœxt=]u\ .[+b@?.O\xA"Ξ^|_'O^͗> CbjČ Zݿ`Z(lZMxNJB춈??}1_ϯ_J57 ӂot4}2=76hSG{[֍ǪN;%ggÒ'4n7ȈqÜ {y?"ث?>j8[P!#;6-KngTO&g |ݲaT18E wt6}d0X&GغLJk{}hXn8l৿>___mZM'Uox-rhZ KFMn]emm+bgR-.,( 񏗠7:a\}qr\bL|IUdV92_Es#mgc&GJ-|:{trP'{|~~~_6Ͽ8/~wW7uYly*ᛞRR&&J ;ߺ u,ӄܲU(t蟽J](p<.ކyUJuשs~O?=]3_.<41⋿:}x?le_ɯW\-/_]]]qf&|ƌf-H ;0v;m)wF:~<95zs|#@߿ 8~vg:ofl #>hxiv{5c]IG~xoX|y*bʫƞߊwkE߼-5_ ___iS_o ụrJ.%r1nF"){Nv633,:  W42=gKEϮ;Apwj,'d(i8ޮp\-;)F5c1=̞Oÿ>|h!?ܫ x:h Αo^}<ꣁ_u*嬄2f*"-cnpkT=j ]>_6p_\{// 0Vi$CYbf@i)o)Yf^$ýs"Nz" |+c~mPK:@)3a[ǚ-qw=6FaEG~x3ο>l_w73vT u{Yϲol…_-Gv!¯&_m?dcۿˏ?'x~ ]ۿE",!w>qlhKgXh NBKbE)gWIǿp 8=a?ffr%oi=cIc *D6a^OwEb0=ˏ_>w?MwDd^}4#s7qݘ}U(9aw/f~#>E_~ȯκ1o6<ݹy8 pnm4]` />b.g໯|ᄎ|kG4 L.Q+=Do5߳~ Ǽ>z2|9ꣿ ޯ8G|?{k1qnG೟ |3Ֆ w |x&/x6<=.Ӗ̌hqGk+G __~_ |? _]YBd|?םOWKMvU]tisKQCw:/xOogG|Ղ//\OVC'_oTwvTU*(jT7zѫ_Zm$&! w̙6<ąggy5ߤ` D͟-s96,o\m=D5".7?l7n ؍_L8ͻ7۞Gqf:Povc1Z}umMru_FU@h#SeocѭϏ᠙\lw0݉4|6r{G_sS}B9]4mXBl:yMZu ы7#Gsu[c׏Hv_ķq"j5#c`}cd9"SΜH?/qӹus( bj\rb ?o)E>I,8>Ză{"cv\Հ #{_m>gswp11qsdc u|~զq)2Ư?.\ZgE|e_b9z619zAl*ow\&s=4Try02=QG?9̩Q>1pAN4g{dXzD2*7v~],c8{?2s|^Z<5 Եc$f\so\>)[c*jgsxtG8;n-5"@6OQHrsw Á烜roz7H7 RF/2?ŖC{R9ߡT&JD9̉lzuFE^S_ϓNqt=FJq4Ƿs|bE}%lu;Pq+ ?g7:!ջWsb1qbOزQ}Z)Tx'SMqxu$Ǔe|wɣe<Q9:(|>жN)'Mon|b r0?>>{qv>쏓\%[/x,{m_,qO"LqV7,)dWGDe.Ϟt9<][,|77:Iݓҵ)nA~4RL&@D\i}EOs&8<8醃]C?}+nnj d%1^ٿbjۇï>ۋIW9^Fzٍ=;1덅ۣ.4l/lcbw?~+ܻʵwPR1>//,Fyy1?[ iu g,əL"&1oc@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c?1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c1@1c@c@c1@1c@c1@mҟ׿G(oQd=*;IENDB`indicator-china-weather/res/background/weather-clear.png0000664000175000017500000020577613643503425022360 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:EE638AAFA44C11E8A69FE5FF18261F50 xmp.iid:cfb0f6e5-335f-fa4a-9c74-b94f22e47a52 xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:78b514af-1acc-f849-934b-79e645a07f66 2018-08-20T15:45:52+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:cfb0f6e5-335f-fa4a-9c74-b94f22e47a52 2018-08-29T17:31:43+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:21:38+08:00 2018-08-29T17:31:43+08:00 2018-08-29T17:31:43+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 > cHRMz%u0`:o_FIDATxٶ,Y9w)##*d&zC?/!/pDhԔsdfdLlQUZ+*=޺u/)"e1"@9""\~^,W}}9"ÿxר#e]nmwラ_F{߻ߏw=Lw/~uot|.w`4YϿ>>eE_)5ڭ8_P{*vh\dq{A"?9|wk _}im史{?mH7yݣ{ /lFȼ" w/ձQ߈[݀s\Έm[7S6x˾8 7j7ze}q y|$kݧgI2NYs6;9[}/M? lLЃlQ7Xu1G〳30>т@&nU%uu-6wĴ~v*|wYa2_۞8qVAvz=9Ӟm]\V>{H䓐;X>CUq'2=C*=Uց(7i98Y~/7jvW9BSz7-<,S":D<>WeP=z<{ ] 9 גIG]gz$b͡n:|auۧ[ :rKaN m^jd£t5 O,{yy٤!9`tDv"}<:3☺5͐Swh#TvYy}?fIg_9ݯ?Ab9'7@3Iq]!\1"Oy0 X_ ͯ/)a>IuAeXJ ;`%)4S9F?C˛˵pv1hθ9#2 .);t8Ҙ>9+Dvo)]O/wާҺߧyIbehŞ W*2O%J C+A_CWz@5hsl@j0}=dG)"z=@e=X^#Yn=T"n+1p{w!^#f)pR7m7o? h-DΑXxbk8^?dMY(jHKefPz&r#`hϭf%;k[@j՗/FM7{|=-^߻]ӦpMb{{P57Zʈk OV s!j,Կ 'y{Õ,ABvQ,¶XİJC{Cvb-JQ E~~ ;ݦM6wޫޡr|c]uїDx{-;b? ñ!jsDKcB ިQfʐ9&S1x~%#(Ms?rib=/4<)Ydx&^ A)i e($HאD^b#o-DBXs{(pnc>8)?r_wuݮ)alVH&wk%)˗qO*x9lq/,%0TPSP]y k-|/ RlO -RpsZ\*V6@p3hl]hGCЅ%EE!l=AɦE;#>ikk(aջҫ+{g{jYIIh ?td!q{~f*zq AVG])ujByw-BFe@y4eqYȌv_?:o* }SP}ސG;X؟w_eY q|[}9 (8ڐb5_ZYʛS*My:J׆н6Lh ~JRUZiܲt8"H$_~6\L;3;:n6M0{t{pRv7w|ǿc 'ck Xyq }}4gͤ#Kgzfg>>v=2<be &H]M0 KCC%ꕝ/s %-W};=#^{df?oa`s[fӢZnc:A7N=>}r:r:r.*I:|:YoպJ;8ozqxuUķ? }ӺFgl*&aFEBiOm* 9F: E珅}u[^PAcZzR~kx|ٴ+xꋯ=h].0@}F.kpdS)1˔)CS]s|"aBS)3qtV&XQo^G*Cf9RζԸB$D3Zn}e$NBB\Ӏ(&uGhꄉ5s C{l,5>lq|Ac wG rU(w0´rR @\"c__ > tH$EŅp]uSRZL[8+ `LrW=f߾龱а|Q*7՗Z:Ly.{WڵCg }%}箅'wgwIė_RIhYݨ1SCPF$-Q#F$ԔDDBZ,Fz]W*,r-&C!sFlG,ͮCR\d19`(HC",z%ZY R Z9tw^h]q6mr:M \UNF S02ZBҸ,N)TvJ8~6ZAW=D|\h\:ER7k P'i( }M#\HuZvL8VQ奙WZ?93)̾$Q/.=|goJ9{\74?s`EʖVH?I'8!nis]V̔68t;+4/J%6SuT;A)%ӮjUWMC ivS)ّ5Q+GJtJv,W"Nǵ.IiN˷>^DyR?Dqj" T.R~X'#6Q{yv 79ednz-7SIwMax7o^=|u; #Rvɂu.@2u !* !x]+^ y/".z8wXA~xHէ72ݵw qvN8L)RM3w^o^t;" !'ஜZETy ꌏJZ9}k,\Ad4I(Pf*{oTfeE{N=W:D΀qy:*q:y@ұ{iB`sD˿l,-5NLo)Xqx{Wt-J>cXg@('94Dt <mIwfj~z:u"".|Ը3e+A3]F:pQwqE<8tA#.Laz:ljrv FۿGvGrs3(!K!X69Z-p(oD|UgA*Ϥ "չr>fyIA9TYݦB!2dKqx7ш"9du1]hԮLVQzQ]?'~~\a7\贍Vn [ޣ7xeVJ`QOe:5,iϹ~/qڐmq%8Er ~#5`PD$\{^{^8x8THR>gG;d9+ M40jy*UuKsS;7ZA!"t^v႞EDK# KZf=) 4<ɦf]Ĝﺏ?<\akȳ8i}0u$l.lV Lv6$0L\ҰJP ^vJɯO@o cD/8ȔF-_.2 6c4OAsV*.!^.PEe`2/j|B^Q'XOtiv(yK_"ÏkԜw c6TlFQ~s[iY^e(A 9-#pM5+Ghx&A){aJtU{1!Van $Kx|qh;/U+DkˮJ3)XF#|\Ҡ`QPQz`} L(\BO=7J(@ӵnvDq;NiѢs! 4E9zGF=rوf-?g|rBf4䯫:,=Jp~p6Z~8 `Q^~gu 3B[$$^~3JZ̒C)TNت@C0r "NdhJt5T,Ȅ+ȣ Vvj0'Ю%W o(_u+ z}%/A!y .D-vvW/2 Gw;-!&i޼iĈ6k](m1veOB,-h)Xư 'Z ߻sQVh14ú,ʺv|pLm8 edNu P/Țrde]Lߺ|E#JI.B"6KZ+M$y>Sy~tˁ:8}TѸ)T?M{ !qQh`2(2G] 2k_ESbtAċW 97IN[ rpPՅ@"/ueviF:C1ႅJN\"؂tZ߬x2p#m doFiu_C&([]GDux8A3LҁF\._)J(#D\*V >}Uڑ)P|ۘҠ!eF72e?KYO!J搅#NQP|" 4 n=j=FeC0Inɧ^Y?CS8,0Jm0%Xz`3rkEas;Ix|APZ 鴪^F|J5fKd6JTEVT'd]ZFNS#:j4=ߤuRẏ}e }ƾ2g&gcl?Y~}3f_"^Z&7 b[<1R ruiލht2S[^nW8d|D B@Ɋ~cRvwݚK^ӗwQ5i IZ 4RfpiaeN:HwP1(٫׉ ;L^:°LqD~RSYjx7k*'HkF7"xv_@b/ͥNdN 3(@ kkѝŻ:>l*w9,j]O4o+ah-XaP#ŝ@ s7x!xm7 r'O>K4enj8clE}wp$`*zݟ%+w*/vh2VV/9Lm%L CZ-|j9 i$ޯ>wpJ CmjjZ Y_͵.#4;h2ky!4~bk19`]>mFBT5R)@ynx4,x[$"z&2qQ1^MԮtZ.HwOeIW1>> 4AMQh@ͷLתJeJZ}4kyiH{W6Q2s9$&}ZOCg]x\*rBq ):W6(=gޏ"GG.O9V1vd4]6KMQH4묥f΋d6h…_T}hߟ#*%r(\.ڠffJ;>Eb&݀O +7S$殺X0Kc nyH !Lp7A vY,{yDM~ >ޮOŵ%~y~c"m:-mw[: nWcljM/vys:(l9an֍ۮw셺PZ}zp5s@18-iQ$}n9TXz_LNHND[q#9Y*3!帹5kD|2+O BB{~.ND,›L`3K=$̃AJ*D榀bPؾv-55Cd?Z!"xP/xХT֧!#̍=- ZTلNs,&DEJAd(!A3, ԅU]2\3KJ!9e^'%k:UKą^%=Hut,+֌E4ƒ+,t8DV魵܄dH6zD\Vo3nz5=ADqUZTT5 E"ѯ=$ק,Ӭfu3quB,ar4NKĵ<-R9/HN>t[I=k^ }Z|YJbVf+Cfw:DV>fC2 C`^&xLqW˼ч;& RO m` >I!_"lvvN%v 5ZY+ʌ^4?w&-A Ėx%(1^twݨ)vx^m|*FL'gʺэ|ϑT27|8YUd5(;Dft 6X'ek !eΣjА@^y.|6i(g|юV|*mxӣl ġ!`.qrFZ*cp{kJ6Ɣ٥BQK>c5FF \!Nza@'*\k/oNw 6s8\ +tywrٮQ[W8bL[9DeE3#`xjUsEN#[wQkLCZO :::qL̋rt?7@VﺷIJ޴*Ot> WK}!U~pL$YJDYLx[~*sm;67`u9ws4派P_"y68&5X_~?$v1R\ua2)e$pp׵#FacΜΌ7jJ\9r&I<)z|:5&e@j}RAD ,@:0G˛a^ O'Ŋ?ovkKn_׬ׅzH[#DIC~▮7}DDڬ9ӆʨiMF6Q:olJ) ZVzN;D'h0}Kd 正KnckQFp| [~,BW6\"|u K:'͉h@Τu!]7J5'Kk:c leѥTF;z K2QyAq=\T^ǞxBo!f,*&YžҡD8a.RAp J9C4{Ubͮ0m,zHS# Aȩ 7rtt g(rbH.]P!~m2dZBFrma7j*2h/-*\EqD(ՒS.EN/S|D28L^.$UMamZ8ε' 1uBAc`n>ΰBH-%5GQph[LYo1Bܑ0 S>OpI=\8c,BԀ[yγnrg\h9o+ R] Qpj*>0++\,[DXX!/HmB]!luTHN>nѸgmC.T*lsZ 0+Fz+a|e>:

rIP:>+Em4TKبl4zOsS VN`YK$¹D2ɢ{BbA ɸwN F- b{Byxe(ehf3.k r)+5glĘ(wF+ݰdOxv>3ܹ'2, rX\.Wr׋V${X#&,sݸwbΌ{ϨDS DsԤDEAQ=C(62<*Ҳn[&w'jSkm+%Vh?>*ΡehBq4Y R)իJ\jO.#%?Y|zh3 ܹvl/<; ;w59tڌ6Kȁ(|2Ǐ\ihZ2ݰu$f^bŽFCID 9Gp0 X5gnlWۥRne.߿BG#jܛh)u.HsO4=f4B\2G*X6y4ZPGǗj̾{H&YX߿Éuʶ;plRF)2=.]^''cxsgPPiP^j#o{ݶg݋VCwT)`vj](|&O4ݛh}`=k :Z8y65$mc~vsM;ٔ,}G6a;Ǧgr:gsJ rrWKdR0{?K`M; bM1❵u¤vk:oIm\efG?6-AW-b0TFQrTPj?ldK4 L߅uKylonvN=hx+y eS =Yېhhs uNJ5 t-yS;%hM)KW(|]v|vGغɁFfU5SѬ Seu] yJ}w˚^»mZi@M%Oi _.O<)k|&ip1ΥmCBn9p]Lqy4CL5BM$ZrOv D28IsmAfEZ}ϊ~.N'6z9dͩeΟng{MΣ`3#HO)hu*T[VZog5pYP")[*q?5uiD9"g]۔pN 5J@%Buo}^5%VԸWEW([]ؗ]刌O>`#:VG~BxpޠX=v" h"8:'h+J9C^X})Ȍ&ݶ3i&ʘzSI&r]޲Knhsn2EOC'"AŦgd1MgѵץΆ`k2hUwE3^@Z{YeO! .5${1tZvx8} d /Ӂ 0Y=hhUYzxaqGHdF6Q;+ifMp̶oQ CFlOQh{tX)g:bDgu@JS~sETf9 oqb:`' Lb>QȚ.%&RrNr̬p ȝ3yTЩ6A HP=PR:,6ghW`t $]} MɜVn ?!ٕn^A oN\lnD)$;dېISl䭎1g Z?Tt9]ڹ;B3ڑ䠨[ݳw5y49 "ZFf,aqLaG4Vn"נw_r0\( QT/u3iLӜ prO7F5^Pb}`y.îO8q.>E,b "Ue1s9+4gΊ;K I: Ȕ=I)Cg0mچ6^I1$-\hcA)"u{oFī #5x{@N4w24*"T:"q!¹(Q-W}XQ]uC{,\̑f(fjd(]hC)b hhkHRf_nLU`}u#9 '7Ep#a]"CMjd3%+'rCIV%{F ?Mu^FFhA'Ğ{\_6R Jȱ ^ʴCnRtӗJs:^@daZ &u:b;݅!-Q*{$ FDfKJ(;nWXBXSMpfA<r6L!BC3,A/&$pED*.z!-Ħ̬O|[Y`rjepΕ3$DJK [Ma?) a- kn-C Y@\yݹD"׵JI&e2k;KxQ9RBH ʦTE#FYFL+:eQ`. sЩܸP)/07j)j#睽:wQSmH+rXHNq QU.h-7#rq3E[h&eP2#RBr SxUVlIAYK/ߙ'H9'`Őa!QR8/!ٳ[!±*;K\D-9B)Y敘(yr*#zB`X&rN.8 M!t}yOIBν,}.RlWoR co3~b, n H`ӰUlAg!.Z5]ԪC5&8Us1GUnXBtCԒ =G3^Ah׋#J .:+r@vVyebEĻF uv 5MW̨r]` !n4krU}xٺh-?Vn^W`c}؝ 9NjgHU>x|Tjg饿0aB,*h%o:(\cӤؼ7E[McP8t8ψ釀TqT\֜T AyYdZ'JD IJ&44HX-;rxƗu)%WegJߑiwOygL+ĘDW),j?sc`w4?pqxGF(u]=IT pFS=ޡba%*áEzVGv5:&(ɯEJxƀ xBǐ>/δVfsV Nw55APe݈XWˋ]4;]xp (Nw>M7ŲoMT\B j3(Hss`sHĝZ]4Ƥ!Nlip'(ӘG!*ȣEYy{xzQ8̍u Y6O!I@qF[2#(e2 Ws҆.=\6ś؊L ״i:qѩ`moXA? fRTnIVLRM7[2;E?@n(X&x&JĚT\eԬ b9qTV6\h,䟐{t ?4׬5yyxg(-ͦF X)m5(s{4jȄ}ZI4x0YXR qB :۷_Y!3fѵSPNsKC4P .ADRر99YdY +6QTfo 2{Jt SYXҳa  ɐԛjP"$\'YK$،[2khhb:?ېGsiƘƨ^`{-+}#k%3EiƦa˄Zp(C!N) rB9I)1%.fVrl5W0I! =nǢx@̚ qbd;I.\$"-b{ >ew7bVP{y|aK NFWl%x tWmMqeU]@G,|ˉI74u QMtik`Kl[scOQXI/uf4h >- R%4*|D iEVnF95, 3A$s$qh;AyU(߹%pś :[. ZO0*@f+ZWqN MNdYT{rP}ۧuրV:7P}aqJd oXNҥ6d3 t-X 6Ӂxu.]9lq a.ִ@Ir,NMQ(Lk l(ډTL9G$"Tq|Q޻U؂p-&{+@-)SaEƝޗ;RNu__NDrݺ0D)ⲗ䀈+h5-%nm/Y:_0y4jZFEmԘ]7^#U|ة uR1ppG# S:,'q)17A9;>^i+{^\Di佢^|8q^ַlTx[G|w oE3uEVd/1{S4Y1UHj׎^{A{ .Q^ڽ:ϵKqRD^*7P\N9we#ܢcgIUL}lj8sx7ʺ3'aVKT'=zNVdeV:;x v{wQgyV^{w(Yph\E|t.n޽媉zsD#tF29d}xzmsWвn $!nV0x8p'h& oű^Glbvݟv$lMjS)*)䦚pUoMTX0KۃihaTV9lo30JDou!Kut]VD`5 8j w8ї'i "u*9wlyp M1ϞCw8C>FߚtF6QN`q(7gDP`+qV+N^l(haζUA[jtv]6ѴBPA㥠jל S4{VI{93˂mKl\ix%:Gx8NAJt@AN?ԶT+(X=cu8QxjӔ1ETp]0R,8RXu㊼pLvS#EU^Y*Ì MdNRdu):\sa,"͌r݌`M8&X@%kɰL‘hh˽I%[ 9)1C¨AMSI<yD;o. b,(|p]`|R|٤$*A\ǵmkkf} LZL­%b 9ΙW溈-hg 6}+3̄)it?ߑypSDKqX}a` 6\{-iZzKlrC`6\Q^(-UG(wdя~5 Fݩ(:h3jo팢(+y"wݶ+yB ,*8Z{Ru IUPBgJUqh lX 4pg!SۖR!%j9Sԃ}Sͅnz\2۸cѶv|^ᰅdEH qUl6O69G2J$EKOO+tS&* ΜvlUYBaB fk_!BcuGNhi$k7`FkȖyYxeIe2JeeUlz9ay  TvY[K:9{ٝ-c9YV9EBjF;"*/81@EZLգ\ )w,cMJh Ժ㝡fL73fE O*nI˄&+*Ȉaʀ WsETB_i4}`z`zwt3x,eͨJ?mkgPq6$ xCiCw>hXBx$:Kx. GsD.#\ELӠ`TV \=O}5m{FL) =g4Q6Q(z4=gt=r,jeЖeq: 񉆦`Iy:XP%/?Xa2H8 ]jn7 rbjXqy0Ýmq;oV "}l.m6A,~2z&qMW-ipdYb Rx8`.[GksD)MQf* r;vg" vV V`ȯׯ/@ IEr{f/0N\ !Ɗ`Q*B [;˿9UX`.E,D%>u*p)fʽK(Y;f CʊDž'Vd&ύf 3pjҰS{~7#?B sTNoE>r:K.9JZ+\qpv+G"<= $Б 3MN~ngNd%QAKND/R_9Z , u3+C3\[v e?출e!um R8/RقIy^GQ`6L˩oJ)P{?'h/D"wڌa722|.M-cHEm=p8cOʩ6taSSU2 1+<@7dQR8J"K󮌨%[lMA2L{v lRNOOvv]7}^*JmK-aUUhG'"}|5kFb*2dЁ c奏Z]VˇRԝS!W_:RԺHE/i5  uBEKq2Û5Pj芊ZPd RXEՇ$"7X|aFxp6!w"Pg±htu®H濵Ԭ5%{~s^BhqjRY.t|˙HV!Ƀ4Ib`HnxkRRآ5V |&Lݥ(&g^ '%[Q@ͱ|:KiCuh?t`stt z954 :daH4rq]RQn~{r@ kڄG0C5EvU d2ww~H>]XɻSJ9wj_ t܇'4ǎBN=pC,t^`jZ*t@so^TL4$n){҈0rvDǂ*hC{$ebc* $(h',# D g \Rښyr RYO{TkO㐓dI\Y#'3 #1dMYrc Ճrx,xDh'StoY3ΔuwF?zIu}jJ ̒7Ej_>']+t~oJbѶ#WL8Ү}ORI=I4e 5dX>h@i2@.k^HyC?6]akR_YS7J-{ LQ$t]## qq"p*%8uw!`>2PlABR;h3RgP^DIwChZNFT۞=*ȃ|{  va"æSDa.U]P;iK{Ux I@'_w},q6p0ʾvq>Xq֞NgIo,p_"Ze"j8Nmg'ʔ\3%zhz0,jF2Ι`뺰 2曨ѨMP.۩U~]Tr7dmtR22=!=`ˊ&$"|gQiXB(EDCPιH~z>6œ@F<#:@1\ن3wH#g>;.7QA}o2YMaFC{W;>zْ)Q.j:׊v#gKYFD0zuGYt?Y\;R.7T/ iyk4y2~em69Y(L0!y. ij@N̐!fYRbYh\'l"UԍQ4~jAݢ^ S~zkF0kQi?"Ma6M(pRvɊݥE_'\t9/(o["!:wOzo ​zzM]x$E<g<ǦF:*gO}]~-5}0^JۀlHiCN5q1:%94ذ"Bl(~VUc  /qaݒ&j4Q"ond9!WڎE6Q*ND㍄RY "Ү'D.Vhj0H E@r^2HC\t@:>LBe2$X>H49\>EV\kpȌr^t4A\)KX&"3&rߛ&z9yU.[^a*}G"oP*X!8|z _Lr-Dۤҁ{)LnQj\/b<<}~JY"d{ƯM+eX3~6blk6$_[nf.}sC[fHO?WpM|M>l ˆH|x4@apAxivN36[(,t7N UEr1+L[< 2o鏠Γ3EMDqTx tGh>ddDU>c0EUhUixMhB]9'GBp_KWz.R(-W턽 xR#ZFb&zA-xnm-&H\Ȑ d2:p]6r1y2|2+@'u)5卜!UV"63 )Ա8R4HDWxZ/H%B ,lZ/T5r ,+^@y  L;FAO%E:n!R[+0[#q0N@Y7В2]:@'Y )s·MGh 'LJ7VKr' Q-kFD2)yFxb9eXzm\ bEP(+5‫A\fb;:[h=.ABFRɥ#@L/"nOfGϤþYI*.aEYJ 獫/JU!$ֲ",*}y1 AHa+ (N|DڐIo!\})[AX;zFx,Nf$1SerfJu''H3)f#(C[:8'k oNyϥSK3WJjxErxtǖ?`BQ\Ԟo"LK^a ,dGAXMwdܦ|E$\AHڝ/A!׬ )TA`MPմh&4F!ix"LO|s {} ] hxn)0ܹFqQi&p|+aCPKEH0!!pД  {4Lq4%bS&B/y\O[!Fh92EAq] (ƫ,G4!ǰ` ^FP!b./,mh: n-uC1OÛFYv=QXIEb9{ zξ#PhjL&dttQ "fHI)#1K4„UlFS3>Ef?*Ұ$D.zɟ:]LH4)qkg^,vT q4u䭤 ۣȍ*j"pW_ga )ц*Շ1L#5veZqYx aJ5UֱJ&:A;'Wi0 5iw4("n=> cC|QV!r 8YyЩA9{/pJjM'3MI7*zLZޓ0jiIa`E p֐M@8B"72&h 垂3@٫VbepJ Pg訓t*W.Yp0dsUW($v.%aFD;3!vXhv0 *-/aY4`NT(hxP;E !AQd-$hqqV1,DCMa=>-x.3.9{hU EAmY1SYQl:^AOtq>.wD'C0`&"yF,KVJY#9աLl?ء[lOED ӦǕ''@DZk-'B`;ՠMAej`:aS$J}gs;x X% Z8u(Q~a#jNH=L.ԣCӌM'B߬7z = ֵA;0 OQ|GixZm躁ck!d] fA4# X,lF rgr ;icZ-dW:ҝ" 9h(Cp-2asSPq#FQ0pWP0z" LE{HK`{hN@ *&]Γb('c!>NZ 9^XKN]Q*QGv.Ρ#Bi`0TCU|.Yr^:q;=, xE3=(9{ԣ%51XIkh#,Ɉ$WN& DzԦJf@22^V<*&Z# FecIgC\.r>C!xs4*c\rm-CNcN䀄 ZA"LCh*S0=Ax(`Za0*X7Gc [ 69&a66&nM SӲ&)%kqq]HmZtZ]/ sB;.7P@rSa}npI#Gk]1*WR GyHVٍB{ƭ9ZC34hB{$bb5l-Yڐ|x"5̨'g@#hb+P>Qu3r?cPU` }t1JLr*.PeŝRH-sZj-L6 F7p|2:Z,\gT58a2,zتp XyCIֳ2o43 DCF?kYÒ*"B֕eTȌu-PR_@ dZL%yvtNmֆX%2=>S;AXs}fT™HH!},P4ΌL]&F*Gqra+0#zsSXt " KMHZ w!H?URR@gaS*sr{7^ϭ줚*Twq`i%ДW`m(l3 *1A^C H9 zBΤ}eZ}Er}XXۡ9sWERoɕJ)(4qȇ^(>Bs] i|l 6kD\#U1B=Eʨ:[!\Πg07ohXiqjmvwNq:L/Б@OD.&m ZʝCK·vr .glzcY8ĻDyF%'si =a͟F鶯N}`™QRX6Bp=Wya+H5. ; )309ţ븶O[ˢq5@vگ%)>_Mi5ڡ/X_vu&Y>1VZⲺL/"ędMB\ `I\'ǽЭַ y7=؉ V=:&:6ܚgk}^g'<'خ={w>y>(wvMtةa߹rqa) Vgv?xoTisju@%q` SlsWl @蝲pv7@݄鳸3ΰBS3v]AJ/Uɍ|.e_ds_jvvӳMEKd_tZ< N5{ [|}9ߪM7ZW|!NώPS[iD G]Uzgg)LGZc.ORVezy^\4uNU' oEtX'hX geZFA;B[@^r3o )q1M\b /g6u3g@ X)֖tPJN§42ff J@a"]f 35Id"3ɢ2J6A|2Y1!w=G̓bO.bF4x5 bZ#0&se8u(Cji?hQp*GSPxJNcuM514c߸Sپ}^ofu\20Z9!Qei ΄XKD/!?H3񻔘ҷdKIyyS$:2H)JCkUuPU[-)䭓hjk<%M*yƑVeSSε3ZA Iy LR,”YoZDQPҪ1zZ,]"^4hcԙC|0䉒@/GY?/OJi%(b)F ]d f*l|mpq%c㍢sNrțƕlxK[ [Z[ePz8(=L+ߡ6 >tU~g8u a %pJNhHǨ!iP6Gԣ8rO)ՖzO+TB㨀\"/(mTp]zROu"[<>镟F;LF&%"ΐ4QJ*SiM k6GP ;k_%JHv`NƶV*@i |++i9ؘܙy{xARm#iBlz)8AG5elY>kg|P(/Tw4@jm@X(uAt *t;xxy.Yji7F.MYH(gBxrTVF~= ܒcП!UÊ&†m{ 4Vqȴ y6\7k"hlaVNWY? W`0%qP)e5.YZ:+ZsKŒDE!yvfS`'!SHoSZNuܰ4vYY-|&\fPHbNO%ѣ 6-u$SgaN4ZV\2ڢ zw nҽ8CH!F)OzG! \!SI~DDHDIDd«̌6RHF^[-b7 P?QPzxQaeޤMŇԲ\xB"=J(rd1w)gcnREZ5n]'r&Oe*BO}-׉N y (Lj6\sٹaw+-T~IlW_V(O*{u}k/>Z6!LAD /" 4BW[TJ#rD֨`ml@/d]GkF9JjQE~=R SƎ$%eBt @J Y!"%?m/,:II`y}ƴ:s\X̼R-(,LeH.:r Ya<*kN;ٔ~wH-_ \r҉ӧH N4|EQM]:KBWP:PϜB15X2 uU\B<8^9;))?5`=aRXn_BVH? 1Da6 D.?". K94D5}0KSۉΐ2D#T#7"&!A>JrZU r F 7r[Ж9O ;rA$rŝ8 {ac3vl!jh0*K`ȳ J/̄bRnNt{!]@Ȁ`iJK+9g^ˎğO*GXjYD]M 5(5jJ9&SR ~\QdELDRw)L xCDr=JbB9rN>I**Vv9N(U֗  +3PH]7$Q5 DT݊j2QZ{8ZTb/1lYDv2P&t Yu,. Ho8\yl@Yc3V]H󯤏h4y4d<mx;LJ  S X0z$9r8ӻ\6] a5祦s^M,^JE4%KU*^ )KKjH6Mݣ6q.A^jLEtؘRt{XÐm6j](nMz ꐧqeZ?tő AR1ZthC]4߉b>>hjY"N.<5"?"O haZT`on5jltlP`%0u"W]UaUVt Ch/c.`U;юXI#C  6 [.3+v#Gq8'a)vG}x͍65sWvYCYCr Ph6"褵F!=tt0X 'NcA7kWE,TgxJu$n=w1:fM)m<M4Qo:+z X&gL1!C+hKCgJ`= +Q>`HFB#O{+6M*SyJQC9Oa<;z~.SؿX2#Eހk?=Gv%$ݥ J]MN#ȏ-@´ɨaY]sJw9y-?P3RLRno)EM䚵gq2W7TY,9 R+l-A/Htm^&mfMHmS=ڰqcYa_)}ǷO"-ד]U;df/:KqckOңoD3*!IDRspBl.r<*'sNJH| '#f߃AG7נt,`:f4ucrZ@aD8*IfhoSʌn$?tGLS.w|Ds0ЧiqS*$AKje#_G:㔐^'ReU012%sLq}ts࠙ekRK&qg`0Z==CTZ(!sR;SqI=]8{0nGb<Uxc  4#s s߳IA2$tiZwG\NQ*|56rrIY"]FbBې;=j"gMFSl; q8 eֲ`݂I[!pK.@/%M?Wdd;=;5" q踐,Gp_uY&O};톉'RC/ -<;+%FfFi팍O"Si/s$=#( 3Xp;9c(TOXq*U7*qv߈9"zs3i|Gw=DH\?e4m ;RPƱS@EbA-:; O}xM$'CP:T| t9G(0:M3EPUt=z:Te-H2lBHV.ȥz'Imym2Jn8aX(DjA.42Y5C GLJؓUa@ΧDWđA_*b_cSM.&(;8R@&SCNUݭMY·< @K:51 szhIo†ȴP\8;9颮o 2Xp I怐7 z$^&G\NF~ͯC%g!#gԹKGr: ]f'J&vO˘G&FT1(~+ea~"2d"*9sU8퀧~UiY#L: 3l4\j` Ņ6M֬+{tMJp Mk,C'`2UO8pX,R,].iB`  ֝M@*S6(*9kz圙eID*M@m!y#WV!iJb 4&*MUXCRKtr S.t=gR!QN* l`8ڦwZ6InRߕn~f{ѣ)+_||K%š,<. Gw1o/lGR$_*#ԐKJzprߜf%7QE_NNw& /DIxt.F~] u\ F-<-49\X =)i 0;P*PG|'P'IO<_blh;r7??`.=wnb!M )mh9Y;q[3IUr)5ԤwO2.T^ k"P~2;%Vd31iA2DLÛI}Ft&ã-hD'K:r3OuO,7hF 2tυ}F;O{8oa$z28\겸mw%)7_Jz 1Jiu&J;$FC1.K24ls슡fJR2P}C֩Q j1Kg=4Æb"r5{x >[:}R5 =h};K)23SD'E C(Ll *ԙShn`J7HBQ80 M wD.r^B9rrvY(m9D%% 4ѥ>;_1l7U>DMRJv7͕{A\o q5+VaWȜ.{@"5A NHx]}ጬf%< GDx1pt2iu 'f0!ΌV#Zu6T"YuT[ZP1lbj2R* nnuϤLZ!# B{+r0:?;74ELcǂQeX 6YL"h*NfG:@!:DIU-UêRpݫN4 TK" "H)*n?$Treǭ!5њ Cvv22u:,B-iBY7(c>'YP U*"M/@CNh Z΄Dĉ, >-g .h?U!fBQYbDi>nx^@+S&RX2AKVE *?6yrp GGáfZ2|(VXt]Bd?]; x(Ԛ(,(B#Pc B}?5QA LP͂Ht0i0Ux.JX/4,)bQ/v"+Ol@,08JZ]Nj*^UmCKvHS.m0  ;?zaϡ{hXgJ]^כs#iN?r 'гt\)ӨL.m]|:> ڛA4&-{#? W^m<*W3~}Sy:Em;d2PwG rE-W IlNGw,p8j?*V*CVWD=f-8 Jd vwA'3O0]/V7e IzH ,vu򍫄;nt/+KxB\`xL6/UT@ ͜ 5ð UFDl֐G@.MiP6O"kJS: ,XnqD ca܂w҉=Le*~HhcTVb)a}Ȫ0Akp93(XiuͶW7ȦDdY2;YE`_E|jhFSXA0V,N9+@U7E2ef;&&iXԨI`; iv8uyyRB%å<6 &N*&hX:ùcl``XS 2~bPB=| 'Ǻp-NքQgmp`zpb0aݤC hk[R[n[sz|{M'.3)^u}m{hV]G4m.#"F0p(Nr_V%O>kBGe\Cwa]'@1"O5ơ:\W6U%ms=⾮=F(p5wLN[ϳ}}oqۤ3|^W}~[xͣ>~]cb7.|}!{/5g9_wOs{_NY48ȟ2u:]aCT _Pg{-g8X"Ox8.>?<@M ҆o's'ϐg( ~H:N"븳=+/K A+mEAfkg}qі0r5jf-ZF%lIslHEsإ-{9Ԯoi;qDL e8ɒ>TS'ǹ" [".RJYcnDJeNyt7M~&} Ag U(܉Oz mpSZ8["[>T0IF~u !6wh+mZFد0X N* Շ2AHPy,Ռ(\Z:, B8.cҒ[SND&O8 ,OSzLꕈoM72-$v'b2 $tk:sBQ #TŕfÝ5hm;+77s5f!YG>Dׯ-EUp-tX {\xh΃Ka`{דmރmSq}Ћ8BI4Y͕QqǤ6(훮I BhR~G:aDб/6sT!I,ld՝s{)7SL%fp+ڠ* "9[lJk9i .'$f9օ{8wo=}˚%H?K_^ k ul$BcۂEl댪XJ6Q ,2K rsh Ą'94}> <<__D<<^".c)ݪdlFP\\vu|ߟ^oF(t|KNKݷ Hz{nig >eGYaF k@4IsHcyyRHN3w2%8@Î*UAH5 ?t9l_>StLmۿSpۮ-=IVeOY/wx%@P21cBpY,t{*1嫈/^_x:E^DM=.]thpK[\"|xFZ:;J@#Bi,KQRd*Rǵ|@EȈ[in7G@Oԝ DzF^[׹MZ^=^n/_]#{087'`WZign7vx_~Wu/^> geJb* 9H'8EeS#$D^j9#B7cT,,Yy'dz܁f Sˏ{P Q9| *U;xD PddǷC==<oi4Փr,|Vx}އ A8C:BjRVߌ^&߮Fl5%޶ִՠɏˈW^x^{W's s @6M?w{7J_ |~r ~x[:ɧ?O_hNM e3,bjq>GDBIPY)Qg,X*r{\|Յ B6s߆UnsNc-] - Gj)W`؀ՙ<\K ״ e`N[.qb0LDF\j"kD8e_px@"Llך&"B06GߋxAě#^_.s!+Ndww"(1Ytix#È?0~ɬ~%!#OgTkYy԰uj\Ϣhd!vA΅JO}N4RВH' I'I)&ɤ4t4r)L`9*L{S )ґm-a֞' H>"/Sˁ+r`{ø 7\#iw#kS;spϕձN-w"^ x8_?? 旁_4l I9᠎GnaCټ xδ{,/0<cc1 'T"ޜ7ء+v Vs6n7[Jh1ŋE`cQA#qBeIkMKZNnTXDS'6Lō42A9ˈphGsspr |xt_xZhUkjHDtq}ӥv[{*8AdNܩo?2tO8:b<>nߍ?OptYQ# M -zz sFG}>dbdА vDߪ"FMSp ƈ(0hnf]Fl;TB n!xzQ^ %M4n=zRVRg ǞL$jߔ67IKS`P#XS8,*~ou{F kͽoлZScL8/9xƐw#uXWsukk`Az??iwFz8;99Mk9I f [VnlSꮧFdF@~ ,*U AZIrY ;p5ewuifW/ ~VRFQbԜYy^R TNcOl+2XlznȖIR֒d[C7|xylxy[0A5 >ͯuXTU%E("nWhexQ͸qJ)%iR$0 k!oTNN&buWg|t8`BEh%zdAxLv"xCq<"`~LU gy/.=8Dw]|xn3]Bn4\5:ًWH{7W_^S"o,h/#vm4LnYPqIM$-\XQ&dRpj%\"^/c**4dD$LaYJ,Ew%WEl o@*$^?fYuRx˩>@36fZkN(FO{$-/^=BE c9 "צQ*%!FBCg^Kϕ6*UaP_7Òq߾N)=}3ʊ>ͺ~7>N8+N<)laT=وsGZ@¾gcſ=w;G]oE꧁O~=o7%j{hɟ!YRnD &tOE`7Ev< |y%nɴ`ԱnI8d1ʘu%{WČqfU%MlIPQS8WJ'~|s ?lx.zwpwWBxqܧs5qR~w}x&xg!w)S|Ãs#~t("W?oڃ gmcCg7a‰B|,F{wSPgC@S*mRw:.y)AUć|@nm|҇} lױ&}jK>@#)}ۯTQ(c` 4{ zXkco>{Zi<,ٵ4`lQq>lx[^88`UAMV"O6mNRgw›= HuHX/!q&ljR* E>8jx&uc<7^\Gpl>d/~u#~_}+_Ka 'wtj3'hسyNۓ:`LH| "=!KaJ@w;y 'v5c?+y٩NFN#~uħ?F_|P,ނe2 &Їz%hr D1wTx˾!NuݣʨJ=÷G>61>Nd4o>[UN_}y-}:wW?/#>maaSQ?εbߵst XjS/YOˍh-Sxy-ݙ"J˓ ө˗"E|k">ŕUJD!@wдuj&anHT}]/_^#a\F;zz 8>>N[߹v? q?Kod/_Eήs"~ҧ?I/~rglۺ?5P{Wɱt>ʽ#6 |aO'.n6uZiơ+;s'#8E+7g^#d",/hw^Px cSy|s.w{|qu,鳭v_cڿ{E|oJF|俾(rb}?VďD-y ~5W'pjwyq7ߔ"sOsDU9w]0qx8E(i߻jFx:/߾vcOznwKYJx}XIe" x°ݷWWu(?xw|?|kcP϶EW"_\#Oo*9NWxs?Jz:qrMםW~7ͺK)^#LjૈSF<.47?!$p421k3JMߦtpUc+4{Ad㊢"awoc鏾s-(7?s&s=ro92D 9;ӛ=Ff~%"^ v#QzGI{3W) ;߈lw :>L򗵟> ~\E+:i+#K+%FIg}Q.9/,)jKUEWݟݜ?|GWO~t2EV٧IW? '_|Gqe^A$DwiH1;^;ND r6S$~RkOUmQ(i2hW_u([Yӑ/%'Rńg`Spx~Z_Ejhc.S[g`JBqrSK@WW)C=o>#G?8/8 ?'s/2OOogquvHsgK9I$6(N礴3皂k͙xUv!ا۟,G[Tfl v"?G,__Gſ GC̚%c ӫ;X 0\3!fA 6eVg N4H)|o#qV0qŋǗ ߼Yǁ qh;tGt%_D#~v M+w48;#:x;5i䗢sIkI+w4Zs~O\L Gk&qvP3ǁ?#6 տ grD)f'v8_Y1:_"ǰn\_I?72_^ZKsI#9iv x|*MM?ǁ5;;?D|'??+J?rv^FxpSI떐Ay+!hsPFl%=|svyc15ɪU$mަ>ƫ%YUޏoG'<?]O_gBȔn rt I +^r]m?OH2ⷿ !U~pcc3[O#VIhE7(iugɿ_y:msȟШlC\8ՙ8K\}IgE34@箊NN,b;_x|cE\iBt-g:yX[~g,M#^˟Dς?kxWQFO\q;"h`1aw]QⳈ2_E|yɉ(~:?sum@clū?ǁ?_pu̿W*%l@%DnRC4/TJHsYa(BAT{?:v<'>]k^6ry8Sgۯ"~W_gq +{G3'39^Vȭwu'jx~{?|E ~ila?_M0w_&eO]_چ:yK"%%i{;g5˸st'Ltt~6Q݉PX$xX lOWtk f%]8RxxuJאӟ~se5a줥J Z%^xYoE(O|]7W/ڛ_^G!oCB6ccEk z@_G~-uEh&ʒ8쮜^ٸ:8e7J}EN9v-dr=gÍ}Oy_o?œ_":餵v([>B' vmmN%qpc\:pxzr% \m@v1|R,:㱱aE}5k½R`eG>р{DjM9g]^}muy&"ǪT\Xf0=Tڂ`2o3o+:+W&F1 V*\#Y wB- qqѤ]vS) pqF%Cwjr v~M I@w*HhWAz;aD|GF#_O! < )\I=L) ~U-q!A Cj1ik;:.6gE+>xllVx_{zٟ_\\::t{4qKgJ'}>8kѹ8㱱;O:<ˮwq߽N³RxyrCRqccc㋈7~}+_ .LΒ ^D)\V9T1g3y/e_4?"~de9l^QaDhKZ-A=.ڙD;׾88㱱kᅪWG"~Wi/?r$=RAUwc̴<BW}0.hyߍ|W_߯:ߤb@Ա=72tݱŐ\~`qBٲoB|K-؛]iWW/Q&:94tSG J4ܻf WK1z±UJOn>8㱱DU{?:%nW*{+Ă]Iklp 5v;^#xvEeC%G< o/}ueg<66p9$:_I,4kIP֊D>UWq%S}|o(?-Q|g˲]嘿_~# {2Sd1<^nR"/_G< xyzM7޿н~ˎ 8㱱?o}?luAo˃Dx|y- xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:DF957744A44C11E89270B75C4958CA78 xmp.iid:60206310-71ee-6046-b0d9-d30bd0c6b4cc xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:da52dfc5-7f62-9849-8885-e7da1b4d1bcb 2018-08-20T15:45:47+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:60206310-71ee-6046-b0d9-d30bd0c6b4cc 2018-08-29T17:31:36+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:15:17+08:00 2018-08-29T17:31:36+08:00 2018-08-29T17:31:36+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552  cHRMz%u0`:o_FIDATxٖdY%b_mt!`2\dw?~J&23'3UE"`犨{{Znf**r88BP(EBDToPm?_sYv1/+Ǽ5=@T}/Z%s1u+{bvNM)fB}.fgq|zkrsKc?ޟWs.ˊoNow`~ K4{g5AX@@ED2e݂,^ݳ7ro d7c,`{c8t N|}~HM ك)=H+D0wTHH?~ދNNd)ߡj/9ߌܣ" "LW5'*܏x_aah0`Ѝ\QqSD.(p78x $o^ n g-}ǩCfȃ=p~1j=$3sI| u};H3?~-hPb~ $=~G8Ihߝ-&>ة: !_5}> ZNjO'Z&wӀ|p:{Ze/UHZ[9Ԕ8ZZoΎLFV)ꃥkn݂؟}k;N5j3u5m0 HRpEI.C__;!scEzFp0*~՝{sF/lD׵~K1gN8{vְ+`dhe^Rvڃ|/0=Hw[̾W s2o L+LjTd+>/\peSA۟vMTkL:E^7RIs1/k2!,/ y=V{f~/̹\У}L_G )\A{>`wZ.mNv,~ [m4M8 T[22.; f7?j[SC3J/3Ns.]x8@%,CLwj$0-LΧjoV >hV i.-cAwZf%~̴t*1ySytݕ>`VO'jV\߸j-3 cŜՁKnM( Ȯz0vs]sCjRL,z>??ϥT@o `E\iU{Ok~I$6-~ R{Pc.!.dc" ÄkLnFLb0o֤NI{n(.6c/j2{\)- av-!PSfܶj*6iouv"u>|uiҪY57 Al f執궃n1'^9TOOaNTwuu9Ӵ|쳫ys ]a9!VcoNZ}Wpm==`HW3>H{5g1 &RS>Ǡ- ]C%-{7(U zv.>M^:v`ؼlEdNvdRiПws[ݦݪ+7c̶U?׌z2JmX''JMc_9Ӷ0fK]jݍym Y7QzSӰrWh\dɆe4:)ok[ HeBmkL4<8XKwBӛ*~Ջ>&\*2-Q=f^?uăpmCv-3eT3'l$2"B)Be-SC&jԔZ{E'_ueņ2GSjqYwj3u;2r^A%M EE.FBD҂%.R8_{"=&FF;m->~1]H yZ6`@z9Đ7K\l)F,i$ Ysb5s$W0q7+xf_$ݐrس5|P~oķ_%|.F|<舁#5_O iy /TJcqp\2EZb uxFdsϋN\f@Q_־F\(¶sdZx!G=P[I6hDȸk&wyXK89A9C(%bHbt@2_`<-\YGGATʼnKa֥ͧxO;#Ӥ\K]΁tpo *[i|f1ZS,Fqy sh}"fN}w%9QM$Ŷ=xxf)Yr6.ݠJ6C查՞cϗ zcTh>@8U#N(ȩJzPt<12B4 %3db^te s! =rCbSt`TQყFLݮ("A;!'߇˂~&D1&P㦗[Zf ~$ӭj߫-875w51+HgU:Q9g̞l 7)̤ sDi0/ݾH+G0(-9 DX[Mܽ2^ZZ uo9.=N(@36hyH\e^RJ;WLH=a^03Z$}JSiOa^6e匙 st( =G=nޠwn%Z x3]%gvsSNmڈ!uRe"XR DVUkjJ!`aԻC_]C D]2~xn"ڸTceUa{PIQi?e2Sղy )#,u;== C 0I叧;۟Tq,Y?M#3tZsȼ7zhqkiIN>vDaIYFA]UzPԨ4憚-U?vi8!}S߶lHIdNˢ1D;}.L'i$Eq;kxj1gTB4"L]}ȯX*-6}TW7P7Ot؀v-1 `qL/.. LU)2]Zߛ6aigfDXkR Cu>.({GߺQ~P"vl ڕ'H$rҿy.-D\5 (]yhsjJIcẋIȏ;.ZiʝruubU@YHH4aR]PCd.Cq7=w6,&Ta ,0m0VVRR^Drh]l |YAwEYt_Yqc.DK}Z\D;SzWFؾtޭq/LVMCPf7oYV4MҊdl@%}La~V,=.QvԥܬNwl?ym'jfZngΤ5VBbiM(ũΝEʾA1Y}T́P7@Vueh%uYRt H"9hY=Npm+,Pnw0}EE Άߴ F.eC.ՉeH;qg\,<҅3ms-S쬍cs3 &3gU6RBC\2O5om+$#XĎsg] M]j蒹QkR? ^ ]4}] NɀwnKeR# %-Ҿd,Z$-S,Ђb2D@^Β&m\PKN"_w*L 7d!?e,! A# *ǿaHTBA)`|`]IoV$U Dia[W@b@ x^lƘC,N;ĎgMQٝs ѐIQѽ(<# v9hʸH#Rpa!pzow9B^C|xfˆcCóP/ ЩU"+1St:貈kiF5bD fR/D7/ri%"_4HGAHqU,}׈W[\XN G',P|>qPk(\ҼNB7S _A:= .TȞ- 0КEip n-q25$ݦEXt<"4e%DAn K&KaEAeE2-'F?q3uOXۂ:@Ai`|5-nzKT0I]ZhLQ6%b$V&D7KUikaqV| 2 4 auCɨ$6ڡ Nե`)bWVdzD$yVJs Cu_p&V|QGNlh F U$PJ Le_7+޿6\7sa -|UsP k؎SLM* g?goaiUǢz -SӚhj4a3oh&\o 4yk[(Q׼!D.%}[|@|י6q D̫Q)CMu$\ŨGK$Hמ0wiy0e!?XjSU3لa.iluZmHv2<켺ch^f࢛9ĸ8H2:.IVK3\,3by&UX@r FM&Si ͋:O>fjUРe5LUx-g,ujetfTBmq&)rsGQO¤ ݼ}Ŕ(3Q560Y7 CPk2~.1^̛piNHEQdZ"ٌ{ȷ =k " IJ|Jd.FwRE!}2y$X/}31PJd8ҪD4fUAl(gȩK?) [RQbE%Ze&`OCF?1}&DjX5g h8k$x!NJhkdX Bﱆ\9K'v]ARM6_^FFo f'?I@AnZsU\%\|ArKvy5[dAbp.i$ wRPAʲ4QvwvsCc !%WB'U b. > ho-̌قUi87P]/$z >cLtC0\H-psmh|GnN Q5RK=d7MJeDDIgݤUDR3t&cT(+Y S.C `"8D*O'H>&y^٩ w̥$}S *Ue`/DB΃1h&i )1$FD}3 xiS2v %nq +S'\7@F6XCb$'%Dh-k}l)؊)Jˆ8Pq0kl{vT;+Y^95n8ЌO8{x08ڼxYWFRv57n֍ycK]}KbH0n\ 9Ⱥ63 FDU w!!%z$M QuVRDIک) 1])eg,4w΁o"gEMadknv8x1}#:.*\ì/92mu|M8jU,]`$\*o Lm2҅..*v2f]lIcIj>/#+XLYCLr).Q8O5?>;5[`sF;v#iC z9Iԧ8].KCM$>\QwnA!A1 E UAAFFGK=`48j.(pZֶTֿ:Xa"nkCܔNf;ǎ*5GXllƝPvUUM8\ 1N7zC\(L<hiC-8,x!izˌY%q-%CE5Mb*BXʋ}73GPx7r7 6~ d釸{rSFf;}=MZH\~=*z]6DԚ^n@T3'FZ99lT:u*IXp b"i(em@r \ ̸/4du@IQ0kX!:` ~"T[(p7fDр$Z5#~>MҰ)"M%ԆvVBo`ŒaMhHH+bC> Uf',P A2 HBà! (D&Jl$[ФT㦉QlD'߲1~ c&]"/9$FNca 2,?@N9d!H([ w_#2J5xV(q-fWj[ysS~%#=Q::mE=}ws}ƒ٭k(N1=9܌j2u4J:/}[Zaݝ#$w6wT2]gي hqAFkRAPTWD=Sw9V VACC/.VyƍƎ3ecThWrWfDwqYuΩsүeUbfl.վ!g 3lPf МW+4p*J51u0 jzv}$fA$I 56B 3ȬVqbpV@]+2No(ʉ=ZS!ں4LoK"W\_-mR5J(%n1i{6h7\6, nqj/hbomނBB*AI=SP*Ww֒^HKYs`۔oMCc.t[.J&4oA ˬ<LQ"Z&oK()~uB5Va;E?c@}NJ0 :QjDr$e~*c681?ɵ* kV3MIMp`16 Gb^TCĎzKGs$P\HS},3N}u7Y*#H4jiGӖChC΅|r, sz"Ć2}k &B쬪 :mr9*򫝺F 4JdL #edHҰNo+Ng9qS"0aL'~t1-kE9G!B]6ζu_gL$"aC㢱Be~zM=I:,Zj{BVI|N R{]58F6HmL/=a@V IJc>/q &g-y:Mf;WwX/GV|pOЬFH;Pܰ+S.DNٓfxeÉω ,.cNmTr|R Qd"dI_#*# u0RSQM=,ԹFRiDz,6-Iv>p-칩!;<p( hR LYsF8럴:dPyy>˵8tY VwjDB~:waB_=?\ƈA 77ybA|ef| 44ŝ氽;Fg°_8)S 2gju=qR=R1y:Z#cHv )m=ݞtM0qz#>jjFnkU D41ZjHF̫Mzx7۳K${4\mq0w/l?l[M/ߝ845QYk(M5i1nXVH1Bpupbvfgwë I9*ZjFJ CqzPHjki L\Ѹ:34qk;*E!jz'RP0} !('9`Gt9V2ExWd.uzyQcd q],j78fxn$b@b#Y UXD2RmLM'BAhkդήRn\J87I1mө଩u7|:`W6JNDݤjĝĻFhߏ:NڏDؕxs"Χ}VU6ms0V3d ݧ6hrZQ (?2 $gVsփDEs7+0b6}wqhȚqi*F4R{e5TK\}so +1A5cnb6uzu(wou /7 j"?W[()΄ގ"-!Z /k҄rM%+(ȽPz-0s:'8'rQ6j&AB형 dsxG׺NGk痧}VE~ K>dO_ I Mh-3|/bU&ǪWGFEǔV4+h{Zt`GH0nn|FoFΛc>}5b:ntkj'/VFۄޚ f2)2xiPP3="GteVv2;I2UTgUZwg[h 75Xud Pc7[X./$ ݶ^ ?"e, ,;V5wƙוo[׫M؊'s ?+᧎wGfepSSi_:I )f{V TQ=_eSYk,rq:zpسp>o~b%]o͑[RO >bbyi<`ƾ'χ%BI0N|Y8(&T{pI͊e|.8{@PO~I/S { CD'u*#74 RI`QM {{>vBF3ux$iдZ.tduxu<*ȶ^VP4f1R7{KjN `rՍ B[f3K\NUQPNfV\N`l2TWY, m'.6d?x*zY.,ğ)۱^qKY5:cb+xE,/jݡݸ1\gW1ڮJBO:e7vÊFW3,'@PU ЌdIm٪R˒VN wB։$44d-&VͭN9x] nUjjP1 uxa }f ےsHhRg{*J]Jp^MNfm6q/7?N֝lρi bHW8mriD~א*Ț5?Yo+Πg4cn3 W+l3ILc%wva:T{D}PƸ?* {lݕ_#E =;&ՍV.8! 7%К;Il2rcG-E7#P-<Dm)CĨqeɼxJŻƔgX3w*mkd3u2eY=B1Qk91"c7BԈn~obzLJdsPb(Ii_0aW:'@ۛ9r͐9akj͐Y:4FFx1phN">Xvn U% U&R*j.2)PͻMLO)U\RZN)th=2jf`uIԈzEk)Mv$>ϜN:8aR4IӁt%PuX/ncrZ˵'XҒӗ>,RmB4X3Y"\㕚Mh*-5(bdLhՎfC0QXR, 52H7NQ/.G̵9۠4]|u_|Ü+"k#y|Y%C1J`"_::aFM䢀ܙs&31˻: F f՝9*} ks}LA5k4C Pj|7aεT ^M$&Xhk{*Rxj|&7t 4S'|oI[ge*fkjX=H+1x3,{G*PI^ǟzP'I8Lj~Zd5|/p2l7[s%&U}M&YJg^YbKgmUeʚFy2kduS;cNR be# C v%mU{&O]aGi4QKm֌Y;ja3# g eEbk? Qؔ29;+٪Q]JU%em!02ΎuB~QOcOvv8y3Џ^~Vq} eSxqbP,d$ ̼hU ̳Cx$$H~sLcԈx| {!8C_dyd)fcp3{g\`.aHG Pf"p2ȻwK~Gos}J^AMS]z3NWxg2\ؗ@rBkטC>B5OՑ <-4|G DQ]>,.&·8,Dy€vH q$فewXb{1 E+6ԙ آXA|v?HBs6Zv|z |Ic,8j;}e0`1{]ىK!]a+$r8^DY>$CGX`)ēzkRsOb 3b $0ry6Z~LcmN1Ws;L.dڲl;+ߟld{U]0nΓ3ܚ wズf%_ H]v͗@\-6N}&^Zge"a^җ0'Ų-7]]ෑ69an.+€vJz/#jV3a+`M**ID>o5qq0O`/ ZsT(S+p %d,dSjB+qd;Yoϛ6$֎oI\?T1Ȯ?pBY )ƒ-vcO7ve(#HiTW\3zryY&릱jpM ڒs#tzTJ] HҪm"n0We.E8ƘjweE2lQlgp66+`S^$4̤fk7,ƺk8c8=;We:.f~ede Qjpp0!DoXOJ!?v56A%ƃdt:OzokǓm/sk~SLm @HsOniofw55l=X wmC90"ĐM:Abe뜾Ư0RH)NDbj(XR I>҅ovunnbhd$EJ{3TNo8NX /߼?ȋoooWLJA}ߗ#CE/X*HY~]7i; =#uM8P>󷣁(Qk 䢻2 /YDVEb0qJ[V`?l7H,6pb $Ak< Vr7S*)odʾC>u>zEu4LH6݆D8P@h"\#E[ ǠY.>cIY䦣* $.RRD /^*gp/O$^?ZeԙϤf4pyB7>,|We<шMjmjd궾]\u05 SásC)$cOǩ CG{YmjIG\A2`í^An(p>ZVJ1gj&= BDTں x/F2U`!@qeZ+0]?˿{y;yx[yx`O2a\I٠Zf0+f~f#֍2%>(p% )jwr|'Igݔ "I dWR㦸fFbS]6O[)Bk: ^u1&f,%eI?K) {KmMMi.h@w27А>~(U3 m>,5v?afM尃"ɰB8݋{k QvߩWrSy2Lw;V QҍNk'0>6HUׁJ>k%BJ <4Y2Vz1uŹ>g iiiBzn9h%U\nB@Q,E#Y~4727i/Cyy"/`w.:pRc eM_14m+\Uk4[rXB[If+d^hF\R]mf_IzuRV)q` _?) EM:qhVNRI0x`(35vNNkMU8005WT}W`k'\Bchq&Ϣ:N,?{bEi*˫ 7|얛 t:a%W+M$+Td7D (Vk`w|hyTվŞ*iクO^*dJX{z%@U ]fd*'*rw#V"NWC*݊1];S_+uh] "0aTYA׼ih6ed W+iR~n+[¤SDa$Pr4MZۻ_@? جP4q Җ$A.Ѹ{8g^w_ltz5sL 6RDER%ھ$m[ʵkAvBu@i2YkT]QU#(&B&RHkW^H$?)<y3~/ĊjhBхI 谋[P\TL_ SҬ $SE3,z^thS o5S3Yix @lE$\:ꗹ8L想yA/8{aQkZϧݯGܮH;/n\hQ=$T0#֝)Nyr!Q$4ܮTC-M (S;I$ e%Cvۭ 'e,sGBcF ;)=aK$i)ڌWL)q2CZTY$4A~gqtZҵ.VMICNg$fQ6ֹ22,>]71ɶl^66dMcYC#mEΟag P ppӜh7z`i6bPFa1!QD7060ي .` ǀ@nЀXNĐJ2T74Xfr1\ Z%ƉBök&%M&4 {\'h$rv}7stI܄Jqs;?d7yX$nՔI$C u*8-@Wrbhv)1b"r]讚RFHH\(rps55U>6 P#0nEcDYAH? *,JAl -˄31$f1#L}Q9n>APjϡSn^3yuπ*`rfqu=fHLR}sb2C6Ee$}' "ųam-JN\or0tg*M4O5AgeW2Rd7;l49 q_a&{`nbEe70FIO hɏxRMMy͂JV7'8$axPYf^מVש^A e7HP.S^zmҰ54W횣]4I#7ZYrHMgupk\bAE}H5[]~Mթ}&J͌Tw:EbS u +sf9v.!1I}٢r*Q\M|S줯I95 В2Z%r #ulbO)Vڕ(pO"h%g0H`biِ/B~OTwٰB S6} v(>٬?W/y7f''ȒBI[ Y7#GaFGV+3z hp\'?3[,H졀4\]OCx8ugCFl7Plx| b;C{g.Vb\;)u㶹GvOsZuA%< 1мCt\Ld3Wu ɨ[JFhRGd,{j fYi#W~ΧX_tՓA _ې9$2YP4Fu* |h/A=i7ѕ4pky7l] /^'yK{1T^Oi 81LC(ʰeSh2v=2ۆW DHIt7D4bk4WqsKr~2\5(({Nei M8VxJ%F3 )ѩϙ,G#jVuF|-V f!VEߞ1M,|Lb@,4"{ZF\ww0'S+dʆn*"x) r^ ^dDDi`$uRDs Ym`CģۈvXRb$?.XZE SŔ`*NKݮeV/Y806lG+hϰ&`b PSl`2 ,rc(D,$M4gႃ}@d} ?MNwZb}$\d9qP-fu~,YeaƏYBC "̟sZ[oi {~s@q z`V '(%3T"5bq5Qmb%1z!P8 IwD檺$}[ytR@> ͓<ý<>/ޟj?O[GݣdT/mo5$YXb~5T2;& Ă=p8W0&,q~u2E.HEF͹_ux",qa,Z(YNMlMef2xГ)jvV;[sFܿ7" i-`~L$zBt)1vnTxWKp/8km{쎮g*VswHL>rcMbMFwQo+PUQíl6@zyyߗO"wO"]6=iAU@ 5RLX]`sT{m+RA0d(ܮub&F) 24$aW3NVC5 qC㟳 <4x+x:_:PAd/pFCz:!?I{vM$4vŚmmc .#6 R:eQEF&4 S10}jv*p `9v$wwwr+w?Z<;Y˟ ^Vr9Rej?Mˎڧ %P<~fLrI]ғz&ɝx7PSѢ/b ڰFL ?_I_ Z ޤۤ38{͏Ry81MOX6Vm",4ŸEχG@j>=-@@uSdH݀AtݍO/|8֮my>a)݁p9Q0k&*y~៩Y_}mYM9ʚdjx~h 4mFmg72kתTwnU#r #0bWWSe(7Wr{s-ONVT~8YTy{5_?@>Cnx؎#,,/ ? #K%)Z4`7?CzoM>_o;.~5(af55 qɏ:p wj6Ak: DdߑЦYG 9K[V,o;w"3?̧T  #T|SwyFva>URSMQ۶ҢT-[g h]yWG{ f1m2P3f`oxЅ 'O~?oD3jEk1$0D[i.fW6Tqv-k= 8;r{w-7WY0r~d |+w櫇I!I{7irE91Au=qOϗȬ4LuLǴ1X!548kZMGkʔ:l1n>Q'J*m[뷾(M/&z69Yw JWfv7ym̆cJDnfj[Mi2O<ەWZF 8!{ӓ\n_&D>'"O2$Hj򩻷]2s2{0Y}k7-o6HNu)2f[\)7fv\/P64#`HL} 䡔3#N$N ̺m=\hn[\% B:X0E\~g20[rx$Uݝ\_u`ͅ8VU*^lru7~px/ ġ8$37.D0 xKH{m-IsEDP<<Ʋ'{sd$!cp3lǦS|Ǘ,AO7E DD'o!\`]HR[ԇ{Ira0Spؓ8{͕\_Y)"vũʋӍl"'py8DMcATS]dIn`H~ݷFNς$&|Jik!ZPҦc'nq`^6w 9U.%F{+yěKj0ʹ_Nd%ӜMB<ŕ#PRGz[鮑&fRZS40ATyw)"x%gIV^D>Mr 5PgPXRGeNkVk[mCfjӴѱ1z-kH'ݷ&QSW P%Bg&t/H{xƓg :-'`3Э 2UqA֋KbEC#5f[$C %f3'N]%f#yeЩ{Wy|rr#$&Ҽ/Md.H d{v#}밑 ™3?MFA?\Q:eN`m{id}0PƒGtHu:%h% vX\L jueoEժh_7z; & \}^noo/_x]G-|ryJh|:qxd#SNrXڰ:z!5*4#F`"'άXoyiwum`΀ӣ: 4K:8zc\lv'!hq:bLTɊ]V}?.2jF[B^; h\^~"?NOVTuG.ȋӭ8fzX7'Ve]_GwNY`g^f@hVBzB gdW)ʶLQijN~7+ٹH|]tee%R5 kUv5G#I`N f 戓O"Z>ߟwr{sx!eBLy}g{$JP=$X_X{y 5fz>($~ܑVuI6Db&xm5-Œ0EN*"?24 f6fKFCVR(c'Ikgi63ꀵhQuXZۿw~Kz+l.odk^@9sE5BA"m;*[NdVha2|3̙gw|(%Ts8JAL]6hG٨S|BK0u`]M[YYf{+f_C@DDۭ\Xjs篊O3AkKwzY.Q xև7C1ڲk{yx~_~R/;jܓ:{뇕|_\ILb-C%kVhl,>a5"̓@|#gS’ ؈"4c)rPNK!8!_.hљ";RG%-{@(Wv? _~u<Ӎ>Na-͌n55OR@)P@ikI|@@>/b;~Qh0ʂ40>|ꑞ_4o%qX5 w_uc%\J2K뀪ՇJo^։ V.N~3%(]%TʫcY {,yHIJ|UBuLPYݻKA|'@[cF7`Y$iK17%OnI4$\sԧ%/ԛb{l꩜z'W֖)myv iEh|qJuW%}Z?Hhɼph *\i5\JDڥ)6"eI)qcjP{q)6 NKKX{C5F>|^no $Wq+:S&++?=JPln *Ԩ2;*;l,(h)b+֖e까Ѽm@Li ɻsˍIv@F;Go'?9EZEdXY!8?D*:lH=sh[P[37 UrA"Xt0 6 C8ui6&ĕy'S'8թ`D7A,nK{yq"7t]E=gǾ{sCǸ(]H3bM)C(Շ/+]%eHZ7DKuNYH[q%05ϒyKc $9l7r{s%77WrwwkƓ!˾{Py(3iDɅyu?~_}z)_tw2u~Gls5VfxCU|1YzIp#R@@,\0B!G%D8|4'@Fy4xV"V FV"J^Or{{-7a49!?b.GV߾O__<\*(3ZZs՝>yT^N P5UHG)hRם'@VEsƙ:ZɘM]Uzoץ[]R^՚3y&;5ІR ^lVnPѰP<S<~TFٵ.T[uTWd?4<3~iI SxD؆[۔bήo a1\Fs@Zf}#KeNW]]]E关lSdr>sKUw;42o6ۭݭ<>>ODU6V؈`xo,`?[f58Ŝg^r4~~R~)<#36$ncY):`@&"5+$OkK&PӲ8IG5 qC ]':=@j~Rc>ݭ<>>||>5k/P<'0.}0~J/ʫ?ɖ(-q %ǖ >H5Ɂ?x-im`7w-Emji^;FG,JnEpD&F|b-3oBM}y!SV0T͸7J}qIFHǜmt+r/wp/͓G8z=}_23l l[R| VDI_~ q3{C,}%=Y1% M*ރE϶C!4,2BaYv'-jt ci {N]ɂffs&c>VA.z;Գm=\@tZ9y8cy ^d=}y|.?4m=uLt:~ֈȥ6s\# ܠ,rK:ubyՅlsì83:j;xjS^s$hRR\QQaoEuَ?1ɏ~c}=?:YMSZƲءPwTKͥS2y/_6IǤ#:gdu7@aRI}SP|-AݒOJ"k%]Ct`!@Ê"eJݪ<==<==ӣ<=>vB>{L~:'Lw^|J޾:A=~v;.>8‘W(~4N'za)To$D|` l9&UUc nkfQ 3⛔m5q[lI6|7yzZX5so._ɺ~ ?L͸ؤZ-ȒIAL-d"'v̲_O1jr3.BMٿ_f^("ͯ^˓-*\&[dܽ?'\ǥUdܲ󱭤+ A Tn.D)=Ol7O>nO݌qk|N!I5ȢDD,k )`}7 E((L|R~Jxf9]To~jk7u*2hrn,4k~ϡdϬĂ6oNXzP5T_K<-6IZDo䌲 Szx&W26:̛uJmn;K@[Qkf_c=T2♊].Mw3 qNKJ\ lWa>cl¨ېctgZ@$-#b9 `t&=RO@E4i|ӱp~!.Ԟ>骇o#ˡkI9sS0jSz_^ȯ߽ް.;(+#?{rss=^}.csM h7 g θ~T4R*hD_3iXX1:wɞ1a sSLZui8}.!MnP{s!^ P=fyneee!Ȏ.؜OCz֘9#y22ာJhX 5b]o(i:F.b^sd$ }$|Ϝ_$9y\L2%7C I3[!d09CYRydu͏]sͅVS} pcJp=w;=7nap1|+_I'쓙T(iԅL)nKqK$d?Nۋ  #FKʄsFcorK%j#*Yc~zt!tj_qgjqj+q|"9D^Pb.ÉUu Qp'I犐=m&)eX`|fE|A?Zru7sjPGTP;d%^_ȋAIj"zѨ,"3PYx /,=o8:JY8P~VW皏$ΌeAɃI!#lHa;dD -^21ay{C٪Yn!yyfqeOkGODHLZ^[h!u'IKv^} kJ3`Jyئ1|$L}<Б1 YbZn$6pƳL;̬a b5Y4:׀ aibspZbsMq%bAD uMp'.S猬r']BI|ah~y jٽibRʄ՜~;L |0R9YMsyyqJٞ?(5z) 'CK5>(c"f&>;`t|fIf4S*?s!Yy#MaԘ )c{9\'8.1qw@gn^9rKzG|>y2<,z/Fq!3_~L^]%k^/W/;;z_$uY. `:5Kٹ &c$6d8:xjȯ{4d+J\@rW΁k"f%'3/$_6%^.P*-gzyx8S &i.ppYl^8ju>F~M!zkCxljkz?a0>Li9V̟>Q8 сD>I{s~y~)=Y"t7ŠڊpUY6c8I;?\.,kbہm393ˠ~,WДH 7ܗ$=׫I^_Ӱ1,rA1h7C.ti.]Eq't=W#{n{mk1 yqb,-83OsN|j;j%.Ol?~e`-7)[3+_,LZdO_v4dԎpMC=\z41u:[`1Tc㝓kZ0ηFfL6, z &Ve] 7_*3A:E?_HlA?a=!&j'h!h*gPsiRƅ`KWJpם婜z3[v{SC Gwu8xuisnkKDώ/eUlS;zsDǚ5I0a*nlx5P@Qq"R ?5"ʻǔoZ1~ǵ4 䒑J:,j*(H&;)$(}Tt )`a3 ǻToF˴d qN"kyqv"g'4A(B2&;i ?E2$ɐ|GԒ@BKZpvAIOkС4nF:f9ENP uv9ww`ex9St UXM#/@oV > L8b0\4 Ȋ1ٝ_cyy Qv㧀:!װB 5LiO\*Aw(|~A'|1 6? fdz6 1YT>ݽhgCe|+D-(nVT7"^l V^Okf1W:\VqY|]ݨ4C$'rzt5MwY.Vi0CŹh;h ܪpێߗ֩I{"Ӽ uep݈nlR/,~́S}.T}ƭ^U]ɩL3Nd:d?`\ ~=)ld!\"\tդI Zz>fAO܋>݋7NNwrr&17c=Wf ;CI1~ih tkRd| YJ$/P ːDMȝ  B$;f׃}5 LjW2= )+򇎁d_5ծv=UqUn{#3HIӠCA_n֧Ztz.sY\|i pn V{KCZ>Կ0DfWָr5^j9x#od}Fn?QojIS+[h)-_9dhh+߃т($41ٽm)Q,&O1,5sB Զτ+@OVrzޗD&L"Vgp &&]PۙZ'K6< KnK'} ūz]sZF1u<'ɹO.euv! NjQ;b/Ǩc2j"g_Zȋo%Orr[tVwJO>LNdЏOFTCu ƢI"qWҶm;hHvJS{tߛ eR*tԽkvh2h93fzdijM`ܶϝKYkʥ.^CdvlɳL;KV#[ϼ$mOeWv5^׸kBN+J2샵[&Y^RV>^D1ԃv7.SZ**2U|Sp> 9X6(_ʫ[}Gyܕhz1_NWl MOLrBtJ5> 嗣i$Ǿ.kALY7oһapT*s^Bz2M)VלoIDN+9?;t"ZkxG%mDpu9Sčo'g{,MzQ/*]Ҡ=yM9^eZVktOdZdIeJ Q}HHgp0w֑7NūgywC֎ IvQ>`:ڧ0#J8"8a{4GYxkAͯ5MH6kO͍0ץc"}kW땜ٙ%usVJ84"וb6"K|G:XhpyԕV3C 6BV'g>{!>f\ޘC ^GN%z3$e)QIwq鋴ڃDa#B\O0SvTV'ݗwrky 2mw(韁g6q9O^t`zfBǾbDSBtcJFK=jbfſ~a@7#l#3H\ZNOTVXL{|y4y%dl7%&)SfVgfAZ2N'g> Yqu\d&?ho z -Q$ BdZ"5s]4Iio4#\3MFCՌ/w-g>WA>|-Mqкf &ad |Rm3w`U[>1<>٩D`ԀlO#/"۬hdnr@2NdZ٩L澒?Y‰mli3$\IR{)'/e}rχ=%L{Z횩286}?ФI1bR+fbRwfSĖ橶T~sI>_Dd>V.Fn?;34 YSi) 6R;Y?3BH,Ul 5Cn Pzpͧf2sاi1՛q>'Ze=MZi Y2*Fhc@\0P=i <*j_N$j)L06ZpF"d;<;USW-d=M[%)KtT3Ä́3]i9|-}V?Q6w{aJ=)"3,W}Kanh2ļUp5h:@>_0sD̷ ,u-885濯Vkli% Zm]=+楪Ir3Q$)ه wmJæ<'dܥL gY2/&Yײ>ٓ9S#3j\}v}C:pdh sGeiI 9b%3TV{iBA*>'H+cNdvoj Ҵ:˷oǻkZnLek0M)mPY=+YM)1X yoǫʰ暣AUď⊑Ϟu2Zs$‚gӉNv&+2ib6[[ 8Kt2@ ? DQţ$MIȴ:W>{%scH9L LY5=sލeb1`,#G~)ӎ<5 2K 9պշrkyzme ?. 7XI'Ю؎|VT\:ɘ8ڷ) Vf}թ^2ώNgϽ6ψ,0wgf6QC}j8] ƋO,})g ۿ饼K^IbA! E@؈b#J.?YAa5HiJGiZ˴ZjuV(ϸ*}l (:h Ӵ oeuz9xT@$G.FǼGRbi}?LZefF†\%;ؕis'j ڛ6Jz6q 3}n52s0Fðp?a"1@UT~-J>7x~7%8O`?_۠oSQݰIbʱ4%iu*TiGwzs'x)E7>`ҏIV3YNvxr!֧{L+"7ne"N7V>=^6Ow??F}MȌJl 9x5XrdJlCl٬`@iJd?{vAV®K]FBà*tP'T,x.8p#`!Ӌ7rzFۍ<\}+WmZ'vk^!Pĺk@F?lGoHSu00icBj:1|>[Y r_% YrrJN_R֧i>؉ќ]ʟۧyÍ<~w<_lORzrڝ饜\ӋW~.m8pe&3XB\qRSHz],Vs6Xޕ6&1Z>w⇏ݵAqޜS u6k2>XLJ|.?ӽF)x#>iB`2vklւG.XiQ`CX[V#-b^ɼ%jǴs;0g7 9TN_~"/>MK0+99%~Ov#ӽ<]{d֛쳓 i75(2N,;gXn`qEuO۹L}P޶1nBh-y>p/-O{ ݟi3:V|,u&gkHݕ#!1хpI$ⵈn{yv'?Y'j:zi|38`HW91|#o|}_}'_շ{)$}~zmV##\ Ojba 1>JGb$Yh4B κs`~gq;V[X嵈ȯ?ˇr7_.&TܬAbn~p{k%m{)̿-Cd>77kyy/7:0x26vUoVI_"YNMf鹜\B^ >Erb藟OE߉ݕ}g H88cơfgrw8T4>/udC[Fb]3ܓL~ 웂x820,lqqED^|+<Q bI :)LJݍLL!>?}!r7pl7O8dٖ|Y'i^ˮ|B\]_ś/uE_NwR/?A7-scجy嘰86ͣy1$Σ g4NFi@9=M (H*P>rɹ˛<~?7?{"N pwSٳVKPA:X#OI]yu)Վ;CTdy%Z&:ZT1fx%|?'_x^7_}:JR)0"k"Ytuἲӯz]Pl'ݗpwϘVCh욲wRAgE'VnͯxO/V+;L_}&oZn_kp.Zǚ鑻wrv,}wT,'{FnE7[Q1UTpod]5]:x-|?'_OyoYng_E\nD6BҸF ╜w*Ow7x<޾ٝؑ+ZEeZd}R.}%z#g/>hT;׿wWNOrݿͷ,w rPƁXJ.c7Y]93><]89wG}icE ˻gIWFQ?"w_}`,i "ogHfng+f셜}[<{yy/;iPJVSr+yr7rSӔ,cZv(|ۭrs#d!>wߟ36>X"6Iźyf7}zJ :˷O~#|)ヤ󗟊T-yuӃ|r?7kDpd :pgA^xcc ewYt$ۭ ֌?frowǬ۽r1CS/!oi&SѴx {7^N_셜x#g/?Zϒ1'Or?$O~Ly- ?s5LH͉ $g>WvTO,=[nv5dZGNBvduz.'g/w>d\U[ya}BoA?7ɭ~H=cO#{^7M2M r!^V>ݕ<=FnFyzCICrt5ֲ>\V:=٥1,_WPr*}g2:4qBph.!qW$o~Kn{<b!8BYA!Zs`,դ}auhn[( ?f 9\tEng{oi`# WYȶ"<,>Kټ,d| ƅBa_X'_'_n/@9CO? ƅB! k|&.c۩%!g{yn 9/{}1?E ƅB蠱Zv$wUW}oRY:ˡYUuƁ_k'+4] 1>,#~% `\(>jJ**w 7ʹR:֨si 9̉jsYdݡ̞P(2K})yt! t0N8rY$.s8[VB.(zq]] ӹqPQ:9k Fw&Gg6Bh$.B~X \9fJGwF`\(~.e}v)/>>8-wM Pm/D"8>@ =F6^OB'>mb";ݧ;ƛ<~IPkbFA͜!K9xS+A/^ 0ūnB09!qN<=^2aP^`/4;n`}JNw*NJU0. ?+Neuz.^^F67yzlj<.OܙJ X9LV'2Owxr!sY^J+ _N>9ə0U690It@ xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:F27B0AFEA44C11E89989E349EE0BA3C4 xmp.iid:3a437213-af87-3e4e-89b6-e09f1b7a5b89 xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:4bf6ba38-75d5-5249-b337-2140214f613c 2018-08-20T15:45:31+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:3a437213-af87-3e4e-89b6-e09f1b7a5b89 2018-08-29T17:31:10+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:21:49+08:00 2018-08-29T17:31:10+08:00 2018-08-29T17:31:10+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 mV{ cHRMz%u0`:o_FWIDATxٶ,ɑ%Vs]]Z|;_!C?ȵ]w:L"v"U5BFĽ`*cŊ+V9"/DDο͈"2LDF _ߟ>3?~' 7D yO!u>;%_\kגN׈ ّz{'vwК쮦kn׊>k'}ž Rݗ3R][3uCw}Oy&oŞ.ݮqz7Dvk {yn)Z< S;ϰi0_ުcc{  m~dny8oZfKدjCߝ] M]zw_y]q'~8l?ys;9r8y_IJo!?y?|=öN0ߙϥ r5 V~@E z~bޗ5"~@kWZX WAvZ iE[n[`nk~3"#a!τyQޘozB1oeMd^?WD~U?Gow}A<,/:!4ϰ%H]M=ųbB?Q}y!󈢯-릜{mzYо٤ 7Ey| .ؾ%mSw>.-*$!毅ļ;r` roӧڞ9A&C9)bV4rz=/H"T <8]'OmBwo.6ߟCZ x|A״)C6[H{.M)vo^`[ӹMh0AJ\K0޳~_fMMR @HNiB=3KEOS=.:wGʨG4Ls_̾y0g$x!ji'QlO̲xSZw9[;piJe e)[/B{VDyaONdF}vv@Jn5Cp2*6dp{)rrAs}# d 2K9 Z2Q4BlWʺM 3`U`f>A4|kN$3"I ָ0`Wl{=r/3>˽RWRXf؟'zIKO@PHEfq>uIS3jb2ԃ;~m>e:p-.pO `Byxam!mСo2f7p)ZГ (hנeW̄I9uOf_ʀ Bp_Cg{;,Slkoy*D՗JCuU1X^KY27Z]Ӈ̌(`f̓MN,=kiAmH=9P;İ,lfY}i /|l葱 F k)=[!63ڃnCwgBd3!lFcyd'*ղt`0=ګ3S9?;MDx%{(y ba]\׸~i SVdil Q ͚uf~=mMm k ioٲKJfiy9K:lAƼGo46Ԑ|7ԋD5@gV5mDn[/-^׈̸n( ~0nс1Ncޠ]tIT65?ʔ3~{:^FZ~]?)ꈵy_tGs?6|7IL;5n־qM`vQ0ր^F 5|Ets4kΛ1lkJ2fpSԁi $c~3nHJr߄=>v&퇮K\_"/^^!mG׌筏~ۘϧs=4hgaީܯ#z7̷˞X~yr@4;3 $r qTǔ\$" -$r$e!~Hd(),LWE2pGͧp{+l{(uuj >` wpwEC&*sRړoR2CԒckJV^b}8ADVDLX^s g#j9"3/#NsN8=<'TwqC_)t`vi;F7aro]h7r= :SԲ[{ ngrLق.CWH@aM*%Yiiy^{íL63Sk5RzACowvL iAT.٤I>9Ӷ%[_z ދjzL}\pÇ}!,>-pF]} ydH&`-qN͝?^j\_K,^Q" `[hyMY5.AccLy(c$ay?q-r*Y'p"{ ]_?k?`R4T;3D-L$ [D¤3WK"Bh:{MoAaMedÆB6ⴽ_r}{7K2S!Nw)7}$ ?+j8л*NCÜ! iiZЏ$gҳC.}0g@7`]&S6$_C5&l۠J r"Tw3,Ϩ3ۄ}`늦Cdj⒖|zOӰ~\+HF^4QWE oLl{oz.E]Oq\*F1\Kuf@􁈼d<=}n-6x@什5/|yysJ ` C+F:vŏERXϢQS{MU=D]~&w Jt:2u9RWNV"Deߘp~Ü=ľI8[0+R͖﹃Ҧ&yu xFlcP 3g? N5iq#t(Ak^8yCV) ۜh$^2|iK=zǯUPi3tifFC4W@m, ~6"~P_f0'ltxzDI!}SMҁ ㅻq<3}h #7(늁Lf Ҁ94,pc{&-t0ܯEj.kotmteRg8☎+[DA=2,DBvD7Z S%$=k[ ~2|2uIFS4ۉ:@5吚 e i%֚jϢ)ؓ6e[_ 0Gr*">l9F?}ye~[, ,rNyVFCCY.٪(-/M\\ϳgglln2lF:!%CfnٗKm`Md4^Vl:`i>@j[ Nom@D@3@Ӈ3fc6ШFnҗJI%ZJ )BqԯI8ToCv ( 3uf쫷Qga3ֵr=cIO*NLzTȰWn^<"3K4<*Kb%8\~75aWuF{vV2߳SOwU1d&*'H&݄%K5n+v:|ש;,˺5R~’y`Af/OOq~x[*f8Vfp1 U^g$Cm 5ul Q*m  W2LH,iv[lm{J˪ ^c@(81g^/І QLs.. QrOZkӡaG)Uo,6ypEA謪lv{3"ՔD'ϊ*WG| G"24 dZ,]rl33EPoa~9NstG&[Ѩ~gdr naڸyط4F|p 2+(Ej-=3:t!&{HI;"xY>r6,琯詴kz':W;eWu/;*촺E";d\Rj*$SYx2ߔvaz]#).τWT-Cۧ=SHϤԉvN" Ylv]ե:IF3F#)./O:* `0-%oF },ߊנS5RyϞ&Wk8t4d-N5#~W(HMĠShD("=I rU2e W6 UCQZVF̷m\2vybdu-K Z~Z^/׈qBCNIY,\]/IᥡܑӐqtnΕ u*>_" !hU^iV6ryw3Py/Rޫ=8Kry˗Kٴ^R|ِ;bS:pk-obT)p.N5}~Sԇ! AIa}2\\Ea{Qtm+ aGge0!ߓ'KonՍKxzZ^mC.r؎;m?>t2vD{L'VdHكNA8Zìs]3jYE-5M6 :n3^k<}o?i(h8a7Wd; t.xW^w55tY1V9;m@A29SxPXk|s&$h=N+S}{_e--YjU Fa_P L5:44)0(Pt^͛Wr a0lx|S|~*y+xx Za z6 ePp p[ AM刞ًoT6ZALBAdׯ7CuHe"E_12?ϧU\==bw+ ]5TOxU)QYHuq#{ 4/xAPUe.})Y"[1H1˗/ cnILex7X&Ag4a$]f oT/0M6Ta枵?J# DL/x~z_cȃػ6PZ5ZIC;N KfOQ3il-Ae(!j?Y_ w{JyJS b0 $0w*Ϗ_obR66A艻Í&FwG7ؾ(^fc._"/W6Jj$4 dd߯U+,(c\Gx2&6˴Qʙ207jԡr^6TVB$JH' :FS.U =<LJOsilr+L c/p͌xM'ɦtZxFQzޚqU"CFCO-NQ&j -H. kZ 'o]hDZpnc :e2՟GQjm_#K'iCL{K,hp 2WS} ;Cv(kCNq$&3"^Nһ(_W!uSt N&)2IH8=B>2f<^ROf/MI~fhgP 8:X^**~#|ky&Z%жpVoUPFY'dznNy;-so FMG;蔉$ 4BR1 / 4v3JDWOj*2ѳldX}S/J@ C }E {bXs}9lXcAi~e{!71Y[V;z]B5q8Z ШbL_/Oq~YQGLimj# mIH9ih](eTĈ솜tiZRrBVRgvf"C3vL8vnv4!Fp?O󐍗V] hw'/{|y~ \IV_aWkp!Ph{ /O^؈RЈA(9ES;06yI(m8P\ƬBm$SYHT9z;:쪜8FP؈s50(xYH%feQDdC7N: iFӈD Fu"PZ^D&mg%ndCuYώ[WYہ.2)@e^k^o %Co`M?O"fp+22z0^gxdSl灧?\4\ Nq1~fv- [.<:afmߠJګp>;z 'R Tz}c1Mq KtmZ &h8c>k ݂9Â6 )ՂM%P{jZU4Ha\e_+X]qHf_}f" uև:ZMҼDaHn+ufFhl6Ȧcxs$mT7>"!#뚰4E#dEQ*jdDi;FJ+jޘ^rDO|gGuդLC!B:'8*S2m6 @Oq>?jvϐiH2^L:>l6mo :y۰+ӑ1̼' Y(Fw]4YDm sXģ ʗ:R Fxn>n"Kf\Q]GfƞbTީ<:ta! SXC8 ƕB(bX+̓tΗ2]U/:C[!w9Knh[#o2JVߩ!2I"۟A5p3 \o`{oELj>i=: euN-șI2{(Zfm152wL1Ze>S VbN8r~F'e ^"G:K=G+HA/ͿB^66P;~Gٳ)9Doh:_YMVL7ö2;$ѼƥlbJ7ȄΙ_o+ٷl~\udiw3Mam,]Kզl49@%  ?~ۢc߼ƎU4PI\%Bq|Ð P 9 ѐpSxсcBa.xyz\_zO/A!h|l;6GyGTՆX*؇^j9(aÅD_{YP+!sla^"ui>-p^D9@KwgQ0p#US4eEDBR8I'jxl0yº)dv*uN¯}L}=& c5St.ތe9]fiKښ|fƛwo3p~|A G`КbRI69;;{fҸt5Ļ}֛ۀ9CO7n}>r|_ ?)dl!bKF>tC{`|+u[{XQ5fr;lvUị̌7Bg񅫭j`x[ۡU㫲 *pPZ5}+A2jXGjy.76[@POR{\BqP$ʐ76)߹Wzai]4m}\FPS9;˚DGAg TuP`i5< &)P>ok\$2YC Я=ҙ0e&MxSWJf&EjJb*seKj$ CzALfC@zOav׼ĉ>tT+`CкQQÌsz(t6]6QDKeP*e3sN$J̯ V3r8ۉ۟'I5Z^óc{bp;':o (";Y6)h 4ND2i9dHa4ҷs@vd*ƆyEzi4QX|@4xVqr̀G\^*X.zaD#д'Bfbu'2R TBZOV^Ce+6m(wɑnK$|`{PVÚᆓ(42 v OFf%6_Oxsx~ zt|o۷8Υ&8xT$-KӾ2h[#ј"̰̏:neR ӕj Qwa"ȁzR1ތa!J2*]h[o'k hLi[(30noqxWyz+AF\x?!}.>|]}>vY&b `J?G.Π<}TdFRF7h@S] ]B%`W}K&mOѠޭ4]SB'fBȼmQ;Kgɖ']4tK0%km-NUbC hQQ6MAsj [RAR,U$/]rݩ^5\ p%/iKRKvA"zF)ۃoS{s|c\//ɸ"nCs|?|7 Ng89Q2ޕ"\ոx{QNy}8&a)`E4TowYTQ0;PEfo_rK\7o'@1ptG$@^%QĄ@maO6\+F7"dNݢVN#2v憆 ٧$ɂMw  0 M}5rD^J@2*r!yyX(-LOFnЖJ %XRSc2$$EedH e٫%ZhTۚ˽4z~~d\3".K燷1FZ쁼2i59ͩ2P+x_1:vw^ۡeMvJu^nK(bk\wO}cvF[+P #[b4 ]hnAɢ@qbArTsRJ' K??y\/w3#ǟ>a[A}}z.]SL"([ J?6>UW׾)gzl[.US-':Wf績\͛t(PE|xY꽲|bIth/s@WeefnåfUYfJF2gphH{%̟7dR=?㿍3 |FzkpdD*%ͱw|?)>})~o 3W&aX|H;B_(*nS/tMþ>wmd`Wl;K@LcŅC5CG<ݓJQ6] .Ua$Pify[8Υ/BׂAEsH=KsjJq:7Q{g f$72`2,Q$&vQ0>4I9}ʶづ#C`E6tOwLPXY&Ţ8Tkf.>W *niYh(sR ʦ 8y؟A6gpܪib;m8fUGE/ZشaomOn)LZ%~r_lem(e ZS@׸Lt}6My8"`.D6)(Aev7[e N:%yRKV;rcV]J| }~` O7x M8 ٴvEDY Fgu)*ZwDEw&?)oMeוf(7H%m{w/?] hc"]j0cpUoƌdfF IX!35(#&0cV1{{*9ʨYg]^^njpj'WfaS4XՌ2ZwK J4^LK?5T!M> a#GƲuΈVXE ~dVu[`Ĩ<h!u6!kuJV=iWfS FC}^vP~~?Fp1uٝj{5NvG@0qE2 |]9M!Nd˘vtcϽ)I|X7E[ Tl˒h 7)uNLm׌ǯ`z'=hR'*b,Żzc}Μ(Ҭb: bڛوAٴL9iCtJ23MEQI Qi0҆2I5zT3EEk`ڬ EFLS&= wY?AqX3dRӐ?MwfYns߁c4â9CsE?9~Cry`{ZV?ׯ{Qk9$[*sYgNx(l'cg!zƖs!>|ZE4-w-%OTd(d@-1Eea 4i3T'ʬ՞ӟ~B7oQń ֛7D_]s`x>][~zhZWOhդڬ%ཻ0+ũ)tMK[a]ބ|Ǜ"|Dc!o@6Aنǀ;ȴ8 ӛL8A :QdS͕"*[̘ ?C["FR` ʦ3׬.R@p( T[,p0ŷ&} O~߸c%oMe?B[,?ρy{ MG̟7yUP{6gsYCons%_;xy{c n7<#ܢ 6Aa[)+= LzMLe3M\/6aĸ3l629]ɢSw>3\sA.q,VYNR'7ְ5"E)>6P# #-aweŽ(GՄxyag;'cĘ90|nz{^:IxPrS'nc ~1N8o߼7 ;#!/ȌZ Of"v&}~1RZF g^x<#z8PP]f~֐WUϸbԳmިC7nE{ q͌ˆn qhW(Vl0GɜenjҪ"ݩ}y1gY!`ЛT 6$-# " P+\21a] >vᳲ5>DWLq6Ɂ)*5#30e4LA-MDf̃">LjDD.:liɐ,5w?%fL.:,S\wBR)zzJNΕ.qήzuty~?ooVҵOFo &5W7ʹ2Y NLo ]:QjަP t Ϣ\k-or28bwuKV;fDG2:5'[h$$ZJT0AeR)ى㦹 8W=U/ܤB&ˉu <Đd1|AVs 7"GAjý GB;_5Ief̫4 M%ܷnŗ?O?76jfݸ^݃@ji I!5h*FvC j~2X."f4ى[!KC5e83IiFei/sfҙșE.<r!urm|{}aR-app0GSNd)ؗf+PtGq\aq=c6n?xHwdon/Lp}`3“v^t~CqqF:\6Tki#sô&IJ[EmRJDwzV<6⩮+8ChqҸg*xWuDۉIŞ%rXYddTS%:ybn Ƽ687ɩ^)!SNJ'#ܙABQcdOSNgsȐL^AI4BUmd1<Ѭ9\:XwGH5RZ25Agd__3<3NzF 0Z64(W_,ax68 |3L3LLq֤LrCRv<mFu!-郇CSO6V()P1ȔKT8\:)===sӿ}mF+>i rʹT$'d)Nvܰ!ZB6[r0q*rHKrkƘޙҘ ,z4YioϐCHs_;ٿlH>t25u&l =W`.aķՋިq@Bj 22$a9ZxyQTPwnB@Kq`? M~pQmm#NrE6fmk49fۉr],=r`11iVry^^n\^W R3d/cj|ӬGSqUg68‹_1~Wd/xaŹD!Yl,]Ŝ Nڌ78M4O)G 8@ kq̾a&BQms紓Px++"nk{Բ BUh-8NQ#w=9ΊfApcER/hqƾ6u2,?CC-Vh܃i ])d8cd*lY<㾽<]`]Jה&&2I(Gy 6xj.!(;lP@C^0'MTtIF/S|xݤR6ԎR(_hD0nQ˛L8~#jysG0&Eޣ V=T2pҜk~%n=KWdec{G٤t]+SPan)5e1b" m%aПY-&;`bbfėOob"9)pDSśY < Tx!~]Ф0$$1K]  |uf!zn[0>A/e5pMr +q01~?>;}ak] =!=s`:<Nj&>pFeC]t}uw\k<>>S$98G/Por-uLgۣ nK~*C6( D|2ԛ_~oBIܿCT8`vwƎ}4ڂxI%-T`Eto>XΔܘauC4{dKߝY?+s-w7#g4̯&Wz 56ۿo+ R> d˶3G[j V-~C{(e&O (t|yz_>ׯAE}Ra9nPmmpM"x#ޯ ՔufTܳbE=-Ĥlϻ!k|T+-Ks$IftnR ̡~Ǡ5nZ.1K=H`wۦe> 7fŨ@mSE-* -]F 22 7~@eHc[?:@ٌQ7},1{vMH̒ /,9Æ>6cy^ǟklj` ^9]z$L;iOSCqnYH\Ֆ Cq} 9tt;F# Ôнz|oN{ʒ`Lj֫ܮVV(nL\T6NiFgwwIw*݌^@+5w'l6p乫9Ή2C*U?nt`kH6.D1ɥ[;@D"?T( y PWb Uݮ8?-nO_zІ0Gzhn%] Y&51c51HCWD> yv]whP[7_Se&c:+2` m`,kmkA|P0Y;]Cl@݃'@~XElSlˁRMZdwԄUϧK<g测+83gAЮZ,U9PI#3;]9TÔ;" @$Ti~rywxIBj3L_ǫUVN>3q6lL'W !RЬb[CoًAy-[(}ݲ{7 InplHʌp72 r8 I< E'&wIcy 7(0zNH@ڶA'3 g"_aUdgvƱ"Ύ~.gTvj#0ʩdaglz00t݈ 1A@dr Q~_/Br$jɫn%R6LClb4IG)H\͐WMUv3ZT_>Y19YMp_`^i! riǹӌԢIO4\` FN =f2';ӢCD^={[?5;h%`yŎ^Th6P6w!މHn6ĴL"0Ԣ Gŵݹ9o0=T+;ђǮY "wXaxϒ - R CqCf(zQg7,0ȤAT2{W KD^Ig;pҶAg4K}ؘ,%Gqj\OeyҖV @$wCFno܍ѲX8WH2"( 'vXz}r5>e'zL6Ĕu #4c}q|ˈM Q1vuM>m'Ԭ*Q?[zОtذHD2}m&%i! ´Ʉ[%w:O:*}3c> YZaڈMUKe[ R"H|qm vQ(Y<`R,0EL Y.S`Ykb )@"M.Ռ-Q r(AеMO<(fRpX XYWkƑjibk/UR&;6}{5ǙtGDSD [CY=EccОMcb' @xSlLs99GzJmDTf#ֿHoGiR0)-mlJI(n@wwDIlhiIBATdC ܇g` x%o1j3SM/^T)$0]׼ڿv衋Z7mJ!0$T"u{Qv~tf-Y~g{yy S*] Z]Ik۹Aa熤C24H5 CPᠥ)Yc:VԲ {18 B  %xQˌ2`ѤiUY~\ OG>3te:fb2h?C+IdTEu2$UлRy7[6 kzXFcj*wM ʔd`tY]ee\B4ٿge4NPY}dj9A RUpLʆBKy,rԢ0x% MEx3yL6@J(9rj4>K'V+ob'qlda+snmMT>*8 ")c#  !X굺^l1I< ^jvWgPϱ*L MOv^mon l'QʊlPdE4^q.kv9BR㰿fP%sJkܾ*. 1|Thgllb9A~ .$t̀nRi[ c7h%`aϲrЀtVkIe_3"=v(Q1`E>to~\e@aP:thၸ&)yӝ{H1WEGq?>.%h1SA.nZm4鬽fOX3$t}Jp"΢zm;XZuc171 m办qv}$gR)[,>[TA[Q6l42 ďd(:!$nPiQ˽H;"߇ KkhfX {~:Qi # R{sdb ԩ> o\7BfƲPUbRC BЙDt#OP`J*"o1B,mj-! ܫpdنt.P=c&ɨ3 Kb0UBH Z([yE>k,Z%yAd4)V!먎TSeԎ (7a EmڧMAjAZUdaWSgƷ٠<>K@pg櫛T<a8]pcݢ8'lRAdDOe6M1-Z0Jrlo{( B U^@55)vj^65ŽHJJQW80U.jm]lI~ho蠮3foU}xW-{aD/ -Ʀwanf9 # M^2 ̒vP99{de8DG.l3 %pd^,^Е l3 EAzu(UpZUVOF1)~C&;ha4jb[Eֵo2UU5ONS\jC0Սeju (`5'$ڶ+&uP+t6ԡ=7ÉMqܰ ̏Mw*\ɞ;"Og}nLQyfl0tHDX[HըY1w r,G83e6v7+vivq Áˠ?C*-܆?k$ W)~#hW æktB[yD:OZx_';R?O TM;QQ:ք 6g~]ٯ5ex;5잘駱+pxHe~)$@NO9ҮSˤW6 5ēEv]qmD]S+͡\/"P |U7J;WRhӁ>l ^(cufRN]͢.I?ߠj*EePMQ>%0VX6\D9a2B 4YWj[鮦a~;YU^θ V Ʒ,1 Ѥ5N2uں9Nq\$VT&B 9l8uL6OAw$ &8JqN՚B-EoYqt3 PvmF;X aC&TtжHw2f(A6A^搗l1'ܪŹ?bƅȬvHᚵyg {$#eқd臇;ʊ fb#UY oSUV :Tj_URbëYWΝ:b*)mlU`~UHu i0; bLG(fF2sIyQ $;~t*Hw0|>$z*:I#?/#5IS#W8:AdR-}503lNP!z!A>Y Ob ؝Ftғԝ5'MCq`o7)S p wm2U a'Syj%h3ŲcwOȼD^iL7u*P(4 /8}qB䕱Cb2,B~-ctp#qvAMM4V\4t9[.2Iev N+bx+F]tto =sCȀV$d]F:;l`])}p Ua/A+ 폂]G;#u%~c04"g>U|7XP]8j8m5Z&X7{eu85'Z+AhrfA"5yx""NmSܝJv5;W3A97Be);:$=$(&CC 2B=G rBWOhivaUS^OЊu]|lzdz_0@L)٤<5G2MO/¤b8$f{k"H$}nhCz(^@1=Ku>†^2јQ El6b3##i0nr@pNȢR c'FD)T<փP%Up3-ND<Rz8WrHN=(N{OβŔC kyd#A%mDtZ%#p&FO'Ct0$؉>?ցc=:paƴ"Axܟk@?4Lͅӆ3 pi"sHew Cx%0F85[q7;//P.-L6Yd .؍nGe0b 4"h;K(X&i6vUS\zo l/< 7fǝ%+AԼJ!`3By&ٍ֧gSm§27$J;6=3P$ykm `ӼŎ tV(gh[J< !m{ixJb۱[s0x9|"kۥ:ha{3mk >}E'#lܱ[dU)qN:t]h;LL{_##o sU0q\B ard7hsO2L< qJamkXÇ|:Q~nkhFXq@=U:ƋjM< U֦dWP)a24[?PPX&IjwF̊lFY\ %U 񖔨{SH{b:d4PIEy g5}S!2{]$RGt|Fi(rBgmQOhP2`y'r8+12Pu9XRkӫPG%=yiF +KÎ, 1Z"D! Ph79ZCNJŲ5$+ Pa}[`ca̯Ѐ\c1ڐ!,$k@?K=; oUKVwj6=Th0{TҠrO/%p(BY -D R3-#] w:KS1]&ә є.H5ieV|Un8"<5.532qDfh}ǴЁT&F¸oeB`BT +ʄ)Lf|ҫGbͶaf:@U(O{NAkAF 8j[ig w3=n'/YAf<2L\$6'Sk3t˳]e# MI}̳XMV65,;M+SP3:-`M:!zcݭ&ۼDM39:'7U jo,K25>Q`^)FU!mg✇1eާZ cOdSdذ{ғԶܫO!i5rƬ(~xQ!E7 3yٻ:sfe(nѴlFXTЈi#Q4N!׸qf)mP(( uj*gVS@2CQ5/DIOݐmo|̺yyP)ihT@d}զ1d8eӴ![DށbpVhJGo?Set?\n)yɚC+{%Ð%F~Icԡd]Hgd*ܣ)ΕJMF_nZ @v% 7]&l9G5ѻB=w5Y )dP$9V,31űe$!T2I1NE3l8ivPVCukl ׸BJJW1Ylu1& q Aζ /⎥O: RZ85R*HH y#5ƸaJhȋ޲g!nJ{]&r/^t%o-_4lxR}nQ]F9#*an5;;9zƮ`א>2k=KC6DIP&h%SF[sp\="ZJFˬStYpDeEf͚ XT*2& 7j”"QzA[<Z; TQX$m>cb{f)( yo"ɕ &ӪPX3ŦɇpfCDsȬ\>gn VV=u}h2TqҶ'̺>Y%!k/y&fcߥB\- ͰO F~:2$DH0nNq^N BQ[ÛP& BHK?'=M$˃3Aj5"y,Ꮾ7 !#;k1AJԒFZ~l֕g}f/<1 &!gC:t', !D{˩oh=]]p)cJh%) h,=RZ= سT2WyoWsͣR =7v'j.UY܇h(UH> v ,6ld` 2A_$-V 0r[pAwuE HnXpDisGcz ڣ";}"^J+7Q6ZqF7:>5;3 Ɉ'/;FR!t0<i/}foz jq 1grXu7X%[F;%rAnF3qnzMrZYUfM&ҋSvu\)Uei>e %҆ xq`7Gc'oA6#ߨ-iZAIfN k!^w PUg-T 2b rD6:&Q r3n"[AMk\fPy5v/B4=zhFYs*}*ڒ2Z;#& :+1ITI K{ECi@ u@pCR9f6\c+g"A*!)zog`,Pne8Қ+XVvAYi!Pp>4(YQtC*aTtC:0 T7:4C"J~h䦠A%EM{&l,o'a=!v+MlA r߹[iҫu]$yl"Gգ<_iP9M(yɫW0}F>θ=(fӈ/*u4Cd7"6>l M𼷝7;*ٷ,mqo#wA?å0ʗR-alCF6AM7 +{.z L"TGMMz(u6d5[zXhqň{3i;L k6߿!<U[%*dAݻd= `}mWS, 0t_eRq's67T|vw!ᅮ@ׂ^k-Q&PGTw'ɺ#pS‚ֹzn ]L jIfKI?$$!r}ڲKV"U]î+̭[DuPy ų~Þto'dR!W9;3x/aU;眎a0_9IҝDKhi2kM!N=,FezJW~ʊIBj"jp5Bs)z NJ9/T_15HS࡛ҧYo!OzBjfkEtD4~vQFr[@!M90Uώ:qyN@8Jo)`h 4J^FX+7/4KԫR!z N@!]#kN53;LЌY w}Q&"jUd^,+(Tv2H EhNةI4{f-t/{l=o dJit !E=#A\$%IURt5erBofħc(Ri% hؾ+MCz\I'Ove0s!:p)#ĒP]XhK &Gv@v땰0&iPdw\gӜޒ-R&`4b527P?oڞ\Ot@a&L:yFwwr+QFV:I1!IpujLi_TިaRn&zdvl{%ATC,0bY[b,wQ{0dT%М!7OR wb44! uh"h*va$^=/;Źˡa[:WKmj F8j|r-0 2 18 haAa!Mn M~z_P9n|*Mu/b dF/q4(9gp۪qѸ$0AJ-K$CP˭$p@)皒 >2nq}hXoaYekqBAߗ`>dE:Õrt4PAc0KgF+P:N!@P2@p xWؠ@ӚS*rm 55vE;A'}fI$/RTr> R-jJa9a]ݐag] kȏTtwEV;$WJ4 XkV2گ0 h8=B]0HKej!3;~P&e4#k3KQԨ?;-C*MึWEJ=3܁J)TED&\q\fL`vC}ҹ4g>8P3CUָh31`g54“ZY>y3 9 ĉ{p4``yF'V@#0O035\fl5U9Ua8٩$eЈ߿CB6 k2s<f\,dҬW/N̢]ɊwJĬD2%)U}k\ND&gɔ1d>y* v,ʂfQItCY/JΔP?pɬ-ƢԇqUE)f!Z)ܞz>+ʉ]?# Ga@: @ƻ@Ȉbt X#{ӕSv&Kܳ/R{jW_nٙS; u r@q{5LX s k6ضA>CYt8 = k߇3FU:J+|`(eMB^9o-_c8cqLjK n`H'm wmޙlp,~sSeJʊpJQrC6wj>֥L<):*O9AQ< M}FM5g|Qc7XqUQf2ײf"l. Q4 Dgi~ѱ5 E*yAZ%,Sd4sgOb. ?WaV6KfGsWWm=Ԝ`0ҫ/u8GC0(k5:4h+g{{bX E2d}O:[NdZ5h/ b u2ZCrT-pY\H$qh"E&l>D0Z>$s! >Wa8P+jx;1ahsn0rifTC@]ӽWC̲$#* }t1FTƒY$21P@Z`PfBM`p$A^ =&SB#_0)(!Pd:łNL%yBӴ}pȠ*٢u}UVfF ۀ0WP]&u  U|[$T1&iQ)QV TOi͐SK6mې]5wZkldT}X5˝]!GZΡff,(1Қ+*eՂJ : G.))A:5t}KdU_R_Nk1oq$ ̅&qpٳup>Z%3O{~D@[ !j[d#JPxDqĒC;b8ZtɜW@anX_&ޑ`5p EU kD7UvjP1$ٲ}`ǝ+ 42ⰌX-R]6Q]Q*i9k5zb$((Jfa}o3V#SZmh,1<(WC]*39ѵpf 3M ̓X78]7zrS !Udn¾[=wr6 dcL3I`Pl5Q` x%4ELS@[ғw>9L!ij'IʖF.H3-S s7 -Qh"+U@H-=ZO~6bCQVD0ijʕ4XS1Q%W2,=8EL0v}bC7rDFC"!]7bk8P`Z ^dd֌ jGsng4ОELJVluL WQ=RjM,uKVWY@ɃAv >j,i˸bgE@SZnzCȊFvC);ɝ`M)'P lb+fQP,TLK𴷚ki0I w``q%o' )(Eb}juay˥dzJ:rND{;9i.B>czI6ImfjY:Q"@PgU#}iS'W 5; ,L; Rᔙ5F,{?C=ሌ=@ۢI@VoY p@hʢ:n_j ԯB`e'&*ÜWmD#X)hn Rt{@\̕٬2p}QJ8ggau6,+Xwm4|2,k>Xnp;b=#* ռJyo0=W|Yub؆zlk:@t.a5'h-evT%lis e>ϰD`&9cmRӡCEm f S\K`+ gh r)|OXV*%)%wue\rFa~VeBo=xjdcH)>04kid3 Kr2\-٩#w:[d7omKmY0zˉhˆHôBHx'AVSlB6nl i*l5ɱ9QGYQDžia 3!L?1l$}oyFʸ4cELA`7Oq#36;zp|/h-F4A41y`,z㖞ȓA]yH9z(m{Ȉ,sòT8=j!z`QqnI־? bcFA}D} 4 ZrF@6Rp0$FǬxkQMphe J^*щ[h8| +10ϼ3ss]O$H #,n\,ipUt~Rd!$D >' X8}LfKlmm!Ȑc =b2)1i+gt3f͊iDcZp3S7DA:w]Ӣg# =uYL.g&հ`&)KCm ]hi_C R'@M=> 4G- wOK8dS+R cqEPQ ͜X;iwhVg9iߔ )<>䧏tMIWlvnxq,B^1fjxuۡP i;:"lPmT*>pUf]XJz vjj]^X6Bz @کP蔠 {^ 806~evC3Nhj>]2J3G>L䕽T%,qvO"j1}V60V'gTC1~!2w3P{,O#A7 !?+(?,،AuЧ`TKi!\NaBwź >ߋ5`p081L\" ܔܴ!dY)d ^;q` 8R(zXe@ÿՓ{08F ƈV=FȩhF1*M*:/^VdFd7d1#J4*Y"̌m "ƨ?w0̢-ig$FXXefu4L!ѕ3=hR֒A;DVB9am㰒}t-%7>Z2 8aC3J۵<$=AG׆93Q"31d^N.af95C`TՊ`- Lu %YV-),VTl>.4܆f[I҄VdQx&36e b5+7Вq{qcI#"^JL,e3ze@#1tj},lSjWBe \De8Xբ԰ѵܢY~$HOQAYo,f>v['.&L!h֌OM3 ދz3 \)h@pHόhXetNB`ĕUiH)BL:Y!Y $[afX~:A9lܞY*ou6- Q6yQuϾGYawvw 7Ftd͠3Bͬql#k e~^ar+gꙗ2f]U67i4+4C&\@fakcS9p[&h_[Q#˂at#9znaH``-z!:1kSYO*&+HÅ]v3$A孲 |mU6ÆaCI6+Xh-|C΂-q(wLgVFqWσ 43B5ʭDZJpf1HÆ **i`nWJ'M43jtBEŔEj6+k?ѕ}SXb5$w UҔSbԼ{4@mD5L2lPiZ}PW7r茲~+}CРBP^h僡̀95AvT[Nc_AQ֨W=yPF~ TVC@YB,=E{grѲB8k%U;p?әs0Qp.Q+u'FcGiW!1^Wd`wʀ?5j,bsRuuQZ2$o`lgW=BNŔG}1rF-0:!$![Q@F/ICFN3&C)bvPXTN>4gcWK>FRe5o`^d,j J 'kDTqfot0MXvrvE[IL?+ʤdlNIwՁᔾT(1ymŴhi{v@o[vy!ExNY@HV̰8~f&ξV+"PP(Q9ÔeJwD"$u3>;a,r Vn %*}d2B74hCP?20?~޻dw*İ{xW191DyF)^~Y i%nxj'szq"̤pk4ΨOɱr6kX[*;6kcT]EjXweu+b¦x?0f;I>Ky嵻*--.U̷sŞ,Ҽ5tmalisQ/AJ&p~LyM4A~qL|װ> R6Uaz;O fBI IhQ]mIl4gS iG+ρ8R2(\pRCe迓p<ަf~^lcpˀ`*\$dAT9lr1 ېljQ:W9@m4Qq@ɽB:(*M8%7@=cWٰbw~@,T!쀾gfnpEW׾:iD]磻hݰszއe#L6:(=670obbڝ%sZ#I0)~JfInABJuiËf4ͳª߁6ҙVIl@ʖ)9^5M$i4㊇Ym{uf>u0.WUG$h4C'e&bDEG,#Gb7;K$"H4]lf, lbuWE5pi=+R^9g#:x=1f,P5RIdTg+e(!sPV׹6h&Ay?%v]Cas+2VyO؃C`w;>yvvz\p@۲vaiPeҳg.0~V>di<^i5]xx|8vcv0:V|qP~F o}!ooCa4PN7:pEd 2*n { =8,o&3svT#u՛tluW;fQep l3 I 4 ;^t6W_01p,&{9.޳; Ih,E -!kѝ|EJE/W1Q-ӓ ,Ё5W$jFk(!6Z(9e[j'dXg>&VP w - wM n#81x!̸9p® R %󍽬IQ[4iè5DLx%SŒG;/1&F>ng;g߻g"qpEmf |VMeXEҀ =B,莬?"3I?DwRi\)O*Ԓ2K眫ܲ!RTv1&$lIC"!C59E@u[]nw(Nuqu7 P?cV;RaU]GBUp0"no hܗ#iyA+K5dD.bLc=r6>vWx3:$]ݮj(gY";g5eצ@Un,nc/FcPA7::/kH~S!n`>q#)m:8miBL"#c9kxszKf\9Ai+6,. K/3>93,1;-$]nIYImؤr(ժA0(8p a2ӣ%T/=IorFj8R>DJ(f?|+K_| XqMҤo3;R7l2s%I{fLMbs3FF՝qm^Yq%z\_ WST>cԶ,-9eDtC#0fZҐ6M ^D4Nq>ct{1Ƹ^*SWvF= AES3d4s^o?w\#3rr߸/׸\g׈ufA伫XUs%Jհ )5z tCgWb،cH^ǾWpK G4𶂷MHϹx;1Tt)&|hi02 6^tNh3ŌV݅݀i}O+[?}{wLO&Q1 > Pz4|37[h2B+['2*5,0i7뫸79e[ q>6i|yytqޛfہg+e@ i8]M/k\z%r5^.Wm'q_ϟ㧏_;rV'is!ެgؽْ}du~n$DqS +% H?Beo42#Rz+`r)zRg`+@DmPimW=D+`{Lۆ{ː5eYdn[e}N2-PV kCr7Z7IURL0e(j:^7 (WPӈ)ޜOq>S8"<|:7}9~%>}y^&UuSʸT am7t25J'a=a̾KztV ޵CR乵Д<XfF߮ 3U,=Wο*HqX`7mEXُN#6=LHo&5԰vq(A=s8בvy`D"X4k5{C(&VFs[ ݜO#o'bÇmX6j. N"Q ,*ó\yNz~~>~I>N o9fo9Tk,PҬ Ph A0XLSԌxReAu`CGڳ8,X F@o 0zE=ÁNިVNGPG`!o?ūڶ]~u yPq:O+Muěs}sM֟}~>{_^>{#>>FJ|>~x|z>~RsZAoZBkHJI%-`4+:eW 02]JRaoS`4[VX/…84_ugg-(SPIny:e .eߟ3IuVj)]`g_haLun#r%< f8ϑ-F\^31[m}st>@hÿ8GZ՟ߓ_Lkxݷw?|5^vRy2Z;Ze67Oq tQ qԾ PK7wE3@hʂL;dē(Ov#Nq0D҃mDlDVovRI'B$Ʊs%5aS+$oStuCBe XJN㔁 |P9Fu \&`Wg6`8؀ pzrC#ֿoy~._^Oq\1fp Dt; Ƙ(YK.|cvE5T$&pwB0Ltӂ16]xCk6ѱ+C(q:k؊#|_CS֖8Mp8{0H4Vi7m=Żx!޽94ڝ2iXXAD&Cȿ7_hϡ4kh6$lq0$x.^Pv7*bJhn,]&u›)~|_㧏_GԒ3>SgfHd{Ol9<`)ehHODM A"X+qa^q{PBLf&?3q\NT4"i˄Z peZ}~q*;;J5p_(̘FA'e8he?!̥?ߧpW MD?OE2ol#+%i OF"3[:̓(saL쨊lGn.7h->FdKhx5,ύ C%߰H5vLyҌDBכs|xۀ rm,g4G?ϟz1:F0ifo*aM[uHpȥLC8e77ߢf j0FOx>Q"+q-Nki Bf~7m6MmևYӰ(I2 2dt>û7xp*ᑳ5ZGkvCC_0E;жj#KVno/̇ND]oG_"t2͸.Ik2%nPm7oo5>~z>˕FC6Nh9F~Z gi 6wԐk17ig4jtÈӸIP< Jzt};Ƅ)s Q\K4bBx44Nɦ? ԍԋ:oΆ2ćwoo͛"ʁhݰ$KY˕]fZǴq76-xPwPOBFm?"z& q4; "ӽ5!)2nÌC7ח)w|FIڙ>}0j|vmvg)3?YZȩ2~K̴ٕZ.dq>ogQwFVȔw6Nyf{}GdxشmO77SNq|$ 3^^czyɸ\o ϗK9T?>QA]oF;ӞB̊;y 75H׉H&v "ֽj_@*1g:s{웕o_}ݐ ~͌Ow9+MQ8\^[ 2±T!#843ꏸ1s\MN$gGĻw9޿{=M9ޑ7//_^ק9>}ۿyO/v LtqP$eMKW?sk.kym-בSW `+t5wt|yRT$y'chLyq(yE3l>z%×N4߾}ϗc| $> £~W6=ڟ*(F+ So*h6o~~x~ק[VvX QyUk$1CF"IOdӱ*y<=p&iָ҆c]c *- C.J9wH>4e @ 8G6`ǭ➭~~_&9V,iMݜx@poZpkK(!cc] JY=Jw46N1䝈r͒ЊJJa8_._7&ӿr1^^.m6GF3A`.E FaF Q=Fy섌vЮmu]9߽/oj6}kW,ӗ}x~įu%e_!'f̍9<@G^_^y?~U~*t:w1~m,lw,m5hJ҉nly#C vd?ځop?|!~ݻoWo5p>}go|>kW[ON7ZÒ{S\L6o1~X2+.|49|ʛ~0صܭe~x|zO_\/ِ]Dβ@q)4Łv.1"N80`~7q߿ެᅭؼ%?%~^>2+:_xW>/$!pWr;r>5!fv}p?Ŀ9ӱEk_y,BHEuro۷7マxۘ?y{¬o$| GQeB8߇q݇s?֎lc/ן?߆ayi&{7u0V3s~ yʴa`Ds6B,Ůi +ٌe{?.)??cN/Z3|]EA*N"]9~om*S\PSּl/w>ߙqFlrqm m9mccd:ozW}8$0&7ɓ9 U{ٌ0P:к6bd yq朤N=uUS~O/sqԪMT΅\1dXag2e1A,^æL秸\.eʠm6*?a"2CogwpǽX1ݛ?&]}w?S_?ϟgøF8:0 tWG8Y鴛Km{&XzHxvC#eXzqFPc֯yg7g@m'NcwU&k|%Qb)J xo,F~2Fp?޾woo.ޯڊ _^)O%:|tƿݦzykFqp!5/xyk3^bb?HLW⠭K-̳#~/m[~m+Vi \?eg]zb)v͆gQdvÁ G_ܵ?dx0CX+4Cq^uznb ƴ;$k>ql $3S~ccX+~|YzKxyQ|= = x% K]zF풡yfbŊicZ??Ə??~ N}&5=Бxm>:G/yq6W\~?=ϟU79&]:Ԭͦ+3tM;gVP>wg_k3^bx8vFD)>~__zuĺ\l,?;KN3*B7QًՊYwl rYX6+Voߜ9]?~mП>݅)c.BO6][}@^gjgIhYa﬈9<ćo⛻ڌWXHOcM>K|NJ@v_XԶDkÄ!gh,8!>Ӧm7b7xw<| fbŊ,.OG|7#M__nN{ƪު73V-NR]Brז;Z#<<Ļ7x!޽ydk3^bQoN=\O/|K<\/׸^oRk!ov,?|Mq:<;7 jk3^b5mKN){YkD}푶8FӸ$fbŊ&[ Su/9Ŋ+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXbm+VXbm+VX6+VX6+VX+VX+VxŊ+VxŊ+fbŊ+fbŊk3^bŊk3^bŊXbŊXbڌWXbڌWXg oB!K+330c0c330c0c30c330c0c330c0c330c0c330c0c330c0c330c0c330c0c330c0c0c330c0c3֘N-7 5]'ItIENDB`indicator-china-weather/res/background/weather-snow.png0000664000175000017500000021053213643503425022242 0ustar fengfengPNG  IHDRc( pHYs  ;tiTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:F66EB112A44C11E8B646F464366D40CA xmp.iid:2ce80433-af8a-a349-aef2-d7a23fb84168 xmp.iid:36d2f9e7-23c2-0346-b53e-8d2debbbc64e adobe:docid:photoshop:841b55ec-8b4c-11e8-8d6b-8369d642b3f1 saved xmp.iid:a3814c18-4f5d-4d47-b6ea-51dce1c918ec 2018-08-20T15:45:37+08:00 Adobe Photoshop CC 2017 (Windows) / saved xmp.iid:2ce80433-af8a-a349-aef2-d7a23fb84168 2018-08-29T17:31:18+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T10:21:59+08:00 2018-08-29T17:31:18+08:00 2018-08-29T17:31:18+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 355 552 \ cHRMz%u0`:o_F`IDATxKm[%6>=G$)Q%Lſ/$++-?+ K\HX8, $+" k9Zk}<22P|}Zk9?Zo ̿W"+W#OD9~S,3,c^GӮ )\}ϏGw|/^Oz]YSWDEo|xv۹ Z: x_=_NCo{}i6Ͻ>'Ku=5m6:qT |Î.6/~,ܛWkgҵ7\Tʵ]95YT"?ʼnf+aȏ~nP?nj=tgO^ޛґ]=Wk/x#!&B{w/rgd_A%'`u y[> DGP 08Xt-Zht~|lR4 BW\S@!GmgVQDݩF" Ъ{7_b |l8H)tgY ɉ$#ABþ E!Mf4#kFD&z @R<3JH{rg6sw4boOǝD:G1paWZjqKʷOq HEp@|utQp4;R%ާ=?SwOR^k ֩8rAj9Xw/τꩀ$:T B@p .*>9'drW{3;?LYAߐ/A ǂQ劝94֌*lOw}NkSF?K9MR:eeVδC.q-q1zSi=2k-迡{{/|,L"8RJ g f /F{Zww GM]_#MΤeypYh6WƑ$Cڦ8aHSN](b0J:.:wRv\|$wذ#&AlMfZIc854Dk9CȲ/1t!ڬtCsӯhJǦڑZR6]pR6:YL( ÎǼtNh4@c[ )脔5c[=>lx)%*; ?@F1P*qdIw#kӲKКCW΁W/כ]՚HJaCATD?,dyĜ{kk.-G4?+wD޷`#J0r;Je5ځM^b)^HRKG  Kg6; 6ݩ|m=,(h$xS8r?mAǔ od:JG]uO/k-OEev0[(-M>J!֒~K7smyL{nT54PaGJ&M#`܋{[ ]gAv'|ǠEr4Oy4;t|ߣ/t\quwT7952`xUR:;<> HiN|Ff.ca*/6niA5IܸWM[ѐTE̽K I*RJ5tϟ">-ל]$s_V=@|D/{@(sd\OT1<!mk:Kp:|tE s2 pK@cɗpA{XNv1ԂnE:E5'?àir@<ޔx{u*)\:!:A/uviwMdnh߳#'l2h֏#ZlGl= h,P] Q|p1ryiG~/E,(syZe(-  X(Q cÛji[ FbhJ$wgR!>z-n(00iAS)t:q@SpԂ>2t]prrZ^C禆 O@Ds" ?*# "`N(4KCa*!y$HU$'Ao*1}:L,$G*:@9h@0}H籛wjxs05˚&; mv;Fԫ&fl JӔ Ÿ0@) /g J.r4fD,Sy* 5JaD]jTxbSsvrKf< k΂? {=Xʎ٨YІ+!5#\ ^ I[Skɰ^Ioug ;{'jXj'E G5%0ӑ}Taaix{4oTv}x͚H RdD^ P0.)2j;RubV5ѴRlF TBAo8Uj(mBʹ:o@:W $DyF(ELs;ZS s !3S8q*VŮ_~d /!׻)ב5EɎЌ 8K*4m7,BzX!Jb!ӊhgL] D :ڈ{*@,vP6$\ +¢_&)%$A. S3MNm0갍u^@ evlU; f+e }?58iN#^%)J&9RY4dyc Ə NcJXeam8 (xuL.ǬX)g>Žܳ&]?yORӊ2z)W$Ҍ ]SQfjgUP9>*tO{d9Ϧ2Wa,֏_GAణdP.' ߲{/kfш~v-p ՕTT7O X h` #T<}A[Q҈Y 6z| UqDGQ\$g㈤h;OLf{uQ:m' 6ژ&q "BA~:^aIlrSgG0cƣx~7l0ܮ._p ک^赾3 y V{39h֝sp.e2>2-ڨкcejuxڟ} `Ŧv>m1&Sz36Oy/>_ɬs)] ܇kz`e gCzDjtY#TMe`P>c's Z1N$wP/:}G5 :S00D (B~`kRaĦDy{}1:Ϻ. eUQRjElDaA`L9%S q/[ {JJhvk_}5Q#Yhpܿuٞ~0e0sJ K.h&Tʅi-^DɒreoCB~9$̸Ύqp3u~m6iQ8(ɂLY=C4bJN/9?ñcClMAU];%:E?/wܖH)p益NG:@Srգkْ,\7!QDZHig(x6k.(F4g6ZQKWzoY\e5}_F2E17q$Zǝ)14C: a,єԠQ`4QwnLNkbԽcxd u"1RBS,Q<!nh0)_Pq]Zt }6y١WܽJV'PU!~pf)|R$n78-JzgID!-_r?Am5U'WROvQ(6QRBD7M4KU#X zoZ6 GYSr:",zrRewYla<B蓙r:+|80nNe ݍ4HxsKUiVf0@YYA{mfN종JCepEʥ0mɖHJzf+iJBKWv`0crgtiwІ=H;U"]-/1$ Ox=UK Y{"P({:LnYBPr.zK @:,}2 ^&"X }ǯwX7T86͵4$b25gMI.Cd*wk,AK}ϮlJs=\#$G^K?>A׽\I$"Yμs"^͜o5TtF l b\Es@?^rD.qVV *Fmi៫jjFCWPT R*%2k24}[*F\Gҳktыvba^j_(^PͲ]|Oh:{2Z3MS?z~?.vgqϼzxdf-+}xY5X{OӋ诱~?2ID< g̺.WGԽ u4YYwHȐ<]$;m*E`r& |~0̪ͤ_ LwiȀ lLA;?,l:j}6>\X1"lcZrh&Qh?x7 gggQIάTD&-}\,z ?<`RCΟ M<y7D貛 HYxJcis~+q5VCӛZ)ʩvRtɿ3F51$ tş:wOGd=ÛqZN1Zy-ȇJ,<").LW{9#܆5͡UϢ6!ƒrf<žl7/~YJ ECPl'kT34, igЅc}k9֭`jNT,``YsScCwYeG(? d?qテc8o p c%|-BT,{.u*KwpR?:Uui,`S8H_Sh%*+4~e&Og"XАj:u`. =au mg.0)9֏Q)߯/DJgȵye$4Zڿu^4* xi+8o+RaDX`iKx b*`;xȡzdO{{1xDD\A^;:N;k}WP%2ɵ`t,X#qBVX6&BM ~Hڸe@)vpvдkk´NM|;Ui5k"p/>}j2ZӀeP&(Vjlzw>cجB%׷&p<_r3V7(Ǒx#JjøuON`:#*=ki˒0cI!4rc"!9cc\W֑2YD'QEZiM9NOh"\ +SRjВdAۢ { ?Kj:H!8U),k9CNt-s wbV3Q6Zf\Siwbq;BK!RC;s 054Qm1}*m&d+'ps7MWWwt87{`HzL?M-BTK]聆e:"@y۽& ;Xa8:+V7SؙTWa1qVj)GPfV :RdIQfO N&C3IkP}B@xѽb Dr-EZewS LHTydV0hKa{> ]cf!P4Г5pK@XFiJ!g˴c2rp (̥WyMc)n&jTB,L]a\e+#Q UE#[.}DƋjx͢8u`у/A,4~RH"=1-cV)I2[_[p'oE6E0)#2OM1mGfQ:R")OVJ"#βio$Kt(T8.\SB37FBd IN"ș)fSNV>?b]nN+/8]ve94&|ϴ?N~n4X̵A"Rq}@vU8doI{=w/iWBE+4"R@F@%1JM6IF)Uhyx{"ԧ@ gz98+sC d4K]p TTEĢ}Vz]\TjkKVDj(8TX^җc~L;M, ˝*V }n%unWYټpF.w>c>؏(ǵ6CH$BCޙ$4.rw59=LicR'eccHC%rfϊyA];O|^,%avS.LH֟D3ZcJjy_RN"4Tn>h!8 T/p3Ex KȨ,k&)F& TbX" ^}> 58w@.S0(?OOvgIFZtW.2ᐅCy<*^`~g;P eY|1ۥ!1,8&WHQarPJ^g掲$"a(eNi̦lXUDxmHe$C=R SADβK+_|J:m'z: hQTIeqQ)sQ`51e,lUpY265zh6Yuxm}5WVZ9G7i. |T/3FEUdfdgQO44-hTn`wJW~0"ЈtI Z! c {ʚ,2}UgpacĪYv%HҲ(7wMn]2M7p"Z!X8zdlkh/M!  Z_W Rynn$TBq/NReHs>Բ=2lWO]|L`箇f(GS>OB ذQjlnQ)S*1;GI>&opH (y+CWJ tf* kއ *% gmh_ i#^'C56R;;dTp}QMUa2 ~29ל|tr\t dkz3< o]砮:vrﹼ8(Pdi#A-$v.L3 /7KӚOL gCTw]D2;h`㚎..X3&*`w`$w~}2:uٍ h /eщx~6r\8hP nsYׅbuIdU0E +E"!PEsY1B.\H0emh#T xZI6n7C>V3O%%A*M3KY +N`.trNKF%b@M&`jPK k懎2(ks>e`F yT9j4PeUx+U}Fq-tE"ߔnEx_ݽךσۉ7AlTEd\вfuٮʊk0BCLԝm Ҵa[uxlz((NMXj]$ NjE ]ND"ٱHeѿTIĐ {mwV" G9E\#={F__IPN|sʪҡUĹ#4LgrSgd^NC3DPCUi"wͷ?o}(${xo.٠FUZ Y_*iss{p^7/ ×}È`2ޡ9\A2KAג^(FZFWBs_S&_iKf ]Q\p4 )LMC w_|=U_=qWUjVV g HP)͑\F OzxJuSRTeSg#*|pSl诼MB9+%CT^;D30r{͠W(,[-}wO2 -)ѣo ^)Lk: AGe=1S Ͼ>QAu4ңnDa:ni/"0_ir*5SNNDq ?kaUWU%bM-}~(tE> *Se%eGUvEr:FQ̀vf|+[ ڻlDoi|36-SO/L1#G'f9(F6PTBQa%\TLPK}ɻkFȹ9L"2t^ݙDqsW* , |iJ tN"YrEx/8l\]HKEAΝLTiuCRG\Wh{<#M] k:wZҔM('zMϤ4QO!,Dh! 6bl0Ri+2LC!ystQۿM|!oop8U-T t1n za*9%s|vCCXBKT[[$"ր<`z]ZZ`< v(g>زnDy{N%d%׾5sGX=t0+{"i)HAX۔ O>1' @f )l׻WJ\&dO c }ev8B(*O0'O>~U-$ǵEH9S\IX~ lJ.~Klnޘcj%iŦ1(DAF.-ӈ;itPV6tds)2ZU LOX" UTThyɂPeLFj"Md><@;sFY: щT#P3.e}@'ഖzXp TJ4v`eli*XW"gSNI%ah@D!΋yYx7aqf<,,u+K=s6|]m5\"TEނ+Ί8y ՜qHGiR3%2X޴Q&UgS+N Fgss?#Iz[+8`oXT2RHdžQ`IU;[VGxͩEF͚s-S=2IKaENI- s1ݟy 6|3y=8=uNmulo9v!oo?Nw%"/p5-Y/lb/';=߽QnDFK EQp>JHzS&˗L@zm\6s?D&-Mm-,ZUAFv2{P'G>("0),O%6b 9p^& :N!cP?3 a*iFEK; "f2wSUV"iϔFs:xYz#4˜^Is}zmǯ}x_[]T1`OVIc>rMU̮]mM4ԕg%BjxIĸ 0Wh.i0>dZTLvYڰ)Qh2qy #GMY1 {,CY%K* QʜgBLWHaʨCMω'iqJjW?jSGGK#``4}\GqWWgu.k1)?Dsqmӟrj!s! `G =S%c>O\T~|'~5j}/߭?| ,$B 9z n3DߤEҏ v` Tw@`6,R8=CRIV#2N| cp#cLgU 9:Ny Ҿ"4b.Sew\TFhXk)WDnLc#wD)s!|&_+*Dz;YG QC:OLYݧN{۔\8]x1_ $K4|Jìx eG2o~gŷ޺^qß|(A X.`,iG-Y.r՚Ad[W cCp 9% +:qD۵!S|OHlxêQIzCSig͑MQ?4Iӑcg;Rݹw#_V!T DY))Zע'Nކ.1Qm"t1PнAz;l@Das )Q1Yv󕩁h\bДIF?#~OA]J?롖l h" Upv8 X@ ~d!Jq1a PaBLRjӌHa&^ ˜<*\FVUR)"(I{_~jmk=w_Ί[˽iP?n<@Q0-)P8q|eɓƢ ϙ F-j-ku]3E洵&(;C@ ?#9BOL-8g#*4+.5l?,L} B3b";tO%9e("M0BvcH$VULw=@Vsҟ[#֢OӍ1mhw.^˜8 3^ܗ#>fβ$r)_{ra׿z.x7?*iEq̗rWɣOMЬu@V DgRb]?w 8}‹ N[iϵt[kWTƪ_P}6sBe x#.qmwPi$WE<~eyf$u.SFk39 I&9L}EF\8iDSF[2`y ZRn]1޷oW[c)Z6>{SY7Ȍʽ/kEğS= ~sm(3C3Yڬ4 "$`J{UwҔ=V:4r f'b k4hqkM-uʆ]ͬI:N}OCo;.9a:Siq0h&\rGXhl:n?3Zj=z ӟY-K蜷 |]8u3I?}-O^Y|+_;?IܭlKFGgh9M,Zx"Hze ' lXlϰ\6ա pNN(&v{z, l!Oڹ0VNO~V.*fQ|S?ؖ;ٿ%LH3*\`tf4i*%tNNYqN5Gy lCUH&m1q^hG*]dFW߼H_6bC#*kd z6[#Tj?#N^Q'".:AbB0'Om(*oxaq=0'U"^A=+X1wU թS[FXPPEE`ȉb)ߏ3ʿO.,`A \grCjscarWؽ:b&M.kIxw=ƪ17n$H-{7"~X %tO{kk+g1ኞ-8є doxbrC׍q?X0yJQhH:px;UR #9IJ\>X7YYw;"H÷g xh8d@NqFhKƁ$(_IE@:k*B(dˣmPS&Ǚ F!ŠY L>$ lvT phqzi L;/ tJVi)HϊϘY7L rNIa,TبcRD5e7ZY룾_O4Rx@5+T#BSc;,\Fyrx(L82ySF5J!(X.^Q/dL<,SS-Mw>W.IM34qS=!>{Sc:FAP3pIYi}/[)^~8f}REe ѼALD;|@A:m-N3Gv^˖\0F+#Li"Ygv(gDCyF EdNLIcJDT)Q> &8ZP%OK9t\G팵Չb䲄[%rs"SI_S@5'GJcE(;}jZo~ WGOOm^DWн*g\"( V<ۦ|!8:N A yNu!ɬ4uU\A:e%=S6W2PJLfQ4Q4@GYH?$B:vjHO2cZ4p[%wE&SOQ&;"]>,5pm'o-@ gy"(e:ŝV\H89H!Av)`ٙ܄Ch),RnDȷExW'Tx,Mˇ)\Pk::g.dJ񅥍 ӊJnds2 o.k4A}[[*A1B\NA +DS8vpG`_J3Msf+A\>Ѓܓ6%$(0Wth niOTVg^*+WM닆PS8.E#hT-P/{F_ǰ,\\:8ElbqF.RjA+ys.qJhƁ3"Je8D˒̂ qeQpvwV*{ؕ:O'G~"xE2J/|E%*3^1-ޯ(ԏpA x e@ôt@0\dL6QG7̈́fXyyOYYu^+?Pwꓙt$s,Ԫov3>;ҢpZ+;}AI_1üYq>mO6툈?~[ bYgtyfl:qo )RGFO|>_/o:8˛@]wc SQFt#X`c=j^h\Z?oDgFj{UF C2 nkca)25BƣR|3fZ ȷy](kʸO\]@$-uD}I׬zFLL0u{ V8d* U)xh;Cp`8i/5h- џw?CW:!&TpIxVځ0;Ϳd9S>e 9mL;*! ﷘͐L=3ജZ毹a 6Et ?oFz۬i$e*gt Qvܛu{G5\ L1˸ rvģl蠰aɶ\A*-ngψS!]P°f'wݿXNd n` .z䕰 c 󗌯;!o-#qxiОxRvܰQhH|aCHM3x0QdŘ[=w{T:$\-I|FWwFHq'-6TeCN)tifE@'ѹ:±6#5PR=6T49"e-_O&8dIɏgpoqr"&C+iJ,%Sb2džϘFdRFB >~οG$ gr%UhXYKraN}:V(=.h=iʽЫEMH4\ xP.*0s);1Y5E#Yυ}=\kkSS!EnKF z^Ud=Ƀzq<(%}|?Kʛx;yCiW:ij 8z G<_9ws\ rYo">{rmrXJA||(9-i]cAZ&J8{8<,, YC<[lXKa+޴ v/n{CF9Фߵ>m? PƀhHN¦#LMQQ4|V)x6_.'T+@- *9dw iY?sQbDϽ/BWヒ×}sbk #<?qDSj& ?a#Y. )E_rW ^ߨ( l c4kdgլ \'ixtymΗ!->Yi)7[,!(\)_y:+) 쓆 e,NssR3,P#CmX|aUt$#YYhi?]Q){z.T"} nE&2:C)JA E+S_y-#oxe{gܻ{5rGZIH2O䒔282v (cXM( lFL7RwiJ uy?oI}P'~wM?ҳf Tox0$Fn2v7FiE n 9nJըdJMud)%S3{,8! ߤ&r)j3Qy!h&ƴO9ETIC?@ϧ񑒏B*OS'-ǍL!!]_KQGq34i@%Mh̵MC/SY3^(a\EJL< lkh0 ѠV 2=R5+9᳍ DRȲ{ '{sHQ [Yf@8>ĕ l.)=;voZ>q F 7; _֩:0AdP{+JF II=#;]_ï)JmʍYAC %ISg ⡅ J/ }Ϟ3~>$s' s[/37r_Fi$MS{p\.Qtbr5YD0 /v( sԙC_5ǹNdChD7{Q ՛P:4Q4b>yi0PZO:'EX0Ltϙ`v2|B]ϼ=QA#>$C'1Vϟu"⦆j<fe .d91[8E{V[wDbOmQD/Y!|'(ee/ hHX 9 sZβE,tLM(A&(DFQXƦEC`2**%+#Ҟee(0n!FQ;gʘh QŢf͵#EKQzcF#:~zSp#T-Y(SO{Zdb+\+xK?I²fCJȵwovY0 Ud(wtsڮITǰwR*@}U)oǾ)Ebl#ϪHU٥&rD\daLX_ڐqQBԓ4m`N%{(Qv{qřQ \L{^usk>\\G='M U݃9R)#fb;ϏAʋ{96,MQ Q^&(ϵ-l qL~uZ&rip&pHͤuǐ3&kkq@萴o(WP^z8=YfcC#1[,m ID+~M#Λ2vŻ7oP>)k/`wM? pM^8P.7cDn扠Hhqh45dypkzۙAYz;l҃5TߎmUBe2 tjE): ,lţVchqJt "-0kbmƯ/^$o[A#nG8[[>k[6>Ğt hbGOcWfDt({zA[wYp-npm]'i$kFCPBN(l m)0f]SR־ufEQFZ8ȱBGVe`nЩ$eHSG. ,byqin 3{eV3d6,t/,$@^ꐬTu5)0>+ɼ. }OYC7a4XIwPj8T}~O0 &E(^zc3"޽S7Ou(B!NjLLk1HY|owDD.C6 BMt)>UjΞemƸOӢ 8>/m?YˌKylipwpysͨLK[Rcq2+Y@ɛd1XA,S E1K6i:נ s"BG4(AS>فTL_kw01>U{t\[ۍܜi eDwo?NaͯrXim<ZUCT-v8K-)AO{ׄl,x8(4a<3cLD$-Hd{P<:9鶁aeDa{*+fa{?v wS+_gUNIwr%fcBagZ$@~:KgMFD1 h8TM!x$lSƊ06a,' K'*8H?}SM+>& lE?o[o\y2E[Qa)Tǟدh6([a63F)0 _x7O8  IspbvO0.=zPI@XIpxCX'đ N0Rj HiiX1O]1~"x@|G-gtRgKBhTg0\D53"_nF":VqA(EHǠEtQؓ9PFYM;h=LK a0J͒NjؒjKy#M5DD+(?Q˶Xmq;?AWL#mk9'~7^g>-|{((} 9'%8څĝԗ9]ȸ-A.NJ ɐ FP^bJ臲>@%t)9x@^f\TxԎ" Ԧ ȋ\k,fcp9X5\ }ь8#~;D\؛s^sE/W82-3.Q 1%`EA:ȥ7qif<߇;}b?^ᅬV㯇1 (/3`>Ԏ2 {]Hin /vO pzXRH%݌Ü`:GrG><XaK卼dSx#a,r&^E]FQwknqU/*QˌbܐK՟nB'p\cZ_TV}3֖ZBQ(g-ipڃB@v.:A=lZ*~=,39VqHQA}>/Q9dLR|\/hw.hTz0P&1Fe~R9@S(U37_oDϬr!K1*c4] ZK߇j]Β" 2z,0+%'=w/x#gy㵓Hqt|nkڷ~oi/Ot tMMe3Cihx\@6a':zඩ Nᓆ{/׋=}Ayf M {{-qQn $Ɗ4Kը0!Ԝ@3 w>ƝbMaoN6u9jǛ;mr 4qF/Ad5dԊ#ec2auI<(?oď(cIPxPHrGyS{aU'P. ^b˅&\7cOLG(ubu}!Sni`v[X۳>(HaD SB)iL 8rGf8ewp! VGCվp P6#u]iy|Ds.O# >:)D oS@TvY|Mv. 0 3I4*n&xu-k"LWK˷_:`ZqH,<)µwGirj974<{P&LC" 6YK>GlD^9a.yӺJ֙%1+ƪNeTT u*4S2Y)8CcǐQ.,yUVnHA:L~Xt1.RN;B**/0Wvn2Lm%Aú# ?GT X&[·h`rVL@{̧/:5 lgL/M2qk5k݉ܿ|~on6<R6yb{(7}Odie4Ψ"qr^Mؑ+CR%Ϭ0i-퓬JyU_*Ʀw2b7 ]J.0 yCYH=o,0uS:g ),eBx >]1ӑGN@܇5a7-skv;IKl":QTjO,__L?j"!밽HYh}ѴӃި!uKUP> h2ߝn'@T=č"Fd+A(?YG=qkmzLJ D"[Uj֕̽~2QԸotc]ri\1O1<]{J(7^.'?d Et{TҳLA8!v٠k @[xMM @dycWU:XsCEDEf9D%*_6B K"į~ɯ=Бw盷`,7>612,=Bo׿&bY.k"vd]Ƨ  f1Օ>u}5Ù 2-YtF9νFY "(;z@,S&V{^h5ţֱif#$ Ё%$!+%"Do%œEOz41³W":Fq'6;Id!Q/K#|R*ϿK}#*1|2`};{-RRt0g<@cږ{( wp3r˜4́n87s`!q|_eY9~Gi~v DبC:yS2@'L'_J&@,wA*QX8cuޤ92–E614`8G8E^c@Sqs JTM4^ja8M@ a`D84p666IBW״rmK&<$6QyF'%NQ_rg!oa@&]-D*/tUǏgr>~7~""=  [Yi 䀲,M_Q=.:L;0OgSuޟMWr>(e͂{NsQv5`39>̃˅01%4p^?PmkdsDE ZF LT -4V'E颣ͳ֩Fx|ZʤaCt͝D? -Z]FKS:O}_+EdyiJHkYǵl/#S/oALҰڛ0V9{A:xY و#z3L]A@J1@:!t0n0R_lQ9@+Zڽ2kwR@nSD'-QJCZ$GC *G$o(\}c$e,W2M}8mJjHX*\ՃO":n1d>¯ٵ5)R2Y߾f 0&7!ʛz>_n ТNeG3PFSkT9d^3LmyID{fFlzCMC.P_s@(I J:)覙؊%pd_v($i!1=th vȗP$5F0l ECϖta~,1 % ɩ7qQP3/2@1S XL6c{f)5rngj|'5R@Yh[ (H"ox>H Ӈ;=l>C fg-l 8?&OZ}Q4Aɶ9wOmַ;F@ 2c<]|aeLa4I}҃{n#3%&<n:)8-d2Ej+S0BgFYoA 9šT*'ߜKsW'9ܨ6v?jr@-S`;ys 5qt`A81!UB%v=~5sH'cZ,<_圴šD~AZyZyr6'IƌiBUԙT'V,"?t~rr?G+$_(z[wÌiS#U+ 1y# C:ǿn5l=thqe_$J@3ܷ{iZ_P>d.3=]FB{҅t/(F2_mn3&G=ˣg$M itv2oqA+(d)fӔö;A%;9/b m{5 "~\4CXwZǼbxf{k4u=QJQF;I/wkB#Xa}~_ VZ@L.#r9ȁ,eU&~|oӮZt B }t6ٵq$/prŊ×d2@!ǁ fL6]E ktY .*,^NnL=CVyā/oҟJxsB C  0%bE#@贜2 s*GDAb8YW0D{[E8FOnDyDVܔ(kEl_.4,ӊEֈ'J-uPYݮz@e ._Qg#~IY @fRTJ{ !рut0oPHvIxvdf%̲yg^ 5F!z[[G蹁iaUC$6r&L;7TL oxU@kɮu šsj⼂:Gc{88|SO%F}yWix&x8/OQ{GIp-oT^`TMFhW)lVoFLQΠߢ`4Y޷V6dg`0xFj 'E2h]:1WAysvZ`iCLQN u c7E,X.J@ F? |}h0>@(26|(EQkMn4^ԶAJk8YjH4SZ:NC')BL黻0*Y[ > gYmn2H K:@(pcr&);oaunA3'^l' w o`65U~^ 㯥8"PJYHU#2#(0]uݩnaPGݏi۔^+s8ޙ!TJM)7ﳾR9 6ZŽFivmkTf9dd ԅR: jD%i-YIƓR|r1T;(}l~6-s*m&r=?ll!߇o_ŇT 4S1cc:4*G,:6D̔Uٮ[%J>oqװ4]LrJi$VՋ!}J }OdEF|SW4&]WŭY-i#a'蠢)~2}i\J٠,,2L#.\L3ڰ# MY8TNq.漼q:\sU9)9gD9^Td`J$)GxQw?_?ٕ*fЦsP49X(w\({p&M #JXU-H?/;7R4dRbxbHZkjN=3cSJ2ܸxm&4uV8F);rZ'Ά")8i'u+ ِvB,Oш|L O!lTu1yDtK҉ԧMXabq/#">ԁ w UR@!Í"c_܈?pT״!3'Ld3 &mLɶ$E\u=T}r=!%k6glqS{sGVT^b\,Ca@Q\qVBZ 2fZ'װC sK8CJQe:lprKƴQ`|*Z Aӓa j׌Xæ`>,/r -ά1ʣ#N&2L|UF wds_:cm6/15TYDgYhE L%w!qE ?U@]9UfK2 񼰣^aPDJVOD nR<:s2 rNrJ^*n"Q_E KK5rp|eu΅F&b^|;jūkY{ٜZF 4), #HTϤ.ZL A4:e yйphL*%k9vK2,)d\t̪">"839^y kW(M( ]D\9ޑEi#>DrC;vZ:NWl<Xp\)4ڭRN)<:x ||-HSѷs/k*5gGR *y 7P8^ P8H8aPH[ i 0E fgzGù,uuP8\ۛW@0NzbaQ^jpR z lYr댝kpRv.U95wr ܿBz _xn`L3Mvc0N%´C>mO: e^NҴ :Q3)b 7:LGI#ݢ4c}.sњIÀfɊuB^ڠMf[<D>[b2͏]4)ju: FQmj7ɝQ]+y4VMhԐQ9,%ף>DqQ/ ;x]tϊ"6ƨ_ FHR=S#COfrJaPh3J "42VUB{\C"1)|~߼ ObՁ+ň(T^lKrXv8"M Fio0Ӄ&H@SmS3YѰvy^m_ L[a6Q.N^BԱe OC B{s\IS MZZ="H֩R@LH E˴L` Og "$;}HOnXgA7Q?cBeI~}u/>wj K.g[O+]FM%HcrL&C!>|{5g/5 d7/{. ]L);v笠 ʦtb!L{Ȫ^ɵ*V4]|$S4b8)& H I4Q} Q MŬHtIG4MgJwx}s--Gd—1A@w<8GΈAvCPfpg+[xW ffapW*y?#$i҂P'a)چSH(9ա7N ɹEJJKiA]w2 BvX&0 <բpi[JRy.5XT`g2@$fG=hw9MD*0tK[ Ӈ o0eII$kM\p0 "YꔋS1JMѩ-~d7)`cRG%f|~[RtעR <78@t]q#Xt3<SO@Yi/6  V !e$.%i!j1u舳`xa5V] 4s4CP8E 4]D.<M DI0ЫO E?kOr" W"0Eg]:&[Zx8ZNa<~O W "(^rSLf*ot썳r/gᚪU5&4Tݛ57>f9 ) WboSucގO[]QXc??njkt+x4;"MvZ>JIп<R$N,Y$Σ6E=;#Mٿ-+ضh'Ie]&j]GĠaFZn%Z[nQKJǐlsQSsx'-w i6 HvP@hGshZr2 zlD”sY{GşT777}>΄TJጆYΆUZ ؔsj3/RJiS)h#4 LS'~ͶVS MB8YUfSDdϨYZK 2DS -KZ ιddxD*i5toൠ\Pb4 !G d! AYg;ݨ|A啸 {+>w(`[X2P<GNJ␒4N`iɳ<_FpiZcd*jTc7ЬIa+ciUr(QR k!-U>F` Yy|k9%Jeh- ex9ti-M UuD4BHCRR<|+ o?K`Q}T#G]،J4"jg1 K=^G(UYK\%EaK.yбi̛1R;_7D 5G3OxvgJ`~F"eh}t9͏olLo| M@ tǨqK=ɡ)H{Qܦ5[,Cش^=m('-HuG1_DpAMGO.JIA 5>8*GI {2Vb/>>Z=$Mw6AC7&ߜxE7IwΊWx~`2g7®~c>/]PE΋xiT+L-\([fh(X.+Ax_܁#g6NGu &B ފRtUPMFԱc,=))C?zw*FEDIUFHl2JFҎN[]VE^BFɝA '2st̓ǃ Q0@  mC^ |~`W HI[tVջ9t[Z *-K8(#Mu6b'CӍiMHhVX'[0@[ePDp3nRcQjIeZhx52/ޢ DOXש5ךEU눈|RTdp6S(J_V}ШIMZr׉=XrF05]I7SCƿN5p:Yz]MEyrƹpq:pxӡym[QزF<̠VkK:Ʉ ?;WLb v 44Vњ76K7N1TZ2L-1|d!!YkpYiyz*gItBJ6[S==@#SkgQw`1S( I9 zOłyR:1 Fw!X潧!_]&00 *e+2nr]d!!B.VЀ(*/ŕN$WI'5ŒT_%cCAL .}8+ qu,'xd>Ψn6PZӓ#6:/΂0~$" H4MLK6cO8`v@_'8Nr:U1/P>Oj֨YEt^(Hy1Dq_WJ$Nl>;YM ޗ Y ~)aՒ(&p# G 6Ypy]Qֵަ`f1p-Kz8giHIic؃Uw*2'#w:Qr*&D{uMt2j`vLJ1 $bI +7Bܚ'&8>73 RG@lνGA)T NE/Yv*S:z( $K_O|yNtt}t>&^PW&+xDh.C݌'3|EK4z?Sf闞xz\o96 r~{L,i3D7.MH6Ÿ ,XB8fUd1Hcadr*6m%nl9utMx5Ԫ;h- v:Zur[L"Lk#㙜6:SkԣuHt@GqV8%(^I<l0Ze쪪~U' gI!d8$@gIP=4fc(ɖj[wyJi%uZ>5 HߒâF w.,eR*_{fP3Uc;ýr3>&"6YuSyQ{ i@qFpL$D:I! u,#Gݏɑ=~HiÛhg e3CRtJH.(‰"H5Zٍ8*r; &[,5ב>vR2OUY=rG,a [O'&;C0p&/!RX6BHm ?F[ vpP*oAD(JW@vQHK9=_'L:HPXF/$WxBJDB>Ge)Eґ Tg5E+u8 xdNN?:D_2 ׶o NQLmG2X3u["`S(kE2YV \H{"GLo 4X}8шlOV֨{bR{(HiI-ӜtRC;D/y Ο\3Iyh=FE ǰ^PARxPj"/&ͺ|9 6=G(ʱ4mccsFp)B!E|6ֹ͐EM#Yu[م1Ż@aØue *2< "si$ -e U G[oL &l72P|v຦b0ƒ͜N^sX#9ypBO'-GtD~͐F.C< n!b5-9=%dHKbbvA]K.vx#=hd>8}ZWPL rR,1DT 2qy8SF%J$"2toaחdV(vMq7AAʡoC*b%f}%{k:Բ1 ZS H˰[ CT](0+eQv%t~PFp t (/Rf|ʣ3^9ʧLV_)aQ Jy%~)n4D1_XX-\6,`wPGxq=]x:KH?\)C8{[y7*U8}3ծ$nGfG.{ |Uz*dVj/h0l|q9Boy1h0i5xofZhN]r^qzڍq}Dlݼ:#Ux 5ʆ 8:\C1xMu@~J8x@>? ȇS(v#&_l/! FHbtXT%Qh-&6gO^P8Gx1KWM)]du搉ge4;\!k_]{9h>s |yv 0H^8R8 t^?.PM`M?p+↴Zqs 7K@ nOYDZ6ʖ::(Q]Y&8։a %bUj6#}`׷\S4XZu22 [ԏ+TJag^nD>0R>BY|~Qh"ixfjG2m2X J% <#q89wPjeK$I;Qy- nf1.MibtPF+}Qx)(U& Wt)XB\>'BK!|z ui ,D2* Bxe 3D+ו82 zY@$xʋ;x'kCԂ1 ceA¢c~0HY M`{̵f 羑 _8VR%䧓m&B+3ZƟJ1ZhYa ghffgl!*t.:ǘz!H;%"$OyP-SDQQtgN´'!C״fjTL0 4z^@N8$R%,8ыQ,Zm$jD`jf)'ASJ*6A"yf39iF ꬃۇR-=g_9=1 y,,BmƧȺhH;ReV՛#"Vs,E+_T¼F=|v"q{YPcla^f .hdZ|%IIn .#D')j:hr͖BlVӈhRK0Vۦc zyX"qb&==b2ZFmTH-vkiv]R]%*<ztG0ZՎ~8eo^ qߨ3"vό8%7$QHCJ,i`#B<EL*QT@t -[KdD|K}"n/xNM2R֨RQ: \(H;c1XEQ+Iӛ{9OK6 +/FчH'X'-YG{DHX+>V4Bc- =]$J"Q`)GRKͺ'2iPd|#=%V8]g%r@f8^G)k$ 6}:mLe?m%@h\m~O~;8=eO_KZq:i'+/*sVx+Kid1S$%Y5*c4<9H>{ ;˽P#Y)\(̭[xaPYƅ&@fI[>ç[K,V;; !w9)4RPڑ^m֣!L6dMFd8¡(c$َ`+s=#q[r!25$Hr)Vx|woWěeNb쳛肓Ƌzw`ȽɐA󽪖N^=Sv8 .e ׺G*O+~7?qذZ{96kJ /_So3蹭Dz:YC#Bi!y/[ėoW|s7׷@I7hܿ&X>A]4U4=-o(nlUj$dj09JaN VvwEMy!M kĉgU $~VZÎ"v M{cxȀKpTJ濱09kC췚Tydؘ֌e k 8Q3N]h9Ǎ>GB9"ͥ˓5֥5ҟ9-FQ +gOϞoon&."(4b4BCj\)%|'dhhn+;ܹ6Xñ ʃ. <9G 0Jzi%)/AJrקy}PWZk4\þv Zi$ T6JBo^kx8};BMВV1"SGũUAio"_I`qA 3nȺF=^e.D/G fŷެxe?XJӯ'[~n;) jC5)Z):_'?w6x kgy$l[P:;ũ0OkOO%Bڷ8U2l/?TPSGΨB›Rh$.j5F+suCOygO+޽!jׄR=i) 9 = y^`vw$ǭWAo嬅B}zt6(eb~O7Nul}yäʈJfb^ %"r7~-߲6#M5Qpl{!WQȯ -j>KDNV;.<&NC# 5=>^k%p}}Gtoz6v^Q zKW55~ rIBbw{ܩ|diu^z%{Ĵy8K 1ߧ;;~wOUfFZ"P$YRkM5]IG3f(: i(-M G(&TZ0vQIwC T2I 'mSab`OuJ֯5.Uࡘ:ܾKi(QWVue3՝O 0v槆\w:x~1_׊?|V)zDG@q{bH(_=M\sd#:j)n+v)E_4N\fN~|O6JgbֻT^mG\4Kd|_؈tխPVOwW2~?8.ҞSdutGg|ʳDXJ7i-lOTeEZ+WD]/AgW.Gx@F|U}z!ǎ=t8_"pKsgON[4a>]t_):ɦ)^# GJGbtJ]# >~?}o^[P >4 v}oGDV;H7nFqn#9ya xBމ# /Ԩ'lփݓVه[/߼d|!2p>}?d[B?{A||p|=EK/~J {)OoF5{W6"2ΞMt_xu_VD~4~.Ai߷"92~p/-2*ykI u^<~+镐q$2a;I&v1}pO㣑էC~Ϟ_<+p6G<;"/޼3뗻c>???p;h}yӍ&*9vޝWҜ"NJ5ό F>{g)|7+'.m}_}#q{D\%^iPaqYc6\.JYpZGBGt ^h&5F3"=!voo deQ?qpfX|¾4.^YW8 _&2 oWk;zn1-sk?_ ].E٤+=w5OI3jVHZ{ϟt΂ñ?u?EbïRk|?[|s^Qx7SGfb@Сs?ȨNn{zeK~Glw>ŷFӟY錢vG}on> M,_%`+/ߗnꚸ74Ms Gͭ֌:$=牿 DU^!\?VuXs:;?}IދJ>0z^E|?p{]ʋd^l1LGM?8]xzBC-cyw+)|_yOb#ohSrθk^qjt<_W}4_!p#=-:_\hf}#}rםF?)~Se_%~^~JcksUlG}r1ܲȳH)L6\dPZCԃ)IKy8c{;;çڻgĻGs?1}0S ]xPXk{uo^OW|J"v|{ }oJG<>݋),į}s|!CW/ye/ ƅBw W #ȎgfջGs~K M(9d9hB΃s=λxtοȼs>1=+ =ǜr%>!8-S0ܼfWK-҆[]ヹ{}%7gψoï^⏾zŮAqnRgn(F{ygýqngI\J|+V5x_2~KQW2_r٣(2*nFwO$`EuR>7="6ϵn꓈>F|sƗw}?~s ľbiAvWy_~ܱߋ_2poM2jyꄑyO݊> }wIo=ǯ|+onG_O*SyPU->YJT-_w^+տו^)~ Y)GƧ5>1)rДсʌ=G)+Id?3͸Jѐ7ه[Xvi@-WWQՓEOoV|'">}rhբn5{/AG_#柽>S:_e_h1~ ^72~}ģtF?p'9![~Ot9c_"ngߺ}s2|fMsmIK߼KK|spQnW"ۥ8{!.>m!#hZ;>g+%Af-o[Ý<8'?W orYwgك}=cݱ?q _<ǯ~?}?-~͇ypUy18D^O a>t'}^b2" 8θ8g/YK7o^"/7*\ hDS2=ޮ;ۇ}w%96}qN>ߣ^oNi\5(Ѕq%?65Z J6?pE]|q9T]b,"kwg&"CyӃr6v2,c-/ï7dq)T8M( lLT*7 yȕӽt?>TqHs#ҝkXa:O3Eӟܱ/_˄IAԃ87JR$?>ꤖu/lUH4n*wY81SmHpKWU0>\v]X,ձ8l!N4G𧻓[ Sץ&<'RH0I*On*|;cj6Y!VeH,q(@dT%R|3=ݩ}uͳ(A2 䰽,0)2.ɵsSmJ(L+y hJw38fXI?xljCܩg|?%~-~яa)D́}Bʬ*LAYD8}wWW^cׇW!n+|ecNoN/q#zڶ^ӗ 鮘X^ӆW'g<66I_O9α9+N{h^crjp}Lbllv?v| *9q"kQYWe }g!>{ =1]k'۝[YW)HP-3ȡ. ]x=#xSĻJ3KbllOY7 wt!ovWe-nÍu\Ù ZOxu'*{^+:_8㱱o??=S{.sw*^5C3?Z=?6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xn8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xlllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qccccc3g<66666xllll8㱱qcccc3g<6666xlllll8㱱qcccc3g<6666xllllU?/+s+ٿr\\_IENDB`indicator-china-weather/res/pressure.png0000664000175000017500000003570713643503425017361 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:4E4126B1A1EE11E89D288670AC33BB75 xmp.iid:bf01dac9-2b11-bf43-a2d0-498274c34210 xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:bf01dac9-2b11-bf43-a2d0-498274c34210 2018-08-17T16:01:47+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:22:32+08:00 2018-08-17T16:01:47+08:00 2018-08-17T16:01:47+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 x90H cHRMz%u0`:o_FIDATxOaArd ”Ĕ΂,,Ԍ(5B2jVbJ()%ʂRB,,n$t߽©{;yy+fS/mے/Z,nkY@Za?.=>c) .x~6 Ld}k9|8Wr'pQOy1 Ǖtv 6a|q7ok_ aY/~8³ps?8|ݦnGaq [Jep1-"ßNq?u6 .tR#xI*]'@xo&I<`Nӏ&F7-dq*L8Xd=mIENDB`indicator-china-weather/res/delete_normal.png0000664000175000017500000000060513643503425020310 0ustar fengfengPNG  IHDR Vu\gAMA a cHRMz&u0`:pQ< pHYs  IDAT(jP{R:D:e ;9dwTcBtv $o▭{g)dʖ&P~?I=|jt]7'i3J~DĽ{:u]/۶}N#&>&F@EѶ( `^A }Kˀ<;h#nDGgv*ϲl-VD'رG8kZ+.IiYLIw?7ʮ~tIENDB`indicator-china-weather/res/add_pressed_btn.png0000664000175000017500000000212613643503425020616 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp 8hIDATxb ߋrpdJM[0' 47lH&0BK8 ¦yFQ^#1 8J#5x%IENDB`indicator-china-weather/res/search.png0000664000175000017500000000240513643503425016743 0ustar fengfengPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp 0T IDATxڔ=A@$[: HO t6Q(v]BB6 YoN2!|ɓ|3?; " `\{<eϼtnXpؙǷ$A,m {َXBf.PE%ȀJ @&+ܤJ%1!"RgqH!l̿[|bg()q\U4I&i\Ǚ=x[bȇq%NJ>DmIENDB`indicator-china-weather/res/close_hover_btn.png0000664000175000017500000000216713643503425020656 0ustar fengfengPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp ƬIDATxb<~W fd=`,h@,@?aF0ꀡ멢l kHQXNv@w Z>!, %L8=)qS&jXN#ڄMQFF0`[ 7IDATxbI ؀8X% ^ sH#T4ob}k& ېH,x#34a` r.HC$  L Fsh@?`pa9 P 322@ U\N: 0O?bS .@ @ (A  b& yIENDB`indicator-china-weather/res/close_pressed_btn.png0000664000175000017500000000212113643503425021166 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp `xhAqIDATxbmc@K@c0j \&C b5(NaA$ě,GMd2R Ý$;H5T;0$;G+Q F-004qdGIENDB`indicator-china-weather/res/visibility.png0000664000175000017500000003552213643503425017673 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:9E8CD8E8A1ED11E8A1CECA1229114BCC xmp.iid:a740b2f8-412c-4f45-90be-44c13b29ca9f xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:a740b2f8-412c-4f45-90be-44c13b29ca9f 2018-08-17T16:02+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:17:37+08:00 2018-08-17T16:02+08:00 2018-08-17T16:02+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 [= cHRMz%u0`:o_FIDATxԿ+Q׽ ʤLF2 0*ݮ6YH2Z2ɠ$+_0I7_Q7u9tONNy\eyMCX=` . B4 \B?60t~y;!e\(a 8D[ q^' +xB 8t=ha s10 z^t6R"3:/1}#u X BSdԇ{،>0Jj//b;+v8b+A㳿NUL ww7ӦNyS*+F$IENDB`indicator-china-weather/res/ok_pressed_btn.png0000664000175000017500000000270113643503425020476 0ustar fengfengPNG  IHDR[ũtEXtSoftwareAdobe ImageReadyqe<qiTXtXML:com.adobe.xmp @:TIDATx옽AAFGMV"Q)VT5JbCRPH _J X P67yyȾILq~h`W4#͈f3ln;~oYFVt6zר ZMDvR Thd,qg Q3}>J B,c Q x4(Ȧ8X'L&xOxQ j ;RV\zHļE}tyBOfEyYEZz<L(b#NRs^'huGVaGkhIENDB`indicator-china-weather/res/quit_normal.png0000664000175000017500000000030413643503425020024 0ustar fengfengPNG  IHDRatEXtSoftwareAdobe ImageReadyqe<fIDATxb`00O (WO B0 a a`\y/*@jvr\T04d6T Dd&J@f%]2SIENDB`indicator-china-weather/res/min_pressed_btn.png0000664000175000017500000000207713643503425020656 0ustar fengfengPNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<viTXtXML:com.adobe.xmp ǦX_IDATxbWe@0`uF0Q XHQMĨWP~"-""IH7S&Q:`u ʾ IENDB`indicator-china-weather/res/checkbox.png0000664000175000017500000000322313643503425017263 0ustar fengfengPNG  IHDRl tEXtSoftwareAdobe ImageReadyqe<qiTXtXML:com.adobe.xmp 5aIDATxbiig  TSq}NKX y SO#5v0 0A "~53_5˰)Gͭ[A_r ;,.5>,a%;#:.5Os_xwR 6P5ϝzG=KjRly ?~|\߯^yyyqq᜝]p`u.烉]LD #ۇEJkOߛr;Dr߿ϟ?/_rEDD韙,ؽW<_E~#˩{ D-3eٛɷ_y[M@ )ϟ?_~ddd*楓y&ܩ>W̃ٵ_zBz`vڛ7o\VVV]]]'V~.%N YL5=r+;3éUCng,p066რ60G}`")NIENDB`indicator-china-weather/res/add.png0000664000175000017500000000264413643503425016233 0ustar fengfengPNG  IHDRw=tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp vcIDATxڴ9HADM)x (*X)A4 ""xt(bF )IF"T6FX? ;kys=xᰧ\iJѧ farvTXo֡y݀ \IDATxblhh`&8b#b)cBW @0@,e 3@<?#]<$(tdI2 l@[ % q GAi> lf(=Mx&TF!=qt3`@a 5tP__b" Ai&lA@Wt8TEa@x-TEabg NP~ ` j68BP,Y; q*ˍFT c04*C#Ɂr\LP@AYM Ĭ@lU( ]@ pf@<GhnrF\x MG8( Co ^-/@W(RR1 ʃ-j H @,ļh.b~hF:UamlE3P)^bZIENDB`indicator-china-weather/res/link.gif0000664000175000017500000000151713643503425016417 0ustar fengfengGIF89afffiiiܯ}}}𷷷uuu! NETSCAPE2.0!Created with ajaxload.info! ,P di0l!*`Ƒ5و[<iP),IZ$bH85&x5k <yB! ,h GҌh*ਨ@$E}eh @ LcQGBP5 <5UdQ+"g0Ak#A nI0$K7 H,-t*E-``1@C7h/1f\)&!;indicator-china-weather/res/life_index_n.png0000664000175000017500000003536713643503425020136 0ustar fengfengPNG  IHDR pHYs  9iTXtXML:com.adobe.xmp xmp.did:49a1b7f2-e568-9e43-848c-1b17cfd39aa3 xmp.did:7E3ABE34A1ED11E899359B275631F1F8 xmp.iid:94c82788-fa0b-c048-97e0-bb52f614c090 xmp.iid:3244f9a6-25fe-7144-ac85-fccc05d3ea5d adobe:docid:photoshop:e34e1aad-a1e7-11e8-b8b7-a20e3fd22422 saved xmp.iid:94c82788-fa0b-c048-97e0-bb52f614c090 2018-08-17T15:59:52+08:00 Adobe Photoshop CC 2017 (Windows) / Adobe Photoshop CC 2017 (Windows) 2018-08-17T15:16:43+08:00 2018-08-17T15:59:52+08:00 2018-08-17T15:59:52+08:00 image/png 3 1 720000/10000 720000/10000 2 65535 20 20 Q%+ cHRMz%u0`:o_FIDATx씽 0J ,4P1A"Q B4,q ueIDATxb π0 01P 4 2M@&`j#ȀHAq4U& T04H7'k!|IENDB`indicator-china-weather/res/air_index.png0000664000175000017500000000243313643503425017441 0ustar fengfengPNG  IHDR-tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp u-IDATxb? F#TD#L 4X R@Q;rXc#]p;Zہxg]P\BvNlP|Ex- Ű`Fb@^1_FW S8b'( ]Z@8Gr8R_!`D%3b(Rqb_P:`@b02^*R>  =?BC/@|9yJ\ )~Rt@H@s#TuIENDB`indicator-china-weather/res/subtract_pressed_btn.png0000664000175000017500000000211313643503425021711 0ustar fengfengPNG  IHDR tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp H]IDATxb ߋrpdJM[0' 4a0l8 jL8ð)Qèha%u@htKIENDB`indicator-china-weather/res/trav_index.png0000664000175000017500000000263513643503425017646 0ustar fengfengPNG  IHDR-tEXtSoftwareAdobe ImageReadyqe<iTXtXML:com.adobe.xmp ufS IDATxb? 466h#TD#L3###_¤f1@x BL;6L j%(g &,b6Pk*L@|1+Ta+J -P@@|k``DB$WGP6,)|+)TWb$ аM{A5M#;xw3Au| CXIPH p#Z!$0C( đ@_q8Kj #4Հd//bY @</@0b3p5@_bu 3&w 6 C$~^q [@S,()CŞ1T- h)<hbhB0TYuަz:db2!q;IENDB`indicator-china-weather/res/ok_hover_btn.png0000664000175000017500000000270013643503425020153 0ustar fengfengPNG  IHDR[ũtEXtSoftwareAdobe ImageReadyqe<qiTXtXML:com.adobe.xmp /IDATx옽AAFGMV"Q)VT5JbCRPH _J X P67yyfGIܹsos?E;7M ؾjΠьhFfs;`>{2nm&Il]f0j5?I!F1Fv&H$y8n-z4k RTPb, J8eٔԑd1jB&h hr8Jvl`Vs6!g۱y/~I v]tr)/F^7G"-ib;K pvtj YCROO Ţy^ع\μtT,uq\X,5BʐDfScnT"3ɵT*U.^o$1ozS ՜IDATxb?01@@1466N f##"ҵ Y  @p=07 "D3rpp=@,Р 2E%f # T=3P.L_( eW<=`W@ .bY"As  |:`H]@ 4z3PHA  ȥ@+@@t @A@%y H=NPh~H/ibO  04u] *1 .@@ـb[ qt=GC?v ď`~C@< % <Ӡj& {襥Ha*U @* qIDATxyp]W}?oO$K%ٖ $!%CBbZ1v)Bi;C@2ak m IHi NjlٖIo?yNs|o9{R|h!,,PR缔}w1U@ ZMsGw-KD}URzB֎lj|dv;#GO|ix߮@H@br!B@б=[[ZG$WG:_NΌ9wĩcG?O;[YKтd-uKM~f+?Ƥ3ew={jO9p:/iA)UJ0HFcD.59/- 7cBAIGk'pl'p*'9]f%1A_P3@M&$hTl b=Ŧࡦʻp4#9kv#@D Bغ[<)T\^"Րl?̔K\ˢ׻ YÕܳ+Ă=Xo7mj+Ы@V!{z?meS,l0 oMh :J_H Y`K0!וǧ.^o޹J mYxޞx,cv:&gYcVJt,,(uiESOnKo=w2#$myݟ=du1BЊu[]~\^,ҷp@TKГ vK;!,ߗuȗr˒v][ެz=:> yӟ9` Drþ/T)H~гQ1Ub ۆuFڣ!¡9qMC[ veǟ5djhd;.?^6$cǓҨ 6!\_1@`/HU<ۈHמ'hc 9gh~]KqMl?˭9}r<߼/m-0S%MeP~͎!N[;[~G)a3DS\p( OMB=+C6Z,љ@&"5-rO+gKuZg&@w= !wyRAKa~>/Ă3R>D~r0(@Xz7V02ޑibmrDC?};QS$NP ޫnZv]F*-eL;޼X?wHף$^)suol¾H'6%|#%=qy]jeX[֫).Wmuzr\P912AP#]!d4YU]DYώu= (Qg'˓XߣP)9-ʈ8rA ns(`{.CUMBԂ0PU7E؋OV`^Eh ~iY߫i& 47vsD <Yp7`hMC#Qid0nvh92tJnB}Ժ_MÑ[)Ay;[ȓRb|?u `ֲA?Wu0?!vt>W#sXwu*Qp͝TƑHoeuvcxJ\V%\c+0[4n c$?ZlW׀׵u TϧVs,#[xڲ! ڞ8MFR(CWwV(A E}=)*&uh!=)FxK√uxR:қ{xK} c6z b@\qJjOQY n i4&RrZ#/}#[́)zJ?DOšgO^=q_! 'CeGuƑ\ Og9a`ɻZ›.!Kq ; H j/KҭV|akU<|(;Tiəz!X3 +e-鍚lH >k [dbȭEȂoBg3f?ٱg;G2m"ڀj o%T @v#el>6&, o>xGM[@#hLM5d~.]G7~i> u6:~n>mOyy7R;}5LO›b!ZlA+ˆZ##U TűC`8%x5Fz+]ş H)"9h$yQ_-m7.  }Usph Ⱦ/WS]{oC}CT?y}?RNG[ qXh5NXYlaχœS?ymhGP*.4JdOuAw *4jܘ7u6ss{5`3ir8]-+#Ƃ9 [БR 5+ )ؾ2ۨR_Afͪ5l]!>< [N_Ę7V Z;Tp|039hF=Bѻ;44Eե˚v-=ǵ{=e4W"`NҔ '=58+*0+ ]!Tvh8`5j({~VC#hhl jk=9ͪ̎ PwԶQ22mV>|4fa7G伶CF!$#  DЅ [}/>Orב=}&T73 eIDATxٱ 0 EAe -n"He<@{5*qFf.y. +L+=(P@ (P@EP@ʿ(lyܑk 62rIDATx #F}ED[Y @`/1z>"^ف sG/u|`9pBx p. */ #ifndef MENUACTION_H #define MENUACTION_H #include #include class MenuAction : public QAction { public: MenuAction(QObject *parent); ~MenuAction(); void setActionText(const QString &text); void setActionIconAndText(const QIcon &icon, const QString &text); protected: void addActionToParent(); }; #endif // MENUACTION_H indicator-china-weather/src/main.cpp0000664000175000017500000000616213644002575016423 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "mainwindow.h" #include "dbusadaptor.h" #include #include #include #include #include #include int main(int argc, char *argv[]) { signal(SIGINT, [](int) { QApplication::quit(); });// 设置退出信号 QApplication a(argc, argv); a.setOrganizationName("kylin"); a.setApplicationName("Kylin Weather (indicator-china-weather)"); a.setApplicationVersion("3.0.3"); a.setQuitOnLastWindowClosed(false);//Avoid that after hiding mainwindow, close the sub window would cause the program exit QTranslator app_trans; QTranslator qt_trans; QString locale = QLocale::system().name(); QString trans_path; if (QDir("/usr/share/indicator-china-weather/translations").exists()) { trans_path = "/usr/share/indicator-china-weather/translations"; } else { trans_path = qApp->applicationDirPath() + "/translations"; } QString qt_trans_path; qt_trans_path = QLibraryInfo::location(QLibraryInfo::TranslationsPath);// /usr/share/qt5/translations if (locale == "zh_CN") { if(!app_trans.load("indicator-china-weather_" + locale + ".qm", trans_path)) qDebug() << "Load translation file:"<< "indicator-china-weather_" + locale + ".qm from" << trans_path << "failed!"; else a.installTranslator(&app_trans); if(!qt_trans.load("qt_" + locale + ".qm", qt_trans_path)) qDebug() << "Load translation file:"<< "qt_" + locale + ".qm from" << qt_trans_path << "failed!"; else a.installTranslator(&qt_trans); } MainWindow w; DbusAdaptor adaptor(&w); Q_UNUSED(adaptor); auto connection = QDBusConnection::sessionBus(); if (!connection.registerService("com.kylin.weather") || !connection.registerObject("/com/kylin/weather", &w/*, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals*/)) { qCritical() << "QDbus register service failed reason:" << connection.lastError(); QDBusInterface iface("com.kylin.weather", "/com/kylin/weather", "com.kylin.weather", connection); iface.call("showMainWindow"); return 0; }//QDBusConnection::sessionBus().unregisterService("com.kylin.weather"); return a.exec(); } indicator-china-weather/src/citylistwidget-org.cpp0000664000175000017500000001102513643503425021325 0ustar fengfeng/* * Copyright (C) 2013 ~ 2018 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "citylistwidget.h" #include "cityitemwidget.h" #include "data.h" #include #include #include #include CityListWidget::CityListWidget(QWidget *parent) : QListWidget(parent) { this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); this->setFixedWidth(parent->width() - 2); this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_dataList.clear(); connect(this, &CityListWidget::itemDoubleClicked, this, [=] (QListWidgetItem *item) { CityItemWidget *fileItem = static_cast(itemWidget(item)); qDebug() << fileItem->getCityId(); }); this->loadCityItems(); } CityListWidget::~CityListWidget() { this->clearUI(); } void CityListWidget::resetData() { } void CityListWidget::clearUI() { for(int i = 0; i < this->count(); i++) { QListWidgetItem *listItem = item(i); CityItemWidget *item = static_cast(itemWidget(listItem)); if (item) { item->deleteLater(); } } this->clear(); } void CityListWidget::removeItemById(const QString &id) { QList items = findChildren(); for (CityItemWidget *item : items) { if (item->getCityId() == id) { this->removeItemWidget(item->getCityItem()); item->deleteLater(); break; } } } void CityListWidget::onRefreshUI() { this->clearUI(); this->loadCityItems(); } void CityListWidget::loadCityItems() { //test data; CitySettingData info; info.active = true; info.id = "101010100"; info.name = "北京"; info.temperature = "33"; info.icon = ":/res/weather_icons/lightgrey/100.png"; loadItem(info); CitySettingData info1; info1.active = false; info1.id = "101020100"; info1.name = "上海"; info1.temperature = "34"; info1.icon = ":/res/weather_icons/lightgrey/100.png"; loadItem(info1); CitySettingData info2; info2.active = false; info2.id = "101250101"; info2.name = "长沙"; info2.temperature = "35"; info2.icon = ":/res/weather_icons/lightgrey/100.png"; loadItem(info2); m_dataList.append(info); m_dataList.append(info1); m_dataList.append(info2); this->verticalScrollBar()->setValue(0); } void CityListWidget::loadItem(const CitySettingData &info) { if (m_dataList.count() > 10) { qDebug() << "Max len is 10"; return; } for (CitySettingData line : m_dataList) { if (info.id == line.id) { return; } } CityItemWidget *item = new CityItemWidget(info); connect(item, SIGNAL(enter()), this, SLOT(onMouseEnter())); connect(item, &CityItemWidget::requestDeleteCity, this, [=] (const QString id) { if (this->m_dataList.count() == 1) { qDebug() << "At least there must be a city!!!"; return; } for (CitySettingData line : m_dataList) { if (line.id == id) { //delete this city this->removeItemById(id); // If the deleted city is the default city if (line.active) { // Reset default city and Access the city's weather //TODO } } } }); this->addItem(item->getCityItem()); setItemWidget(item->getCityItem(), item); } void CityListWidget::onMouseEnter() { for(int i = 0; i < this->count(); i++) { QListWidgetItem *listItem = item(i); CityItemWidget *item = static_cast(itemWidget(listItem)); if (item->getCityId() == ((CityItemWidget*) sender())->getCityId()) { item->setItemHovered(); } else { item->unsetItemHovered(); } } } indicator-china-weather/src/citylistwidget-org.h0000664000175000017500000000245713643503425021003 0ustar fengfeng/* * Copyright (C) 2013 ~ 2018 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CITYLISTWIDGET_H #define CITYLISTWIDGET_H #include "cityitemwidget.h" #include class CitySettingData; class CityListWidget : public QListWidget { Q_OBJECT public: CityListWidget(QWidget *parent=0); ~CityListWidget(); void resetData(); void loadCityItems(); void clearUI(); void loadItem(const CitySettingData &info); void removeItemById(const QString &id); public slots: void onMouseEnter(); void onRefreshUI(); private: QList m_dataList; }; #endif // CITYLISTWIDGET_H indicator-china-weather/src/separator.cpp0000664000175000017500000000256113644002575017476 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "separator.h" VSeparator::VSeparator(QWidget *parent) : QFrame(parent) { this->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 1.0);}");//#eeeeee 0:完全透明 1:完全不透明 this->setFixedWidth(1); this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); } HSeparator::HSeparator(QWidget *parent) : QFrame(parent) { this->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.5);margin-left:5px;margin-right:5px;}");//#eeeeee 0:完全透明 1:完全不透明 this->setFixedHeight(1); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); } indicator-china-weather/src/separator.h0000664000175000017500000000204213644002575017135 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SEPARATOR_H #define SEPARATOR_H #include class VSeparator : public QFrame { Q_OBJECT public: explicit VSeparator(QWidget *parent = 0); }; class HSeparator : public QFrame { Q_OBJECT public: explicit HSeparator(QWidget *parent = 0); }; #endif // SEPARATOR_H indicator-china-weather/src/citylistwidget.cpp0000664000175000017500000000621513644002575020546 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "citylistwidget.h" #include "cityitemwidget.h" #include "data.h" #include #include #include #include #include CityListWidget::CityListWidget(QWidget *parent) : QWidget(parent) , m_layout(new QVBoxLayout) , m_timer(new QTimer(this)) { m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(1); this->setLayout(m_layout); m_timer->setSingleShot(true); m_timer->setInterval(15); connect(m_timer, &QTimer::timeout, this, &CityListWidget::updateCityListHeight, Qt::QueuedConnection); } CityListWidget::~CityListWidget() { if (m_timer) { disconnect(m_timer, SIGNAL(timeout()), this, SLOT(updateCityListHeight())); if(m_timer->isActive()) { m_timer->stop(); } delete m_timer; m_timer = nullptr; } const int count = m_layout->count(); for (int i = 0; i != count; ++i) { QLayoutItem *item = m_layout->takeAt(0); QWidget *w = item->widget(); w->removeEventFilter(this); w->setParent(nullptr); delete item; } } void CityListWidget::appendItem(CityItemWidget *item) { const int curIndex = m_layout->count(); m_layout->insertWidget(curIndex, item); item->installEventFilter(this); m_timer->start(); } void CityListWidget::removeItem(CityItemWidget *item) { m_layout->removeWidget(item); item->removeEventFilter(this); m_timer->start(); } int CityListWidget::itemCount() const { return m_layout->count(); } void CityListWidget::clearUI() { const int count = m_layout->count(); for (int i = 0; i != count; ++i) { QLayoutItem *item = m_layout->takeAt(0); QWidget *w = item->widget(); w->removeEventFilter(this); w->setParent(nullptr); delete item; } m_timer->start(); } CityItemWidget *CityListWidget::getItem(int index) { if(index < 0) { return NULL; } if(index < itemCount()) { return qobject_cast(m_layout->itemAt(index)->widget()); } return NULL; } void CityListWidget::updateCityListHeight() { this->setFixedHeight(m_layout->sizeHint().height()); } bool CityListWidget::eventFilter(QObject *obj, QEvent *event) { switch (event->type()) { case QEvent::Resize: m_timer->start(); break; default: break; } return false; } indicator-china-weather/src/aboutdialog.h0000664000175000017500000000356513644002575017442 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef ABOUTDIALOG_H #define ABOUTDIALOG_H #include #include #include #include #include class AboutDialog : public QDialog { Q_OBJECT public: AboutDialog(QWidget *parent = 0); ~AboutDialog(); QRect getParentGeometry() const; void moveToCenter(); QString linkWebsite(const QString &url, QString name = ""); public slots: void onLinkActivated(const QString &link); protected: void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: QPoint dragPosition; bool mousePressed; QPixmap m_pixmap; QString m_websiteLinkString; QLabel *m_iconLabel = nullptr; QLabel *m_nameLabel = nullptr; QLabel *m_versionLabel = nullptr; QLabel *m_descriptionLabel = nullptr; QLabel *m_appWebsiteLabel = nullptr; QLabel *m_copyrightLabel = nullptr; }; #endif // ABOUTDIALOG_H indicator-china-weather/src/activebutton.cpp0000664000175000017500000000377413644002575020214 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "activebutton.h" #include ActiveButton::ActiveButton(const QString &text, QWidget *parent) : QFrame(parent) { this->setFixedHeight(28); m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(5); m_btn = new QPushButton(this); m_btn->setFixedHeight(24); m_btn->setFocusPolicy(Qt::NoFocus); m_btn->setStyleSheet("QPushButton{border:none;text-align:center;font-size:14px;color:#ffffff;background:transparent;}"); m_btn->setText(text); QFont font = m_btn->font(); const QFontMetrics fm(font); m_btn->setFixedWidth(fm.width(m_btn->text()) + 10); m_label = new QLabel(this); m_label->setFixedSize(m_btn->width(), 2); m_label->setStyleSheet("QLabel{border:none;background-color:#ffffff;}"); m_label->setVisible(false); m_layout->addWidget(m_btn, 0, Qt::AlignCenter); m_layout->addStretch(); m_layout->addWidget(m_label, 0, Qt::AlignBottom); // adjustSize(); connect(m_btn, &QPushButton::clicked, this, &ActiveButton::btnClicked); } void ActiveButton::setActive(bool active) { this->m_isActive = active; if (this->m_isActive) { m_label->setVisible(true); } else { m_label->setVisible(false); } } indicator-china-weather/src/menuactiongroup.h0000664000175000017500000000262013644002575020356 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MENUACTIONGROUP_H #define MENUACTIONGROUP_H #include #include #include "menuaction.h" class QAction; class MenuActionGroup; class MenuActionGroupItem : public MenuAction { Q_OBJECT public: MenuActionGroupItem(QObject *parent, MenuActionGroup *group, int index); }; class MenuActionGroup : public QActionGroup { Q_OBJECT public: MenuActionGroup (QObject *parent); QString setCurrentCheckedIndex(int index); int getCurrentCheckedIndex(); void uncheckAll(); void clearAllActions(); void setActionsEnabled(bool enable); signals: void activated(int); }; #endif // MENUACTIONGROUP_H indicator-china-weather/src/locationworker.h0000664000175000017500000000264613644002575020211 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef LOCATIONWORKER_H #define LOCATIONWORKER_H #include #include #include #include "data.h" class LocationWorker; class WorkerThread : public QThread { Q_OBJECT public: explicit WorkerThread(LocationWorker *parent); ~WorkerThread() {} void run() Q_DECL_OVERRIDE; }; class LocationWorker : public QObject { Q_OBJECT public: explicit LocationWorker(QObject *parent = 0); ~LocationWorker(); QList exactMatchCity(const QString &inputText) const; private: friend class WorkerThread; QList m_locatonList; WorkerThread *m_workerThread = nullptr; }; #endif // LOCATIONWORKER_H indicator-china-weather/src/menuaction.cpp0000664000175000017500000000250513644002575017636 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "menuaction.h" #include MenuAction::MenuAction(QObject * parent) : QAction(parent) { addActionToParent(); } MenuAction::~MenuAction() { } void MenuAction::addActionToParent() { if (parent()) { if (parent()->inherits("QWidget")) { QWidget *w = static_cast (parent()); w->addAction(this); } } } void MenuAction::setActionIconAndText(const QIcon &icon, const QString &text) { setIcon(icon); setActionText(text); } void MenuAction::setActionText(const QString &text) { setText(text); } indicator-china-weather/src/mainwindow.cpp0000664000175000017500000005665613644055044017667 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "mainwindow.h" #include "titlebar.h" #include "contentwidget.h" #include "settingdialog.h" #include "aboutdialog.h" #include "promptwidget.h" #include "weatherworker.h" #include "maskwidget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include "preferences.h" #include "global.h" using namespace Global; inline QString convertCodeToBackgroud(int code) { if (code == 100 || code == 900) { return ":/res/background/weather-clear.png"; } else if (code <= 103 && code >= 101) { return ":/res/background/weather-few-clouds.png"; } else if (code == 104 || code == 901) { return ":/res/background/weather-overcast.png"; } else if (code <= 204 && code >= 200) { return ":/res/background/weather-clear.png"; } else if (code <= 213 && code >= 205) { return ":/res/background/weather-overcast.png"; } else if (code <= 399 && code >= 300) { return ":/res/background/weather-rain.png"; } else if (code <= 499 && code >= 400) { return ":/res/background/weather-snow.png"; } else if (code <= 502 && code >= 500) { return ":/res/background/weather-fog.png"; } else if (code <= 508 && code >= 503) { return ":/res/background/weather-sandstorm.png"; } else if (code <= 515 && code >= 509) { return ":/res/background/weather-fog.png"; } else { return ":/res/background/weather-clear.png"; } } MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) // , m_mousePressed(false) , m_centralWidget(new QWidget(this)) , m_titleBar(new TitleBar(this)) , m_contentWidget(new ContentWidget(this)) , m_pingbackTimer(new QTimer(this)) , m_tipTimer(new QTimer(this)) , m_autoRefreshTimer(new QTimer(this)) , m_actualizationTime(0) , m_weatherWorker(new WeatherWorker(this)) , m_maskWidget(new MaskWidget(this))//MaskWidget::Instance(); { judgeSystemLanguage(); this->setFixedSize(355, 552); this->setWindowFlags(Qt::FramelessWindowHint | Qt::Popup); this->setFocusPolicy(Qt::StrongFocus);//this->setFocusPolicy(Qt::NoFocus); //this->setWindowFlags(Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint); // this->setAttribute(Qt::WA_TranslucentBackground, true); //this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinimizeButtonHint);//ubuntu 16.04 可能需要加上Qt::WindowMinimizeButtonHint,否则showMinimized无效 this->setWindowTitle(tr("Kylin Weather")); //const auto ratio = qApp->devicePixelRatio(); this->setWindowIcon(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png"))/*.pixmap(QSize(64, 64) * ratio)*/); this->setStyleSheet("QMainWindow{color:white;background-image:url(':/res/background/weather-clear.png');background-repeat:no-repeat;}"); global_init(); m_updateTimeStr = QString(tr("Refresh time")); m_layout = new QVBoxLayout(m_centralWidget); m_layout->setContentsMargins(0,0,0,0); m_layout->setSpacing(0); m_layout->addWidget(m_titleBar);//height:32 m_layout->addWidget(m_contentWidget);//height:520 this->setCentralWidget(m_centralWidget); this->initMenuAndTray(); m_titleBar->setCityName(m_preferences->m_currentCity); //第一次启动麒麟天气时执行,创建china-weather-save文件 //CN101010100,beijing,北京,CN,China,中国 QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); QString savePath = homePath.at(0) + "/.config/china-weather-save"; if (!isFileExist(savePath)){ QFile file(savePath); file.open(QIODevice::WriteOnly | QIODevice::Text); file.write("101010100"); file.close(); } m_currentDesktop = qgetenv("XDG_CURRENT_DESKTOP"); if (m_currentDesktop.isEmpty()) { m_currentDesktop = qgetenv("XDG_SESSION_DESKTOP"); } if (m_preferences->weather.cond_code.contains(QChar('n'))) { this->setStyleSheet("QMainWindow{color:white;background-image:url(':/res/background/weather-clear-night.png');background-repeat:no-repeat;}"); m_contentWidget->setNightStyleSheets(); m_titleBar->setNightStyleSheets(); } else { QString styleSheetStr = QString("QMainWindow{color:white;background-image:url('%1');background-repeat:no-repeat;}").arg(convertCodeToBackgroud(m_preferences->weather.cond_code.toInt())); this->setStyleSheet(styleSheetStr); m_contentWidget->setDayStyleSheets(); m_titleBar->setDayStyleSheets(); } connect(m_titleBar, &TitleBar::requestShowSettingDialog, this, [=] { this->showSettingDialog(); }); m_hintWidget = new PromptWidget(this); m_hintWidget->setIconAndText(":/res/network_warn.png", tr("Network not connected")); m_hintWidget->move((this->width() - m_hintWidget->width())/2, (this->height() - m_hintWidget->height())/2); m_hintWidget->setVisible(false); m_movieWidget = new PromptWidget(tr("Getting data"), this, ":/res/link.gif", true); m_movieWidget->move((this->width() - m_hintWidget->width())/2, (this->height() - m_hintWidget->height())/2); m_movieWidget->setVisible(false); if (!m_weatherWorker->isNetWorkSettingsGood()) {//无网络连接 m_contentWidget->setNetworkErrorPages(); m_autoRefreshTimer->stop(); } else {//有网络连接,开始检查互联网是否可以ping通 m_weatherWorker->netWorkOnlineOrNot();//ping www.baidu.com } connect(m_weatherWorker, &WeatherWorker::nofityNetworkStatus, this, [=] (const QString &status) { if (status == "OK") {//互联网可以ping通 m_weatherWorker->requestPostHostInfoToWeatherServer(); // m_weatherWorker->startAutoLocationTask();//开始自动定位城市 //选择默认城市 QString m_cityId; QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); QString savePath = homePath.at(0) + "/.config/china-weather-save"; if (!isFileExist(savePath)){ m_cityId = "101010100"; } else { QFile file(savePath); file.open(QIODevice::ReadOnly | QIODevice::Text); QByteArray cityId = file.readAll(); m_cityId = (QString(cityId)); m_cityId.trimmed(); file.close(); } m_preferences->resetCurrentCityNameById(m_cityId); this->refreshCityActions(); this->startGetWeather(); } else {//互联网无法ping通 m_hintWidget->setIconAndText(":/res/network_warn.png", status); m_contentWidget->setNetworkErrorPages(); } }); connect(m_contentWidget, &ContentWidget::requestRetryWeather, this, [=] { m_weatherWorker->requestPostHostInfoToWeatherServer(); m_weatherWorker->startAutoLocationTask();//开始自动定位城市 }); connect(m_weatherWorker, &WeatherWorker::responseFailure, this, [=] (int code) { m_maskWidget->hide(); m_autoRefreshTimer->stop(); m_movieWidget->setVisible(false); m_hintWidget->setVisible(true); if (code == 0) { m_hintWidget->setIconAndText(":/res/network_warn.png", tr("Incorrect access address")); } else { m_hintWidget->setIconAndText(":/res/network_warn.png", QString(tr("Network error code:%1")).arg(QString::number(code))); } m_contentWidget->setNetworkErrorPages(); }); connect(m_weatherWorker, &WeatherWorker::requestDiplayServerNotify, this, [=] (const QString ¬ifyInfo) { if (!notifyInfo.isEmpty() && m_preferences->m_serverNotify) m_contentWidget->showServerNotifyInfo(notifyInfo); }); connect(m_weatherWorker, &WeatherWorker::observeDataRefreshed, this, [=] (const ObserveWeather &data) { m_maskWidget->hide(); m_autoRefreshTimer->start(m_preferences->m_updateFrequency * 1000 * 60); if (m_preferences->m_currentCity.isEmpty()) { m_preferences->m_currentCity = data.city; } m_movieWidget->setVisible(false); m_titleBar->setCityName(data.city); m_contentWidget->refreshObserveUI(data); this->refreshTrayMenuWeather(data); QString condCodeStr = data.cond_code; if (!condCodeStr.isEmpty()) { if (condCodeStr.contains(QChar('n'))) { this->setStyleSheet("QMainWindow{color:white;background-image:url(':/res/background/weather-clear-night.png');background-repeat:no-repeat;}"); m_contentWidget->setNightStyleSheets(); m_titleBar->setNightStyleSheets(); } else { QString styleSheetStr = QString("QMainWindow{color:white;background-image:url('%1');background-repeat:no-repeat;}").arg(convertCodeToBackgroud(condCodeStr.toInt())); this->setStyleSheet(styleSheetStr); m_contentWidget->setDayStyleSheets(); m_titleBar->setDayStyleSheets(); } } }); connect(m_weatherWorker, &WeatherWorker::forecastDataRefreshed, this, [=] (const QList &datas, const LifeStyle &data) { m_maskWidget->hide(); if (!m_autoRefreshTimer->isActive()) { m_autoRefreshTimer->start(m_preferences->m_updateFrequency * 1000 * 60); } m_movieWidget->setVisible(false); int len = datas.size(); if (len > 3) { len = 3; } for (int i = 0; i < len; ++i) { m_contentWidget->refreshForecastUI(datas[i], i); } m_contentWidget->refreshLifestyleUI(data); }); //自动定位成功后,更新各个控件的默认城市数据,并开始获取天气数据 connect(m_weatherWorker, &WeatherWorker::requestAutoLocationData, this, [=] (const CitySettingData &info, bool success) { if (success) {//自动定位城市成功后,更新各个ui,然后获取天气数据 if (m_setttingDialog) { m_setttingDialog->addCityItem(info); m_setttingDialog->refreshCityList(m_preferences->m_currentCity); } this->refreshCityActions(); m_cityMenu->menuAction()->setText(info.name); this->startGetWeather(); } else {//自动定位城市失败后,获取天气数据 this->startGetWeather(); } }); m_tipTimer->setInterval(60*1000); m_tipTimer->setSingleShot(false); connect(m_tipTimer, &QTimer::timeout, this, static_cast(&MainWindow::updateTimeTip)); connect(m_autoRefreshTimer, &QTimer::timeout, this, [=] { this->startGetWeather(); }); double value = m_preferences->m_opacity*0.01; if (value < 0.6) { value = 0.60; m_preferences->m_opacity = 60; } this->setOpacity(value); this->setVisible(false); } MainWindow::~MainWindow() { if (m_tipTimer->isActive()) { m_tipTimer->stop(); delete m_tipTimer; } global_end(); } void MainWindow::judgeSystemLanguage() { QLocale locale; //获取系统语言环境 if( locale.language() == QLocale::Chinese ) { qDebug() << "Chinese system"; return; } else { qDebug() << "Non-chinese system"; exit(0); } } bool MainWindow::isFileExist(QString fullFileName) { QFileInfo fileInfo(fullFileName); if(fileInfo.isFile()) { return true; } return false; } void MainWindow::updateTimeTip() { QDateTime time = QDateTime::currentDateTime(); int timeIntValue = time.toTime_t(); int ut = int((round(timeIntValue - m_actualizationTime)/60)); if (ut == 0 || m_actualizationTime == 0) { m_updateTimeStr = QString(tr("Refresh time:Just updated")); } else { if (ut < 2) { m_updateTimeStr = QString(tr("Refresh time:%1 minute ago")).arg(QString::number(ut)); } else { m_updateTimeStr = QString(tr("Refresh time:%1 minutes ago")).arg(QString::number(ut)); } } if (QDateTime::currentDateTime().toTime_t()-m_actualizationTime > m_preferences->m_updateFrequency*1000*60) { m_actualizationTime = QDateTime::currentDateTime().toTime_t(); } m_updateTimeAction->setText(m_updateTimeStr); //m_weatherWorker->requestPingBackWeatherServer(); } void MainWindow::setOpacity(double opacity) { this->setWindowOpacity(opacity); } void MainWindow::startGetWeather() { m_maskWidget->showMask(); m_tipTimer->stop(); m_movieWidget->setVisible(true); m_titleBar->setCityName(m_preferences->m_currentCity); m_weatherWorker->refreshObserveWeatherData(m_preferences->m_currentCityId); m_weatherWorker->refreshForecastWeatherData(m_preferences->m_currentCityId); } void MainWindow::initMenuAndTray() { m_mainMenu = new QMenu(this); m_cityMenu = new QMenu(this); m_cityMenu->menuAction()->setText(tr("City")); m_cityActionGroup = new MenuActionGroup(this); connect(m_cityActionGroup, &MenuActionGroup::activated, this, [=] (int index) { QString cur_cityName = m_cityActionGroup->setCurrentCheckedIndex(index); if (m_preferences->citiesCount() > 0 && m_preferences->citiesCount() >= index) { m_cityMenu->menuAction()->setText(cur_cityName/*m_preferences->cityName(index)*/); m_preferences->setCurrentCityIdAndName(cur_cityName/*index*/); if (m_setttingDialog) { m_setttingDialog->refreshCityList(m_preferences->m_currentCity); } this->startGetWeather(); } }); this->refreshCityActions(); m_mainMenu->addMenu(m_cityMenu); //QAction *m_switchAciton = m_mainMenu->addAction(tr("Switch")); m_mainMenu->addSeparator(); m_weatherAction = new QAction("N/A",this); m_temperatureAction = new QAction("N/A",this); m_sdAction = new QAction("N/A",this); m_aqiAction = new QAction("N/A",this); m_releaseTimeAction = new QAction(tr("Release time"),this); m_updateTimeAction = new QAction(m_updateTimeStr,this); m_mainMenu->addAction(m_weatherAction); m_mainMenu->addAction(m_temperatureAction); m_mainMenu->addAction(m_sdAction); m_mainMenu->addAction(m_aqiAction); m_mainMenu->addAction(m_releaseTimeAction); m_mainMenu->addAction(m_updateTimeAction); QAction *m_forecastAction = m_mainMenu->addAction(tr("Weather Forecast")); connect(m_forecastAction, &QAction::triggered, this, [=] { if (!this->isVisible()) { this->movePosition(); } else { this->setVisible(false); } }); m_mainMenu->addSeparator(); QAction *m_settingAction = m_mainMenu->addAction(tr("Settings")); m_settingAction->setIcon(QIcon(":/res/prefs.png")); QAction *m_aboutAction = m_mainMenu->addAction(tr("Kylin Weather - About")); m_aboutAction->setIcon(QIcon(":/res/about_normal.png")); QAction *m_quitAction = m_mainMenu->addAction(tr("Exit")); m_quitAction->setIcon(QIcon(":/res/quit_normal.png")); //for test change weather background /*m_isDN = true; connect(m_switchAciton, &QAction::triggered, this, [=] { if (m_isDN) { m_isDN = false; QString currentBg = QString("QMainWindow{color:white;background-image:url('%1');background-repeat:no-repeat;}").arg(":/res/background/weather-clear-night.png"); this->setStyleSheet(currentBg); m_contentWidget->setNightStyleSheets(); m_titleBar->setNightStyleSheets(); } else { m_isDN = true; QString currentBg = QString("QMainWindow{color:white;background-image:url('%1');background-repeat:no-repeat;}").arg(":/res/background/weather-clear.png"); this->setStyleSheet(currentBg); m_contentWidget->setDayStyleSheets(); m_titleBar->setDayStyleSheets(); } });*/ connect(m_settingAction, &QAction::triggered, this, [=] { this->showSettingDialog(); }); connect(m_aboutAction, &QAction::triggered, this, [=] { AboutDialog dlg; dlg.exec(); }); connect(m_quitAction, &QAction::triggered, qApp, &QApplication::quit); m_systemTray = new QSystemTrayIcon(this); m_systemTray->setToolTip(QString(tr("Kylin Weather"))); m_systemTray->setIcon(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png"))); connect(m_systemTray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(trayIconActivated(QSystemTrayIcon::ActivationReason))); m_systemTray->show(); m_systemTray->setContextMenu(m_mainMenu); QShortcut *m_quitShortCut = new QShortcut(QKeySequence("Ctrl+Q"), this); connect(m_quitShortCut, SIGNAL(activated()), qApp, SLOT(quit())); } void MainWindow::showSettingDialog() { if (!m_setttingDialog) { createSettingDialog(); } m_setttingDialog->moveToCenter(); } void MainWindow::createSettingDialog() { QApplication::setOverrideCursor(Qt::WaitCursor); m_setttingDialog = new SettingDialog; m_setttingDialog->setModal(false); connect(m_setttingDialog, SIGNAL(applied()), this, SLOT(applySettings())); connect(m_setttingDialog, &SettingDialog::requestRefreshCityMenu, this, [this] (bool removedDefault) { this->refreshCityActions(); if (removedDefault) {//刪除了默认城市后,重新设置了列表中第一个城市为默认城市后,从服务端获取该城市的天气 this->startGetWeather(); } }); connect(m_setttingDialog, &SettingDialog::requestRefreshWeatherById, this, [this] (const QString &id) { m_preferences->resetCurrentCityNameById(id); this->refreshCityActions(); this->startGetWeather(); }); connect(m_setttingDialog, &SettingDialog::requestChangeOpacity, this, [this] (int opcatity) { double value = opcatity*0.01; if (value < 0.6) { value = 0.60; m_preferences->m_opacity = 60; } this->setOpacity(value); }); QApplication::restoreOverrideCursor(); } void MainWindow::refreshCityActions() { // clear orig action list m_cityActionGroup->clearAllActions(); // add new action list int i = 0; int currentIndex = 0; foreach (QString city, m_preferences->getCitiesList()) { if (city == m_preferences->m_currentCity) { currentIndex = i; } MenuActionGroupItem *cityAction = new MenuActionGroupItem(this, m_cityActionGroup, i); cityAction->setActionText(city); i++; } m_cityMenu->addActions(m_cityActionGroup->actions()); m_cityMenu->menuAction()->setText(m_preferences->m_currentCity); m_cityActionGroup->setCurrentCheckedIndex(currentIndex); } void MainWindow::refreshTrayMenuWeather(const ObserveWeather &data) { m_systemTray->setIcon(QIcon(QString(":/res/weather_icons/white/%1.png").arg(data.cond_code))); m_weatherAction->setText(data.cond_txt); m_temperatureAction->setText(QString(tr("Temperature:%1˚C")).arg(data.tmp)); m_sdAction->setText(QString(tr("Relative humidity:%1")).arg(data.hum)); if (data.air.isEmpty() || data.air.contains("Unknown")) { m_aqiAction->setText(QString(tr("Air quality:%1")).arg(QString(tr("Unknown")))); } else { m_aqiAction->setText(QString(tr("Air quality:%1")).arg(data.air)); } m_releaseTimeAction->setText(QString(tr("Release time:%1")).arg(data.updatetime)); m_actualizationTime = 0; this->updateTimeTip(); m_tipTimer->start(); } void MainWindow::applySettings() { } void MainWindow::resetWeatherBackgroud(const QString &imgPath) { QString weatherBg = imgPath; if(!QFileInfo(weatherBg).exists()) weatherBg = ":/res/background/weather-clear.png"; QString currentBg = QString("QMainWindow{color:white;background-image:url('%1');background-repeat:no-repeat;}").arg(weatherBg); this->setStyleSheet(currentBg); } void MainWindow::trayIconActivated(QSystemTrayIcon::ActivationReason reason) { switch(reason) { /*case QSystemTrayIcon::DoubleClick: { QRect rect = m_systemTray->geometry(); QMenu *currentMenu = m_systemTray->contextMenu(); if (currentMenu->isHidden()) { currentMenu->popup(QPoint(rect.x()+8, rect.y())); } } break;*/ case QSystemTrayIcon::Trigger: case QSystemTrayIcon::MiddleClick: if (this->isVisible()) { this->setVisible(false); } else { this->movePosition(); } break; default: break; } } void MainWindow::movePosition() { QRect availableGeometry = qApp->primaryScreen()->availableGeometry(); QRect screenGeometry = qApp->primaryScreen()->geometry(); //panel in bottom or right, then show on topRight if (availableGeometry.x() == screenGeometry.x() && availableGeometry.y() == screenGeometry.y()) { this->move(availableGeometry.x() + availableGeometry.width() - this->width(), availableGeometry.height() - this->height()); } else {//panel in top or left, then show on bottomRight this->move(availableGeometry.x() + availableGeometry.width() - this->width(), availableGeometry.y()); } this->showNormal(); this->raise(); this->activateWindow(); /*for (QScreen *screen : qApp->screens()) { if (screen->geometry().contains(pos)) { } }*/ } /*void MainWindow::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { this->m_dragPosition = event->globalPos() - frameGeometry().topLeft(); this->m_mousePressed = true; } if (m_hintWidget->isVisible()) m_hintWidget->setVisible(false); QMainWindow::mousePressEvent(event); } void MainWindow::mouseReleaseEvent(QMouseEvent *event) { this->m_mousePressed = false; QMainWindow::mouseReleaseEvent(event); } void MainWindow::mouseMoveEvent(QMouseEvent *event) { if (this->m_mousePressed) { move(event->globalPos() - this->m_dragPosition); } QMainWindow::mouseMoveEvent(event); } void MainWindow::showEvent(QShowEvent *event) { QWidget::showEvent(event); //m_weatherWorker->refreshForecastWeatherData(m_preferences->m_currentCityId); }*/ void MainWindow::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) { if (this->isVisible()) { this->setVisible(false); } event->accept(); } QMainWindow::keyPressEvent(event); } void MainWindow::focusOutEvent(QFocusEvent *event) { if (event->reason() == Qt::ActiveWindowFocusReason) { this->setVisible(false); } return QMainWindow::focusOutEvent(event); } indicator-china-weather/src/spinbox.h0000664000175000017500000000234413644002575016624 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SPINBOX_H #define SPINBOX_H #include #include #include class SpinBox : public QSpinBox { Q_OBJECT public: explicit SpinBox(QWidget *parent = 0); ~SpinBox(); int getSpinValue() const { return this->m_value; } void setSpinValue(int value); protected: void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; private: QFrame *m_frame = nullptr; QLabel *m_valueLabel = nullptr; int m_value; }; #endif // SPINBOX_H indicator-china-weather/src/global.cpp0000664000175000017500000000255513644002575016741 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "global.h" #include "preferences.h" #include #include #include #include #include QSettings *Global::m_settings = 0; Preferences *Global::m_preferences = 0; using namespace Global; void Global::global_init() { QString filename = QDir::homePath() + "/.config/kylin-weather/kylin-weather.ini"; m_settings = new QSettings(filename, QSettings::IniFormat); m_settings->setIniCodec("UTF-8"); m_preferences = new Preferences; } void Global::global_end() { delete m_preferences; m_preferences = 0; delete m_settings; m_settings = 0; } indicator-china-weather/src/translucentlabel.cpp0000664000175000017500000001001713644002575021033 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "translucentlabel.h" #include #include #include #include TranslucentLabel::TranslucentLabel(bool showTip, QWidget *parent) : QLabel(parent), m_showTip(showTip) { //使用颜色值设置背景 this->setStyleSheet("QLabel{border-radius:4px;background-color:rgba(0,0,0,0.2);color:rgb(255,255,255);}"); //使用图片设置背景 // this->setStyleSheet("QLabel{background:transparent;background-image:url(':/res/min_bg.png');}");//border-image this->setFixedSize(89, 26); this->setFocusPolicy(Qt::NoFocus); if (m_showTip) { this->setFocusPolicy(Qt::ClickFocus); this->setMouseTracking(true); installEventFilter(this); } m_icon = new QLabel(this); m_icon->setStyleSheet("QLabel{border:none;background:transparent;background-color:transparent;}"); //m_icon->setScaledContents(true);//自动缩放,显示图像大小自动调整为Qlabel大小 m_icon->setFixedSize(12, 16); m_text = new QLabel(this); m_text->adjustSize();//QLabel自适应文字的大小 m_text->setAlignment(Qt::AlignLeft); m_text->setStyleSheet("QLabel{border:none;background:transparent;background-color:transparent;color:#ffffff;font-size:12px;}"); QHBoxLayout *m_layout = new QHBoxLayout(this); m_layout->setContentsMargins(5, 0, 1, 0); m_layout->setSpacing(2); m_layout->addWidget(m_icon, 0, Qt::AlignLeft | Qt::AlignVCenter); m_layout->addWidget(m_text, 1, Qt::AlignLeft | Qt::AlignVCenter); this->setLayout(m_layout); } void TranslucentLabel::setLabelIcon(const QString &iconPath) { m_icon->setPixmap(QPixmap(iconPath)); } void TranslucentLabel::setLabelText(const QString &text) { QFont font = m_text->font(); const QFontMetrics fm(font); QString elided_text = fm.elidedText(text, Qt::ElideRight, this->width() - m_icon->width() - 8); m_text->setText(elided_text); } bool TranslucentLabel::eventFilter(QObject *obj, QEvent *event) { switch (event->type()) { case QEvent::Enter: { QWidget *widget = qobject_cast(obj); if (widget) { widget->setCursor(QCursor(Qt::PointingHandCursor)); } break; } case QEvent::Leave: { QWidget *widget = qobject_cast(obj); if (!widget) { widget->unsetCursor(); } break; } default: break; } return QObject::eventFilter(obj, event); } void TranslucentLabel::mousePressEvent(QMouseEvent *event) { if (m_showTip) { emit this->clicked(); } QLabel::mousePressEvent(event); } /*bool TranslucentLabel::event(QEvent *event) { switch (event->type()) { case QEvent::MouseButtonPress: qDebug() << "press."; break; default: break; } return QWidget::event(event); } void TranslucentLabel::focusOutEvent(QFocusEvent *event) { QPoint mousePos = mapToParent(mapFromGlobal(QCursor::pos())); if (!this->geometry().contains(mousePos)) { if (event && event->reason() == Qt::MouseFocusReason) { qDebug() << "focus out..........."; } } QLabel::focusOutEvent(event); } void TranslucentLabel::focusInEvent(QFocusEvent *event) { qDebug() << "focus in..........."; QLabel::focusInEvent(event); }*/ indicator-china-weather/src/citywidget.h0000664000175000017500000000353613644002575017322 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CITYWIDGET_H #define CITYWIDGET_H #include #include #include class CityListWidget; class CitySettingData; class QPushButton; class CityWidget : public QWidget { Q_OBJECT public: explicit CityWidget(QWidget *parent = 0); ~CityWidget(); void loadCityItems(); void refreshCityList(const QString &id); public slots: void addCityItem(const CitySettingData &info); void removeCityItemById(const QString &id); // void onMouseEnter(); void refreshListWeatherStatus(); signals: void requestAddCity(); void requestRefreshCityMenu(bool removedDefault); //void requestSetDefaultCity(); void requestRefreshWeatherById(const QString &id); void responseCityError(const QString &info); private: bool event(QEvent *event); private: CityListWidget *m_cityListWidget = nullptr; QPushButton *m_addBtn = nullptr; QVBoxLayout *m_layout = nullptr; QList m_dataList; QScrollArea *m_scrollArea = nullptr; QWidget *m_widget = nullptr; QTimer *m_timer = nullptr; }; #endif // CITYWIDGET_H indicator-china-weather/src/global.h0000664000175000017500000000177313644002575016407 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef GLOBAL_H #define GLOBAL_H #include class QSettings; class Preferences; namespace Global { extern QSettings *m_settings; extern Preferences *m_preferences; void global_init(); void global_end(); } #endif // GLOBAL_H indicator-china-weather/src/settingtitlebar.cpp0000664000175000017500000001370113644002575020700 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "settingtitlebar.h" #include "activebutton.h" #include #include #include #include SettingTitleBar::SettingTitleBar(QWidget *parent) : QWidget(parent) , m_borderColor(QColor(255, 255, 255, 153)) , m_borderRadius(1) , m_borderWidth(1) , m_bgBrush(QBrush(QColor("#1374e8"))) , m_timer(new QTimer(this)) { this->initWidgets(); m_timer->setSingleShot(true); m_timer->setInterval(1000*5); connect(m_timer, &QTimer::timeout, this, [=] { m_timer->stop(); m_tipLabel->setVisible(false); }, Qt::QueuedConnection); } SettingTitleBar::~SettingTitleBar() { QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void SettingTitleBar::initLeftContent() { QWidget *w = new QWidget; m_lLayout = new QHBoxLayout(w); m_lLayout->setContentsMargins(0, 0, 0, 0); m_lLayout->setSpacing(0); m_toplayout->addWidget(w, 1, Qt::AlignLeft); } void SettingTitleBar::initMiddleContent() { QWidget *w = new QWidget; w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_mLayout = new QHBoxLayout(w); m_mLayout->setContentsMargins(0, 0, 0, 0); m_mLayout->setSpacing(5); m_toplayout->addWidget(w); QLabel *m_iconLabel = new QLabel; m_iconLabel->setContentsMargins(0, 0, 0, 0); QPixmap iconPixmap = QPixmap(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather_min.png")).pixmap(QSize(16, 16))); m_iconLabel->setPixmap(iconPixmap); m_iconLabel->setFixedSize(iconPixmap.size()); QLabel *m_titleLabel = new QLabel; m_titleLabel->setStyleSheet("QLabel{font-size:12px;color: rgb(255,255,255);background-color:transparent;}"); m_titleLabel->setText(tr("Kylin Weather - Setting")); m_mLayout->addWidget(m_iconLabel); m_mLayout->addWidget(m_titleLabel); } void SettingTitleBar::initRightContent() { QWidget *w = new QWidget; m_rLayout = new QHBoxLayout(w); m_rLayout->setContentsMargins(0, 0, 5, 0); m_rLayout->setSpacing(0); m_toplayout->addWidget(w, 1, Qt::AlignRight); m_closeBtn = new QPushButton(this); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setFixedSize(32,32); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/close_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/close_hover_btn.png');}QPushButton:pressed{background:url(':/res/close_pressed_btn.png');}"); m_rLayout->addWidget(m_closeBtn); connect(m_closeBtn, &QPushButton::clicked, this, &SettingTitleBar::requestCloseDialog); } void SettingTitleBar::initBottomContent() { QWidget *w = new QWidget; m_bLayout = new QHBoxLayout(w); m_bLayout->setContentsMargins(10, 0, 20, 0); m_bLayout->setSpacing(10); m_layout->addWidget(w); ActiveButton *locationBtn = new ActiveButton(tr("Location Setting")); locationBtn->setActive(true); ActiveButton *systemBtn = new ActiveButton(tr("System Setting")); m_tipLabel = new QLabel(this); m_tipLabel->setFixedHeight(28); m_tipLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter); m_tipLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#fff222;font-size:12px;}"); m_tipLabel->setVisible(false); m_bLayout->addWidget(locationBtn); m_bLayout->addWidget(systemBtn); m_bLayout->addStretch(); m_bLayout->addWidget(m_tipLabel); connect(locationBtn, &ActiveButton::btnClicked, this, [=] { locationBtn->setActive(true); systemBtn->setActive(false); emit this->requestSwitchPage(true); }); connect(systemBtn, &ActiveButton::btnClicked, this, [=] { systemBtn->setActive(true); locationBtn->setActive(false); emit this->requestSwitchPage(false); }); } void SettingTitleBar::initWidgets() { m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); this->setLayout(m_layout); m_toplayout = new QHBoxLayout; m_toplayout->setContentsMargins(0, 0, 0, 0); m_toplayout->setSpacing(0); m_layout->addLayout(m_toplayout); initLeftContent(); initMiddleContent(); initRightContent(); initBottomContent(); } void SettingTitleBar::showWarnInfo(const QString &info) { m_tipLabel->setText(info); m_tipLabel->setVisible(true); m_timer->start(); } void SettingTitleBar::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // QPainterPath outBorderPath; // outBorderPath.addRoundedRect(this->rect(), m_borderRadius, m_borderRadius); // QPen pen(m_borderColor, m_borderWidth); // painter.setPen(pen); // painter.drawPath(outBorderPath); // QRect borderRect; // borderRect.setRect(this->rect().x() + m_borderWidth, this->rect().y() + m_borderWidth, this->rect().width() - m_borderWidth * 2, this->rect().height() - m_borderWidth * 2); // QPainterPath inBorderPath; // inBorderPath.addRoundedRect(borderRect, m_borderRadius, m_borderRadius); // painter.setClipPath(inBorderPath); painter.fillRect(0, 0, width(), height(), m_bgBrush); } indicator-china-weather/src/searchmodel.h0000664000175000017500000000245013644002575017426 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "data.h" class SearchModel : public QAbstractListModel { Q_OBJECT public: explicit SearchModel(QObject *parent = 0); ~SearchModel(); void setLocationData(const QList &results); QList locationList() const; private: int rowCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; bool insertColumns(int column, int count, const QModelIndex & parent = QModelIndex()); QList m_locationDataList; }; indicator-china-weather/src/cityitemwidget.cpp0000664000175000017500000001302013644002575020521 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "cityitemwidget.h" #include #include #include #include CityItemWidget::CityItemWidget(CitySettingData info, QWidget *parent) : QWidget(parent) { this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); this->setFixedSize(469, 46); this->m_data = info; this->m_id = info.id; // item = new QListWidgetItem(); // item->setSizeHint(QSize(this->width(), 36)); m_layout = new QHBoxLayout(this); m_layout->setContentsMargins(10, 0, 5, 0); m_layout->setSpacing(5); m_iconLabel = new QLabel(this); m_iconLabel->setFixedSize(24, 24); m_iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); // m_iconLabel->setScaledContents(true);//自动缩放,显示图像大小自动调整为Qlabel大小 m_cityLabel = new QLabel(this); m_cityLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:14px;}"); m_temperatureLabel = new QLabel(this); m_temperatureLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:14px;}"); m_defaultBtn = new QPushButton(this); m_defaultBtn->setFocusPolicy(Qt::NoFocus); m_defaultBtn->setStyleSheet("QPushButton{border:none;text-align:center;background:transparent;background-color:transparent;color:#0a9ff5;font-size:14px;}"); m_defaultBtn->setText(tr("Set as default")); m_defaultBtn->setCursor(QCursor(Qt::PointingHandCursor)); m_defaultBtn->setVisible(false); QFont font = m_defaultBtn->font(); const QFontMetrics fm(font); m_defaultBtn->setFixedWidth(fm.width(m_defaultBtn->text()) + 10); m_deleteBtn = new QPushButton(this); m_deleteBtn->setFocusPolicy(Qt::NoFocus); m_deleteBtn->setFixedSize(16, 15); m_deleteBtn->setStyleSheet("QPushButton{background-image:url(':/res/delete_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/delete_hover_pressed_btn.png');}QPushButton:pressed{background:url(':/res/delete_hover_pressed_btn.png');}"); m_deleteBtn->setCursor(QCursor(Qt::PointingHandCursor)); m_layout->addWidget(m_iconLabel); m_layout->addWidget(m_cityLabel); m_layout->addStretch(); m_layout->addWidget(m_defaultBtn); m_layout->addSpacing(20); m_layout->addWidget(m_temperatureLabel); m_layout->addWidget(m_deleteBtn); m_layout->addSpacing(15); connect(m_defaultBtn, &QPushButton::clicked, this, [=] { emit this->requestSetDefaultCityById(this->getCityId()); }); connect(m_deleteBtn, &QPushButton::clicked, this, [=] { emit this->requestDeleteCity(this->getCityId()); }); QPixmap pixmap = QPixmap(info.icon); pixmap = pixmap.scaled(24, 24, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_iconLabel->setPixmap(pixmap); if (info.active) { m_cityLabel->setText(QString(tr("%1 [Default]")).arg(info.name)); } else { m_cityLabel->setText(info.name); } m_temperatureLabel->setText(info.temperature); } //QListWidgetItem *CityItemWidget::getCityItem() //{ // return item; //} void CityItemWidget::setItemAction(bool active) { if (active) { m_data.active = true; m_cityLabel->setText(QString(tr("%1 [Default]")).arg(m_data.name)); } else { m_data.active = false; m_cityLabel->setText(m_data.name); } } void CityItemWidget::setItemWeather(const QString &temp, const QString &iconPath) { m_data.icon = iconPath; m_data.temperature = temp; m_temperatureLabel->setText(m_data.temperature); QPixmap pixmap = QPixmap(m_data.icon); pixmap = pixmap.scaled(24, 24, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_iconLabel->setPixmap(pixmap); } void CityItemWidget::setItemHovered() { m_mouseHover = true; update(); } void CityItemWidget::unsetItemHovered() { m_mouseHover = false; update(); } QString CityItemWidget::getCityId() { return this->m_id; } void CityItemWidget::enterEvent(QEvent *event) { // emit this->enter(); QWidget::enterEvent(event); this->m_mouseHover = true; update(); } void CityItemWidget::leaveEvent(QEvent *event) { QWidget::leaveEvent(event); this->m_mouseHover = false; update(); } void CityItemWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); if (m_mouseHover) { QPainterPath path; path.addRect(QRectF(this->rect().x(), this->rect().y(), this->rect().width(), this->rect().height())); painter.setOpacity(1.0); painter.fillPath(path, QColor("#f5fbff")); if (!m_data.active) { m_defaultBtn->setVisible(true); } else { m_defaultBtn->setVisible(false); } } else { m_defaultBtn->setVisible(false); } } indicator-china-weather/src/aboutdialog.cpp0000664000175000017500000002011713644002575017765 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "aboutdialog.h" #include #include #include #include #include #include AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent) , mousePressed(false) , m_pixmap(QPixmap(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png")).pixmap(QSize(64, 64)))) // , m_pixmap(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png")).pixmap(QSize(64, 64)).scaled(QSize(64, 64), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)) , m_websiteLinkString("%2") { this->setStyleSheet("QDialog{border:1px solid #000000;border-radius:2px;background:rgba(255, 255, 255, 0.7);}QDialog:hover{background: rgba(255, 255, 255, 1.0);}"); this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); this->setWindowTitle(tr("Kylin Weather - About")); this->setWindowIcon(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png"))); this->setFixedWidth(456); //边框阴影效果 // QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this); // shadow_effect->setBlurRadius(5); // shadow_effect->setColor(QColor(0, 0, 0, 127)); // shadow_effect->setOffset(2, 4); // this->setGraphicsEffect(shadow_effect); QWidget *topWidget = new QWidget; topWidget->setStyleSheet("QWidget{border:none; background-color:#1374e8;}"); topWidget->setContentsMargins(1,1,1,0); QHBoxLayout *toplayout = new QHBoxLayout(topWidget); toplayout->setContentsMargins(5, 0, 0, 0); toplayout->setSpacing(0); QLabel *label = new QLabel(); label->setStyleSheet("QLabel{background-color:transparent;font-size:16px;color:#000000;}"); label->setStyleSheet("QLabel{background:transparent;border:none;}"); label->setText(tr("Kylin Weather - About")); QPushButton *closeBtn = new QPushButton(); closeBtn->setFocusPolicy(Qt::NoFocus); closeBtn->setFixedSize(32,32); closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/close_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/close_hover_btn.png');}QPushButton:pressed{background:url(':/res/close_pressed_btn.png');}"); connect(closeBtn, &QPushButton::clicked, this, [=] { this->close(); }); toplayout->addWidget(label, 0, Qt::AlignVCenter | Qt::AlignLeft); toplayout->addStretch(); toplayout->addWidget(closeBtn, 0, Qt::AlignTop | Qt::AlignRight); m_iconLabel = new QLabel(); m_iconLabel->setContentsMargins(0, 0, 0, 0); m_iconLabel->setPixmap(m_pixmap); m_iconLabel->setFixedSize(m_pixmap.size()); m_nameLabel = new QLabel(); m_nameLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:16px;}"); //m_nameLabel->setText(qApp->applicationName()); m_nameLabel->setText(tr("Kylin Weather")); m_versionLabel = new QLabel(); m_versionLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#00609a;font-size:12px;}"); m_versionLabel->setText(qApp->applicationVersion()); m_appWebsiteLabel = new QLabel(); m_appWebsiteLabel->setStyleSheet("QLabel{border:none;background-color:transparent;font-size:12px;}");//color:#808080; m_appWebsiteLabel->setContextMenuPolicy(Qt::NoContextMenu); m_appWebsiteLabel->setOpenExternalLinks(true); // m_appWebsiteLabel->setText(QString(m_websiteLinkString).arg("https://github.com/UbuntuKylin/indicator-china-weather").arg("https://github.com/UbuntuKylin/indicator-china-weather")); m_appWebsiteLabel->setText(tr("Code website:") + " " + this->linkWebsite("https://github.com/UbuntuKylin/indicator-china-weather") + "

" + tr("UbuntuKylin official website:") + " " + this->linkWebsite("https://www.ubuntukylin.com") + "

" + tr("Developer's personal home page:") + " " + this->linkWebsite("https://eightplus.github.io") + "
"); m_descriptionLabel = new QLabel(); m_descriptionLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_descriptionLabel->setAlignment(Qt::AlignHCenter); m_descriptionLabel->setWordWrap(true); m_descriptionLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_descriptionLabel->setText(tr("Real-time and three-day weather forecast information is obtained from Ubuntu Kylin weather server, which supports automatic positioning, multi-city switching and automatic data updating.") + "\n"); m_copyrightLabel = new QLabel(); m_copyrightLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#00609a;font-size:12px;}"); m_copyrightLabel->setText("Copyright © 2013-2019 Ubuntu Kylin Team, lixiang@kylinos.cn"); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setContentsMargins(1, 1, 1, 20); mainLayout->setSpacing(10); mainLayout->addWidget(topWidget, 0, Qt::AlignTop); mainLayout->addWidget(m_iconLabel, 0, Qt::AlignHCenter); mainLayout->addWidget(m_nameLabel, 0, Qt::AlignHCenter); mainLayout->addWidget(m_versionLabel, 0, Qt::AlignHCenter); mainLayout->addWidget(m_appWebsiteLabel, 0, Qt::AlignHCenter); mainLayout->addWidget(m_descriptionLabel, 0, Qt::AlignHCenter); mainLayout->addWidget(m_copyrightLabel, 0, Qt::AlignHCenter); // connect(m_appWebsiteLabel, &QLabel::linkActivated, this, &AboutDialog::onLinkActivated); } AboutDialog::~AboutDialog() { } QString AboutDialog::linkWebsite(const QString &url, QString name) { if (name.isEmpty()) { name = url; } // return QString("" + name + ""); return QString("" + name + ""); } void AboutDialog::onLinkActivated(const QString &link) { QDesktopServices::openUrl(QUrl(link)); } void AboutDialog::showEvent(QShowEvent *event) { QDialog::showEvent(event); this->adjustSize(); } void AboutDialog::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Escape) { this->close(); event->accept(); } QDialog::keyPressEvent(event); } QRect AboutDialog::getParentGeometry() const { if (this->parentWidget()) { return this->parentWidget()->window()->geometry(); } else { QPoint pos = QCursor::pos(); for (QScreen *screen : qApp->screens()) { if (screen->geometry().contains(pos)) { return screen->geometry(); } } } return qApp->primaryScreen()->geometry(); } void AboutDialog::moveToCenter() { QRect qr = geometry(); qr.moveCenter(this->getParentGeometry().center()); move(qr.topLeft()); } void AboutDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { this->dragPosition = event->globalPos() - frameGeometry().topLeft(); this->mousePressed = true; } QDialog::mousePressEvent(event); } void AboutDialog::mouseReleaseEvent(QMouseEvent *event) { this->mousePressed = false; QDialog::mouseReleaseEvent(event); } void AboutDialog::mouseMoveEvent(QMouseEvent *event) { if (this->mousePressed) { move(event->globalPos() - this->dragPosition); } QDialog::mouseMoveEvent(event); } indicator-china-weather/src/searchinputedit.cpp0000664000175000017500000000573013644002575020672 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchinputedit.h" #include #include #include SearchInputEdit::SearchInputEdit(QWidget* parent) :QLineEdit(parent) , m_searchText(tr("Please input the city to search")) , m_searchPixmap(QPixmap(":/res/search.png")) { this->setStyleSheet("QLineEdit{border:1px solid white;background-color:#3892eb;color:#ffffff;font-size:12px}"); this->setFocusPolicy(Qt::ClickFocus); this->setFocus(); } void SearchInputEdit::paintEvent(QPaintEvent *event) { QLineEdit::paintEvent(event); //QPainter painter(this); //painter.setRenderHint(QPainter::Antialiasing); if (!this->hasFocus() && this->text().isEmpty()) { QRect rect = this->rect(); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setOpacity(0.6); painter.fillRect(this->rect(), QColor(56,146,235));//#3892eb QFont curFont = painter.font();//QGuiApplication::font(); curFont.setPixelSize(12);//font.setPointSize(12); QFontMetrics fm(curFont); QPen pen(Qt::white); painter.setPen(pen); painter.setFont(curFont); int textWidth = fm.width(m_searchText); int iconWidth = m_searchPixmap.width(); QRect textRect(5, 0, textWidth, rect.height()); painter.drawText(textRect, Qt::AlignVCenter | Qt::AlignLeft, m_searchText); QRect iconRect(QPoint(rect.width() - iconWidth/qApp->devicePixelRatio() - 5, rect.height()/2 - m_searchPixmap.height()/qApp->devicePixelRatio()/2), m_searchPixmap.size()/qApp->devicePixelRatio()); painter.drawPixmap(iconRect, m_searchPixmap); } /*else { QRect rect = this->rect(); painter.setOpacity(1); painter.fillRect(this->rect(), QColor(56,146,235));//#3892eb QFont curFont = painter.font();//QGuiApplication::font(); curFont.setPixelSize(12);//font.setPointSize(12); QFontMetrics fm(curFont); QPen pen(Qt::white); painter.setPen(pen); painter.setFont(curFont); int textWidth = fm.width(this->text()); QRect textRect(5, 0, textWidth, rect.height()); painter.drawText(textRect, Qt::AlignVCenter | Qt::AlignLeft, this->text()); }*/ } indicator-china-weather/src/mainwindow.h0000664000175000017500000000624013644025330017307 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include "menuactiongroup.h" #include "data.h" class TitleBar; class ContentWidget; class SettingDialog; class PromptWidget; class WeatherWorker; class MaskWidget; class MainWindow : public QMainWindow { Q_OBJECT friend class DbusAdaptor; public: MainWindow(QWidget *parent = 0); ~MainWindow(); void initMenuAndTray(); void resetWeatherBackgroud(const QString &imgPath); void movePosition(); void createSettingDialog(); void refreshCityActions(); void refreshTrayMenuWeather(const ObserveWeather &data); void startGetWeather(); void setOpacity(double opacity); protected: // void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; // void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; // void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; // void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; public slots: void trayIconActivated(QSystemTrayIcon::ActivationReason reason); void showSettingDialog(); void applySettings(); void updateTimeTip(); private: // QPoint m_dragPosition; // bool m_mousePressed; void judgeSystemLanguage(); bool isFileExist(QString fullFileName); QVBoxLayout *m_layout = nullptr; QWidget *m_centralWidget = nullptr; TitleBar *m_titleBar = nullptr; ContentWidget *m_contentWidget = nullptr; QMenu *m_mainMenu = nullptr; QMenu *m_cityMenu = nullptr; MenuActionGroup *m_cityActionGroup = nullptr; QAction *m_weatherAction = nullptr; QAction *m_temperatureAction = nullptr; QAction *m_sdAction = nullptr; QAction *m_aqiAction = nullptr; QAction *m_releaseTimeAction = nullptr; QAction *m_updateTimeAction = nullptr; QSystemTrayIcon *m_systemTray = nullptr; SettingDialog *m_setttingDialog = nullptr; PromptWidget *m_hintWidget = nullptr; PromptWidget *m_movieWidget = nullptr; WeatherWorker *m_weatherWorker = nullptr; QTimer *m_pingbackTimer = nullptr; QTimer *m_tipTimer = nullptr; int m_actualizationTime; QString m_updateTimeStr; QTimer *m_autoRefreshTimer = nullptr; QString m_currentDesktop; MaskWidget *m_maskWidget = nullptr; //test //bool m_isDN; }; #endif // MAINWINDOW_H indicator-china-weather/src/weatherworker.h0000664000175000017500000000470313644002575020034 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef WEATHERWORKER_H #define WEATHERWORKER_H #include #include #include #include #include #include "data.h" class AutomaticLocation; class WeatherWorker : public QObject { Q_OBJECT public: enum WeatherType { Type_Observe, Type_Forecast }; explicit WeatherWorker(QObject *parent = 0); ~WeatherWorker(); bool isNetWorkSettingsGood(); void netWorkOnlineOrNot(); void refreshObserveWeatherData(const QString &cityId); void refreshForecastWeatherData(const QString &cityId); void requestPingBackWeatherServer(); void requestPostHostInfoToWeatherServer(); bool AccessDedirectUrl(const QString &redirectUrl, WeatherType weatherType); void AccessDedirectUrlWithPost(const QString &redirectUrl); QString getErrorCodeDescription(QString errorCode); void startAutoLocationTask(); signals: void observeDataRefreshed(const ObserveWeather &data); void forecastDataRefreshed(const QList &datas, LifeStyle data); void nofityNetworkStatus(const QString &status); void responseFailure(int code); void requestDiplayServerNotify(const QString ¬ifyInfo); void requestAutoLocationData(const CitySettingData & info, bool success); public slots: void onWeatherObserveReply(); void onWeatherForecastReply(); void onPingBackPostReply(); void networkLookedUp(const QHostInfo &host); void setAutomaticCity(const QString& cityName); private: QNetworkAccessManager *m_networkManager = nullptr; QString m_hostInfoParameters; AutomaticLocation *m_automatic = nullptr; }; #endif // WEATHERWORKER_H indicator-china-weather/src/forecastitemwidget.cpp0000664000175000017500000001127213644002575021366 0ustar fengfeng#include "forecastitemwidget.h" #include "tooltip.h" #include #include #include #include #include ForecastItemWidget::ForecastItemWidget(QWidget *parent) : QWidget(parent) { this->setFixedSize(100, 140);//140:initForecastWidget's height - 2*space = 160- 10*2 this->setStyleSheet("QWidget{border-radius: 0px;color:rgb(250,250,250);background-color:rgba(0,0,0,0.2)}"); // setAttribute(Qt::WA_TransparentForMouseEvents); m_weekLabel = new QLabel(this); m_dateLabel = new QLabel(this); m_weatherLabel = new QLabel(this); m_iconLabel = new QLabel(this); m_tempLabel = new QLabel(this); m_iconLabel->setFixedSize(48, 48); m_iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(5); m_layout->addWidget(m_weekLabel, 0, Qt::AlignTop | Qt::AlignHCenter); m_layout->addWidget(m_dateLabel, 0, Qt::AlignHCenter); m_layout->addWidget(m_weatherLabel, 0, Qt::AlignHCenter); m_layout->addWidget(m_iconLabel, 0, Qt::AlignHCenter); m_layout->addWidget(m_tempLabel, 0, Qt::AlignBottom | Qt::AlignHCenter); m_toolTip = new ToolTip(); this->setDefaultData(); } void ForecastItemWidget::resetForecastData(const ForecastWeather &data, int index) { if (index == 0) { m_weekLabel->setText(tr("Today")); } else { if (data.forcast_date.isEmpty()) { m_weekLabel->setText("--"); } else { QLocale locale; locale = locale.language(); // if (locale.language() == QLocale::Chinese) { // qDebug() << "CH"; // } // else if (locale.language() == QLocale::English) { // qDebug() << "EN"; // locale = QLocale::English; // } QDateTime dt = QDateTime::fromString(data.forcast_date,"yyyy-MM-dd"); QDate m_date = dt.date(); m_weekLabel->setText(locale.toString(m_date, "ddd")); /* QDateTime dt = QDateTime::fromString(data.forcast_date,"yyyy-MM-dd"); // QDateTime dt; // dt.setTime_t(str.toInt()); QDate m_date = dt.date();//qDebug() << QDate::currentDate().toString("ddd"); m_weekLabel->setText(m_date.toString("ddd")); */ } } m_dateLabel->setText(data.forcast_date); m_weatherLabel->setText(data.cond_txt_d); //darkgrey or lightgrey QPixmap pixmap; if (m_isDayOrNight) { pixmap = QPixmap(QString(":/res/weather_icons/darkgrey/%1.png").arg(data.cond_code_d)); } else { pixmap = QPixmap(QString(":/res/weather_icons/lightgrey/%1.png").arg(data.cond_code_d)); } pixmap = pixmap.scaled(48, 48, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_iconLabel->setPixmap(pixmap); m_tempLabel->setText(QString("%1°C~%2°C").arg(data.tmp_min).arg(data.tmp_max)); m_toolTip->resetData(data, m_weekLabel->text()); } void ForecastItemWidget::setDayStyleSheets() { m_isDayOrNight = true; m_weekLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_dateLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_weatherLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_tempLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); } void ForecastItemWidget::setNightStyleSheets() { m_isDayOrNight = false; m_weekLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#d9d9d9;font-size:12px;}"); m_dateLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#d9d9d9;font-size:12px;}"); m_weatherLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#d9d9d9;font-size:12px;}"); m_tempLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#d9d9d9;font-size:12px;}"); } void ForecastItemWidget::setDefaultData() { m_weekLabel->setText("-"); m_dateLabel->setText("-"); m_weatherLabel->setText("-"); QPixmap pixmap = QPixmap(":/res/weather_icons/darkgrey/999.png"); pixmap = pixmap.scaled(48, 48, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_iconLabel->setPixmap(pixmap); m_tempLabel->setText("-°C"); } bool ForecastItemWidget::event(QEvent *event) { if (event->type() == QEvent::ToolTip) { m_toolTip->popupTip(QCursor::pos()); } else if (event->type() == QEvent::Leave) { m_toolTip->hide(); } return QWidget::event(event); } indicator-china-weather/src/weatherworker.cpp0000664000175000017500000007542713644002607020376 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "weatherworker.h" #include "automaticlocation.h" #include #include #include #include #include #include #include #include "preferences.h" #include "global.h" using namespace Global; inline QString readOsInfo() { QString idParse = "DISTRIB_ID="; QString releaseParse = "DISTRIB_RELEASE="; QString osId; QString osRelease; QFile file("/etc/lsb-release"); if (!file.open(QFile::ReadOnly)) { qCritical() << QString("open lsb-release file failed"); return QString("distro=ukylin&version_os=18.04"); } QByteArray content = file.readAll(); file.close(); QTextStream stream(&content, QIODevice::ReadOnly); while (!stream.atEnd()) { QString line = stream.readLine(); if (line.startsWith(idParse)) { osId = line.remove(0, idParse.size()); } else if (line.startsWith(releaseParse)) { osRelease = line.remove(0, releaseParse.size()); } } return QString("distro=%1&version_os=%2").arg(osId).arg(osRelease); } WeatherWorker::WeatherWorker(QObject *parent) : QObject(parent) , m_networkManager(new QNetworkAccessManager(this)) { connect(m_networkManager, &QNetworkAccessManager::finished, this, [] (QNetworkReply *reply) { reply->deleteLater(); }); m_automatic = new AutomaticLocation(this); connect(m_automatic, &AutomaticLocation::automaticLocationFinished, this, &WeatherWorker::setAutomaticCity); } WeatherWorker::~WeatherWorker() { m_networkManager->deleteLater(); } void WeatherWorker::startAutoLocationTask() { m_automatic->start(); } bool WeatherWorker::isNetWorkSettingsGood() { //判断网络是否有连接,不一定能上网 QNetworkConfigurationManager mgr; return mgr.isOnline(); } void WeatherWorker::netWorkOnlineOrNot() { //http://service.ubuntukylin.com:8001/weather/pingnetwork/ QHostInfo::lookupHost("www.baidu.com", this, SLOT(networkLookedUp(QHostInfo))); } void WeatherWorker::networkLookedUp(const QHostInfo &host) { if(host.error() != QHostInfo::NoError) { //qDebug() << "test network failed, errorCode:" << host.error(); emit this->nofityNetworkStatus(host.errorString()); } else { //qDebug() << "test network success, the server's ip:" << host.addresses().first().toString(); emit this->nofityNetworkStatus("OK"); } } void WeatherWorker::refreshObserveWeatherData(const QString &cityId) { if (cityId.isEmpty()) { emit responseFailure(0); return; } /*QString forecastUrl = QString("http://service.ubuntukylin.com:8001/weather/api/1.0/observe/%1/").arg(cityId); qDebug() << "forecastUrl=" << forecastUrl; QNetworkAccessManager *manager = new QNetworkAccessManager(); QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(forecastUrl))); QByteArray responseData; QEventLoop eventLoop; QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &eventLoop, SLOT(quit())); eventLoop.exec(); responseData = reply->readAll(); reply->deleteLater(); manager->deleteLater(); qDebug() << "weather observe size: " << responseData.size();*/ //heweather_observe_s6 QString forecastUrl = QString("http://service.ubuntukylin.com:8001/weather/api/2.0/heweather_observe_s6/%1/").arg(cityId); QNetworkRequest request; request.setUrl(forecastUrl); //request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);//Qt5.6 for redirect QNetworkReply *reply = m_networkManager->get(request); connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onWeatherObserveReply); } void WeatherWorker::refreshForecastWeatherData(const QString &cityId) { if (cityId.isEmpty()) { emit responseFailure(0); return; } //heweather_forecast_s6 QString forecastUrl = QString("http://service.ubuntukylin.com:8001/weather/api/2.0/heweather_forecast_s6/%1").arg(cityId); QNetworkReply *reply = m_networkManager->get(QNetworkRequest(forecastUrl)); connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onWeatherForecastReply); } void WeatherWorker::requestPingBackWeatherServer() { QNetworkReply *reply = m_networkManager->get(QNetworkRequest(QString("http://service.ubuntukylin.com:8001/weather/pinginformation/"))); connect(reply, &QNetworkReply::finished, this, [=] () { QNetworkReply *m_reply = qobject_cast(sender()); int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(m_reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status qDebug() << "pingback request error:" << m_reply->error() << ", statusCode=" << statusCode; emit responseFailure(statusCode); return; } QByteArray ba = m_reply->readAll(); m_reply->close(); m_reply->deleteLater(); QJsonParseError err; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &err); if (err.error != QJsonParseError::NoError) {// Json type error qDebug() << "Json type error"; return; } if (jsonDocument.isNull() || jsonDocument.isEmpty()) { qDebug() << "Json null or empty!"; return; } QJsonObject jsonObject = jsonDocument.object(); if (jsonObject.isEmpty() || jsonObject.size() == 0) { return; } if (jsonObject.contains("info")) { QString notifyInfo = jsonObject.value("info").toString(); if (!notifyInfo.isEmpty() && !notifyInfo.isNull()) { emit requestDiplayServerNotify(notifyInfo); } } }); } void WeatherWorker::requestPostHostInfoToWeatherServer() { QString osInfo = readOsInfo(); QString hostInfo = QString("%1&version_weather=%2&city=%3").arg(osInfo).arg(qApp->applicationVersion()).arg(m_preferences->m_currentCity); this->m_hostInfoParameters = hostInfo; QByteArray parameters = hostInfo.toUtf8(); QNetworkRequest request; request.setUrl(QUrl("http://service.ubuntukylin.com:8001/weather/pingbackmain")); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); request.setHeader(QNetworkRequest::ContentLengthHeader, parameters.length()); //QUrl url("http://service.ubuntukylin.com:8001/weather/pingbackmain"); QNetworkReply *reply = m_networkManager->post(request, parameters);//QNetworkReply *reply = m_networkManager->post(QNetworkRequest(url), parameters); connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onPingBackPostReply); } bool WeatherWorker::AccessDedirectUrl(const QString &redirectUrl, WeatherType weatherType) { if (redirectUrl.isEmpty()) return false; QNetworkRequest request; QString url; url = redirectUrl; request.setUrl(QUrl(url)); QNetworkReply *reply = m_networkManager->get(request); switch (weatherType) { case WeatherType::Type_Observe: connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onWeatherObserveReply); break; case WeatherType::Type_Forecast: connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onWeatherForecastReply); break; default: break; } return true; } void WeatherWorker::AccessDedirectUrlWithPost(const QString &redirectUrl) { if (redirectUrl.isEmpty()) return; QNetworkRequest request; QString url; url = redirectUrl; QByteArray parameters = this->m_hostInfoParameters.toUtf8(); request.setUrl(QUrl(url)); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); request.setHeader(QNetworkRequest::ContentLengthHeader, parameters.length()); QNetworkReply *reply = m_networkManager->post(request, parameters); connect(reply, &QNetworkReply::finished, this, &WeatherWorker::onPingBackPostReply); } void WeatherWorker::onWeatherObserveReply() { QNetworkReply *reply = qobject_cast(sender()); int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (statusCode == 301 || statusCode == 302) {//redirect bool redirection = false; QVariant redirectionUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); //qDebug() << "Weather: redirectionUrl=" << redirectionUrl.toString(); redirection = AccessDedirectUrl(redirectionUrl.toString(), WeatherType::Type_Observe);//AccessDedirectUrl(reply->rawHeader("Location")); reply->close(); reply->deleteLater(); if (!redirection) { emit responseFailure(statusCode); } return; } else if (statusCode == 400) { qDebug() << "Weather: Network error (HTTP400/Bad Request)"; emit responseFailure(statusCode); return; } else if (statusCode == 403) { qDebug() << "Weather: Username or password invalid (permission denied)"; emit responseFailure(statusCode); return; } else if (statusCode == 200) { // 200 is normal status } else { emit responseFailure(statusCode); return; } if(reply->error() != QNetworkReply::NoError) { //qDebug() << "weather request error:" << reply->error() << ", statusCode=" << statusCode; emit responseFailure(statusCode); return; } /* bool redirection = false; if(reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status qDebug() << "weather request error:" << reply->error() << ", statusCode=" << statusCode; if (statusCode == 301 || statusCode == 302) {//redirect QVariant redirectionUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); qDebug() << "redirectionUrl=" << redirectionUrl.toString(); redirection = AccessDedirectUrl(redirectionUrl.toString(), WeatherType::Type_Observe);//AccessDedirectUrl(reply->rawHeader("Location")); reply->close(); reply->deleteLater(); } if (!redirection) { emit responseFailure(statusCode); } return; } */ QByteArray ba = reply->readAll(); //QString reply_content = QString::fromUtf8(ba); reply->close(); reply->deleteLater(); //qDebug() << "weather observe size: " << ba.size(); QJsonParseError err; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &err); if (err.error != QJsonParseError::NoError) {// Json type error qDebug() << "Json type error"; emit responseFailure(0); return; } if (jsonDocument.isNull() || jsonDocument.isEmpty()) { qDebug() << "Json null or empty!"; emit responseFailure(0); return; } QJsonObject jsonObject = jsonDocument.object(); //qDebug() << "jsonObject" << jsonObject; if (jsonObject.isEmpty() || jsonObject.size() == 0) { emit responseFailure(0); return; } if (jsonObject.contains("KylinWeather")) { QJsonObject mainObj = jsonObject.value("KylinWeather").toObject(); if (mainObj.isEmpty() || mainObj.size() == 0) { emit responseFailure(0); return; } if (mainObj.contains("air")) { QJsonObject airObj = mainObj.value("air").toObject(); if (!airObj.isEmpty() && airObj.size() > 0) { m_preferences->air.aqi = airObj.value("aqi").toString(); m_preferences->air.qlty = airObj.value("qlty").toString(); m_preferences->air.main = airObj.value("main").toString(); m_preferences->air.pm25 = airObj.value("pm25").toString(); m_preferences->air.pm10 = airObj.value("pm10").toString(); m_preferences->air.no2 = airObj.value("no2").toString(); m_preferences->air.so2 = airObj.value("so2").toString(); m_preferences->air.co = airObj.value("co").toString(); m_preferences->air.o3 = airObj.value("o3").toString(); m_preferences->weather.air = QString("%1(%2)").arg(airObj.value("aqi").toString()).arg(airObj.value("qlty").toString()); } } if (mainObj.contains("weather")) { QJsonObject weatherObj = mainObj.value("weather").toObject(); if (!weatherObj.isEmpty() && weatherObj.size() > 0) { m_preferences->air.id = weatherObj.value("id").toString();//如果有weather,则给id赋值 m_preferences->weather.id = weatherObj.value("id").toString(); m_preferences->weather.city = weatherObj.value("location").toString(); m_preferences->weather.updatetime = weatherObj.value("update_loc").toString(); m_preferences->weather.cloud = weatherObj.value("cloud").toString(); m_preferences->weather.cond_code = weatherObj.value("cond_code").toString(); m_preferences->weather.cond_txt = weatherObj.value("cond_txt").toString(); m_preferences->weather.fl = weatherObj.value("fl").toString(); m_preferences->weather.hum = weatherObj.value("hum").toString(); m_preferences->weather.pcpn = weatherObj.value("pcpn").toString(); m_preferences->weather.pres = weatherObj.value("pres").toString(); m_preferences->weather.tmp = weatherObj.value("tmp").toString(); m_preferences->weather.vis = weatherObj.value("vis").toString(); m_preferences->weather.wind_deg = weatherObj.value("wind_deg").toString(); m_preferences->weather.wind_dir = weatherObj.value("wind_dir").toString(); m_preferences->weather.wind_sc = weatherObj.value("wind_sc").toString(); m_preferences->weather.wind_spd = weatherObj.value("wind_spd").toString(); } } emit this->observeDataRefreshed(m_preferences->weather); } } void WeatherWorker::onWeatherForecastReply() { QNetworkReply *reply = qobject_cast(sender()); int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if (statusCode == 301 || statusCode == 302) {//redirect bool redirection = false; QVariant redirectionUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); //qDebug() << "Forecast: redirectionUrl=" << redirectionUrl.toString(); redirection = AccessDedirectUrl(redirectionUrl.toString(), WeatherType::Type_Forecast);//AccessDedirectUrl(reply->rawHeader("Location")); reply->close(); reply->deleteLater(); if (!redirection) { emit responseFailure(statusCode); } return; } else if (statusCode == 400) { qDebug() << "Forecast: Network error (HTTP400/Bad Request)"; emit responseFailure(statusCode); return; } else if (statusCode == 403) { qDebug() << "Forecast: Username or password invalid (permission denied)"; emit responseFailure(statusCode); return; } else if (statusCode == 200) { // 200 is normal status } else { emit responseFailure(statusCode); return; } if(reply->error() != QNetworkReply::NoError) { //qDebug() << "weather forecast request error:" << reply->error() << ", statusCode=" << statusCode; emit responseFailure(statusCode); return; } /* bool redirection = false; if(reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status qDebug() << "weather forecast request error:" << reply->error() << ", statusCode=" << statusCode; if (statusCode == 301 || statusCode == 302) {//redirect QVariant redirectionUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute); qDebug() << "redirectionUrl=" << redirectionUrl.toString(); redirection = AccessDedirectUrl(redirectionUrl.toString(), WeatherType::Type_Forecast);//AccessDedirectUrl(reply->rawHeader("Location")); reply->close(); reply->deleteLater(); } if (!redirection) { emit responseFailure(statusCode); } return; } */ QByteArray ba = reply->readAll(); //QString reply_content = QString::fromUtf8(ba); reply->close(); reply->deleteLater(); //qDebug() << "weather forecast size: " << ba.size(); QJsonParseError err; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &err); if (err.error != QJsonParseError::NoError) {// Json type error qDebug() << "Json type error"; emit responseFailure(0); return; } if (jsonDocument.isNull() || jsonDocument.isEmpty()) { qDebug() << "Json null or empty!"; emit responseFailure(0); return; } QJsonObject jsonObject = jsonDocument.object(); //qDebug() << "jsonObject" << jsonObject; if (jsonObject.isEmpty() || jsonObject.size() == 0) { emit responseFailure(0); return; } if (jsonObject.contains("KylinWeather")) { QJsonObject mainObj = jsonObject.value("KylinWeather").toObject(); if (mainObj.isEmpty() || mainObj.size() == 0) { emit responseFailure(0); return; } QList forecastDatas; if (mainObj.contains("forecast")) { QJsonObject forecastObj = mainObj.value("forecast").toObject(); if (!forecastObj.isEmpty() && forecastObj.size() > 0) { m_preferences->forecast0.forcast_date = forecastObj.value("forcast_date0").toString(); m_preferences->forecast0.cond_code_d = forecastObj.value("cond_code_d0").toString(); m_preferences->forecast0.cond_code_n = forecastObj.value("cond_code_n0").toString(); m_preferences->forecast0.cond_txt_d = forecastObj.value("cond_txt_d0").toString(); m_preferences->forecast0.cond_txt_n = forecastObj.value("cond_txt_n0").toString(); m_preferences->forecast0.hum = forecastObj.value("hum0").toString(); m_preferences->forecast0.mr_ms = forecastObj.value("mr_ms0").toString(); m_preferences->forecast0.pcpn = forecastObj.value("pcpn0").toString(); m_preferences->forecast0.pop = forecastObj.value("pop0").toString(); m_preferences->forecast0.pres = forecastObj.value("pres0").toString(); m_preferences->forecast0.sr_ss = forecastObj.value("sr_ss0").toString(); m_preferences->forecast0.tmp_max = forecastObj.value("tmp_max0").toString(); m_preferences->forecast0.tmp_min = forecastObj.value("tmp_min0").toString(); m_preferences->forecast0.uv_index = forecastObj.value("uv_index0").toString(); m_preferences->forecast0.vis = forecastObj.value("vis0").toString(); m_preferences->forecast0.wind_deg = forecastObj.value("wind_deg0").toString(); m_preferences->forecast0.wind_dir = forecastObj.value("wind_dir0").toString(); m_preferences->forecast0.wind_sc = forecastObj.value("wind_sc0").toString(); m_preferences->forecast0.wind_spd = forecastObj.value("wind_spd0").toString(); m_preferences->forecast1.forcast_date = forecastObj.value("forcast_date1").toString(); m_preferences->forecast1.cond_code_d = forecastObj.value("cond_code_d1").toString(); m_preferences->forecast1.cond_code_n = forecastObj.value("cond_code_n1").toString(); m_preferences->forecast1.cond_txt_d = forecastObj.value("cond_txt_d1").toString(); m_preferences->forecast1.cond_txt_n = forecastObj.value("cond_txt_n1").toString(); m_preferences->forecast1.hum = forecastObj.value("hum1").toString(); m_preferences->forecast1.mr_ms = forecastObj.value("mr_ms1").toString(); m_preferences->forecast1.pcpn = forecastObj.value("pcpn1").toString(); m_preferences->forecast1.pop = forecastObj.value("pop1").toString(); m_preferences->forecast1.pres = forecastObj.value("pres1").toString(); m_preferences->forecast1.sr_ss = forecastObj.value("sr_ss1").toString(); m_preferences->forecast1.tmp_max = forecastObj.value("tmp_max1").toString(); m_preferences->forecast1.tmp_min = forecastObj.value("tmp_min1").toString(); m_preferences->forecast1.uv_index = forecastObj.value("uv_index1").toString(); m_preferences->forecast1.vis = forecastObj.value("vis1").toString(); m_preferences->forecast1.wind_deg = forecastObj.value("wind_deg1").toString(); m_preferences->forecast1.wind_dir = forecastObj.value("wind_dir1").toString(); m_preferences->forecast1.wind_sc = forecastObj.value("wind_sc1").toString(); m_preferences->forecast1.wind_spd = forecastObj.value("wind_spd1").toString(); m_preferences->forecast2.forcast_date = forecastObj.value("forcast_date2").toString(); m_preferences->forecast2.cond_code_d = forecastObj.value("cond_code_d2").toString(); m_preferences->forecast2.cond_code_n = forecastObj.value("cond_code_n2").toString(); m_preferences->forecast2.cond_txt_d = forecastObj.value("cond_txt_d2").toString(); m_preferences->forecast2.cond_txt_n = forecastObj.value("cond_txt_n2").toString(); m_preferences->forecast2.hum = forecastObj.value("hum2").toString(); m_preferences->forecast2.mr_ms = forecastObj.value("mr_ms2").toString(); m_preferences->forecast2.pcpn = forecastObj.value("pcpn2").toString(); m_preferences->forecast2.pop = forecastObj.value("pop2").toString(); m_preferences->forecast2.pres = forecastObj.value("pres2").toString(); m_preferences->forecast2.sr_ss = forecastObj.value("sr_ss2").toString(); m_preferences->forecast2.tmp_max = forecastObj.value("tmp_max2").toString(); m_preferences->forecast2.tmp_min = forecastObj.value("tmp_min2").toString(); m_preferences->forecast2.uv_index = forecastObj.value("uv_index2").toString(); m_preferences->forecast2.vis = forecastObj.value("vis2").toString(); m_preferences->forecast2.wind_deg = forecastObj.value("wind_deg2").toString(); m_preferences->forecast2.wind_dir = forecastObj.value("wind_dir2").toString(); m_preferences->forecast2.wind_sc = forecastObj.value("wind_sc2").toString(); m_preferences->forecast2.wind_spd = forecastObj.value("wind_spd2").toString(); forecastDatas.append(m_preferences->forecast0); forecastDatas.append(m_preferences->forecast1); forecastDatas.append(m_preferences->forecast2); } } if (mainObj.contains("lifestyle")) { QJsonObject lifestyleObj = mainObj.value("lifestyle").toObject(); if (!lifestyleObj.isEmpty() && lifestyleObj.size() > 0) { m_preferences->lifestyle.air_brf = lifestyleObj.value("air_brf").toString(); m_preferences->lifestyle.air_txt = lifestyleObj.value("air_txt").toString(); m_preferences->lifestyle.comf_brf = lifestyleObj.value("comf_brf").toString(); m_preferences->lifestyle.comf_txt = lifestyleObj.value("comf_txt").toString(); m_preferences->lifestyle.cw_brf = lifestyleObj.value("cw_brf").toString(); m_preferences->lifestyle.cw_txt = lifestyleObj.value("cw_txt").toString(); m_preferences->lifestyle.drsg_brf = lifestyleObj.value("drsg_brf").toString(); m_preferences->lifestyle.drsg_txt = lifestyleObj.value("drsg_txt").toString(); m_preferences->lifestyle.flu_brf = lifestyleObj.value("flu_brf").toString(); m_preferences->lifestyle.flu_txt = lifestyleObj.value("flu_txt").toString(); m_preferences->lifestyle.sport_brf = lifestyleObj.value("sport_brf").toString(); m_preferences->lifestyle.sport_txt = lifestyleObj.value("sport_txt").toString(); m_preferences->lifestyle.trav_brf = lifestyleObj.value("trav_brf").toString(); m_preferences->lifestyle.trav_txt = lifestyleObj.value("trav_txt").toString(); m_preferences->lifestyle.uv_brf = lifestyleObj.value("uv_brf").toString(); m_preferences->lifestyle.uv_txt = lifestyleObj.value("uv_txt").toString(); } } emit this->forecastDataRefreshed(forecastDatas, m_preferences->lifestyle); } } void WeatherWorker::onPingBackPostReply() { QNetworkReply *m_reply = qobject_cast(sender()); int statusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(m_reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status //qDebug() << "post host info request error:" << m_reply->error() << ", statusCode=" << statusCode; if (statusCode == 301 || statusCode == 302) {//redirect QVariant redirectionUrl = m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute); //qDebug() << "pingback redirectionUrl=" << redirectionUrl.toString(); AccessDedirectUrlWithPost(redirectionUrl.toString()); m_reply->close(); m_reply->deleteLater(); } return; } //QByteArray ba = m_reply->readAll(); m_reply->close(); m_reply->deleteLater(); //QString reply_content = QString::fromUtf8(ba); //qDebug() << "return size: " << ba.size() << reply_content; } /* http://www.heweather.com/documents/status-code */ QString WeatherWorker::getErrorCodeDescription(QString errorCode) { if ("ok" == errorCode) { return "数据正常"; } else if ("invalid key" == errorCode) { return "错误的key,请检查你的key是否输入以及是否输入有误"; } else if ("unknown location" == errorCode) { return "未知或错误城市/地区"; } else if ("no data for this location" == errorCode) { return "该城市/地区没有你所请求的数据"; } else if ("no more requests" == errorCode) { return "超过访问次数,需要等到当月最后一天24点(免费用户为当天24点)后进行访问次数的重置或升级你的访问量"; } else if ("param invalid" == errorCode) { return "参数错误,请检查你传递的参数是否正确"; } else if ("too fast" == errorCode) {//http://www.heweather.com/documents/qpm return "超过限定的QPM,请参考QPM说明"; } else if ("dead" == errorCode) {//http://www.heweather.com/contact return "无响应或超时,接口服务异常请联系我们"; } else if ("permission denied" == errorCode) { return "无访问权限,你没有购买你所访问的这部分服务"; } else if ("sign error" == errorCode) {//http://www.heweather.com/documents/api/s6/sercet-authorization return "签名错误,请参考签名算法"; } else { return tr("Unknown"); } } void WeatherWorker::setAutomaticCity(const QString &cityName) { bool autoSuccess = false; CitySettingData info; if (cityName.isEmpty()) { emit this->requestAutoLocationData(info, false); return; } //CN101250101,changsha,长沙,CN,China,中国,hunan,湖南,changsha,长沙,28.19409,112.98228,"430101,430100,430000", QFile file(":/data/data/china-city-list.csv"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QString line = file.readLine(); line = line.replace("\n", ""); while (!line.isEmpty()) { QStringList resultList = line.split(","); if (resultList.length() < 10) { line = file.readLine(); line = line.replace("\n", ""); continue; } QString id = resultList.at(0); if (!id.startsWith("CN")) { line = file.readLine(); line = line.replace("\n", ""); continue; } if (resultList.at(1).compare(cityName, Qt::CaseInsensitive) == 0 || resultList.at(2).compare(cityName, Qt::CaseInsensitive) == 0 || QString(resultList.at(2) + "市").compare(cityName, Qt::CaseInsensitive) == 0 || QString(resultList.at(2) + "区").compare(cityName, Qt::CaseInsensitive) == 0 || QString(resultList.at(2) + "县").compare(cityName, Qt::CaseInsensitive) == 0) { id.remove(0, 2);//remove "CN" QString name = resultList.at(2); if (m_preferences->isCitiesCountOverMax()) { if (m_preferences->isCityIdExist(id)) { //从已有列表中将自动定位的城市设置为默认城市 m_preferences->setCurrentCityIdAndName(name); } else { break; } } else { if (m_preferences->isCityIdExist(id)) { m_preferences->setCurrentCityIdAndName(name); } else { City city; city.id = id; city.name = name; m_preferences->setCurrentCityIdAndName(name); m_preferences->addCityInfoToPref(city); m_preferences->save(); } } info.active = false; info.id = id; info.name = name; info.icon = ":/res/weather_icons/darkgrey/100.png"; autoSuccess = true; break; } line = file.readLine(); line = line.replace("\n", ""); } file.close(); } if (autoSuccess) { emit this->requestAutoLocationData(info, true); } else { emit this->requestAutoLocationData(info, false); } } indicator-china-weather/src/tipmodule.cpp0000664000175000017500000000732513644002575017503 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "tipmodule.h" #include #include #include #include TipModule::TipModule(QObject *parent) : QObject(parent) , m_displayTimer(new QTimer) { m_displayTimer->setInterval(300); connect(m_displayTimer, SIGNAL(timeout()), this, SLOT(onDisplayTimeOut())); } TipModule::~TipModule() { if (m_displayTimer) { disconnect(m_displayTimer,SIGNAL(timeout()), this, SLOT(onDisplayTimeOut())); if(m_displayTimer->isActive()) { m_displayTimer->stop(); } delete m_displayTimer; m_displayTimer = nullptr; } } void TipModule::onDisplayTimeOut() { if (m_parentWidget) { QWidget *tip = m_parentWidget->property("TextTipWidget").value(); if (!tip) { this->m_displayTimer->stop(); return; } if (m_tipWidget && m_tipWidget != tip) { m_tipWidget->setVisible(false); } m_tipWidget = tip; m_tipWidget->adjustSize(); m_tipWidget->setVisible(true); m_tipWidget->raise(); QTimer::singleShot(5, this, [this] { if (!m_parentWidget) { return; } QPoint point = m_parentWidget->mapToGlobal(m_parentWidget->rect().center()); // point.setX(point.x()/* - m_tipWidget->size().width() / 2*/); // point.setY(point.y()/* - m_tipWidget->size().height()*/); // point = m_tipWidget->mapFromGlobal(point); // point = m_tipWidget->mapToParent(point); // m_tipWidget->move(point); int point_X; int point_Y; if (point.rx() < m_tipWidget->width()) { point_X = point.rx() + 10; } else { point_X = point.rx() - m_tipWidget->width(); } point_Y = point.ry(); m_tipWidget->move(QPoint(point_X, point_Y)); }); } this->m_displayTimer->stop(); } bool TipModule::eventFilter(QObject *obj, QEvent *event) { switch (event->type()) { case QEvent::Enter: { if (this->m_tipWidget && this->m_tipWidget->isVisible()) { this->m_tipWidget->setVisible(false); } QWidget *widget = qobject_cast(obj); this->m_parentWidget = widget; if (!widget) { break; } this->m_tipWidget = widget->property("TextTipWidget").value(); if (!this->m_tipWidget) { break; } this->m_displayTimer->start(); break; } case QEvent::Leave: if (this->m_tipWidget) { this->m_tipWidget->setVisible(false); this->m_displayTimer->stop(); } break; case QEvent::MouseButtonPress: if (this->m_tipWidget) { this->m_tipWidget->setVisible(false); this->m_displayTimer->stop(); } break; default: break; } return QObject::eventFilter(obj, event); } indicator-china-weather/src/searchtitlebar.h0000664000175000017500000000420613644002575020135 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SEARCHTITLEBAR_H #define SEARCHTITLEBAR_H #include #include #include #include #include #include "data.h" class SearchInputEdit; class LocationWorker; class SearchTitleBar : public QWidget { Q_OBJECT public: explicit SearchTitleBar(QWidget *parent = 0); ~SearchTitleBar(); void initLeftContent(); void initMiddleContent(); void initRightContent(); void initBottomContent(); void initWidgets(); void resetSearchInputEdit() const; void setSearchResult(const QList data); public slots: void onSearchTimerOut(); signals: void requestCloseDialog(); void requestShowNoResultLabel(); void requestResetViewAndModel(); void sendSearchResults(QList results); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: QVBoxLayout *m_layout = nullptr; QHBoxLayout *m_toplayout = nullptr; QHBoxLayout *m_lLayout = nullptr; QHBoxLayout *m_mLayout = nullptr; QHBoxLayout *m_rLayout = nullptr; QHBoxLayout *m_bLayout = nullptr; QPushButton *m_closeBtn = nullptr; QColor m_borderColor; int m_borderRadius; int m_borderWidth; QBrush m_bgBrush; SearchInputEdit *m_searchInputEdit = nullptr; QTimer *m_searchTimer = nullptr; LocationWorker *m_locationWorker = nullptr; }; #endif // SEARCHTITLEBAR_H indicator-china-weather/src/automaticlocation.h0000664000175000017500000000205313644002575020656 0ustar fengfeng/* * Copyright (C) 2018 ~ 2019 kobe24_lixiang@126.com * * Authors: * lixiang kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef AUTOMATIC_LOCATION_H #define AUTOMATIC_LOCATION_H #include #include #include "data.h" class AutomaticLocation : public QThread { Q_OBJECT public: explicit AutomaticLocation(QObject* parent = 0); signals: void automaticLocationFinished(const QString& cityName); protected: void run(); }; #endif // AUTOMATIC_LOCATION_H indicator-china-weather/src/texttip.cpp0000664000175000017500000000605013644002575017174 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "texttip.h" #include #include #include #include TextTip::TextTip(const QString &txt, QWidget *parent) : QFrame(parent) , m_radius(1) , m_background(QBrush(QColor(255,255,255,255))) , m_borderColor(QColor(224,224,224,130)) { this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); this->setContentsMargins(0, 0, 0, 0); this->setMinimumSize(260, 56); QHBoxLayout *main_layout = new QHBoxLayout(this); main_layout->setContentsMargins(0, 0, 0, 0); main_layout->setSpacing(0); m_frame = new QFrame(); m_frame->setContentsMargins(0, 0, 0, 0); m_textLabel = new QLabel; m_textLabel->setWordWrap(true);//QLabel自动换行 m_textLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080; font-size:12px;}"); m_textLabel->setAlignment(Qt::AlignCenter); m_textLabel->setText(txt); QHBoxLayout *h_layout = new QHBoxLayout(this->m_frame); h_layout->setContentsMargins(10, 5, 10, 5); h_layout->setSpacing(0); h_layout->addWidget(m_textLabel, 0, Qt::AlignVCenter); main_layout->addWidget(m_frame, 0, Qt::AlignVCenter); this->adjustSize(); hide(); } TextTip::~TextTip() { } void TextTip::resetTipText(const QString &txt) { m_textLabel->setText(txt); } void TextTip::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); QBrush background = this->m_background; QColor borderColor = this->m_borderColor; QMarginsF shadowMargins = QMarginsF(2.0, 2.0, 2.0, 2.0); QRectF bgRect = QRectF(rect()).marginsRemoved(shadowMargins); QPainterPath bgPath; bgPath.addRoundedRect(bgRect, this->m_radius, this->m_radius); painter.fillPath(bgPath, background); QPainterPath borderPath; QRectF borderRect = QRectF(rect()); int borderRadius = this->m_radius; QMarginsF borderMargins(0.5, 0.5, 0.5, 0.5); borderRadius += 0.5; borderRect = borderRect.marginsAdded(borderMargins).marginsRemoved(shadowMargins); borderPath.addRoundedRect(borderRect, borderRadius, borderRadius); QPen borderPen(borderColor); borderPen.setWidthF(1.0); painter.strokePath(borderPath, borderPen); } indicator-china-weather/src/searchdialog.h0000664000175000017500000000325713643503425017572 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SEARCHDIALOG_H #define SEARCHDIALOG_H #include #include #include #include "data.h" class SearchTitleBar; class SearchView; class SearchDelegate; class SearchModel; class SearchDialog : public QDialog { Q_OBJECT public: explicit SearchDialog(QWidget *parent = 0); ~SearchDialog(); signals: void requestAddCityToMenu(const LocationData &data); protected: void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: QPoint m_dragPosition; bool m_mousePressed; SearchTitleBar *m_titleBar = nullptr; QWidget *m_displayWidget = nullptr; QLabel *m_noResultLabel = nullptr; SearchModel *m_searchModel = nullptr; SearchView *m_searchView = nullptr; SearchDelegate *m_searchDelegate = nullptr; }; #endif // SEARCHDIALOG_H indicator-china-weather/src/indexweatherwidget.h0000664000175000017500000000200513643503425021026 0ustar fengfeng/* * Copyright (C) 2013 ~ 2018 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef INDEX_WEATHER_WIDGET_H #define INDEX_WEATHER_WIDGET_H #include class IndexWeatherWidget : public QFrame { Q_OBJECT public: explicit IndexWeatherWidget(QFrame *parent = 0); ~IndexWeatherWidget(); }; #endif // INDEX_WEATHER_WIDGET_H indicator-china-weather/src/maskwidget.cpp0000664000175000017500000000523613644002575017637 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "maskwidget.h" #include #include #include #include MaskWidget *MaskWidget::self = 0; MaskWidget::MaskWidget(QWidget *parent) : QWidget(parent) { this->resize(0,0); this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_StyledBackground); this->setStyleSheet("QWidget{background:rgba(0,0,0,200);}"); this->setAttribute(Qt::WA_DeleteOnClose); this->setWindowOpacity(0.7); QVBoxLayout *m_hlayout = new QVBoxLayout(this); m_hlayout->setContentsMargins(5, 5, 5, 5); m_hlayout->setSpacing(5); m_iconLabel = new QLabel(this); m_iconLabel->setFixedSize(16, 16); m_iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_textLabel = new QLabel(this); m_textLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:14px;}"); m_textLabel->setText(tr("Loading...")); QFont font = m_textLabel->font(); const QFontMetrics fm(font); m_textLabel->setFixedWidth(fm.width(m_textLabel->text())); m_hlayout->addStretch(); m_hlayout->addWidget(m_iconLabel, 0, Qt::AlignHCenter); m_hlayout->addWidget(m_textLabel, 0, Qt::AlignHCenter); m_hlayout->addStretch(); m_movie = new QMovie(":/res/move.gif"); m_iconLabel->setMovie(m_movie); this->hide(); } MaskWidget::~MaskWidget() { if (m_movie) { delete m_movie; } } void MaskWidget::showMask() { if (!parent() || !this->parentWidget()) return; QRect parentRect = this->parentWidget()->window()->geometry(); this->setGeometry(0, 0, parentRect.width(), parentRect.height()); this->show(); } void MaskWidget::showEvent(QShowEvent *event) { QWidget::showEvent(event); if (m_movie) { m_movie->start(); } } void MaskWidget::hideEvent(QHideEvent* event) { QWidget::hideEvent(event); if (m_movie) { m_movie->stop(); } } indicator-china-weather/src/cityitemwidget.h0000664000175000017500000000365413644002575020202 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CITYITEMWIDGET_H #define CITYITEMWIDGET_H #include #include #include #include #include "data.h" class CityItemWidget : public QWidget { Q_OBJECT public: CityItemWidget(CitySettingData info, QWidget *parent=0); // QListWidgetItem* getCityItem(); QString getCityId(); void setItemHovered(); void unsetItemHovered(); void setItemAction(bool active); void setItemWeather(const QString &temp, const QString &iconPath); signals: void requestSetDefaultCityById(const QString &id); void requestDeleteCity(const QString &id); void enter(); protected: void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: bool m_mouseHover = false; // QListWidgetItem *item = nullptr; QString m_id; CitySettingData m_data; QLabel *m_iconLabel = nullptr; QLabel *m_cityLabel = nullptr; QLabel *m_temperatureLabel = nullptr; QPushButton *m_defaultBtn = nullptr; QPushButton *m_deleteBtn = nullptr; QHBoxLayout *m_layout = nullptr; }; #endif // CITYITEMWIDGET_H indicator-china-weather/src/forecastweatherwidget.cpp0000664000175000017500000003031613644002575022067 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "forecastweatherwidget.h" #include "forecastitemwidget.h" #include "indexitemwidget.h" #include "separator.h" #include "texttip.h" #include "tipmodule.h" #include #include namespace { const QStringList LIFESTYLE = {"comf", "drsg", "flu", "sport", "trav", "uv", "cw", "air"}; const QStringList LIFESTYLEICON = {":/res/comf_index.png", ":/res/clothe_index.png", ":/res/flu_index.png", ":/res/sport_index.png", ":/res/trav_index.png", ":/res/ultraviolet_rays.png", ":/res/cash_wash_index.png", ":/res/air_index.png"}; } ForecastWeatherWidget::ForecastWeatherWidget(QFrame *parent) : QFrame(parent) , m_tipModule(new TipModule) { this->setFixedSize(355, 340); // this->setStyleSheet("QLabel{border-radius: 0px; color:rgb(250, 250, 250); background-color:rgba(0,0,0,0.2)}"); m_lifeIndexList = LIFESTYLE; m_lifeIndexIconList = LIFESTYLEICON; m_lifeItems.clear(); m_tips.clear(); this->initWidgets(); } ForecastWeatherWidget::~ForecastWeatherWidget() { for(int i=0; itakeAt(0)) { item->widget()->deleteLater(); delete item; } QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void ForecastWeatherWidget::initWidgets() { m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); this->setLayout(m_layout); this->initForecastWidget(); this->initIndexTitleWidget(); this->initIndexWidget(); m_layout->addStretch(); } void ForecastWeatherWidget::initForecastWidget() { QWidget *w = new QWidget; w->setFixedSize(this->width(), 160); //test background /*w->setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette::Window, QBrush(Qt::gray)); w->setPalette(palette); //w->setStyleSheet("QLabel{border-radius: 0px; color:rgb(250, 250, 250); background-color:rgba(0,0,0,0.2);}"); */ w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);//w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_forecastlayout = new QHBoxLayout(w); m_forecastlayout->setContentsMargins(0, 10, 0, 10); m_forecastlayout->setSpacing(20); m_layout->addWidget(w, 0, Qt::AlignTop); m_firstDay = new ForecastItemWidget(this); m_secondDay = new ForecastItemWidget(this); m_thirdDay = new ForecastItemWidget(this); m_leftVSeparator = new VSeparator; m_rightVSeparator = new VSeparator; m_forecastlayout->addWidget(m_firstDay, 0, Qt::AlignVCenter); m_forecastlayout->addWidget(m_leftVSeparator/*new VSeparator*/); m_forecastlayout->addWidget(m_secondDay, 0, Qt::AlignVCenter); m_forecastlayout->addWidget(m_rightVSeparator/*new VSeparator*/); m_forecastlayout->addWidget(m_thirdDay, 0, Qt::AlignVCenter); } void ForecastWeatherWidget::initIndexTitleWidget() { QWidget *w = new QWidget; w->setFixedSize(this->width(), 34); //test background /*w->setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette::Window, QBrush(Qt::red)); w->setPalette(palette); //w->setStyleSheet("QLabel{border-radius: 0px; color:rgb(250, 250, 250); background-color:rgba(0,0,0,0.2);}"); */ w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);//w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_indexTitlelayout = new QVBoxLayout(w); m_indexTitlelayout->setContentsMargins(0, 0, 0, 0); m_indexTitlelayout->setSpacing(5); // m_layout->addSpacing(5); m_layout->addWidget(w, 0, Qt::AlignLeft); QLabel *iconLabel = new QLabel; lifeTextLabel = new QLabel; iconLabel->setFixedSize(20 ,20); iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); iconLabel->setPixmap(QPixmap(":/res/life_index_d.png")); lifeTextLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); lifeTextLabel->setText(tr("Life index")); QHBoxLayout *h_layout = new QHBoxLayout; h_layout->setContentsMargins(10, 0, 0, 0); h_layout->setSpacing(5); h_layout->addWidget(iconLabel, 0, Qt::AlignLeft); h_layout->addWidget(lifeTextLabel, 0, Qt::AlignVCenter | Qt::AlignLeft); h_layout->addStretch(); m_topHseperator = new HSeparator; m_bottomHseperator = new HSeparator; m_indexTitlelayout->addWidget(m_topHseperator/*new HSeparator*/); m_indexTitlelayout->addStretch(); m_indexTitlelayout->addLayout(h_layout); // m_indexTitlelayout->addWidget(iconLabel, 0, Qt::AlignLeft); // m_indexTitlelayout->addWidget(lifeTextLabel, 0, Qt::AlignVCenter | Qt::AlignLeft); m_indexTitlelayout->addStretch(); m_indexTitlelayout->addWidget(m_bottomHseperator/*new HSeparator*/); } void ForecastWeatherWidget::initIndexWidget() { QWidget *w = new QWidget; w->setFixedSize(this->width(), 146); //test background /*w->setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette::Window, QBrush(Qt::blue)); w->setPalette(palette); //w->setStyleSheet("QLabel{border-radius: 0px; color:rgb(250, 250, 250); background-color:rgba(0,0,0,0.2);}"); */ w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);//w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_indexlayout = new QVBoxLayout(w); m_indexlayout->setContentsMargins(5, 5, 5, 5); m_indexlayout->setSpacing(3); m_layout->addWidget(w, 0, Qt::AlignHCenter); m_indexGridLayout = new QGridLayout; m_indexGridLayout->setSpacing(1); m_indexGridLayout->setMargin(0); m_indexlayout->addLayout(m_indexGridLayout); m_indexlayout->setSpacing(1); this->refershLifeIndexGridLayout(); showLifeStyleIndex(QString()); } void ForecastWeatherWidget::refershLifeIndexGridLayout() { while (QLayoutItem *item = m_indexGridLayout->takeAt(0)) { item->widget()->deleteLater(); delete item; } for(int i=0; iaddWidget(item, index / 3, index % 3); TextTip *tip = this->setTipWidget(item, ""); m_tips.append(tip); m_lifeItems.append(item); } } void ForecastWeatherWidget::refreshForecastData(const ForecastWeather &data, int index) { if (index == 0) { m_firstDay->resetForecastData(data, index); } else if (index == 1) { m_secondDay->resetForecastData(data, index); } if (index == 2) { m_thirdDay->resetForecastData(data, index); } } void ForecastWeatherWidget::refreshLifestyleData(const LifeStyle &data) { int n = 0; if (m_lifeItems.count() == 8 && m_tips.count() == 8) { //舒适度指数 m_lifeItems[n]->refreshLifeStyle(data.comf_brf, data.comf_txt); m_tips[n++]->resetTipText(data.comf_txt); //穿衣指数 m_lifeItems[n]->refreshLifeStyle(data.drsg_brf, data.drsg_txt); m_tips[n++]->resetTipText(data.drsg_txt); //感冒指数 m_lifeItems[n]->refreshLifeStyle(data.flu_brf, data.flu_txt); m_tips[n++]->resetTipText(data.flu_txt); //运动指数 m_lifeItems[n]->refreshLifeStyle(data.sport_brf, data.sport_txt); m_tips[n++]->resetTipText(data.sport_txt); //旅游指数 m_lifeItems[n]->refreshLifeStyle(data.trav_brf, data.trav_txt); m_tips[n++]->resetTipText(data.trav_txt); //紫外线指数 m_lifeItems[n]->refreshLifeStyle(data.uv_brf, data.uv_txt); m_tips[n++]->resetTipText(data.uv_txt); //洗车指数 m_lifeItems[n]->refreshLifeStyle(data.cw_brf, data.cw_txt); m_tips[n++]->resetTipText(data.cw_txt); //空气污染扩散条件指数 m_lifeItems[n]->refreshLifeStyle(data.air_brf, data.air_txt); m_tips[n++]->resetTipText(data.air_txt); } } TextTip *ForecastWeatherWidget::setTipWidget(QWidget *w, const QString &txt) { TextTip *tip = new TextTip(txt, this); w->setProperty("TextTipWidget", QVariant::fromValue(tip)); w->installEventFilter(m_tipModule); return tip; } void ForecastWeatherWidget::showLifeStyleIndex(const QString &name) { //comf_brf 舒适度指数 //drsg_brf 穿衣指数 //flu_brf 感冒指数 //sport_brf 运动指数 //trav_brf 旅游指数 //uv_brf 紫外线指数 //cw_brf 洗车指数 //air_brf 空气污染扩散条件指数 /*static const char *index_strings[] = { QT_TR_NOOP("comf index"), QT_TR_NOOP("drsg index"), QT_TR_NOOP("flu index"), QT_TR_NOOP("sport index"), QT_TR_NOOP("trav index"), QT_TR_NOOP("uv index"), QT_TR_NOOP("cw index"), QT_TR_NOOP("air index") }; if (!name.isEmpty()) { const int idx = LIFESTYLE.indexOf(name); qDebug() << tr(index_strings[idx]); }*/ } void ForecastWeatherWidget::setDayStyleSheets() { lifeTextLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_leftVSeparator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 1.0);}"); m_rightVSeparator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 1.0);}"); m_topHseperator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.5);margin-left:5px;margin-right:5px;}"); m_bottomHseperator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.5);margin-left:5px;margin-right:5px;}"); m_firstDay->setDayStyleSheets(); m_secondDay->setDayStyleSheets(); m_thirdDay->setDayStyleSheets(); for(int i=0; isetDayStyleSheets(); } } void ForecastWeatherWidget::setNightStyleSheets() { lifeTextLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#d9d9d9;font-size:12px;}"); m_leftVSeparator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.5);}"); m_rightVSeparator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.5);}"); m_topHseperator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.2);margin-left:5px;margin-right:5px;}"); m_bottomHseperator->setStyleSheet("QFrame{background-color: rgba(238, 238, 238, 0.2);margin-left:5px;margin-right:5px;}"); m_firstDay->setNightStyleSheets(); m_secondDay->setNightStyleSheets(); m_thirdDay->setNightStyleSheets(); for(int i=0; isetNightStyleSheets(); } } void ForecastWeatherWidget::leaveEvent(QEvent *e) { QWidget::leaveEvent(e); showLifeStyleIndex(QString()); } indicator-china-weather/src/citywidget.cpp0000664000175000017500000002623713644025330017652 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "citywidget.h" #include "citylistwidget.h" #include "cityitemwidget.h" #include #include #include #include #include #include #include "preferences.h" #include "global.h" using namespace Global; CityWidget::CityWidget(QWidget *parent) : QWidget(parent) , m_cityListWidget(new CityListWidget) , m_addBtn(new QPushButton(this)) , m_timer(new QTimer(this)) { this->setAttribute(Qt::WA_TranslucentBackground); this->setStyleSheet("QWidget{border:none; background-color:#ffffff;}"); m_scrollArea = new QScrollArea; m_scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); m_scrollArea->setWidgetResizable(true); m_scrollArea->setFrameStyle(QFrame::NoFrame); m_scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); m_scrollArea->verticalScrollBar()->setStyleSheet("QScrollBar:vertical{margin:0px 0px 0px 0px;background-color:rgb(255,255,255,100);border:0px;width:10px;}" \ "QScrollBar::sub-line:vertical{subcontrol-origin:margin;border:1px solid red;height:13px;}" \ "QScrollBar::up-arrow:vertical{subcontrol-origin:margin;background-color:blue;height:13px;}" \ "QScrollBar::sub-page:vertical{background-color:#EEEDF0;}" \ "QScrollBar::handle:vertical{background-color:#D1D0D2;width:10px;}" \ "QScrollBar::handle:vertical:hover{background-color:#14ACF5;width:10px;}" \ "QScrollBar::handle:vertical:pressed{background-color:#0B95D7;width:10px;}" \ "QScrollBar::add-page:vertical{background-color:#EEEDF0;}" \ "QScrollBar::down-arrow:vertical{background-color:yellow;}" \ "QScrollBar::add-line:vertical{subcontrol-origin:margin;border:1px solid green;height:18px;}"); m_addBtn->setFocusPolicy(Qt::NoFocus); m_addBtn->setCursor(QCursor(Qt::PointingHandCursor)); m_addBtn->setStyleSheet("QPushButton{padding-left:10px;font-size:12px;color:#808080;border:none;background:transparent;text-align:left;}QPushButton:hover{background-color:#f5fbff;}");//margin-left:18px;border:1px solid rgba(0, 0, 0, 0.08); m_addBtn->setFixedWidth(this->width()); m_addBtn->setText(tr("Add City")); m_addBtn->setIconSize(QSize(24, 24)); m_addBtn->setIcon(QIcon(":/res/add.png")); m_layout = new QVBoxLayout; m_layout->addWidget(m_scrollArea/*, 1, Qt::AlignCenter*/); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); this->setLayout(m_layout); m_widget = new QWidget; //m_widget->setStyleSheet("QWidget{background-color: #0d8700;}");//test widget's area with background color m_widget->setFixedWidth(m_scrollArea->width()); //m_widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_scrollArea->setWidget(m_widget); QVBoxLayout *v_layout = new QVBoxLayout(m_widget); v_layout->setContentsMargins(0,0,0,0); v_layout->setSpacing(10); v_layout->addWidget(m_cityListWidget); v_layout->addWidget(m_addBtn); v_layout->addStretch(); connect(m_addBtn, &QPushButton::clicked, this, &CityWidget::requestAddCity); m_dataList.clear(); this->loadCityItems(); m_timer->setSingleShot(false); m_timer->setInterval(30); connect(m_timer, &QTimer::timeout, this, &CityWidget::refreshListWeatherStatus, Qt::QueuedConnection); } CityWidget::~CityWidget() { if (m_timer) { disconnect(m_timer, SIGNAL(timeout()), this, SLOT(refreshListWeatherStatus())); if(m_timer->isActive()) { m_timer->stop(); } delete m_timer; m_timer = nullptr; } QList items = findChildren(); for (CityItemWidget *item : items) { m_cityListWidget->removeItem(item); item->deleteLater(); } QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } if (m_addBtn) { delete m_addBtn; m_addBtn = nullptr; } if (m_cityListWidget) { delete m_cityListWidget; m_cityListWidget = nullptr; } if (m_widget) { delete m_widget; m_widget = nullptr; } if (m_scrollArea) { delete m_scrollArea; m_scrollArea = nullptr; } } bool CityWidget::event(QEvent *event) { if (event->type() == QEvent::LayoutRequest) { m_widget->setFixedHeight(m_layout->sizeHint().height()); } return QWidget::event(event); } void CityWidget::loadCityItems() { for (int i = 0; i < m_preferences->m_cities.size(); ++i) { CitySettingData info; info.active = (m_preferences->m_currentCityId == m_preferences->m_cities.at(i).id) ? true : false; info.id = m_preferences->m_cities.at(i).id; info.name = m_preferences->m_cities.at(i).name; info.temperature = (m_preferences->m_currentCityId == m_preferences->m_cities.at(i).id) ? m_preferences->weather.tmp + "°C" : ""; if (m_preferences->weather.cond_code.isEmpty()) { info.icon = ":/res/weather_icons/darkgrey/999.png"; } else { info.icon = (m_preferences->m_currentCityId == m_preferences->m_cities.at(i).id) ? QString(":/res/weather_icons/darkgrey/%1.png").arg(m_preferences->weather.cond_code) : ":/res/weather_icons/darkgrey/999.png"; } addCityItem(info); } } void CityWidget::addCityItem(const CitySettingData &info) { if (m_preferences->isCitiesCountOverMax()) { emit responseCityError(QString(tr("Only 10 cities can be added at most!")));//最多只能添加10个城市 return; } for (CitySettingData line : m_dataList) { if (info.id == line.id) { emit responseCityError(QString(tr("The city already exists!")));//该城市已存在 return; } } m_dataList.append(info); CityItemWidget *item = new CityItemWidget(info); m_cityListWidget->appendItem(item); // connect(item, SIGNAL(enter()), this, SLOT(onMouseEnter())); connect(item, &CityItemWidget::requestDeleteCity, this, [=] (const QString id) { if (m_preferences->citiesCount() == 1) { emit responseCityError(QString(tr("At least one city needs to be preserved!")));//至少需要保留一个城市 return; } for (CitySettingData line : m_dataList) { if (line.id == id) { //delete this city int pos = m_dataList.indexOf(line); if (pos != -1) { m_dataList.removeAt(pos); } this->removeCityItemById(id); //如果删除的城市是默认城市,则需要设置新的默认城市 m_preferences->removeCityInfoFromPref(id, line.active);//remove and update m_cityList, m_cities, m_currentCity and m_currentCityId this->refreshCityList(m_preferences->m_currentCityId); emit this->requestRefreshCityMenu(line.active); } } }); //根据城市id设置该城市为默认选中的当前城市 connect(item, &CityItemWidget::requestSetDefaultCityById, this, [=] (const QString id) { QStringList homePath = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); QString savePath = homePath.at(0) + "/.config/china-weather-save"; QFile file(savePath); file.open(QIODevice::WriteOnly | QIODevice::Text); QString m_cityid = id; file.write(m_cityid.toUtf8()); file.close(); QList cityItems = findChildren(); for (CityItemWidget *cityItem : cityItems) { if (cityItem->getCityId() == id) { cityItem->setItemAction(true); QList::iterator iter = m_dataList.begin(); for (; iter != m_dataList.end(); iter++) { if (iter->id == id) iter->setActive(true); else iter->setActive(false); } emit this->requestRefreshWeatherById(id); } else { cityItem->setItemAction(false); } m_timer->start(); } }); m_timer->start(); } void CityWidget::removeCityItemById(const QString &id) { QList items = findChildren(); for (CityItemWidget *item : items) { if (item->getCityId() == id) { m_cityListWidget->removeItem(item); item->deleteLater(); break; } } m_timer->start(); } void CityWidget::refreshListWeatherStatus() { QList items = findChildren(); for (CityItemWidget *item : items) { if (item->getCityId() == m_preferences->m_currentCityId) { QString icon; QString temp; if (m_preferences->weather.cond_code.isEmpty()) { temp = ""; } else { temp = m_preferences->weather.tmp + "°C"; } if (m_preferences->weather.cond_code.isEmpty()) { icon = ":/res/weather_icons/darkgrey/999.png"; } else { icon = QString(":/res/weather_icons/darkgrey/%1.png").arg(m_preferences->weather.cond_code); } item->setItemWeather(temp, icon); } else { item->setItemWeather("", ":/res/weather_icons/darkgrey/999.png"); } } } void CityWidget::refreshCityList(const QString &id) { QList cityItems = findChildren(); for (CityItemWidget *cityItem : cityItems) { if (cityItem->getCityId() == id) cityItem->setItemAction(true); else cityItem->setItemAction(false); } m_timer->start(); } /*void CityWidget::onMouseEnter() { QList items = findChildren(); for (CityItemWidget *item : items) { if (item->getCityId() == ((CityItemWidget*) sender())->getCityId()) { item->setItemHovered(); } else { item->unsetItemHovered(); } } }*/ indicator-china-weather/src/searchinputedit.h0000664000175000017500000000214013644002575020327 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SEARCHINPUTEDIT_H #define SEARCHINPUTEDIT_H #include class SearchInputEdit : public QLineEdit { Q_OBJECT public: explicit SearchInputEdit(QWidget* parent = 0); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: QString m_searchText; QPixmap m_searchPixmap; }; #endif // SEARCHINPUTEDIT_H indicator-china-weather/src/indexitemwidget.cpp0000664000175000017500000000730613644002575020672 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "indexitemwidget.h" #include #include #include IndexItemWidget::IndexItemWidget(const QString &name, const QString &iconPath, QWidget *parent) : QWidget(parent) , m_mouseHover(false) , m_iconPath(iconPath) , m_brf("-") , m_txt("-") , m_titleColor(QColor("#cfcfcf")) , m_txtColor(QColor("#808080")) { this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); if (name == "comf") { m_indexName = QString(tr("comf")); } else if (name == "drsg") { m_indexName = QString(tr("drsg")); } else if (name == "flu") { m_indexName = QString(tr("flu")); } else if (name == "sport") { m_indexName = QString(tr("sport")); } else if (name == "trav") { m_indexName = QString(tr("trav")); } else if (name == "uv") { m_indexName = QString(tr("uv")); } else if (name == "cw") { m_indexName = QString(tr("cw")); } else if (name == "air") { m_indexName = QString(tr("air")); } else { m_indexName = name; } } void IndexItemWidget::refreshLifeStyle(const QString &brf, const QString &txt) { this->m_brf = brf; this->m_txt = txt; update(); } void IndexItemWidget::setDayStyleSheets() { m_titleColor = QColor("#cfcfcf"); m_txtColor = QColor("#808080"); update(); } void IndexItemWidget::setNightStyleSheets() { m_titleColor = QColor("#808080"); m_txtColor = QColor("#cdcdcd"); update(); } void IndexItemWidget::enterEvent(QEvent *event) { QWidget::enterEvent(event); this->m_mouseHover = true; emit this->requestShowMsg(m_indexName); update(); } void IndexItemWidget::leaveEvent(QEvent *event) { QWidget::leaveEvent(event); this->m_mouseHover = false; update(); } void IndexItemWidget::paintEvent(QPaintEvent *e) { QWidget::paintEvent(e); QPainter painter(this); painter.fillRect(rect(), QColor(0, 0, 0, m_mouseHover ? 20 : 0)); const qreal ratio = qApp->devicePixelRatio(); painter.setRenderHint(QPainter::Antialiasing, true); QPixmap icon = QPixmap(this->m_iconPath); QRect iconRect(20, 2, icon.width()/ratio, icon.height()/ratio); painter.drawPixmap(iconRect, icon); painter.setRenderHint(QPainter::Antialiasing, false); QFont font = painter.font(); font.setPixelSize(12);//font.setPointSize(14); QFontMetrics fm(font); QPen pen(Qt::white); painter.setPen(pen); painter.setFont(font); QRect valueRect(iconRect.right() + 5, iconRect.y(), fm.width(this->m_brf), 20); painter.setPen(QPen(m_txtColor)); painter.drawText(valueRect, Qt::AlignVCenter | Qt::AlignLeft, this->m_brf); font.setPixelSize(10);//font.setPointSize(12); QRect titleRect(valueRect.x(), valueRect.bottom(), this->width() - icon.width()/ratio - 5*2, 20); painter.setPen(QPen(m_titleColor)); painter.drawText(titleRect, Qt::AlignVCenter | Qt::AlignLeft, this->m_indexName); } indicator-china-weather/src/texttip.h0000664000175000017500000000235113644002575016641 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TEXTTIP_H #define TEXTTIP_H #include class QLabel; class TextTip : public QFrame { Q_OBJECT public: explicit TextTip(const QString &txt, QWidget *parent = 0); ~TextTip(); void resetTipText(const QString &txt); protected: virtual void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: int m_radius; QBrush m_background; QColor m_borderColor; QLabel *m_textLabel = nullptr; QFrame *m_frame = nullptr; }; #endif // TEXTTIP_H indicator-china-weather/src/contentwidget.cpp0000664000175000017500000000546113644002575020356 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "contentwidget.h" #include "nowweatherwidget.h" #include "forecastweatherwidget.h" #include "networkerrorwidget.h" #include ContentWidget::ContentWidget(QWidget *parent) : QFrame(parent) { m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); // m_layout->setSpacing(1); m_nowWidget = new NowWeatherWidget(this);//this->setFixedSize(355, 180); m_forecastWidget = new ForecastWeatherWidget(this);//this->setFixedSize(355, 340); m_networkErrorWidget = new NetworkErrorWidget(this); m_networkErrorWidget->setVisible(false); connect(m_networkErrorWidget, &NetworkErrorWidget::requestRetryAccessWeather, this, [=] { m_networkErrorWidget->setVisible(false); m_nowWidget->setVisible(true); m_forecastWidget->setVisible(true); emit requestRetryWeather(); }); m_layout->addWidget(m_nowWidget, 0, Qt::AlignTop); m_layout->addWidget(m_forecastWidget); m_layout->addWidget(m_networkErrorWidget); } ContentWidget::~ContentWidget() { QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void ContentWidget::showServerNotifyInfo(const QString &info) { if (!info.isEmpty()) m_nowWidget->displayTip(info); } void ContentWidget::refreshObserveUI(const ObserveWeather &data) { m_nowWidget->refreshData(data); } void ContentWidget::refreshForecastUI(const ForecastWeather &data, int index) { m_forecastWidget->refreshForecastData(data, index); } void ContentWidget::refreshLifestyleUI(const LifeStyle &data) { m_forecastWidget->refreshLifestyleData(data); } void ContentWidget::setNetworkErrorPages() { m_nowWidget->setVisible(false); m_forecastWidget->setVisible(false); m_networkErrorWidget->setVisible(true); } void ContentWidget::setDayStyleSheets() { m_forecastWidget->setDayStyleSheets(); } void ContentWidget::setNightStyleSheets() { m_forecastWidget->setNightStyleSheets(); } indicator-china-weather/src/searchview.cpp0000664000175000017500000000511113644002575017630 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchview.h" #include SearchView::SearchView(QWidget *parent) : QListView(parent) { this->setMouseTracking(true); this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); this->setStyleSheet("QListView{border:none;margin:0px;padding:0px;outline:none;background-color:rgba(255, 255, 255, 1);}QListView::item:selected:!active{background:#e9eef1;}QListView::item:selected:active{background:#3f96e4;}QListView::item:hover{background:#e9eef0;}");//QListView::item{height:36px;} QListView::item:selected{color:white;background-color:#e9eef0;} this->verticalScrollBar()->setStyleSheet("QScrollBar:vertical{margin:0px 0px 0px 0px;background-color:rgb(255,255,255,100);border:0px;width:10px;}" \ "QScrollBar::sub-line:vertical{subcontrol-origin:margin;border:1px solid red;height:13px;}" \ "QScrollBar::up-arrow:vertical{subcontrol-origin:margin;background-color:blue;height:13px;}" \ "QScrollBar::sub-page:vertical{background-color:#EEEDF0;}" \ "QScrollBar::handle:vertical{background-color:#D1D0D2;width:10px;}" \ "QScrollBar::handle:vertical:hover{background-color:#14ACF5;width:10px;}" \ "QScrollBar::handle:vertical:pressed{background-color:#0B95D7;width:10px;}" \ "QScrollBar::add-page:vertical{background-color:#EEEDF0;}" \ "QScrollBar::down-arrow:vertical{background-color:yellow;}" \ "QScrollBar::add-line:vertical{subcontrol-origin:margin;border:1px solid green;height:18px;}"); } SearchView::~SearchView() { } indicator-china-weather/src/data.h0000664000175000017500000001003113644002575016043 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DATA_H #define DATA_H #include struct City { QString id; QString name; }; struct Air { QString id; QString aqi; QString qlty; QString main; QString pm25; QString pm10; QString no2; QString so2; QString co; QString o3; }; struct ObserveWeather { QString id; QString city; QString updatetime; QString air;//空气质量 QString cloud;//云量 QString cond_code;//实况天气状况代码 100 QString cond_txt;//实况天气状况描述 晴 QString fl;//体感温度,默认单位:摄氏度 23 QString hum;//相对湿度 40 QString pcpn;//降水量(毫米 mm) 0 QString pres;//大气压强(百帕 hPa) 1020 QString tmp;//温度,默认单位:摄氏度℃ 21 QString vis;//能见度,默认单位:公里 km 10 QString wind_deg;//风向360角度 305 QString wind_dir;//风向 西北 QString wind_sc;//风力 3 (0:静风 1:1级风) QString wind_spd;//风速,公里/小时 km/h 15 }; struct ForecastWeather { QString cond_code_d;//白天天气状况代码 100 QString cond_code_n;//晚间天气状况代码 100 QString cond_txt_d;//白天天气状况描述 晴 QString cond_txt_n;//晚间天气状况描述 晴 QString forcast_date;//预报日期 2013-12-30 QString hum;//相对湿度 37 QString mr_ms;//月升时间 04:47 月落时间 14:59 QString pcpn;//降水量 0 QString pop;//降水概率 0 QString pres;//大气压强 1018 QString sr_ss;//日出时间 07:36 日落时间 16:58 QString tmp_max;//最高温度 4 QString tmp_min;//最低温度 -5 QString uv_index;//紫外线强度指数 3 QString vis;//能见度,单位:公里 10 QString wind_deg;//风向360角度 310 QString wind_dir;//风向 西北风 QString wind_sc;//风力 1-2 (级风) QString wind_spd;//风速,公里/小时 14 }; struct LifeStyle { QString air_brf; QString air_txt; QString comf_brf; QString comf_txt; QString cw_brf; QString cw_txt; QString drsg_brf; QString drsg_txt; QString flu_brf; QString flu_txt; QString sport_brf; QString sport_txt; QString trav_brf; QString trav_txt; QString uv_brf; QString uv_txt; }; struct LocationData { QString id; QString city_en; QString city; QString country_en; QString country; QString province_en; QString province; QString admin_district_en; QString admin_district; }; class CitySettingData { public: bool active; QString id; QString name; QString temperature; QString icon; public: void setActive(bool b) { active = b; } }; inline bool operator ==(const City &data, const City &other) { return data.id == other.id; } inline bool operator ==(const CitySettingData &data, const CitySettingData &other) { return data.id == other.id; } inline bool operator ==(const LocationData &data, const LocationData &that) { return data.id == that.id || (data.admin_district == that.admin_district && data.city == that.city); } Q_DECLARE_METATYPE(City) Q_DECLARE_METATYPE(ObserveWeather) Q_DECLARE_METATYPE(ForecastWeather) Q_DECLARE_METATYPE(LifeStyle) Q_DECLARE_METATYPE(LocationData) Q_DECLARE_METATYPE(CitySettingData) #endif // DATA_H indicator-china-weather/src/indexitemwidget.h0000664000175000017500000000303313644002575020330 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef INDEXITEMWIDGET_H #define INDEXITEMWIDGET_H #include class IndexItemWidget : public QWidget { Q_OBJECT public: explicit IndexItemWidget(const QString &name, const QString &iconPath, QWidget *parent = 0); void refreshLifeStyle(const QString &brf, const QString &txt); void setDayStyleSheets(); void setNightStyleSheets(); signals: void requestShowMsg(const QString &name) const; protected: void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: bool m_mouseHover; QString m_indexName; QString m_iconPath; QString m_brf; QString m_txt; QColor m_txtColor; QColor m_titleColor; }; #endif // INDEXITEMWIDGET_H indicator-china-weather/src/settingdialog.h0000664000175000017500000000571413644002575020003 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SETTINGDIALOG_H #define SETTINGDIALOG_H #include #include #include #include "data.h" class QVBoxLayout; class QStackedWidget; class SettingTitleBar; class CityWidget; class SpinBox; class QSlider; class QGroupBox; class SearchTitleBar; class SearchView; class SearchDelegate; class SearchModel; class SettingDialog : public QDialog { Q_OBJECT public: explicit SettingDialog(QWidget *parent = 0); ~SettingDialog(); void setData(); void refreshCityList(const QString &id); void initSettings(); void initSearch(); QRect getParentGeometry() const; void moveToCenter(); void addCityItem(const CitySettingData &info); public slots: virtual void accept(); virtual void reject(); signals: void applied(); void requestRefreshCityMenu(bool removedDefault); void requestRefreshWeatherById(const QString &id); //void requestSetDefaultCity(); void requestChangeOpacity(int opacity); void requestAddCityToMenu(const LocationData &data); protected: void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent *event); private: QPoint m_dragPosition; bool m_mousePressed; QVBoxLayout *m_settingLayout = nullptr; QFrame *m_settingFrame = nullptr; SettingTitleBar *m_settingTitleBar = nullptr; QStackedWidget *m_stackedWidget = nullptr; CityWidget *m_cityWidget = nullptr; /*QWidget *m_cityWidget = nullptr; CityListWidget *m_cityListWidget = nullptr; QPushButton *m_addCityBtn = nullptr;*/ QWidget *m_systemWidget = nullptr; QGroupBox *m_variableGroup = nullptr; QGroupBox *m_fixedGroup = nullptr; SpinBox *m_spinBox = nullptr; QSlider *m_opacitySlider = nullptr; QFrame *m_searchFrame = nullptr; SearchTitleBar *m_searchTitleBar = nullptr; QWidget *m_displayWidget = nullptr; QLabel *m_noResultLabel = nullptr; SearchModel *m_searchModel = nullptr; SearchView *m_searchView = nullptr; SearchDelegate *m_searchDelegate = nullptr; // QPushButton *m_okBtn = nullptr; }; #endif // SETTINGDIALOG_H indicator-china-weather/src/nowweatherwidget.h0000664000175000017500000000354413644002575020534 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef NOW_WEATHER_WIDGET_H #define NOW_WEATHER_WIDGET_H #include #include #include "data.h" class QLabel; class TranslucentLabel; class TipWidget; class TextTip; class TipModule; class AirWidget; class NowWeatherWidget : public QFrame { Q_OBJECT public: explicit NowWeatherWidget(QFrame *parent = 0); ~NowWeatherWidget(); void setWeatherIcon(const QString &iconPath); void displayTip(const QString &info); void refreshData(const ObserveWeather &data); protected: void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: QLabel *m_tempLabel = nullptr; QLabel *m_weatherLabel = nullptr; QLabel *m_humidityValueLabel = nullptr; QLabel *m_windLabel = nullptr; QLabel *m_windPowerLabel = nullptr; QLabel *m_weatherIcon = nullptr; TranslucentLabel *m_aqiLabel = nullptr; TranslucentLabel *m_temperatureLabel = nullptr; TipWidget *m_tipWidget = nullptr; QTimer *m_tipTimer = nullptr; //TextTip *m_tip = nullptr; //TipModule *m_tipModule = nullptr; AirWidget *m_ariWidget = nullptr; }; #endif // NOW_WEATHER_WIDGET_H indicator-china-weather/src/com.kylin.weather.xml0000644000175000017500000000040513530705155021044 0ustar fengfeng indicator-china-weather/src/settingdialog.cpp0000664000175000017500000006203713644002575020337 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "settingdialog.h" #include "settingtitlebar.h" #include "citywidget.h" #include "spinbox.h" #include "searchtitlebar.h" #include "searchmodel.h" #include "searchview.h" #include "searchdelegate.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "preferences.h" #include "global.h" using namespace Global; namespace { const int BUTTON_WIDGET_HEIGHT = 30; const int GROUP_BOX_MARGIN = 20; const int ANIMATION_DELAY_TIME_INTERVAL = 300; const int CONTENT_MARGIN = 0; void animationFromBottomToTop(QWidget *topWidget, QWidget *bottomWidget) { bottomWidget->setVisible(true); topWidget->setVisible(true); QRect topStartRect = QRect(0, 0, topWidget->width(), topWidget->height()); QRect topEndRect = topStartRect; topEndRect.moveTop(-topWidget->height()); QPropertyAnimation *topAnim = new QPropertyAnimation(topWidget, "geometry"); topAnim->connect(topAnim, &QPropertyAnimation::finished, topAnim, &QPropertyAnimation::deleteLater); topAnim->connect(topAnim, &QPropertyAnimation::finished, topWidget, &QWidget::hide); topAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); topAnim->setEasingCurve(QEasingCurve::InOutCubic); topAnim->setStartValue(topStartRect); topAnim->setEndValue(topEndRect); topAnim->start(); QRect bottomStartRect = QRect(0, topWidget->height(), bottomWidget->width(), bottomWidget->height()); QRect bottomEndRect = bottomStartRect; bottomEndRect.moveTo(0, 0); QPropertyAnimation *bottomAnim = new QPropertyAnimation(bottomWidget, "geometry"); bottomAnim->connect(bottomAnim, &QPropertyAnimation::finished, bottomAnim, &QPropertyAnimation::deleteLater); bottomAnim->setEasingCurve(QEasingCurve::InOutCubic); bottomAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); bottomAnim->setStartValue(bottomStartRect); bottomAnim->setEndValue(bottomEndRect); bottomAnim->start(); QGraphicsOpacityEffect *bottomOpacity = new QGraphicsOpacityEffect(bottomWidget); bottomWidget->setGraphicsEffect(bottomOpacity); bottomOpacity->setOpacity(0); QPropertyAnimation *bottomOpacityAnim = new QPropertyAnimation(bottomOpacity, "opacity"); bottomOpacityAnim->connect(bottomOpacityAnim, &QPropertyAnimation::finished, bottomOpacityAnim, &QPropertyAnimation::deleteLater); bottomOpacityAnim->connect(bottomOpacityAnim, &QPropertyAnimation::finished, bottomWidget, [ = ] () { bottomWidget->setGraphicsEffect(nullptr); }); bottomOpacityAnim->setEasingCurve(QEasingCurve::InCubic); bottomOpacityAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); bottomOpacityAnim->setStartValue(0.0); bottomOpacityAnim->setEndValue(1.0); bottomOpacityAnim->start(); QGraphicsOpacityEffect *topOpacity = new QGraphicsOpacityEffect(topWidget); topWidget->setGraphicsEffect(topOpacity); topOpacity->setOpacity(1.0); QPropertyAnimation *topOpacityAnim = new QPropertyAnimation(topOpacity, "opacity"); topOpacityAnim->connect(topOpacityAnim, &QPropertyAnimation::finished, topOpacityAnim, &QPropertyAnimation::deleteLater); topOpacityAnim->connect(topOpacityAnim, &QPropertyAnimation::finished, topWidget, [ = ] () { topWidget->setGraphicsEffect(nullptr); }); topOpacityAnim->setEasingCurve(QEasingCurve::InCubic); topOpacityAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); topOpacityAnim->setStartValue(1.0); topOpacityAnim->setEndValue(0.0); topOpacityAnim->start(); } void animationFromTopToBottom(QWidget *topWidget, QWidget *bottomWidget) { bottomWidget->setVisible(true); topWidget->setVisible(true); QRect topStartRect = QRect(0, 0, topWidget->width(), topWidget->height()); QRect topEndRect = topStartRect; topEndRect.moveTo(0, topWidget->height()); QPropertyAnimation *topAnim = new QPropertyAnimation(topWidget, "geometry"); topAnim->connect(topAnim, &QPropertyAnimation::finished, topAnim, &QPropertyAnimation::deleteLater); topAnim->connect(topAnim, &QPropertyAnimation::finished, topWidget, &QWidget::hide); topAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); topAnim->setEasingCurve(QEasingCurve::InOutCubic); topAnim->setStartValue(topStartRect); topAnim->setEndValue(topEndRect); topAnim->start(); QRect bottomStartRect = QRect(0, -topWidget->height(), bottomWidget->width(), bottomWidget->height()); QRect bottomEndRect = bottomStartRect; bottomEndRect.moveBottom(topWidget->height() - 1); QPropertyAnimation *bottomAnim = new QPropertyAnimation(bottomWidget, "geometry"); bottomAnim->connect(bottomAnim, &QPropertyAnimation::finished, bottomAnim, &QPropertyAnimation::deleteLater); bottomAnim->setEasingCurve(QEasingCurve::InOutCubic); bottomAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); bottomAnim->setStartValue(bottomStartRect); bottomAnim->setEndValue(bottomEndRect); bottomAnim->start(); QGraphicsOpacityEffect *bottomOpacity = new QGraphicsOpacityEffect(bottomWidget); bottomWidget->setGraphicsEffect(bottomOpacity); bottomOpacity->setOpacity(0); QPropertyAnimation *bottomOpacityAnim = new QPropertyAnimation(bottomOpacity, "opacity"); bottomOpacityAnim->connect(bottomOpacityAnim, &QPropertyAnimation::finished, bottomOpacityAnim, &QPropertyAnimation::deleteLater); bottomOpacityAnim->connect(bottomOpacityAnim, &QPropertyAnimation::finished, bottomWidget, [ = ]() { bottomWidget->setGraphicsEffect(nullptr); }); bottomOpacityAnim->setEasingCurve(QEasingCurve::InCubic); bottomOpacityAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); bottomOpacityAnim->setStartValue(0.0); bottomOpacityAnim->setEndValue(1.0); bottomOpacityAnim->start(); QGraphicsOpacityEffect *topOpacity = new QGraphicsOpacityEffect(topWidget); topWidget->setGraphicsEffect(topOpacity); topOpacity->setOpacity(1.0); QPropertyAnimation *topOpacityAnim = new QPropertyAnimation(topOpacity, "opacity"); topOpacityAnim->connect(topOpacityAnim, &QPropertyAnimation::finished, topOpacityAnim, &QPropertyAnimation::deleteLater); topOpacityAnim->connect(topOpacityAnim, &QPropertyAnimation::finished, bottomWidget, [ = ] () { topWidget->setGraphicsEffect(nullptr); }); topOpacityAnim->setEasingCurve(QEasingCurve::InCubic); topOpacityAnim->setDuration(ANIMATION_DELAY_TIME_INTERVAL); topOpacityAnim->setStartValue(1.0); topOpacityAnim->setEndValue(0.0); topOpacityAnim->start(); } } SettingDialog::SettingDialog(QWidget *parent): QDialog(parent) // , m_settingLayout(new QVBoxLayout(this)) // , m_stackedWidget(new QStackedWidget) // , m_okBtn(new QPushButton(this)) { this->setWindowFlags(Qt::FramelessWindowHint); this->setFixedSize(479, 421); this->setFocusPolicy(Qt::ClickFocus); this->setWindowTitle(tr("Kylin Weather - Setting")); this->setWindowIcon(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather.png"))); //Why????? setStyleSheet将导致添加城市后,列表没有自动拉伸,出现重叠,但是qDebug打印的高度确实增加了,但是使用paintEvent可以 //this->setStyleSheet("QDialog{border:1px solid #000000;border-radius:2px;background:rgba(255, 255, 255, 0.7);}QDialog:hover{background: rgba(255, 255, 255, 1.0);}"); initSettings(); initSearch(); QStackedLayout *contentLayout = new QStackedLayout(this); contentLayout->setContentsMargins(20, 20, 20, 20); contentLayout->setMargin(0); contentLayout->setSpacing(0); contentLayout->addWidget(m_settingFrame); contentLayout->addWidget(m_searchFrame); m_settingFrame->setVisible(true); } SettingDialog::~SettingDialog() { if (m_settingFrame) { delete m_settingFrame; m_settingFrame = nullptr; } if (m_searchFrame) { delete m_searchFrame; m_searchFrame = nullptr; } QLayoutItem *child; while ((child = m_settingLayout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } delete m_searchTitleBar; delete m_noResultLabel; delete m_searchModel; delete m_searchView; delete m_searchDelegate; } QRect SettingDialog::getParentGeometry() const { if (this->parentWidget()) { return this->parentWidget()->window()->geometry(); } else { QPoint pos = QCursor::pos(); for (QScreen *screen : qApp->screens()) { if (screen->geometry().contains(pos)) { return screen->geometry(); } } } return qApp->primaryScreen()->geometry(); } void SettingDialog::moveToCenter() { QRect qr = geometry(); qr.moveCenter(this->getParentGeometry().center()); move(qr.topLeft()); this->show(); } void SettingDialog::initSettings() { m_settingFrame = new QFrame; m_settingFrame->setFixedSize(this->size()); m_settingFrame->setContentsMargins(0, 0, 0, 0); m_settingLayout = new QVBoxLayout(m_settingFrame); m_stackedWidget = new QStackedWidget; m_settingLayout->setContentsMargins(1, 1, 1, 1); m_settingLayout->setSpacing(0); m_settingTitleBar = new SettingTitleBar(m_settingFrame); m_settingTitleBar->setFixedHeight(100); m_cityWidget = new CityWidget(m_settingFrame);//m_cityWidget = new QWidget; // m_cityWidget->setContentsMargins(0, 0, 0, 0); m_cityWidget->setFixedHeight(this->height() - m_settingTitleBar->height() - 2/* - BUTTON_WIDGET_HEIGHT*/); m_cityWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_systemWidget = new QWidget(m_settingFrame); m_systemWidget->setStyleSheet("QWidget{border-radius: 0px; background-color:#ffffff;}"); m_systemWidget->setFixedHeight(this->height() - m_settingTitleBar->height() - 2/* - BUTTON_WIDGET_HEIGHT*/); m_systemWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); connect(m_cityWidget, &CityWidget::responseCityError, m_settingTitleBar, &SettingTitleBar::showWarnInfo); /*m_okBtn->setFixedSize(90, 25); m_okBtn->setFocusPolicy(Qt::NoFocus); m_okBtn->setText(tr("Close"));*/ //------------------ /*m_cityListWidget = new CityListWidget(m_cityWidget); m_addCityBtn = new QPushButton(m_cityWidget); m_addCityBtn->setFocusPolicy(Qt::NoFocus); m_addCityBtn->setStyleSheet("QPushButton{font-size:12px;color:#808080;background:transparent;text-align:left;}");//margin-left:18px;border:1px solid rgba(0, 0, 0, 0.08); QPushButton:hover{background-color:#f5fbff;} m_addCityBtn->setFixedWidth(this->width()); m_addCityBtn->setText("Add"); m_addCityBtn->setIconSize(QSize(24, 24)); m_addCityBtn->setIcon(QIcon(":/res/add.png")); QVBoxLayout *m_cityLayout = new QVBoxLayout(m_cityWidget); m_cityLayout->setContentsMargins(0, 0, 0, 0); m_cityLayout->setSpacing(0); m_cityLayout->addWidget(m_cityListWidget, 1, Qt::AlignTop); m_cityLayout->addWidget(m_addCityBtn, 0, Qt::AlignBottom);*/ //------------------------- m_variableGroup = new QGroupBox(m_systemWidget); m_variableGroup->setStyleSheet("QGroupBox{border:1px solid #e0e0e0;border-radius:2px;margin-top:15px;font-size:14px;}QGroupBox:title{subcontrol-origin: margin;subcontrol-position: top left;padding: 6px 3px;color:#00609a;font-weight:bold;}"); m_variableGroup->setTitle(tr("Variable configuration")); m_variableGroup->setFixedWidth(this->width() - 2*GROUP_BOX_MARGIN); // m_variableGroup->setContentsMargins(10, 10, 10, 10); QLabel *updateFreqLabel = new QLabel(m_systemWidget); updateFreqLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); updateFreqLabel->setStyleSheet("QLabel{color:#808080;font-size:14px;text-align:left;}"); updateFreqLabel->setText(tr("Update frequency") + "(15-60)"); m_spinBox = new SpinBox(m_systemWidget); m_spinBox->setFixedWidth(80); m_spinBox->setContextMenuPolicy(Qt::NoContextMenu); m_spinBox->setRange(15, 60); m_spinBox->setSpinValue(m_preferences->m_updateFrequency); QHBoxLayout *m_freqLayout = new QHBoxLayout; m_freqLayout->setSpacing(5); m_freqLayout->addWidget(updateFreqLabel); m_freqLayout->addWidget(m_spinBox); QLabel *opacityLabel = new QLabel; opacityLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); opacityLabel->setStyleSheet("QLabel{color:#808080;font-size:14px;text-align:left;}"); opacityLabel->setText(tr("Background transparency")); m_opacitySlider = new QSlider(Qt::Horizontal, m_systemWidget); m_opacitySlider->setStyleSheet("QSlider::groove:horizontal,QSlider::add-page:horizontal{height:3px;border-radius:3px;background:#7c8487;}QSlider::sub-page:horizontal{height:8px;border-radius:3px;background:#bdbdbd;}QSlider::handle:horizontal{width:12px;margin-top:-5px;margin-bottom:-4px;border-radius:6px;background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #7c8487,stop:0.8 #7c8487);}QSlider::groove:vertical,QSlider::sub-page:vertical{width:8px;border-radius:3px;background:#808080;}QSlider::add-page:vertical{width:8px;border-radius:3px;background:#808080;}QSlider::handle:vertical{height:12px;margin-left:-5px;margin-right:-4px;border-radius:6px;background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #7c8487,stop:0.8 #7c8487);}"); m_opacitySlider->setFocusPolicy(Qt::NoFocus); m_opacitySlider->setFocusProxy(this); m_opacitySlider->setTracking(true); m_opacitySlider->setFixedWidth(80); m_opacitySlider->setRange(60, 100); m_opacitySlider->setSingleStep(1); m_opacitySlider->blockSignals(true); m_opacitySlider->setValue(m_preferences->m_opacity);//static_cast(m_preferences->m_opacity * 100); m_opacitySlider->blockSignals(false); QHBoxLayout *m_opacityLayout = new QHBoxLayout; m_opacityLayout->setSpacing(5); m_opacityLayout->addWidget(opacityLabel); m_opacityLayout->addWidget(m_opacitySlider); QVBoxLayout *m_variableLayout = new QVBoxLayout; m_variableLayout->setContentsMargins(GROUP_BOX_MARGIN, 10, GROUP_BOX_MARGIN, 10); m_variableLayout->setSpacing(5); m_variableLayout->addLayout(m_freqLayout); m_variableLayout->addLayout(m_opacityLayout); m_variableGroup->setLayout(m_variableLayout); // QHBoxLayout *m_variableLayout = new QHBoxLayout; // m_variableLayout->setContentsMargins(GROUP_BOX_MARGIN, 10, GROUP_BOX_MARGIN, 10); // m_variableLayout->setSpacing(5); // m_variableLayout->addWidget(updateFreqLabel); // m_variableLayout->addWidget(m_spinBox); // m_variableGroup->setLayout(m_variableLayout); m_fixedGroup = new QGroupBox(m_systemWidget); m_fixedGroup->setStyleSheet("QGroupBox{border:1px solid #e0e0e0;border-radius:2px;margin-top:15px;font-size:14px;}QGroupBox:title{subcontrol-origin: margin;subcontrol-position: top left;padding: 6px 3px;color:#00609a;font-weight:bold;}"); m_fixedGroup->setTitle(tr("Fixed configuration")); m_fixedGroup->setFixedWidth(m_variableGroup->width()); QLabel *tempLabel = new QLabel; tempLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); tempLabel->setStyleSheet("QLabel{color:#808080;font-size:14px;text-align:left;}"); tempLabel->setText(tr("Temperature standard") + ": " + "˚C"); QLabel *serviceLabel = new QLabel; serviceLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); serviceLabel->setStyleSheet("QLabel{color:#808080;font-size:14px;text-align:left;}"); serviceLabel->setText(tr("Source of weather: heweather")); QVBoxLayout *m_fixedLayout = new QVBoxLayout; m_fixedLayout->setContentsMargins(GROUP_BOX_MARGIN, 10, GROUP_BOX_MARGIN, 10); m_fixedLayout->setSpacing(10); m_fixedLayout->addWidget(tempLabel); m_fixedLayout->addWidget(serviceLabel); m_fixedGroup->setLayout(m_fixedLayout); QVBoxLayout *m_systemLayout = new QVBoxLayout(m_systemWidget); m_systemLayout->setContentsMargins(10, 10, 10, 10); m_systemLayout->setSpacing(20); m_systemLayout->addWidget(m_variableGroup, 0, Qt::AlignLeft | Qt::AlignTop); m_systemLayout->addWidget(m_fixedGroup, 0, Qt::AlignLeft); m_systemLayout->addStretch(); m_stackedWidget->addWidget(m_cityWidget); m_stackedWidget->addWidget(m_systemWidget); m_stackedWidget->setCurrentWidget(m_cityWidget); m_settingLayout->addWidget(m_settingTitleBar, 0, Qt::AlignTop); m_settingLayout->addWidget(m_stackedWidget, 1, Qt::AlignVCenter); // m_settingLayout->addWidget(m_okBtn, 0, Qt::AlignRight); m_settingLayout->addStretch(); connect(m_settingTitleBar, &SettingTitleBar::requestCloseDialog, this, [=] { this->accept(); }); connect(m_cityWidget, &CityWidget::requestAddCity, this, [=] { this->setWindowTitle(tr("Kylin Weather - Search")); animationFromBottomToTop(m_settingFrame, m_searchFrame); }); connect(m_cityWidget, &CityWidget::requestRefreshCityMenu, this, &SettingDialog::requestRefreshCityMenu); //connect(m_cityWidget, &CityWidget::requestSetDefaultCity, this, &SettingDialog::requestSetDefaultCity); connect(m_cityWidget, &CityWidget::requestRefreshWeatherById, this, &SettingDialog::requestRefreshWeatherById); /*connect(m_addCityBtn, &QPushButton::clicked, this, [=] { SearchDialog dlg; connect(&dlg, &SearchDialog::requestAddCityToMenu, this, [this] (const LocationData &data) { qDebug() << "set city's id=" << data.id; CitySettingData info; info.active = false; info.id = data.id; info.name = data.city; info.icon = ":/res/weather_icons/lightgrey/100.png"; m_cityListWidget->loadItem(info); emit this->requestAddCityToMenu(data); }); dlg.exec(); });*/ /*connect(m_okBtn, &QPushButton::clicked, this, [=] { this->accept(); });*/ connect(m_settingTitleBar, &SettingTitleBar::requestSwitchPage, this, [=] (bool b) { if (b) { m_stackedWidget->setCurrentWidget(m_cityWidget); // m_cityListWidget->resetData(); } else { m_stackedWidget->setCurrentWidget(m_systemWidget); } }); connect(m_spinBox, static_cast(&SpinBox::valueChanged), this, [=] (int value) { //qDebug() << "SpinBox Value:" << value << ", Text:" << m_spinBox->text(); m_preferences->m_updateFrequency = value; }); connect(m_opacitySlider, &QSlider::valueChanged, [=] (int value) { m_preferences->m_opacity = value; emit requestChangeOpacity(value); }); } void SettingDialog::initSearch() { m_searchFrame = new QFrame; m_searchFrame->setStyleSheet("QFrame{background:rgba(255, 255, 255, 0.7);}"); m_searchFrame->setFixedSize(this->size()); m_searchFrame->setContentsMargins(0, 0, 0, 0); m_searchTitleBar = new SearchTitleBar(m_searchFrame); m_searchTitleBar->setFixedHeight(150); m_displayWidget = new QWidget(m_searchFrame); // m_displayWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // m_displayWidget->setContentsMargins(0, m_searchTitleBar->height(), 0, 0); m_searchModel = new SearchModel; m_searchView = new SearchView; m_searchDelegate = new SearchDelegate; m_searchView->setFixedWidth(m_searchFrame->width() - 2*CONTENT_MARGIN); m_searchView->setItemDelegate(m_searchDelegate); m_searchView->setModel(m_searchModel); m_searchView->setVisible(false); m_noResultLabel = new QLabel(m_searchFrame); m_noResultLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_noResultLabel->setAlignment(Qt::AlignCenter); m_noResultLabel->setText(tr("No Result")); m_noResultLabel->setVisible(false); QFont font = m_noResultLabel->font(); const QFontMetrics fm(font); m_noResultLabel->setFixedWidth(fm.width(m_noResultLabel->text())); QVBoxLayout *layout = new QVBoxLayout(m_searchFrame); layout->setContentsMargins(1, 1, 1, 1); layout->setSpacing(0); layout->addWidget(m_searchTitleBar); layout->addWidget(m_displayWidget); QHBoxLayout *contentLayout = new QHBoxLayout(m_displayWidget); contentLayout->setContentsMargins(CONTENT_MARGIN, 0, CONTENT_MARGIN, 0); contentLayout->setSpacing(0); contentLayout->addWidget(m_searchView, 1, Qt::AlignHCenter); contentLayout->addWidget(m_noResultLabel, 1, Qt::AlignCenter); connect(m_searchView, &SearchView::clicked, this, [this](const QModelIndex &index) { QVariant data = index.data(Qt::UserRole);//SearchModel::data Qt::UserRole QString selectCityId = data.value(); for (const LocationData &line : m_searchModel->locationList()) {//it must exits. if (line.id == selectCityId) { //emit this->requestAddCityToMenu(line); if (m_preferences->isCitiesCountOverMax()) { m_settingTitleBar->showWarnInfo(tr("Only 10 cities can be added at most!"));//最多只能添加10个城市 break; } if (m_preferences->isCityIdExist(line.id)) { m_settingTitleBar->showWarnInfo(tr("The city already exists!"));//该城市已存在 break; } CitySettingData info; info.active = false; info.id = line.id; info.name = line.city; info.icon = ":/res/weather_icons/darkgrey/100.png"; m_cityWidget->addCityItem(info); City city; city.id = line.id; city.name = line.city; m_preferences->addCityInfoToPref(city); emit this->requestRefreshCityMenu(info.active); this->setWindowTitle(tr("Kylin Weather - Setting")); animationFromTopToBottom(m_searchFrame, m_settingFrame); break; } } }); connect(m_searchTitleBar, &SearchTitleBar::requestCloseDialog, this, [=] { this->setWindowTitle(tr("Kylin Weather - Setting")); animationFromTopToBottom(m_searchFrame, m_settingFrame); }); connect(m_searchTitleBar, &SearchTitleBar::requestShowNoResultLabel, this, [=] { m_noResultLabel->setVisible(true); }); connect(m_searchTitleBar, &SearchTitleBar::requestResetViewAndModel, this, [=] { m_searchView->setVisible(false); m_noResultLabel->setVisible(false); m_searchModel->setLocationData(QList()); }); connect(m_searchTitleBar, &SearchTitleBar::sendSearchResults, this, [=] (QList results) { m_searchModel->setLocationData(results); m_searchView->setVisible(true); m_noResultLabel->setVisible(false); }); } void SettingDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_mousePressed = true; m_dragPosition = event->globalPos() - this->frameGeometry().topLeft(); event->accept(); } } void SettingDialog::mouseReleaseEvent(QMouseEvent *) { m_mousePressed = false; } void SettingDialog::mouseMoveEvent(QMouseEvent *event) { if(m_mousePressed) { QPoint move_pos = event->globalPos(); move(move_pos - m_dragPosition); event->accept(); } } void SettingDialog::setData() { } void SettingDialog::refreshCityList(const QString &id) { if (m_cityWidget) { m_cityWidget->refreshCityList(id); } } void SettingDialog::addCityItem(const CitySettingData &info) { m_cityWidget->addCityItem(info); } void SettingDialog::accept() { hide(); setResult(QDialog::Accepted); emit applied(); } void SettingDialog::reject() { hide(); setResult(QDialog::Rejected); setResult(QDialog::Accepted); } void SettingDialog::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); QRect borderRect; borderRect.setRect(this->rect().x(), this->rect().y(), this->rect().width(), this->rect().height()); QPainterPath inBorderPath; inBorderPath.addRoundedRect(borderRect, 2, 2); painter.setClipPath(inBorderPath); painter.fillRect(0, 0, width(), height(), QBrush(QColor("#000000"))); } indicator-china-weather/src/locationworker.cpp0000664000175000017500000000627713644002575020550 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "locationworker.h" #include #include WorkerThread::WorkerThread(LocationWorker *parent) : QThread(parent) { } void WorkerThread::run() { LocationWorker *m_worker = qobject_cast(parent()); if (!m_worker) return; //CN101250101,changsha,长沙,CN,China,中国,hunan,湖南,changsha,长沙,28.19409,112.98228,"430101,430100,430000", QFile file(":/data/data/china-city-list.csv"); if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { QString line = file.readLine(); line = line.replace("\n", ""); while (!line.isEmpty()) { QStringList resultList = line.split(","); if (resultList.length() < 10) { line = file.readLine(); line = line.replace("\n", ""); continue; } QString id = resultList.at(0); if (!id.startsWith("CN")) { line = file.readLine(); line = line.replace("\n", ""); continue; } LocationData data; data.id = id.remove(0, 2);//remove "CN" data.city_en = resultList.at(1); data.city = resultList.at(2); data.country_en = resultList.at(4); data.country = resultList.at(5); data.province_en = resultList.at(6); data.province = resultList.at(7); data.admin_district_en = resultList.at(8); data.admin_district = resultList.at(9); m_worker->m_locatonList << data; line = file.readLine(); line = line.replace("\n", ""); } file.close(); } } //-------------------------------------------------------------- LocationWorker::LocationWorker(QObject *parent) : QObject(parent), m_workerThread(new WorkerThread(this)) { m_workerThread->start(); } LocationWorker::~LocationWorker() { m_workerThread->deleteLater(); } QList LocationWorker::exactMatchCity(const QString &inputText) const { QList searchedList; for (const LocationData line : m_locatonList) { if (line.id == inputText || line.city.contains(inputText) || line.city_en.contains(inputText) || line.province == inputText || line.province_en == inputText || line.admin_district.contains(inputText) || line.admin_district_en.contains(inputText)) { searchedList.append(line); } } return searchedList; } indicator-china-weather/src/tooltip.h0000664000175000017500000000355013644002575016634 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TOOLTIP_H #define TOOLTIP_H #include #include #include #include #include "data.h" class ToolTip : public QFrame { Q_OBJECT public: explicit ToolTip(QWidget *parent = 0); ~ToolTip(); void resetData(const ForecastWeather &data, const QString &week); void popupTip(QPoint point); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: int m_radius; QBrush m_background; QColor m_borderColor; QFrame *m_frame = nullptr; QLabel *m_dateLabel = nullptr; QLabel *m_dWeatherLabel = nullptr; QLabel *m_nWeatherLabel = nullptr; QLabel *m_dIconLabel = nullptr; QLabel *m_nIconLabel = nullptr; QLabel *m_tempLabel = nullptr; QLabel *m_mrmsLabel = nullptr; QLabel *m_srssLabel = nullptr; QLabel *m_humLabel = nullptr; QLabel *m_pcpnLabel = nullptr; QLabel *m_popLabel = nullptr; QLabel *m_presLabel = nullptr; QLabel *m_uvIndexLabel = nullptr; QLabel *m_visLabel = nullptr; QLabel *m_windLabel = nullptr; QVBoxLayout *m_layout = nullptr; }; #endif // TOOLTIP_H indicator-china-weather/src/promptwidget.cpp0000664000175000017500000001360413644002575020223 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "promptwidget.h" #include #include #include #include #include #include #include PromptWidget::PromptWidget(QWidget *parent) : QFrame(parent) , m_iconLabel(new QLabel(this)) , m_textLabel(new QLabel(this)) , m_closeBtn(new QPushButton(this)) { this->setStyleSheet("QFrame{background:rgba(0,0,0,0.85);} QFrame:hover{background:rgba(0, 0, 0, 0.6);}"); this->setFixedSize(134, 99); this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); this->setContentsMargins(0, 0, 0, 0); QVBoxLayout *m_vlayout = new QVBoxLayout(this); m_vlayout->setContentsMargins(10, 10, 10, 10); m_vlayout->setSpacing(5); m_closeBtn->setFixedSize(12, 12); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/delete_normal.png');border:0px;}QPushButton:hover{background:url(':/res/delete_hover_press.png');}QPushButton:pressed{background:url(':/res/delete_hover_press.png');}"); m_closeBtn->setVisible(false); m_iconLabel->setFixedSize(45, 44); m_iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_textLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:14px;}"); m_textLabel->setWordWrap(true); m_textLabel->setAlignment(Qt::AlignCenter); m_textLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_vlayout->addWidget(m_iconLabel, 0, Qt::AlignHCenter); m_vlayout->addWidget(m_textLabel, 0, Qt::AlignHCenter); connect(m_closeBtn, &QPushButton::clicked, this, [=] { this->setVisible(false); }); } PromptWidget::PromptWidget(const QString &text, QWidget *parent, const QString &movieSouce, bool movie) : QFrame(parent) , m_iconLabel(new QLabel(this)) , m_textLabel(new QLabel(this)) , m_closeBtn(new QPushButton(this)) , m_isMovie(movie) { this->setStyleSheet("QFrame{background:rgba(0,0,0,0.85);} QFrame:hover{background:rgba(0, 0, 0, 0.6);}"); this->setFixedSize(134, 50); this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); this->setContentsMargins(0, 0, 0, 0); QHBoxLayout *m_hlayout = new QHBoxLayout(this); m_hlayout->setContentsMargins(5, 10, 5, 10); m_hlayout->setSpacing(5); m_closeBtn->setFixedSize(12, 12); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/delete_normal.png');border:0px;}QPushButton:hover{background:url(':/res/delete_hover_press.png');}QPushButton:pressed{background:url(':/res/delete_hover_press.png');}"); m_closeBtn->setVisible(false); m_iconLabel->setFixedSize(16, 16); m_iconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_textLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:14px;}"); m_textLabel->setText(text); QFont font = m_textLabel->font(); const QFontMetrics fm(font); m_textLabel->setFixedWidth(fm.width(m_textLabel->text())); if (m_isMovie) { m_movie = new QMovie(movieSouce); m_iconLabel->setMovie(m_movie); m_movie->start(); } m_hlayout->addStretch(); m_hlayout->addWidget(m_textLabel, 0, Qt::AlignVCenter | Qt::AlignRight); m_hlayout->addWidget(m_iconLabel, 0, Qt::AlignVCenter | Qt::AlignLeft); m_hlayout->addStretch(); connect(m_closeBtn, &QPushButton::clicked, this, [=] { m_movie->stop(); this->setVisible(false); }); } PromptWidget::~PromptWidget() { if (m_movie) { delete m_movie; } } void PromptWidget::setIconAndText(const QString &iconPath, const QString &text) { const qreal ratio = qApp->devicePixelRatio(); QIcon icon = QIcon(iconPath); QPixmap pixmap = icon.pixmap(m_iconLabel->width()*ratio, m_iconLabel->height()*ratio); pixmap = pixmap.scaled(m_iconLabel->width()*ratio, m_iconLabel->height()*ratio, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); pixmap.setDevicePixelRatio(ratio); m_iconLabel->setPixmap(pixmap); m_textLabel->setText(text); } void PromptWidget::enterEvent(QEvent *event) { QFrame::enterEvent(event); m_closeBtn->move(this->width() -12, 0); m_closeBtn->setVisible(true); } void PromptWidget::leaveEvent(QEvent *event) { QFrame::enterEvent(event); m_closeBtn->setVisible(false); } bool PromptWidget::event(QEvent *event) { switch (event->type()) { case QEvent::MouseButtonPress: if (m_isMovie && m_movie) { //m_movie->stop(); } else { this->setVisible(false); } break; /*case QEvent::Show: if (m_isMovie && m_movie) { m_movie->start(); this->setVisible(true); } break;*/ default: break; } return QFrame::event(event); } void PromptWidget::showEvent(QShowEvent *event) { QFrame::showEvent(event); if (m_isMovie && m_movie) { m_movie->start(); } } void PromptWidget::hideEvent(QHideEvent* event) { QFrame::hideEvent(event); if (m_isMovie && m_movie) { m_movie->stop(); } } indicator-china-weather/src/spinbox.cpp0000664000175000017500000000744413644002575017165 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include "spinbox.h" SpinBox::SpinBox(QWidget *parent) : QSpinBox(parent) , m_value(1) , m_frame(new QFrame(this)) { QSpinBox::lineEdit()->setVisible(false);//hide QSpinBox's lineEdit, replace it with m_valueLabel this->setStyleSheet("QSpinBox{min-height:21px;color:#808080;font-size:14px;border:1px solid #7c8487;border-radius:0;padding-left:28px;padding-right:28px;background-color:transparent;}QSpinBox::up-button{border:none;background:transparent;}QSpinBox::up-arrow {border:none;background:transparent;}QSpinBox::down-button{border:none;background: transparent;}QSpinBox::down-arrow {border:none;background:transparent;}");//放置左右按钮的偏移设置: padding-left:28px;padding-right:28px; this->setSingleStep(1); //this->setRange(1, 60); m_frame->setStyleSheet("QFrame{background-color:transparent;border:none;}");//border:1px solid #7c8487;border-radius:0; QHBoxLayout *m_layout = new QHBoxLayout(m_frame); m_layout->setContentsMargins(1, 0, 1, 0); m_layout->setSpacing(0); QPushButton *m_addBtn = new QPushButton; QPushButton *m_subtractBtn = new QPushButton; m_addBtn->setFocusPolicy(Qt::NoFocus); m_subtractBtn->setFocusPolicy(Qt::NoFocus); m_addBtn->setFixedSize(19,21); m_subtractBtn->setFixedSize(19,21); m_addBtn->setStyleSheet("QPushButton{background-image:url(':/res/add_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/add_hover_btn.png');}QPushButton:pressed{background:url(':/res/add_pressed_btn.png');}"); m_subtractBtn->setStyleSheet("QPushButton{background-image:url(':/res/subtract_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/subtract_hover_btn.png');}QPushButton:pressed{background:url(':/res/subtract_pressed_btn.png');}"); m_valueLabel = new QLabel; m_valueLabel->setStyleSheet("QLabel{font-size:14px;color:#808080;background-color:transparent;border:none}"); //m_valueLabel->setText(this->text()); m_layout->addWidget(m_subtractBtn, 0, Qt::AlignVCenter | Qt::AlignLeft); m_layout->addStretch(); m_layout->addWidget(m_valueLabel, 1, Qt::AlignCenter); m_layout->addStretch(); m_layout->addWidget(m_addBtn, 0, Qt::AlignVCenter | Qt::AlignRight); connect(this, static_cast(&QSpinBox::valueChanged), [=] (int value) { m_valueLabel->setText(this->text()); this->m_value = value; }); connect(m_addBtn, &QPushButton::clicked, this, &SpinBox::stepUp); connect(m_subtractBtn, &QPushButton::clicked, this, &SpinBox::stepDown); } SpinBox::~SpinBox() { } void SpinBox::setSpinValue(int value) { if (this->m_value == value) return; this->m_value = value; this->setValue(this->m_value); m_valueLabel->setText(QString::number(this->m_value)); } void SpinBox::resizeEvent(QResizeEvent *event) { QSpinBox::resizeEvent(event); m_frame->setFixedWidth(event->size().width()); m_frame->setFixedHeight(event->size().height()); } indicator-china-weather/src/citylistwidget.h0000664000175000017500000000255513644002575020216 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CITYLISTWIDGET_H #define CITYLISTWIDGET_H #include "cityitemwidget.h" class CityListWidget : public QWidget { Q_OBJECT public: explicit CityListWidget(QWidget *parent = 0); ~CityListWidget(); CityItemWidget* getItem(int index); void appendItem(CityItemWidget *item); void removeItem(CityItemWidget *item); int itemCount() const; void clearUI(); public slots: void updateCityListHeight(); private: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; private: QVBoxLayout *m_layout = nullptr; QTimer *m_timer = nullptr; }; #endif // CITYLISTWIDGET_H indicator-china-weather/src/maskwidget.h0000664000175000017500000000302113644002575017272 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MASKWIDGET_H #define MASKWIDGET_H #include #include class QMovie; class QLabel; class MaskWidget : public QWidget { Q_OBJECT public: explicit MaskWidget(QWidget *parent = 0); ~MaskWidget(); static MaskWidget *Instance() { static QMutex mutex; if (!self) { QMutexLocker locker(&mutex); if (!self) { self = new MaskWidget; } } return self; } void showMask(); protected: void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent* event) Q_DECL_OVERRIDE; private: static MaskWidget *self; QMovie *m_movie = nullptr; QLabel *m_iconLabel = nullptr; QLabel *m_textLabel = nullptr; }; #endif // MASKWIDGET_H indicator-china-weather/src/forecastweatherwidget.h0000664000175000017500000000473013644002575021535 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FORECAST_WEATHER_WIDGET_H #define FORECAST_WEATHER_WIDGET_H #include #include #include #include #include "data.h" class ForecastItemWidget; class IndexItemWidget; class HSeparator; class VSeparator; class TextTip; class TipModule; class ForecastWeatherWidget : public QFrame { Q_OBJECT public: explicit ForecastWeatherWidget(QFrame *parent = 0); ~ForecastWeatherWidget(); void initForecastWidget(); void initIndexTitleWidget(); void initIndexWidget(); void initWidgets(); void refershLifeIndexGridLayout(); void refreshForecastData(const ForecastWeather &data, int index); void refreshLifestyleData(const LifeStyle &data); void setDayStyleSheets(); void setNightStyleSheets(); TextTip *setTipWidget(QWidget *w, const QString &txt); public slots: void showLifeStyleIndex(const QString &name); protected: void leaveEvent(QEvent *e); private: QVBoxLayout *m_layout = nullptr; QHBoxLayout *m_forecastlayout = nullptr; QVBoxLayout *m_indexTitlelayout = nullptr; QVBoxLayout *m_indexlayout = nullptr; QGridLayout *m_indexGridLayout = nullptr; QStringList m_lifeIndexList; QStringList m_lifeIndexIconList; QLabel *lifeTextLabel = nullptr; ForecastItemWidget *m_firstDay = nullptr; ForecastItemWidget *m_secondDay = nullptr; ForecastItemWidget *m_thirdDay = nullptr; VSeparator *m_leftVSeparator = nullptr; VSeparator *m_rightVSeparator = nullptr; HSeparator *m_topHseperator = nullptr; HSeparator *m_bottomHseperator = nullptr; QList m_lifeItems; QList m_tips; TipModule *m_tipModule = nullptr; }; #endif // FORECAST_WEATHER_WIDGET_H indicator-china-weather/src/airwidget.cpp0000664000175000017500000001325313644002575017455 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "airwidget.h" #include #include AirWidget::AirWidget(QWidget *parent) : QFrame(parent) , m_layout(new QVBoxLayout(this)) , m_opacityEffect(new QGraphicsOpacityEffect(this)) , m_animation(new QPropertyAnimation(this, "pos")) , m_timer(new QTimer(this)) { this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); this->setContentsMargins(10, 2, 10, 2); // this->setStyleSheet("QFrame{border:none;background-color:rgba(0,0,0,0.9);color:rgb(255,255,255);}"); // this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); //this->setStyleSheet("QFrame{border:1px solid #e0e0e0;border-radius:2px;background-color:rgba(255, 255, 255, 0.8);}"); this->setFixedSize(160, 150); m_layout->setSpacing(1); m_layout->setMargin(0); m_timer->setSingleShot(true); m_timer->setInterval(1000*5); connect(m_timer, &QTimer::timeout, this, &AirWidget::animationHide, Qt::QueuedConnection); m_opacityEffect->setOpacity(1.0); this->setGraphicsEffect(m_opacityEffect); m_animation->setEasingCurve(QEasingCurve::InOutCubic); m_animation->setDuration(500); m_aqiLabel = new QLabel; m_qltyLabel = new QLabel; m_mainLabel = new QLabel; m_pm25Label = new QLabel; m_pm10Label = new QLabel; m_no2Label = new QLabel; m_so2Label = new QLabel; m_coLabel = new QLabel; m_o3Label = new QLabel; m_aqiLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_qltyLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_mainLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_pm25Label->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_pm10Label->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_no2Label->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_so2Label->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_coLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_o3Label->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12px;}"); m_layout->addWidget(m_aqiLabel, 0, Qt::AlignTop | Qt::AlignLeft); m_layout->addWidget(m_qltyLabel, 0, Qt::AlignLeft); m_layout->addWidget(m_mainLabel, 0, Qt::AlignLeft); m_layout->addWidget(m_pm25Label, 0, Qt::AlignLeft); m_layout->addWidget(m_pm10Label, 0, Qt::AlignLeft); m_layout->addWidget(m_no2Label, 0, Qt::AlignLeft); m_layout->addWidget(m_so2Label, 0, Qt::AlignLeft); m_layout->addWidget(m_coLabel, 0, Qt::AlignLeft); m_layout->addWidget(m_o3Label, 0, Qt::AlignLeft); } AirWidget::~AirWidget() { m_animation->deleteLater(); if (m_timer) { disconnect(m_timer, SIGNAL(timeout()), this, SLOT(animationHide())); if(m_timer->isActive()) { m_timer->stop(); } delete m_timer; m_timer = nullptr; } QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void AirWidget::animationShow(const QString &styleSheet) { if (m_animation->state() == QPropertyAnimation::Running) return; this->setStyleSheet(styleSheet); QWidget::show(); m_animation->setStartValue(QPoint(335, 0));//QPoint(0, 0) m_animation->setEndValue(QPoint(100, 0)); m_animation->start(); m_timer->start(); } void AirWidget::animationHide() { if (m_animation->state() == QPropertyAnimation::Running) return; m_timer->stop(); m_animation->setStartValue(QPoint(100, 0)); m_animation->setEndValue(QPoint(335, 0));//QPoint(0, 0) m_animation->start(); QTimer::singleShot(m_animation->duration(), [=] { setAttribute(Qt::WA_TransparentForMouseEvents, false); QWidget::hide(); }); } void AirWidget::resetData(const Air &data) { m_aqiLabel->setText(QString(tr("aqi:%1")).arg(data.aqi));//空气质量指数 m_qltyLabel->setText(QString(tr("qlty:%1")).arg(data.qlty));//空气质量 m_mainLabel->setText(QString(tr("main:%1")).arg(data.main));//主要污染物 m_pm25Label->setText(QString(tr("pm25:%1")).arg(data.pm25)); m_pm10Label->setText(QString(tr("pm10:%1")).arg(data.pm10)); m_no2Label->setText(QString(tr("no2:%1")).arg(data.no2));//二氧化氮 m_so2Label->setText(QString(tr("so2:%1")).arg(data.so2));//二氧化硫 m_coLabel->setText(QString(tr("co:%1")).arg(data.co));//一氧化碳 m_o3Label->setText(QString(tr("o3:%1")).arg(data.o3));//臭氧 } void AirWidget::mousePressEvent(QMouseEvent *event) { QFrame::mousePressEvent(event); this->animationHide(); } indicator-china-weather/src/airwidget.h0000664000175000017500000000337313644002575017124 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef AIRWIDGET_H #define AIRWIDGET_H #include #include #include #include #include #include "data.h" class AirWidget : public QFrame { Q_OBJECT public: explicit AirWidget(QWidget *parent = 0); ~AirWidget(); void resetData(const Air &data); public slots: void animationShow(const QString &styleSheet); void animationHide(); protected: void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: QGraphicsOpacityEffect *m_opacityEffect = nullptr; QPropertyAnimation *m_animation = nullptr; QLabel *m_aqiLabel = nullptr; QLabel *m_qltyLabel = nullptr; QLabel *m_mainLabel = nullptr; QLabel *m_pm25Label = nullptr; QLabel *m_pm10Label = nullptr; QLabel *m_no2Label = nullptr; QLabel *m_so2Label = nullptr; QLabel *m_coLabel = nullptr; QLabel *m_o3Label = nullptr; QTimer *m_timer = nullptr; QVBoxLayout *m_layout = nullptr; }; #endif // AIRWIDGET_H indicator-china-weather/src/nowweatherwidget.cpp0000664000175000017500000002774613644002575021101 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "nowweatherwidget.h" #include "translucentlabel.h" #include "tipwidget.h" #include "texttip.h" #include "tipmodule.h" #include "airwidget.h" #include #include #include #include "preferences.h" #include "global.h" using namespace Global; inline QString convertTemperatureToString(int temp) { if (temp <= -40) { return QString(QObject::tr("Extremely cold"));//极寒 } else if (temp > -40 && temp <= -35) { return QString(QObject::tr("Cold and cold"));//奇寒 } else if (temp > -35 && temp <= -30) { return QString(QObject::tr("Severe cold"));//酷寒 } else if (temp > -30 && temp <= -20) { return QString(QObject::tr("Bitter cold"));//严寒 } else if (temp > -20 && temp <= -15) { return QString(QObject::tr("Deep cold"));//深寒 } else if (temp > -15 && temp <= -10) { return QString(QObject::tr("Very cold"));//大寒 } else if (temp > -10 && temp <= -5) { return QString(QObject::tr("Lesser cold"));//小寒 } else if (temp > -5 && temp <= 0) { return QString(QObject::tr("Mildly cold"));//轻寒 } else if (temp > 0 && temp <= 5) { return QString(QObject::tr("Slightly cold"));//微寒 } else if (temp > 5 && temp <= 10) { return QString(QObject::tr("Cold"));//凉 } else if (temp > 10 && temp <= 14) { return QString(QObject::tr("Warm and cool"));//温凉 } else if (temp > 14 && temp <= 18) { return QString(QObject::tr("Mild"));//温和 } else if (temp > 18 && temp <= 22) { return QString(QObject::tr("Warm"));//温暖 } else if (temp > 22 && temp <= 25) { return QString(QObject::tr("Hot"));//热 } else if (temp > 25 && temp <= 30) { return QString(QObject::tr("Scorching hot"));//炎热 } else if (temp > 30 && temp <= 35) { return QString(QObject::tr("Boiling hot"));//酷热 } else if (temp > 35 && temp <= 39) { return QString(QObject::tr("Excessive heat"));//奇热 } else {//>=40 return QString(QObject::tr("Extremely hot"));//极热 } } //it must be consistent with the function named convertCodeToBackgroud() which in MainWindow inline QString convertCodeToStyleSheet(int code) { if (code == 100 || code == 900) {//#ee613f return "QFrame{border:none;background-color:rgba(238,97,63,85%);color:rgb(255,255,255);}"; } else if (code <= 103 && code >= 101) {//#0c69c3 return "QFrame{border:none;background-color:rgba(12,105,195,85%);color:rgb(255,255,255);}"; } else if (code == 104 || code == 901) {//#404b5b return "QFrame{border:none;background-color:rgba(64,75,91,85%);color:rgb(255,255,255);}"; } else if (code <= 204 && code >= 200) {//#ee613f return "QFrame{border:none;background-color:rgba(238,97,63,85%);color:rgb(255,255,255);}"; } else if (code <= 213 && code >= 205) {//#404b5b return "QFrame{border:none;background-color:rgba(64,75,91,85%);color:rgb(255,255,255);}"; } else if (code <= 399 && code >= 300) {//#5336bf return "QFrame{border:none;background-color:rgba(83,54,191,85%);color:rgb(255,255,255);}"; } else if (code <= 499 && code >= 400) {//#4f88b3 return "QFrame{border:none;background-color:rgba(79,136,179,85%);color:rgb(255,255,255);}"; } else if (code <= 502 && code >= 500) {//#312e33 return "QFrame{border:none;background-color:rgba(49,46,51,85%);color:rgb(255,255,255);}"; } else if (code <= 508 && code >= 503) {//#98733f return "QFrame{border:none;background-color:rgba(152,115,63,85%);color:rgb(255,255,255);}"; } else if (code <= 515 && code >= 509) {//#312e33 return "QFrame{border:none;background-color:rgba(49,46,51,85%);color:rgb(255,255,255);}"; } else {//#ee613f return "QFrame{border:none;background-color:rgba(238,97,63,85%);color:rgb(255,255,255);}"; } } NowWeatherWidget::NowWeatherWidget(QFrame *parent) : QFrame(parent) , m_tipTimer(new QTimer(this)) // , m_tipModule(new TipModule) // , m_tip(new TextTip(QString(), this)) { this->setFixedSize(355, 180); //m_tip->setFixedSize(100, 32); // this->setStyleSheet("QLabel{border-radius: 0px; color:rgb(250, 250, 250); background-color:rgba(0,0,0,0.2)}"); //test background color /*this->setAutoFillBackground(true); QPalette palette; palette.setBrush(QPalette::Window, QBrush(Qt::gray)); this->setPalette(palette);*/ m_tipWidget = new TipWidget(this); m_tipWidget->setGeometry(10, 0, this->width(), 22); m_tipWidget->setVisible(false); //----------------------------- m_tempLabel = new QLabel(this); m_tempLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff; font-size:65px;}"); m_tempLabel->setGeometry(10, 14, 100, 70); m_tempLabel->setAlignment(Qt::AlignCenter); QLabel *tempUnit = new QLabel(this); tempUnit->setAlignment(Qt::AlignLeft | Qt::AlignTop); tempUnit->setGeometry(m_tempLabel->x() + m_tempLabel->width(), m_tempLabel->y(), 40, 28); tempUnit->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:20px;}"); tempUnit->setText("°C"); m_weatherLabel = new QLabel(this); m_weatherLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff; font-size:20px;}"); m_weatherLabel->setGeometry(tempUnit->x(), m_tempLabel->height() - 28/2, 130, 28); m_weatherLabel->setAlignment(Qt::AlignLeft | Qt::AlignBottom); //----------------------------- QLabel *sdIcon = new QLabel(this); sdIcon->setGeometry(m_tempLabel->x(), m_tempLabel->y() + m_tempLabel->height() + 5, 20, 20); sdIcon->setStyleSheet("QLabel{border:none;background-color:transparent;}"); sdIcon->setPixmap(QPixmap(":/res/current_sd.png")); QLabel *m_humidityLabel = new QLabel(this); m_humidityLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12x;}"); m_humidityLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); m_humidityLabel->setText(tr("Humidity")); QFont font = m_humidityLabel->font(); const QFontMetrics fm(font); m_humidityLabel->setGeometry(sdIcon->x() + sdIcon->width(), sdIcon->y(), fm.width(m_humidityLabel->text()), 20); m_humidityValueLabel = new QLabel(this); m_humidityValueLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12x;}"); m_humidityValueLabel->setGeometry(m_humidityLabel->x(), m_humidityLabel->y() + m_humidityLabel->height() + 5, 40, 20); m_humidityValueLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); //----------------------------- QLabel *windIcon = new QLabel(this); windIcon->setGeometry(m_humidityLabel->x() + m_humidityLabel->width() + 15, m_humidityLabel->y(), 20, 20); windIcon->setStyleSheet("QLabel{border:none;background-color:transparent;}"); windIcon->setPixmap(QPixmap(":/res/current_wind.png")); m_windLabel = new QLabel(this); m_windLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12x;}"); m_windLabel->setGeometry(windIcon->x() + windIcon->width(), windIcon->y(), 70, 20); m_windLabel->setAlignment(Qt::AlignVCenter | Qt::AlignLeft); m_windPowerLabel = new QLabel(this); m_windPowerLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#ffffff;font-size:12x;}"); m_windPowerLabel->setGeometry(m_windLabel->x(), m_humidityValueLabel->y(), 90, 20); m_windPowerLabel->setAlignment(Qt::AlignBottom | Qt::AlignLeft); m_weatherIcon = new QLabel(this); m_weatherIcon->setGeometry(this->width() - 64 - 20, m_tempLabel->y(), 64, 64); m_weatherIcon->setStyleSheet("QLabel{border:none;background-color:transparent;}"); //m_weatherIcon->setProperty("TextTipWidget", QVariant::fromValue(m_tip)); //m_weatherIcon->installEventFilter(m_tipModule); m_ariWidget = new AirWidget(this); m_ariWidget->raise(); m_ariWidget->setVisible(false); m_aqiLabel = new TranslucentLabel(true, this); m_aqiLabel->setLabelIcon(":/res/aqi.png"); m_aqiLabel->setToolTip(tr("Click to see details of air quality")); m_aqiLabel->move(m_weatherIcon->x() - 10, m_windLabel->y()); connect(m_aqiLabel, &TranslucentLabel::clicked, this, [=] { if (m_ariWidget->isVisible()) { m_ariWidget->animationHide(); } else { if (m_preferences->air.id != m_preferences->m_currentCityId) { return; } if (m_preferences->air.aqi.contains("Unknown") && m_preferences->air.qlty.contains("Unknown")) { return; } m_ariWidget->resetData(m_preferences->air); if (m_preferences->weather.cond_code.contains(QChar('n'))) {//#063638 m_ariWidget->animationShow("QFrame{border:none;background-color:rgba(6,54,56,85%);color:rgb(255,255,255);}"); } else { m_ariWidget->animationShow(convertCodeToStyleSheet(m_preferences->weather.cond_code.toInt())); } } }); m_temperatureLabel = new TranslucentLabel(false, this); m_temperatureLabel->setLabelIcon(":/res/temp.png"); m_temperatureLabel->move(m_aqiLabel->x(), m_aqiLabel->y() + m_aqiLabel->height() + 8); connect(m_tipTimer, &QTimer::timeout, this, [=] { m_tipTimer->stop(); m_tipWidget->setVisible(false); }); } NowWeatherWidget::~NowWeatherWidget() { delete m_tipTimer; //delete m_tipModule; delete m_ariWidget; } void NowWeatherWidget::displayTip(const QString &info) { if (m_tipWidget->isVisible()) m_tipWidget->setVisible(false); if (m_tipTimer->isActive()) m_tipTimer->stop(); m_tipWidget->setLabelIcon(":/res/update_warn.png"); m_tipWidget->setLabelText(info); m_tipWidget->setVisible(true); m_tipTimer->start(8000); } void NowWeatherWidget::setWeatherIcon(const QString &iconPath) { QPixmap pixmap = QPixmap(iconPath); pixmap = pixmap.scaled(64, 64, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_weatherIcon->setPixmap(pixmap); } void NowWeatherWidget::refreshData(const ObserveWeather &data) { //m_tip->resetTipText(data.cond_txt); m_weatherLabel->setText(data.cond_txt); m_tempLabel->setText(data.tmp); if (data.hum.isEmpty()) { m_humidityValueLabel->setText("-"); } else { m_humidityValueLabel->setText(data.hum + "%"); } m_windLabel->setText(data.wind_dir); int wind_sc = data.wind_sc.toInt(); if (wind_sc == 0) { m_windPowerLabel->setText(tr("Static wind"));//静风 } else { m_windPowerLabel->setText(tr("%1stage wind").arg(data.wind_sc));//级风 } this->setWeatherIcon(QString(":/res/weather_icons/white/%1.png").arg(data.cond_code)); if (data.air.isEmpty() || data.air.contains("Unknown")) { m_aqiLabel->setLabelText(QString(tr("Unknown"))); } else { m_aqiLabel->setLabelText(data.air); } m_temperatureLabel->setLabelText(convertTemperatureToString(data.tmp.toInt())); } void NowWeatherWidget::mousePressEvent(QMouseEvent *event) { if (m_ariWidget->isVisible()) { m_ariWidget->animationHide(); } QFrame::mousePressEvent(event); } indicator-china-weather/src/automaticlocation.cpp0000664000175000017500000001664513644002575021225 0ustar fengfeng/* * Copyright (C) 2018 ~ 2019 kobe24_lixiang@126.com * * Authors: * lixiang kobe24_lixiang@126.com * https://github.com/eightplus/xiaoming-weather * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "automaticlocation.h" #include #include #include #include #include #include #include #include #include #ifdef __cplusplus extern "C" { #endif GEOIP_API unsigned long _GeoIP_lookupaddress(const char *host); //_GeoIP_lookupaddress定义在GeoIP_internal.h中,但libgeoip-dev安装时并没有拷贝GeoIP_internal.h文件 #ifdef __cplusplus } #endif namespace { const QString getPublicIpAddrByUrl(const QString &url) { QNetworkAccessManager *manager = new QNetworkAccessManager(); QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url))); QByteArray ba; QEventLoop loop; QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit())); loop.exec(); ba = reply->readAll(); QString reply_content = QString::fromUtf8(ba); reply->close(); reply->deleteLater(); manager->deleteLater(); if(!reply_content.isEmpty()) { QString htmlStr = reply_content.replace(" ", ""); htmlStr = htmlStr.replace("\r", ""); htmlStr = htmlStr.replace("\n", ""); QStringList htmlList = htmlStr.split("
"); if(htmlList.size() >= 4) { QStringList ipList = htmlList.at(4).split("="); if (ipList.count() > 1) { if (ipList.at(1).contains(",")) { ipList = ipList.at(1).split(","); return ipList.at(0); } return ipList.at(1); } } } return QString("0.0.0.0"); } const QString getCityFromIpByAmap(const QString &ip) { // https://lbs.amap.com/api/webservice/guide/api/ipconfig/ //amap json //http://restapi.amap.com/v3/ip?key=44a80558982f0c3031fae15aa8711a92&ip=218.76.23.26 //amap xml //https://restapi.amap.com/v3/ip?ip=218.76.23.26&output=xml&key=44a80558982f0c3031fae15aa8711a92 QString url = QString("http://restapi.amap.com/v3/ip?key=44a80558982f0c3031fae15aa8711a92&ip=%1").arg(ip); QNetworkAccessManager *manager = new QNetworkAccessManager(); QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url))); QEventLoop loop; QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit())); loop.exec(); int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status reply->close(); reply->deleteLater(); manager->deleteLater(); return QString(); } QByteArray ba = reply->readAll(); //QString reply_content = QString::fromUtf8(ba); reply->close(); reply->deleteLater(); manager->deleteLater(); QJsonParseError err; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &err); if (err.error != QJsonParseError::NoError) {// Json type error return QString(); } if (jsonDocument.isNull() || jsonDocument.isEmpty()) { return QString(); } QJsonObject jsonObject = jsonDocument.object(); if (jsonObject.isEmpty() || jsonObject.size() == 0) { return QString(); } if (jsonObject.contains("city")) { return jsonObject.value("city").toString(); } return QString(); } const QString getCityFromIpByTaobao(const QString &ip) { QString url = QString("http://ip.taobao.com/service/getIpInfo.php?ip=%1").arg(ip); QNetworkAccessManager *manager = new QNetworkAccessManager(); QNetworkReply *reply = manager->get(QNetworkRequest(QUrl(url))); QEventLoop loop; QObject::connect(manager, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit())); loop.exec(); int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if(reply->error() != QNetworkReply::NoError || statusCode != 200) {//200 is normal status reply->close(); reply->deleteLater(); manager->deleteLater(); return QString(); } QByteArray ba = reply->readAll(); reply->close(); reply->deleteLater(); manager->deleteLater(); QJsonParseError err; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &err); if (err.error != QJsonParseError::NoError) {// Json type error return QString(); } if (jsonDocument.isNull() || jsonDocument.isEmpty()) { return QString(); } QJsonObject jsonObject = jsonDocument.object(); if (jsonObject.isEmpty() || jsonObject.size() == 0) { return QString(); } if (jsonObject.contains("data")) { QJsonObject dataObj = jsonObject.value("data").toObject(); if (dataObj.isEmpty() || dataObj.size() == 0) { return QString(); } if (dataObj.contains("city")) { return dataObj.value("city").toString(); } } return QString(); } const QString getCityFromIPAddr(const QString &ip) { int charset = GEOIP_CHARSET_UTF8; // charset = GEOIP_CHARSET_ISO_8859_1; GeoIP *gi = GeoIP_open_type(GEOIP_CITY_EDITION_REV1, GEOIP_STANDARD | GEOIP_SILENCE); if (NULL == gi) { return QString(); } // gi->charset = charset; uint32_t ipnum = _GeoIP_lookupaddress(ip.toStdString().c_str()); if (ipnum == 0) { printf("%s: can't resolve ip ( %s )\n", GeoIPDBDescription[GEOIP_CITY_EDITION_REV1], ip.toStdString().c_str()); return QString(); } GeoIPRecord *gir = GeoIP_record_by_ipnum(gi, ipnum); if (gir) { //const char *region = GeoIP_region_name_by_code(gir->country_code, gir->region); //qDebug() << "country_name=" << gir->country_name << ",region=" << region << ",gir->city=" << gir->city << ",gir->latitude=" << gir->latitude << ",gir->longitude=" << gir->longitude; QString cityName = QString(gir->city); GeoIPRecord_delete(gir); GeoIP_delete(gi); return cityName; } GeoIP_delete(gi); return QString(); } const QString automaicCity() { QString city; QString publicIP = getPublicIpAddrByUrl("http://whois.pconline.com.cn/"); //qDebug() << "publicIP:" << publicIP; city = getCityFromIPAddr(publicIP);//根据ip从geoip库定位城市 if (city.isEmpty()) { city = getCityFromIpByAmap(publicIP);//根据ip从高德API定位城市,该方式使用高德key,访问次数有限 } if (city.isEmpty()) { city = getCityFromIpByTaobao(publicIP);//根据ip从淘宝service定位城市,该方式访问速度慢,可能访问失败 } return city; } } AutomaticLocation::AutomaticLocation(QObject *parent) :QThread(parent) { } void AutomaticLocation::run() { QString cityName = automaicCity(); emit automaticLocationFinished(cityName); } indicator-china-weather/src/activebutton.h0000664000175000017500000000235313644002575017651 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef ACTIVEBUTTON_H #define ACTIVEBUTTON_H #include #include #include #include class ActiveButton : public QFrame { Q_OBJECT public: explicit ActiveButton(const QString &text, QWidget *parent = 0); void setActive(bool active); signals: void btnClicked(); private: QPushButton *m_btn = nullptr; QLabel *m_label = nullptr; QVBoxLayout *m_layout = nullptr; bool m_isActive = false; }; #endif // ACTIVEBUTTON_H indicator-china-weather/src/tipwidget.h0000664000175000017500000000243413644002575017142 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TIPWIDGET_H #define TIPWIDGET_H #include #include class TipWidget : public QFrame { Q_OBJECT public: explicit TipWidget(QWidget *parent = 0); ~TipWidget(); void setLabelIcon(const QString &iconPath); void setLabelText(const QString &text); protected: void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; private: QLabel *m_icon = nullptr; QLabel *m_text = nullptr; QPushButton *m_closeBtn = nullptr; }; #endif // TIPWIDGET_H indicator-china-weather/src/networkerrorwidget.h0000664000175000017500000000233213644002575021106 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef NETWORK_ERROR_WIDGET_H #define NETWORK_ERROR_WIDGET_H #include #include class QLabel; class NetworkErrorWidget : public QFrame { Q_OBJECT public: explicit NetworkErrorWidget(QFrame *parent = 0); ~NetworkErrorWidget(); void setErrorInfo(const QString &info); signals: void requestRetryAccessWeather(); private: QVBoxLayout *m_layout = nullptr; //QLabel *m_tipLabel = nullptr; }; #endif // NETWORK_ERROR_WIDGET_H indicator-china-weather/src/searchmodel.cpp0000664000175000017500000000353013644002575017761 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchmodel.h" #include SearchModel::SearchModel(QObject *parent) : QAbstractListModel(parent) { } SearchModel::~SearchModel() { } int SearchModel::rowCount(const QModelIndex &parent) const { return m_locationDataList.length(); } bool SearchModel::insertColumns(int column, int count, const QModelIndex &) { return true; } QVariant SearchModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { return QVariant(); } const LocationData info = m_locationDataList.at(index.row()); if (role == Qt::UserRole) {//for get LocationData from QList return QVariant(info.id); } if (role == Qt::ToolTipRole || role == Qt::WhatsThisRole) { return QVariant(); } return QVariant(QString("%1, %2, %3").arg(info.city).arg(info.admin_district).arg(info.province)); } QList SearchModel::locationList() const { return m_locationDataList; } void SearchModel::setLocationData(const QList &results) { beginResetModel(); m_locationDataList = results; endResetModel(); } indicator-china-weather/src/dbusadaptor.h0000664000175000017500000000244213643503425017450 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp com.kylin.weather.xml -a dbusadaptor -c DbusAdaptor -l MainWindow * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * This file may have been hand-edited. Look for HAND-EDIT comments * before re-generating it. */ #ifndef DBUSADAPTOR_H #define DBUSADAPTOR_H #include #include QT_BEGIN_NAMESPACE class QByteArray; template class QList; template class QMap; class QString; class QStringList; class QVariant; QT_END_NAMESPACE /* * Adaptor class for interface com.kylin.weather */ #include "mainwindow.h"//added the code manually by lixiang class DbusAdaptor: public QDBusAbstractAdaptor { Q_OBJECT Q_CLASSINFO("D-Bus Interface", "com.kylin.weather") Q_CLASSINFO("D-Bus Introspection", "" " \n" " \n" " \n" "") public: DbusAdaptor(MainWindow *parent); virtual ~DbusAdaptor(); inline MainWindow *parent() const { return static_cast(QObject::parent()); } public: // PROPERTIES public Q_SLOTS: // METHODS void showMainWindow(); Q_SIGNALS: // SIGNALS }; #endif indicator-china-weather/src/promptwidget.h0000664000175000017500000000320513644002575017664 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PROMPTWIDGET_H_ #define PROMPTWIDGET_H_ #include #include class QLabel; class QPushButton; class PromptWidget : public QFrame { Q_OBJECT public: explicit PromptWidget(QWidget *parent = 0); explicit PromptWidget(const QString &text, QWidget *parent = 0, const QString &movieSouce = "", bool movie = false); ~PromptWidget(); void setIconAndText(const QString &iconPath, const QString &text); protected: void enterEvent(QEvent *event) Q_DECL_OVERRIDE; void leaveEvent(QEvent *event) Q_DECL_OVERRIDE; bool event(QEvent *event); void showEvent(QShowEvent *event) Q_DECL_OVERRIDE; void hideEvent(QHideEvent* event) Q_DECL_OVERRIDE; private: QLabel *m_iconLabel = nullptr; QLabel *m_textLabel = nullptr; QPushButton *m_closeBtn = nullptr; QMovie *m_movie = nullptr; bool m_isMovie = false; }; #endif // PROMPTWIDGET_H_ indicator-china-weather/src/searchview.h0000664000175000017500000000162113644002575017277 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include class SearchView : public QListView { Q_OBJECT public: explicit SearchView(QWidget *parent = 0); ~SearchView(); }; indicator-china-weather/src/indexweatherwidget.cpp0000664000175000017500000000173113643503425021366 0ustar fengfeng/* * Copyright (C) 2013 ~ 2018 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "indexweatherwidget.h" #include #include #include IndexWeatherWidget::IndexWeatherWidget(QFrame *parent) : QFrame(parent) { } IndexWeatherWidget::~IndexWeatherWidget() { } indicator-china-weather/src/tooltip.cpp0000664000175000017500000002212213644002575017163 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "tooltip.h" #include #include #include #include #include ToolTip::ToolTip(QWidget *parent) : QFrame(parent) , m_radius(0) , m_background(QBrush(QColor(255,255,255,230))) , m_borderColor(QColor(224,224,224,130)) { this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); this->setContentsMargins(0, 0, 0, 0); m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(5); m_frame = new QFrame(); m_frame->setContentsMargins(0, 0, 0, 0); QVBoxLayout *layout = new QVBoxLayout(this->m_frame); layout->setContentsMargins(15, 5, 15, 5); layout->setSpacing(5); m_dateLabel = new QLabel(this); m_dWeatherLabel = new QLabel(this); m_nWeatherLabel = new QLabel(this); m_dIconLabel = new QLabel(this); m_nIconLabel = new QLabel(this); m_tempLabel = new QLabel(this); m_mrmsLabel = new QLabel(this); m_srssLabel = new QLabel(this); m_humLabel = new QLabel(this); m_pcpnLabel = new QLabel(this); m_popLabel = new QLabel(this); m_presLabel = new QLabel(this); m_uvIndexLabel = new QLabel(this); m_visLabel = new QLabel(this); m_windLabel = new QLabel(this); m_dIconLabel->setFixedSize(48, 48); m_nIconLabel->setFixedSize(48, 48); m_dateLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_dWeatherLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_nWeatherLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_dIconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_nIconLabel->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_tempLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_mrmsLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_srssLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_humLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_pcpnLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_popLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_presLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_uvIndexLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_visLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_windLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); QVBoxLayout *d_vlayout = new QVBoxLayout; d_vlayout->addWidget(m_dIconLabel, 0, Qt::AlignHCenter); d_vlayout->addWidget(m_dWeatherLabel, 0, Qt::AlignHCenter); QVBoxLayout *n_vlayout = new QVBoxLayout; n_vlayout->addWidget(m_nIconLabel, 0, Qt::AlignHCenter); n_vlayout->addWidget(m_nWeatherLabel, 0, Qt::AlignHCenter); QHBoxLayout *h_layout = new QHBoxLayout; h_layout->addLayout(d_vlayout); h_layout->addLayout(n_vlayout); layout->addWidget(m_dateLabel, 0, Qt::AlignTop | Qt::AlignHCenter); layout->addLayout(h_layout); layout->addWidget(m_tempLabel, 0, Qt::AlignHCenter); layout->addWidget(m_srssLabel, 0, Qt::AlignHCenter); layout->addWidget(m_mrmsLabel, 0, Qt::AlignHCenter); layout->addWidget(m_humLabel, 0, Qt::AlignHCenter); layout->addWidget(m_pcpnLabel, 0, Qt::AlignHCenter); layout->addWidget(m_popLabel, 0, Qt::AlignHCenter); layout->addWidget(m_presLabel, 0, Qt::AlignHCenter); layout->addWidget(m_uvIndexLabel, 0, Qt::AlignHCenter); layout->addWidget(m_visLabel, 0, Qt::AlignHCenter); layout->addWidget(m_windLabel, 0, Qt::AlignBottom | Qt::AlignHCenter); m_layout->addWidget(m_frame, 0, Qt::AlignVCenter); adjustSize(); } ToolTip::~ToolTip() { } void ToolTip::resetData(const ForecastWeather &data, const QString &week) { m_dateLabel->setText(QString("%1 %2").arg(week).arg(data.forcast_date)); QPixmap pixmap1 = QPixmap(QString(":/res/weather_icons/darkgrey/%1.png").arg(data.cond_code_d)); pixmap1 = pixmap1.scaled(48, 48, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_dIconLabel->setPixmap(pixmap1); QPixmap pixmap2 = QPixmap(QString(":/res/weather_icons/darkgrey/%1.png").arg(data.cond_code_n)); pixmap2 = pixmap2.scaled(48, 48, Qt::KeepAspectRatio, Qt::SmoothTransformation); m_nIconLabel->setPixmap(pixmap2); m_dWeatherLabel->setText(data.cond_txt_d); m_nWeatherLabel->setText(data.cond_txt_n); m_tempLabel->setText(QString("%1°C~%2°C").arg(data.tmp_min).arg(data.tmp_max)); if (data.sr_ss.contains(QChar('+'))) { QStringList sunList= data.sr_ss.split(QChar('+')); m_srssLabel->setText(QString(tr("Sunrise: %1 sunset: %2")).arg(sunList.at(0)).arg(sunList.at(1))); } else { m_srssLabel->setText(QString(tr("Sunrise and sunset: %1")).arg(data.sr_ss)); } if (data.mr_ms.contains(QChar('+'))) { QStringList moonList= data.mr_ms.split(QChar('+')); m_mrmsLabel->setText(QString(tr("Moonrise: %1 moonset: %2")).arg(moonList.at(0)).arg(moonList.at(1))); } else { m_mrmsLabel->setText(QString(tr("Moonrise and moonset: %1")).arg(data.mr_ms)); } m_humLabel->setText(QString(tr("Relative humidity:%1")).arg(data.hum) + "%");//相对湿度 m_pcpnLabel->setText(QString(tr("Precipitation:%1 mm")).arg(data.pcpn));//降水量 m_popLabel->setText(QString(tr("Probability of precipitation:%1")).arg(data.pop) + "%");//降水概率 m_presLabel->setText(QString(tr("Atmospheric pressure:%1 hPa")).arg(data.pres));//大气压强 m_uvIndexLabel->setText(QString(tr("UV intensity index:%1")).arg(data.uv_index));//紫外线强度指数 m_visLabel->setText(QString(tr("Visibility:%1 km")).arg(data.vis));//能见度 m_windLabel->setText(QString(tr("Wind:%1 %2stage direction %3 speed %4 km/h")).arg(data.wind_dir).arg(data.wind_sc).arg(data.wind_deg).arg(data.wind_spd)); } void ToolTip::popupTip(QPoint point) { int point_X; int point_Y; if (point.rx() < this->width()) { point_X = point.rx() + 10; } else { point_X = point.rx() - this->width(); } point_Y = point.ry(); this->move(QPoint(point_X, point_Y)); // this->show(); QFrame::show(); QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect(this->m_frame); opacityEffect->setOpacity(1); // this->m_frame->setGraphicsEffect(opacityEffect); QPropertyAnimation *animation = new QPropertyAnimation(opacityEffect, "opacity"); animation->setDuration(200); animation->setStartValue(0); animation->setKeyValueAt(0.25, 1); animation->setKeyValueAt(0.5, 1); animation->setKeyValueAt(0.75, 1); animation->setEndValue(0);//1 animation->start(); connect(animation, &QPropertyAnimation::finished, this, [=] { animation->deleteLater(); this->show(); // this->m_frame->setGraphicsEffect(NULL); // this->hide(); }); } void ToolTip::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::HighQualityAntialiasing); QBrush background = this->m_background; QColor borderColor = this->m_borderColor; QMarginsF shadowMargins = QMarginsF(2.0, 2.0, 2.0, 2.0); QRectF bgRect = QRectF(rect()).marginsRemoved(shadowMargins); QPainterPath bgPath; bgPath.addRoundedRect(bgRect, this->m_radius, this->m_radius); painter.fillPath(bgPath, background); QPainterPath borderPath; QRectF borderRect = QRectF(rect()); int borderRadius = this->m_radius; QMarginsF borderMargins(0.5, 0.5, 0.5, 0.5); borderRadius += 0.5; borderRect = borderRect.marginsAdded(borderMargins).marginsRemoved(shadowMargins); borderPath.addRoundedRect(borderRect, borderRadius, borderRadius); QPen borderPen(borderColor); borderPen.setWidthF(1.0); painter.strokePath(borderPath, borderPen); } indicator-china-weather/src/dbusadaptor.cpp0000664000175000017500000000165613643503425020011 0ustar fengfeng/* * This file was generated by qdbusxml2cpp version 0.8 * Command line was: qdbusxml2cpp com.kylin.weather.xml -a dbusadaptor -c DbusAdaptor -l MainWindow * * qdbusxml2cpp is Copyright (C) 2015 The Qt Company Ltd. * * This is an auto-generated file. * Do not edit! All changes made to it will be lost. */ #include "dbusadaptor.h" #include #include #include #include #include #include #include /* * Implementation of adaptor class DbusAdaptor */ DbusAdaptor::DbusAdaptor(MainWindow *parent) : QDBusAbstractAdaptor(parent) { // constructor setAutoRelaySignals(true); } DbusAdaptor::~DbusAdaptor() { // destructor } void DbusAdaptor::showMainWindow() { // handle method call com.kylin.weather.showMainWindow //edited the code manually by lixiang parent()->movePosition(); } indicator-china-weather/src/settingtitlebar.h0000664000175000017500000000350713644002575020350 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SETTINGTITLEBAR_H #define SETTINGTITLEBAR_H #include #include #include #include class SettingTitleBar : public QWidget { Q_OBJECT public: explicit SettingTitleBar(QWidget *parent = 0); ~SettingTitleBar(); void initLeftContent(); void initMiddleContent(); void initRightContent(); void initBottomContent(); void initWidgets(); public slots: void showWarnInfo(const QString &info); signals: void requestCloseDialog(); void requestSwitchPage(bool is_isFirs); protected: void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; private: QVBoxLayout *m_layout = nullptr; QHBoxLayout *m_toplayout = nullptr; QHBoxLayout *m_lLayout = nullptr; QHBoxLayout *m_mLayout = nullptr; QHBoxLayout *m_rLayout = nullptr; QHBoxLayout *m_bLayout = nullptr; QPushButton *m_closeBtn = nullptr; QLabel *m_tipLabel = nullptr; QTimer *m_timer = nullptr; QColor m_borderColor; int m_borderRadius; int m_borderWidth; QBrush m_bgBrush; }; #endif // SETTINGTITLEBAR_H indicator-china-weather/src/contentwidget.h0000664000175000017500000000334213644002575020017 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CONTENTWIDGET_H #define CONTENTWIDGET_H #include #include "data.h" class QVBoxLayout; class NowWeatherWidget; class ForecastWeatherWidget; class NetworkErrorWidget; //class IndexWeatherWidget; class ContentWidget : public QFrame { Q_OBJECT public: explicit ContentWidget(QWidget *parent = 0); ~ContentWidget(); void setNetworkErrorPages(); void refreshObserveUI(const ObserveWeather &data); void refreshForecastUI(const ForecastWeather &data, int index); void refreshLifestyleUI(const LifeStyle &data); void setDayStyleSheets(); void setNightStyleSheets(); void showServerNotifyInfo(const QString &info); signals: void requestRetryWeather(); private: QVBoxLayout *m_layout = nullptr; NowWeatherWidget *m_nowWidget = nullptr; ForecastWeatherWidget *m_forecastWidget = nullptr; NetworkErrorWidget *m_networkErrorWidget = nullptr; // IndexWeatherWidget *m_indexWidget = nullptr; }; #endif // CONTENTWIDGET_H indicator-china-weather/src/searchdelegate.cpp0000664000175000017500000000361313644002575020435 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchdelegate.h" #include #include SearchDelegate::SearchDelegate(QObject *parent) : QStyledItemDelegate(parent) { } SearchDelegate::~SearchDelegate() { } void SearchDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QString cityName = index.data(Qt::DisplayRole).toString(); QRect rect(option.rect.adjusted(0, 0, 0, 0) ); painter->fillRect(rect, QColor::fromRgbF(1, 1, 1, 0.15)); QFont font = painter->font(); font.setPixelSize(12); QTextOption textOption; textOption.setAlignment(Qt::AlignLeft | Qt::AlignVCenter); painter->setPen(QColor("#808080")); painter->setFont(font); rect = rect.adjusted(15, 0, 15, 0); painter->drawText(rect, cityName, textOption); } QSize SearchDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { // Q_UNUSED(option) // QVariant value = index.data(Qt::SizeHintRole); // if(value.isValid()) // return qvariant_cast(value); QSize size = QStyledItemDelegate::sizeHint(option, index); size.setHeight(32); return size; } indicator-china-weather/src/preferences.h0000664000175000017500000001032013644002575017434 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PREFERENCES_H #define PREFERENCES_H #include #include #include "data.h" class Preferences { public: Preferences(); ~Preferences(); void save(); void load(); //void addCityToStringList(QString name); //void removeCityFromStringList(QString name); //void loadCityesToStringList(QStringList list); QStringList getCitiesList(); //QString cityName(int index); int citiesCount(); void setCurrentCityIdAndName(const QString &cityName/*int index*/); void resetCurrentCityNameById(const QString &id); void addCityInfoToPref(City city); void removeCityInfoFromPref(const QString &id, bool isActive); void reloadCityList(); bool isCityIdExist(const QString &id); bool isCitiesCountOverMax(); void setDefaultCity(); QString m_currentCity; QString m_currentCityId; int m_updateFrequency; int m_opacity; bool m_serverNotify; /*struct Weather_settings { QString id; QString city; QString updatetime; QString air;//空气质量 QString cloud;//云量 QString cond_code;//实况天气状况代码 100 QString cond_txt;//实况天气状况描述 晴 QString fl;//体感温度,默认单位:摄氏度 23 QString hum;//相对湿度 40 QString pcpn;//降水量(毫米 mm) 0 QString pres;//大气压强(百帕 hPa) 1020 QString tmp;//温度,默认单位:摄氏度℃ 21 QString vis;//能见度,默认单位:公里 km 10 QString wind_deg;//风向360角度 305 QString wind_dir;//风向 西北 QString wind_sc;//风力 3 (0:静风 1:1级风) QString wind_spd;//风速,公里/小时 km/h 15 } weather;*/ /*struct Forecast_settings { QString cond_code_d;//白天天气状况代码 100 QString cond_code_n;//晚间天气状况代码 100 QString cond_txt_d;//白天天气状况描述 晴 QString cond_txt_n;//晚间天气状况描述 晴 QString forcast_date;//预报日期 2013-12-30 QString hum;//相对湿度 37 QString mr_ms;//月升时间 04:47 月落时间 14:59 QString pcpn;//降水量 0 QString pop;//降水概率 0 QString pres;//大气压强 1018 QString sr_ss;//日出时间 07:36 日落时间 16:58 QString tmp_max;//最高温度 4 QString tmp_min;//最低温度 -5 QString uv_index;//紫外线强度指数 3 QString vis;//能见度,单位:公里 10 QString wind_deg;//风向360角度 310 QString wind_dir;//风向 西北风 QString wind_sc;//风力 1-2 (级风) QString wind_spd;//风速,公里/小时 14 } forecast0, forecast1, forecast2;*/ /*struct LifeStyle_settings { QString air_brf; QString air_txt; QString comf_brf; QString comf_txt; QString cw_brf; QString cw_txt; QString drsg_brf; QString drsg_txt; QString flu_brf; QString flu_txt; QString sport_brf; QString sport_txt; QString trav_brf; QString trav_txt; QString uv_brf; QString uv_txt; } lifestyle;*/ ObserveWeather weather; ForecastWeather forecast0, forecast1, forecast2; LifeStyle lifestyle; Air air; int m_maxCityItems; QStringList m_cityList; //QStringList m_cityIdList; QList m_cities; }; #endif // PREFERENCES_H indicator-china-weather/src/searchdelegate.h0000664000175000017500000000217213644002575020101 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include class SearchDelegate : public QStyledItemDelegate { Q_OBJECT public: explicit SearchDelegate(QObject *parent = 0); ~SearchDelegate(); private: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; }; indicator-china-weather/src/translucentlabel.h0000664000175000017500000000303313644002575020500 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TRANLUCENTLABEL_H #define TRANLUCENTLABEL_H #include class TranslucentLabel : public QLabel { Q_OBJECT public: explicit TranslucentLabel(bool showTip = false, QWidget *parent = 0); void setLabelIcon(const QString &iconPath); void setLabelText(const QString &text); signals: void clicked(); protected: // virtual void focusInEvent(QFocusEvent *event) Q_DECL_OVERRIDE; // virtual void focusOutEvent(QFocusEvent *event) Q_DECL_OVERRIDE; virtual void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; private: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; //bool event(QEvent *event) Q_DECL_OVERRIDE; private: QLabel *m_icon = nullptr; QLabel *m_text = nullptr; bool m_showTip; }; #endif // TRANLUCENTLABEL_H indicator-china-weather/src/preferences.cpp0000664000175000017500000004537513644002575020011 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "preferences.h" #include #include #include "global.h" using namespace Global; Preferences::Preferences() { m_cityList.clear(); //m_cityIdList.clear(); m_cities.clear(); m_maxCityItems = 10; m_updateFrequency = 30; m_opacity = 100; m_serverNotify = true; load(); } Preferences::~Preferences() { save(); } void Preferences::save() { QSettings *set = m_settings; set->beginGroup("City"); set->setValue("current_city_id", m_currentCityId); set->setValue("current_city", m_currentCity); //set->setValue("city_list2", this->getCitiesList()); set->remove("city_list"); set->beginWriteArray("city_list"); for (int i = 0; i < m_cities.size(); ++i) { set->setArrayIndex(i); set->setValue("id", m_cities.at(i).id); set->setValue("name", m_cities.at(i).name); //qDebug() << m_cities.at(i).id << m_cities.at(i).name; } set->endArray(); set->setValue("update_frequency", m_updateFrequency); set->setValue("opacity", m_opacity); set->endGroup(); set->beginGroup("Weather"); set->setValue("updatetime", weather.updatetime); set->setValue("air", weather.air); set->setValue("cloud", weather.cloud); set->setValue("cond_code", weather.cond_code); set->setValue("cond_txt", weather.cond_txt); set->setValue("fl", weather.fl); set->setValue("hum", weather.hum); set->setValue("pcpn", weather.pcpn); set->setValue("pres", weather.pres); set->setValue("tmp", weather.tmp); set->setValue("vis", weather.vis); set->setValue("wind_deg", weather.wind_deg); set->setValue("wind_dir", weather.wind_dir); set->setValue("wind_sc", weather.wind_sc); set->setValue("wind_spd", weather.wind_spd); set->endGroup(); set->beginGroup("Forecast"); QStringList result; result.append(forecast0.forcast_date); result.append(forecast1.forcast_date); result.append(forecast2.forcast_date); set->setValue("forcast_date", result); result.clear(); result.append(forecast0.cond_code_d); result.append(forecast1.cond_code_d); result.append(forecast2.cond_code_d); set->setValue("cond_code_d", result); result.clear(); result.append(forecast0.cond_txt_d); result.append(forecast1.cond_txt_d); result.append(forecast2.cond_txt_d); set->setValue("cond_txt_d", result); result.clear(); result.append(forecast0.cond_code_n); result.append(forecast1.cond_code_n); result.append(forecast2.cond_code_n); set->setValue("cond_code_n", result); result.clear(); result.append(forecast0.cond_txt_n); result.append(forecast1.cond_txt_n); result.append(forecast2.cond_txt_n); set->setValue("cond_txt_n", result); result.clear(); result.append(forecast0.hum); result.append(forecast1.hum); result.append(forecast2.hum); set->setValue("hum", result); result.clear(); result.append(forecast0.mr_ms); result.append(forecast1.mr_ms); result.append(forecast2.mr_ms); set->setValue("mr_ms", result); result.clear(); result.append(forecast0.pcpn); result.append(forecast1.pcpn); result.append(forecast2.pcpn); set->setValue("pcpn", result); result.clear(); result.append(forecast0.pop); result.append(forecast1.pop); result.append(forecast2.pop); set->setValue("pop", result); result.clear(); result.append(forecast0.pres); result.append(forecast1.pres); result.append(forecast2.pres); set->setValue("pres", result); result.clear(); result.append(forecast0.sr_ss); result.append(forecast1.sr_ss); result.append(forecast2.sr_ss); set->setValue("sr_ss", result); result.clear(); result.append(forecast0.tmp_max); result.append(forecast1.tmp_max); result.append(forecast2.tmp_max); set->setValue("tmp_max", result); result.clear(); result.append(forecast0.tmp_min); result.append(forecast1.tmp_min); result.append(forecast2.tmp_min); set->setValue("tmp_min", result); result.clear(); result.append(forecast0.uv_index); result.append(forecast1.uv_index); result.append(forecast2.uv_index); set->setValue("uv_index", result); result.clear(); result.append(forecast0.vis); result.append(forecast1.vis); result.append(forecast2.vis); set->setValue("vis", result); result.clear(); result.append(forecast0.wind_deg); result.append(forecast1.wind_deg); result.append(forecast2.wind_deg); set->setValue("wind_deg", result); result.clear(); result.append(forecast0.wind_dir); result.append(forecast1.wind_dir); result.append(forecast2.wind_dir); set->setValue("wind_dir", result); result.clear(); result.append(forecast0.wind_sc); result.append(forecast1.wind_sc); result.append(forecast2.wind_sc); set->setValue("wind_sc", result); result.clear(); result.append(forecast0.wind_spd); result.append(forecast1.wind_spd); result.append(forecast2.wind_spd); set->setValue("wind_spd", result); result.clear(); set->endGroup(); set->beginGroup("Lifestyle"); set->setValue("air_brf", lifestyle.air_brf); set->setValue("air_txt", lifestyle.air_txt); set->setValue("comf_brf", lifestyle.comf_brf); set->setValue("comf_txt", lifestyle.comf_txt); set->setValue("cw_brf", lifestyle.cw_brf); set->setValue("cw_txt", lifestyle.cw_txt); set->setValue("drsg_brf", lifestyle.drsg_brf); set->setValue("drsg_txt", lifestyle.drsg_txt); set->setValue("flu_brf", lifestyle.flu_brf); set->setValue("flu_txt", lifestyle.flu_txt); set->setValue("sport_brf", lifestyle.sport_brf); set->setValue("sport_txt", lifestyle.sport_txt); set->setValue("trav_brf", lifestyle.trav_brf); set->setValue("trav_txt", lifestyle.trav_txt); set->setValue("uv_brf", lifestyle.uv_brf); set->setValue("uv_txt", lifestyle.uv_txt); set->endGroup(); set->sync(); } void Preferences::load() { QSettings *set = m_settings; set->beginGroup("City"); m_currentCityId = set->value("current_city_id", m_currentCityId).toString(); if (m_currentCityId.isEmpty()) { m_currentCityId = "101250101"; m_currentCity = "长沙"; City city; city.id = m_currentCityId; city.name = m_currentCity; } m_currentCity = set->value("current_city", m_currentCity).toString(); int cityCount = set->beginReadArray("city_list"); if (cityCount == 0) { set->setArrayIndex(0); City city; city.id = m_currentCityId; city.name = m_currentCity; m_cities.append(city); City city1; city1.id = "101010100"; city1.name = "北京"; m_cities.append(city1); City city2; city2.id = "101020100"; city2.name = "上海"; m_cities.append(city2); City city3; city3.id = "101280101"; city3.name = "广州"; m_cities.append(city3); City city4; city4.id = "101280601"; city4.name = "深圳"; m_cities.append(city4); } else { for (int i = 0; i < cityCount; ++i) { set->setArrayIndex(i); City city; city.id = set->value("id").toString(); city.name = set->value("name").toString(); m_cities.append(city); } } this->reloadCityList(); set->endArray(); m_updateFrequency = set->value("update_frequency", m_updateFrequency).toInt(); if (m_updateFrequency > 60 || m_updateFrequency < 15) { m_updateFrequency = 30; } m_opacity = set->value("opacity", m_opacity).toInt(); if (m_opacity > 100 || m_opacity < 60) { m_opacity = 100; } set->endGroup(); set->beginGroup("Weather"); weather.updatetime = set->value("updatetime", weather.updatetime).toString(); weather.air = set->value("air", weather.air).toString(); weather.cloud = set->value("cloud", weather.cloud).toString(); weather.cond_code = set->value("cond_code", weather.cond_code).toString(); weather.cond_txt = set->value("cond_txt", weather.cond_txt).toString(); weather.fl = set->value("fl", weather.fl).toString(); weather.hum = set->value("hum", weather.hum).toString(); weather.pcpn = set->value("pcpn", weather.pcpn).toString(); weather.pres = set->value("pres", weather.pres).toString(); weather.tmp = set->value("tmp", weather.tmp).toString(); weather.vis = set->value("vis", weather.vis).toString(); weather.wind_deg = set->value("wind_deg", weather.wind_deg).toString(); weather.wind_dir = set->value("wind_dir", weather.wind_dir).toString(); weather.wind_sc = set->value("wind_sc", weather.wind_sc).toString(); weather.wind_spd = set->value("wind_spd", weather.wind_spd).toString(); set->endGroup(); set->beginGroup("Forecast"); QStringList resultlist = set->value("forcast_date").toStringList(); if (resultlist.length() == 3) { forecast0.forcast_date = resultlist.at(0); forecast1.forcast_date = resultlist.at(1); forecast2.forcast_date = resultlist.at(2); } resultlist.clear(); resultlist = set->value("cond_code_d").toStringList(); if (resultlist.length() == 3) { forecast0.cond_code_d = resultlist.at(0); forecast1.cond_code_d = resultlist.at(1); forecast2.cond_code_d = resultlist.at(2); } resultlist.clear(); resultlist = set->value("cond_txt_d").toStringList(); if (resultlist.length() == 3) { forecast0.cond_txt_d = resultlist.at(0); forecast1.cond_txt_d = resultlist.at(1); forecast2.cond_txt_d = resultlist.at(2); } resultlist.clear(); resultlist = set->value("cond_code_n").toStringList(); if (resultlist.length() == 3) { forecast0.cond_code_n = resultlist.at(0); forecast1.cond_code_n = resultlist.at(1); forecast2.cond_code_n = resultlist.at(2); } resultlist.clear(); resultlist = set->value("cond_txt_n").toStringList(); if (resultlist.length() == 3) { forecast0.cond_txt_n = resultlist.at(0); forecast1.cond_txt_n = resultlist.at(1); forecast2.cond_txt_n = resultlist.at(2); } resultlist.clear(); resultlist = set->value("hum").toStringList(); if (resultlist.length() == 3) { forecast0.hum = resultlist.at(0); forecast1.hum = resultlist.at(1); forecast2.hum = resultlist.at(2); } resultlist.clear(); resultlist = set->value("mr_ms").toStringList(); if (resultlist.length() == 3) { forecast0.mr_ms = resultlist.at(0); forecast1.mr_ms = resultlist.at(1); forecast2.mr_ms = resultlist.at(2); } resultlist.clear(); resultlist = set->value("pcpn").toStringList(); if (resultlist.length() == 3) { forecast0.pcpn = resultlist.at(0); forecast1.pcpn = resultlist.at(1); forecast2.pcpn = resultlist.at(2); } resultlist.clear(); resultlist = set->value("pop").toStringList(); if (resultlist.length() == 3) { forecast0.pop = resultlist.at(0); forecast1.pop = resultlist.at(1); forecast2.pop = resultlist.at(2); } resultlist.clear(); resultlist = set->value("pres").toStringList(); if (resultlist.length() == 3) { forecast0.pres = resultlist.at(0); forecast1.pres = resultlist.at(1); forecast2.pres = resultlist.at(2); } resultlist.clear(); resultlist = set->value("sr_ss").toStringList(); if (resultlist.length() == 3) { forecast0.sr_ss = resultlist.at(0); forecast1.sr_ss = resultlist.at(1); forecast2.sr_ss = resultlist.at(2); } resultlist.clear(); resultlist = set->value("tmp_max").toStringList(); if (resultlist.length() == 3) { forecast0.tmp_max = resultlist.at(0); forecast1.tmp_max = resultlist.at(1); forecast2.tmp_max = resultlist.at(2); } resultlist.clear(); resultlist = set->value("tmp_min").toStringList(); if (resultlist.length() == 3) { forecast0.tmp_min = resultlist.at(0); forecast1.tmp_min = resultlist.at(1); forecast2.tmp_min = resultlist.at(2); } resultlist.clear(); resultlist = set->value("uv_index").toStringList(); if (resultlist.length() == 3) { forecast0.uv_index = resultlist.at(0); forecast1.uv_index = resultlist.at(1); forecast2.uv_index = resultlist.at(2); } resultlist.clear(); resultlist = set->value("vis").toStringList(); if (resultlist.length() == 3) { forecast0.vis = resultlist.at(0); forecast1.vis = resultlist.at(1); forecast2.vis = resultlist.at(2); } resultlist.clear(); resultlist = set->value("wind_deg").toStringList(); if (resultlist.length() == 3) { forecast0.wind_deg = resultlist.at(0); forecast1.wind_deg = resultlist.at(1); forecast2.wind_deg = resultlist.at(2); } resultlist.clear(); resultlist = set->value("wind_dir").toStringList(); if (resultlist.length() == 3) { forecast0.wind_dir = resultlist.at(0); forecast1.wind_dir = resultlist.at(1); forecast2.wind_dir = resultlist.at(2); } resultlist.clear(); resultlist = set->value("wind_sc").toStringList(); if (resultlist.length() == 3) { forecast0.wind_sc = resultlist.at(0); forecast1.wind_sc = resultlist.at(1); forecast2.wind_sc = resultlist.at(2); } resultlist.clear(); resultlist = set->value("wind_spd").toStringList(); if (resultlist.length() == 3) { forecast0.wind_spd = resultlist.at(0); forecast1.wind_spd = resultlist.at(1); forecast2.wind_spd = resultlist.at(2); } resultlist.clear(); set->endGroup(); set->beginGroup("Lifestyle"); lifestyle.air_brf = set->value("air_brf", lifestyle.air_brf).toString(); lifestyle.air_txt = set->value("air_txt", lifestyle.air_txt).toString(); lifestyle.comf_brf = set->value("comf_brf", lifestyle.comf_brf).toString(); lifestyle.comf_txt = set->value("comf_txt", lifestyle.comf_txt).toString(); lifestyle.cw_brf = set->value("cw_brf", lifestyle.cw_brf).toString(); lifestyle.cw_txt = set->value("cw_txt", lifestyle.cw_txt).toString(); lifestyle.drsg_brf = set->value("drsg_brf", lifestyle.drsg_brf).toString(); lifestyle.drsg_txt = set->value("drsg_txt", lifestyle.drsg_txt).toString(); lifestyle.flu_brf = set->value("flu_brf", lifestyle.flu_brf).toString(); lifestyle.flu_txt = set->value("flu_txt", lifestyle.flu_txt).toString(); lifestyle.sport_brf = set->value("sport_brf", lifestyle.sport_brf).toString(); lifestyle.sport_txt = set->value("sport_txt", lifestyle.sport_txt).toString(); lifestyle.trav_brf = set->value("trav_brf", lifestyle.trav_brf).toString(); lifestyle.trav_txt = set->value("trav_txt", lifestyle.trav_txt).toString(); lifestyle.uv_brf = set->value("uv_brf", lifestyle.uv_brf).toString(); lifestyle.uv_txt = set->value("uv_txt", lifestyle.uv_txt).toString(); set->endGroup(); } //void Preferences::addCityToStringList(QString name) //{ // int pos = m_cityList.indexOf(name); // if (pos != -1) // m_cityList.removeAt(pos); // m_cityList.prepend(name); // if (m_cityList.count() > m_maxCityItems) // m_cityList.removeLast(); //} //void Preferences::removeCityFromStringList(QString name) //{ // int pos = m_cityList.indexOf(name); // if (pos != -1) // m_cityList.removeAt(pos); //} //QString Preferences::cityName(int index) //{ // QString name = m_cityList[index]; // return name; //} //void Preferences::loadCityesToStringList(QStringList list) //{ // m_cityList.clear(); // int max = list.count(); // if (m_maxCityItems < max) // max = m_maxCityItems; // for (int n = 0; n < max; n++) { // m_cityList.append(list[n]); // } //} void Preferences::reloadCityList() { m_cityList.clear(); for (int i = 0; i < m_cities.size(); ++i) { m_cityList.append(m_cities.at(i).name); } } QStringList Preferences::getCitiesList() { return m_cityList; } int Preferences::citiesCount() { return m_cityList.count(); } void Preferences::setCurrentCityIdAndName(const QString &cityName/*int index*/) { this->m_currentCity = cityName; for (int i = 0; i < m_cities.size(); ++i) { if (m_cities.at(i).name == cityName) { this->m_currentCityId = m_cities.at(i).id; break; } } } void Preferences::setDefaultCity() { if (m_cities.size() > 0) { this->m_currentCityId = m_cities.at(0).id; this->m_currentCity = m_cities.at(0).name; } } void Preferences::addCityInfoToPref(City city) { if (m_cities.size() == 0) { m_cities.append(city); } else { int pos = m_cities.indexOf(city); if (pos != -1) { m_cities.removeAt(pos); } m_cities.prepend(city); if (m_cities.count() > m_maxCityItems) m_cities.removeLast(); } this->reloadCityList(); } void Preferences::removeCityInfoFromPref(const QString &id, bool isActive) { for (int i = 0; i < m_cities.size(); ++i) { City city; city.id = m_cities.at(i).id; city.name = m_cities.at(i).name; int pos = m_cities.indexOf(city); if (pos != -1 && city.id == id) { m_cities.removeAt(pos); this->reloadCityList(); break; } } if (isActive) { this->setDefaultCity(); } } bool Preferences::isCityIdExist(const QString &id) { bool b = false; for (int i = 0; i < m_cities.size(); ++i) { if (id == m_cities.at(i).id) { b = true; break; } } return b; } bool Preferences::isCitiesCountOverMax() { bool b = false; if (m_cities.count() >= 10) { b = true; return b; } return b; } void Preferences::resetCurrentCityNameById(const QString &id) { this->m_currentCityId = id; for (int i = 0; i < m_cities.size(); ++i) { if (m_cities.at(i).id == id) { this->m_currentCity = m_cities.at(i).name; break; } } } indicator-china-weather/src/searchdialog.cpp0000664000175000017500000001163513643503425020124 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchdialog.h" #include "searchtitlebar.h" #include "searchmodel.h" #include "searchview.h" #include "searchdelegate.h" #include #include #include #include #include namespace { const int CONTENT_MARGIN = 0; } SearchDialog::SearchDialog(QWidget *parent): QDialog(parent) { this->setWindowFlags(Qt::FramelessWindowHint); this->setStyleSheet("QDialog{border:1px solid #000000;border-radius:2px;background:rgba(255, 255, 255, 0.7);}QDialog:hover{background: rgba(255, 255, 255, 1.0);}"); this->setFixedSize(479, 421); this->setFocusPolicy(Qt::ClickFocus); this->setWindowTitle(tr("Kylin Weather - Search")); this->setWindowIcon(QIcon(":/res/indicator-china-weather.png")); m_titleBar = new SearchTitleBar; m_titleBar->setFixedHeight(150); m_displayWidget = new QWidget; // m_displayWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); // m_displayWidget->setContentsMargins(0, m_titleBar->height(), 0, 0); m_searchModel = new SearchModel; m_searchView = new SearchView; m_searchDelegate = new SearchDelegate; m_searchView->setFixedWidth(this->width() - 2*CONTENT_MARGIN); m_searchView->setItemDelegate(m_searchDelegate); m_searchView->setModel(m_searchModel); m_searchView->setVisible(false); m_noResultLabel = new QLabel; m_noResultLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_noResultLabel->setAlignment(Qt::AlignCenter); m_noResultLabel->setText(tr("No Result")); m_noResultLabel->setVisible(false); QFont font = m_noResultLabel->font(); const QFontMetrics fm(font); m_noResultLabel->setFixedWidth(fm.width(m_noResultLabel->text())); QVBoxLayout *layout = new QVBoxLayout(this); layout->setContentsMargins(1, 1, 1, 1); layout->setSpacing(0); layout->addWidget(m_titleBar); layout->addWidget(m_displayWidget); QHBoxLayout *contentLayout = new QHBoxLayout(m_displayWidget); contentLayout->setContentsMargins(CONTENT_MARGIN, 0, CONTENT_MARGIN, 0); contentLayout->setSpacing(0); contentLayout->addWidget(m_searchView, 1, Qt::AlignHCenter); contentLayout->addWidget(m_noResultLabel, 1, Qt::AlignCenter); connect(m_searchView, &SearchView::clicked, this, [this](const QModelIndex &index) { QVariant data = index.data(Qt::UserRole);//SearchModel::data Qt::UserRole QString selectCityId = data.value(); //qDebug() << "selectCityId=" << selectCityId; for (const LocationData &line : m_searchModel->locationList()) {//it must exits. if (line.id == selectCityId) { emit this->requestAddCityToMenu(line); break; } } }); connect(m_titleBar, &SearchTitleBar::requestCloseDialog, this, [=] { this->close(); }); connect(m_titleBar, &SearchTitleBar::requestShowNoResultLabel, this, [=] { m_noResultLabel->setVisible(true); }); connect(m_titleBar, &SearchTitleBar::requestResetViewAndModel, this, [=] { m_searchView->setVisible(false); m_noResultLabel->setVisible(false); m_searchModel->setLocationData(QList()); }); connect(m_titleBar, &SearchTitleBar::sendSearchResults, this, [=] (QList results) { m_searchModel->setLocationData(results); m_searchView->setVisible(true); m_noResultLabel->setVisible(false); }); } SearchDialog::~SearchDialog() { delete m_titleBar; delete m_noResultLabel; delete m_searchModel; delete m_searchView; delete m_searchDelegate; } void SearchDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { m_mousePressed = true; m_dragPosition = event->globalPos() - this->frameGeometry().topLeft(); event->accept(); } } void SearchDialog::mouseReleaseEvent(QMouseEvent *) { m_mousePressed = false; } void SearchDialog::mouseMoveEvent(QMouseEvent *event) { if(m_mousePressed) { QPoint move_pos = event->globalPos(); move(move_pos - m_dragPosition); event->accept(); } } indicator-china-weather/src/tipwidget.cpp0000664000175000017500000000606313644002575017477 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "tipwidget.h" #include #include #include "preferences.h" #include "global.h" using namespace Global; TipWidget::TipWidget(QWidget *parent) : QFrame(parent) { this->setStyleSheet("QFrame{border:none;background-color:transparent;color:#fff222;font-size:12px;}"); this->setFixedHeight(22); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); m_icon = new QLabel(this); m_icon->setFixedSize(12, 12); m_icon->setScaledContents(true);//自动缩放,显示图像大小自动调整为Qlabel大小 m_text = new QLabel(this); m_text->adjustSize();//QLabel自适应文字的大小 m_text->setAlignment(Qt::AlignLeft); m_icon->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_text->setStyleSheet("QLabel{border:none;background-color:transparent;color:#fff222;font-size:12px;}"); m_closeBtn = new QPushButton(this); m_closeBtn->setFixedSize(12, 12); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/delete_normal.png');border:0px;}QPushButton:hover{background:url(':/res/delete_hover_press.png');}QPushButton:pressed{background:url(':/res/delete_hover_press.png');}"); m_closeBtn->setVisible(false); connect(m_closeBtn, &QPushButton::clicked, this, [=] { m_preferences->m_serverNotify = false; this->setVisible(false); }); QHBoxLayout *m_layout = new QHBoxLayout(this); m_layout->setContentsMargins(15, 0, 5, 0); m_layout->setSpacing(5); m_layout->addWidget(m_icon, 0, Qt::AlignLeft | Qt::AlignVCenter); m_layout->addWidget(m_text, 1, Qt::AlignLeft | Qt::AlignVCenter); this->setLayout(m_layout); } TipWidget::~TipWidget() { } void TipWidget::setLabelIcon(const QString &iconPath) { m_icon->setPixmap(QPixmap(iconPath)); } void TipWidget::setLabelText(const QString &text) { QFont font = m_text->font(); const QFontMetrics fm(font); QString elided_text = fm.elidedText(text, Qt::ElideRight, this->width() - 40); m_text->setText(elided_text); } void TipWidget::enterEvent(QEvent *event) { QFrame::enterEvent(event); m_closeBtn->move(1, 5); m_closeBtn->setVisible(true); } void TipWidget::leaveEvent(QEvent *event) { QFrame::enterEvent(event); m_closeBtn->setVisible(false); } indicator-china-weather/src/searchtitlebar.cpp0000664000175000017500000001467013644002575020476 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "searchtitlebar.h" #include "searchinputedit.h" #include "locationworker.h" #include #include #include SearchTitleBar::SearchTitleBar(QWidget *parent) : QWidget(parent) , m_borderColor(QColor(255, 255, 255, 153)) , m_borderRadius(1) , m_borderWidth(1) , m_bgBrush(QBrush(QColor("#1374e8"))) { this->initWidgets(); m_searchTimer = new QTimer; m_searchTimer->setSingleShot(true); m_searchTimer->setInterval(500); m_locationWorker = new LocationWorker; connect(m_searchTimer, SIGNAL(timeout()), this, SLOT(onSearchTimerOut())); connect(m_searchInputEdit, &SearchInputEdit::textChanged, this, [this] { emit this->requestResetViewAndModel(); if (m_searchTimer->isActive()) { m_searchTimer->stop(); } m_searchTimer->start(); }); } SearchTitleBar::~SearchTitleBar() { m_locationWorker->deleteLater(); if (m_searchTimer) { disconnect(m_searchTimer, SIGNAL(timeout()), this, SLOT(onSearchTimerOut())); if(m_searchTimer->isActive()) { m_searchTimer->stop(); } delete m_searchTimer; m_searchTimer = nullptr; } QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void SearchTitleBar::onSearchTimerOut() { const QString inputText = m_searchInputEdit->text().trimmed(); if (inputText.isEmpty()) return; QList searchResultList; searchResultList = m_locationWorker->exactMatchCity(inputText); if (searchResultList.isEmpty()) { emit this->requestShowNoResultLabel(); } else { setSearchResult(searchResultList); } } void SearchTitleBar::setSearchResult(const QList data) { QList resultList; for (const LocationData &line : data) { if (resultList.indexOf(line) == -1) { resultList.append(line); } } emit this->sendSearchResults(resultList); } void SearchTitleBar::resetSearchInputEdit() const { m_searchInputEdit->setText(""); m_searchInputEdit->clearFocus(); } void SearchTitleBar::initLeftContent() { QWidget *w = new QWidget; m_lLayout = new QHBoxLayout(w); m_lLayout->setContentsMargins(0, 0, 0, 0); m_lLayout->setSpacing(0); m_toplayout->addWidget(w, 1, Qt::AlignLeft); } void SearchTitleBar::initMiddleContent() { QWidget *w = new QWidget; w->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_mLayout = new QHBoxLayout(w); m_mLayout->setContentsMargins(0, 0, 0, 0); m_mLayout->setSpacing(5); m_toplayout->addWidget(w); QLabel *m_iconLabel = new QLabel; m_iconLabel->setContentsMargins(0, 0, 0, 0); QPixmap iconPixmap = QPixmap(QIcon::fromTheme("indicator-china-weather", QIcon(":/res/indicator-china-weather_min.png")).pixmap(QSize(16, 16))); m_iconLabel->setPixmap(iconPixmap); m_iconLabel->setFixedSize(iconPixmap.size()); QLabel *m_titleLabel = new QLabel; m_titleLabel->setStyleSheet("QLabel{font-size:12px;color: rgb(255,255,255);background-color:transparent;}"); m_titleLabel->setText(tr("Kylin Weather - Search")); m_mLayout->addWidget(m_iconLabel); m_mLayout->addWidget(m_titleLabel); } void SearchTitleBar::initRightContent() { QWidget *w = new QWidget; m_rLayout = new QHBoxLayout(w); m_rLayout->setContentsMargins(0, 0, 5, 0); m_rLayout->setSpacing(0); m_toplayout->addWidget(w, 1, Qt::AlignRight); m_closeBtn = new QPushButton(this); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setFixedSize(32,32); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/close_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/close_hover_btn.png');}QPushButton:pressed{background:url(':/res/close_pressed_btn.png');}"); m_rLayout->addWidget(m_closeBtn); connect(m_closeBtn, &QPushButton::clicked, this, &SearchTitleBar::requestCloseDialog); } void SearchTitleBar::initBottomContent() { QWidget *w = new QWidget; m_bLayout = new QHBoxLayout(w); m_bLayout->setContentsMargins(10, 0, 0, 0); m_bLayout->setSpacing(10); m_layout->addWidget(w); m_searchInputEdit = new SearchInputEdit; m_searchInputEdit->setFixedSize(280, 32); m_bLayout->addWidget(m_searchInputEdit, 0, Qt::AlignCenter); m_searchInputEdit->setFocus(); m_layout->addStretch(); } void SearchTitleBar::initWidgets() { m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(0); this->setLayout(m_layout); m_toplayout = new QHBoxLayout; m_toplayout->setContentsMargins(0, 0, 0, 0); m_toplayout->setSpacing(0); m_layout->addLayout(m_toplayout); m_layout->addStretch(); initLeftContent(); initMiddleContent(); initRightContent(); initBottomContent(); } void SearchTitleBar::paintEvent(QPaintEvent *event) { QWidget::paintEvent(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); // QPainterPath outBorderPath; // outBorderPath.addRoundedRect(this->rect(), m_borderRadius, m_borderRadius); // QPen pen(m_borderColor, m_borderWidth); // painter.setPen(pen); // painter.drawPath(outBorderPath); // QRect borderRect; // borderRect.setRect(this->rect().x() + m_borderWidth, this->rect().y() + m_borderWidth, this->rect().width() - m_borderWidth * 2, this->rect().height() - m_borderWidth * 2); // QPainterPath inBorderPath; // inBorderPath.addRoundedRect(borderRect, m_borderRadius, m_borderRadius); // painter.setClipPath(inBorderPath); painter.fillRect(0, 0, width(), height(), m_bgBrush); } indicator-china-weather/src/tipmodule.h0000664000175000017500000000230413644002575017140 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TIPMODULE_H #define TIPMODULE_H #include class QTimer; class TipModule: public QObject { Q_OBJECT public: TipModule(QObject *parent = 0); ~TipModule(); public slots: void onDisplayTimeOut(); private: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; private: QWidget *m_parentWidget = nullptr; QWidget *m_tipWidget = nullptr; QTimer *m_displayTimer = nullptr; }; #endif // TIPMODULE_H indicator-china-weather/src/menuactiongroup.cpp0000664000175000017500000000500613644002575020712 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "menuactiongroup.h" #include #include #include MenuActionGroupItem::MenuActionGroupItem(QObject *parent, MenuActionGroup *group, int index) : MenuAction(parent) { this->setCheckable(true); this->setData(QVariant(index)); if (group) { group->addAction(this); } } MenuActionGroup::MenuActionGroup(QObject *parent) : QActionGroup(parent) { setExclusive(true); connect(this, &MenuActionGroup::triggered, this, [=] (QAction *action) { int value = action->data().toInt(); emit activated(value); }); } QString MenuActionGroup::setCurrentCheckedIndex(int index) { QString text; QList actionList = actions(); for (int i=0; i < actionList.count(); i++) { if ((!actionList[i]->isSeparator()) && (actionList[i]->data().toInt() == index)) { actionList[i]->setChecked(true); text = actionList[i]->text(); break; } } return text; } int MenuActionGroup::getCurrentCheckedIndex() { QAction *action = checkedAction(); if (action) { return action->data().toInt(); } else { return -1; } } void MenuActionGroup::uncheckAll() { QList actionList = actions(); for (int i=0; i < actionList.count(); i++) { actionList[i]->setChecked(false); } } void MenuActionGroup::clearAllActions() { while (actions().count() > 0) { QAction *action = actions()[0]; if (action) { removeAction(action); action->deleteLater(); } } } void MenuActionGroup::setActionsEnabled(bool enable) { QList actionList = actions(); for (int i=0; i < actionList.count(); i++) { actionList[i]->setEnabled(enable); } } indicator-china-weather/src/networkerrorwidget.cpp0000664000175000017500000000572013644002575021445 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "networkerrorwidget.h" #include #include #include NetworkErrorWidget::NetworkErrorWidget(QFrame *parent) : QFrame(parent) { this->setFixedSize(355, 340); QPushButton *m_retryBtn = new QPushButton; m_retryBtn->setStyleSheet("QPushButton{border:1px solid #e0e0e0;text-align:center;font-size:14px;color:#000000;background:transparent;}"); m_retryBtn->setFixedSize(90, 25); m_retryBtn->setFocusPolicy(Qt::NoFocus); m_retryBtn->setText(tr("retry")); /*QFont font = m_btn->font(); const QFontMetrics fm(font); m_retryBtn->setFixedWidth(fm.width(m_retryBtn->text()));*/ connect(m_retryBtn, &QPushButton::clicked, this, [=] { emit this->requestRetryAccessWeather(); }); QLabel *m_tipIcon = new QLabel; m_tipIcon->setFixedSize(127 ,93); m_tipIcon->setStyleSheet("QLabel{border:none;background-color:transparent;}"); m_tipIcon->setPixmap(QPixmap(":/res/unlink.png")); QLabel *m_tipLabel = new QLabel; m_tipLabel->setFixedWidth(this->width()); m_tipLabel->setWordWrap(true); m_tipLabel->setAlignment(Qt::AlignCenter); m_tipLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); m_tipLabel->setStyleSheet("QLabel{border:none;background-color:transparent;color:#808080;font-size:12px;}"); m_tipLabel->setText(tr("Current network exception, please check network settings"));//当前网络异常,请检查网络设置 m_layout = new QVBoxLayout(this); m_layout->setContentsMargins(0, 0, 0, 0); m_layout->setSpacing(20); this->setLayout(m_layout); m_layout->addStretch(); m_layout->addWidget(m_tipIcon, 0, Qt::AlignHCenter); m_layout->addWidget(m_tipLabel, 0, Qt::AlignHCenter); m_layout->addWidget(m_retryBtn, 0, Qt::AlignHCenter); m_layout->addStretch(); } NetworkErrorWidget::~NetworkErrorWidget() { QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void NetworkErrorWidget::setErrorInfo(const QString &info) { //m_tipLabel->setText(tr("Current network exception, please check network settings"));//当前网络异常,请检查网络设置 } indicator-china-weather/src/titlebar.cpp0000664000175000017500000001330513644002575017302 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "titlebar.h" #include #include #include TitleBar::TitleBar(QWidget *parent) : QWidget(parent) { this->setFixedHeight(32); this->initWidgets(); } TitleBar::~TitleBar() { QLayoutItem *child; while ((child = m_layout->takeAt(0)) != 0) { if (child->widget()) child->widget()->deleteLater(); delete child; } } void TitleBar::initLeftContent() { m_leftWidget = new QWidget; m_leftWidget->setStyleSheet("QWidget{background-image:none;}QWidget::hover{background-image:url(':/res/location_bg_hover.png');}"); m_leftWidget->installEventFilter(this); m_leftWidget->setFixedSize(69, 22); m_lLayout = new QHBoxLayout(m_leftWidget); m_lLayout->setContentsMargins(5, 0, 0, 0); m_lLayout->setSpacing(5); m_layout->addWidget(m_leftWidget, 1, Qt::AlignLeft | Qt::AlignTop); QPushButton *city_button = new QPushButton; city_button->setFocusPolicy(Qt::NoFocus); city_button->setStyleSheet("QPushButton{background:transparent;border:none;}"); city_button->setFixedSize(11, 11); city_button->setIconSize(QSize(11, 11)); city_button->setIcon(QIcon(":/res/set_city.png")); m_cityLabel = new QLabel; m_cityLabel->setText("--");//for test m_cityLabel->setStyleSheet("QLabel{font-size:12px;color:#ffffff;background:transparent;background-color:transparent;}"); QLabel *locationLabel = new QLabel; locationLabel->setStyleSheet("QLabel{background:transparent;}"); locationLabel->setFixedSize(8, 11); locationLabel->setPixmap(QPixmap(":/res/location.png")); m_lLayout->addStretch(); m_lLayout->addWidget(city_button); m_lLayout->addWidget(m_cityLabel); m_lLayout->addWidget(locationLabel); m_lLayout->addStretch(); connect(city_button, &QPushButton::clicked, this, &TitleBar::requestShowSettingDialog); } void TitleBar::initRightContent() { /*QWidget *w = new QWidget; m_rLayout = new QHBoxLayout(w); m_rLayout->setContentsMargins(0, 0, 5, 0); m_rLayout->setSpacing(0); m_layout->addWidget(w, 1, Qt::AlignRight); m_minBtn = new QPushButton(this); m_closeBtn = new QPushButton(this); m_minBtn->setFocusPolicy(Qt::NoFocus); m_closeBtn->setFocusPolicy(Qt::NoFocus); m_minBtn->setFixedSize(32,32); m_closeBtn->setFixedSize(32,32); m_minBtn->setStyleSheet("QPushButton{background-image:url(':/res/min_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/min_hover_btn.png');}QPushButton:pressed{background:url(':/res/min_pressed_btn.png');}"); m_closeBtn->setStyleSheet("QPushButton{background-image:url(':/res/close_normal_btn.png');border:0px;}QPushButton:hover{background:url(':/res/close_hover_btn.png');}QPushButton:pressed{background:url(':/res/close_pressed_btn.png');}"); m_rLayout->addWidget(m_minBtn); m_rLayout->addWidget(m_closeBtn); connect(m_minBtn, &QPushButton::clicked, this, [=] { if (parentWidget() && parentWidget()->parentWidget()) { // parentWidget()->parentWidget()->showMinimized(); parentWidget()->parentWidget()->hide(); } }); connect(m_closeBtn, &QPushButton::clicked, this, [=] { // qApp->quit(); if (parentWidget() && parentWidget()->parentWidget()) { // parentWidget()->parentWidget()->showMinimized(); parentWidget()->parentWidget()->hide(); } });*/ } void TitleBar::initWidgets() { m_layout = new QHBoxLayout(this); m_layout->setContentsMargins(2, 2, 0, 0); m_layout->setSpacing(0); this->setLayout(m_layout); initLeftContent(); initRightContent(); } void TitleBar::setCityName(const QString &city) { m_cityLabel->setText(city); } void TitleBar::setDayStyleSheets() { //m_leftWidget->setStyleSheet("QWidget{background-image:none;}"); } void TitleBar::setNightStyleSheets() { //m_leftWidget->setStyleSheet("QWidget{background-image:url(':/res/location_bg_hover.png');}"); } bool TitleBar::eventFilter(QObject *obj, QEvent *event) { if(obj == m_leftWidget) { switch (event->type()) { case QEvent::Enter: { QWidget *widget = qobject_cast(obj); if (widget) { widget->setCursor(QCursor(Qt::PointingHandCursor)); } break; } case QEvent::Leave: { QWidget *widget = qobject_cast(obj); if (!widget) { widget->unsetCursor(); } break; } default: break; } if (event->type() == QEvent::MouseButtonPress) { QMouseEvent *mouseEvent = static_cast(event); if(mouseEvent->button() == Qt::LeftButton) { emit this->requestShowSettingDialog(); return true; } else { return false; } } else { return false; } } return QObject::eventFilter(obj, event); } indicator-china-weather/src/forecastitemwidget.h0000664000175000017500000000310513644002575021027 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FORECASTITEMWIDGET_H #define FORECASTITEMWIDGET_H #include #include #include #include #include #include "data.h" class ToolTip; class ForecastItemWidget : public QWidget { Q_OBJECT public: explicit ForecastItemWidget(QWidget *parent = 0); void resetForecastData(const ForecastWeather &data, int index); void setDefaultData(); void setDayStyleSheets(); void setNightStyleSheets(); protected: bool event(QEvent *event); private: QLabel *m_weekLabel = nullptr; QLabel *m_dateLabel = nullptr; QLabel *m_weatherLabel = nullptr; QLabel *m_iconLabel = nullptr; QLabel *m_tempLabel = nullptr; QVBoxLayout *m_layout = nullptr; ToolTip *m_toolTip = nullptr; bool m_isDayOrNight; }; #endif // FORECASTITEMWIDGET_H indicator-china-weather/src/titlebar.h0000664000175000017500000000317213644002575016750 0ustar fengfeng/* * Copyright (C) 2013 ~ 2019 National University of Defense Technology(NUDT) & Tianjin Kylin Ltd. * * Authors: * Kobe Lee lixiang@kylinos.cn/kobe24_lixiang@126.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TITLEBAR_H #define TITLEBAR_H #include #include #include #include class TitleBar : public QWidget { Q_OBJECT public: explicit TitleBar(QWidget *parent = 0); ~TitleBar(); void initLeftContent(); void initRightContent(); void initWidgets(); void setCityName(const QString &city); void setDayStyleSheets(); void setNightStyleSheets(); signals: void requestShowSettingDialog(); private: bool eventFilter(QObject *obj, QEvent *event) Q_DECL_OVERRIDE; private: QHBoxLayout *m_layout = nullptr; QHBoxLayout *m_lLayout = nullptr; // QHBoxLayout *m_rLayout = nullptr; QWidget *m_leftWidget = nullptr; QPushButton *m_setCityBtn = nullptr; QLabel *m_cityLabel = nullptr; // QPushButton *m_minBtn = nullptr; // QPushButton *m_closeBtn = nullptr; }; #endif // TITLEBAR_H indicator-china-weather/res.qrc0000664000175000017500000002616313644002575015507 0ustar fengfeng res/close_hover_btn.png res/close_normal_btn.png res/close_pressed_btn.png res/indicator-china-weather_min.png res/min_hover_btn.png res/min_pressed_btn.png res/min_normal_btn.png res/background/weather-clear-night.png res/background/weather-clear.png res/background/weather-few-clouds.png res/background/weather-fog.png res/background/weather-overcast.png res/background/weather-rain.png res/background/weather-sandstorm.png res/background/weather-snow.png res/indicator-china-weather.png res/about_normal.png res/quit_normal.png res/location.png res/set_city.png res/current_sd.png res/current_wind.png res/aqi.png res/temp.png res/weather_icons/lightgrey/100.png res/life_index_d.png res/life_index_n.png res/clothe_index.png res/search.png res/delete_hover_pressed_btn.png res/delete_normal_btn.png res/add.png res/add_hover_btn.png res/add_normal_btn.png res/add_pressed_btn.png res/subtract_hover_btn.png res/subtract_normal_btn.png res/subtract_pressed_btn.png res/cash_wash_index.png res/checkbox.png res/city_background.png res/link.gif res/location_bg_hover.png res/min_bg.png res/network_warn.png res/ok_disabled_btn.png res/ok_hover_btn.png res/ok_normal_btn.png res/ok_pressed_btn.png res/pressure.png res/sd.png res/ultraviolet_rays.png res/unlink.png res/update_warn.png res/visibility.png res/delete_hover_press.png res/delete_normal.png res/weather_icons/darkgrey/100.png res/weather_icons/darkgrey/101.png res/weather_icons/darkgrey/102.png res/weather_icons/darkgrey/103.png res/weather_icons/darkgrey/104.png res/weather_icons/darkgrey/200.png res/weather_icons/darkgrey/201.png res/weather_icons/darkgrey/202.png res/weather_icons/darkgrey/203.png res/weather_icons/darkgrey/204.png res/weather_icons/darkgrey/205.png res/weather_icons/darkgrey/206.png res/weather_icons/darkgrey/207.png res/weather_icons/darkgrey/208.png res/weather_icons/darkgrey/209.png res/weather_icons/darkgrey/210.png res/weather_icons/darkgrey/211.png res/weather_icons/darkgrey/212.png res/weather_icons/darkgrey/213.png res/weather_icons/darkgrey/300.png res/weather_icons/darkgrey/301.png res/weather_icons/darkgrey/302.png res/weather_icons/darkgrey/303.png res/weather_icons/darkgrey/304.png res/weather_icons/darkgrey/305.png res/weather_icons/darkgrey/306.png res/weather_icons/darkgrey/307.png res/weather_icons/darkgrey/308.png res/weather_icons/darkgrey/309.png res/weather_icons/darkgrey/310.png res/weather_icons/darkgrey/311.png res/weather_icons/darkgrey/312.png res/weather_icons/darkgrey/313.png res/weather_icons/darkgrey/400.png res/weather_icons/darkgrey/401.png res/weather_icons/darkgrey/402.png res/weather_icons/darkgrey/403.png res/weather_icons/darkgrey/404.png res/weather_icons/darkgrey/405.png res/weather_icons/darkgrey/406.png res/weather_icons/darkgrey/407.png res/weather_icons/darkgrey/500.png res/weather_icons/darkgrey/501.png res/weather_icons/darkgrey/502.png res/weather_icons/darkgrey/503.png res/weather_icons/darkgrey/504.png res/weather_icons/darkgrey/507.png res/weather_icons/darkgrey/508.png res/weather_icons/darkgrey/900.png res/weather_icons/darkgrey/901.png res/weather_icons/darkgrey/999.png res/weather_icons/lightgrey/101.png res/weather_icons/lightgrey/102.png res/weather_icons/lightgrey/103.png res/weather_icons/lightgrey/104.png res/weather_icons/lightgrey/200.png res/weather_icons/lightgrey/201.png res/weather_icons/lightgrey/202.png res/weather_icons/lightgrey/203.png res/weather_icons/lightgrey/204.png res/weather_icons/lightgrey/205.png res/weather_icons/lightgrey/206.png res/weather_icons/lightgrey/207.png res/weather_icons/lightgrey/208.png res/weather_icons/lightgrey/209.png res/weather_icons/lightgrey/210.png res/weather_icons/lightgrey/211.png res/weather_icons/lightgrey/212.png res/weather_icons/lightgrey/213.png res/weather_icons/lightgrey/300.png res/weather_icons/lightgrey/301.png res/weather_icons/lightgrey/302.png res/weather_icons/lightgrey/303.png res/weather_icons/lightgrey/304.png res/weather_icons/lightgrey/305.png res/weather_icons/lightgrey/306.png res/weather_icons/lightgrey/307.png res/weather_icons/lightgrey/308.png res/weather_icons/lightgrey/309.png res/weather_icons/lightgrey/310.png res/weather_icons/lightgrey/311.png res/weather_icons/lightgrey/312.png res/weather_icons/lightgrey/313.png res/weather_icons/lightgrey/400.png res/weather_icons/lightgrey/401.png res/weather_icons/lightgrey/402.png res/weather_icons/lightgrey/403.png res/weather_icons/lightgrey/404.png res/weather_icons/lightgrey/405.png res/weather_icons/lightgrey/406.png res/weather_icons/lightgrey/407.png res/weather_icons/lightgrey/500.png res/weather_icons/lightgrey/501.png res/weather_icons/lightgrey/502.png res/weather_icons/lightgrey/503.png res/weather_icons/lightgrey/504.png res/weather_icons/lightgrey/507.png res/weather_icons/lightgrey/508.png res/weather_icons/lightgrey/900.png res/weather_icons/lightgrey/901.png res/weather_icons/lightgrey/999.png res/weather_icons/white/100.png res/weather_icons/white/101.png res/weather_icons/white/102.png res/weather_icons/white/103.png res/weather_icons/white/104.png res/weather_icons/white/200.png res/weather_icons/white/201.png res/weather_icons/white/202.png res/weather_icons/white/203.png res/weather_icons/white/204.png res/weather_icons/white/205.png res/weather_icons/white/206.png res/weather_icons/white/207.png res/weather_icons/white/208.png res/weather_icons/white/209.png res/weather_icons/white/210.png res/weather_icons/white/211.png res/weather_icons/white/212.png res/weather_icons/white/213.png res/weather_icons/white/300.png res/weather_icons/white/301.png res/weather_icons/white/302.png res/weather_icons/white/303.png res/weather_icons/white/304.png res/weather_icons/white/305.png res/weather_icons/white/306.png res/weather_icons/white/307.png res/weather_icons/white/308.png res/weather_icons/white/309.png res/weather_icons/white/310.png res/weather_icons/white/311.png res/weather_icons/white/312.png res/weather_icons/white/313.png res/weather_icons/white/400.png res/weather_icons/white/401.png res/weather_icons/white/402.png res/weather_icons/white/403.png res/weather_icons/white/404.png res/weather_icons/white/405.png res/weather_icons/white/406.png res/weather_icons/white/407.png res/weather_icons/white/500.png res/weather_icons/white/501.png res/weather_icons/white/502.png res/weather_icons/white/503.png res/weather_icons/white/504.png res/weather_icons/white/507.png res/weather_icons/white/508.png res/weather_icons/white/900.png res/weather_icons/white/901.png res/weather_icons/white/999.png res/prefs.png res/air_index.png res/comf_index.png res/flu_index.png res/sport_index.png res/trav_index.png res/move.gif data/china-city-list.csv indicator-china-weather/doc/0000755000175000017500000000000013530705154014737 5ustar fengfengindicator-china-weather/doc/weather_zh_CN.png0000644000175000017500000027677213530705154020212 0ustar fengfengPNG  IHDRc(sBIT|dtEXtSoftwaregnome-screenshot> IDATxy-YU&8Ý˙L$dTmm)m[]Z]6TيBv@J, ph" $@Iw߻sb{#K,12=Da{ҟ}ށ889_WB@e8ߵ&5D4_@3v}Pt>Gag#*F!Sל+Ts)}}N}n͎_?=ԓu{sɦG5z9_s*ts3nRP.4똈BtFPq"ԌJLXEB#& oFZGTLu KJSbd-}.FS hfۿ$ZH!/4NV%M!>_dP./dr䯚/+r̨0A-;⡡"ϴ ė Fxm֡m N )a} Y&#I$ ! ;07n}? BACܡ):PH6 iKFMqm%T9, iK;JgYiO ڒRO(WQRmN ]ON W YI3Q, (&t-d 9H8J2 R}I- >祵7oJ}dvURY\ֳ@Z$}hmCΈaE 讫qċoTҽ Totp[5a9LZ`0]'K-QGXM,exnG4#U3 4hܔ5G" b uV Og$A3' qI5TGf|Dh&'HN<$諣VzDht6P4mmF,ot*1.+ $ `SR;oRKMHFE%DZfU#-N\uR _td#jnZ>^&Ȟ <͵x'1,0;fwf[dG9+f.[ :U ~I.Ah}uޑ񠒦w&b;zQ3+!` ۤ 嗅6B :r xDܘn0U+K9}ぢNb%Ҋ.D@bB=-q{9۷˙" ;#$mD]UlW00Ylڒx#)NS1 G,Pe u}hRgzV T@J6':Ϲ4o š"l4S@@"(']X#_2lUMOU 9<] z )E5u@K{t)3PSX_7GpBh,hN GhVʎ@aL79 ,3HifX 47?n]fF@c3쑝 \WNPn6恚JA'MXm| 1"O8f,';ffuuC:֐P=Ao)bKZTVCG q'SfcAyǀj&6_"ᝳ /`GvZ["upF -^5^|!ng/_|Yܣ:0ch7\Ik ˆ7 GIThL#"k$ga\ʗy2@&e`~DBYЎi@զ^``B 26&ao.)9{ B֊CQ8x%[KC g 0m(nn~l]<"YIk$Zf݆3Н94*_)/R-/DDԯ}Nْ<,GvvNѳ,]W<}SbYx&9&mopOnOn @6rr Z<8OLScH:*Ք&jHxQSi^2 fLP8x@0p>pJ3AWn > :N Hg}vZ <Ǣ~*? mlOtXa q1" I_oˑCZ4OC\3gy7k 'Mg@CxP>Zp/ۿewٜM{ů6÷lŘą)1[/Yv5N[Svn`?~d'Z)oW Aᓴ`y!#" ~[Y1)p>F&u""j}Aty g=ln|d-XMo o`r/zq騛kB<]X<%\ }p|_c/ثp Y獳ITA0CW`Ŏ^X X~ET>3!et3 diWH˃CɌjط}b6 ӤW}E&\5=ߖ4:9B;?MmU%ceH;Yfu\lf:7Zi4Zo@qBcͺ~FE$IK~"qyd[X p+v(9XQܰ$'IE*g4|.+MgA]Y8Ŷ LNn~$}<"<{_į,>d{ǧu`߯ןË^?jp=a>`:Qo-w9(jc*ؘ)0DT0']%N&\f+WG+%⻳bzQ6Ⱥݩj1$-e3HloqEԽ$=B9sN'l{]T{F'ޖ!rxȭG'|8@i "~1) y+kAlљhvdhmoWr6ǢH6SL% 6E6kƯ1)&g++?.coTv `s. KEGiߧ`[P 8wT>{FiOT+־9 Lc Ygit-xoy/1@ K5 쁢A HlpJr {!5D?YH Xy]db]`s2%%>P]7@J|=㥖T0H{!b;ckא&a I=P 3ZLס+Sp,V[ Ӊ>3w275|RR6*|F&PL. #wS!}~Ɖ$ÿ z #ϝ`>>?ߺ a~~zS \غbw7|'_zY2[ҬpzFXnċYF'f UU($ & Os0k`H !1Ї{F):櫶k4^Ah3HOŘo%^ :Mv֟f):& Li>HF6Ҩ+ < 80}kl(ΐչ&/d)s|r4_qn:nSvK5w>> 3_߅Q4:xU\+ 1>/Npbja{^}/_]٤\_ lT3]6}F%IiZcD` --XppThonCd?>ȮJFF<2 HK2w^hA2(Hx͇[x }i$7Xx2H#ibʒo^kjS}TVШa@&9õnkD=C/BfC ymtk$iEbCK@z.ͷ,~XԌ4'\D'(#dJKP 5NdI26; K / }6B:>Sc|KOǶߣ9)mK\`?3ghg wi("D $} @1E$o3 {y\T:9]M7TWŹpk:6X8l[\ȸiJ[BuLu+hiFBuҭf8G ϭ%=EH~^1Lvc|C]s ô εؐB6]Ge3.@-Y1K It5om-cvZw!,@Oб YGfjaLms6^]|. Kq~G?]bY Np{/Y~ %o>ZᦻVwSf̠Y^ݾ‡#A2$QѲNl .00(5MȮ<&y1(N^HGҶ-c,G\m![AoMƩ H!ݍ-um1&!?:7akwiq'OiJ+}{.ū9߁ݪX%;JE3r sTgw j(@iͮ Rwol;s$@hčUUj  \=7f \"a`( (iyTIߝ% 3CvQU䲐4@ʚ*|5}T4>C>ܶ\Qmj;far ͆q>P_xUAIWo?ks'i[4`S;'aJ8Gņ:>L1a2'};UQbt"'ȍ V{ND.L}aHЃdQ:Cv(v7e+5SÍrx@JZ"$'zP xcD\)>P^J6492~`F;nSILs>?NL#uya4j-`UH,:R-s/ y!s@C\^?>!Ԕ$ZȎF0bl#XbTyӢc3e@`kIM%UA -ɀZ Lqh41ƁjD{z="Vd 0kp?чȶ ]{@Z[dJ,vTzS7F7 ؊ܜ.;E<%3f Lr1tNo:{a0wgAdW2}ze]1yO[W6ݺ@u 't<#bm*ĤNnMhAu|^ӆl(nAU6]E|G,,06E!I< t:Wr{TD%vU؅m_\I|gCVIY܉NA{Z̘OiAk`&^/͈" XP/)t% 1RॼVݾݵ)PT1'N"+h#")tC2V*VgGcF vaum'M995#=\ʗb[$(D|lxtE A`o^ۣ<ܬ)GSuv^WcSyKV#f53,WW+(s9>]"dSa*&(TgBH]Y[BcWLf3sF IDAT%p]N[bxDp]ٙdFCeP rSDDS~1F&7Ȝmg>W4gAvԆ{[u5>11vB4$'3 e1m e7&ov۵RJ: ZSEh@g@b3Ӟ 'd*'y-N0AN(z'bWE  M!!7҅,AYꮡz/kknxD29m E.;(dˎu?퀭2@i2= KHG.>ӪVYm>q%)W&K<>;3Mm?kǘ4Me$WS@εuU%aŷvrHU)/m!ڐA vh!(|Edge|t#FDɴژXr1l37~.z_O}yI Pj%QGk (dVNieGsNj|g#"c4i7xzA)3_$&VPPKK__TNĀd<-)z2eL֜z"MEs-ˆE|d#?5@b}%RVV%m#f$ ۲ܽ'ٖr>ۖF̘6Iwңdʎ60Y^hkly/l 'Tf^,;uZjGSͲG= ,01@m4K>ȆnӇ٣/{Q|h|dk/Fb./Pg2h6lgB0@4ߺr1%##zz̦fTpcC7n+  hS('=ۂyG]_c(Aj ۾pZƼᘄV<ЙhlxExb5xHR!ɈH`3TH+{vгyjfc|rRڍ@dլrh.3*vԲ5̧s jAQg-Ş(it+*ȠyͲmƊ6,IyQ{ƂfN:ڍLR;MYAhg{Ϯ[k܂bx:X+kEeYǩ6qG(:i \y/Ezqtb"4KGY@䤵PH`,>L %8tI`n<r)hsXӡ\= Ƞ%u8bBΡ :ݍ27~XmUKyfGe5KPݔ8(d!["#8O-_O:IMN ;lNM1aJ xaK֋1PBDqNW^uְX VNZ 4x&̯Y2ѡLDFg4\S "~׉)W9߬oJscB>Q)ǔ!D_AYYOzM+~OYhhҫ>bwl!C0;H7 tM3 vsrGz@rnL6k^q:ؤ"vf4#EI-ϛ}׏ѥz4INOwj0 ^H\vFNCc:TM5kFk/}+P &>B>BDR~jD*O:.tO!u>Տ"jK֠Bi$sǽDg<ֱܾ^a*@=Skˊ)Pga, (M(%J6,"u587ӦmMClV#-RBtkS Rx'4$dFWrD o~(Bh-tX@e;oiVS>::n(d TûaP*t@1lo2!fKFo;2PDo%9O/ohL'c}4 MVuxiy&1~3k vzڱU-Fzn['<pGO0Q$%`ȊukPq O*Jڹ]s<-lN>0%Ė-r+z@Ǝztξo6f^YUٞk̉yg-U|4Nhv𗍜Sұ?NԐcϻӻ BhGi] J[h`D/ ؞wtB(`R4Toϑp{9w3ۍ{\?P@USek"=QδloDhBL8Ä|4`-Ht.qJK6.P4[>Qtj,Pd8^ U˪[٫Ffن"We<dbe4 SؔjTlѴ+*ɕˑԙյf21kԁٱ59*uVy6EO=of9^:`{Al)1m@E2L͕KkH%N]0#" ؞}u0F{ȍ֠w SJˋ+ !dJMؐ 3Cj-yMp&SQ8B2K߂3z!Z(6g^_˘u~HXВsMi&йX2pt2B2+ۋ Q)@< ~m ; 'm0!H5$(h(m5V>9ČJߍyIus-#wypM~Kד&N9B?rJg{VfJJgS`7;,#yIHĬd[*-Шb $Ւdekk/3'hր AOꁧ:' 9O]7 6_=$b0 C1y^z6L)(Ǩ5iJqX/}s`ƒcZOqgFtJ ] 8wЫAN;y-A9Jس oѣEw/ m":"81&\/"Z G6$k(,b׌o-5ѧ:B "Wۀ~oiS?6f\ʀ& ~FL^A[ h0o8R$ԯS8hYhnj;0_98x ϟηO:Vm$rTܦɔl,y=t~1݅:`ҕ -g}Pܾ(E2PwB97pYfK1֫n|{a.kii [ftˀvNhb &UY;clL>zY#bF g|ʢ;1W"xwF(T(S6'wQ;NUhF-֚u|Uת6}2v'Q=aaƷ"hb4Ҧ)anˮ9E5Q4Q M5˶9 zzJ`c61@i;,9bb/JueC٩֚dޮ{ {Ep4X,~z<*5[ {8kB|ZQSIZ }ͨ:ÁYѩɋb\Cd鎂v|5faGvrU2^$a`JiĜ<`,A1ٴBiґPЗ}iFJT0PK_FL M#pLߔ+А&=rN5ZG=@Y w*Tp`K)bdGn I@{5f]8;xuM=, 7 : kI럅4Qx{>5YF_-k,y䞁6d`VP]>%G꽔 Mg܀W(Af3G=V= mC9u{]MЖW!AIdȇ ɚ MȍHUJ=H"0Qd! E6&"|uCG+ CxXb,6b8@ؔqxT>$:}f(  h2dM*b:@[mag"rvj9#AR!- 7ssJb m\]o֞+dvGdBmnw.M3Qed:E6FpDh6zqfɁ #88X)n"H4 &mAG>>X}LZ]ϷS|h6!C]YƇe]~Җ2zGA<Q$LǬYBBۆ8$m`nrr\~8h9룱kw]YZ2km[&ݑ<`['< LGՔpB@Xc8'8ߵṉv6gb4= 44,]mEھZR=5\yH H ]1v\h%Z0 Rmg[f>viTa'iQ0(T8.^6W %}|12)AWKȰ/tN].euѪP"e ף Ou9ڊDꯅeƘ,&$'7>17OC(Ksu9j[saw.M3DmLm"u c;P*~x3(4Btvhv`LqFݠ|[@3|'bc Sί9ʳ}[>HJBG1rbA8' "¯[^x&p#oWo<8t iӿI(0 D('յ6v"7+N8gRT.r׫ylUExS>25J/5f|ϼn> Ѭq>Y #W'Jwd^H XVAwbJFj|vz,|ݖcBȞ;䴔L62&I&YNv I ӕvJkc)R$% &擮)ܴ0}0rbT:w/ ;{x2>A$Z S R12H}.~s']/=,2?`۾qPZ;r`BhfN1^xc jCVvD& zN2?<0rB#Giʳm:\aoS!ؙSAו[W+JeyQ{*ἕSv> ^J!ZHTpkR{ΊS7 G4(v,2^ )(7$rB밀4Ez L+V)y.u︫"V g+ 1bGS&-=X Ӕo$qpuW oƈÌkfk_4N﹓N%_}Ox{ey?|9ʻqbGf!^zCsϐY4,30 A|襓z߼CfFXL3RHj!M/9pNOtxV}P1&̦=.!.;Ot{>pi EPn?ɮ9E5jP ɞTl-i3.]2B 1=df3e6u߁7Kja!?/Y:#mL:`c&P^ڴ`+4 Y(b}wXw>6_NL Ԡڿ+ٞ}(/>~n^>sq:ߜf^3= /lR'ȭ L@l(P?:'G~OF Tx@FkHMELpՅS fpMLVQe0=xfPVv6Gyl啳b6-n]W ,WbUnY\f{5+]XR(UnnKbUV9W77k4unMm4kbt :%+DK6B\ o/d `1LvHŁdC Y=w |n?6v_=||g> j ʌ3'ru ğxm IDATC.%B h¶(e0J y6{X K43*yW^M&A#= P%+/pn{OZM>V?_ǫV.:ʧ] jRj \kH-FĨ=|g>pK Y3  Qq==>!bgo*B~ yi\]rDS݌XYhom2qUP=rƹz6R\] hX+/1$:M+|ttދۜ_P&ƳЂ(2hV (qkײߜh99IĠvFW^4\V}Wi9@Sopz[n6akKw'xQhrsO'%7loȰk Ved~b7}y.K'NpS\7o]Q`|YRu>z>4g-;YvsQL:zCxj`R`/a˙݈|FNl |c lL'DMּ!p .&PƬoN*D!md&LMY6*f`pN@K79y~/WKpJ(1hj @QD,`(לvo EYLp1/qhWvEoe\_.d0ʓɧI\Ix]gdӹ"rck#E˿-ibɌZWT+8%C=Rfƴ"BMTyߑPYp%n >zۢ3^Fa`:*m$+׶d]Pfx$72`OhۿE+1}Sd޲SO'$}~-^+)iFP:`\$ō^i`An 'gD"|%=bp72K6kf_l)O,M 5jEct[ .|Dշ)ηÝU'*mA- [@odE8! 3@ό^ IjQ1a֤Vrvr 5$wq-WMKB5m<j66|Oh OEuBo7PKvrݲqgMѕnQ:/F*l4yE]~#R`s*tΦRq’Jޭ qCNXH.#[v9V-dS8Cͩ`o\<թR,p:\]hmE%ErG^QF NJs'XC$ !98\FnM'>E?s^I㩘:`챘t,0cW.z:XnMqDq=ˍkrQ v"5zc B E66/j@r;m&+ \諦Oمv҄Ia20p _@4SmQwwSyWM8^- l:EHIX~gQ3<6+9W]8/`k&8s xHIzsK4Z<9jc$+*W /^ vŞ&bLdü0oE O_9}&A>T}fpWwBuOIS|6`umޛxr6r2q% é'G0sw..ݝ\/o5gn Kq2!\6*p2Sty\ƩZcvG])Cc$}9Gx2X'&;qٹX/WM؞ .{y6g[YܲĦ~':|m7/{>y*)]b5&L&*O)Pe8 F6Bρ+q"Ul6q5w"#⇿f;x埜3X.㺍W3_=.x(+<>BQ2=}T&xWCd6##@FfPd=hgCjF20+r s, iLh#t+B|5yYWl:g?orB~DJ'^#*u?^Ymol ;>T|% Oxron{;{\᪋&xxC/uVVCӵ4[ȷ {CI)1ʮ#)@QP%CBU֝OW㮙G.ş6q~_D|+GZ=/uRdsXܑkdu%DΪ=xC ^CXdQj )dp>^wԄ <3iyBE"uAT`-|fCeb/橇OO1b0L?#`cۋo7ܷ Bzp`FD KGU'6^:'>"*wYAI]ڝpNH)Ӯd{ L+lU#-WϮK@qy׿? {xµs.~k> M `b!۔hYu'Z(#H(glB1c_.X!_vK?e<~'7N +ƯQcw<G"J.췄~Om,W:n1ⷯř{W3 pկ Iֶ =(\V jFkBefy8rȘ9EA(TeI@cXM5e}n6':9a @9$Uu85/yȌAh㨵jeʻFٲ,j~ɠoFD{{q:*bFEDi:\2˾~?p}!o?qv/v\5K ns|49 n:v? 'kfd}`ɬd f[ZCWnք_,EJITj1~{M۫ggُ}8ubk.lt(|<)^'LvQosd-I[R 4iS?3cumCL҈uSgjRR/F_t= d{.ql!ilSan 4_|rz|3K*Zx6 wM/Ͼ~oooD^iTvzq[܁:A"5u4pvsX|#%빯~x ys<kgZ\B#Xc/+;nwQS 7;?cx^Z>oe~ &Gj(mm|RN!PmcO >z۪(D3rlaFنN'nqW]~ >@l I&VPuF?~O~6 u"@Z7z8b8>S*g,b:HW+,bΖg4%0?Z(n7|z׼/=\;>T9X@J^oY@POO-?:1-Lv\c@Buy({]e*笃Bz5$6i f=z8YjŝFK/dsE<|>-Ay\~byZ^:jV"1dv:B?SBYgMR`T.#:*r&^oS c}&K>rۂ\R+ H}iܩ}Տ:>BFn)ٱ N7 *jkiK06ޡg9X4^`c&ۗן?LRs` 7,l/z v8u[2 gre򂥃sTO2uA,AXqJE[K`b!rXV<T6 ѧ:;+f:nԧoEfdMI |!i™O-}\ (}<ʕ@O6o04*9r0p%C-3f,$Y(NqlwOtx53|dYxÅ^seK2O@QZ؁uؠx x3w-_?MV,r,1fGB4j,'W??zg is;4n(3=6g/z6&|%>JuJAs<^ 'Fs/{[1r?FO}qoe7e IG2$9VM$2`|3mWpNwzL`C۝s5P(3˵vo fԗjqvNL0vqggOALK&߉GKOsGc{X :m MDp~~v_9W޾ª60l<不 j{udM tާu2+6 j!۶;^s>j(׼/xϿr7X̸Q(Vy$gh>w{?رrG79ٶ(?Fxz~!>ױ6YC++/).xdt\G^ZYەohVsօ@xlOИH|FZzTQ!.{^w&e|_:+{u [X.k.&ЭvFm=2A߾i<gx:"|sh9 "}˻@)J:P()ΒBVc\ٛmTWۻW{/K.SB%C f=R~􍲫@z۸rS=~TY3 :D̸L}v4%[`V x{W Ftnm3ARu_rc4̆˙4`;/0 Q([>4m+Gb~x -@#s>s(2"|sZ9jN찴w ʍsÅb:I۸ #=7ܼ`r6m+ɩA8+NƶXs!#|#7#O=n޳~8oJy!&O#S-# |G)^Z⛊оYߗr}_ 7ֽ=rkSj5Rtkvg\C)$㊀|q_ElLM[x~}Yo~1V-Fb{~MAWDaeN׌%!/\-hT~'W hJ;K:γIOSx9ࢢr."ߡ\}f9M\-%RYgZzXa%ɳR qR/Gs1tzz3/t'?t;|{N`P]A^?LpHu^ܾ·}й2Rm_s(p"q)ك3D/0xuGMXn~!I4rMx,HH*AQ=ht"?cɀp??ƛ9{h0ZkV {3Eb+@@1@~`cҚqnP=#49p:>)L(>{lC(9͟(mWWJ][kj \/#H}W4V_!xE<.?ݟ\S(|lN05! 770H'+{?':>OyOyp*co:{O;zr<mD{ + n/$]eY1FA;bH෇k,3nEψ&+K©|wioʧVKϦ:{t{h*s}. ˽5.v }UŞ}3ǡZ%l';|53<~S\pԩ>xu w! 0)qe/y)x؜v8Zi_xiKyHרDz=-?[?9?+8Fjş2fKd=>v n1Y@D/M#ʯ㚠ЅM`o%]~{\<\#_2M9\itĥ]ÒG=`xBQ{pޮ]Vp}MހiXɌS_k+B rJV~ 7 '7yMZD0<Ú.fX%LlKTXj!cG5/}y<:E[Ua<|<_ 鷮+?yŠf88Hm<ݱE2G3ІL IDATevDRdE"[fK\eCPjxFBG9M^],+Ѕheٛ=rĕGsFӰ+C0 l@BzRp>9| /{*P$ʈ*=q]|y\`=93]D|y|#f,oϙR>4A'"dȯ&Hm 1pR)j S ּ+^KHO6-DUXXJؔtţqes.Oer&84fn0ޮ>*D|ͱC˵T/-49kK@d1]~S7Uf$SF`+5ee:ʂ/oA)j_OuSo 2ԧA56.I'!-|i]FFǥZ+Sc>DRBrSKJ>ؤm$"6m|Q<{6Ej} v,zvƆ-}! <Kpc=|8#xps߾tu<݊j2a`MbЄcdŁQpU#c9y-Z.#L YQb՘(eTWL2CGWeti&oYd{ܳS*$Erx:yT1P()\[8%E=G-[}'F";6b>!D ۟otl4_=ҵh@,֗Rik)[u]Z).Yp#"`tjv-շȥKĴ+'v eF ĦQE dBN.n5V|$P8*RnRZf$Jɣǰ6=qՋō XUmM|!\P6O!G2;;8|-x!>.cA4P7>`<L/Fp,׀IL1k@r<@Ԁ;jʣa(qFS*^DetqէӋf5TiN X^)D._o_Jۗ͛ R~'e$#ia&UFxGv-ЦKR@Q;"g'g& $ܦb[@d%5sJ$y!#^xkGlCUn:59hFtX|݊[azD?%r Uv1@% 4+LYS*ԆHKdUrV!hlb?nMiJ*SK/oZ2 `lDVX_>8tA/F"JR"vߦ38E--X@3Т&X$h(g,aV]Uξh#ǢJN 4ZHdEFhw?6bGIZnU Wj݀wyd~ظo֒:2IKp r% P28`fm܏ RMj+df:;RYH!p|1 4ނvt%  rIQR`#wVE[Ge׊u$e;`hci/KePDOޅ+ː*8mG{sZjL <5)S}ݱfKt?v [;*ݷ)~![xCae /3Ie}nD#}b0+Pndk:4Ӗi,: dD jmjX4fJ>~(\|0.KRUE vXYi_.'(0GVtGnYX tSM|TM+Oy5F҃;cAX?vFߗ07KC+`\g) ݸ:ܑ]یrF17経6 KI"TO_ voSjOz?}z!.`K!< }^һ5b+ͫHC# k[8كY+eC7Tcr1/sDZһYF^>sS*N-8%Ys8-ˠ&mXPM¬@v!KJ*+Mt',I ĺ%1`*3G>C\sxTDeN>sPHa#ޙ)+N}"4t=xOGdJ_Z=*v?#9Q`5Tddy'a\?`7@PU  !}H@8B+11l]jf(z%kcT+Ԝ5VOLiʞ" Z\] OgHP#Eq@UP]eyFm3!,z!}_*Q+>C$/uP'62Ѵ8 aYil͘9N\Yیwz`JQ";1@#Z<2 b/7 h3\P @EeTnjah'gJx|0PTokr,'FSw?u=C.Y,:.g>lUh#*K%`S( LAZH=YML exh: a&\"z=09Ӳ'eVtjrߚ?vaP;`B_A?݂ȼX']tDE#lܩ=vxsYn/dxsgG}6-u~<溶~y%0@'mj_uq/S%wwqŽ]|1|ذ6ؾi?ƶ2j31i!UwVFsR-PE2heb \{>.N/?R>Wc9`TJtxv3Egܨr hDr/d2_`NBH=#AZa)A spׄlM3Mȹѷ)b-b]鈄KL"Zp)F@"'t_NsӵR@"f(=!Ə= Fc &x·𣴒 c8%,Eϲd3"q.Ŏ@!4;_3o\Ċwd-?ʓDNR!頺v_.]wS+$ɭ>MCV<0UR>97r!ؑ@4~wwy-B]ZA9~P]r_eʀ"EF{YrLoza:wXQֽOOc.h*?~J[iPQ^&?>]~E=  fyu7_r~d[usx idic~*$܋xaQ(T#|eӸ E/1qiGxTi*I1E!D`xZ)Nb`I`q:i%ٕқ9fp">oDaUɪt#1C|A41K&U~rzaXhЇfyټmR.6$M=1blte]&Gڌnӌ^dxq(py}U8@o)"&ė#ŠT哫rt°ks܊t\]g7.AK2IT|vs*THx0S]G#Ym&4L)m%>YdxE ۼ͊i#6=Ce\~ʈEO}%Z:>(&qrA؆srjAdc@ & rS{]Ee;Hr!|L}*FgN.l:52Yh^%\+w|--bcx 1@}}]{:픑HE@d8fmg bl,59' "*R!8eh7N֚P=B)9IabQd(^tN8;νm sDHzjܟ8$WH$7 ?h.Wܨ =EI"uǀ& DSďk0-#CΧ{7^;~2V j||F,>~Ŭ%'? PfI-)I1L<kU'i|H?ִszIMBUF:ZV۔tTACG)1z 4'Ah}ν>ly^~z"|'gJL/ID ec5ob@5# x3Wa\:hc^E(\J2*2>mX X%OodlF6b ETQu㍳GJ|g3&ɾV(S Ck)E2cbn)o?1grZn\xG\>Jp]@j"nGN icTG *n-V^ cR ݡ\⏞1E!c}.]5:Z) ʜqvn:z՞^ T&!Y &%9hcy(>~0gMKw"[85xݪϝrqu..-'IF)zHl@sUDKw=YtkJ%<+=HJb#N24J0rlm[vŰ >*`2;@flP1:7|vp}!(hi ԆevM+17tH( $PJ4AG5 ]_vM`Vҗ |lπ.;.O#frIђdӀB@} Ш}"rYP4+{l}C },aYvjbiɔ[b‚gʸ:;1ºf$@S 2&?Yt[Ju 8#A"7}Xbo>w- fK}.2.o/XA*:29^>+ё)³7Ό)FPZqYܶ4<@ЍPOGiI#p8ڥxp׃c l2<*>EaQ 9j"4M!F'{#߇o],c@)|?\n{ a4%Z;8 5H+bHu΄= .BnF9sYc] {k紫qS}/ F$V5ӳqt~p%_Zc9\4Xc$aKd}?} G.vzYzY7/o] m5x_WNسtο0"f?]Z _of3Ɍ`5'75jSN b>2؟t1Ze|xjK/e=[1Fy>z|]&.MSȫ)tP6X3 nSH}o7LKR&[/[SucǍ.TsLm<+g!`=u7]1CQ {Ocӷ肋Pc 7QO⬗)T7'Zb<34xwVoYGy|d2b4ЅRCzpl;@}hwnbFlGGy*: Ih>IK/2}>0Pƈ^Ip){COIr݂ I[UWIѰJ}68Jrʄj6BR&ZuYBMu[~CV-qL#Ḃ\~NV.86N 06IuFhZgC"`'m /_~0XX!`}qqCX<<0&,cdF|qhcF16zh|xޏ6 fQCZWt\V>l&Du>fVJ`#J"սf2nʮ2YQ}zÏ-,Gߺ= v;~G?Q K-% Dp:;d^r =%u .|(yD:> ps yt822LJ8L5x9Ւ2]5 (zU64շQn~! ҟlj>Uĝ`4`؃4:X_UDzd:5ju!zLmn `bM oB[tB`=+#cӶ,n=D{|NE}br|'+:!Y2?u:AB|swEju>7s44L_3Ͳ0Y3_ek\1dL]^۶nf*:XYJ,UZ U++8-81Soٍxr3%fKlh_ziE %Z?­f##e'QGxu?rcQS2K7v~kt|e$-jq?+`p7$+PUaےcilYe$ z~)頨̋d^sߔ܎PQIȜjQ+dfD$^vNA2؛>\.5>$]G!c?FeFNڣD^IiP:hɈZƽxi.9/:K [@H43A >7\y-bŽ 0K(QAzq6NlT yIį #30U;![QRQfx6U1cR;Zb3(Xż&nӍIeMf_ȯ'czv/o9bULuvkCx6{UEdqKxzk`*a!>@MW``(+D`9\iJDOJ˨1/2hӌ)}GΣzuKӊB~a§=YrI"r#[0 fĔՔ"~0.Hu=H0ݫl)PmDWkUHu}Zxa2@&AY!\T+QsZ#:Z@- F qR@lYfmg:3G%ٲ[V U}+355Ҫ|Q @Kj$DK+I:Fl@".-$"PdA)H=;Nc7əf&@ N`AC)'\1/pRD+8\eq!&Jh]4!ӲԵ֌_(#8|mtI@⻵+E,RIQA@@=俩P?)f|ە, vz tbW=64@I!H`!(H֖2⍿ԟhgI6>A?S> RI>U!DGGXff:2po\ى`jO(I94ҏ=fFdR9z\Ԁ(ArJhb 43{OHԲV|:Y~vYZ9C`.Qo}DE%ҔL F"dN`g(iׂ&ZhNSKzMNR 2){`1t0\uDYگo-bFi+;zp4(-Ar2IFQJv-O+/7 U6s6cN{Drf7s 96#([ F/>rW3h=ށmڑ㧦6dİfRRHmi/Ay|1=Vt6EMdu$/l4@TW4$YKOxUuVRل a#MQu#.EQj@|8:ʲ,&aԆdm ;鰒 ^eAݓEAUI"ׂeQWGtr>}(I5 S~m4CiGhD[F/?Hmhk]`0}=.)I--i #G%RB7]RNЊf\BH'Z'/'\ <לM[ʒ|.+qfPYh6+2/r-ȴ)v<.W8XN2t4Y{>Mɛd6<9ZǚٗH2+$ ߐBPtWM,pTELqn;-6n 僺c LCp|̛HdbyiT-RJ-AªWyh1QOv.R;d(-P@HHZYfya-_Phh9xY߂nb T}7}+WA^p hT,OW?1=xY]@52B 垆iPcw9tvNkde=zot\UL?Ll&SWc ˣ3 Uh~C!f>' ;ai~rMr3THubF[oepJ dkGt6 +.TMŃqLyv~Ol(TR_ ͠]^nC>x֔s;4I98%m-K<$%^ hԗCȪ"C["\cg~0>;\Po3񷣹ì)Gr* 'Uljw= 蕢ł6&Rf@&Iճ3㌃Zu ܧ4>Ix\ʶA座Xfx< ߇J6~H|= )_l ^ES<+T8_ˁdd$J ]g|MV}kzd THLmcV?`>,tiwMw@K~I.V/G/欄i)=MUu|Gh>w.yKH 1lL|RCL !rG I7t[!?"y Ѕخ;DB͛Dwγg=U͂dGqo xn޼]4|DY Լ55oscVg\L$=fKD4&E6e]S#%R`409ks nBӴn}6:V"ذHI~r}^/jIRmn#i;/hVhe"ߐ0[;2Vc?'TP;\dʴ9dJl! lמQ39T[}TO:RU QY:}HAgw6}bAoQ,b neR1a5N^;h;k۳-va` #_loCi(hB+=\cfhOM, ٕ!&uL[g#A-+ٌGe%ViT FE$Ȃ,ӺDBOH!ln|$Z(8SD5Vu X;%t$coV% ٨-σ{J4SRS)&uCGcidjhfffQDHnF]("}GQJ;3C6YFmXG 6b'J^4*@|1)WD ę,-"".lEw].2U{i$,G!J IJGPs!Au:2{4%B 9=Q-97]*? F{>uo4K֙qȿ!Y{qwJTNM$)42SC"pvh싵(][3L.XAm᪠B^җ싎VH6( [rd'  QyTuX$; ~Iw<5a;'6ZwopZ:˩xΓCf#P:kBr@BceBJ/ -i*$bզ"djba#8ҷԕ}eF7JS8kTwGN3}-VH˘{6{eS,$hkGNEa8f^ &GϾcr9! Irlv\r|(6,uNTfOfc`#JWꞣxLm<8ȪrY@{"58\kbc/#ܠ#rP߶ l3|j >>0T+ ETJtCy`X=;OT턝$ڄ!ڵ(/lu~= IDATWR'q:%5P3?UKᇿFBlP3CYer3 -kOZ_sD~ȆG#< f*:X}7 ڧor,}?_3a ?}&Růrn"zh+S*J58j?~#8SHREo[9[M|?,U#;l8f M89pll-`f)j!c_>=|SِIN"|d(?J|f_mVN>wkOMU.,#8O@M&v/ۋ=hI$[>MiAZ ;6ҼTR mOS4?WKQhL4=(.w<:;Ds=^MP"X}^,_[QgU a~s{5k2 HSB|r%>ڃ.m%i֐8Y9 &%y%:k Y>ے^ yxpdo |MWκpOቩ.P[P|έ=l;A'(ZW=Xf0JЀX㉚LUkaQ|:@}FZ&%W xySȦ;;z oSG) bo/Ņog`6~Yad+ON4~1_ th>_(PZko.8YˣDZd;qF[6voWH 'BRk᱀Wa$=T`UJ< 94W#oN ħ8t_c%*EcްbKAgaS)ȇƲhFEc 76(nYԢ4P$[YM5IXR8XKEO E 5ؔ::,d!_䣀j{!斆s#m;oTӉ\{oxvظe _;~lW8ٕanJ*&\B+ɵڧvU_y`/_?·?o:|#> |ytC]_~Nc^x¥nI EB;)&?t"uel jKWUm ho_5e{οw ywSaE`Ɲ7wpbu->mcQUcSh;x-wCK݊}J\vS0;[bKYwٔ|c{nCn/`?sG=/v.\}zg#i A"Ů+v@c8Jm7FSrg`NQ V Fy9ib̥63W{_}|' {E}tb * 4dyY[i|Lg#'9M=BSf;ZX\nMIs$Ql5!nҽ18V wW~qxQ࣯_?|m!>}8q1 }".{V: o(n47O`> ,092?W5 Gy:ʃx tOoXOoXe^>+{Bٲ??e 8wS8ވg<Ӷgt1 % }8`<>TXl)ER? ~bOMWZtƯz,I)fl܏Q 5AgATM\I_<b"LbiTJI5j_螕]LCa\zf-rxϷonF}v~x{?vqwwgczt:i=%O_]}K]p!W?%IygVLE+oƭݪV+ʹ-Shzs[+#~tJ|1b!SR5.w,EdZ]yvS9Tt zmn >^'g2OE{ t>#T`s9`p~>Y\Tu=NY}DӌibSOaiAP=]݈kenO u+KɆ=7Ӏ7Nwӻ/=a¦o?bPDbls2\ؓsgTn "k&ZفKfz1'2rf.hIOא#ȘhzIiW5@bIT(& ـ}W3>7cڍG_P` P{b{U>Wm`#9,i[S0h bV"J`z%SXo-u>*2L| Cm|+ypaөZ9 mQ+EU=xN-*2Ѕ5k $Zvlw{hYŇNŵ߬/Њs=`mg`|j2!gRTG -l0A $2'_ہFYFc(%A@}sGKeS=v@flxZmL߶/{Eg_%xoyru'7 _i }!\–.1q}}}vuZ1ȼN;@ s~9ѵQ:]=ܩm<'o7O,˭|xOgp=m =oo4y#^9oSSH~(>~ WbD{X'ۘh Ĉ,_j ,tpҷfq\z)h?R .~Y%:b~=.Y ϋAqmy 6O=6?ZlO`}g whoq[ͦ.\kM*`z!qk8~q˒z4ഷď޶_`mHB~c8iW8%X `Qs)grm s}v ^)p]ӏ.ڂXqbe[4zm.nY3ufȅ;3xns]*9&2]4')S^.2$B]9{#d # CsH9Lyjd:p˩7&FfqvO 0=O| {8NgN|ɇpfߚ\cw+qۆ%&WLb4hOGimOnC%+c{=7:ޛ[VTߵ>=w{陦fD@@Ah0cb^~j&1{/y&j ԨePPT(( H7w9{]jn FO}{װj Zvm'mN `Ry?TB:af?.nyҀHb|#gWxY 5e\[E!z-_mgl}eo.@AN" 9x@UG}Vy |7\6}kqN(|ˏ1;;]ܾvy*|x8&&1LۺC8=g4hNo݅{k𲅛. y֜ޱ#fFF-Fm;7べ`\ |üWA;%U_zfK?[R:W: ;pxɝx*>^8OG8u޾k^Cyoz3lޓmm|&5E?9GkpXŕ 7~yݔi)vYf~:#w7~vh2/id-WrQZmUx\Fstgz桧c -ȢG;v^҉̗{l=N\=?cmp𒿺 D)Q4|p>qLSn?}nmw@1xO_R}>aoe0th-F_G_`L{]A?$tB@jg8BuB4kT0罹8aG83/ D:LyaO% "g67`f,pwk芫Zػ6UM빼 랥ڰ$9gXȌ[T؀ooDwFkiIicf_bR ZQ6 MW s~G lXއ3 ''Mjg9vS=J*'#.w>hx٬:$\{n\'%Ylyȵ2Lmeg_8@}1҇ Ԋ`)2$e0ŅT}켢v \3' Tn@,' 0~ՈLIb8+|~?+45-s=‹Ոk?PB@jeQj3~J\\DY<0k 4Ȃ_,}p77ʁd٢a{RXg-{'̳ZRjf3+}a ⷬL)7RD}82F3f'w]#i] Jo2 z3`,5so x^bȚ Tm;^#elW>3Lb ,p}d<4 えx_ ad`"rɳMJ0=xHLIMyǃD|gdY'ѢT "^bv,f݀PI,;9A)s1OغK,)"nbKOZs|L_rCy5P[jHAr&҈paPw^/b~=||ϑ*wśso $Q)p@IBVGp[[ܤ^߆4%WCHRߙF;X9:Ɯ^idY#`MXU*920"M*8)y$J=2>*ēd hvBoh]$#KP]j[Ȁ,lnvA1g 6C#ީa~x1r7F> 4X~$yGHn$W2. (zG)$B9.{ ]O/Y6di m&S\dkNB)u!G*Y`l ֋dRṖvINŽ+o-EΕԡcu!%wSI[m:hET(Y?+IRH?WhkhWDԜJxdc/12#$'7Yu}jU|"GCeer)TK\ aez8_ob u;(`^!/I [by? h SY9S4 D,{ƕ֣PJ;zճąYŠ/9amyL"uS^ƒV:V(`nY38Cu7PO^k$ d>*|U9Dl[*11G2="o}ܹ 'Ck>Q4@eM@^I'MhhfǡX$,Kn%|EyjQgeG:5"bDNQ>13$*%2R [6NP-`kI|?ʶ9k_,n-}mj1y<&Ljʅpw`83L¯ > m9W6~sS;qӮN׾91=rXMqE )?QЎ3[TZx2z)75t`ۢ tXV+6a]: B-G  lE>7#R}Gvw_sR >qۂW>$?B4"iɒ Gʍu9{7>%ʭ ˙Fa"]BDa*U\IuzD8oMvT)+ @'k:[&F"{n?ny}1zyn~ybY(VBK_2~D8v];:>VyLk \27m̰~uv Y\ ?4L^|M=8?\UklGiS(BI2 y̨kq{-=rY.yARF>1F9*Ϲ]PmxJh^Dt3m%)+A_Λ70t#^lvGiV'_ZٽKW(%Q ldYv]A1tz#<KaēX`fEG'X!(^Jmr  JbaӸbSq8k c)|5fb\vr:#K"T;3lON3#hE`fy˗ogvm VpZWO㓏 s;AWpսiSĢ :O[Д/(#^o^8\1E$/l8a~oNk8wA%XxqHxq3WnF\76$f34]䟫r$n 8Jfm=PXNsѐ'jXX\WII;0%)xC'uZY;PHvXI77Γ:d;ׂD6__~)Vf8pU h `%R|ib`a_0ZnvIAjc *8ď+8)zpY\1Cfw1~zؔ.R>Ĕ`z<8kt6L7pK ~nuxEKq'WQ,~8!g9j,`Zus:f<' *ܻoҿ{E[LG&"v?#ޒ&P̱u5TQBH:@xG,+仐tpp3[Y?jtyn5L`ž}i d/=Pm3@UP<$i+p1qR!%'Ri__i߽W6n hfN`qu\aY @LH >-Gp?ys wLzuU?Hqkw- f+'D~Fjnkf M;Idn_[ߞ4CfB5/Q[؃~q1&U nMukmJo]{R mKU,*NjDI2w$ΊCWiS1IuՋ_+1uuh uS6sR ˆtJ%`ੳ'ైݪl\T9k*OVyMf`db,_y ?_/ zRu;)h}+}hޢC!ΌbnFIŌM9:sXT'_0/Cb.I}=W2|MlW"y|=<x>A|ҔȞ0ehWqMГLP_^C)}L/oR׋«bJyBb!3_PdCb8š#esJp7'{2!oTcY onk돤4@ 6l= :?]2@^`רAJ@: UWcۗpm48fdx:}RqAnޛN.(G?7aפ^3̓9=Sbq % s uEvjڹ>Q0VW>(ggrUQ:dǷ&Us!wlA=gե . ehmGeh5l'ϛ*T'\`I@bm\l;Z_XCt8mgV'Ni?h9~7# 0W7P$-mLa ` }}.n?i)*V&xMkދ2{bJZA*gi|k'E6S?(RCjU;6xj3𢬍˰}46>/M5')n%,XV?!OY[MA/BF;$V-\`Q{N[gI & ˬ@"0M )WJA-a;NjTArZO.xY ;#$8fIcKK#Z;)G=*A&6+qٰhͧU8 .`\?+إ=wqY46n38*0Y޻rMODC+OZ7B^fJY^–SqϽ$[鳗# $_~kPI)<Ųq@s-=[\톎{ٽ bA΁lB)RỎ}XcH(ZwekSo#E'_#=>7u sOňby[-:^6[p4v]عQ8OW[~/\-zY%O\(4GPwþO𴒠o|uYVY|} hqS#'7_.=d'U0(JE >z> _{p1*1o d~%¦(()ՈyYXy0coO1 18gEH\qzEgCei087Z@3LN3GBW9[ߙh}k̎s,&nTUՉ_Cvum'n_˜0ndF1` t~EV~8ɧ^IdR?~0!x`2WNXrYaOf*@Yܲ >/㔅niWpv9}9e&TGLGñEP |GJc rsoX<ARrΦTө W < }B%hm rB @HVZl]~,R bq[#/gUߚ)*S !$Ya;d3:*^HMC`Rl;6Ġ+5_zf*r-XߺSޑ># fqeqZ͇\uĵďJjEKȯK>HB# 7^*9D>V ۖLj| ň-49 !meHm8wʸ/-Lߕ~Zϲo˜4RrI=+i BaII7VBY'QŢZf|'R=74LMqgtnK*^ yֽqh9˖!逻6 RX=yf- D%a[BSCx>p`˓!3g qhr ?P̫XLyv&C%bWFې9UWɍeB9! /]C$O?Dt]ǡ}40p$%V]a?/,mAH^ LOۥcn%PG }="T\sV1EYXE="Q/w1+KV? #" Z$@O[넾Z`'`Fh"ƄJ"T}AoI^{@/DYI-4b0%:Siߞ<4S~,]›?n8̣qD9&i)n^yn|iz<8$tmcU fZL`zX(šEMl˰s"%KsX0&R[&2% +N4yU:s c`w$ G'/x!.r7>q?&lyK[-$ =7®78Z\p\px6̥rT}-0c|e۲է­#o 2v+"&D62i~˂"),x\,g;#||'(lbGjDT9KpN[WGG3?/1i@@__ȩɷVĵA\/Q>kW }uPaqoC=z%C VE8~i3V'xź ^*1Kb,W.d?|~?p< B;Zx'.?m( YRC5kz< ݁|k3eMc@c+qGL 2KXho{נN.E;RjF,}PBy,&v%S3مyگ-7Ppa LuY$@[INUj#ԔpXFPߖy..Q|$IpIg L~Cih*OfD_` ʨ-qq^oˋuE8oD@5!Ԭ̟* $Ѹ|!K{V#6/௣,w6{pjlbBQjBhT*Q[gq+ gƍ?݊o߳@EM%N) ψ; 7f0pwn7|m;\.ŠS6yw +qQ\]: |vA>5hy BNb+_PB5BEF¸'%9>#e Dj2llN9&rfS\bX*7] /mJ'O_`!B1z Fb@$ ;zXј@oÏdu ,- mńJ Tk8tOmw PN% ndN:QXo\$,x #1I0<Q!ZaE-ߚfN4&_ޞ;V_oyTg`Çv5pzfۓv`LpZ?EGϪ#>sB2lIQ0b > us&_bk[vW`pv5'OѬZ 2#S#fՉ@zQ#{2_;e 01xnENLP'շwb|$,\qK`d88d\!ȍ~!Z^+pb;2y໬L^]Pu'H~0&|r4Pw@lP( =}yO˩Q%,=j-I/TpH~L3iwLJ^8mJ}QcUx P{|YL!\8{"co_gQ|n,Ɖ'Ɩ xC!e沋a$WC\E܉nGȌ<K/+d?l 6nu4l[v*;ޝA]P/}n O[Z<xPcA>NOŗ+3j[|?\huhro51P$qNtCпuM2E.]1w^>.mP {CC=8(=ċ=I>f.fO ͻ ] ji,^{2k*ml^Ex#ñqcsZaSSXC3;=5<8c9[af# +]MFX0~-0sɓ)sE,h]P9[k}OlXr,$Ȗ@4⾤_ W>l}U $BDzO &8gг%Q \5A>O}@Sxۓz 6b9:+nT_{BW}!ԟU9I O'9:BJVa} PRGFM<5J* &oY4 5lX <5aXِs<j`#5;m-ɢB .>(tv5}k7=񂠀2,GgiECCpL&`k[4@a_dict(Bmݔt\A05g6OpEXٷOqRAڞНHH2Ƹ90~*?&w0>[J{~2,#q"ڴ 9x5$AFX\b01xj"ߟ?Vmk/m!g69%;qI~iٚ"7Iu%<-b tlp\[:jP ?v?tF[ jJAw}e",ϷrVQ%b)<_GdP7t{g%fSVPeT5{}m#x!P5/v@Cr45cI;x3A, U0LVͷ=9ꙑs,.ly;X9DX5` l˰}"C+UXNjj!!P<%pC_(Se#p D [1ϋP*WI $O=POA|~0a@bF(7Iz_f\͏}|aqX1B`*^t>P*yY|NK6: TY s=m(hwkC}\\X0=⋟bt.T-ӽ<`( $y͘dqXp.-q^j1֍;m}<îj ox@%"j,"WNHWþ~-a?"D䙧;#Xz+FX7?jI_Gvooη3`x3L aʁ*0=Hu |j+򳗫1"/ǝulG2ۡgpz\&݈s!cW46@H9h횴 #Y7"^p#F9qix0'GRN?3ĦC -/,`}OM T!?Bm/ rϗ;5Q G3;&)e]֎-,O%C}ad=ٛWR'$Y&v/ `#z vM؃K&_7* ]%1|AF7uRBnMgm Ru)/}2!9vWmH\v6 j|rzgE%7!>9{ %̀#iLq0 c [gؼ/Ö)3N`UPyb.YW=@`3MsAX(Gb8n:TO0 ڕ⁝) &(q@8DžVNnsUѮvgـ`·~Q8@Qy~FoK0ȓ֏X? o-mh&2O#P IDATp@UƹlC ϑ@[eC~*a0u~ŵnzSB8iY%1x`gw1:ye% L%@oogK*(=P ẖ[/%#u%hP3"JfZ<|F8Loy^+ExA-{2漑E -Շ') }U`a0܈0җð/u tȥ™:yMrAHbpu kƃ_ Ҁ%PDڈ{0 _eDBIބSW' `\*1lAe vΰϞ56k01k0:82i{$.嫼|U}5B XPϿ;WLnISyvq; LJ c\Kɣd#P*?ќz+Vg ȺBVM|f<1 /@QWt!i/qDK76nG"i݌(:ZM /\pN1QJ *,t+ܖJ@2 OQz!Bs ,3"0@ E:d`S-Ɂun7uӡpY)ƶq5'\f_% %!0qqT<ʼqK=8.]4>AuC.+w`MMX能h)#«+,!$,e*DUg|qc# a\΅/wHqo[w\Q5*e8F{~Ӣ#*8kMfoGɏH;sOOr Ȉ?|w1v6ȄLސn>,}܎u_: K5:p_w-~𡐼}ƥ{ tW:"KiWm#;s^؍h޵qޫJQh"ǀώ/ S~`0hƈT,owR#t>D3 tl#1L+xtoMRlޗU"L'P HP쩾 ]nꦧj1a$Ɔ3|o{+F]X{!  h&]D/-⸪LϮ _9ckZ$wcMHD/p6Aaf+xW|}ROˎʟAۃ{\}bY$*"Pp ]0ng&VɅ3`t`XA'2.>Da V\ = *4зI>Qt}.wS7uJ1]L`xcR<5iJ˷;+T"|w a ?![* [P.0K_EYJ=ێG.L_n9aTS3:f%0,(!w>Gj>%#ͺ4\#1Fz ۻ`MMI?閿ib`t~.86k0:c -Z"˟{HoTu`'¢?`'q7uS7RFVQli@O7 ZS< 2Zڇ△7{Ε'j'!VF[!U`Fȱ]0nMzϗx4f5vjB &@=v~RL@:#=jH]0nn:RnnC uH]0nn:RnnC uy\MP;uH]0nn:R<:(?_.`5j59TP);41moXYy֩g;3?tt,*7;.E,AUf1SO-M_F8"eGM`q;qw㨳``a|>glmMxN{QEYz=Q Sm $hb*ۀEy}KO|ifsb%G>'ޡfoQ+~-8߽J|n7pˏ@Zǽ}8lc?o{!|p^7=ݔ߾} ۣx1|1V3FtZc}e/nuH.m'҇D7=c`"E1\߿>ec▯~f'u_~uι2^E|WWSVxоAP陦|NQZeH6c'qgbqڎY 3iŕ/cz ރBxW=y#VQx5>;K^S/-K}fd3n.K aTGpqg;)&c`a]7㇏N &} 8Qrlyv5pDe_Hkz`0fh܂hSS/Y0>o= >MxӢ`Yk`WmA3zdck=_Z5?q=Mɤh'O)jތ/ v &u1!=m}hc߽÷EsL[`0g+/=%g'` pGaks:oq}* t`be}`Kk'mtd1WD܄G\&ם.=ow> @2u?m~WHO_*Xz%-4u@haMo.6֢A3ؽogXS=ܗF6[@zsCK~j{wy>p& VcS~n=)ǽ_G־_@k]7`KpT_fpgNO)m]o;2-LONbrr3h zoN^ɐeMW!N;yz!VZ?8tCv "5{&j/`6w}[sXk7v.m՛~ nx1|ɩXy |j=e803wMlh QmS(?nOIOSCgn`S2 !) ^t)zW`zꇸ9ILu,C1x̫{?{ŵ[[PH r&l06c{sΚuw֚{o޽k^g0&"gH[ձ! "K%u]ݻUj\?w=p\7 5HCXZ:3r5prlZAK;:rWP=Hɼ~< $uI-R/+KAa ]C&w5^EI|%5eg,5X~xBla `$X 0Ap"A܀cA7 X 0Ap"A܀cA7 X 0Ap;^+wp\ -NCtIz=lqN"/fd~E|WaoVPU䧭@4Y1&yՕmfu!d_tԀ:TiGd^QRG9coݽK{}_XC߽H=gwma߅j:U>NXxz nJGlxQ .c8`putB{ݚT{&r榁1 13Ïc{8h0㻯۬D\NgD;69N)aU| #H3w;[L]:cZ8)ԑD;k,÷[5VPǓ5q&Mbpo*67s2I8jh4gж-'7D|5\۵L0=)J i\ԑDl7n74EKT:׶B>,t-P-dncrJ,Aփѓquߚ;)=[~ FE$:zlo/៷ ݅1QT;c­_s}:kgP5q~9S6\j߮9Jw\I |'0Oȇ6PaqqV#c)8m.z-l¶l>?7aod;d]ȵ+D͎jԠlNo"~glGǏ2(hYA:K|EGmM1_7"Y tEaPG ࢭ ~ij XiR…J/FtMfo{i[G`E'3Hۃd&J#1$ a:@UAAK9ܔt9ѻal/Hv-I gopt:qd@Ohšsj MU>JTf<^9PVZk 9K0e(8l9WD# dd}F.],nW?h+M^!} $8PM͹Tuر6p>pq Ns57{ꈞ=}zZ(ooҝ?z."w$˗Բi_wqX5qtvo u%`ه=Hx,dEl٣ &cjHfL̕L {pUcמ啁.~"=$.\N֝|/qJg,`# quo;21k>"+(`-e Xx49; `$X 0Ap"A܀cA7 X 0Ap"A܀cA7 X 0Ap*YLj#Gnr>M/* n=̈lT@o4`-G%9T>hf\)htRr2eh2w-^ORa.+VwZ>6D !6NC^6va1MRIw͆r뿰sY'k= 7Tt9*Y.Io-AE$U$||=QK:gi҃$KSyoUڧu#Zk2ANQ+6NެdL~^AI+$BG6z*7`Aa_a}^Z-7f.nġd'Mv|m6\m(֬`p]U:O.$ <4AY92jThFѪM\So{w7q Vj/P3"jʗٯ^c?Mƽ_Yn@Nѯ$8{GG[܏1J /e)+v-/:E k Lp CM҇3az\*ʃ!_㭔\m!Anܫ"Yu'Ƴ(S!J Jr61/%+F{Vث8#ٯݵSIӜb*1&Ӓ}Gy#27=$#"IO|I#w1͏%1sxT]-9MT7L# l렽BM|?r$Cf? 0007a Sirvv wk9->Ø=";6m>S`-4 |p0V PQtkM3YD#=8g۹&:M$>>LfҎxgA Bx7n Pabc$TL\gxtlྑSFxtX?]t^+>>_Vn!U,v':o 6J~˞R18z |p'z)Jk|O!X 0Ap"A܀cA7 X 0Ap"A܀cA7 X 0Ap"A܀caгX,]Ax, SUU5t: BD ΥKؿ?.J._L^^,s1N8⾃ jooŋ1ZZZ(((@҂… \.rss tb9{,xzzf/A.P"##Ĵ'yyy={'b6QӧO#I]36Ց墽 .p'N-^4ẇAƊp 9BSSNEQPxyy1fƏZ-,$I"88K.gϞ.YQt͈w^dY&!!Jֽ,9t˲LEEttt`2hnnٳh"bbbPTUUqE),,d͚5(yeÇSWWGDDD0gMUUj5kֈp$Z> 9ؾ};ըjt:6 YIOOW^Ayp_s5oNdd$k׮G/guuu|Wtttjkk),,:$Iz[՚&::^" |cVZZZz*UUU̚5i͜9.: IDAT{‹Aqq1gΜWڵk ^n}d,2ׯ_ٳ466rp8\eb ^ЗYlv"//eҥx{{JyBla( ΝctߘHPPzʗ$cb8p7od…}rw=yT:66ۗзc>ms!Xxqbbbƍٳ]vl2q˛Z۷==h41k,(,,u O3qDz6.oooƌìYGUUUGv·RUUEcc#:@"""z%I))):uk׮1th"IL4 Yy___E'*7663g>'} |pV'IAAA= ZV=ʕ+WX,t:$ĉ6lS) "##jb4{ss^r!77 dʔ)DFFjlTTTpqZ(\zI?3vs16g͚(tttPPP@}}=`2(((Ç}TVVӧپ};555̜9󩞠nt:p˄uM b`6`Μ9fv $''Mvv6gϞ ^7mmm\~~2I |p0h4ZV<==$v4 ˖-#))鞽[JJ ?~cǎh>}RXV$Ic[EIҥK݃H^'33'2gN'.\x#F0w\$I]T` 3gΰg3gttt`6 CjL2ӧ!..kkk#?? Ev;7oޤՊ?/_ mmm\t'NP\\ʕ+9s&UUUSŋ3f AAAUa\WWINNf\P|@*SRVVFNN=*nT`XGnJQJKKٱc---Fj5W^Eղf͚{%**Tn֭[Yr%&M⧟~th-[(<nƊ`Z-`0pgɸqؽ{wug}=,X,|}}?>QQQQBdƍfQ455aZ }qqq,X-[pI&MDpp0UUUtRE^tS%=;;;9q׮]SN}pb߾}L<$t:Jd"66//Zw;wˋիW@cߟDzz:Νc=&eZD/˔v;wRXXȰaØ2e *JҞ|ooo&OٶmFb̙b@QD[[[imm+W>ӓq*1cƐ˗4i8q1ǵ^|0.((y1rÇJ$1rHRSS9}4999xxx0ydq*E… ގhf@BB3Htt4'OYfd˖ƊG@@}w5?~ +..fDEEdL&S, sR;w.i&VZEppp/^ /c>mV&_Е*q]{\=ݙۻ{2???BCCziL&FͪUp\ٳ^1-N'𠦦慭Sx:zt\ᐐƍGii) }ټoaRPTݷ$B)<͆辉/%&&h(++u Oė~ cш?EEEtvvu*fr /?>_t^|#QF@vv6YPPlfȐ!}.z4 uuuO=bXeYL^|CĤ$Nʑ#Gucƌ!::^=2r:\v+( }ӓdΟ?O||< Oiee%{aO|s~~~>v]˖ƒ$1qDBCCȑ#8>hbc iҤIֲi&RSS6lZsnw^***f…lG[P"h^7-ȕ;8xX$p=j!oߏ:SNM,geފe~KoBrr~N\:h2,gP˴\)mq '}r^IecMh^OWy/%*y*)h*;@5 Шgܹ=g>IL#Xοpm𡱰}LuhI$kP=m3~?{+3{9mg*? Ǭ_G [1KZ`T2vHǧ4GMq\oU`!e:PL`x_?Aaܷ=lSAt=!m}fzL UJZBaqÌUI!f:a7Z(ΫŘ<(ӯz ǦR oeW`gv]f-gјt#ywVPl ejٛܩ=v:9d!<6X?ZÝC?C߆ʵ?p&z!c1z3?>]2ॵ uTr6ڬ Ǎu֟bwGǒ9}&YQm_ͰW_G3bۈդTH:K*;ė@nGL V߻zk+6'>x`s% Ȃ4str2y[h}C?C߅bޯ>3-Pƭ6.|1htx%-W1x5sDЄؽE?1+䏇V ?C^] 6z|n$12 Ȥ=CܘCc{|01_7"Y (yeO}(EFTH{NÈCA%OlT!n-fj2Mv7/uPuK1mDTUHccUw6%3R8 c፡Z|^5 (8ioWS6 O_C3g߸ǰ,+ c=8ƑӷIoFq'~P]a=jPd'=TʍRcvzx;Wp|Ky)\)X^BѣOµc7Xj?8}D,MziN34ܚ񓷨-6StHV\U+Y7p5VWqU8jMZrTRS{%@)}oO}KRѣGz.YtIʇwSα#ʰiwT9ʱ6cXʊt!(yƪ7y i]bb6GH?%c)x5a^j3O0>` 5Ă <+WPPPŋjv'ׯ_Ͽ˿<0g kI[lv~ p`oQ:TZ4zIix4:8Q'g,8 O5>cN  h-cBcd|/v"+f2.|ONdF'h+4zoYMg_ĸWQWYLD> R\v"XLalXؽ{7WF@{=VGfOe ^ De%} QaN.ޝNSu{;- ɷ_U$obZ՗`2͙xJ`+ao/&gꢘw 0@f) $*_2,[쁿gee1|px-##>`Fe&v6bݒptFԁY BԀʹ/,J݅NPiinњP&dmcg8}ߓofWƪV=Af DNVOl҉Cs1y4`1̘1#F I]b rrr8pAAAXD|2Ӽۏ\:ozlm*M5=P`)קCX85lԆlaiAl 49B{{;3g 233ټytFBVxe>Ǿh ե Z$II_WuӉg0=QĦkadlVY~77s=et/p)*W,x{^*nP$ΣQh[a]MB֪t˭E$\]9H̰bϸn ,, Hzz:]RHLL߻y===ׯ'a`gy;7S˵3jf,ĀbTTnav5͔TPyUt1_\~_~%vkv~~~>YAsi{ ;e{ 7l52L݁,SKZBkC)z j*;lm~}/4cbb(**"%%STTDLL#0Xo 5tE+p[#ON?*;6Gm%KXAtrjC#O#YmuPk2aÛ\#.mWbG sd#c///ٰa HYYٌ=gA<_'V!C IDAT+AW"QU=|Qfda?jg;e^.oTǓnṲ.䎎Ξ=_S{ .~*u˒W sα!W0"5|-`?k-Oj PB8..m۶M||#PQ&K4"v|}jȺ^s+,?<%k` ^C΍vP[dӧ22f:_PJ믿V5V,q 5$5r$B8vOȬ{_}ςritߔT$:t&`s: cX~4>&Oҳ?~!Ƀج)lcQ S_߆٣l;p"od| Ss0!Kxw3g pTϙ;'^f/_~kDMD~^uPv''4SYF} Ay, a…O… yR*|Nel3/C-spzK~#|Hy֎1JW7V wW- V:;wSG~v55mkWN,G`/I@#^88W1 2IΈzz76,#_jO=R6{:q;uYF$ȴ䧒$V;sKE/3{F 0nQFa6y2'OfԨQϹ&~rݵQfǼU29zB+&I+b [7|ZupNlNIKt>xꐱv'9yxEsLY*g̚7|%t !I7扥$E˓BS=iR1_3&T?{dעy뭷oQhŢu18iw̌z}:WNa˧dCvkی3p82qsecY?ocy:u*999Ȳ$I >K>Ci`s0GʻzXHx$.x :ܯ6p3aѲp*'# [yg&{iEϟg̟?&A 0Rp]t=<(NN~PtL=5jaAp3jIԃROBtU Ƃ n@ a,D r'M/hy+1(`եT61 *p<$2F/}H8N, vMё>=|H2U2pd,T{&ZsJ}~]+Zl͵tQWݢ#4z\a*) $:7^ቄ{>ɱ[46=y)nRJz%< P4̧Nx݂70>IX˨$KCAc *@vQSBo,1ze5Pkj+<Ld (m3&";p8 k֠ͩ<Ư;Vjiiiǎ̍nI"B NC7Jr;7@սͲӆ8V흿)ȊC~`5z*qwB*,PJAvt)SSrTQJPtZ@8$*l*Q c[u"0h%bСSW҄dTy !OAD,7 S@4 l"/?^{!;'&(zT!hFce0)lcUQä(8;:Q BP쭴Y5x[j))P:0TU+[h'hc5(2ŋHV3m~h]m449CIE~5.@{w?)\zKHM|7/P[qnR̔7xgv3/>:闁^mT4bojIM] c gʣ*#"6OD*QOMx7[w~2suo"!Jic!U [uG1U:(V3V RHMԨccH7ZkAOXR2r Fb]Edx'57q F㉏"C`Rd #)-]tQҪERJŤPP I%MrS C}"J# {?A[a / *A *)6 VMY EAXL8)]92Nv(* 1Dz8Y*&@ʂj<~_ޛU^]U]K%a 1/ {#fnLļϋyqN\{alcv,YPkڗ?zZDU'Bs/d\>|5 %=4a IȖk,HzI -8q% [$3BLb,;obhIq.Q 3]69\BlL-=~,͊bh<3VVJxОd% t$S}H*gU1z0yB`26FXWOY$6Q&^O9GV,:y3TL0 Gc%$ic33#!q2KVu‚T161eWc2љz;vgIhm&d`|&JM+kQF|K$GH7n$)b9+5T$4xl~9'흵,*#l"%riW6RÓ8]0tiRk1n9eJJ#}]/y۳:XgʌGh,t~3c٩k';W1p̉Ku$MqfbhNl01B4^\ H hjnwJ9@V ||rAcD@vPF"aE&*DBj젮c= #Gt?zV=GBHAREه7^LSiށlj$ mS$dIFe&"@~2&IMC5V'+`BR">>N]@b,-\Zp( tJ`bT=-x,LO{H]%IAV]Է7.|_0o]x'1M$9F_Zr1gxzz<zg8Z]ʒ ]A4/?/f0 ~9׿&L_;z7gvfƍl޼?]]]\wuձw^z)֮]$g;/'|߿/؀Cd%;[fgn EQشi6m`Νs=]yfS1Fbz12b5^$d^v$]+|T&g+ncsy_He8.79I7HshW)ltosA~?nS^2i6]Oɟ2hjJp뭷CeTUX<;t{lٲp8̭zL<0SQRb~w~-Ի<[W |o>ʋ|R# wpEl_/贝lmvɣz1]% G[cZ"痎Ou]444|(ʫ9֛`KS4\%,r='k066F?bo~eBHX䥗^nX,.ŖOfv;9|bcw|kH#?B}=x2Qr2}jbO+|_U < Eѓ;ufI،79uwgc/r[X:Fvyݎ\8̯)WUn`uM\wb6o,"+JF򗿤-[vW_OOMJE:u V.a[0kd#xmY$/L=bhdo>.^RhD z سgv*$[.ka.1Qde ]UB +,^;|x|(0%TXjAS0ۣy~03-@ʑ=<WO񔱞[O<\^B[->҃`VDK?bMۤR)FGGatt\.G +_ 0?Pk&tttw}\.:;;ꢳw\x=[-szIIqNk?Wx#繖8UQ5\uUlٲ\~T*gΘ1o_f$׿ػlKyc{̞YQ1v$*N6c"L~hQrm*<ۜMtXA΃ϽO̓}?yje@K1'ObRzzߡGYn 9]w>Nm>8x2W^addP(iAz{{I&r98X~=~||#h#Zk)?3fm|sLwɽ0?K6W R,y衇KltuuqСfq%,}rJA.`inD+[p|Rٿۿ購SXoV(^޽{ٶmo><4?!v 6qFEa޽\xA)`62A<=Ů߽uh5?槏A-ߙb@\~d7L{pYcK#>yg\/:sNpl:v믿\8&ebKGGG@*dK=1>w%}Oam b+S066F0drrr50::z\ns5pA&'' |ޱdRi;6N3.3ov,e8c 3L,beMwŎXsÆ ٳ/}կ~ӹ^.waΝlٲIS[OO 83\ )yJ`;v|Ha%;pa"skd!Gso~ +i&d2'm6>$W_}5}}}@$97}БbÒwyrVIDAThƃd)$3-  1MT*Eww7c{1t}y/CUUndY7+Hya&,]\fC?R4YMs9U7syWD"\plݺu)433C$aa^}Oo [GIm=Z^|I07o^C^\brr myWZ>~W5wMkc?CJ%C:>}@Igۃbm;o“MF"nݺ===s=+LLLfjZr-g vj>6pEexqm;_j:{i_*WGu&ٲe2P( [rwEvp]N2guPb/<7Wm;j@7ea3ʾ}صkw}7=wq=W]uէ6g+oq4$IbÆ VBifIlܸD"gtՉ`qܢg3"B` X VB`P=bB T!!z!"Y 0 a??!mJp~S:`R 0R #fHLI @'35Tf.zir%lr Q |xx~-p@R2Ce@x ᮧَJ %fyd6O)N:OQe֬cS#7+,e-Gtr%**nU#Ŏ`|,F$}N*($Y,Rc*;ΣerbSmNv)'a)$DNjki!==x^BQ$lfZ|efm4Έ0v,YdֹLBlp`239*O M=c&k#P硹i0 fr4cU$Yr0dȖ '( (Nj,I 1 LO@C/P28Z"K`9Szf%EJGmˆM4W@MJD hmIE75榦(itJ,IV+fn9ʥ2j"d񱦻(H㳡\>|5 %=4a IȖk,HzI -8q% [$_ly"LJrjDWs fFGOjy>Ƨ8|x ZZ~ªbR*B+lXc۱INMTԷ&S5>HNY)h "CCۻḣ, D?Qu܊Yf0J b:Cako[1u_ 4xj0!)@{#zzZ B:?)Td JECm /{ՙT161eQ,\]Dg;؝u'M"Ȓ"'4袧>Ȥ(:x1gI$.t5-0誟5sLtN{oeO姏O(1 1M9jYL (i)(K&: e4N 2u!8IfR\r $RGh >WL*܋SDBM ; ,C 3>L'r ݐPe gr"\5z;Zt9 őMBN|A!:T@ s(a';=FkS{"L]GV$Cǔt,,y2AzY>쬆BEcU$ BrbpBQ&UJ;˔ cVZ KcK/JѱkԨU336dG[HV?=2S$ݝ2f 1QW׌ŊdR  ٺ#jrI)>TVFf4iZHy2dRN|$Jx6Ѧ+(e0%E |w#L1/a4YfKvZghmU 1sRxIӇh' RбU0 eC Z7֬k!<1u1Tt Nms=V#X UEFre19J T^nr2Ĥ3 TXۆ(URXeWc#.8jd7YJ*٩qYNl ⲣ$Sj;IHaN?Ajj`XZ ؔ<"mx) 9$^:]@rCLʩ(3Ž4rgBhxI t7znP֊0n/ìP6`af$݇5%uߋ|"߄4 iLIEX*`X}-WC`Z=xJ.SiQ0=ɵFό!HwVOW_=^"ɐJ@] T01 m}t-*n!F8FT;D7 LI pPS®B)" E njʛJ 8eRNKHWZ15;"F!NJөJ X05 -aJ# ~FxކL|F%ХVFmglcaO(h4rGe.&cVRAb y!6D:zmYfV\>J%g&#dz6TS B 1̅[ZmTg HHih <kw\*e?4Hf8׿hJ E6D yCk¡$7Hwp`bT=-x,LO{Htxtr<`=0sv+fqlhgG1fUj%pbxcC'+0ӌ̤)( GYrE1:=Y'Vl4O[\|ٔf,i%Hoq4%`ua6F)ducf|YfUlҙ\va$ IN`ew20`sV]:DD%_SBW]))DŽՋqUc@ X1Uc@ X1Uc@ X1Uc@ X1Uc@ X1U@M!X :t^{h4JCC[negX9YB}G&9i/պ%;]4sv /.۶mcÆ ayt]gÆ gx,oc9Of߾}ΦMN3Wrlm,3HWʗ.i&'*;,943!CaRK^-͙fߣ?a{~ڿu|e׮]7 ~ `\wuHG|{Iv|rMX)XP%4׾v47n?ie4# -Fz:kA3=/xF|i|qޘ~̻O,kWl"X.|Mbڑ{$ǸKYZQm?s>#x<~ÇF{+L㭷.; %V?+.ƅBJ;<سEfe{ +*Ru?ƍ袋NFqa{4/įz>o>ʋ|R# wpEp'K.} =&]R:`Kd8xxYw̝_fY v wqg:_M?zGvOX/<%?-he nV)+*VA?4mT[2 f#S[X}\^c~t%!$T'1)B(U̧KVj;.Λa12S/igdʊ3Ê_ݻ?u<<;p0g8xm~@SHl宣%D/v[y, ȩuq5,;_?*SiyJv໕kn*o߾۷?IӞNEk0E[{v#EO2/?^V=Kyxh۩s۱*&bB@X$R^% p$L!HlGwwgAPkSicoևOgwq<@V륍Xx}2y eIQ*jŻ~5yQ* mKIgۃbm;o“MF2_l6{O;f,|9+Cc@jUb@pQb,B` X VB` X VBRPl~X#P%blRO0ˡ8Fv5(DFO9us7O3<1#["%}1R2B17rPB&"U11SŊr/L4#)Nf9 ӪXaKJqL3XhU!*a lPHvL: EUN2eD+dRNM} ~2I*0) L*A #ߟF<@inF0(ƣd Vhi£謰S%b (:%Rt1pC0R8 g/Ͷ<)r"eɊ}j4wScf(dK!BZ+`hoæH4Jf*E3RLKDē͓&lwtTKcu7m}d0 lA $EF2LDXk"ӌ[94J(YNCo&KQp㳡\>|5 %=4a IȖk,HzI -8q% [$1nZZ4c$*nɀ^q' M*ifmjPBXQTRRZ1xq R4$f *Rb?dUJ_gr&OQ`@ R0TG/-}J6F`#= ( L .me3v:&MdR^g0(:Xux{pybDe  Pq^-C]s>5–Eu105mJ-}Djzto3rLwcLND˕ZoG12gQɴ߃O6(D'(ac.E7vdaح(Ƈ8YPWB"cF^xx%d5eaz4vᏏ2n$)%&ZcFvZghmU 1sRxIӇh'CŻf𴓞^?bJ&/]aKjzX0RkC 8A r%RI =HҲ]7H~C>Z]v\<}9e Mfr?vU !2&T@ZfM]O Æ(aa [ V'U"&xvDFH9ڐoH{m.aU"SBQ%T2T%dZ-RbBvxemt4?rlWRT=9LCG+ޅ $ہ#qbb ŮY$Z7t-C8D:Q%0K1B*< h=F$[DwH"Fqh4*T$D좵w 89bl|OWIRJmLY m s+oQ%Hx/9n *@@  *@@  *@@  *@@  *@@ /n+oq!YZ-gnIENDB`indicator-china-weather/.gitignore0000664000175000017500000000070113644025322016160 0ustar fengfeng# C++ objects and libs *.slo *.lo *.o *.a *.la *.lai *.so *.dll *.dylib # Qt-es object_script.*.Release object_script.*.Debug *_plugin_import.cpp /.qmake.cache /.qmake.stash *.pro.user *.pro.user.* *.qbs.user *.qbs.user.* *.moc moc_*.cpp moc_*.h qrc_*.cpp ui_*.h *.qmlc *.jsc Makefile* *build-* # Qt unit tests target_wrapper.* # QtCreator *.autosave # QtCreator Qml *.qmlproject.user *.qmlproject.user.* # QtCreator CMake CMakeLists.txt.user* indicator-china-weather/README.md0000664000175000017500000000166513644002607015462 0ustar fengfeng# indicator-china-weather The weather data are from the heweather API s6 version. ![](./doc/weather_zh_CN.png) ### Author's Home Page [Eight Plus →](https://eightplus.github.io/) ### v1.0 test url + http://service.ubuntukylin.com:8001/weather/api/1.0/observe/101250101/ + http://service.ubuntukylin.com:8001/weather/api/1.0/heweather_forecast/101250101/ + http://service.ubuntukylin.com:8001/weather/pingnetwork/ + http://service.ubuntukylin.com:8001/weather/pinginformation/ ### v2.0 test url + http://service.ubuntukylin.com:8001/weather/api/2.0/heweather_observe_s6/101250101 + http://service.ubuntukylin.com:8001/weather/api/2.0/heweather_forecast_s6/101250101 ### Internationalization 1. lupdate indicator-china-weather.pro 2. linguist translation/indicator-china-weather_zh_CN.ts 3. lrelease indicator-china-weather.pro ### Lintian lintian -i -EvIL +pedantic --verbose ../indicator-china-weather_3.0.0_amd64.changes