# 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
AED = i-Dirham yase-United Arab Emirates
AFN = i-Afghan Afghani||0
ALL = i-Albanian Lek||0
AMD = i-Armenian Dram||0
ANG = i-Netherlands Antillean Guilder
AOA = i-Angolan Kwanza
ARS = i-Argentina Peso
AUD = i-Austrilian Dollar|A$
AWG = i-Aruban Florin
AZN = i-Azerbaijani Manat
BAM = i-Bosnia-Herzegovina Convertible Mark
BBD = i-Barbadian Dollar
BDT = i-Bangladeshi Taka
BGN = i-Bulgarian Lev
BHD = i-Bahraini Dinar||3
BIF = i-Burundian Franc||0
BMD = i-Bermudan Dollar
BND = i-Brunei Dollar
BOB = i-Bolivian Boliviano
BRL = i-Brazilian Real|R$
BSD = i-Bahamian Dollar
BTN = i-Bhutanese Ngultrum
BWP = i-Botswana Pula
BYR = i-Belarusian Ruble||0
BZD = i-Belize Dollar
CAD = i-Candian Dollar|CA$
CDF = i-Congolese Franc
CHF = i-Swiss Franc
CLP = i-Chilean Peso||0
CNY = i-Chinese Yuan|CN¥
COP = i-Colombian Peso||0
CRC = i-Costa Rican Colón||0
CUC = i-Cuban Convertable Peso
CUP = I-Cuban Peso
CVE = i-Cape Verdean Escudo
CZK = i-Czech Republic Koruna
DJF = i-Djiboutian Franc||0
DKK = i-Danish Krone
DOP = i-Dominican Peso
DZD = i-Algerian Dinar
EGP = i-Egyptian Pound
ERN = i-Eritrean Nakfa
ETB = i-Ethopian Birr
EUR = i-Euro|€
FJD = i-Fijian Dollar
FKP = i-Falkland Islands Pound
GBP = i-British Pound Sterling|£
GEL = i-Georgian Lari
GHS = i-Ghanaian Cedi
GIP = i-Gibraltar Pound
GMD = i-Gambian Dalasi
GNF = i-Gunean Franc||0
GTQ = i-Guatemalan Quetzal
GYD = i-Guyanaese Dollar||0
HKD = i-Hong Kong Dollar|HK$
HNL = i-Honduran Lempira
HRK = i-Croatian Kuna
HTG = i-Haitian Gourde
HUF = i-Hungarian Forint||0
IDR = i-Indonesian Rupiah||0
ILS = i-Israeli New Sheqel|₪
INR = i-Indian Rupee|Rs.
IQD = i-Iraqi Dinar||0
IRR = i-Iranian Rial||0
ISK = i-Icelandic Króna||0
JMD = i-Jamaican Dollar
JOD = i-Jordanian Dinar||3
JPY = i-Japanese Yen|JP¥|0
KES = i-Kenyan Shilling
KGS = i-Kyrgystani Som
KHR = i-Cambodian Riel
KMF = i-Comorian Franc||0
KPW = i-North Korean Won||0
KRW = i-South Korean Won|₩|0
KWD = i-Kuwaiti Dinar||3
KYD = i-Cayman Islands Dollar
KZT = i-Kazakhstani Tenge
LAK = i-Laotian Kip||0
LBP = i-Lebanese Pound||0
LKR = i-Sri Lankan Rupee
LRD = i-Liberian Dollar
LSL = i-Lesotho Loti
LTL = i-Lithuanian Litas
LVL = i-Latvian Lats|||1
LYD = i-Libyan Dinar||3
MAD = i-Moroccan Dirham
MDL = i-Moldovan Leu
MGA = i-Malagasy Ariary||0
MKD = i-Macedonian Denar
MMK = i-Myanma Kyat||0
MNT = i-Mongolian Tugrik||0
MOP = i-Macanese Pataca
MRO = i-Mauritanian Ouguiya||0
MUR = i-Mauritian Rupee||0
MVR = i-Maldivian Rufiyana
MWK = i-Malawian Kwacha
MXN = i-Mexican Peso|MX$
MYR = i-Malaysian Ringgit
MZN = I-Metical yase-Mozambicque
NAD = i-Namibian Dollar
NGN = i-Nigerian Naira
NIO = i-Nicaraguan Córdoba
NOK = i-Norwegian Krone
NPR = i-Nepalese Rupee
NZD = i-New Zealand Dollar|NZ$
OMR = i-Omani Rial||3
PAB = i-Panamanian Balboa
PEN = i-Peruvian Nuevo Sol
PGK = i-Papua New Guinean Kina
PHP = i-Philippine Peso
PKR = i-Pakistani Rupee||0
PLN = i-Polish Zloty
PYG = i-Paraguayan Guarani||0
QAR = i-Qatari Rial
RON = I-Romanian Leu
RSD = i-Serbian Dinar||0
RUB = i-Russian Ruble
RWF = i-Rwandan Franc||0
SAR = i-Saudi Riyal
SBD = i-Solomon Islands Dollar
SCR = i-Seychellois Rupee
SDG = i-Sudanese Pound
SEK = i-Swedish Krona
SGD = i-Singapore Dollar
SHP = i-Saint Helena Pound
SLL = i-Sierra Leonean Leone||0
SOS = i-Somali Shilling||0
SRD = i-Surinamese Dollar
SSP = Upondo waseNingizimu Sudan
STD = i-São Tomé kanye ne-Príncipe Dobra||0
SYP = i-Syrian Pound||0
SZL = i-Swazi Lilangeni
THB = i-Thai Baht|฿
TJS = i-Tajikistani Somoni
TMT = i-Turkmenistani Manat
TND = i-Tunisian Dinar||3
TOP = i-Tongan Paʻanga
TRY = i-Turkish Lira|TL
TTD = Idola lase-Trinidad nase-Tobago
TWD = i-New Taiwan Dollar|NT$
TZS = i-Tanzanian Shilling||0
UAH = i-Ukrainian Hryvnia
UGX = i-Ugandan Shilling||0
USD = i-US Dollar|US$
UYU = i-Uruguayan Peso
UZS = i-Uzbekistan Som||0
VEF = i-Venezuelan Bolívar
VND = i-Vietnamese Dong|₫|0
VUV = i-Vanuatu Vatu||0
WST = i-Samoan Tala
XAF = i-CFA Franc BCEA|FCFA|0
XCD = i-East Caribbean Dollar|EC$
XOF = i-CFA Franc BCEAO|CFA|0
XPF = i-CFP Franc|CFPF|0
XXX = Imali engaziwa|||1
YER = i-Yemeni Rial||0
ZAR = i-South African Rand|R
ZMK = i-Zambian Kwacha (1968–2012)||0|1
ZMW = i-Zambian Kwacha
