#!/usr/bin/perl
#-*-perl-*-
#
# convert between 2-letter and 3-letter language codes
#
# USAGE: ./iso639.pl [-e|-f] [langcode]*
#
# convert to 3-letter-code if 2-letter code is given and vice versa
# -2 ... print 2-letter code (even if the input is a 2-letter code)
# -3 ... print 3-letter code (even if the input is a 3-letter code)
# -e ... print English name
# -f ... print French name
#
# TODO: support conversion from 2-letter+regional code
#       (now regional code is simply deleted)

use vars qw($opt_e $opt_f);
use Getopt::Std;
getopts('23ef');



my %iso639three2two = (

aar => 'aa',
abk => 'ab',
afr => 'af',
aka => 'ak',
alb => 'sq',
amh => 'am',
ara => 'ar',
arg => 'an',
arm => 'hy',
asm => 'as',
ava => 'av',
ave => 'ae',
aym => 'ay',
aze => 'az',
bak => 'ba',
bam => 'bm',
baq => 'eu',
bel => 'be',
ben => 'bn',
bih => 'bh',
bis => 'bi',
bos => 'bs',
bre => 'br',
bul => 'bg',
bur => 'my',
cat => 'ca',
cha => 'ch',
che => 'ce',
chi => 'zh',
chu => 'cu',
chv => 'cv',
cor => 'kw',
cos => 'co',
cre => 'cr',
cze => 'cs',
dan => 'da',
div => 'dv',
dut => 'nl',
dzo => 'dz',
eng => 'en',
epo => 'eo',
est => 'et',
ewe => 'ee',
fao => 'fo',
fij => 'fj',
fin => 'fi',
fre => 'fr',
fry => 'fy',
ful => 'ff',
geo => 'ka',
ger => 'de',
gla => 'gd',
gle => 'ga',
glg => 'gl',
glv => 'gv',
gre => 'el',
grn => 'gn',
guj => 'gu',
hat => 'ht',
hau => 'ha',
heb => 'he',
her => 'hz',
hin => 'hi',
hmo => 'ho',
hun => 'hu',
ibo => 'ig',
ice => 'is',
ido => 'io',
iii => 'ii',
iku => 'iu',
ile => 'ie',
ina => 'ia',
ind => 'id',
ipk => 'ik',
ita => 'it',
jav => 'jv',
jpn => 'ja',
kal => 'kl',
kan => 'kn',
kas => 'ks',
kau => 'kr',
kaz => 'kk',
khm => 'km',
kik => 'ki',
kin => 'rw',
kir => 'ky',
kom => 'kv',
kon => 'kg',
kor => 'ko',
kua => 'kj',
kur => 'ku',
lao => 'lo',
lat => 'la',
lav => 'lv',
lim => 'li',
lin => 'ln',
lit => 'lt',
ltz => 'lb',
lub => 'lu',
lug => 'lg',
mac => 'mk',
mah => 'mh',
mal => 'ml',
mao => 'mi',
mar => 'mr',
may => 'ms',
mlg => 'mg',
mlt => 'mt',
mol => 'mo',
mon => 'mn',
nau => 'na',
nav => 'nv',
nbl => 'nr',
nde => 'nd',
ndo => 'ng',
nep => 'ne',
nno => 'nn',
nob => 'nb',
nor => 'no',
nya => 'ny',
oci => 'oc',
oji => 'oj',
ori => 'or',
orm => 'om',
oss => 'os',
pan => 'pa',
per => 'fa',
pli => 'pi',
pol => 'pl',
por => 'pt',
pob => 'pt_BR',
pus => 'ps',
que => 'qu',
roh => 'rm',
rum => 'ro',
run => 'rn',
rus => 'ru',
sag => 'sg',
san => 'sa',
scc => 'sr',
scr => 'hr',
sin => 'si',
slo => 'sk',
slv => 'sl',
sme => 'se',
smo => 'sm',
sna => 'sn',
snd => 'sd',
som => 'so',
sot => 'st',
spa => 'es',
srd => 'sc',
ssw => 'ss',
sun => 'su',
swa => 'sw',
swe => 'sv',
tah => 'ty',
tam => 'ta',
tat => 'tt',
tel => 'te',
tgk => 'tg',
tgl => 'tl',
tha => 'th',
tib => 'bo',
tir => 'ti',
ton => 'to',
tsn => 'tn',
tso => 'ts',
tuk => 'tk',
tur => 'tr',
twi => 'tw',
uig => 'ug',
ukr => 'uk',
urd => 'ur',
uzb => 'uz',
ven => 've',
vie => 'vi',
vol => 'vo',
wel => 'cy',
wln => 'wa',
wol => 'wo',
xho => 'xh',
yid => 'yi',
yor => 'yo',
zha => 'za',
zul => 'zu',
sqi => 'sq',
hye => 'hy',
eus => 'eu',
mya => 'my',
zho => 'zh',
ces => 'cs',
nld => 'nl',
fra => 'fr',
kat => 'ka',
deu => 'de',
ell => 'el',
isl => 'is',
mkd => 'mk',
mri => 'mi',
msa => 'ms',
fas => 'fa',
ron => 'ro',
srp => 'sr',
hrv => 'hr',
slk => 'sk',
bod => 'bo',
cym => 'cy'
    );


