# Copyright 2012 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
ADP = andorraska peseta||0|1
AED = ZAE dirham
AFN = afghaniski afgani||0
ALL = albański lek||0
AMD = armeński dram
ANG = nižozemsko-antilski gulden
AOA = angolska kwanza
AOK = angolska kwanza (1977–1990)|||1
AON = angolska nowa kwanza (1990–2000)|||1
AOR = angolska kwanza reajustado (1995–1999)|||1
ARA = argentinski austral|||1
ARP = argentinski peso (1983–1985)|||1
ARS = argentinski peso
ATS = rakuski šiling|||1
AUD = awstralski dolar
AWG = aruba-florin
AZM = azerbajdžaniski manat (1993–2006)|||1
AZN = azerbajdžaniski manat
BAD = bosniski dinar|||1
BAM = bosniska konwertibelna marka
BBD = barbadoski dolar
BDT = bangladešska taka
BEC = belgiski frank (konwertibelny)|||1
BEF = belgiski frank|||1
BEL = belgiski financny frank|||1
BGL = bulgarski lew (1962–1999)|||1
BGN = bulgarski lew
BHD = bahrainski dinar||3
BIF = burundiski frank||0
BMD = bermudaski dolar
BND = bruneiski dolar
BOB = boliwiski boliviano
BOP = boliwiski peso|||1
BOV = boliwiski mvdol|||1
BRB = brazilski nowy cruzeiro (1967–1986)|||1
BRC = brazilski cruzado (1986–1989)|||1
BRE = brazilski cruzeiro (1990–1993)|||1
BRL = brazilski real|R$
BRN = brazilski nowy cruzado (1989–1990)|||1
BRR = brazilski cruzeiro (1993–1994)|||1
BSD = bahamaski dolar
BTN = bhutański ngultrum
BUK = burmaski kyat|||1
BWP = botswaniska pula
BYB = běłoruski rubl (1994–1999)|||1
BYN = běłoruski rubl
BYR = běłoruski rubl (2000–2016)||0|1
BZD = belizeski dolar
CAD = kanadiski dolar|CA$
CDF = kongoski frank
CHF = šwicarski frank
CLP = chilski peso||0
CNY = chinski yuan|CN¥
COP = kolumbiski peso
CRC = kosta-rikański colón
CUC = kubański konwertibelny peso
CUP = kubański peso
CVE = kapverdski escudo
CZK = česka krona
DJF = dźibutiski frank||0
DKK = dańska krona
DOP = dominikański peso
DZD = algeriski dinar
EGP = egyptojski punt
ERN = eritrejska nakfa
ETB = etiopiski birr
EUR = euro|€
FJD = fidźiski dolar
FKP = falklandski punt
GBP = britiski punt|£
GEL = georgiski lari
GHS = ghanaski cedi
GIP = gibraltiski punt
GMD = gambiski dalasi
GNF = guineski frank||0
GTQ = guatemalski quetzal
GWP = Guinea-Bissau peso|||1
GYD = guyański dolar
HKD = hongkongski dolar|HK$
HNL = honduraska lempira
HRK = chorwatska kuna
HTG = haitiska gourda
HUF = madźarski forint
IDR = indoneska rupija
ILS = israelski nowy šekel|₪
INR = indiska rupija|₹
IQD = irakski dinar||0
IRR = irański rial||0
ISK = islandska krona||0
JMD = jamaiski dolar
JOD = jordaniski dinar||3
JPY = japański yen|¥|0
KES = keniaski šiling
KGS = kirgiski som
KHR = kambodžaski riel
KMF = komorski frank||0
KPW = pódpołnocnokorejski won||0
KRW = pódpołdnjowokorejski won|₩|0
KWD = kuwaitski dinar||3
KYD = kajmaniski dolar
KZT = kazachski tenge
LAK = laoski kip||0
LBP = libanoński punt||0
LKR = sri-lankaska rupija
LRD = liberiski dolar
LTL = litawski litas|||1
LVL = letiski lat|||1
LYD = libyski dinar||3
MAD = marokkoski dirham
MDL = moldawiski leu
MGA = madagaskarski ariary||0
MKD = makedoński denar
MMK = myanmarski kyat||0
MNT = mongolski tugrik
MOP = macaoska pataca
MRO = mauretański ouguiya (1973–2017)||0|1
MRU = mauretański ouguiya
MUR = mauriciska rupija
MVR = malediwiska rupija
MWK = malawiski kwacha
MXN = mexiski peso|MX$
MYR = malajziski ringgit
MZE = Mozabicke escudo|||1
MZM = mosambikski metical (1980–2006)|||1
MZN = mosambikski metical
NAD = namibiski dolar
NGN = nigeriska naira
NIO = nikaraguaska cordoba
NOK = norwegska krona
NPR = nepalska rupija
NZD = nowoseelandski dolar|NZ$
OMR = omański rial||3
PAB = panamaski balboa
PEN = peruski sol
PGK = papua-neuguinejska kina
PHP = filipinski peso
PKR = pakistańska rupija
PLN = pólski złoty|zł
PYG = paraguayski guarani||0
QAR = katarski rial
RON = rumuński leu
RSD = serbiski dinar||0
RUB = ruski rubl
RWF = ruandiski frank||0
SAR = saudi-arabiski rial
SBD = salomoński dolar
SCR = seychelska rupija
SDG = sudański punt
SEK = šwedska krona
SGD = singapurski dolar
SHP = St. Helena punt
SLL = sierra-leoneski leone||0
SOS = somaliski šiling||0
SRD = surinamski dolar
SSP = pódpołdnjowosudański punt
STD = são-tomeska dobra (1977–2017)||0|1
STN = são-tomeska dobra
SVC = el-salvadorski colón|||1
SYP = syriski punt||0
SZL = swasiski lilangeni
THB = thaiski baht|฿
TJS = tadźikiski somoni
TMT = turkmeniski manat
TND = tuneziski dinar||3
TOP = tongaski paʻanga
TRY = turkojska lira|TL
TTD = trinidad-tobagoski dolar
TWD = nowy taiwański dolar|NT$
TZS = tansaniski šiling
UAH = ukrainska griwna
UGX = ugandaski šiling||0
USD = ameriski dolar|$
UYU = uruguayski peso
UZS = usbekiski sum
VEF = venezuelski bolívar (2008–2018)|||1
VES = venezuelski bolívar
VND = vietnamski dong|₫|0
VUV = vanuatski vatu||0
WST = samoaska tala
XAF = CFA-frank (BEAC)|FCFA|0
XCD = pódzajtšnokaribiski dolar|EC$
XOF = CFA-frank (BCEAO)|CFA|0
XPF = CFP-frank|CFPF|0
XXX = njeznate pjenjeze|¤||1
YER = jemeński rial||0
ZAR = pódpołdnjowoafriski rand
ZMW = sambiska kwacha
