# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (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.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# Contributor(s):
#   Gintautas Grigas <grigas@ktl.mii.lt>
#   Tatjana Jevsikova <tatjanaj@julius.ktl.mii.lt>
#   Rimas Kudelis <rq@akl.lt>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****

ad =  Andora
ae	=  Jungtiniai Arabų Emyratai
af =  Afganistanas
ag =  Antigva ir Barbuda
ai =  Angilija
al =  Albanija
am =  Armėmija
an =  Nyderlandų Antilai
ao =  Angola
aq =  Antarktida
ar =  Argentina
as =  Amerikos Samoa
at =  Austrija
au =  Australija
aw =  Aruba
ax =  Alandų salos
az =  Azerbaidžanas
ba =  Bosnija ir Hercegovina
bb =  Barbadosas
bd =  Bangladešas
be =  Belgija
bf =  Burkina Fasas
bg =  Bulgarija
bh	=  Bahreinas
bi =  Burundis
bj =  Beninas
bl =  Sen Bartelemis
bm =  Bermudai
bn =  Brunėjus
bo =  Bolivija
br =  Brazilija
bs =  Bahamai
bt =  Butanas
bv =  Buvė sala
bw =  Botsvana
by =  Baltarusija
bz =  Belizas
ca =  Kanada
cc =  Kokosų (Kylingo) salos
cd =  Kongo Demokratinė Respublika
cf =  Centrinės Afrikos Respublika
cg =  Kongo Respublika
ch =  Šveicarija
ci =  Dramblio Kaulo Krantas
ck =  Kuko salos
cl =  Čilė
cm =  Kamerūnas
cn =  Kinija
co =  Kolumbija
cr =  Kosta Rika
cu =  Kuba
cv =  Žaliasis Kyšulys
cx =  Kalėdų sala
cy =  Kipras
cz =  Čekija
de =  Vokietija
dj =  Džibutis
dk =  Danija
dm =  Dominika
do =  Dominikos Respublika
dz	=  Alžyras
ec =  Ekvadoras
ee =  Estija
eg	=  Egiptas
eh =  Vakarų Sachara
er =  Eritrėja
es =  Ispanija
et =  Etiopija
fi =  Suomija
fj =  Fidžis
fk =  Falklando (Malvinų) salos
fm =  Mikronezija
fo =  Farerų salos
fr =  Prancūzija
ga =  Gabonas
gb =  Jungtinė Karalystė
gd =  Grenada
ge =  Gruzija
gf =  Prancūzų Gviana
gg =  Guernsis
gh =  Gana
gi =  Gibraltarqw
gl =  Grenlandija
gm =  Gambija
gn =  Gvinėja
gp =  Gvadelupa
gq =  Pusiaujo Gvinėja
gr =  Graikija
gs =  Pietų Džordžija ir Pietų Sandvičo salos
gt =  Gvatemala
gu =  Guamas
gw =  Bisau Gvinėja
gy =  Gajana
hk =  Honkongas
hm =  Herdo ir Makdonaldo salos
hn =  Hondūras
hr =  Kroatija
ht =  Haitis
hu =  Vengrija
id =  Indonezija
ie =  Airija
il =  Izraelis
im =  Meno sala
in =  Indija
io =  Britų teritorija Indijos vandenyne
iq	=  Irakas
ir =  Iranas
is =  Islandija
it =  Italija
je =  Džersis
jm =  Jamaika
jo	=  Jordanija
jp	=  Japonija
ke =  Kenija
kg =  Kirgizija
kh =  Kambodža
ki =  Kiribatis
km =  Komorai
kn =  Sent Kitsas ir Nevis
kp	=  Šiaurės Korėja
kr	=  Pietų Korėja 
kw	=  Kuveitas
ky =  Kaimanų salos
kz =  Kazachija
la =  Laosas
lb	=  Libanas
lc =  Sent Lusija
li	=  Lichtenšteinas
lk =  Šri Lanka
lr =  Liberija
ls =  Lesotas
lt =  Lietuva
lu	=  Liuksemburgas
lv =  Latvija
ly	=  Libija
ma	=  Marokas
mc	=  Monakas
md	=  Moldovos Respublika
me =  Juodkalnija
mf =  Sen Martenas
mg =  Madagaskaras
mh =  Maršalo salos
mk	=  Makedonija
ml =  Malis
mm =  Mianmaras
mn =  Mongolija
mo	=  Makao 
mp =  Marianos šiaurinės salos
mq =  Martinika
mr =  Mauritanija
ms =  Montseratas
mt =  Malta
mu =  Mauricijus
mv =  Maldyvai
mw =  Malavis
mx	=  Meksika
my	=  Malaizija
mz =  Mozambikas
na =  Namibija
nc =  Naujoji Kaledonija
ne =  Nigeris
nf =  Norfolko sala
ng =  Nigerija
ni	=  Nikaragva
nl =  Nyderlandai
no =  Norvegija
np =  Nepalas
nr =  Nauru
nu =  Niujės sala
nz	=  Naujoji Zelandija
om	=  Omanas
pa	=  Panama
pe	=  Peru
pf =  Prancūzijos Polinezija
pg =  Papua Naujoji Gvinėja
ph	=  Filipinai
pk	=  Pakistanas
pl	=  Lenkija
pm =  Sent Pjeras ir Mikelonas
pn =  Pitkerno salos
pr	=  Puerto Rikas
ps =  Palestina
pt =  Portugalija
pw =  Palau
py	=  Paragvajus
qa	=  Kataras
re =  Reunionas
ro =  Rumunija
rs =  Serbija
ru	=  Rusija
rw =  Ruanda
sa	=  Saudo Arabija
sb =  Saliamono salos
sc =  Seišeliai
sd =  Sudanas
se	=  Švedija
sg	=  Singapūras
sh =  Šventosios Elenos sala
si =  Slovėnija
sj =  Svalbardas ir Jan Mayenas
sk =  Slovakija
sl =  Siera Leonė
sm =  San Marinas
sn =  Senegalas
so =  Somalis
sr =  Surinamas
st =  San Tomė ir Prinsipė
sv	=  Salvadoras
sy	=  Sirija
sz =  Svazilandas
tc =  Terkso ir Kaiko salos
td =  Čadas
tf =  Prancūzijos Pietų ir Antarkties sritys
tg =  Togas
th =  Tailandas
tj =  Tadžikistanas
tk =  Tokelau
tl =  Rytų Timoras
tm =  Turkmėnistanas
tn	=  Tunisas
to =  Tonga
tr =  Turkija
tt	=  Trinidadas
tv =  Tuvalu
tw	=  Taivanis
tz =  Tanzanija
ua =  Ukraina
ug =  Uganda
um =  Nutolusios smulkios JAV salos
us	=  Jungtinės Amerikos Valstijos
uy	=  Urugvajus
uz =  Uzbekistanas
va =  Vatikanas
vc =  Sent Vinsentas ir Grenadinai
ve	=  Venesuela
vg =  Didžiosios Britanijos Mergelių salos
vi =  JAV Mergelių salos
vn =  Vietnamas
vu =  Vanuatu
wf =  Volio ir Futunos salos
ws =  Samoa
ye	=  Jemenas
yt =  Majotas
za	=  Pietų Afrikos Respublika
zm =  Zambija
zw	=  Zimbabvė