my %iso639two2three = (

aa => 'aar',
ab => 'abk',
ae => 'ave',
af => 'afr',
ak => 'aka',
am => 'amh',
an => 'arg',
ar => 'ara',
as => 'asm',
av => 'ava',
ay => 'aym',
az => 'aze',
ba => 'bak',
be => 'bel',
bg => 'bul',
bh => 'bih',
bi => 'bis',
bm => 'bam',
bn => 'ben',
# bo => 'bod',
bo => 'tib',
br => 'bre',
bs => 'bos',
ca => 'cat',
ce => 'che',
ch => 'cha',
co => 'cos',
cr => 'cre',
# cs => 'ces',
cs => 'cze',
cu => 'chu',
cv => 'chv',
# cy => 'cym',
cy => 'wel',
da => 'dan',
# de => 'deu',
de => 'ger',
dv => 'div',
dz => 'dzo',
ee => 'ewe',
el => 'ell',
# el => 'gre',
en => 'eng',
'en_GB' => 'eng',
'en' => 'eng',
eo => 'epo',
es => 'spa',
et => 'est',
eu => 'baq',
# eu => 'eus',
# fa => 'fas',
fa => 'per',
ff => 'ful',
fi => 'fin',
fj => 'fij',
fo => 'fao',
# fr => 'fra',
fr => 'fre',
fy => 'fry',
ga => 'gle',
gd => 'gla',
gl => 'glg',
gn => 'grn',
gu => 'guj',
gv => 'glv',
ha => 'hau',
he => 'heb',
hi => 'hin',
ho => 'hmo',
hr => 'hrv',
# hr => 'scr',
ht => 'hat',
hu => 'hun',
hy => 'arm',
hy => 'hye',
hz => 'her',
ia => 'ina',
id => 'ind',
ie => 'ile',
ig => 'ibo',
ii => 'iii',
ik => 'ipk',
io => 'ido',
is => 'ice',
# is => 'isl',
it => 'ita',
iu => 'iku',
ja => 'jpn',
jv => 'jav',
ka => 'geo',
# ka => 'kat',
kg => 'kon',
ki => 'kik',
kj => 'kua',
kk => 'kaz',
kl => 'kal',
km => 'khm',
kn => 'kan',
ko => 'kor',
kr => 'kau',
ks => 'kas',
ku => 'kur',
kv => 'kom',
kw => 'cor',
ky => 'kir',
la => 'lat',
lb => 'ltz',
lg => 'lug',
li => 'lim',
ln => 'lin',
lo => 'lao',
lt => 'lit',
lu => 'lub',
lv => 'lav',
mg => 'mlg',
mh => 'mah',
mi => 'mao',
mi => 'mri',
mk => 'mac',
# mk => 'mkd',
ml => 'mal',
mn => 'mon',
mo => 'mol',
mr => 'mar',
ms => 'may',
ms => 'msa',
mt => 'mlt',
my => 'bur',
# my => 'mya',
na => 'nau',
nb => 'nob',
nd => 'nde',
ne => 'nep',
ng => 'ndo',
nl => 'dut',
# nl => 'nld',
nn => 'nno',
no => 'nor',
nr => 'nbl',
nv => 'nav',
ny => 'nya',
oc => 'oci',
oj => 'oji',
om => 'orm',
or => 'ori',
os => 'oss',
pa => 'pan',
pi => 'pli',
pl => 'pol',
ps => 'pus',
pt => 'por',
'pt_br' => 'pob',
'pt_BR' => 'pob',
qu => 'que',
rm => 'roh',
rn => 'run',
# ro => 'ron',
ro => 'rum',
ru => 'rus',
rw => 'kin',
sa => 'san',
sc => 'srd',
sd => 'snd',
se => 'sme',
sg => 'sag',
si => 'sin',
# sk => 'slk',
sk => 'slo',
sl => 'slv',
sm => 'smo',
sn => 'sna',
so => 'som',
sq => 'alb',
sq => 'sqi',
sr => 'scc',
# sr => 'srp',
ss => 'ssw',
st => 'sot',
su => 'sun',
sv => 'swe',
sw => 'swa',
ta => 'tam',
te => 'tel',
tg => 'tgk',
th => 'tha',
ti => 'tir',
tk => 'tuk',
tl => 'tgl',
tn => 'tsn',
to => 'ton',
tr => 'tur',
ts => 'tso',
tt => 'tat',
tw => 'twi',
ty => 'tah',
ug => 'uig',
uk => 'ukr',
ur => 'urd',
uz => 'uzb',
ve => 'ven',
vi => 'vie',
vo => 'vol',
wa => 'wln',
wo => 'wol',
xh => 'xho',
yi => 'yid',
yo => 'yor',
za => 'zha',
zh => 'chi',
zh => 'zho',
zu => 'zul'
		       );


