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

# EGYPT_names.properties # Level 0
EGY = Egypt

# Level 1 (admin 1 = e.g., state)
EG-FRG = Frontier Governates
EG-LOE = Lower Egypt
EG-UPE = Upper Egypt
EG-URG = Urban Governates

# Level 2 (admin 2 = e.g., country)
# Generated key details :  Level 1 ( EG-FRG = FRONTIER GOVERNATES ). Level 2 ( 210004 = MATRUH ). 
EG-FRG-G210004 = Matruh
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240009 = KAFR-EL-SHEIKH ). 
EG-LOE-G240009 = Kafr-El-Sheikh
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240008 = DUMYAT (DAMIETTA) ). 
EG-LOE-G240008 = Dumyat (Damietta)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240002 = AL DAQAHLIYAH (DAKAHLIA) ). 
EG-LOE-G240002 = Al Daqahliyah (Dakahlia)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240001 = AL BUHAYRAH (BEHERA) ). 
EG-LOE-G240001 = Al Buhayrah (Behera)
# Generated key details :  Level 1 ( EG-URG = URBAN GOVERNATES ). Level 2 ( 300001 = AL ISKANDARIYAH (ALEX.) ). 
EG-URG-G300001 = Al Iskandariyah (Alex.)
# Generated key details :  Level 1 ( EG-FRG = FRONTIER GOVERNATES ). Level 2 ( 210005 = SHAMAL SINA (NORTH SINAI) ). 
EG-FRG-G210005 = Shamal Sina (North Sinai)
# Generated key details :  Level 1 ( EG-URG = URBAN GOVERNATES ). Level 2 ( 300004 = BUR SAID (PORT SAID) ). 
EG-URG-G300004 = Bur Said (Port Said)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240007 = ASH SHARQIYAH (SHARKIA) ). 
EG-LOE-G240007 = Ash Sharqiyah (Sharkia)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240003 = AL GHARBIYAH (GHARBIA) ). 
EG-LOE-G240003 = Al Gharbiyah (Gharbia)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240006 = AS ISMAILIYAH (ISMAILIA) ). 
EG-LOE-G240006 = As Ismailiyah (Ismailia)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240004 = AL MINUFIYAH (MENOUFIA) ). 
EG-LOE-G240004 = Al Minufiyah (Menoufia)
# Generated key details :  Level 1 ( EG-LOE = LOWER EGYPT ). Level 2 ( 240005 = AL QALYUBIYAH (KALYOUBIA) ). 
EG-LOE-G240005 = Al Qalyubiyah (Kalyoubia)
# Generated key details :  Level 1 ( EG-URG = URBAN GOVERNATES ). Level 2 ( 300002 = AL QAHIRAH (CAIRO) ). 
EG-URG-G300002 = Al Qahirah (Cairo)
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290002 = AL JIZAH (GIZA) ). 
EG-UPE-G290002 = Al Jizah (Giza)
# Generated key details :  Level 1 ( EG-URG = URBAN GOVERNATES ). Level 2 ( 300003 = AS SUWAYS (SUEZ) ). 
EG-URG-G300003 = As Suways (Suez)
# Generated key details :  Level 1 ( EG-FRG = FRONTIER GOVERNATES ). Level 2 ( 210003 = JANUB SINA (SOUTH SINAI) ). 
EG-FRG-G210003 = Janub Sina (South Sinai)
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290001 = AL FAYYUM (FAYOUM) ). 
EG-UPE-G290001 = Al Fayyum (Fayoum)
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290006 = BENI SUWAYF (BENI-SUEF) ). 
EG-UPE-G290006 = Beni Suwayf (Beni-Suef)
# Generated key details :  Level 1 ( EG-FRG = FRONTIER GOVERNATES ). Level 2 ( 210001 = AL BAHR/AL AHMAR (REDSEA) ). 
EG-FRG-G210001 = Al Bahr/al Ahmar (Redsea)
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290003 = AL MINYA (MENIA) ). 
EG-UPE-G290003 = Al Minya (Menia)
# Generated key details :  Level 1 ( EG-FRG = FRONTIER GOVERNATES ). Level 2 ( 210002 = AL WADI/AL JADID ). 
EG-FRG-G210002 = Al Wadi/al Jadid
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290005 = ASYIUT ). 
EG-UPE-G290005 = Asyiut
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290008 = SUHAJ ). 
EG-UPE-G290008 = Suhaj
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290007 = QINA ). 
EG-UPE-G290007 = Qina
# Generated key details :  Level 1 ( EG-UPE = UPPER EGYPT ). Level 2 ( 290004 = ASWAN ). 
EG-UPE-G290004 = Aswan
