# /**********************************************************************************************
# * Key Format: 
# * 
# * 	 For level 1 data, the key is the ISO3166-2 code. An ISO3166-2 code is composed as follows: 
# * a two letter country code followed by up to three alphanumeric characters for the level 1 administration.
# *
# * 	 For level 2 data, the key is the ISO3166-2 code followed by six digits. The leftmost two digits indicate
# * the level 1 container of a level 2 administration (i.e. California is a level 1 container for Orange County
# * which is a level 2 administration).  The two digits were taken from a lexicographic sorting of all the
# * level 1 administrations within a country. Similarly, the four leftmost digits indicate a level 2 administration.
# * Again, these four digits are an index into the lexicographic sorting of all level 2 administrations within 
# * a level 1 administration. 
# ************************************************************************************************/

# ZAMBIA_names.properties # Level 0
ZMB = Zambia

# Level 1 (admin 1 = e.g., state)
ZM-02 = Central
ZM-08 = Copperbelt
ZM-03 = Eastern
ZM-04 = Luapula
ZM-09 = Lusaka
ZM-06 = North Western
ZM-05 = Northern
ZM-07 = Southern
ZM-0 = Western

# Level 2 (admin 2 = e.g., country)
# Generated key details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090004 = KAPUTA ). 
ZM-05-G090004 = Kaputa
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090007 = MBALA ). 
ZM-05-G090007 = Mbala
# Generated key Details :  Level 1 ( ZM-04 = LUAPULA ). Level 2 ( 060004 = NCHELENGE ). 
ZM-04-G060004 = Nchelenge
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090003 = ISOKA ). 
ZM-05-G090003 = Isoka
# Generated key Details :  Level 1 ( ZM-04 = LUAPULA ). Level 2 ( 060001 = KAWAMBWA ). 
ZM-04-G060001 = Kawambwa
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090009 = MPOROKOSO ). 
ZM-05-G090009 = Mporokoso
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090005 = KASAMA ). 
ZM-05-G090005 = Kasama
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090002 = CHINSALI ). 
ZM-05-G090002 = Chinsali
# Generated key Details :  Level 1 ( ZM-04 = LUAPULA ). Level 2 ( 060003 = MWENSE ). 
ZM-04-G060003 = Mwense
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090006 = LUWINGU ). 
ZM-05-G090006 = Luwingu
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040002 = CHAMA ). 
ZM-03-G040002 = Chama
# Generated key Details :  Level 1 ( ZM-04 = LUAPULA ). Level 2 ( 060002 = MANSA ). 
ZM-04-G060002 = Mansa
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090001 = CHILUBI ). 
ZM-05-G090001 = Chilubi
# Generated key Details :  Level 1 ( ZM-04 = LUAPULA ). Level 2 ( 060005 = SAMFIYA ). 
ZM-04-G060005 = Samfiya
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080004 = MWINILUNGA ). 
ZM-06-G080004 = Mwinilunga
# Generated key Details :  Level 1 ( ZM-05 = NORTHERN ). Level 2 ( 090008 = MPIKA ). 
ZM-05-G090008 = Mpika
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080005 = SOLWEZI ). 
ZM-06-G080005 = Solwezi
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040005 = LUNDAZI ). 
ZM-03-G040005 = Lundazi
# Generated key Details :  Level 1 ( ZM-02 = CENTRAL ). Level 2 ( 010005 = SERENJE ). 
ZM-02-G010005 = Serenje
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030001 = CHILILBOMBWE ). 
ZM-08-G030001 = Chililbombwe
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030002 = CHINGOLA ). 
ZM-08-G030002 = Chingola
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030007 = NDOLA RURAL ). 
ZM-08-G030007 = Ndola Rural
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030006 = MUFULIRA ). 
ZM-08-G030006 = Mufulira
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080001 = KABOMPO ). 
ZM-06-G080001 = Kabompo
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030003 = KALULISHI ). 
ZM-08-G030003 = Kalulishi
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030004 = KITWE ). 
ZM-08-G030004 = Kitwe
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030008 = NDOLA URBAN ). 
ZM-08-G030008 = Ndola Urban
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080002 = KASEMPA ). 
ZM-06-G080002 = Kasempa
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080003 = MUFUMBWE ). 
ZM-06-G080003 = Mufumbwe
# Generated key Details :  Level 1 ( ZM-08 = COPPERBELT ). Level 2 ( 030005 = LUANSHYA ). 
ZM-08-G030005 = Luanshya
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040003 = CHIPATA ). 
ZM-03-G040003 = Chipata
# Generated key Details :  Level 1 ( ZM-06 = NORTH WESTERN ). Level 2 ( 080006 = ZAMBEZI ). 
ZM-06-G080006 = Zambezi
# Generated key Details :  Level 1 ( ZM-02 = CENTRAL ). Level 2 ( 010003 = MKUSHI ). 
ZM-02-G010003 = Mkushi
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040006 = PETAUKE ). 
ZM-03-G040006 = Petauke
# Generated key Details :  Level 1 ( ZM-02 = CENTRAL ). Level 2 ( 010001 = KABWE RURAL ). 
ZM-02-G010001 = Kabwe Rural
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130003 = LUKULU ). 
ZM-0-G130003 = Lukulu
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040001 = CHADIZA ). 
ZM-03-G040001 = Chadiza
# Generated key Details :  Level 1 ( ZM-03 = EASTERN ). Level 2 ( 040004 = KATETE ). 
ZM-03-G040004 = Katete
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130002 = KAOMA ). 
ZM-0-G130002 = Kaoma
# Generated key Details :  Level 1 ( ZM-02 = CENTRAL ). Level 2 ( 010004 = MUMBWA ). 
ZM-02-G010004 = Mumbwa
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130001 = KALABO ). 
ZM-0-G130001 = Kalabo
# Generated key Details :  Level 1 ( ZM-02 = CENTRAL ). Level 2 ( 010002 = KABWE URBAN ). 
ZM-02-G010002 = Kabwe Urban
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130004 = MONGU ). 
ZM-0-G130004 = Mongu
# Generated key Details :  Level 1 ( ZM-09 = LUSAKA ). Level 2 ( 070002 = LUSAKA RURAL ). 
ZM-09-G070002 = Lusaka Rural
# Generated key Details :  Level 1 ( ZM-09 = LUSAKA ). Level 2 ( 070001 = LUANGWA ). 
ZM-09-G070001 = Luangwa
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110007 = NAMWALA ). 
ZM-07-G110007 = Namwala
# Generated key Details :  Level 1 ( ZM-09 = LUSAKA ). Level 2 ( 070003 = LUSAKA URBAN ). 
ZM-09-G070003 = Lusaka Urban
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130005 = SENANGA ). 
ZM-0-G130005 = Senanga
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110005 = MAZABUKA ). 
ZM-07-G110005 = Mazabuka
# Generated key Details :  Level 1 ( ZM-0 = WESTERN ). Level 2 ( 130006 = SESHEKE ). 
ZM-0-G130006 = Sesheke
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110008 = SIAVONGA ). 
ZM-07-G110008 = Siavonga
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110006 = MONZE ). 
ZM-07-G110006 = Monze
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110002 = GWEMBE ). 
ZM-07-G110002 = Gwembe
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110003 = KALOMO ). 
ZM-07-G110003 = Kalomo
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110001 = CHOMA ). 
ZM-07-G110001 = Choma
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110009 = SINAZONGWE ). 
ZM-07-G110009 = Sinazongwe
# Generated key Details :  Level 1 ( ZM-07 = SOUTHERN ). Level 2 ( 110004 = LIVINGSTONE ). 
ZM-07-G110004 = Livingstone
                