my %iso639three2english = (
aar => "Afar",
abk => "Abkhazian",
ace => "Achinese",
ach => "Acoli",
ada => "Adangme",
ady => "Adyghe; Adygei",
afa => "Afro-Asiatic (Other)",
afh => "Afrihili",
afr => "Afrikaans",
ain => "Ainu",
aka => "Akan",
akk => "Akkadian",
alb => "Albanian",
ale => "Aleut",
alg => "Algonquian languages",
alt => "Southern Altai",
amh => "Amharic",
ang => "English, Old (ca.450-1100)",
anp => "Angika",
apa => "Apache languages",
ara => "Arabic",
arc => "Official Aramaic (700-300 BCE); Imperial Aramaic (700-300 BCE)",
arg => "Aragonese",
arm => "Armenian",
arn => "Mapudungun; Mapuche",
arp => "Arapaho",
art => "Artificial (Other)",
arw => "Arawak",
asm => "Assamese",
ast => "Asturian; Bable; Leonese; Asturleonese",
ath => "Athapascan languages",
aus => "Australian languages",
ava => "Avaric",
ave => "Avestan",
awa => "Awadhi",
aym => "Aymara",
aze => "Azerbaijani",
bad => "Banda languages",
bai => "Bamileke languages",
bak => "Bashkir",
bal => "Baluchi",
bam => "Bambara",
ban => "Balinese",
baq => "Basque",
bas => "Basa",
bat => "Baltic (Other)",
bej => "Beja; Bedawiyet",
bel => "Belarusian",
bem => "Bemba",
ben => "Bengali",
ber => "Berber (Other)",
bho => "Bhojpuri",
bih => "Bihari",
bik => "Bikol",
bin => "Bini; Edo",
bis => "Bislama",
bla => "Siksika",
bnt => "Bantu (Other)",
bos => "Bosnian",
bra => "Braj",
bre => "Breton",
btk => "Batak languages",
bua => "Buriat",
bug => "Buginese",
bul => "Bulgarian",
bur => "Burmese",
byn => "Blin; Bilin",
cad => "Caddo",
cai => "Central American Indian (Other)",
car => "Galibi Carib",
cat => "Catalan; Valencian",
cau => "Caucasian (Other)",
ceb => "Cebuano",
cel => "Celtic (Other)",
cha => "Chamorro",
chb => "Chibcha",
che => "Chechen",
chg => "Chagatai",
chi => "Chinese",
chk => "Chuukese",
chm => "Mari",
chn => "Chinook jargon",
cho => "Choctaw",
chp => "Chipewyan; Dene Suline",
chr => "Cherokee",
chu => "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic",
chv => "Chuvash",
chy => "Cheyenne",
cmc => "Chamic languages",
cop => "Coptic",
cor => "Cornish",
cos => "Corsican",
cpe => "Creoles and pidgins, English based (Other)",
cpf => "Creoles and pidgins, French-based (Other)",
cpp => "Creoles and pidgins, Portuguese-based (Other)",
cre => "Cree",
crh => "Crimean Tatar; Crimean Turkish",
crp => "Creoles and pidgins (Other)",
csb => "Kashubian",
cus => "Cushitic (Other)",
cze => "Czech",
dak => "Dakota",
dan => "Danish",
dar => "Dargwa",
day => "Land Dayak languages",
del => "Delaware",
den => "Slave (Athapascan)",
dgr => "Dogrib",
din => "Dinka",
div => "Divehi; Dhivehi; Maldivian",
doi => "Dogri",
dra => "Dravidian (Other)",
dsb => "Lower Sorbian",
dua => "Duala",
dum => "Dutch, Middle (ca.1050-1350)",
dut => "Dutch; Flemish",
dyu => "Dyula",
dzo => "Dzongkha",
efi => "Efik",
egy => "Egyptian (Ancient)",
eka => "Ekajuk",
elx => "Elamite",
eng => "English",
enm => "English, Middle (1100-1500)",
epo => "Esperanto",
est => "Estonian",
ewe => "Ewe",
ewo => "Ewondo",
fan => "Fang",
fao => "Faroese",
fat => "Fanti",
fij => "Fijian",
fil => "Filipino; Pilipino",
fin => "Finnish",
fiu => "Finno-Ugrian (Other)",
fon => "Fon",
fre => "French",
frm => "French, Middle (ca.1400-1600)",
fro => "French, Old (842-ca.1400)",
frr => "Northern Frisian",
frs => "Eastern Frisian",
fry => "Western Frisian",
ful => "Fulah",
fur => "Friulian",
gaa => "Ga",
gay => "Gayo",
gba => "Gbaya",
gem => "Germanic (Other)",
geo => "Georgian",
ger => "German",
gez => "Geez",
gil => "Gilbertese",
gla => "Gaelic; Scottish Gaelic",
gle => "Irish",
glg => "Galician",
glv => "Manx",
gmh => "German, Middle High (ca.1050-1500)",
goh => "German, Old High (ca.750-1050)",
gon => "Gondi",
gor => "Gorontalo",
got => "Gothic",
grb => "Grebo",
grc => "Greek, Ancient (to 1453)",
gre => "Greek, Modern (1453-)",
grn => "Guarani",
gsw => "Swiss German; Alemannic",
guj => "Gujarati",
gwi => "Gwich'in",
hai => "Haida",
hat => "Haitian; Haitian Creole",
hau => "Hausa",
haw => "Hawaiian",
heb => "Hebrew",
her => "Herero",
hil => "Hiligaynon",
him => "Himachali",
hin => "Hindi",
hit => "Hittite",
hmn => "Hmong",
hmo => "Hiri Motu",
hsb => "Upper Sorbian",
hun => "Hungarian",
hup => "Hupa",
iba => "Iban",
ibo => "Igbo",
ice => "Icelandic",
ido => "Ido",
iii => "Sichuan Yi; Nuosu",
ijo => "Ijo languages",
iku => "Inuktitut",
ile => "Interlingue; Occidental",
ilo => "Iloko",
ina => "Interlingua (International Auxiliary Language Association)",
inc => "Indic (Other)",
ind => "Indonesian",
ine => "Indo-European (Other)",
inh => "Ingush",
ipk => "Inupiaq",
ira => "Iranian (Other)",
iro => "Iroquoian languages",
ita => "Italian",
jav => "Javanese",
jbo => "Lojban",
jpn => "Japanese",
jpr => "Judeo-Persian",
jrb => "Judeo-Arabic",
kaa => "Kara-Kalpak",
kab => "Kabyle",
kac => "Kachin; Jingpho",
kal => "Kalaallisut; Greenlandic",
kam => "Kamba",
kan => "Kannada",
kar => "Karen languages",
kas => "Kashmiri",
kau => "Kanuri",
kaw => "Kawi",
kaz => "Kazakh",
kbd => "Kabardian",
kha => "Khasi",
khi => "Khoisan (Other)",
khm => "Central Khmer",
kho => "Khotanese",
kik => "Kikuyu; Gikuyu",
kin => "Kinyarwanda",
kir => "Kirghiz; Kyrgyz",
kmb => "Kimbundu",
kok => "Konkani",
kom => "Komi",
kon => "Kongo",
kor => "Korean",
kos => "Kosraean",
kpe => "Kpelle",
krc => "Karachay-Balkar",
krl => "Karelian",
kro => "Kru languages",
kru => "Kurukh",
kua => "Kuanyama; Kwanyama",
kum => "Kumyk",
kur => "Kurdish",
kut => "Kutenai",
lad => "Ladino",
lah => "Lahnda",
lam => "Lamba",
lao => "Lao",
lat => "Latin",
lav => "Latvian",
lez => "Lezghian",
lim => "Limburgan; Limburger; Limburgish",
lin => "Lingala",
lit => "Lithuanian",
lol => "Mongo",
loz => "Lozi",
ltz => "Luxembourgish; Letzeburgesch",
lua => "Luba-Lulua",
lub => "Luba-Katanga",
lug => "Ganda",
lui => "Luiseno",
lun => "Lunda",
luo => "Luo (Kenya and Tanzania)",
lus => "Lushai",
mac => "Macedonian",
mad => "Madurese",
mag => "Magahi",
mah => "Marshallese",
mai => "Maithili",
mak => "Makasar",
mal => "Malayalam",
man => "Mandingo",
mao => "Maori",
map => "Austronesian (Other)",
mar => "Marathi",
mas => "Masai",
may => "Malay",
mdf => "Moksha",
mdr => "Mandar",
men => "Mende",
mga => "Irish, Middle (900-1200)",
mic => "Mi'kmaq; Micmac",
min => "Minangkabau",
mis => "Uncoded languages",
mkh => "Mon-Khmer (Other)",
mlg => "Malagasy",
mlt => "Maltese",
mnc => "Manchu",
mni => "Manipuri",
mno => "Manobo languages",
moh => "Mohawk",
mol => "Moldavian",
mon => "Mongolian",
mos => "Mossi",
mul => "Multiple languages",
mun => "Munda languages",
mus => "Creek",
mwl => "Mirandese",
mwr => "Marwari",
myn => "Mayan languages",
myv => "Erzya",
nah => "Nahuatl languages",
nai => "North American Indian",
nap => "Neapolitan",
nau => "Nauru",
nav => "Navajo; Navaho",
nbl => "Ndebele, South; South Ndebele",
nde => "Ndebele, North; North Ndebele",
ndo => "Ndonga",
nds => "Low German; Low Saxon; German, Low; Saxon, Low",
nep => "Nepali",
new => "Nepal Bhasa; Newari",
nia => "Nias",
nic => "Niger-Kordofanian (Other)",
niu => "Niuean",
nno => "Norwegian Nynorsk; Nynorsk, Norwegian",
nob => "Bokml, Norwegian; Norwegian Bokml",
nog => "Nogai",
non => "Norse, Old",
nor => "Norwegian",
nqo => "N'Ko",
nso => "Pedi; Sepedi; Northern Sotho",
nub => "Nubian languages",
nwc => "Classical Newari; Old Newari; Classical Nepal Bhasa",
nya => "Chichewa; Chewa; Nyanja",
nym => "Nyamwezi",
nyn => "Nyankole",
nyo => "Nyoro",
nzi => "Nzima",
oci => "Occitan (post 1500); Provenal",
oji => "Ojibwa",
ori => "Oriya",
orm => "Oromo",
osa => "Osage",
oss => "Ossetian; Ossetic",
ota => "Turkish, Ottoman (1500-1928)",
oto => "Otomian languages",
paa => "Papuan (Other)",
pag => "Pangasinan",
pal => "Pahlavi",
pam => "Pampanga; Kapampangan",
pan => "Panjabi; Punjabi",
pap => "Papiamento",
pau => "Palauan",
peo => "Persian, Old (ca.600-400 B.C.)",
per => "Persian",
phi => "Philippine (Other)",
phn => "Phoenician",
pli => "Pali",
pol => "Polish",
pon => "Pohnpeian",
por => "Portuguese",
pra => "Prakrit languages",
pro => "Provenal, Old (to 1500)",
pus => "Pushto; Pashto",
qaa-qtz => "Reserved for local use",
que => "Quechua",
raj => "Rajasthani",
rap => "Rapanui",
rar => "Rarotongan; Cook Islands Maori",
roa => "Romance (Other)",
roh => "Romansh",
rom => "Romany",
rum => "Romanian",
run => "Rundi",
rup => "Aromanian; Arumanian; Macedo-Romanian",
rus => "Russian",
sad => "Sandawe",
sag => "Sango",
sah => "Yakut",
sai => "South American Indian (Other)",
sal => "Salishan languages",
sam => "Samaritan Aramaic",
san => "Sanskrit",
sas => "Sasak",
sat => "Santali",
scc => "Serbian",
scn => "Sicilian",
sco => "Scots",
scr => "Croatian",
sel => "Selkup",
sem => "Semitic (Other)",
sga => "Irish, Old (to 900)",
sgn => "Sign Languages",
shn => "Shan",
sid => "Sidamo",
sin => "Sinhala; Sinhalese",
sio => "Siouan languages",
sit => "Sino-Tibetan (Other)",
sla => "Slavic (Other)",
slo => "Slovak",
slv => "Slovenian",
sma => "Southern Sami",
sme => "Northern Sami",
smi => "Sami languages (Other)",
smj => "Lule Sami",
smn => "Inari Sami",
smo => "Samoan",
sms => "Skolt Sami",
sna => "Shona",
snd => "Sindhi",
snk => "Soninke",
sog => "Sogdian",
som => "Somali",
son => "Songhai languages",
sot => "Sotho, Southern",
spa => "Spanish; Castilian",
srd => "Sardinian",
srn => "Sranan Tongo",
srr => "Serer",
ssa => "Nilo-Saharan (Other)",
ssw => "Swati",
suk => "Sukuma",
sun => "Sundanese",
sus => "Susu",
sux => "Sumerian",
swa => "Swahili",
swe => "Swedish",
syc => "Classical Syriac",
syr => "Syriac",
tah => "Tahitian",
tai => "Tai (Other)",
tam => "Tamil",
tat => "Tatar",
tel => "Telugu",
tem => "Timne",
ter => "Tereno",
tet => "Tetum",
tgk => "Tajik",
tgl => "Tagalog",
tha => "Thai",
tib => "Tibetan",
tig => "Tigre",
tir => "Tigrinya",
tiv => "Tiv",
tkl => "Tokelau",
tlh => "Klingon; tlhIngan-Hol",
tli => "Tlingit",
tmh => "Tamashek",
tog => "Tonga (Nyasa)",
ton => "Tonga (Tonga Islands)",
tpi => "Tok Pisin",
tsi => "Tsimshian",
tsn => "Tswana",
tso => "Tsonga",
tuk => "Turkmen",
tum => "Tumbuka",
tup => "Tupi languages",
tur => "Turkish",
tut => "Altaic (Other)",
tvl => "Tuvalu",
twi => "Twi",
tyv => "Tuvinian",
udm => "Udmurt",
uga => "Ugaritic",
uig => "Uighur; Uyghur",
ukr => "Ukrainian",
umb => "Umbundu",
und => "Undetermined",
urd => "Urdu",
uzb => "Uzbek",
vai => "Vai",
ven => "Venda",
vie => "Vietnamese",
vol => "Volapk",
vot => "Votic",
wak => "Wakashan languages",
wal => "Walamo",
war => "Waray",
was => "Washo",
wel => "Welsh",
wen => "Sorbian languages",
wln => "Walloon",
wol => "Wolof",
xal => "Kalmyk; Oirat",
xho => "Xhosa",
yao => "Yao",
yap => "Yapese",
yid => "Yiddish",
yor => "Yoruba",
ypk => "Yupik languages",
zap => "Zapotec",
zbl => "Blissymbols; Blissymbolics; Bliss",
zen => "Zenaga",
zha => "Zhuang; Chuang",
znd => "Zande languages",
zul => "Zulu",
zun => "Zuni",
zxx => "No linguistic content",
zza => "Zaza; Dimili; Dimli; Kirdki; Kirmanjki; Zazaki",
sqi => "Albanian",
hye => "Armenian",
eus => "Basque",
mya => "Burmese",
zho => "Chinese",
ces => "Czech",
nld => "Dutch; Flemish",
fra => "French",
kat => "Georgian",
deu => "German",
ell => "Greek, Modern (1453-)",
isl => "Icelandic",
mkd => "Macedonian",
mri => "Maori",
msa => "Malay",
fas => "Persian",
ron => "Romanian",
srp => "Serbian",
hrv => "Croatian",
slk => "Slovak",
bod => "Tibetan",
cym => "Welsh"
			   );


