# 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 = Ɛmirete Arab Nkabɔmu Deram
AOA = Angola Kwanza
AUD = Ɔstrelia Dɔla|A$
BHD = Baren Dina||3
BIF = Burundi Frank||0
BWP = Botswana Pula
CAD = Kanada Dɔla|CA$
CDF = Kongo Frank
CNY = Yuan|CN¥
CVE = Ɛskudo
DJF = Gyebuti Frank||0
DZD = Ɔlgyeria Dina
EGP = Egypt Pɔn
ERN = Ɛretereya Nakfa
ETB = Itiopia Bir
EUR = Iro|€
GBP = Breten Pɔn|£
GHC = Ghana Sidi (1979–2007)|||1
GHS = Ghana Sidi|GH₵
GMD = Gambia Dalasi
GNS = Gini Frank|||1
INR = India Rupi|₹
JPY = Gyapan Yɛn|JP¥|0
KES = Kenya Hyelen
KMF = Komoro Frank||0
LRD = Laeberia Dɔla
LSL = Lesoto Loti
LYD = Libya Dina||3
MAD = Moroko Diram
MGA = Madagasi Frank||0
MRO = Mɔretenia Ouguiya||0
MUR = Mɔrehyeɔs Rupi||0
MWK = Malawi Kwacha
MZM = Mozambik Metical|||1
NAD = Namibia Dɔla
NGN = Naegyeria Naira
RWF = Rewanda Frank||0
SAR = Saudi Riyal
SCR = Seyhyɛls Rupi
SDG = Sudan Dina
SDP = Sudan Pɔn|||1
SHP = St Helena Pɔn
SLL = Leone||0
SOS = Somailia Hyelen||0
STD = Sao Tome ne Principe Dobra||0|1
SZL = Lilangeni
TND = Tunisia Dina||3
TZS = Tanzania Hyelen||0
UGX = Uganda Hyelen||0
USD = Amɛrika Dɔla|US$
XAF = Sefa|FCFA|0
ZAR = Afrika Anaafo Rand
ZMK = Zambia Kwacha (1968–2012)||0|1
ZMW = Zambia Kwacha
ZWD = Zimbabwe Dɔla||0|1
