// ***************************************************************************
// *
// *   Copyright (C) 1997-2005, International Business Machines
// *   Corporation and others.  All Rights Reserved.
// *
// ***************************************************************************
CurrencyData{
    // Currency metadata.  Unlike the "Currencies" element, this is
    // NOT true locale data.  It exists only in root.  The two
    // integers are the fraction digits for each currency, and the
    // rounding increment.  The fraction digits must be an integer
    // from 0..9.  If there is no rounding, the rounding increment is
    // zero.  Otherwise the rounding increment is given in units of
    // 10^(-fraction_digits).  The special tag "DEFAULT" gives the
    // meta data for all currencies not otherwise listed.
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMeta {
        ADP:intvector { 0, 0 } // Andorran Peseta: ANDORRA (AD)
        BHD:intvector { 3, 0 } // Bahraini Dinar: BAHRAIN (BH)
        BIF:intvector { 0, 0 } // Burundi Franc: BURUNDI (BI)
        BYR:intvector { 0, 0 } // Belarussian Ruble: BELARUS (BY)
        CHF:intvector { 2, 5 } // Swiss Franc: LIECHTENSTEIN (LI), SWITZERLAND (CH)
        CLF:intvector { 0, 0 } // Unidades de fomento: CHILE (CL)
        CLP:intvector { 0, 0 } // Chilean Peso: CHILE (CL)
        DJF:intvector { 0, 0 } // Djibouti Franc: DJIBOUTI (DJ)
        ESP:intvector { 0, 0 } // Spanish Pesenta: Spain (ES)
        GNF:intvector { 0, 0 } // Guinea Franc: GUINEA (GN)
        IQD:intvector { 3, 0 } // Iraqi Dinar: IRAQ (IQ)
        ITL:intvector { 0, 0 } // Italian Lira: ITALY (IT)
        JOD:intvector { 3, 0 } // Jordanian Dinar: JORDAN (JO)
        JPY:intvector { 0, 0 } // Yen: JAPAN (JP)
        KMF:intvector { 0, 0 } // Comoro Franc: COMOROS (KM)
        KRW:intvector { 0, 0 } // Won: KOREA, REPUBLIC OF (KR)
        KWD:intvector { 3, 0 } // Kuwaiti Dinar: KUWAIT (KW)
        LYD:intvector { 3, 0 } // Lybian Dinar: LIBYAN ARAB JAMAHIRIYA (LY)
        MGF:intvector { 0, 0 } // Malagasy Franc: MADAGASCAR (MG)
        OMR:intvector { 3, 0 } // Rial Omani: OMAN (OM)
        PYG:intvector { 0, 0 } // Guarani: PARAGUAY (PY)
        RWF:intvector { 0, 0 } // Rwanda Franc: RWANDA (RW)
        TND:intvector { 3, 0 } // Tunisian Dinar: TUNISIA (TN)
        TRL:intvector { 0, 0 } // Turkish Lira: TURKEY (TR)
        VUV:intvector { 0, 0 } // Vatu: VANUATU (VU)
        XAF:intvector { 0, 0 } // CFA Franc BEAC: CAMEROON (CM), CENTRAL AFRICAN REPUBLIC (CF), CHAD (TD), CONGO (CG), EQUATORIAL GUINEA (GQ), GABON (GA)
        XOF:intvector { 0, 0 } // CFA Franc BCEAO: BENIN (BJ), BURKINA FASO (BF), COTE D'IVOIRE (CI), GUINEA-BISSAU (GW), MALI (ML), NIGER (NE), SENEGAL (SN), TOGO (TG)
        XPF:intvector { 0, 0 } // CFP Franc: FRENCH POLYNESIA (PF), NEW CALEDONIA (NC), WALLIS AND FUTUNA (WF)
        DEFAULT:intvector { 2, 0 } // (All currencies not listed)
    }
    // Map from ISO 3166 country codes to ISO 4217 currency codes
    // NOTE: This is not true locale data; it exists only in ROOT
    // Last update: Tue Apr  8 16:57:42 2003
    CurrencyMap {
        _EURO { "EUR" } // : Euro
        AD { "EUR" } // ANDORRA: UAE Euro
        AE { "AED" } // UNITED ARAB EMIRATES: UAE Dirham
        AF { "AFN" } // AFGHANISTAN: Afghani
        AG { "XCD" } // ANTIGUA AND BARBUDA: East Caribbean Dollar
        AI { "XCD" } // ANGUILLA: East Caribbean Dollar
        AL { "ALL" } // ALBANIA: Leck
        AM { "AMD" } // ARMENIA: Armenian Dram
        AN { "ANG" } // NETHERLANDS ANTILLES: Netherlands Antillan Guilder
        AO { "AOA" } // ANGOLA: Kwanza
        AR { "ARS" } // ARGENTINA: Argentine Peso
        AS { "USD" } // AMERICAN SAMOA: US Dollar
        AT { "EUR" } // AUSTRIA: Euro
        AT_PREEURO { "ATS" }
        AU { "AUD" } // AUSTRALIA: Australian Dollar
        AW { "AWG" } // ARUBA: Aruban Guilder
        AX { "EUR" } // Aland Islands: Euro
        AZ { "AZM" } // AZERBAIJAN: Azerbaijanian Manat
        BA { "BAM" } // BOSNIA AND HERZEGOVINA: Convertible Marks
        BB { "BBD" } // BARBADOS: Barbados Dollar
        BD { "BDT" } // BANGLADESH: Taka
        BE { "EUR" } // BELGIUM: Euro
        BE_PREEURO { "BEF" }
        BF { "XOF" } // BURKINA FASO: CFA Franc BCEAO
        BG { "BGN" } // BULGARIA: Bulgarian Lev
        BH { "BHD" } // BAHRAIN: Bahraini Dinar
        BI { "BIF" } // BURUNDI: Burundi Franc
        BJ { "XOF" } // BENIN: CFA Franc BCEAO
        BM { "BMD" } // BERMUDA: Bermudian Dollar
        BN { "BND" } // BRUNEI DARUSSALAM: Brunei Dollar
        BO { "BOB" } // BOLIVIA: Boliviano
        BR { "BRL" } // BRAZIL: Brazilian Real
        BS { "BSD" } // BAHAMAS: Bahamian Dollar
        BV { "NOK" } // BOUVET ISLAND: Norwegian Krone
        BW { "BWP" } // BOTSWANA: Pula
        BY { "BYR" } // BELARUS: Belarussian Ruble
        BZ { "BZD" } // BELIZE: Belize Dollar
        CA { "CAD" } // CANADA: Canadian Dollar
        CC { "AUD" } // COCOS (KEELING) ISLANDS: Australian Dollar
        CD { "CDF" } // CONGO, THE DEMOCRATIC REPUBLIC OF THE: Franc Congolais
        CF { "XAF" } // CENTRAL AFRICAN REPUBLIC: CFA Franc BEAC
        CG { "XAF" } // CONGO: CFA Franc BEAC
        CH { "CHF" } // SWITZERLAND: Swiss Franc
        CI { "XOF" } // COTE D'IVOIRE: CFA Franc BCEAO
        CK { "NZD" } // COOK ISLANDS: New Zealand Dollar
        CL { "CLP" } // CHILE: Chilean Peso
        CM { "XAF" } // CAMEROON: CFA Franc BEAC
        CN { "CNY" } // CHINA: Yuan Renminbi
        CO { "COP" } // COLOMBIA: Colombian Peso
        CR { "CRC" } // COSTA RICA: Costa Rican Colon
        CS { "EUR" } // MONTENEGRO: Euro
        CS_PREEURO { "CSD" } // SERBIA: Serbian Dinar
        CU { "CUP" } // CUBA: Cuban Peso
        CV { "CVE" } // CAPE VERDE: Cape Verde Escudo
        CX { "AUD" } // CHRISTMAS ISLAND: Australian Dollar
        CY { "CYP" } // CYPRUS: Cyprus Pound
        CZ { "CZK" } // CZECH REPUBLIC: Czech Koruna
        DE { "EUR" } // GERMANY: Euro
        DE_PREEURO { "DEM" }
        DJ { "DJF" } // DJIBOUTI: Djibouti Franc
        DK { "DKK" } // DENMARK: Danish Krone
        DM { "XCD" } // DOMINICA: East Caribbean Dollar
        DO { "DOP" } // DOMINICAN REPUBLIC: Dominican Peso
        DZ { "DZD" } // ALGERIA: Algerian Dinar
        EC { "USD" } // ECUADOR: US Dollar
        EE { "EEK" } // ESTONIA: Kroon
        EG { "EGP" } // EGYPT: Egyptian Pound
        EH { "MAD" } // WESTERN SAHARA: Moroccan Dirham
        ER { "ERN" } // ERITREA: Nakfa
        ES { "EUR" } // SPAIN: Euro
        ES_PREEURO { "ESP" }
        ET { "ETB" } // ETHIOPIA: Ethiopian Birr
        FI { "EUR" } // FINLAND: Euro
        FI_PREEURO { "FIM" }
        FJ { "FJD" } // FIJI: Fiji Dollar
        FK { "FKP" } // FALKLAND ISLANDS (MALVINAS): Falkland Islands Pound
        FM { "USD" } // MICRONESIA, FEDERATED STATES OF: US Dollar
        FO { "DKK" } // FAROE ISLANDS: Danish Krone
        FR { "EUR" } // FRANCE: Euro
        FR_PREEURO { "FRF" }
        GA { "XAF" } // GABON: CFA Franc BEAC
        GB { "GBP" } // UNITED KINGDOM: Pound Sterling
        GD { "XCD" } // GRENADA: East Caribbean Dollar
        GE { "GEL" } // GEORGIA: Lari
        GF { "EUR" } // FRENCH GUIANA: Euro
        GH { "GHC" } // GHANA: Cedi
        GI { "GIP" } // GIBRALTAR: Gibraltar Pound
        GL { "DKK" } // GREENLAND: Danish Krone
        GM { "GMD" } // GAMBIA: Dalasi
        GN { "GNF" } // GUINEA: Guinea Franc
        GP { "EUR" } // GUADELOUPE: Euro
        GQ { "XAF" } // EQUATORIAL GUINEA: CFA Franc BEAC
        GR { "EUR" } // GREECE: Euro
        GR_PREEURO { "GRD" }
        GS { "GBP" } // SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS: British Pound
        GT { "GTQ" } // GUATEMALA: Quetzal
        GU { "USD" } // GUAM: US Dollar
        GW { "GWP" } // GUINEA-BISSAU: Guinea-Bissau Peso
        GY { "GYD" } // GUYANA: Guyana Dollar
        HK { "HKD" } // HONG KONG: Hong Kong Dollar
        HM { "AUD" } // HEARD ISLAND AND MCDONALD ISLANDS: Australian Dollar
        HN { "HNL" } // HONDURAS: Lempira
        HR { "HRK" } // CROATIA: Croatian kuna
        HT { "HTG" } // HAITI: Gourde
        HU { "HUF" } // HUNGARY: Forint
        ID { "IDR" } // INDONESIA: Rupiah
        IE { "EUR" } // IRELAND: Euro
        IE_PREEURO { "IEP" }
        IL { "ILS" } // ISRAEL: New Israeli Sheqel
        IN { "INR" } // INDIA: Indian Rupee
        IO { "USD" } // BRITISH INDIAN OCEAN TERRITORY: US Dollar
        IQ { "IQD" } // IRAQ: Iraqi Dinar
        IR { "IRR" } // IRAN, ISLAMIC REPUBLIC OF: Iranian Rial
        IS { "ISK" } // ICELAND: Iceland Krona
        IT { "EUR" } // ITALY: Euro
        IT_PREEURO { "ITL" }
        JM { "JMD" } // JAMAICA: Jamaican Dollar
        JO { "JOD" } // JORDAN: Jordanian Dinar
        JP { "JPY" } // JAPAN: Yen
        KE { "KES" } // KENYA: Kenyan Shilling
        KG { "KGS" } // KYRGYZSTAN: Som
        KH { "KHR" } // CAMBODIA: Riel
        KI { "AUD" } // KIRIBATI: Australian Dollar
        KM { "KMF" } // COMOROS: Comoro Franc
        KN { "XCD" } // SAINT KITTS AND NEVIS: East Caribbean Dollar
        KP { "KPW" } // KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF: North Korean Won
        KR { "KRW" } // KOREA, REPUBLIC OF: Won
        KW { "KWD" } // KUWAIT: Kuwaiti Dinar
        KY { "KYD" } // CAYMAN ISLANDS: Cayman Islands Dollar
        KZ { "KZT" } // KAZAKHSTAN: Tenge
        LA { "LAK" } // LAO PEOPLE'S DEMOCRATIC REPUBLIC: Kip
        LB { "LBP" } // LEBANON: Lebanese Pound
        LC { "XCD" } // SAINT LUCIA: East Caribbean Dollar
        LI { "CHF" } // LIECHTENSTEIN: Swiss Franc
        LK { "LKR" } // SRI LANKA: Sri Lanka Rupee
        LR { "LRD" } // LIBERIA: Liberian Dollar
        LS { "ZAR" } // LESOTHO: Rand
        LT { "LTL" } // LITHUANIA: Lithuanian Litas
        LU { "EUR" } // LUXEMBOURG: Euro
        LU_PREEURO { "LUF" }
        LV { "LVL" } // LATVIA: Latvian Lats
        LY { "LYD" } // LIBYAN ARAB JAMAHIRIYA: Lybian Dinar
        MA { "MAD" } // MOROCCO: Moroccan Dirham
        MC { "EUR" } // MONACO: Euro
        MD { "MDL" } // MOLDOVA, REPUBLIC OF: Moldovan Leu
        MG { "MGA" } // MADAGASCAR: Malagasy Ariary
        MH { "USD" } // MARSHALL ISLANDS: US Dollar
        MK { "MKD" } // MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF: Denar
        ML { "XOF" } // MALI: CFA Franc BCEAO
        MM { "MMK" } // MYANMAR: Kyat
        MN { "MNT" } // MONGOLIA: Tugrik
        MO { "MOP" } // MACAO: Pataca
        MP { "USD" } // NORTHERN MARIANA ISLANDS: US Dollar
        MQ { "EUR" } // MARTINIQUE: Euro
        MR { "MRO" } // MAURITANIA: Ouguiya
        MS { "XCD" } // MONTSERRAT: East Caribbean Dollar
        MT { "MTL" } // MALTA: Maltese Lira
        MU { "MUR" } // MAURITIUS: Mauritius Rupee
        MV { "MVR" } // MALDIVES: Rufiyaa
        MW { "MWK" } // MALAWI: Kwacha
        MX { "MXN" } // MEXICO: Mexican Peso
        MY { "MYR" } // MALAYSIA: Malaysian Ringgit
        MZ { "MZM" } // MOZAMBIQUE: Metical
        NA { "ZAR" } // NAMIBIA: Rand
        NC { "XPF" } // NEW CALEDONIA: CFP Franc
        NE { "XOF" } // NIGER: CFA Franc BCEAO
        NF { "AUD" } // NORFOLK ISLAND: Australian Dollar
        NG { "NGN" } // NIGERIA: Naira
        NI { "NIO" } // NICARAGUA: Cordoba Oro
        NL { "EUR" } // NETHERLANDS: Euro
        NL_PREEURO { "NLG" }
        NO { "NOK" } // NORWAY: Norwegian Krone
        NP { "NPR" } // NEPAL: Nepalese Rupee
        NR { "AUD" } // NAURU: Australian Dollar
        NU { "NZD" } // NIUE: New Zealand Dollar
        NZ { "NZD" } // NEW ZEALAND: New Zealand Dollar
        OM { "OMR" } // OMAN: Rial Omani
        PA { "PAB" } // PANAMA: Balboa
        PE { "PEN" } // PERU: Nuevo Sol
        PF { "XPF" } // FRENCH POLYNESIA: CFP Franc
        PG { "PGK" } // PAPUA NEW GUINEA: Kina
        PH { "PHP" } // PHILIPPINES: Philippine Peso
        PK { "PKR" } // PAKISTAN: Pakistan Rupee
        PL { "PLN" } // POLAND: Zloty
        PM { "EUR" } // SAINT PIERRE AND MIQUELON: Euro
        PN { "NZD" } // PITCAIRN: New Zealand Dollar
        PR { "USD" } // PUERTO RICO: US Dollar
        PT { "EUR" } // PORTUGAL: Euro
        PT_PREEURO { "PTE" }
        PW { "USD" } // PALAU: US Dollar
        PY { "PYG" } // PARAGUAY: Guarani
        QA { "QAR" } // QATAR: Qatari Rial
        RE { "EUR" } // REUNION: Euro
        RO { "ROL" } // ROMANIA: Leu
        RU { "RUB" } // RUSSIAN FEDERATION: Russian Ruble
        RW { "RWF" } // RWANDA: Rwanda Franc
        SA { "SAR" } // SAUDI ARABIA: Saudi Riyal
        SB { "SBD" } // SOLOMON ISLANDS: Solomon Islands Dollar
        SC { "SCR" } // SEYCHELLES: Seychelles Rupee
        SD { "SDD" } // SUDAN: Sudanese Dinar
        SE { "SEK" } // SWEDEN: Swedish Krona
        SG { "SGD" } // SINGAPORE: Singapore Dollar
        SH { "SHP" } // SAINT HELENA: Saint Helena Pound
        SI { "SIT" } // SLOVENIA: Tolar
        SJ { "NOK" } // SVALBARD AND JAN MAYEN: Norwegian Krone
        SK { "SKK" } // SLOVAKIA: Slovak Koruna
        SL { "SLL" } // SIERRA LEONE: Leone
        SM { "EUR" } // SAN MARINO: Euro
        SN { "XOF" } // SENEGAL: CFA Franc BCEAO
        SO { "SOS" } // SOMALIA: Somali Shilling
        SR { "SRD" } // SURINAME: Surinam Dollar
        ST { "STD" } // SAO TOME AND PRINCIPE: Dobra
        SV { "SVC" } // EL SALVADOR: El Salvador Colon
        SY { "SYP" } // SYRIAN ARAB REPUBLIC: Syrian Pound
        SZ { "SZL" } // SWAZILAND: Lilangeni
        TC { "USD" } // TURKS AND CAICOS ISLANDS: US Dollar
        TD { "XAF" } // CHAD: CFA Franc BEAC
        TF { "EUR" } // FRENCH SOUTHERN TERRITORIES: Euro
        TG { "XOF" } // TOGO: CFA Franc BCEAO
        TH { "THB" } // THAILAND: Baht
        TJ { "TJS" } // TAJIKISTAN: Somoni
        TK { "NZD" } // TOKELAU: New Zealand Dollar
        TL { "USD" } // TIMOR-LESTE: US Dollar
        TM { "TMM" } // TURKMENISTAN: Manat
        TN { "TND" } // TUNISIA: Tunisian Dinar
        TO { "TOP" } // TONGA: Pa'anga
        TR { "TRY" } // TURKEY: Turkish Lira
        TT { "TTD" } // TRINIDAD AND TOBAGO: Trinidad and Tobago Dollar
        TV { "AUD" } // TUVALU: Australian Dollar
        TW { "TWD" } // TAIWAN, PROVINCE OF CHINA: New Taiwan Dollar
        TZ { "TZS" } // TANZANIA, UNITED REPUBLIC OF: Tanzanian Shilling
        UA { "UAH" } // UKRAINE: Hryvnia
        UG { "UGX" } // UGANDA: Uganda Shilling
        UM { "USD" } // UNITED STATES MINOR OUTLYING ISLANDS: US Dollar
        US { "USD" } // UNITED STATES: US Dollar
        UY { "UYU" } // URUGUAY: Peso Uruguayo
        UZ { "UZS" } // UZBEKISTAN: Uzbekistan Sum
        VA { "EUR" } // HOLY SEE (VATICAN CITY STATE): Euro
        VC { "XCD" } // SAINT VINCENT AND THE GRENADINES: East Caribbean Dollar
        VE { "VEB" } // VENEZUELA: Bolivar
        VG { "USD" } // VIRGIN ISLANDS, BRITISH: US Dollar
        VI { "USD" } // VIRGIN ISLANDS, U.S.: US Dollar
        VN { "VND" } // VIET NAM: Dong
        VU { "VUV" } // VANUATU: Vatu
        WF { "XPF" } // WALLIS AND FUTUNA: CFP Franc
        WS { "WST" } // SAMOA: Tala
        YE { "YER" } // YEMEN: Yemeni Rial
        YT { "EUR" } // MAYOTTE: Euro
        YU { "YUM" } // YUGOSLAVIA: Yugoslavian Dinar
        ZA { "ZAR" } // SOUTH AFRICA: Rand
        ZM { "ZMK" } // ZAMBIA: Kwacha
        ZW { "ZWD" } // ZIMBABWE: Zimbabwe Dollar
    }

  }