my %iso639two2english = (
aa => "Afar",
ab => "Abkhazian",
af => "Afrikaans",
ak => "Akan",
sq => "Albanian",
am => "Amharic",
ar => "Arabic",
an => "Aragonese",
hy => "Armenian",
as => "Assamese",
av => "Avaric",
ae => "Avestan",
ay => "Aymara",
az => "Azerbaijani",
ba => "Bashkir",
bm => "Bambara",
eu => "Basque",
be => "Belarusian",
bn => "Bengali",
bh => "Bihari",
bi => "Bislama",
bs => "Bosnian",
br => "Breton",
bg => "Bulgarian",
my => "Burmese",
ca => "Catalan; Valencian",
ch => "Chamorro",
ce => "Chechen",
zh => "Chinese",
cu => "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic",
cv => "Chuvash",
kw => "Cornish",
co => "Corsican",
cr => "Cree",
cs => "Czech",
da => "Danish",
dv => "Divehi; Dhivehi; Maldivian",
nl => "Dutch; Flemish",
dz => "Dzongkha",
en => "English",
eo => "Esperanto",
et => "Estonian",
ee => "Ewe",
fo => "Faroese",
fj => "Fijian",
fi => "Finnish",
fr => "French",
fy => "Western Frisian",
ff => "Fulah",
ka => "Georgian",
de => "German",
gd => "Gaelic; Scottish Gaelic",
ga => "Irish",
gl => "Galician",
gv => "Manx",
el => "Greek, Modern (1453-)",
gn => "Guarani",
gu => "Gujarati",
ht => "Haitian; Haitian Creole",
ha => "Hausa",
he => "Hebrew",
hz => "Herero",
hi => "Hindi",
ho => "Hiri Motu",
hu => "Hungarian",
ig => "Igbo",
is => "Icelandic",
io => "Ido",
ii => "Sichuan Yi; Nuosu",
iu => "Inuktitut",
ie => "Interlingue; Occidental",
ia => "Interlingua (International Auxiliary Language Association)",
id => "Indonesian",
ik => "Inupiaq",
it => "Italian",
jv => "Javanese",
ja => "Japanese",
kl => "Kalaallisut; Greenlandic",
kn => "Kannada",
ks => "Kashmiri",
kr => "Kanuri",
kk => "Kazakh",
km => "Central Khmer",
ki => "Kikuyu; Gikuyu",
rw => "Kinyarwanda",
ky => "Kirghiz; Kyrgyz",
kv => "Komi",
kg => "Kongo",
ko => "Korean",
kj => "Kuanyama; Kwanyama",
ku => "Kurdish",
lo => "Lao",
la => "Latin",
lv => "Latvian",
li => "Limburgan; Limburger; Limburgish",
ln => "Lingala",
lt => "Lithuanian",
lb => "Luxembourgish; Letzeburgesch",
lu => "Luba-Katanga",
lg => "Ganda",
mk => "Macedonian",
mh => "Marshallese",
ml => "Malayalam",
mi => "Maori",
mr => "Marathi",
ms => "Malay",
mg => "Malagasy",
mt => "Maltese",
mo => "Moldavian",
mn => "Mongolian",
na => "Nauru",
nv => "Navajo; Navaho",
nr => "Ndebele, South; South Ndebele",
nd => "Ndebele, North; North Ndebele",
ng => "Ndonga",
ne => "Nepali",
nn => "Norwegian Nynorsk; Nynorsk, Norwegian",
nb => "Bokml, Norwegian; Norwegian Bokml",
no => "Norwegian",
ny => "Chichewa; Chewa; Nyanja",
oc => "Occitan (post 1500); Provenal",
oj => "Ojibwa",
or => "Oriya",
om => "Oromo",
os => "Ossetian; Ossetic",
pa => "Panjabi; Punjabi",
fa => "Persian",
pi => "Pali",
pl => "Polish",
pt => "Portuguese",
ps => "Pushto; Pashto",
qu => "Quechua",
rm => "Romansh",
ro => "Romanian",
rn => "Rundi",
ru => "Russian",
sg => "Sango",
sa => "Sanskrit",
sr => "Serbian",
hr => "Croatian",
si => "Sinhala; Sinhalese",
sk => "Slovak",
sl => "Slovenian",
se => "Northern Sami",
sm => "Samoan",
sn => "Shona",
sd => "Sindhi",
so => "Somali",
st => "Sotho, Southern",
es => "Spanish; Castilian",
sc => "Sardinian",
ss => "Swati",
su => "Sundanese",
sw => "Swahili",
sv => "Swedish",
ty => "Tahitian",
ta => "Tamil",
tt => "Tatar",
te => "Telugu",
tg => "Tajik",
tl => "Tagalog",
th => "Thai",
bo => "Tibetan",
ti => "Tigrinya",
to => "Tonga (Tonga Islands)",
tn => "Tswana",
ts => "Tsonga",
tk => "Turkmen",
tr => "Turkish",
tw => "Twi",
ug => "Uighur; Uyghur",
uk => "Ukrainian",
ur => "Urdu",
uz => "Uzbek",
ve => "Venda",
vi => "Vietnamese",
vo => "Volapk",
cy => "Welsh",
wa => "Walloon",
wo => "Wolof",
xh => "Xhosa",
yi => "Yiddish",
yo => "Yoruba",
za => "Zhuang; Chuang",
zu => "Zulu"
			 );


