# 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: 2013-08-29 04:32:04 +0200 (Thu, 29 Aug 2013) $
#  number=$Revision: 9287 $
#  type=mas
AED = Iropiyianí ɔ́ɔ̄ lmarabu
AOA = Iropiyianí e Angola
AUD = Iropiyianí e Austria|$
BHD = Iropiyianí e Bahareini||3
BIF = Iropiyianí e Burundi||0
BWP = Iropiyianí e Botswana
CAD = Iropiyianí e Kanada|CA$
CDF = Iropiyianí e Kongo
CHF = Iropiyianí e Uswisi
CNY = Iropiyianí e China|¥
CVE = Iropiyianí e Kepuvede
DJF = Iropiyianí e Jibuti||0
DZD = Iropiyianí e Algeria
EGP = Iropiyianí e Misri
ERN = Iropiyianí e Eritrea
ETB = Iropiyianí e Uhabeshi
EUR = Iropiyianí e yuro|€
GBP = Iropiyianí e Nkɨ́resa|£
GHC = Iropiyianí e Ghana|||1
GMD = Iropiyianí e Gambia
GNS = Iropiyianí e Gine|||1
INR = Iropiyianí e India|Rs.
JPY = Iropiyianí e Japani|¥|0
KES = Iropiyianí e Kenya|Ksh
KMF = Iropiyianí e Komoro||0
LRD = Iropiyianí e Liberia
LSL = Iropiyianí e Lesoto
LYD = Iropiyianí e Libya||3
MAD = Iropiyianí e Moroko
MGA = Iropiyianí e Bukini||0
MRO = Iropiyianí e Moritania||0
MUR = Iropiyianí e Morisi||0
MWK = Iropiyianí e Malawi
MZM = Iropiyianí e Msumbiji|||1
NAD = Iropiyianí e Namibia|$
NGN = Iropiyianí e Nijeria
RWF = Iropiyianí e Rwanda||0
SAR = Iropiyianí e Saudi
SCR = Iropiyianí e Shelisheli
SDG = Iropiyianí e Sudani
SHP = Iropiyianí e Santahelena
SLL = Iropiyianí e leoni||0
SOS = Iropiyianí e Somalia||0
STD = Iropiyianí e Saotome||0
SZL = Iropiyianí e lilangeni
TND = Iropiyianí e Tunisia||3
TZS = Iropiyianí e Tanzania||0
UGX = Iropiyianí e Uganda||0
USD = Iropiyianí ɔ́ɔ̄ lamarekani|$
XAF = Iropiyianí e CFA BEAC|FCFA|0
XOF = Iropiyianí e CFA BCEAO|CFA|0
ZAR = Iropiyianí e Afrika Kusini
ZMK = Iropiyianí e Sambia (1968–2012)||0|1
ZMW = Iropiyianí e Sambia
ZWD = Iropiyianí e Simbabwe||0|1
