# /**********************************************************************************************
# * 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. 
# ************************************************************************************************/

# GUINEA_names.properties # Level 0
GIN = Guinea

# Level 1 (admin 1 = e.g., state)
GN-KA = Kankan
GN-KD = Kindia
GN-LA = Labe
GN-NZ = Nzerekore

# Level 2 (admin 2 = e.g., country)
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210004 = KOUNDARA ). 
GN-LA-G210004 = Koundara
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140008 = SIGUIRI ). 
GN-KA-G140008 = Siguiri
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210007 = MALI ). 
GN-LA-G210007 = Mali
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210002 = GAOUAL ). 
GN-LA-G210002 = Gaoual
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140002 = DINGUIRAYE ). 
GN-KA-G140002 = Dinguiraye
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210003 = KOUBIA ). 
GN-LA-G210003 = Koubia
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210010 = TOUGE ). 
GN-LA-G210010 = Touge
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210006 = LELOUMA ). 
GN-LA-G210006 = Lelouma
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210005 = LABE ). 
GN-LA-G210005 = Labe
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160002 = BOKE ). 
GN-KD-G160002 = Boke
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140007 = MANDIANA ). 
GN-KA-G140007 = Mandiana
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140006 = KOUROUSSA ). 
GN-KA-G140006 = Kouroussa
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160008 = TELIMELE ). 
GN-KD-G160008 = Telimele
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210009 = PITA ). 
GN-LA-G210009 = Pita
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210008 = MAMOU ). 
GN-LA-G210008 = Mamou
# Generated key details :  Level 1 ( GN-LA = LABE ). Level 2 ( 210001 = DALABA ). 
GN-LA-G210001 = Dalaba
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140001 = DABOLA ). 
GN-KA-G140001 = Dabola
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160001 = BOFFA ). 
GN-KD-G160001 = Boffa
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140004 = KANKAN ). 
GN-KA-G140004 = Kankan
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160006 = FRIA ). 
GN-KD-G160006 = Fria
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140003 = FARANAH ). 
GN-KA-G140003 = Faranah
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160007 = KINDIA ). 
GN-KD-G160007 = Kindia
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160004 = DUBREKA ). 
GN-KD-G160004 = Dubreka
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160003 = COYAH ). 
GN-KD-G160003 = Coyah
# Generated key details :  Level 1 ( GN-KA = KANKAN ). Level 2 ( 140005 = KEROUANE ). 
GN-KA-G140005 = Kerouane
# Generated key details :  Level 1 ( GN-KD = KINDIA ). Level 2 ( 160005 = FORECARIAH ). 
GN-KD-G160005 = Forecariah
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280003 = KISSIDOUGOU ). 
GN-NZ-G280003 = Kissidougou
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280001 = BEYLA ). 
GN-NZ-G280001 = Beyla
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280002 = GUECKEDOU ). 
GN-NZ-G280002 = Gueckedou
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280005 = MACENTA ). 
GN-NZ-G280005 = Macenta
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280006 = NZEREKORE ). 
GN-NZ-G280006 = Nzerekore
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280004 = LOLA ). 
GN-NZ-G280004 = Lola
# Generated key details :  Level 1 ( GN-NZ = NZEREKORE ). Level 2 ( 280007 = YOMOU ). 
GN-NZ-G280007 = Yomou