my %iso639three2french = (
aar => "afar",
abk => "abkhaze",
ace => "aceh",
ach => "acoli",
ada => "adangme",
ady => "adygh",
afa => "afro-asiatiques, autres langues",
afh => "afrihili",
afr => "afrikaans",
ain => "anou",
aka => "akan",
akk => "akkadien",
alb => "albanais",
ale => "aloute",
alg => "algonquines, langues",
alt => "altai du Sud",
amh => "amharique",
ang => "anglo-saxon (ca.450-1100)",
anp => "angika",
apa => "apache",
ara => "arabe",
arc => "aramen d'empire (700-300 BCE)",
arg => "aragonais",
arm => "armnien",
arn => "mapudungun; mapuche; mapuce",
arp => "arapaho",
art => "artificielles, autres langues",
arw => "arawak",
asm => "assamais",
ast => "asturien; bable; lonais; asturolonais",
ath => "athapascanes, langues",
aus => "australiennes, langues",
ava => "avar",
ave => "avestique",
awa => "awadhi",
aym => "aymara",
aze => "azri",
bad => "banda, langues",
bai => "bamilks, langues",
bak => "bachkir",
bal => "baloutchi",
bam => "bambara",
ban => "balinais",
baq => "basque",
bas => "basa",
bat => "baltiques, autres langues",
bej => "bedja",
bel => "bilorusse",
bem => "bemba",
ben => "bengali",
ber => "berbres, autres langues",
bho => "bhojpuri",
bih => "bihari",
bik => "bikol",
bin => "bini; edo",
bis => "bichlamar",
bla => "blackfoot",
bnt => "bantoues, autres langues",
bos => "bosniaque",
bra => "braj",
bre => "breton",
btk => "batak, langues",
bua => "bouriate",
bug => "bugi",
bul => "bulgare",
bur => "birman",
byn => "blin; bilen",
cad => "caddo",
cai => "indiennes d'Amrique centrale, autres langues",
car => "karib; galibi; carib",
cat => "catalan; valencien",
cau => "caucasiennes, autres langues",
ceb => "cebuano",
cel => "celtiques, autres langues",
cha => "chamorro",
chb => "chibcha",
che => "tchtchne",
chg => "djaghata",
chi => "chinois",
chk => "chuuk",
chm => "mari",
chn => "chinook, jargon",
cho => "choctaw",
chp => "chipewyan",
chr => "cherokee",
chu => "slavon d'glise; vieux slave; slavon liturgique; vieux bulgare",
chv => "tchouvache",
chy => "cheyenne",
cmc => "chames, langues",
cop => "copte",
cor => "cornique",
cos => "corse",
cpe => "croles et pidgins anglais, autres",
cpf => "croles et pidgins franais, autres",
cpp => "croles et pidgins portugais, autres",
cre => "cree",
crh => "tatar de Crim",
crp => "croles et pidgins divers",
csb => "kachoube",
cus => "couchitiques, autres langues",
cze => "tchque",
dak => "dakota",
dan => "danois",
dar => "dargwa",
day => "dayak, langues",
del => "delaware",
den => "esclave (athapascan)",
dgr => "dogrib",
din => "dinka",
div => "maldivien",
doi => "dogri",
dra => "dravidiennes, autres langues",
dsb => "bas-sorabe",
dua => "douala",
dum => "nerlandais moyen (ca. 1050-1350)",
dut => "nerlandais; flamand",
dyu => "dioula",
dzo => "dzongkha",
efi => "efik",
egy => "gyptien",
eka => "ekajuk",
elx => "lamite",
eng => "anglais",
enm => "anglais moyen (1100-1500)",
epo => "espranto",
est => "estonien",
ewe => "w",
ewo => "wondo",
fan => "fang",
fao => "froen",
fat => "fanti",
fij => "fidjien",
fil => "filipino; pilipino",
fin => "finnois",
fiu => "finno-ougriennes, autres langues",
fon => "fon",
fre => "franais",
frm => "franais moyen (1400-1600)",
fro => "franais ancien (842-ca.1400)",
frr => "frison septentrional",
frs => "frison oriental",
fry => "frison occidental",
ful => "peul",
fur => "frioulan",
gaa => "ga",
gay => "gayo",
gba => "gbaya",
gem => "germaniques, autres langues",
geo => "gorgien",
ger => "allemand",
gez => "guze",
gil => "kiribati",
gla => "galique; galique cossais",
gle => "irlandais",
glg => "galicien",
glv => "manx; mannois",
gmh => "allemand, moyen haut (ca. 1050-1500)",
goh => "allemand, vieux haut (ca. 750-1050)",
gon => "gond",
gor => "gorontalo",
got => "gothique",
grb => "grebo",
grc => "grec ancien (jusqu' 1453)",
gre => "grec moderne (aprs 1453)",
grn => "guarani",
gsw => "almanique",
guj => "goudjrati",
gwi => "gwich'in",
hai => "haida",
hat => "hatien; crole hatien",
hau => "haoussa",
haw => "hawaen",
heb => "hbreu",
her => "herero",
hil => "hiligaynon",
him => "himachali",
hin => "hindi",
hit => "hittite",
hmn => "hmong",
hmo => "hiri motu",
hsb => "haut-sorabe",
hun => "hongrois",
hup => "hupa",
iba => "iban",
ibo => "igbo",
ice => "islandais",
ido => "ido",
iii => "yi de Sichuan",
ijo => "ijo, langues",
iku => "inuktitut",
ile => "interlingue",
ilo => "ilocano",
ina => "interlingua (langue auxiliaire internationale)",
inc => "indo-aryennes, autres langues",
ind => "indonsien",
ine => "indo-europennes, autres langues",
inh => "ingouche",
ipk => "inupiaq",
ira => "iraniennes, autres langues",
iro => "iroquoises, langues (famille)",
ita => "italien",
jav => "javanais",
jbo => "lojban",
jpn => "japonais",
jpr => "judo-persan",
jrb => "judo-arabe",
kaa => "karakalpak",
kab => "kabyle",
kac => "kachin; jingpho",
kal => "groenlandais",
kam => "kamba",
kan => "kannada",
kar => "karen, langues",
kas => "kashmiri",
kau => "kanouri",
kaw => "kawi",
kaz => "kazakh",
kbd => "kabardien",
kha => "khasi",
khi => "khoisan, autres langues",
khm => "khmer central",
kho => "khotanais",
kik => "kikuyu",
kin => "rwanda",
kir => "kirghiz",
kmb => "kimbundu",
kok => "konkani",
kom => "kom",
kon => "kongo",
kor => "coren",
kos => "kosrae",
kpe => "kpell",
krc => "karatchai balkar",
krl => "carlien",
kro => "krou, langues",
kru => "kurukh",
kua => "kuanyama; kwanyama",
kum => "koumyk",
kur => "kurde",
kut => "kutenai",
lad => "judo-espagnol",
lah => "lahnda",
lam => "lamba",
lao => "lao",
lat => "latin",
lav => "letton",
lez => "lezghien",
lim => "limbourgeois",
lin => "lingala",
lit => "lituanien",
lol => "mongo",
loz => "lozi",
ltz => "luxembourgeois",
lua => "luba-lulua",
lub => "luba-katanga",
lug => "ganda",
lui => "luiseno",
lun => "lunda",
luo => "luo (Kenya et Tanzanie)",
lus => "lushai",
mac => "macdonien",
mad => "madourais",
mag => "magahi",
mah => "marshall",
mai => "maithili",
mak => "makassar",
mal => "malayalam",
man => "mandingue",
mao => "maori",
map => "malayo-polynsiennes, autres langues",
mar => "marathe",
mas => "massa",
may => "malais",
mdf => "moksa",
mdr => "mandar",
men => "mend",
mga => "irlandais moyen (900-1200)",
mic => "mi'kmaq; micmac",
min => "minangkabau",
mis => "langues non codes",
mkh => "mn-khmer, autres langues",
mlg => "malgache",
mlt => "maltais",
mnc => "mandchou",
mni => "manipuri",
mno => "manobo, langues",
moh => "mohawk",
mol => "moldave",
mon => "mongol",
mos => "mor",
mul => "multilingue",
mun => "mounda, langues",
mus => "muskogee",
mwl => "mirandais",
mwr => "marvari",
myn => "maya, langues",
myv => "erza",
nah => "nahuatl, langues",
nai => "indiennes d'Amrique du Nord, autres langues",
nap => "napolitain",
nau => "nauruan",
nav => "navaho",
nbl => "ndbl du Sud",
nde => "ndbl du Nord",
ndo => "ndonga",
nds => "bas allemand; bas saxon; allemand, bas; saxon, bas",
nep => "npalais",
new => "nepal bhasa; newari",
nia => "nias",
nic => "nigro-congolaises, autres langues",
niu => "niu",
nno => "norvgien nynorsk; nynorsk, norvgien",
nob => "norvgien bokml",
nog => "noga; nogay",
non => "norrois, vieux",
nor => "norvgien",
nqo => "n'ko",
nso => "pedi; sepedi; sotho du Nord",
nub => "nubiennes, langues",
nwc => "newari classique",
nya => "chichewa; chewa; nyanja",
nym => "nyamwezi",
nyn => "nyankol",
nyo => "nyoro",
nzi => "nzema",
oci => "occitan (aprs 1500); provenal",
oji => "ojibwa",
ori => "oriya",
orm => "galla",
osa => "osage",
oss => "osste",
ota => "turc ottoman (1500-1928)",
oto => "otomangue, langues",
paa => "papoues, autres langues",
pag => "pangasinan",
pal => "pahlavi",
pam => "pampangan",
pan => "pendjabi",
pap => "papiamento",
pau => "palau",
peo => "perse, vieux (ca. 600-400 av. J.-C.)",
per => "persan",
phi => "philippines, autres langues",
phn => "phnicien",
pli => "pali",
pol => "polonais",
pon => "pohnpei",
por => "portugais",
pra => "prkrit",
pro => "provenal ancien (jusqu' 1500)",
pus => "pachto",
qaa-qtz => "rserve  l'usage local",
que => "quechua",
raj => "rajasthani",
rap => "rapanui",
rar => "rarotonga; maori des les Cook",
roa => "romanes, autres langues",
roh => "romanche",
rom => "tsigane",
rum => "roumain",
run => "rundi",
rup => "aroumain; macdo-roumain",
rus => "russe",
sad => "sandawe",
sag => "sango",
sah => "iakoute",
sai => "indiennes d'Amrique du Sud, autres langues",
sal => "salish, langues",
sam => "samaritain",
san => "sanskrit",
sas => "sasak",
sat => "santal",
scc => "serbe",
scn => "sicilien",
sco => "cossais",
scr => "croate",
sel => "selkoupe",
sem => "smitiques, autres langues",
sga => "irlandais ancien (jusqu' 900)",
sgn => "langues des signes",
shn => "chan",
sid => "sidamo",
sin => "singhalais",
sio => "sioux, langues",
sit => "sino-tibtaines, autres langues",
sla => "slaves, autres langues",
slo => "slovaque",
slv => "slovne",
sma => "sami du Sud",
sme => "sami du Nord",
smi => "sami, autres langues",
smj => "sami de Lule",
smn => "sami d'Inari",
smo => "samoan",
sms => "sami skolt",
sna => "shona",
snd => "sindhi",
snk => "sonink",
sog => "sogdien",
som => "somali",
son => "songhai, langues",
sot => "sotho du Sud",
spa => "espagnol; castillan",
srd => "sarde",
srn => "sranan tongo",
srr => "srre",
ssa => "nilo-sahariennes, autres langues",
ssw => "swati",
suk => "sukuma",
sun => "soundanais",
sus => "soussou",
sux => "sumrien",
swa => "swahili",
swe => "sudois",
syc => "syriaque classique",
syr => "syriaque",
tah => "tahitien",
tai => "thaes, autres langues",
tam => "tamoul",
tat => "tatar",
tel => "tlougou",
tem => "temne",
ter => "tereno",
tet => "tetum",
tgk => "tadjik",
tgl => "tagalog",
tha => "tha",
tib => "tibtain",
tig => "tigr",
tir => "tigrigna",
tiv => "tiv",
tkl => "tokelau",
tlh => "klingon",
tli => "tlingit",
tmh => "tamacheq",
tog => "tonga (Nyasa)",
ton => "tongan (les Tonga)",
tpi => "tok pisin",
tsi => "tsimshian",
tsn => "tswana",
tso => "tsonga",
tuk => "turkmne",
tum => "tumbuka",
tup => "tupi, langues",
tur => "turc",
tut => "altaques, autres langues",
tvl => "tuvalu",
twi => "twi",
tyv => "touva",
udm => "oudmourte",
uga => "ougaritique",
uig => "ougour",
ukr => "ukrainien",
umb => "umbundu",
und => "indtermine",
urd => "ourdou",
uzb => "ouszbek",
vai => "va",
ven => "venda",
vie => "vietnamien",
vol => "volapk",
vot => "vote",
wak => "wakashennes, langues",
wal => "walamo",
war => "waray",
was => "washo",
wel => "gallois",
wen => "sorabes, langues",
wln => "wallon",
wol => "wolof",
xal => "kalmouk; orat",
xho => "xhosa",
yao => "yao",
yap => "yapois",
yid => "yiddish",
yor => "yoruba",
ypk => "yupik, langues",
zap => "zapotque",
zbl => "symboles Bliss; Bliss",
zen => "zenaga",
zha => "zhuang; chuang",
znd => "zand, langues",
zul => "zoulou",
zun => "zuni",
zxx => "pas de contenu linguistique",
zza => "zaza; dimili; dimli; kirdki; kirmanjki; zazaki",
sqi => "albanais",
hye => "armnien",
eus => "basque",
mya => "birman",
zho => "chinois",
ces => "tchque",
nld => "nerlandais; flamand",
fra => "franais",
kat => "gorgien",
deu => "allemand",
ell => "grec moderne (aprs 1453)",
isl => "islandais",
mkd => "macdonien",
mri => "maori",
msa => "malais",
fas => "persan",
ron => "roumain",
srp => "serbe",
hrv => "croate",
slk => "slovaque",
bod => "tibtain",
cym => "gallois"
			  );


