# Copyright 2014 Google Inc.
# 
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

#
# The key is an ISO4217 currency code, and the value is of the form:
#   display name|symbol|decimal digits|not-used-flag|rounding
# If a symbol is not supplied, the currency code will be used
# If # of decimal digits is omitted, 2 is used
# If a currency is not generally used, not-used-flag=1
# If a currency should be rounded to a multiple of of the least significant
#   digit, rounding will be present
# Trailing empty fields can be omitted

# DO NOT EDIT - GENERATED FROM CLDR DATA:
#  cldrVersion=25
#  date=$Date: 2014-03-01 06:57:43 +0100 (Sat, 01 Mar 2014) $
#  number=$Revision: 9852 $
#  type=root
ADP = Andorra peseeta||0|1
AED = Araabia Ühendemiraatide dirhem
AFA = Afganistani afgaani, 1927-2002|||1
AFN = Afganistani afgaani||0
ALL = Albaania lekk||0
AMD = Armeenia dramm||0
ANG = Hollandi Antillide kulden
AOA = Angola kvanza
AOK = Angola kvanza, 1977-1990|||1
AON = Angola kvanza, 1990-2000|||1
AOR = Angola reformitud kvanza, 1995-1999|||1
ARA = Argentina austral|||1
ARP = Argentina peeso, 1983-1985|||1
ARS = Argentina peeso
ATS = Austria šilling|||1
AUD = Austraalia dollar|$
AWG = Aruba guilder
AZM = Aserbaidžaani manat, 1993-2006|||1
AZN = Aserbaidžaani manat
BAD = Bosnia-Hertsegoviina dinaar|||1
BAM = Bosnia-Hertsegoviina mark
BBD = Barbadose dollar
BDT = Bangladeshi taka|৳
BEC = Belgia konverteeritav frank|||1
BEF = Belgia frank|||1
BEL = Belgia arveldusfrank|||1
BGL = Bulgaaria püsiv leev|||1
BGN = Bulgaaria leev
BHD = Bahreini dinaar||3
BIF = Burundi frank||0
BMD = Bermuda dollar|$
BND = Brunei dollar
BOB = Bolivia boliviaano
BOP = Boliivia peeso|||1
BRC = Brasiilia krusado|||1
BRL = Brasiilia reaal|R$
BSD = Bahama dollar|$
BTN = Bhutani ngultrum
BUK = Birma kjatt|||1
BWP = Botswana pula
BYB = Valgevene uus rubla, 1994-1999|||1
BYR = Valgevene rubla||0
BZD = Belize dollar|$
CAD = Kanada dollar|CA$
CDF = Kongo frank
CHF = Šveitsi frank
CLP = Tšiili peeso|$|0
CNY = Hiina jüaan|¥
COP = Kolumbia peeso||0
CRC = Costa Rica colón||0
CSD = Serbia vana dinaar|||1
CUC = Kuuba konverteeritav peeso
CUP = Kuuba peeso|$
CVE = Roheneemesaarte eskuudo
CYP = Küprose nael|||1
CZK = Tšehhi kroon
DEM = Saksa mark|||1
DJF = Djibouti frank||0
DKK = Taani kroon
DOP = Dominikaani peeso|$
DZD = Alžeeria dinaar
ECS = Ecuadori sukre|||1
EEK = Eesti kroon|kr||1
EGP = Egiptuse nael
ERN = Eritrea nakfa
ESP = Hispaania peseeta|₧|0|1
ETB = Etioopia birr
EUR = euro|€
FIM = Soome mark|||1
FJD = Fidži dollar
FKP = Falklandi saarte nael
FRF = Prantsuse frank|||1
GBP = Suurbritannia naelsterling|£
GEL = Gruusia lari
GHC = Ghana sedi|||1
GHS = Ghana cedi
GIP = Gibraltari nael|£
GMD = Gambia dalasi
GNF = Guinea frank||0
GNS = Guinea syli|||1
GRD = Kreeka drahm|||1
GTQ = Guatemala ketsal
GWP = Guinea-Bissau peeso|||1
GYD = Guyana dollar||0
HKD = Hongkongi dollar|$
HNL = Hondurase lempiira
HRK = Horvaatia kuna
HTG = Haiti gurd
HUF = Ungari forint||0
IDR = Indoneesia ruupia||0
IEP = Iiri nael|||1
ILP = Iisraeli nael|||1
ILS = Iisraeli uus seekel|₪
INR = India ruupia|₹
IQD = Iraagi dinaar||0
IRR = Iraani riaal||0
ISK = Islandi kroon||0
ITL = Itaalia liir||0|1
JMD = Jamaica dollar
JOD = Jordaania dinaar||3
JPY = Jaapani jeen|¥|0
KES = Kenya šilling
KGS = Kõrgõzstani somm
KHR = Kambodža riaal
KMF = Komooride frank||0
KPW = Põhja-Korea vonn||0
KRW = Lõuna-Korea vonn|₩|0
KWD = Kuveidi dinaar||3
KYD = Caymani saarte dollar|$
KZT = Kasahstani tenge|₸
LAK = Laose kiip||0
LBP = Liibanoni nael||0
LKR = Sri Lanka ruupia
LRD = Libeeria dollar
LSL = Lesotho loti
LTL = Leedu litt
LUF = Luksemburgi frank||0|1
LVL = Läti latt|||1
LYD = Liibüa dinaar||3
MAD = Maroko dirhem
MDL = Moldova leu
MGA = Madagaskari ariary||0
MKD = Makedoonia denaar
MMK = Myanmari kjatt||0
MNT = Mongoolia tugrik||0
MOP = Macao pataka
MRO = Mauritaania ugia||0
MTL = Malta liir|||1
MUR = Mauritiuse ruupia||0
MVR = Maldiivide ruupia
MWK = Malawi kvatša
MXN = Mehhiko peeso|$
MXP = Mehhiko peeso, 1861-1990|||1
MYR = Malaisia ringgit
MZN = Mosambiigi metikal
NAD = Namiibia dollar|$
NGN = Nigeeria naira
NIC = Nicaragua kordoba|||1
NIO = Nicaragua kuldkordoba
NLG = Hollandi kulden|||1
NOK = Norra kroon
NPR = Nepali ruupia
NZD = Uus-Meremaa dollar|$
OMR = Omaani riaal||3
PAB = Panama balboa
PEI = Peruu inti|||1
PEN = Peruu uus soll
PES = Peruu soll|||1
PGK = Paapua Uus-Guinea kina
PHP = Filipiinide peeso
PKR = Pakistani ruupia||0
PLN = Poola zlott
PLZ = Poola zlott, 1950-1995|||1
PTE = Portugali eskuudo|||1
PYG = Paraguai guaranii|₲|0
QAR = Quatari riaal
ROL = Rumeenia lei, -2005|||1
RON = Rumeenia lei
RSD = Serbia dinaar||0
RUB = Venemaa rubla
RUR = Venemaa rubla, 1991-1998|р.||1
RWF = Rwanda frank||0
SAR = Saudi-Araabia riaal
SBD = Saalomoni saarte dollar|$
SCR = Seišelli saarte ruupia
SDG = Sudaani nael
SDP = Sudaani nael, 1957-1998|||1
SEK = Rootsi kroon
SGD = Singapuri dollar|$
SHP = Saint Helena nael
SIT = Sloveenia tolar|||1
SKK = Slovakkia kroon|||1
SLL = Sierra Leone leoone||0
SOS = Somaalia šilling||0
SRD = Surinami dollar
SRG = Surinami kulden|||1
SSP = Lõuna-Sudaani nael|£
STD = São Tomé ja Príncipe dobra||0
SUR = NSVL rubla|||1
SVC = Salvadori koloon|||1
SYP = Süüria nael||0
SZL = Svaasimaa lilangeni
THB = Tai baat|฿
TJS = Tadžikistani somoni
TMM = Türkmenistani manat, 1993-2009||0|1
TMT = Türkmenistani manat
TND = Tuneesia dinaar||3
TOP = Tonga pa'anga
TPE = Timori eskuudo|||1
TRL = Türgi liir||0|1
TRY = Türgi uus liir
TTD = Trinidadi ja Tobago dollar|$
TWD = Taiwani dollar|NT$
TZS = Tansaania šilling||0
UAH = Ukraina grivna|₴
UAK = Ukraina karbovanets|||1
UGX = Uganda šilling||0
USD = USA dollar|$
USN = USA järgmise päeva dollar|||1
USS = USA sama päeva dollar|||1
UYU = Uruguai peeso
UZS = Usbekistani somm||0
VEB = Venezuela bolívar (1871–2008)|||1
VEF = Venezuela bolívar
VND = Vietnami dong|₫|0
VUV = Vanuatu vatu||0
WST = Lääne-Samoa tala
XAF = CFA frank BEAC|FCFA|0
XAG = hõbe|||1
XAU = kuld|||1
XBA = EURCO|||1
XBB = Euroopa rahaühik|||1
XBC = Euroopa rahaline arvestusühik (XBC)|||1
XBD = Euroopa rahaline arvestusühik (XBD)|||1
XCD = Ida-Kariibi dollar|EC$
XDR = Rahvusvahelise Valuutafondi arvestusühik|||1
XEU = eküü|||1
XFO = Prantsuse kuldfrank|||1
XFU = Prantsuse UIC-frank|||1
XOF = Aafrika ühisfrank BCEAO|CFA|0
XPD = pallaadium|||1
XPF = Prantsuse Vaikse-Ookeani frank|CFPF|0
XPT = plaatina|||1
XTS = vääringute testkood|||1
XXX = määramata rahaühik|||1
YDD = Jeemeni dinaar|||1
YER = Jeemeni riaal||0
YUM = Jugoslaavia uus dinaar|||1
YUN = Jugoslaavia konverteeritav dinaar|||1
ZAR = Lõuna-Aafrika rand
ZMK = Sambia kvatša (1968–2012)||0|1
ZMW = Sambia kvatša
ZRZ = Sairi zaire|||1
ZWD = Zimbabwe dollar||0|1
