#
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

#
# COPYRIGHT AND PERMISSION NOTICE
#
# Copyright (C) 1991-2011 Unicode, Inc. All rights reserved.
# Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of the Unicode data files and any associated documentation (the
# "Data Files") or Unicode software and any associated documentation
# (the "Software") to deal in the Data Files or Software without
# restriction, including without limitation the rights to use, copy,
# modify, merge, publish, distribute, and/or sell copies of the Data
# Files or Software, and to permit persons to whom the Data Files or
# Software are furnished to do so, provided that (a) the above copyright
# notice(s) and this permission notice appear with all copies of the
# Data Files or Software, (b) both the above copyright notice(s) and
# this permission notice appear in associated documentation, and (c)
# there is clear notice in each modified Data File or in the Software as
# well as in the documentation associated with the Data File(s) or
# Software that the data or software has been modified.
#
# THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
# ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR
# ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
# SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder
# shall not be used in advertising or otherwise to promote the sale, use
# or other dealings in these Data Files or Software without prior
# written authorization of the copyright holder.

#
# Generated automatically from the Common Locale Data Repository. DO NOT EDIT!
#
adp=Peseta Andorrana
aed=Dirham degli Emirati Arabi Uniti
afa=Afgani (1927-2002)
afn=Afgani
all=Lek Albanese
amd=Dram Armeno
ang=Fiorino delle Antille Olandesi
aoa=Kwanza Angolano
ars=Peso Argentino
ats=Scellino Austriaco
aud=Dollaro Australiano
awg=Fiorino di Aruba
azm=Manat Azero (1993-2006)
bam=Marco Conv. Bosnia-Erzegovina
bbd=Dollaro di Barbados
bdt=Taka Bangladese
bef=Franco Belga
bgl=Lev Bulgaro
bgn=Nuovo Lev Bulgaro
bhd=Dinaro del Bahraini
bif=Franco del Burundi
bmd=Dollaro delle Bermuda
bnd=Dollaro del Brunei
bob=Boliviano
bov=Mvdol Boliviano
brl=Real Brasiliano
bsd=Dollaro delle Bahamas
btn=Ngultrum Butanese
bwp=Pula del Botswana
byb=Nuovo Rublo Bielorussia (1994-1999)
byr=Rublo Bielorussia
bzd=Dollaro Belize
cad=Dollaro Canadese
cdf=Franco Congolese
chf=Franco Svizzero
clf=Unidades de Fomento Chilene
clp=Peso Cileno
cny=Renmimbi Cinese
cop=Peso Colombiano
crc=Col\u00f3n Costaricano
cup=Peso Cubano
cve=Escudo del Capo Verde
cyp=Sterlina Cipriota
czk=Corona Ceca
dem=Marco Tedesco
djf=Franco Gibutiano
dkk=Corona Danese
dop=Peso Dominicano
dzd=Dinaro Algerino
eek=Corona dell\u2019Estonia
egp=Sterlina Egiziana
ern=Nakfa Eritreo
esp=Peseta Spagnola
etb=Birr Etiopico
fim=Markka Finlandese
fjd=Dollaro delle Figi
fkp=Sterlina delle Falkland
frf=Franco Francese
gbp=Sterlina Inglese
gel=Lari Georgiano
ghc=Cedi del Ghana
ghs=Cedi ghanese
gip=Sterlina di Gibilterra
gmd=Dalasi del Gambia
gnf=Franco della Guinea
grd=Dracma Greca
gtq=Quetzal Guatemalteco
gwp=Peso della Guinea-Bissau
gyd=Dollaro della Guyana
hkd=Dollaro di Hong Kong
hnl=Lempira Hoduregno
hrk=Kuna Croata
htg=Gourde Haitiano
huf=Fiorino Ungherese
idr=Rupia Indonesiana
iep=Sterlina irlandese
ils=Nuovo sheqel israeliano
inr=Rupia Indiana
iqd=Dinaro Iracheno
irr=Rial Iraniano
isk=Corona Islandese
itl=Lira Italiana
jmd=Dollaro Giamaicano
jod=Dinaro Giordano
jpy=Yen Giapponese
kes=Scellino Keniota
kgs=Som Kirghiso
khr=Riel Cambogiano
kmf=Franco Comoriano
kpw=Won Nordcoreano
krw=Won Sudcoreano
kwd=Dinaro Kuwaitiano
kyd=Dollaro delle Isole Cayman
kzt=Tenge Kazaco
lak=Kip Laotiano
lbp=Sterlina Libanese
lkr=Rupia di Sri Lanka
lrd=Dollaro Liberiano
lsl=Loti del Lesotho
ltl=Lita Lituana
luf=Franco del Lussemburgo
lvl=Lat Lettone
lyd=Dinaro Libico
mad=Dirham Marocchino
mdl=Leu Moldavo
mga=Ariary Malgascio
mgf=Franco Malgascio
mkd=Dinaro Macedone
mmk=Kyat di Myanmar
mnt=Tugrik Mongolo
mop=Pataca di Macao
mro=Ouguiya della Mauritania
mtl=Lira Maltese
mur=Rupia Mauriziana
mvr=Rufiyaa delle Maldive
mwk=Kwacha Malawiano
mxn=Peso Messicano
mxv=Unidad de Inversion (UDI) Messicana
myr=Ringgit della Malesia
mzn=Metical del Mozambico
nad=Dollaro Namibiano
ngn=Naira Nigeriana
nio=C\u00f3rdoba oro nicaraguense
nlg=Fiorino Olandese
nok=Corona Norvegese
npr=Rupia Nepalese
nzd=Dollaro Neozelandese
omr=Rial Omanita
pab=Balboa di Panama
pen=Sol Nuevo Peruviano
pgk=Kina della Papua Nuova Guinea
php=Peso delle Filippine
pkr=Rupia del Pakistan
pln=Zloty Polacco
pte=Escudo Portoghese
pyg=Guarani del Paraguay
qar=Rial del Qatar
rol=Leu della Romania
rsd=Dinaro serbo
rub=Rublo Russo
rur=Rublo della CSI
rwf=Franco Ruandese
sar=Ryal Saudita
sbd=Dollaro delle Isole Solomon
scr=Rupia delle Seychelles
sdd=Dinaro Sudanese
sdg=Sterlina sudanese
sek=Corona Svedese
sgd=Dollaro di Singapore
shp=Sterlina di Sant\u2019Elena
sit=Tallero Sloveno
skk=Corona Slovacca
sll=Leone della Sierra Leone
sos=Scellino Somalo
srd=Dollaro surinamese
srg=Fiorino del Suriname
std=Dobra di Sao Tom\u00e9 e Principe
svc=Col\u00f3n Salvadoregno
syp=Sterlina Siriana
szl=Lilangeni dello Swaziland
thb=Baht Tailandese
tjs=Somoni del Tajikistan
tmm=Manat Turkmeno
tnd=Dinaro Tunisino
top=Pa\u02bbanga di Tonga
tpe=Escudo di Timor
trl=Lira Turca
ttd=Dollaro di Trinidad e Tobago
twd=Nuovo dollaro taiwanese
tzs=Scellino della Tanzania
uah=Hrivna Ucraina
ugx=Scellino Ugandese
usd=Dollaro Statunitense
usn=Dollaro Statunitense (Next day)
uss=Dollaro Statunitense (Same day)
uyu=Peso Uruguayo uruguaiano
uzs=Sum dell\u2019Uzbekistan
veb=Bolivar Venezuelano
vef=Bol\u00edvar venezuelano forte
vnd=Dong Vietnamita
vuv=Vatu di Vanuatu
wst=Tala della Samoa Occidentale
xaf=Franco CFA BEAC
xag=Argento
xau=Oro
xba=Unit\u00e0 composita europea
xbb=Unit\u00e0 monetaria europea
xbc=Unit\u00e0 di acconto europea (XBC)
xbd=Unit\u00e0 di acconto europea (XBD)
xcd=Dollaro dei Caraibi Orientali
xdr=Diritti Speciali di Incasso
xfo=Franco Oro Francese
xfu=Franco UIC Francese
xof=Franco CFA BCEAO
xpd=Palladio
xpf=Franco CFP
xxx=Nessuna valuta
yer=Rial dello Yemen
yum=Dinaro Noviy Yugoslavo
zar=Rand Sudafricano
zmk=Kwacha dello Zambia
zwd=Dollaro dello Zimbabwe