my %iso639two2french = (
aa => "afar",
ab => "abkhaze",
af => "afrikaans",
ak => "akan",
sq => "albanais",
am => "amharique",
ar => "arabe",
an => "aragonais",
hy => "armnien",
as => "assamais",
av => "avar",
ae => "avestique",
ay => "aymara",
az => "azri",
ba => "bachkir",
bm => "bambara",
eu => "basque",
be => "bilorusse",
bn => "bengali",
bh => "bihari",
bi => "bichlamar",
bs => "bosniaque",
br => "breton",
bg => "bulgare",
my => "birman",
ca => "catalan; valencien",
ch => "chamorro",
ce => "tchtchne",
zh => "chinois",
cu => "slavon d'glise; vieux slave; slavon liturgique; vieux bulgare",
cv => "tchouvache",
kw => "cornique",
co => "corse",
cr => "cree",
cs => "tchque",
da => "danois",
dv => "maldivien",
nl => "nerlandais; flamand",
dz => "dzongkha",
en => "anglais",
eo => "espranto",
et => "estonien",
ee => "w",
fo => "froen",
fj => "fidjien",
fi => "finnois",
fr => "franais",
fy => "frison occidental",
ff => "peul",
ka => "gorgien",
de => "allemand",
gd => "galique; galique cossais",
ga => "irlandais",
gl => "galicien",
gv => "manx; mannois",
el => "grec moderne (aprs 1453)",
gn => "guarani",
gu => "goudjrati",
ht => "hatien; crole hatien",
ha => "haoussa",
he => "hbreu",
hz => "herero",
hi => "hindi",
ho => "hiri motu",
hu => "hongrois",
ig => "igbo",
is => "islandais",
io => "ido",
ii => "yi de Sichuan",
iu => "inuktitut",
ie => "interlingue",
ia => "interlingua (langue auxiliaire internationale)",
id => "indonsien",
ik => "inupiaq",
it => "italien",
jv => "javanais",
ja => "japonais",
kl => "groenlandais",
kn => "kannada",
ks => "kashmiri",
kr => "kanouri",
kk => "kazakh",
km => "khmer central",
ki => "kikuyu",
rw => "rwanda",
ky => "kirghiz",
kv => "kom",
kg => "kongo",
ko => "coren",
kj => "kuanyama; kwanyama",
ku => "kurde",
lo => "lao",
la => "latin",
lv => "letton",
li => "limbourgeois",
ln => "lingala",
lt => "lituanien",
lb => "luxembourgeois",
lu => "luba-katanga",
lg => "ganda",
mk => "macdonien",
mh => "marshall",
ml => "malayalam",
mi => "maori",
mr => "marathe",
ms => "malais",
mg => "malgache",
mt => "maltais",
mo => "moldave",
mn => "mongol",
na => "nauruan",
nv => "navaho",
nr => "ndbl du Sud",
nd => "ndbl du Nord",
ng => "ndonga",
ne => "npalais",
nn => "norvgien nynorsk; nynorsk, norvgien",
nb => "norvgien bokml",
no => "norvgien",
ny => "chichewa; chewa; nyanja",
oc => "occitan (aprs 1500); provenal",
oj => "ojibwa",
or => "oriya",
om => "galla",
os => "osste",
pa => "pendjabi",
fa => "persan",
pi => "pali",
pl => "polonais",
pt => "portugais",
ps => "pachto",
qu => "quechua",
rm => "romanche",
ro => "roumain",
rn => "rundi",
ru => "russe",
sg => "sango",
sa => "sanskrit",
sr => "serbe",
hr => "croate",
si => "singhalais",
sk => "slovaque",
sl => "slovne",
se => "sami du Nord",
sm => "samoan",
sn => "shona",
sd => "sindhi",
so => "somali",
st => "sotho du Sud",
es => "espagnol; castillan",
sc => "sarde",
ss => "swati",
su => "soundanais",
sw => "swahili",
sv => "sudois",
ty => "tahitien",
ta => "tamoul",
tt => "tatar",
te => "tlougou",
tg => "tadjik",
tl => "tagalog",
th => "tha",
bo => "tibtain",
ti => "tigrigna",
to => "tongan (les Tonga)",
tn => "tswana",
ts => "tsonga",
tk => "turkmne",
tr => "turc",
tw => "twi",
ug => "ougour",
uk => "ukrainien",
ur => "ourdou",
uz => "ouszbek",
ve => "venda",
vi => "vietnamien",
vo => "volapk",
cy => "gallois",
wa => "wallon",
wo => "wolof",
xh => "xhosa",
yi => "yiddish",
yo => "yoruba",
za => "zhuang; chuang",
zu => "zoulou"
			);


my @converted=();

foreach (@ARGV){
    $_=~s/\_..$//;
    if (length($_)==2){
	if ($opt_e){
	    push(@converted, $iso639two2english{$_});
	}
	elsif ($opt_f){
	    push(@converted, $iso639two2french{$_});
	}
	else{
	    push(@converted, $iso639two2three{$_});
	}

    }
    else{
	if ($opt_e){
	    push(@converted, $iso639three2english{$_});
	}
	elsif ($opt_f){
	    push(@converted, $iso639three2french{$_});
	}
	else{
	    push(@converted, $iso639three2two{$_});
    
	}
    }
}

print join(' ',@converted);
