# Copyright (C) 2011 The Libphonenumber Authors

# 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.

# Generated from:
# http://en.wikipedia.org/wiki/Area_codes_in_Italy [426029162]

39010|Genoa
39011|Turin
390122|Turin
390125|Turin
390131|Alessandria
390141|Asti
39015|Biella
390161|Vercelli
390165|Aosta Valley
390166|Aosta Valley
390171|Cuneo
390183|Imperia
390185|Genoa
390187|La Spezia
3902|Milan
39030|Brescia
39031|Como
390321|Novara
390322|Novara
390324|Verbano-Cusio-Ossola
390331|Varese
390332|Varese
390341|Lecco
390342|Sondrio
390343|Sondrio
390344|Como
390346|Bergamo
39035|Bergamo
390362|Cremona/Monza
390363|Bergamo
390364|Brescia
390365|Brescia
390371|Lodi
390372|Cremona
390373|Cremona
390376|Mantua
390382|Pavia
39039|Monza
39040|Trieste
39041|Venice
390421|Venice
390422|Treviso
390423|Treviso
390424|Vicenza
390425|Rovigo
390426|Rovigo
390432|Udine
390444|Vicenza
390445|Vicenza
39045|Verona
390461|Trento
390471|Bolzano/Bozen
390481|Gorizia
39049|Padova
39050|Pisa
39051|Bologna
390521|Parma
390522|Reggio Emilia
390523|Piacenza
390532|Ferrara
390541|Rimini
390543|Forlì-Cesena
390545|Ravenna
390549|San Marino
39055|Florence
390565|Livorno
390574|Prato
390575|Arezzo
390577|Siena
390583|Lucca
390585|Massa-Carrara
390586|Livorno
39059|Modena
3906|Rome
39070|Cagliari
39071|Ancona
390731|Ancona
390732|Ancona
390733|Macerata
390734|Fermo
390735|Ascoli Piceno
390737|Macerata
39075|Perugia
390774|Rome
390776|Frosinone
390783|Oristano
390789|Sassari
39079|Sassari
39080|Bari
39081|Naples
390823|Caserta
390824|Benevento
390825|Avellino
390832|Lecce
39085|Pescara
390862|L'Aquila
390865|Isernia
390874|Campobasso
390881|Foggia
390882|Foggia
390883|Andria Barletta Trani
390884|Foggia
39089|Salerno
39090|Messina
39091|Palermo
390921|Palermo
390922|Agrigento
390924|Trapani
390925|Agrigento
390933|Caltanissetta
390934|Caltanissetta and Enna
390942|Catania
39095|Catania
390961|Catanzaro
390962|Crotone
390963|Vibo Valentia
390965|Reggio Calabria
390974|Salerno
390975|Potenza
39099|Taranto
