# 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=teo
AED = Ango'otol lok' Falme za Kiarabu
AOA = Ango'otol lok' Angola
AUD = Ango'otol lok' Australia|$
BHD = Ango'otol lok' Bahareni||3
BIF = Ango'otol lok' Burundi||0
BWP = Ango'otol lok' Botswana
CAD = Edola lok'Kanada|CA$
CDF = Ango'otol lok' Kongo
CHF = Ango'otol lok' Uswisi
CNY = Ango'otol lok' China|¥
CVE = Ango'otol lok' Kepuvede
DJF = Ango'otol lok' Jibuti||0
DZD = Ango'otol lok' Aljeria
EGP = Epaunt lok' Misri
ERN = Ango'otol lok' Eritrea
ETB = Ango'otol lok' Uhabeshi
EUR = Yuro|€
GBP = Epaunt lok' Uingereza|£
GHC = Sedi ya Ghana|||1
GMD = Dalasi ya Gambia
GNS = Ango'otol lok' Gine|||1
INR = Ango'otol lok' India|Rs.
JPY = Ango'otol lok' Kijapani|¥|0
KES = Ango'otol lok' Kenya
KMF = Ango'otol lok' Komoro||0
LRD = edola lok' Liberia
LSL = Ango'otol lok' Lesoto
LYD = Ango'otol lok' Libya||3
MAD = Ango'otol lok' Moroko
MGA = Ango'otol lok' Bukini||0
MRO = Ango'otol lok' Moritania||0
MUR = Ango'otol lok' Morisi||0
MWK = Ango'otol lok' Malawi
MZM = Ango'otol lok' Msumbiji|||1
NAD = Ango'otol lok' Namibia|$
NGN = Ango'otol lok' Nijeria
RWF = Ango'otol lok' Rwanda||0
SAR = Ango'otol lok' Saudia
SCR = Ango'otol lok' Shelisheli
SDG = Epaunt Lok' Sudan
SHP = Ango'otol lok' Santahelena
SLL = Leoni||0
SOS = Ango'otol lok' Somalia||0
STD = Ango'otol lok' Sao Tome na Principe||0
SZL = Lilangeni
TND = Ango'otol lok' Tunisia||3
TZS = Ango'otol lok' Tanzania||0
UGX = Ango'otol lok' Uganda|USh|0
USD = edola lok' Amareka|$
XAF = Ango'otol lok' CFA BEAC|FCFA|0
XOF = Ango'otol lok' CFA BCEAO|CFA|0
ZAR = Ango'otol lok' Afrika Kusini
ZMK = Ango'otol lok' Zambia (1968–2012)||0|1
ZMW = Ango'otol lok' Zambia
ZWD = Edola lok'Zimbabwe||0|1
