From d7b645d428647f31e2a575162d2931d471bc018a Mon Sep 17 00:00:00 2001 From: Jaime Nunes Leal Date: Mon, 18 Nov 2024 18:05:01 -0300 Subject: [PATCH 1/3] =?UTF-8?q?Utilit=C3=A1rio=20que=20retorna=20Munic?= =?UTF-8?q?=C3=ADpio=20e=20UF=20a=20partir=20do=20C=C3=B3digo=20IBGE=20(#4?= =?UTF-8?q?12)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + README.md | 20 ++++++++ README_EN.md | 22 +++++++- brutils/__init__.py | 4 ++ brutils/ibge/municipality.py | 81 +++++++++++++++++++++++++++++ tests/ibge/test_municipality.py | 90 +++++++++++++++++++++++++++++++++ 6 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 brutils/ibge/municipality.py create mode 100644 tests/ibge/test_municipality.py diff --git a/CHANGELOG.md b/CHANGELOG.md index b1546edc..9650cc14 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Utilitário `convert_code_to_uf` [#397](https://github.com/brazilian-utils/brutils-python/pull/410) +- Utilitário `get_municipality_by_code` [412](https://github.com/brazilian-utils/brutils-python/pull/412) ## [2.2.0] - 2024-09-12 diff --git a/README.md b/README.md index 73769b04..be1a52ac 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ False - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) - [convert_code_to_uf](#convert_code_to_uf) + - [get\_municipality\_by\_code](#get_municipality_by_code) ## CPF @@ -1087,6 +1088,7 @@ Exemplo: ``` ## IBGE + ### convert_code_to_uf Converte um determinado código do IBGE (string de 2 dígitos) para sua UF (abreviatura estadual) correspondente. @@ -1109,6 +1111,24 @@ Exemplo: >>> ``` +### get_municipality_by_code + +Retorna o nome do município e a UF para um código do IBGE. + +Args: + * code (str): O código do IBGE para o município. + +Returns: + * tuple: Retorna uma Tupla formatado como ("Município", "UF"). + * None: Retorna None se o código for inválido. + +Example: + +```python +>>> from brutils import get_municipality_by_code +>>> get_municipality_by_code(3550308) +("São Paulo", "SP") +``` # Novos Utilitários e Reportar Bugs diff --git a/README_EN.md b/README_EN.md index 7917b673..58a24862 100644 --- a/README_EN.md +++ b/README_EN.md @@ -89,6 +89,7 @@ False - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) - [convert_code_to_uf](#convert_code_to_uf) + - [get\_municipality\_by\_code](#get_municipality_by_code) ## CPF @@ -1088,8 +1089,8 @@ Example: >>> generate_voter_id(federative_union ="MG") '950125640248' ``` - ## IBGE + ### convert_code_to_uf Converts a given IBGE code (2-digit string) to its corresponding UF (state abbreviation). @@ -1112,6 +1113,25 @@ Exemplo: >>> ``` +### get_municipality_by_code + +Returns the municipality name and UF for a given IBGE code. + +Args: + * code (str): The IBGE code of the municipality. + +Returns: + * tuple: Returns a tuple formatted as ("Município", "UF"). + * None: Returns None if the code is not valid. + +Example: + +```python +>>> from brutils import get_municipality_by_code +>>> get_municipality_by_code(3550308) +("São Paulo", "SP") +``` + # Feature Request and Bug Report If you want to suggest new features or report bugs, simply create diff --git a/brutils/__init__.py b/brutils/__init__.py index 6959a0d0..fc7f35a3 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -44,6 +44,9 @@ # Email Import from brutils.email import is_valid as is_valid_email +from brutils.ibge.municipality import ( + get_municipality_by_code, +) # IBGE Imports from brutils.ibge.uf import ( @@ -172,4 +175,5 @@ "is_valid_voter_id", # IBGE "convert_code_to_uf", + "get_municipality_by_code", ] diff --git a/brutils/ibge/municipality.py b/brutils/ibge/municipality.py new file mode 100644 index 00000000..c3ffb7ff --- /dev/null +++ b/brutils/ibge/municipality.py @@ -0,0 +1,81 @@ +import gzip +import io +import json +from urllib.error import HTTPError +from urllib.request import urlopen + + +def get_municipality_by_code(code): # type: (str) -> Tuple[str, str] | None + """ + Returns the municipality name and UF for a given IBGE code. + + This function takes a string representing an IBGE municipality code + and returns a tuple with the municipality's name and its corresponding UF. + + Args: + code (str): The IBGE code of the municipality. + + Returns: + tuple: A tuple formatted as ("Município", "UF"). + - Returns None if the code is not valid. + + Example: + >>> get_municipality_by_code("3550308") + ("São Paulo", "SP") + """ + baseUrl = ( + f"https://servicodados.ibge.gov.br/api/v1/localidades/municipios/{code}" + ) + try: + with urlopen(baseUrl) as f: + compressed_data = f.read() + if f.info().get("Content-Encoding") == "gzip": + try: + with gzip.GzipFile( + fileobj=io.BytesIO(compressed_data) + ) as gzip_file: + decompressed_data = gzip_file.read() + except OSError as e: + print(f"Erro ao descomprimir os dados: {e}") + return None + except Exception as e: + print(f"Erro desconhecido ao descomprimir os dados: {e}") + return None + else: + decompressed_data = compressed_data + + if _is_empty(decompressed_data): + print(f"{code} é um código inválido") + return None + + except HTTPError as e: + if e.code == 404: + print(f"{code} é um código inválido") + return None + else: + print(f"Erro HTTP ao buscar o código {code}: {e}") + return None + + except Exception as e: + print(f"Erro desconhecido ao buscar o código {code}: {e}") + return None + + try: + json_data = json.loads(decompressed_data) + return _get_values(json_data) + except json.JSONDecodeError as e: + print(f"Erro ao decodificar os dados JSON: {e}") + return None + except KeyError as e: + print(f"Erro ao acessar os dados do município: {e}") + return None + + +def _get_values(data): + municipio = data["nome"] + estado = data["microrregiao"]["mesorregiao"]["UF"]["sigla"] + return (municipio, estado) + + +def _is_empty(zip): + return zip == b"[]" or len(zip) == 0 diff --git a/tests/ibge/test_municipality.py b/tests/ibge/test_municipality.py new file mode 100644 index 00000000..516febb3 --- /dev/null +++ b/tests/ibge/test_municipality.py @@ -0,0 +1,90 @@ +import gzip +from json import JSONDecodeError +from unittest import TestCase, main +from unittest.mock import MagicMock, patch +from urllib.error import HTTPError + +from brutils.ibge.municipality import get_municipality_by_code + + +class TestIBGE(TestCase): + def test_get_municipality_by_code(self): + self.assertEqual( + get_municipality_by_code("3550308"), ("São Paulo", "SP") + ) + self.assertEqual( + get_municipality_by_code("3304557"), ("Rio de Janeiro", "RJ") + ) + self.assertEqual(get_municipality_by_code("5208707"), ("Goiânia", "GO")) + self.assertIsNone(get_municipality_by_code("1234567")) + + @patch("brutils.ibge.municipality.urlopen") + def test_get_municipality_http_error(self, mock): + mock.side_effect = HTTPError( + "http://fakeurl.com", 404, "Not Found", None, None + ) + result = get_municipality_by_code("342432") + self.assertIsNone(result) + + @patch("brutils.ibge.municipality.urlopen") + def test_get_municipality_http_error_1(self, mock): + mock.side_effect = HTTPError( + "http://fakeurl.com", 401, "Denied", None, None + ) + result = get_municipality_by_code("342432") + self.assertIsNone(result) + + @patch("brutils.ibge.municipality.urlopen") + def test_get_municipality_excpetion(self, mock): + mock.side_effect = Exception("Erro desconhecido") + result = get_municipality_by_code("342432") + self.assertIsNone(result) + + @patch("brutils.ibge.municipality.urlopen") + def test_successfull_decompression(self, mock_urlopen): + valid_json = '{"nome":"São Paulo","microrregiao":{"mesorregiao":{"UF":{"sigla":"SP"}}}}' + compressed_data = gzip.compress(valid_json.encode("utf-8")) + mock_response = MagicMock() + mock_response.read.return_value = compressed_data + mock_response.info.return_value.get.return_value = "gzip" + mock_urlopen.return_value.__enter__.return_value = mock_response + + result = get_municipality_by_code("3550308") + self.assertEqual(result, ("São Paulo", "SP")) + + @patch("brutils.ibge.municipality.urlopen") + def test_successful_json_without_compression(self, mock_urlopen): + valid_json = '{"nome":"São Paulo","microrregiao":{"mesorregiao":{"UF":{"sigla":"SP"}}}}' + mock_response = MagicMock() + mock_response.read.return_value = valid_json + mock_urlopen.return_value.__enter__.return_value = mock_response + + result = get_municipality_by_code("3550308") + self.assertEqual(result, ("São Paulo", "SP")) + + @patch("gzip.GzipFile.read", side_effect=OSError("Erro na descompressão")) + def test_error_decompression(self, mock_gzip_read): + result = get_municipality_by_code("3550308") + self.assertIsNone(result) + + @patch( + "gzip.GzipFile.read", + side_effect=Exception("Erro desconhecido na descompressão"), + ) + def test_error_decompression_generic_exception(self, mock_gzip_read): + result = get_municipality_by_code("3550308") + self.assertIsNone(result) + + @patch("json.loads", side_effect=JSONDecodeError("error", "city.json", 1)) + def test_error_json_load(self, mock_json_loads): + result = get_municipality_by_code("3550308") + self.assertIsNone(result) + + @patch("json.loads", side_effect=KeyError) + def test_error_json_key_error(self, mock_json_loads): + result = get_municipality_by_code("3550308") + self.assertIsNone(result) + + +if __name__ == "__main__": + main() From a46eafe207e097b0a61dc76446812f05c5d3e59d Mon Sep 17 00:00:00 2001 From: Gustavo Berned <37390081+BeneBr@users.noreply.github.com> Date: Thu, 19 Dec 2024 09:36:08 -0300 Subject: [PATCH 2/3] =?UTF-8?q?394=20-=20Converter=20data=20no=20formato?= =?UTF-8?q?=20brasileiro=20para=20uma=20representa=C3=A7=C3=A3o=20textual?= =?UTF-8?q?=20(#415)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Convert date to text representation Converts a given date in brazilian format to its textual representation. 394 * Add some coverage suggestions * Fix test implementation for testMonthEnum --- .github/workflows/run-tests.yml | 2 +- CHANGELOG.md | 1 + CONTRIBUTING.md | 2 +- README.md | 29 ++++++++++++ README_EN.md | 28 ++++++++++++ brutils/__init__.py | 5 +++ brutils/data/enums/months.py | 57 +++++++++++++++++++++++ brutils/date.py | 64 ++++++++++++++++++++++++++ poetry.lock | 26 ++++++++++- pyproject.toml | 1 + tests/test_date.py | 80 +++++++++++++++++++++++++++++++++ 11 files changed, 292 insertions(+), 3 deletions(-) create mode 100644 brutils/data/enums/months.py create mode 100644 brutils/date.py create mode 100644 tests/test_date.py diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index d8fce744..86c4c39f 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -18,7 +18,7 @@ jobs: python-version: ${{ matrix.python-version }} - name: Generate Report run: | - pip install coverage + pip install coverage num2words coverage run -m unittest discover tests/ - name: Upload Coverage to Codecov uses: codecov/codecov-action@v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9650cc14..39a775ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Utilitário `convert_code_to_uf` [#397](https://github.com/brazilian-utils/brutils-python/pull/410) +- Utilitário `convert_date_to_text`[#394](https://github.com/brazilian-utils/brutils-python/pull/415) - Utilitário `get_municipality_by_code` [412](https://github.com/brazilian-utils/brutils-python/pull/412) ## [2.2.0] - 2024-09-12 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 26c4b8da..756e0891 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -98,7 +98,7 @@ emulate bash -c '. .../bin/activate' Para testar se o ambiente virtual está ativo corretamente, execute o comando e verifique se a resposta é algo parecido com a seguinte: ```sh -$ poetry env inf +$ poetry env info Virtualenv Python: 3.x.y Implementation: CPython diff --git a/README.md b/README.md index be1a52ac..9fefad21 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,8 @@ False - [generate\_phone](#generate_phone) - [Email](#email) - [is\_valid\_email](#is_valid_email) +- [Data](#date) + - [convert\_date\_to_text](#convert_date_to_text) - [Placa de Carro](#placa-de-carro) - [is\_valid\_license\_plate](#is_valid_license_plate) - [format\_license\_plate](#format_license_plate) @@ -629,6 +631,33 @@ False False ``` +## Data + +## convert_date_to_text + +Converte uma data em sua representação textual. + +Argumentos: + - date (str): Uma string no formato dd/mm/aaaa + +Retorna: + - A represetação textual da data ou None caso a data esteja mal formatada ou a data seja inválida. + +Exemplo: + +````python +>>> from brutils import convert_date_to_text +>>> convert_date_to_text("25/12/2000") +"Vinte e cinco de dezembro de dois mil" +>>> convert_date_to_text("31/02/2000") +None +>>> convert_date_to_text("29/02/2024") +"Vinte e nove de fevereiro de dois mil e vinte e quatro" +>>> convert_date_to_text("1/08/2024") +"Primeiro de agosto de dois mil e vinte e quatro" +```` + + ## Placa de Carro ### is_valid_license_plate diff --git a/README_EN.md b/README_EN.md index 58a24862..fa2037a7 100644 --- a/README_EN.md +++ b/README_EN.md @@ -58,6 +58,8 @@ False - [generate\_cep](#generate_cep) - [get\_address\_from\_cep](#get_address_from_cep) - [get\_cep\_information\_from\_address](#get_cep_information_from_address) +- [Date](#date) + - [convert\_date\_to_text](#convert_date_to_text) - [Phone](#phone) - [is\_valid\_phone](#is_valid_phone) - [format\_phone](#format_phone) @@ -449,6 +451,32 @@ Example: ] ``` +## Date + +### convert_date_to_text +Convert a brazilian date (dd/mm/yyyy) format in their portuguese textual representation. + +Args: + - date (str): A date in a string format dd/mm/yyyy. + +Return: + - (str) | None: A portuguese textual representation of the date or None case a date is invalid. + + +Example: + +````python +>>> from brutils import convert_date_to_text +>>> convert_date_to_text("25/12/2000") +"Vinte e cinco de dezembro de dois mil" +>>> convert_date_to_text("31/02/2000") +None +>>> convert_date_to_text("29/02/2024") +"Vinte e nove de fevereiro de dois mil e vinte e quatro" +>>> convert_date_to_text("1/08/2024") +"Primeiro de agosto de dois mil e vinte e quatro" +```` + ## Phone ### is_valid_phone diff --git a/brutils/__init__.py b/brutils/__init__.py index fc7f35a3..6a7b6d43 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -42,6 +42,9 @@ remove_symbols as remove_symbols_cpf, ) +# Date imports +from brutils.date import convert_date_to_text + # Email Import from brutils.email import is_valid as is_valid_email from brutils.ibge.municipality import ( @@ -144,6 +147,8 @@ "generate_cpf", "is_valid_cpf", "remove_symbols_cpf", + # Date + "convert_date_to_text", # Email "is_valid_email", # Legal Process diff --git a/brutils/data/enums/months.py b/brutils/data/enums/months.py new file mode 100644 index 00000000..5e22e56f --- /dev/null +++ b/brutils/data/enums/months.py @@ -0,0 +1,57 @@ +from brutils.data.enums.better_enum import BetterEnum + + +class MonthsEnum(BetterEnum): + JANEIRO = 1 + FEVEREIRO = 2 + MARCO = 3 + ABRIL = 4 + MAIO = 5 + JUNHO = 6 + JULHO = 7 + AGOSTO = 8 + SETEMBRO = 9 + OUTUBRO = 10 + NOVEMBRO = 11 + DEZEMBRO = 12 + + @property + def month_name(self) -> str: + if self == MonthsEnum.JANEIRO: + return "janeiro" + elif self == MonthsEnum.FEVEREIRO: + return "fevereiro" + elif self == MonthsEnum.MARCO: + return "marco" + elif self == MonthsEnum.ABRIL: + return "abril" + elif self == MonthsEnum.MAIO: + return "maio" + elif self == MonthsEnum.JUNHO: + return "junho" + elif self == MonthsEnum.JULHO: + return "julho" + elif self == MonthsEnum.AGOSTO: + return "agosto" + elif self == MonthsEnum.SETEMBRO: + return "setembro" + elif self == MonthsEnum.OUTUBRO: + return "outubro" + elif self == MonthsEnum.NOVEMBRO: + return "novembro" + else: + return "dezembro" + + @classmethod + def is_valid_month(cls, month: int) -> bool: + """ + Checks if the given month value is valid. + Args: + month (int): The month to check. + + Returns: + True if the month is valid, False otherwise. + """ + return ( + True if month in set(month.value for month in MonthsEnum) else False + ) diff --git a/brutils/date.py b/brutils/date.py new file mode 100644 index 00000000..98645017 --- /dev/null +++ b/brutils/date.py @@ -0,0 +1,64 @@ +import re +from typing import Union + +from num2words import num2words + +from brutils.data.enums.months import MonthsEnum + + +def convert_date_to_text(date: str) -> Union[str, None]: + """ + Converts a given date in Brazilian format (dd/mm/yyyy) to its textual representation. + + This function takes a date as a string in the format dd/mm/yyyy and converts it + to a string with the date written out in Brazilian Portuguese, including the full + month name and the year. + + Args: + date (str): The date to be converted into text. Expected format: dd/mm/yyyy. + + Returns: + str or None: A string with the date written out in Brazilian Portuguese, + or None if the date is invalid. + + """ + pattern = re.compile(r"\d{2}/\d{2}/\d{4}") + if not re.match(pattern, date): + raise ValueError( + "Date is not a valid date. Please pass a date in the format dd/mm/yyyy." + ) + + day_str, month_str, year_str = date.split("/") + day = int(day_str) + month = int(month_str) + year = int(year_str) + + if 0 <= day > 31: + return None + + if not MonthsEnum.is_valid_month(month): + return None + + # Leap year. + if MonthsEnum(int(month)) is MonthsEnum.FEVEREIRO: + if (int(year) % 4 == 0 and int(year) % 100 != 0) or ( + int(year) % 400 == 0 + ): + if day > 29: + return None + else: + if day > 28: + return None + + day_string = "Primeiro" if day == 1 else num2words(day, lang="pt") + month = MonthsEnum(month) + year_string = num2words(year, lang="pt") + + date_string = ( + day_string.capitalize() + + " de " + + month.month_name + + " de " + + year_string + ) + return date_string diff --git a/poetry.lock b/poetry.lock index 16594c01..fefb6af4 100644 --- a/poetry.lock +++ b/poetry.lock @@ -84,6 +84,30 @@ files = [ [package.extras] toml = ["tomli"] +[[package]] +name = "docopt" +version = "0.6.2" +description = "Pythonic argument parser, that will make you smile" +optional = false +python-versions = "*" +files = [ + {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, +] + +[[package]] +name = "num2words" +version = "0.5.13" +description = "Modules to convert numbers to words. Easily extensible." +optional = false +python-versions = "*" +files = [ + {file = "num2words-0.5.13-py3-none-any.whl", hash = "sha256:39e662c663f0a7e15415431ea68eb3dc711b49e3b776d93403e1da0a219ca4ee"}, + {file = "num2words-0.5.13.tar.gz", hash = "sha256:a3064716fbbf90d75c449450cebfbc73a6a13e63b2531d09bdecc3ab1a2209cf"}, +] + +[package.dependencies] +docopt = ">=0.6.2" + [[package]] name = "ruff" version = "0.6.7" @@ -114,4 +138,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.8.1" -content-hash = "989d447f5ac999811a4e25ed6b1fc0749aa127fb45290a675b17e652d85b4123" +content-hash = "957675c81621c16701bae337f25dc9571f3c2a787002725627de366f1b01d16a" diff --git a/pyproject.toml b/pyproject.toml index e70382e8..7d967168 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ classifiers = [ [tool.poetry.dependencies] python = "^3.8.1" +num2words = "0.5.13" [tool.poetry.group.test.dependencies] coverage = "^7.2.7" diff --git a/tests/test_date.py b/tests/test_date.py new file mode 100644 index 00000000..3691ec76 --- /dev/null +++ b/tests/test_date.py @@ -0,0 +1,80 @@ +from unittest import TestCase + +from num2words import num2words + +from brutils import convert_date_to_text +from brutils.data.enums.months import MonthsEnum + + +class TestNum2Words(TestCase): + def test_num_conversion(self) -> None: + """ + Smoke test of the num2words library. + This test is used to guarantee that our dependency still works. + """ + self.assertEqual(num2words(30, lang="pt-br"), "trinta") + self.assertEqual(num2words(42, lang="pt-br"), "quarenta e dois") + self.assertEqual( + num2words(2024, lang="pt-br"), "dois mil e vinte e quatro" + ) + self.assertEqual(num2words(0, lang="pt-br"), "zero") + self.assertEqual(num2words(-1, lang="pt-br"), "menos um") + + +class TestDate(TestCase): + def test_convert_date_to_text(self): + self.assertEqual( + convert_date_to_text("15/08/2024"), + "Quinze de agosto de dois mil e vinte e quatro", + ) + self.assertEqual( + convert_date_to_text("01/01/2000"), + "Primeiro de janeiro de dois mil", + ) + self.assertEqual( + convert_date_to_text("31/12/1999"), + "Trinta e um de dezembro de mil novecentos e noventa e nove", + ) + + # + self.assertIsNone(convert_date_to_text("30/02/2020"), None) + self.assertIsNone(convert_date_to_text("30/00/2020"), None) + self.assertIsNone(convert_date_to_text("30/02/2000"), None) + self.assertIsNone(convert_date_to_text("50/09/2000"), None) + self.assertIsNone(convert_date_to_text("25/15/2000"), None) + self.assertIsNone(convert_date_to_text("29/02/2019"), None) + + # Invalid date pattern. + self.assertRaises(ValueError, convert_date_to_text, "Invalid") + self.assertRaises(ValueError, convert_date_to_text, "25/1/2020") + self.assertRaises(ValueError, convert_date_to_text, "1924/08/20") + self.assertRaises(ValueError, convert_date_to_text, "5/09/2020") + + self.assertEqual( + convert_date_to_text("29/02/2020"), + "Vinte e nove de fevereiro de dois mil e vinte", + ) + self.assertEqual( + convert_date_to_text("01/01/1900"), + "Primeiro de janeiro de mil e novecentos", + ) + + months_year = [ + (1, "janeiro"), + (2, "fevereiro"), + (3, "marco"), + (4, "abril"), + (5, "maio"), + (6, "junho"), + (7, "julho"), + (8, "agosto"), + (9, "setembro"), + (10, "outubro"), + (11, "novembro"), + (12, "dezembro"), + ] + + def testMonthEnum(self): + for number_month, name_month in self.months_year: + month = MonthsEnum(number_month) + self.assertEqual(month.month_name, name_month) From c36d581cd6152765d8e38e75b2f1de0ce73c7328 Mon Sep 17 00:00:00 2001 From: Carlos Eduardo caldeira Date: Thu, 19 Dec 2024 10:48:04 -0300 Subject: [PATCH 3/3] feat:retorna codigo do ibge do nome do municipio e da uf (#411) * feat:retorna codigo do ibge do nome do municipio e da uf * feat:altera estrutura do arquivo json usado para obter os codigos dos municipios do IBGE * update CHANGELOG.md and README about get_code_by_municipality_name function * Apply suggestions from code review * Apply suggestions from code review * Apply suggestions from code review * Update tests/ibge/test_municipality.py --------- Co-authored-by: Carlos Eduardo Caldeira Co-authored-by: Camila Maia --- CHANGELOG.md | 2 + README.md | 31 + README_EN.md | 35 + brutils/__init__.py | 6 +- brutils/data/cities_code.json | 5626 +++++++++++++++++++++++++++++++ brutils/ibge/municipality.py | 86 + tests/ibge/test_municipality.py | 43 +- 7 files changed, 5826 insertions(+), 3 deletions(-) create mode 100644 brutils/data/cities_code.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 39a775ec..7bb57c98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Utilitário `convert_date_to_text`[#394](https://github.com/brazilian-utils/brutils-python/pull/415) - Utilitário `get_municipality_by_code` [412](https://github.com/brazilian-utils/brutils-python/pull/412) +- Utilitário `get_code_by_municipality_name` [#399](https://github.com/brazilian-utils/brutils-python/issues/399) + ## [2.2.0] - 2024-09-12 ### Added diff --git a/README.md b/README.md index 9fefad21..0308eba5 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,7 @@ False - [format_voter_id](#format_voter_id) - [generate_voter_id](#generate_voter_id) - [IBGE](#ibge) + - [get_code_by_municipality_name](#get_code_by_municipality_name) - [convert_code_to_uf](#convert_code_to_uf) - [get\_municipality\_by\_code](#get_municipality_by_code) @@ -1159,6 +1160,36 @@ Example: ("São Paulo", "SP") ``` +### get_code_by_municipality_name + +Retorna o código IBGE para um dado nome de município e código de UF. + +Essa função recebe uma string representando o nome de um município e o código da UF, e retorna o código IBGE correspondente (string). A função lida com os nomes ignorando diferenças de maiúsculas, acentos, tratando o caractere "ç" como "c", e ignorando diferenças de maiúsculas para o código da UF. + +Argumentos: + * municipality_name (str): O nome do município. + * uf (str): O código UF do estado. + +Retorna: + * str: O código IBGE do município. Retorna None se o nome não for válido ou não existir. + +Exemplo: + +```python +>>> from brutils import get_code_by_municipality_name +>>> get_code_by_municipality_name("São Paulo", "SP") +"3550308" +>>> get_code_by_municipality_name("goiania", "go") +"5208707" +>>> get_code_by_municipality_name("Conceição do Coité", "BA") +"2908408" +>>> get_code_by_municipality_name("conceicao do Coite", "Ba") +"2908408" +>>> get_code_by_municipality_name("Municipio Inexistente", "") +None +>>> get_code_by_municipality_name("Municipio Inexistente", "RS") +None +``` # Novos Utilitários e Reportar Bugs Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar diff --git a/README_EN.md b/README_EN.md index fa2037a7..a3fc4926 100644 --- a/README_EN.md +++ b/README_EN.md @@ -92,6 +92,7 @@ False - [IBGE](#ibge) - [convert_code_to_uf](#convert_code_to_uf) - [get\_municipality\_by\_code](#get_municipality_by_code) + - [get_code_by_municipality_name](#get_code_by_municipality_name) ## CPF @@ -1160,6 +1161,40 @@ Example: ("São Paulo", "SP") ``` +### get_code_by_municipality_name + +Returns the IBGE code for a given municipality name and uf code. + +This function takes a string representing a municipality's name +and uf's code and returns the corresponding IBGE code (string). The function +will handle names by ignoring differences in case, accents, and +treating the character ç as c and ignoring case differences for the uf code. + +Args: + * municipality_name (str): The name of the municipality. + * uf (str): The uf code of the state. + +Returns: + * str: The IBGE code of the municipality. Returns None if the name is not valid or does not exist. + +Example: + +```python +>>> from brutils import get_code_by_municipality_name +>>> get_code_by_municipality_name("São Paulo", "SP") +"3550308" +>>> get_code_by_municipality_name("goiania", "go") +"5208707" +>>> get_code_by_municipality_name("Conceição do Coité", "BA") +"2908408" +>>> get_code_by_municipality_name("conceicao do Coite", "Ba") +"2908408" +>>> get_code_by_municipality_name("Municipio Inexistente", "") +None +>>> get_code_by_municipality_name("Municipio Inexistente", "RS") +None +``` + # Feature Request and Bug Report If you want to suggest new features or report bugs, simply create diff --git a/brutils/__init__.py b/brutils/__init__.py index 6a7b6d43..b781f0de 100644 --- a/brutils/__init__.py +++ b/brutils/__init__.py @@ -47,11 +47,12 @@ # Email Import from brutils.email import is_valid as is_valid_email + +# IBGE Imports from brutils.ibge.municipality import ( + get_code_by_municipality_name, get_municipality_by_code, ) - -# IBGE Imports from brutils.ibge.uf import ( convert_code_to_uf, ) @@ -181,4 +182,5 @@ # IBGE "convert_code_to_uf", "get_municipality_by_code", + "get_code_by_municipality_name", ] diff --git a/brutils/data/cities_code.json b/brutils/data/cities_code.json new file mode 100644 index 00000000..9371ab3f --- /dev/null +++ b/brutils/data/cities_code.json @@ -0,0 +1,5626 @@ +{ + "RO": { + "alta floresta d'oeste": "1100015", + "alto alegre dos parecis": "1100379", + "alto paraiso": "1100403", + "alvorada d'oeste": "1100346", + "ariquemes": "1100023", + "buritis": "1100452", + "cabixi": "1100031", + "cacaulandia": "1100601", + "cacoal": "1100049", + "campo novo de rondonia": "1100700", + "candeias do jamari": "1100809", + "castanheiras": "1100908", + "cerejeiras": "1100056", + "chupinguaia": "1100924", + "colorado do oeste": "1100064", + "corumbiara": "1100072", + "costa marques": "1100080", + "cujubim": "1100940", + "espigao d'oeste": "1100098", + "governador jorge teixeira": "1101005", + "guajara-mirim": "1100106", + "itapua do oeste": "1101104", + "jaru": "1100114", + "ji-parana": "1100122", + "machadinho d'oeste": "1100130", + "ministro andreazza": "1101203", + "mirante da serra": "1101302", + "monte negro": "1101401", + "nova brasilandia d'oeste": "1100148", + "nova mamore": "1100338", + "nova uniao": "1101435", + "novo horizonte do oeste": "1100502", + "ouro preto do oeste": "1100155", + "parecis": "1101450", + "pimenta bueno": "1100189", + "pimenteiras do oeste": "1101468", + "porto velho": "1100205", + "presidente medici": "1100254", + "primavera de rondonia": "1101476", + "rio crespo": "1100262", + "rolim de moura": "1100288", + "santa luzia d'oeste": "1100296", + "sao felipe d'oeste": "1101484", + "sao francisco do guapore": "1101492", + "sao miguel do guapore": "1100320", + "seringueiras": "1101500", + "teixeiropolis": "1101559", + "theobroma": "1101609", + "urupa": "1101708", + "vale do anari": "1101757", + "vale do paraiso": "1101807", + "vilhena": "1100304" + }, + "AC": { + "acrelandia": "1200013", + "assis brasil": "1200054", + "brasileia": "1200104", + "bujari": "1200138", + "capixaba": "1200179", + "cruzeiro do sul": "1200203", + "epitaciolandia": "1200252", + "feijo": "1200302", + "jordao": "1200328", + "mancio lima": "1200336", + "manoel urbano": "1200344", + "marechal thaumaturgo": "1200351", + "placido de castro": "1200385", + "porto acre": "1200807", + "porto walter": "1200393", + "rio branco": "1200401", + "rodrigues alves": "1200427", + "santa rosa do purus": "1200435", + "sena madureira": "1200500", + "senador guiomard": "1200450", + "tarauaca": "1200609", + "xapuri": "1200708" + }, + "AM": { + "alvaraes": "1300029", + "amatura": "1300060", + "anama": "1300086", + "anori": "1300102", + "apui": "1300144", + "atalaia do norte": "1300201", + "autazes": "1300300", + "barcelos": "1300409", + "barreirinha": "1300508", + "benjamin constant": "1300607", + "beruri": "1300631", + "boa vista do ramos": "1300680", + "boca do acre": "1300706", + "borba": "1300805", + "caapiranga": "1300839", + "canutama": "1300904", + "carauari": "1301001", + "careiro": "1301100", + "careiro da varzea": "1301159", + "coari": "1301209", + "codajas": "1301308", + "eirunepe": "1301407", + "envira": "1301506", + "fonte boa": "1301605", + "guajara": "1301654", + "humaita": "1301704", + "ipixuna": "1301803", + "iranduba": "1301852", + "itacoatiara": "1301902", + "itamarati": "1301951", + "itapiranga": "1302009", + "japura": "1302108", + "jurua": "1302207", + "jutai": "1302306", + "labrea": "1302405", + "manacapuru": "1302504", + "manaquiri": "1302553", + "manaus": "1302603", + "manicore": "1302702", + "maraa": "1302801", + "maues": "1302900", + "nhamunda": "1303007", + "nova olinda do norte": "1303106", + "novo airao": "1303205", + "novo aripuana": "1303304", + "parintins": "1303403", + "pauini": "1303502", + "presidente figueiredo": "1303536", + "rio preto da eva": "1303569", + "santa isabel do rio negro": "1303601", + "santo antonio do ica": "1303700", + "sao gabriel da cachoeira": "1303809", + "sao paulo de olivenca": "1303908", + "sao sebastiao do uatuma": "1303957", + "silves": "1304005", + "tabatinga": "1304062", + "tapaua": "1304104", + "tefe": "1304203", + "tonantins": "1304237", + "uarini": "1304260", + "urucara": "1304302", + "urucurituba": "1304401" + }, + "RR": { + "alto alegre": "1400050", + "amajari": "1400027", + "boa vista": "1400100", + "bonfim": "1400159", + "canta": "1400175", + "caracarai": "1400209", + "caroebe": "1400233", + "iracema": "1400282", + "mucajai": "1400308", + "normandia": "1400407", + "pacaraima": "1400456", + "rorainopolis": "1400472", + "sao joao da baliza": "1400506", + "sao luiz": "1400605", + "uiramuta": "1400704" + }, + "PA": { + "abaetetuba": "1500107", + "abel figueiredo": "1500131", + "acara": "1500206", + "afua": "1500305", + "agua azul do norte": "1500347", + "alenquer": "1500404", + "almeirim": "1500503", + "altamira": "1500602", + "anajas": "1500701", + "ananindeua": "1500800", + "anapu": "1500859", + "augusto correa": "1500909", + "aurora do para": "1500958", + "aveiro": "1501006", + "bagre": "1501105", + "baiao": "1501204", + "bannach": "1501253", + "barcarena": "1501303", + "belem": "1501402", + "belterra": "1501451", + "benevides": "1501501", + "bom jesus do tocantins": "1501576", + "bonito": "1501600", + "braganca": "1501709", + "brasil novo": "1501725", + "brejo grande do araguaia": "1501758", + "breu branco": "1501782", + "breves": "1501808", + "bujaru": "1501907", + "cachoeira do arari": "1502004", + "cachoeira do piria": "1501956", + "cameta": "1502103", + "canaa dos carajas": "1502152", + "capanema": "1502202", + "capitao poco": "1502301", + "castanhal": "1502400", + "chaves": "1502509", + "colares": "1502608", + "conceicao do araguaia": "1502707", + "concordia do para": "1502756", + "cumaru do norte": "1502764", + "curionopolis": "1502772", + "curralinho": "1502806", + "curua": "1502855", + "curuca": "1502905", + "dom eliseu": "1502939", + "eldorado do carajas": "1502954", + "faro": "1503002", + "floresta do araguaia": "1503044", + "garrafao do norte": "1503077", + "goianesia do para": "1503093", + "gurupa": "1503101", + "igarape-acu": "1503200", + "igarape-miri": "1503309", + "inhangapi": "1503408", + "ipixuna do para": "1503457", + "irituia": "1503507", + "itaituba": "1503606", + "itupiranga": "1503705", + "jacareacanga": "1503754", + "jacunda": "1503804", + "juruti": "1503903", + "limoeiro do ajuru": "1504000", + "mae do rio": "1504059", + "magalhaes barata": "1504109", + "maraba": "1504208", + "maracana": "1504307", + "marapanim": "1504406", + "marituba": "1504422", + "medicilandia": "1504455", + "melgaco": "1504505", + "mocajuba": "1504604", + "moju": "1504703", + "mojui dos campos": "1504752", + "monte alegre": "1504802", + "muana": "1504901", + "nova esperanca do piria": "1504950", + "nova ipixuna": "1504976", + "nova timboteua": "1505007", + "novo progresso": "1505031", + "novo repartimento": "1505064", + "obidos": "1505106", + "oeiras do para": "1505205", + "oriximina": "1505304", + "ourem": "1505403", + "ourilandia do norte": "1505437", + "pacaja": "1505486", + "palestina do para": "1505494", + "paragominas": "1505502", + "parauapebas": "1505536", + "pau d'arco": "1505551", + "peixe-boi": "1505601", + "picarra": "1505635", + "placas": "1505650", + "ponta de pedras": "1505700", + "portel": "1505809", + "porto de moz": "1505908", + "prainha": "1506005", + "primavera": "1506104", + "quatipuru": "1506112", + "redencao": "1506138", + "rio maria": "1506161", + "rondon do para": "1506187", + "ruropolis": "1506195", + "salinopolis": "1506203", + "salvaterra": "1506302", + "santa barbara do para": "1506351", + "santa cruz do arari": "1506401", + "santa izabel do para": "1506500", + "santa luzia do para": "1506559", + "santa maria das barreiras": "1506583", + "santa maria do para": "1506609", + "santana do araguaia": "1506708", + "santarem": "1506807", + "santarem novo": "1506906", + "santo antonio do taua": "1507003", + "sao caetano de odivelas": "1507102", + "sao domingos do araguaia": "1507151", + "sao domingos do capim": "1507201", + "sao felix do xingu": "1507300", + "sao francisco do para": "1507409", + "sao geraldo do araguaia": "1507458", + "sao joao da ponta": "1507466", + "sao joao de pirabas": "1507474", + "sao joao do araguaia": "1507508", + "sao miguel do guama": "1507607", + "sao sebastiao da boa vista": "1507706", + "sapucaia": "1507755", + "senador jose porfirio": "1507805", + "soure": "1507904", + "tailandia": "1507953", + "terra alta": "1507961", + "terra santa": "1507979", + "tome-acu": "1508001", + "tracuateua": "1508035", + "trairao": "1508050", + "tucuma": "1508084", + "tucurui": "1508100", + "ulianopolis": "1508126", + "uruara": "1508159", + "vigia": "1508209", + "viseu": "1508308", + "vitoria do xingu": "1508357", + "xinguara": "1508407" + }, + "AP": { + "amapa": "1600105", + "calcoene": "1600204", + "cutias": "1600212", + "ferreira gomes": "1600238", + "itaubal": "1600253", + "laranjal do jari": "1600279", + "macapa": "1600303", + "mazagao": "1600402", + "oiapoque": "1600501", + "pedra branca do amapari": "1600154", + "porto grande": "1600535", + "pracuuba": "1600550", + "santana": "1600600", + "serra do navio": "1600055", + "tartarugalzinho": "1600709", + "vitoria do jari": "1600808" + }, + "TO": { + "abreulandia": "1700251", + "aguiarnopolis": "1700301", + "alianca do tocantins": "1700350", + "almas": "1700400", + "alvorada": "1700707", + "ananas": "1701002", + "angico": "1701051", + "aparecida do rio negro": "1701101", + "aragominas": "1701309", + "araguacema": "1701903", + "araguacu": "1702000", + "araguaina": "1702109", + "araguana": "1702158", + "araguatins": "1702208", + "arapoema": "1702307", + "arraias": "1702406", + "augustinopolis": "1702554", + "aurora do tocantins": "1702703", + "axixa do tocantins": "1702901", + "babaculandia": "1703008", + "bandeirantes do tocantins": "1703057", + "barra do ouro": "1703073", + "barrolandia": "1703107", + "bernardo sayao": "1703206", + "bom jesus do tocantins": "1703305", + "brasilandia do tocantins": "1703602", + "brejinho de nazare": "1703701", + "buriti do tocantins": "1703800", + "cachoeirinha": "1703826", + "campos lindos": "1703842", + "cariri do tocantins": "1703867", + "carmolandia": "1703883", + "carrasco bonito": "1703891", + "caseara": "1703909", + "centenario": "1704105", + "chapada da natividade": "1705102", + "chapada de areia": "1704600", + "colinas do tocantins": "1705508", + "colmeia": "1716703", + "combinado": "1705557", + "conceicao do tocantins": "1705607", + "couto magalhaes": "1706001", + "cristalandia": "1706100", + "crixas do tocantins": "1706258", + "darcinopolis": "1706506", + "dianopolis": "1707009", + "divinopolis do tocantins": "1707108", + "dois irmaos do tocantins": "1707207", + "duere": "1707306", + "esperantina": "1707405", + "fatima": "1707553", + "figueiropolis": "1707652", + "filadelfia": "1707702", + "formoso do araguaia": "1708205", + "goianorte": "1708304", + "goiatins": "1709005", + "guarai": "1709302", + "gurupi": "1709500", + "ipueiras": "1709807", + "itacaja": "1710508", + "itaguatins": "1710706", + "itapiratins": "1710904", + "itapora do tocantins": "1711100", + "jau do tocantins": "1711506", + "juarina": "1711803", + "lagoa da confusao": "1711902", + "lagoa do tocantins": "1711951", + "lajeado": "1712009", + "lavandeira": "1712157", + "lizarda": "1712405", + "luzinopolis": "1712454", + "marianopolis do tocantins": "1712504", + "mateiros": "1712702", + "maurilandia do tocantins": "1712801", + "miracema do tocantins": "1713205", + "miranorte": "1713304", + "monte do carmo": "1713601", + "monte santo do tocantins": "1713700", + "muricilandia": "1713957", + "natividade": "1714203", + "nazare": "1714302", + "nova olinda": "1714880", + "nova rosalandia": "1715002", + "novo acordo": "1715101", + "novo alegre": "1715150", + "novo jardim": "1715259", + "oliveira de fatima": "1715507", + "palmas": "1721000", + "palmeirante": "1715705", + "palmeiras do tocantins": "1713809", + "palmeiropolis": "1715754", + "paraiso do tocantins": "1716109", + "parana": "1716208", + "pau d'arco": "1716307", + "pedro afonso": "1716505", + "peixe": "1716604", + "pequizeiro": "1716653", + "pindorama do tocantins": "1717008", + "piraque": "1717206", + "pium": "1717503", + "ponte alta do bom jesus": "1717800", + "ponte alta do tocantins": "1717909", + "porto alegre do tocantins": "1718006", + "porto nacional": "1718204", + "praia norte": "1718303", + "presidente kennedy": "1718402", + "pugmil": "1718451", + "recursolandia": "1718501", + "riachinho": "1718550", + "rio da conceicao": "1718659", + "rio dos bois": "1718709", + "rio sono": "1718758", + "sampaio": "1718808", + "sandolandia": "1718840", + "santa fe do araguaia": "1718865", + "santa maria do tocantins": "1718881", + "santa rita do tocantins": "1718899", + "santa rosa do tocantins": "1718907", + "santa tereza do tocantins": "1719004", + "santa terezinha do tocantins": "1720002", + "sao bento do tocantins": "1720101", + "sao felix do tocantins": "1720150", + "sao miguel do tocantins": "1720200", + "sao salvador do tocantins": "1720259", + "sao sebastiao do tocantins": "1720309", + "sao valerio": "1720499", + "silvanopolis": "1720655", + "sitio novo do tocantins": "1720804", + "sucupira": "1720853", + "tabocao": "1708254", + "taguatinga": "1720903", + "taipas do tocantins": "1720937", + "talisma": "1720978", + "tocantinia": "1721109", + "tocantinopolis": "1721208", + "tupirama": "1721257", + "tupiratins": "1721307", + "wanderlandia": "1722081", + "xambioa": "1722107" + }, + "MA": { + "acailandia": "2100055", + "afonso cunha": "2100105", + "agua doce do maranhao": "2100154", + "alcantara": "2100204", + "aldeias altas": "2100303", + "altamira do maranhao": "2100402", + "alto alegre do maranhao": "2100436", + "alto alegre do pindare": "2100477", + "alto parnaiba": "2100501", + "amapa do maranhao": "2100550", + "amarante do maranhao": "2100600", + "anajatuba": "2100709", + "anapurus": "2100808", + "apicum-acu": "2100832", + "araguana": "2100873", + "araioses": "2100907", + "arame": "2100956", + "arari": "2101004", + "axixa": "2101103", + "bacabal": "2101202", + "bacabeira": "2101251", + "bacuri": "2101301", + "bacurituba": "2101350", + "balsas": "2101400", + "barao de grajau": "2101509", + "barra do corda": "2101608", + "barreirinhas": "2101707", + "bela vista do maranhao": "2101772", + "belagua": "2101731", + "benedito leite": "2101806", + "bequimao": "2101905", + "bernardo do mearim": "2101939", + "boa vista do gurupi": "2101970", + "bom jardim": "2102002", + "bom jesus das selvas": "2102036", + "bom lugar": "2102077", + "brejo": "2102101", + "brejo de areia": "2102150", + "buriti": "2102200", + "buriti bravo": "2102309", + "buriticupu": "2102325", + "buritirana": "2102358", + "cachoeira grande": "2102374", + "cajapio": "2102408", + "cajari": "2102507", + "campestre do maranhao": "2102556", + "candido mendes": "2102606", + "cantanhede": "2102705", + "capinzal do norte": "2102754", + "carolina": "2102804", + "carutapera": "2102903", + "caxias": "2103000", + "cedral": "2103109", + "central do maranhao": "2103125", + "centro do guilherme": "2103158", + "centro novo do maranhao": "2103174", + "chapadinha": "2103208", + "cidelandia": "2103257", + "codo": "2103307", + "coelho neto": "2103406", + "colinas": "2103505", + "conceicao do lago-acu": "2103554", + "coroata": "2103604", + "cururupu": "2103703", + "davinopolis": "2103752", + "dom pedro": "2103802", + "duque bacelar": "2103901", + "esperantinopolis": "2104008", + "estreito": "2104057", + "feira nova do maranhao": "2104073", + "fernando falcao": "2104081", + "formosa da serra negra": "2104099", + "fortaleza dos nogueiras": "2104107", + "fortuna": "2104206", + "godofredo viana": "2104305", + "goncalves dias": "2104404", + "governador archer": "2104503", + "governador edison lobao": "2104552", + "governador eugenio barros": "2104602", + "governador luiz rocha": "2104628", + "governador newton bello": "2104651", + "governador nunes freire": "2104677", + "graca aranha": "2104701", + "grajau": "2104800", + "guimaraes": "2104909", + "humberto de campos": "2105005", + "icatu": "2105104", + "igarape do meio": "2105153", + "igarape grande": "2105203", + "imperatriz": "2105302", + "itaipava do grajau": "2105351", + "itapecuru mirim": "2105401", + "itinga do maranhao": "2105427", + "jatoba": "2105450", + "jenipapo dos vieiras": "2105476", + "joao lisboa": "2105500", + "joselandia": "2105609", + "junco do maranhao": "2105658", + "lago da pedra": "2105708", + "lago do junco": "2105807", + "lago dos rodrigues": "2105948", + "lago verde": "2105906", + "lagoa do mato": "2105922", + "lagoa grande do maranhao": "2105963", + "lajeado novo": "2105989", + "lima campos": "2106003", + "loreto": "2106102", + "luis domingues": "2106201", + "magalhaes de almeida": "2106300", + "maracacume": "2106326", + "maraja do sena": "2106359", + "maranhaozinho": "2106375", + "mata roma": "2106409", + "matinha": "2106508", + "matoes": "2106607", + "matoes do norte": "2106631", + "milagres do maranhao": "2106672", + "mirador": "2106706", + "miranda do norte": "2106755", + "mirinzal": "2106805", + "moncao": "2106904", + "montes altos": "2107001", + "morros": "2107100", + "nina rodrigues": "2107209", + "nova colinas": "2107258", + "nova iorque": "2107308", + "nova olinda do maranhao": "2107357", + "olho d'agua das cunhas": "2107407", + "olinda nova do maranhao": "2107456", + "paco do lumiar": "2107506", + "palmeirandia": "2107605", + "paraibano": "2107704", + "parnarama": "2107803", + "passagem franca": "2107902", + "pastos bons": "2108009", + "paulino neves": "2108058", + "paulo ramos": "2108108", + "pedreiras": "2108207", + "pedro do rosario": "2108256", + "penalva": "2108306", + "peri mirim": "2108405", + "peritoro": "2108454", + "pindare-mirim": "2108504", + "pinheiro": "2108603", + "pio xii": "2108702", + "pirapemas": "2108801", + "pocao de pedras": "2108900", + "porto franco": "2109007", + "porto rico do maranhao": "2109056", + "presidente dutra": "2109106", + "presidente juscelino": "2109205", + "presidente medici": "2109239", + "presidente sarney": "2109270", + "presidente vargas": "2109304", + "primeira cruz": "2109403", + "raposa": "2109452", + "riachao": "2109502", + "ribamar fiquene": "2109551", + "rosario": "2109601", + "sambaiba": "2109700", + "santa filomena do maranhao": "2109759", + "santa helena": "2109809", + "santa ines": "2109908", + "santa luzia": "2110005", + "santa luzia do parua": "2110039", + "santa quiteria do maranhao": "2110104", + "santa rita": "2110203", + "santana do maranhao": "2110237", + "santo amaro do maranhao": "2110278", + "santo antonio dos lopes": "2110302", + "sao benedito do rio preto": "2110401", + "sao bento": "2110500", + "sao bernardo": "2110609", + "sao domingos do azeitao": "2110658", + "sao domingos do maranhao": "2110708", + "sao felix de balsas": "2110807", + "sao francisco do brejao": "2110856", + "sao francisco do maranhao": "2110906", + "sao joao batista": "2111003", + "sao joao do caru": "2111029", + "sao joao do paraiso": "2111052", + "sao joao do soter": "2111078", + "sao joao dos patos": "2111102", + "sao jose de ribamar": "2111201", + "sao jose dos basilios": "2111250", + "sao luis": "2111300", + "sao luis gonzaga do maranhao": "2111409", + "sao mateus do maranhao": "2111508", + "sao pedro da agua branca": "2111532", + "sao pedro dos crentes": "2111573", + "sao raimundo das mangabeiras": "2111607", + "sao raimundo do doca bezerra": "2111631", + "sao roberto": "2111672", + "sao vicente ferrer": "2111706", + "satubinha": "2111722", + "senador alexandre costa": "2111748", + "senador la rocque": "2111763", + "serrano do maranhao": "2111789", + "sitio novo": "2111805", + "sucupira do norte": "2111904", + "sucupira do riachao": "2111953", + "tasso fragoso": "2112001", + "timbiras": "2112100", + "timon": "2112209", + "trizidela do vale": "2112233", + "tufilandia": "2112274", + "tuntum": "2112308", + "turiacu": "2112407", + "turilandia": "2112456", + "tutoia": "2112506", + "urbano santos": "2112605", + "vargem grande": "2112704", + "viana": "2112803", + "vila nova dos martirios": "2112852", + "vitoria do mearim": "2112902", + "vitorino freire": "2113009", + "ze doca": "2114007" + }, + "PI": { + "acaua": "2200053", + "agricolandia": "2200103", + "agua branca": "2200202", + "alagoinha do piaui": "2200251", + "alegrete do piaui": "2200277", + "alto longa": "2200301", + "altos": "2200400", + "alvorada do gurgueia": "2200459", + "amarante": "2200509", + "angical do piaui": "2200608", + "anisio de abreu": "2200707", + "antonio almeida": "2200806", + "aroazes": "2200905", + "aroeiras do itaim": "2200954", + "arraial": "2201002", + "assuncao do piaui": "2201051", + "avelino lopes": "2201101", + "baixa grande do ribeiro": "2201150", + "barra d'alcantara": "2201176", + "barras": "2201200", + "barreiras do piaui": "2201309", + "barro duro": "2201408", + "batalha": "2201507", + "bela vista do piaui": "2201556", + "belem do piaui": "2201572", + "beneditinos": "2201606", + "bertolinia": "2201705", + "betania do piaui": "2201739", + "boa hora": "2201770", + "bocaina": "2201804", + "bom jesus": "2201903", + "bom principio do piaui": "2201919", + "bonfim do piaui": "2201929", + "boqueirao do piaui": "2201945", + "brasileira": "2201960", + "brejo do piaui": "2201988", + "buriti dos lopes": "2202000", + "buriti dos montes": "2202026", + "cabeceiras do piaui": "2202059", + "cajazeiras do piaui": "2202075", + "cajueiro da praia": "2202083", + "caldeirao grande do piaui": "2202091", + "campinas do piaui": "2202109", + "campo alegre do fidalgo": "2202117", + "campo grande do piaui": "2202133", + "campo largo do piaui": "2202174", + "campo maior": "2202208", + "canavieira": "2202251", + "canto do buriti": "2202307", + "capitao de campos": "2202406", + "capitao gervasio oliveira": "2202455", + "caracol": "2202505", + "caraubas do piaui": "2202539", + "caridade do piaui": "2202554", + "castelo do piaui": "2202604", + "caxingo": "2202653", + "cocal": "2202703", + "cocal de telha": "2202711", + "cocal dos alves": "2202729", + "coivaras": "2202737", + "colonia do gurgueia": "2202752", + "colonia do piaui": "2202778", + "conceicao do caninde": "2202802", + "coronel jose dias": "2202851", + "corrente": "2202901", + "cristalandia do piaui": "2203008", + "cristino castro": "2203107", + "curimata": "2203206", + "currais": "2203230", + "curral novo do piaui": "2203271", + "curralinhos": "2203255", + "demerval lobao": "2203305", + "dirceu arcoverde": "2203354", + "dom expedito lopes": "2203404", + "dom inocencio": "2203453", + "domingos mourao": "2203420", + "elesbao veloso": "2203503", + "eliseu martins": "2203602", + "esperantina": "2203701", + "fartura do piaui": "2203750", + "flores do piaui": "2203800", + "floresta do piaui": "2203859", + "floriano": "2203909", + "francinopolis": "2204006", + "francisco ayres": "2204105", + "francisco macedo": "2204154", + "francisco santos": "2204204", + "fronteiras": "2204303", + "geminiano": "2204352", + "gilbues": "2204402", + "guadalupe": "2204501", + "guaribas": "2204550", + "hugo napoleao": "2204600", + "ilha grande": "2204659", + "inhuma": "2204709", + "ipiranga do piaui": "2204808", + "isaias coelho": "2204907", + "itainopolis": "2205003", + "itaueira": "2205102", + "jacobina do piaui": "2205151", + "jaicos": "2205201", + "jardim do mulato": "2205250", + "jatoba do piaui": "2205276", + "jerumenha": "2205300", + "joao costa": "2205359", + "joaquim pires": "2205409", + "joca marques": "2205458", + "jose de freitas": "2205508", + "juazeiro do piaui": "2205516", + "julio borges": "2205524", + "jurema": "2205532", + "lagoa alegre": "2205557", + "lagoa de sao francisco": "2205573", + "lagoa do barro do piaui": "2205565", + "lagoa do piaui": "2205581", + "lagoa do sitio": "2205599", + "lagoinha do piaui": "2205540", + "landri sales": "2205607", + "luis correia": "2205706", + "luzilandia": "2205805", + "madeiro": "2205854", + "manoel emidio": "2205904", + "marcolandia": "2205953", + "marcos parente": "2206001", + "massape do piaui": "2206050", + "matias olimpio": "2206100", + "miguel alves": "2206209", + "miguel leao": "2206308", + "milton brandao": "2206357", + "monsenhor gil": "2206407", + "monsenhor hipolito": "2206506", + "monte alegre do piaui": "2206605", + "morro cabeca no tempo": "2206654", + "morro do chapeu do piaui": "2206670", + "murici dos portelas": "2206696", + "nazare do piaui": "2206704", + "nazaria": "2206720", + "nossa senhora de nazare": "2206753", + "nossa senhora dos remedios": "2206803", + "nova santa rita": "2207959", + "novo oriente do piaui": "2206902", + "novo santo antonio": "2206951", + "oeiras": "2207009", + "olho d'agua do piaui": "2207108", + "padre marcos": "2207207", + "paes landim": "2207306", + "pajeu do piaui": "2207355", + "palmeira do piaui": "2207405", + "palmeirais": "2207504", + "paqueta": "2207553", + "parnagua": "2207603", + "parnaiba": "2207702", + "passagem franca do piaui": "2207751", + "patos do piaui": "2207777", + "pau d'arco do piaui": "2207793", + "paulistana": "2207801", + "pavussu": "2207850", + "pedro ii": "2207900", + "pedro laurentino": "2207934", + "picos": "2208007", + "pimenteiras": "2208106", + "pio ix": "2208205", + "piracuruca": "2208304", + "piripiri": "2208403", + "porto": "2208502", + "porto alegre do piaui": "2208551", + "prata do piaui": "2208601", + "queimada nova": "2208650", + "redencao do gurgueia": "2208700", + "regeneracao": "2208809", + "riacho frio": "2208858", + "ribeira do piaui": "2208874", + "ribeiro goncalves": "2208908", + "rio grande do piaui": "2209005", + "santa cruz do piaui": "2209104", + "santa cruz dos milagres": "2209153", + "santa filomena": "2209203", + "santa luz": "2209302", + "santa rosa do piaui": "2209377", + "santana do piaui": "2209351", + "santo antonio de lisboa": "2209401", + "santo antonio dos milagres": "2209450", + "santo inacio do piaui": "2209500", + "sao braz do piaui": "2209559", + "sao felix do piaui": "2209609", + "sao francisco de assis do piaui": "2209658", + "sao francisco do piaui": "2209708", + "sao goncalo do gurgueia": "2209757", + "sao goncalo do piaui": "2209807", + "sao joao da canabrava": "2209856", + "sao joao da fronteira": "2209872", + "sao joao da serra": "2209906", + "sao joao da varjota": "2209955", + "sao joao do arraial": "2209971", + "sao joao do piaui": "2210003", + "sao jose do divino": "2210052", + "sao jose do peixe": "2210102", + "sao jose do piaui": "2210201", + "sao juliao": "2210300", + "sao lourenco do piaui": "2210359", + "sao luis do piaui": "2210375", + "sao miguel da baixa grande": "2210383", + "sao miguel do fidalgo": "2210391", + "sao miguel do tapuio": "2210409", + "sao pedro do piaui": "2210508", + "sao raimundo nonato": "2210607", + "sebastiao barros": "2210623", + "sebastiao leal": "2210631", + "sigefredo pacheco": "2210656", + "simoes": "2210706", + "simplicio mendes": "2210805", + "socorro do piaui": "2210904", + "sussuapara": "2210938", + "tamboril do piaui": "2210953", + "tanque do piaui": "2210979", + "teresina": "2211001", + "uniao": "2211100", + "urucui": "2211209", + "valenca do piaui": "2211308", + "varzea branca": "2211357", + "varzea grande": "2211407", + "vera mendes": "2211506", + "vila nova do piaui": "2211605", + "wall ferraz": "2211704" + }, + "CE": { + "abaiara": "2300101", + "acarape": "2300150", + "acarau": "2300200", + "acopiara": "2300309", + "aiuaba": "2300408", + "alcantaras": "2300507", + "altaneira": "2300606", + "alto santo": "2300705", + "amontada": "2300754", + "antonina do norte": "2300804", + "apuiares": "2300903", + "aquiraz": "2301000", + "aracati": "2301109", + "aracoiaba": "2301208", + "ararenda": "2301257", + "araripe": "2301307", + "aratuba": "2301406", + "arneiroz": "2301505", + "assare": "2301604", + "aurora": "2301703", + "baixio": "2301802", + "banabuiu": "2301851", + "barbalha": "2301901", + "barreira": "2301950", + "barro": "2302008", + "barroquinha": "2302057", + "baturite": "2302107", + "beberibe": "2302206", + "bela cruz": "2302305", + "boa viagem": "2302404", + "brejo santo": "2302503", + "camocim": "2302602", + "campos sales": "2302701", + "caninde": "2302800", + "capistrano": "2302909", + "caridade": "2303006", + "carire": "2303105", + "caririacu": "2303204", + "carius": "2303303", + "carnaubal": "2303402", + "cascavel": "2303501", + "catarina": "2303600", + "catunda": "2303659", + "caucaia": "2303709", + "cedro": "2303808", + "chaval": "2303907", + "choro": "2303931", + "chorozinho": "2303956", + "coreau": "2304004", + "crateus": "2304103", + "crato": "2304202", + "croata": "2304236", + "cruz": "2304251", + "deputado irapuan pinheiro": "2304269", + "erere": "2304277", + "eusebio": "2304285", + "farias brito": "2304301", + "forquilha": "2304350", + "fortaleza": "2304400", + "fortim": "2304459", + "frecheirinha": "2304509", + "general sampaio": "2304608", + "graca": "2304657", + "granja": "2304707", + "granjeiro": "2304806", + "groairas": "2304905", + "guaiuba": "2304954", + "guaraciaba do norte": "2305001", + "guaramiranga": "2305100", + "hidrolandia": "2305209", + "horizonte": "2305233", + "ibaretama": "2305266", + "ibiapina": "2305308", + "ibicuitinga": "2305332", + "icapui": "2305357", + "ico": "2305407", + "iguatu": "2305506", + "independencia": "2305605", + "ipaporanga": "2305654", + "ipaumirim": "2305704", + "ipu": "2305803", + "ipueiras": "2305902", + "iracema": "2306009", + "iraucuba": "2306108", + "itaicaba": "2306207", + "itaitinga": "2306256", + "itapaje": "2306306", + "itapipoca": "2306405", + "itapiuna": "2306504", + "itarema": "2306553", + "itatira": "2306603", + "jaguaretama": "2306702", + "jaguaribara": "2306801", + "jaguaribe": "2306900", + "jaguaruana": "2307007", + "jardim": "2307106", + "jati": "2307205", + "jijoca de jericoacoara": "2307254", + "juazeiro do norte": "2307304", + "jucas": "2307403", + "lavras da mangabeira": "2307502", + "limoeiro do norte": "2307601", + "madalena": "2307635", + "maracanau": "2307650", + "maranguape": "2307700", + "marco": "2307809", + "martinopole": "2307908", + "massape": "2308005", + "mauriti": "2308104", + "meruoca": "2308203", + "milagres": "2308302", + "milha": "2308351", + "miraima": "2308377", + "missao velha": "2308401", + "mombaca": "2308500", + "monsenhor tabosa": "2308609", + "morada nova": "2308708", + "moraujo": "2308807", + "morrinhos": "2308906", + "mucambo": "2309003", + "mulungu": "2309102", + "nova olinda": "2309201", + "nova russas": "2309300", + "novo oriente": "2309409", + "ocara": "2309458", + "oros": "2309508", + "pacajus": "2309607", + "pacatuba": "2309706", + "pacoti": "2309805", + "pacuja": "2309904", + "palhano": "2310001", + "palmacia": "2310100", + "paracuru": "2310209", + "paraipaba": "2310258", + "parambu": "2310308", + "paramoti": "2310407", + "pedra branca": "2310506", + "penaforte": "2310605", + "pentecoste": "2310704", + "pereiro": "2310803", + "pindoretama": "2310852", + "piquet carneiro": "2310902", + "pires ferreira": "2310951", + "poranga": "2311009", + "porteiras": "2311108", + "potengi": "2311207", + "potiretama": "2311231", + "quiterianopolis": "2311264", + "quixada": "2311306", + "quixelo": "2311355", + "quixeramobim": "2311405", + "quixere": "2311504", + "redencao": "2311603", + "reriutaba": "2311702", + "russas": "2311801", + "saboeiro": "2311900", + "salitre": "2311959", + "santa quiteria": "2312205", + "santana do acarau": "2312007", + "santana do cariri": "2312106", + "sao benedito": "2312304", + "sao goncalo do amarante": "2312403", + "sao joao do jaguaribe": "2312502", + "sao luis do curu": "2312601", + "senador pompeu": "2312700", + "senador sa": "2312809", + "sobral": "2312908", + "solonopole": "2313005", + "tabuleiro do norte": "2313104", + "tamboril": "2313203", + "tarrafas": "2313252", + "taua": "2313302", + "tejucuoca": "2313351", + "tiangua": "2313401", + "trairi": "2313500", + "tururu": "2313559", + "ubajara": "2313609", + "umari": "2313708", + "umirim": "2313757", + "uruburetama": "2313807", + "uruoca": "2313906", + "varjota": "2313955", + "varzea alegre": "2314003", + "vicosa do ceara": "2314102" + }, + "RN": { + "acari": "2400109", + "acu": "2400208", + "afonso bezerra": "2400307", + "agua nova": "2400406", + "alexandria": "2400505", + "almino afonso": "2400604", + "alto do rodrigues": "2400703", + "angicos": "2400802", + "antonio martins": "2400901", + "apodi": "2401008", + "areia branca": "2401107", + "ares": "2401206", + "baia formosa": "2401404", + "barauna": "2401453", + "barcelona": "2401503", + "bento fernandes": "2401602", + "bodo": "2401651", + "bom jesus": "2401701", + "brejinho": "2401800", + "caicara do norte": "2401859", + "caicara do rio do vento": "2401909", + "caico": "2402006", + "campo grande": "2401305", + "campo redondo": "2402105", + "canguaretama": "2402204", + "caraubas": "2402303", + "carnauba dos dantas": "2402402", + "carnaubais": "2402501", + "ceara-mirim": "2402600", + "cerro cora": "2402709", + "coronel ezequiel": "2402808", + "coronel joao pessoa": "2402907", + "cruzeta": "2403004", + "currais novos": "2403103", + "doutor severiano": "2403202", + "encanto": "2403301", + "equador": "2403400", + "espirito santo": "2403509", + "extremoz": "2403608", + "felipe guerra": "2403707", + "fernando pedroza": "2403756", + "florania": "2403806", + "francisco dantas": "2403905", + "frutuoso gomes": "2404002", + "galinhos": "2404101", + "goianinha": "2404200", + "governador dix-sept rosado": "2404309", + "grossos": "2404408", + "guamare": "2404507", + "ielmo marinho": "2404606", + "ipanguacu": "2404705", + "ipueira": "2404804", + "itaja": "2404853", + "itau": "2404903", + "jacana": "2405009", + "jandaira": "2405108", + "janduis": "2405207", + "januario cicco": "2405306", + "japi": "2405405", + "jardim de angicos": "2405504", + "jardim de piranhas": "2405603", + "jardim do serido": "2405702", + "joao camara": "2405801", + "joao dias": "2405900", + "jose da penha": "2406007", + "jucurutu": "2406106", + "jundia": "2406155", + "lagoa d'anta": "2406205", + "lagoa de pedras": "2406304", + "lagoa de velhos": "2406403", + "lagoa nova": "2406502", + "lagoa salgada": "2406601", + "lajes": "2406700", + "lajes pintadas": "2406809", + "lucrecia": "2406908", + "luis gomes": "2407005", + "macaiba": "2407104", + "macau": "2407203", + "major sales": "2407252", + "marcelino vieira": "2407302", + "martins": "2407401", + "maxaranguape": "2407500", + "messias targino": "2407609", + "montanhas": "2407708", + "monte alegre": "2407807", + "monte das gameleiras": "2407906", + "mossoro": "2408003", + "natal": "2408102", + "nisia floresta": "2408201", + "nova cruz": "2408300", + "olho d'agua do borges": "2408409", + "ouro branco": "2408508", + "parana": "2408607", + "parau": "2408706", + "parazinho": "2408805", + "parelhas": "2408904", + "parnamirim": "2403251", + "passa e fica": "2409100", + "passagem": "2409209", + "patu": "2409308", + "pau dos ferros": "2409407", + "pedra grande": "2409506", + "pedra preta": "2409605", + "pedro avelino": "2409704", + "pedro velho": "2409803", + "pendencias": "2409902", + "piloes": "2410009", + "poco branco": "2410108", + "portalegre": "2410207", + "porto do mangue": "2410256", + "pureza": "2410405", + "rafael fernandes": "2410504", + "rafael godeiro": "2410603", + "riacho da cruz": "2410702", + "riacho de santana": "2410801", + "riachuelo": "2410900", + "rio do fogo": "2408953", + "rodolfo fernandes": "2411007", + "ruy barbosa": "2411106", + "santa cruz": "2411205", + "santa maria": "2409332", + "santana do matos": "2411403", + "santana do serido": "2411429", + "santo antonio": "2411502", + "sao bento do norte": "2411601", + "sao bento do trairi": "2411700", + "sao fernando": "2411809", + "sao francisco do oeste": "2411908", + "sao goncalo do amarante": "2412005", + "sao joao do sabugi": "2412104", + "sao jose de mipibu": "2412203", + "sao jose do campestre": "2412302", + "sao jose do serido": "2412401", + "sao miguel": "2412500", + "sao miguel do gostoso": "2412559", + "sao paulo do potengi": "2412609", + "sao pedro": "2412708", + "sao rafael": "2412807", + "sao tome": "2412906", + "sao vicente": "2413003", + "senador eloi de souza": "2413102", + "senador georgino avelino": "2413201", + "serra caiada": "2410306", + "serra de sao bento": "2413300", + "serra do mel": "2413359", + "serra negra do norte": "2413409", + "serrinha": "2413508", + "serrinha dos pintos": "2413557", + "severiano melo": "2413607", + "sitio novo": "2413706", + "taboleiro grande": "2413805", + "taipu": "2413904", + "tangara": "2414001", + "tenente ananias": "2414100", + "tenente laurentino cruz": "2414159", + "tibau": "2411056", + "tibau do sul": "2414209", + "timbauba dos batistas": "2414308", + "touros": "2414407", + "triunfo potiguar": "2414456", + "umarizal": "2414506", + "upanema": "2414605", + "varzea": "2414704", + "venha-ver": "2414753", + "vera cruz": "2414803", + "vicosa": "2414902", + "vila flor": "2415008" + }, + "PB": { + "agua branca": "2500106", + "aguiar": "2500205", + "alagoa grande": "2500304", + "alagoa nova": "2500403", + "alagoinha": "2500502", + "alcantil": "2500536", + "algodao de jandaira": "2500577", + "alhandra": "2500601", + "amparo": "2500734", + "aparecida": "2500775", + "aracagi": "2500809", + "arara": "2500908", + "araruna": "2501005", + "areia": "2501104", + "areia de baraunas": "2501153", + "areial": "2501203", + "aroeiras": "2501302", + "assuncao": "2501351", + "baia da traicao": "2501401", + "bananeiras": "2501500", + "barauna": "2501534", + "barra de santa rosa": "2501609", + "barra de santana": "2501575", + "barra de sao miguel": "2501708", + "bayeux": "2501807", + "belem": "2501906", + "belem do brejo do cruz": "2502003", + "bernardino batista": "2502052", + "boa ventura": "2502102", + "boa vista": "2502151", + "bom jesus": "2502201", + "bom sucesso": "2502300", + "bonito de santa fe": "2502409", + "boqueirao": "2502508", + "borborema": "2502706", + "brejo do cruz": "2502805", + "brejo dos santos": "2502904", + "caapora": "2503001", + "cabaceiras": "2503100", + "cabedelo": "2503209", + "cachoeira dos indios": "2503308", + "cacimba de areia": "2503407", + "cacimba de dentro": "2503506", + "cacimbas": "2503555", + "caicara": "2503605", + "cajazeiras": "2503704", + "cajazeirinhas": "2503753", + "caldas brandao": "2503803", + "camalau": "2503902", + "campina grande": "2504009", + "capim": "2504033", + "caraubas": "2504074", + "carrapateira": "2504108", + "casserengue": "2504157", + "catingueira": "2504207", + "catole do rocha": "2504306", + "caturite": "2504355", + "conceicao": "2504405", + "condado": "2504504", + "conde": "2504603", + "congo": "2504702", + "coremas": "2504801", + "coxixola": "2504850", + "cruz do espirito santo": "2504900", + "cubati": "2505006", + "cuite": "2505105", + "cuite de mamanguape": "2505238", + "cuitegi": "2505204", + "curral de cima": "2505279", + "curral velho": "2505303", + "damiao": "2505352", + "desterro": "2505402", + "diamante": "2505600", + "dona ines": "2505709", + "duas estradas": "2505808", + "emas": "2505907", + "esperanca": "2506004", + "fagundes": "2506103", + "frei martinho": "2506202", + "gado bravo": "2506251", + "guarabira": "2506301", + "gurinhem": "2506400", + "gurjao": "2506509", + "ibiara": "2506608", + "igaracy": "2502607", + "imaculada": "2506707", + "inga": "2506806", + "itabaiana": "2506905", + "itaporanga": "2507002", + "itapororoca": "2507101", + "itatuba": "2507200", + "jacarau": "2507309", + "jerico": "2507408", + "joao pessoa": "2507507", + "joca claudino": "2513653", + "juarez tavora": "2507606", + "juazeirinho": "2507705", + "junco do serido": "2507804", + "juripiranga": "2507903", + "juru": "2508000", + "lagoa": "2508109", + "lagoa de dentro": "2508208", + "lagoa seca": "2508307", + "lastro": "2508406", + "livramento": "2508505", + "logradouro": "2508554", + "lucena": "2508604", + "mae d'agua": "2508703", + "malta": "2508802", + "mamanguape": "2508901", + "manaira": "2509008", + "marcacao": "2509057", + "mari": "2509107", + "marizopolis": "2509156", + "massaranduba": "2509206", + "mataraca": "2509305", + "matinhas": "2509339", + "mato grosso": "2509370", + "matureia": "2509396", + "mogeiro": "2509404", + "montadas": "2509503", + "monte horebe": "2509602", + "monteiro": "2509701", + "mulungu": "2509800", + "natuba": "2509909", + "nazarezinho": "2510006", + "nova floresta": "2510105", + "nova olinda": "2510204", + "nova palmeira": "2510303", + "olho d'agua": "2510402", + "olivedos": "2510501", + "ouro velho": "2510600", + "parari": "2510659", + "passagem": "2510709", + "patos": "2510808", + "paulista": "2510907", + "pedra branca": "2511004", + "pedra lavrada": "2511103", + "pedras de fogo": "2511202", + "pedro regis": "2512721", + "pianco": "2511301", + "picui": "2511400", + "pilar": "2511509", + "piloes": "2511608", + "piloezinhos": "2511707", + "pirpirituba": "2511806", + "pitimbu": "2511905", + "pocinhos": "2512002", + "poco dantas": "2512036", + "poco de jose de moura": "2512077", + "pombal": "2512101", + "prata": "2512200", + "princesa isabel": "2512309", + "puxinana": "2512408", + "queimadas": "2512507", + "quixaba": "2512606", + "remigio": "2512705", + "riachao": "2512747", + "riachao do bacamarte": "2512754", + "riachao do poco": "2512762", + "riacho de santo antonio": "2512788", + "riacho dos cavalos": "2512804", + "rio tinto": "2512903", + "salgadinho": "2513000", + "salgado de sao felix": "2513109", + "santa cecilia": "2513158", + "santa cruz": "2513208", + "santa helena": "2513307", + "santa ines": "2513356", + "santa luzia": "2513406", + "santa rita": "2513703", + "santa teresinha": "2513802", + "santana de mangueira": "2513505", + "santana dos garrotes": "2513604", + "santo andre": "2513851", + "sao bentinho": "2513927", + "sao bento": "2513901", + "sao domingos": "2513968", + "sao domingos do cariri": "2513943", + "sao francisco": "2513984", + "sao joao do cariri": "2514008", + "sao joao do rio do peixe": "2500700", + "sao joao do tigre": "2514107", + "sao jose da lagoa tapada": "2514206", + "sao jose de caiana": "2514305", + "sao jose de espinharas": "2514404", + "sao jose de piranhas": "2514503", + "sao jose de princesa": "2514552", + "sao jose do bonfim": "2514602", + "sao jose do brejo do cruz": "2514651", + "sao jose do sabugi": "2514701", + "sao jose dos cordeiros": "2514800", + "sao jose dos ramos": "2514453", + "sao mamede": "2514909", + "sao miguel de taipu": "2515005", + "sao sebastiao de lagoa de roca": "2515104", + "sao sebastiao do umbuzeiro": "2515203", + "sao vicente do serido": "2515401", + "sape": "2515302", + "serra branca": "2515500", + "serra da raiz": "2515609", + "serra grande": "2515708", + "serra redonda": "2515807", + "serraria": "2515906", + "sertaozinho": "2515930", + "sobrado": "2515971", + "solanea": "2516003", + "soledade": "2516102", + "sossego": "2516151", + "sousa": "2516201", + "sume": "2516300", + "tacima": "2516409", + "taperoa": "2516508", + "tavares": "2516607", + "teixeira": "2516706", + "tenorio": "2516755", + "triunfo": "2516805", + "uirauna": "2516904", + "umbuzeiro": "2517001", + "varzea": "2517100", + "vieiropolis": "2517209", + "vista serrana": "2505501", + "zabele": "2517407" + }, + "PE": { + "abreu e lima": "2600054", + "afogados da ingazeira": "2600104", + "afranio": "2600203", + "agrestina": "2600302", + "agua preta": "2600401", + "aguas belas": "2600500", + "alagoinha": "2600609", + "alianca": "2600708", + "altinho": "2600807", + "amaraji": "2600906", + "angelim": "2601003", + "aracoiaba": "2601052", + "araripina": "2601102", + "arcoverde": "2601201", + "barra de guabiraba": "2601300", + "barreiros": "2601409", + "belem de maria": "2601508", + "belem do sao francisco": "2601607", + "belo jardim": "2601706", + "betania": "2601805", + "bezerros": "2601904", + "bodoco": "2602001", + "bom conselho": "2602100", + "bom jardim": "2602209", + "bonito": "2602308", + "brejao": "2602407", + "brejinho": "2602506", + "brejo da madre de deus": "2602605", + "buenos aires": "2602704", + "buique": "2602803", + "cabo de santo agostinho": "2602902", + "cabrobo": "2603009", + "cachoeirinha": "2603108", + "caetes": "2603207", + "calcado": "2603306", + "calumbi": "2603405", + "camaragibe": "2603454", + "camocim de sao felix": "2603504", + "camutanga": "2603603", + "canhotinho": "2603702", + "capoeiras": "2603801", + "carnaiba": "2603900", + "carnaubeira da penha": "2603926", + "carpina": "2604007", + "caruaru": "2604106", + "casinhas": "2604155", + "catende": "2604205", + "cedro": "2604304", + "cha de alegria": "2604403", + "cha grande": "2604502", + "condado": "2604601", + "correntes": "2604700", + "cortes": "2604809", + "cumaru": "2604908", + "cupira": "2605004", + "custodia": "2605103", + "dormentes": "2605152", + "escada": "2605202", + "exu": "2605301", + "feira nova": "2605400", + "fernando de noronha": "2605459", + "ferreiros": "2605509", + "flores": "2605608", + "floresta": "2605707", + "frei miguelinho": "2605806", + "gameleira": "2605905", + "garanhuns": "2606002", + "gloria do goita": "2606101", + "goiana": "2606200", + "granito": "2606309", + "gravata": "2606408", + "iati": "2606507", + "ibimirim": "2606606", + "ibirajuba": "2606705", + "igarassu": "2606804", + "iguaracy": "2606903", + "ilha de itamaraca": "2607604", + "inaja": "2607000", + "ingazeira": "2607109", + "ipojuca": "2607208", + "ipubi": "2607307", + "itacuruba": "2607406", + "itaiba": "2607505", + "itambe": "2607653", + "itapetim": "2607703", + "itapissuma": "2607752", + "itaquitinga": "2607802", + "jaboatao dos guararapes": "2607901", + "jaqueira": "2607950", + "jatauba": "2608008", + "jatoba": "2608057", + "joao alfredo": "2608107", + "joaquim nabuco": "2608206", + "jucati": "2608255", + "jupi": "2608305", + "jurema": "2608404", + "lagoa de itaenga": "2608503", + "lagoa do carro": "2608453", + "lagoa do ouro": "2608602", + "lagoa dos gatos": "2608701", + "lagoa grande": "2608750", + "lajedo": "2608800", + "limoeiro": "2608909", + "macaparana": "2609006", + "machados": "2609105", + "manari": "2609154", + "maraial": "2609204", + "mirandiba": "2609303", + "moreilandia": "2614303", + "moreno": "2609402", + "nazare da mata": "2609501", + "olinda": "2609600", + "orobo": "2609709", + "oroco": "2609808", + "ouricuri": "2609907", + "palmares": "2610004", + "palmeirina": "2610103", + "panelas": "2610202", + "paranatama": "2610301", + "parnamirim": "2610400", + "passira": "2610509", + "paudalho": "2610608", + "paulista": "2610707", + "pedra": "2610806", + "pesqueira": "2610905", + "petrolandia": "2611002", + "petrolina": "2611101", + "pocao": "2611200", + "pombos": "2611309", + "primavera": "2611408", + "quipapa": "2611507", + "quixaba": "2611533", + "recife": "2611606", + "riacho das almas": "2611705", + "ribeirao": "2611804", + "rio formoso": "2611903", + "saire": "2612000", + "salgadinho": "2612109", + "salgueiro": "2612208", + "saloa": "2612307", + "sanharo": "2612406", + "santa cruz": "2612455", + "santa cruz da baixa verde": "2612471", + "santa cruz do capibaribe": "2612505", + "santa filomena": "2612554", + "santa maria da boa vista": "2612604", + "santa maria do cambuca": "2612703", + "santa terezinha": "2612802", + "sao benedito do sul": "2612901", + "sao bento do una": "2613008", + "sao caitano": "2613107", + "sao joao": "2613206", + "sao joaquim do monte": "2613305", + "sao jose da coroa grande": "2613404", + "sao jose do belmonte": "2613503", + "sao jose do egito": "2613602", + "sao lourenco da mata": "2613701", + "sao vicente ferrer": "2613800", + "serra talhada": "2613909", + "serrita": "2614006", + "sertania": "2614105", + "sirinhaem": "2614204", + "solidao": "2614402", + "surubim": "2614501", + "tabira": "2614600", + "tacaimbo": "2614709", + "tacaratu": "2614808", + "tamandare": "2614857", + "taquaritinga do norte": "2615003", + "terezinha": "2615102", + "terra nova": "2615201", + "timbauba": "2615300", + "toritama": "2615409", + "tracunhaem": "2615508", + "trindade": "2615607", + "triunfo": "2615706", + "tupanatinga": "2615805", + "tuparetama": "2615904", + "venturosa": "2616001", + "verdejante": "2616100", + "vertente do lerio": "2616183", + "vertentes": "2616209", + "vicencia": "2616308", + "vitoria de santo antao": "2616407", + "xexeu": "2616506" + }, + "AL": { + "agua branca": "2700102", + "anadia": "2700201", + "arapiraca": "2700300", + "atalaia": "2700409", + "barra de santo antonio": "2700508", + "barra de sao miguel": "2700607", + "batalha": "2700706", + "belem": "2700805", + "belo monte": "2700904", + "boca da mata": "2701001", + "branquinha": "2701100", + "cacimbinhas": "2701209", + "cajueiro": "2701308", + "campestre": "2701357", + "campo alegre": "2701407", + "campo grande": "2701506", + "canapi": "2701605", + "capela": "2701704", + "carneiros": "2701803", + "cha preta": "2701902", + "coite do noia": "2702009", + "colonia leopoldina": "2702108", + "coqueiro seco": "2702207", + "coruripe": "2702306", + "craibas": "2702355", + "delmiro gouveia": "2702405", + "dois riachos": "2702504", + "estrela de alagoas": "2702553", + "feira grande": "2702603", + "feliz deserto": "2702702", + "flexeiras": "2702801", + "girau do ponciano": "2702900", + "ibateguara": "2703007", + "igaci": "2703106", + "igreja nova": "2703205", + "inhapi": "2703304", + "jacare dos homens": "2703403", + "jacuipe": "2703502", + "japaratinga": "2703601", + "jaramataia": "2703700", + "jequia da praia": "2703759", + "joaquim gomes": "2703809", + "jundia": "2703908", + "junqueiro": "2704005", + "lagoa da canoa": "2704104", + "limoeiro de anadia": "2704203", + "maceio": "2704302", + "major isidoro": "2704401", + "mar vermelho": "2704906", + "maragogi": "2704500", + "maravilha": "2704609", + "marechal deodoro": "2704708", + "maribondo": "2704807", + "mata grande": "2705002", + "matriz de camaragibe": "2705101", + "messias": "2705200", + "minador do negrao": "2705309", + "monteiropolis": "2705408", + "murici": "2705507", + "novo lino": "2705606", + "olho d'agua das flores": "2705705", + "olho d'agua do casado": "2705804", + "olho d'agua grande": "2705903", + "olivenca": "2706000", + "ouro branco": "2706109", + "palestina": "2706208", + "palmeira dos indios": "2706307", + "pao de acucar": "2706406", + "pariconha": "2706422", + "paripueira": "2706448", + "passo de camaragibe": "2706505", + "paulo jacinto": "2706604", + "penedo": "2706703", + "piacabucu": "2706802", + "pilar": "2706901", + "pindoba": "2707008", + "piranhas": "2707107", + "poco das trincheiras": "2707206", + "porto calvo": "2707305", + "porto de pedras": "2707404", + "porto real do colegio": "2707503", + "quebrangulo": "2707602", + "rio largo": "2707701", + "roteiro": "2707800", + "santa luzia do norte": "2707909", + "santana do ipanema": "2708006", + "santana do mundau": "2708105", + "sao bras": "2708204", + "sao jose da laje": "2708303", + "sao jose da tapera": "2708402", + "sao luis do quitunde": "2708501", + "sao miguel dos campos": "2708600", + "sao miguel dos milagres": "2708709", + "sao sebastiao": "2708808", + "satuba": "2708907", + "senador rui palmeira": "2708956", + "tanque d'arca": "2709004", + "taquarana": "2709103", + "teotonio vilela": "2709152", + "traipu": "2709202", + "uniao dos palmares": "2709301", + "vicosa": "2709400" + }, + "SE": { + "amparo do sao francisco": "2800100", + "aquidaba": "2800209", + "aracaju": "2800308", + "araua": "2800407", + "areia branca": "2800506", + "barra dos coqueiros": "2800605", + "boquim": "2800670", + "brejo grande": "2800704", + "campo do brito": "2801009", + "canhoba": "2801108", + "caninde de sao francisco": "2801207", + "capela": "2801306", + "carira": "2801405", + "carmopolis": "2801504", + "cedro de sao joao": "2801603", + "cristinapolis": "2801702", + "cumbe": "2801900", + "divina pastora": "2802007", + "estancia": "2802106", + "feira nova": "2802205", + "frei paulo": "2802304", + "gararu": "2802403", + "general maynard": "2802502", + "gracho cardoso": "2802601", + "ilha das flores": "2802700", + "indiaroba": "2802809", + "itabaiana": "2802908", + "itabaianinha": "2803005", + "itabi": "2803104", + "itaporanga d'ajuda": "2803203", + "japaratuba": "2803302", + "japoata": "2803401", + "lagarto": "2803500", + "laranjeiras": "2803609", + "macambira": "2803708", + "malhada dos bois": "2803807", + "malhador": "2803906", + "maruim": "2804003", + "moita bonita": "2804102", + "monte alegre de sergipe": "2804201", + "muribeca": "2804300", + "neopolis": "2804409", + "nossa senhora aparecida": "2804458", + "nossa senhora da gloria": "2804508", + "nossa senhora das dores": "2804607", + "nossa senhora de lourdes": "2804706", + "nossa senhora do socorro": "2804805", + "pacatuba": "2804904", + "pedra mole": "2805000", + "pedrinhas": "2805109", + "pinhao": "2805208", + "pirambu": "2805307", + "poco redondo": "2805406", + "poco verde": "2805505", + "porto da folha": "2805604", + "propria": "2805703", + "riachao do dantas": "2805802", + "riachuelo": "2805901", + "ribeiropolis": "2806008", + "rosario do catete": "2806107", + "salgado": "2806206", + "santa luzia do itanhy": "2806305", + "santa rosa de lima": "2806503", + "santana do sao francisco": "2806404", + "santo amaro das brotas": "2806602", + "sao cristovao": "2806701", + "sao domingos": "2806800", + "sao francisco": "2806909", + "sao miguel do aleixo": "2807006", + "simao dias": "2807105", + "siriri": "2807204", + "telha": "2807303", + "tobias barreto": "2807402", + "tomar do geru": "2807501", + "umbauba": "2807600" + }, + "BA": { + "abaira": "2900108", + "abare": "2900207", + "acajutiba": "2900306", + "adustina": "2900355", + "agua fria": "2900405", + "aiquara": "2900603", + "alagoinhas": "2900702", + "alcobaca": "2900801", + "almadina": "2900900", + "amargosa": "2901007", + "amelia rodrigues": "2901106", + "america dourada": "2901155", + "anage": "2901205", + "andarai": "2901304", + "andorinha": "2901353", + "angical": "2901403", + "anguera": "2901502", + "antas": "2901601", + "antonio cardoso": "2901700", + "antonio goncalves": "2901809", + "apora": "2901908", + "apuarema": "2901957", + "aracas": "2902054", + "aracatu": "2902005", + "araci": "2902104", + "aramari": "2902203", + "arataca": "2902252", + "aratuipe": "2902302", + "aurelino leal": "2902401", + "baianopolis": "2902500", + "baixa grande": "2902609", + "banzae": "2902658", + "barra": "2902708", + "barra da estiva": "2902807", + "barra do choca": "2902906", + "barra do mendes": "2903003", + "barra do rocha": "2903102", + "barreiras": "2903201", + "barro alto": "2903235", + "barro preto": "2903300", + "barrocas": "2903276", + "belmonte": "2903409", + "belo campo": "2903508", + "biritinga": "2903607", + "boa nova": "2903706", + "boa vista do tupim": "2903805", + "bom jesus da lapa": "2903904", + "bom jesus da serra": "2903953", + "boninal": "2904001", + "bonito": "2904050", + "boquira": "2904100", + "botupora": "2904209", + "brejoes": "2904308", + "brejolandia": "2904407", + "brotas de macaubas": "2904506", + "brumado": "2904605", + "buerarema": "2904704", + "buritirama": "2904753", + "caatiba": "2904803", + "cabaceiras do paraguacu": "2904852", + "cachoeira": "2904902", + "cacule": "2905008", + "caem": "2905107", + "caetanos": "2905156", + "caetite": "2905206", + "cafarnaum": "2905305", + "cairu": "2905404", + "caldeirao grande": "2905503", + "camacan": "2905602", + "camacari": "2905701", + "camamu": "2905800", + "campo alegre de lourdes": "2905909", + "campo formoso": "2906006", + "canapolis": "2906105", + "canarana": "2906204", + "canavieiras": "2906303", + "candeal": "2906402", + "candeias": "2906501", + "candiba": "2906600", + "candido sales": "2906709", + "cansancao": "2906808", + "canudos": "2906824", + "capela do alto alegre": "2906857", + "capim grosso": "2906873", + "caraibas": "2906899", + "caravelas": "2906907", + "cardeal da silva": "2907004", + "carinhanha": "2907103", + "casa nova": "2907202", + "castro alves": "2907301", + "catolandia": "2907400", + "catu": "2907509", + "caturama": "2907558", + "central": "2907608", + "chorrocho": "2907707", + "cicero dantas": "2907806", + "cipo": "2907905", + "coaraci": "2908002", + "cocos": "2908101", + "conceicao da feira": "2908200", + "conceicao do almeida": "2908309", + "conceicao do coite": "2908408", + "conceicao do jacuipe": "2908507", + "conde": "2908606", + "condeuba": "2908705", + "contendas do sincora": "2908804", + "coracao de maria": "2908903", + "cordeiros": "2909000", + "coribe": "2909109", + "coronel joao sa": "2909208", + "correntina": "2909307", + "cotegipe": "2909406", + "cravolandia": "2909505", + "crisopolis": "2909604", + "cristopolis": "2909703", + "cruz das almas": "2909802", + "curaca": "2909901", + "dario meira": "2910008", + "dias d'avila": "2910057", + "dom basilio": "2910107", + "dom macedo costa": "2910206", + "elisio medrado": "2910305", + "encruzilhada": "2910404", + "entre rios": "2910503", + "erico cardoso": "2900504", + "esplanada": "2910602", + "euclides da cunha": "2910701", + "eunapolis": "2910727", + "fatima": "2910750", + "feira da mata": "2910776", + "feira de santana": "2910800", + "filadelfia": "2910859", + "firmino alves": "2910909", + "floresta azul": "2911006", + "formosa do rio preto": "2911105", + "gandu": "2911204", + "gaviao": "2911253", + "gentio do ouro": "2911303", + "gloria": "2911402", + "gongogi": "2911501", + "governador mangabeira": "2911600", + "guajeru": "2911659", + "guanambi": "2911709", + "guaratinga": "2911808", + "heliopolis": "2911857", + "iacu": "2911907", + "ibiassuce": "2912004", + "ibicarai": "2912103", + "ibicoara": "2912202", + "ibicui": "2912301", + "ibipeba": "2912400", + "ibipitanga": "2912509", + "ibiquera": "2912608", + "ibirapitanga": "2912707", + "ibirapua": "2912806", + "ibirataia": "2912905", + "ibitiara": "2913002", + "ibitita": "2913101", + "ibotirama": "2913200", + "ichu": "2913309", + "igapora": "2913408", + "igrapiuna": "2913457", + "iguai": "2913507", + "ilheus": "2913606", + "inhambupe": "2913705", + "ipecaeta": "2913804", + "ipiau": "2913903", + "ipira": "2914000", + "ipupiara": "2914109", + "irajuba": "2914208", + "iramaia": "2914307", + "iraquara": "2914406", + "irara": "2914505", + "irece": "2914604", + "itabela": "2914653", + "itaberaba": "2914703", + "itabuna": "2914802", + "itacare": "2914901", + "itaete": "2915007", + "itagi": "2915106", + "itagiba": "2915205", + "itagimirim": "2915304", + "itaguacu da bahia": "2915353", + "itaju do colonia": "2915403", + "itajuipe": "2915502", + "itamaraju": "2915601", + "itamari": "2915700", + "itambe": "2915809", + "itanagra": "2915908", + "itanhem": "2916005", + "itaparica": "2916104", + "itape": "2916203", + "itapebi": "2916302", + "itapetinga": "2916401", + "itapicuru": "2916500", + "itapitanga": "2916609", + "itaquara": "2916708", + "itarantim": "2916807", + "itatim": "2916856", + "itirucu": "2916906", + "itiuba": "2917003", + "itororo": "2917102", + "ituacu": "2917201", + "itubera": "2917300", + "iuiu": "2917334", + "jaborandi": "2917359", + "jacaraci": "2917409", + "jacobina": "2917508", + "jaguaquara": "2917607", + "jaguarari": "2917706", + "jaguaripe": "2917805", + "jandaira": "2917904", + "jequie": "2918001", + "jeremoabo": "2918100", + "jiquirica": "2918209", + "jitauna": "2918308", + "joao dourado": "2918357", + "juazeiro": "2918407", + "jucurucu": "2918456", + "jussara": "2918506", + "jussari": "2918555", + "jussiape": "2918605", + "lafaiete coutinho": "2918704", + "lagoa real": "2918753", + "laje": "2918803", + "lajedao": "2918902", + "lajedinho": "2919009", + "lajedo do tabocal": "2919058", + "lamarao": "2919108", + "lapao": "2919157", + "lauro de freitas": "2919207", + "lencois": "2919306", + "licinio de almeida": "2919405", + "livramento de nossa senhora": "2919504", + "luis eduardo magalhaes": "2919553", + "macajuba": "2919603", + "macarani": "2919702", + "macaubas": "2919801", + "macurure": "2919900", + "madre de deus": "2919926", + "maetinga": "2919959", + "maiquinique": "2920007", + "mairi": "2920106", + "malhada": "2920205", + "malhada de pedras": "2920304", + "manoel vitorino": "2920403", + "mansidao": "2920452", + "maracas": "2920502", + "maragogipe": "2920601", + "marau": "2920700", + "marcionilio souza": "2920809", + "mascote": "2920908", + "mata de sao joao": "2921005", + "matina": "2921054", + "medeiros neto": "2921104", + "miguel calmon": "2921203", + "milagres": "2921302", + "mirangaba": "2921401", + "mirante": "2921450", + "monte santo": "2921500", + "morpara": "2921609", + "morro do chapeu": "2921708", + "mortugaba": "2921807", + "mucuge": "2921906", + "mucuri": "2922003", + "mulungu do morro": "2922052", + "mundo novo": "2922102", + "muniz ferreira": "2922201", + "muquem do sao francisco": "2922250", + "muritiba": "2922300", + "mutuipe": "2922409", + "nazare": "2922508", + "nilo pecanha": "2922607", + "nordestina": "2922656", + "nova canaa": "2922706", + "nova fatima": "2922730", + "nova ibia": "2922755", + "nova itarana": "2922805", + "nova redencao": "2922854", + "nova soure": "2922904", + "nova vicosa": "2923001", + "novo horizonte": "2923035", + "novo triunfo": "2923050", + "olindina": "2923100", + "oliveira dos brejinhos": "2923209", + "ouricangas": "2923308", + "ourolandia": "2923357", + "palmas de monte alto": "2923407", + "palmeiras": "2923506", + "paramirim": "2923605", + "paratinga": "2923704", + "paripiranga": "2923803", + "pau brasil": "2923902", + "paulo afonso": "2924009", + "pe de serra": "2924058", + "pedrao": "2924108", + "pedro alexandre": "2924207", + "piata": "2924306", + "pilao arcado": "2924405", + "pindai": "2924504", + "pindobacu": "2924603", + "pintadas": "2924652", + "pirai do norte": "2924678", + "piripa": "2924702", + "piritiba": "2924801", + "planaltino": "2924900", + "planalto": "2925006", + "pocoes": "2925105", + "pojuca": "2925204", + "ponto novo": "2925253", + "porto seguro": "2925303", + "potiragua": "2925402", + "prado": "2925501", + "presidente dutra": "2925600", + "presidente janio quadros": "2925709", + "presidente tancredo neves": "2925758", + "queimadas": "2925808", + "quijingue": "2925907", + "quixabeira": "2925931", + "rafael jambeiro": "2925956", + "remanso": "2926004", + "retirolandia": "2926103", + "riachao das neves": "2926202", + "riachao do jacuipe": "2926301", + "riacho de santana": "2926400", + "ribeira do amparo": "2926509", + "ribeira do pombal": "2926608", + "ribeirao do largo": "2926657", + "rio de contas": "2926707", + "rio do antonio": "2926806", + "rio do pires": "2926905", + "rio real": "2927002", + "rodelas": "2927101", + "ruy barbosa": "2927200", + "salinas da margarida": "2927309", + "salvador": "2927408", + "santa barbara": "2927507", + "santa brigida": "2927606", + "santa cruz cabralia": "2927705", + "santa cruz da vitoria": "2927804", + "santa ines": "2927903", + "santa luzia": "2928059", + "santa maria da vitoria": "2928109", + "santa rita de cassia": "2928406", + "santa terezinha": "2928505", + "santaluz": "2928000", + "santana": "2928208", + "santanopolis": "2928307", + "santo amaro": "2928604", + "santo antonio de jesus": "2928703", + "santo estevao": "2928802", + "sao desiderio": "2928901", + "sao domingos": "2928950", + "sao felipe": "2929107", + "sao felix": "2929008", + "sao felix do coribe": "2929057", + "sao francisco do conde": "2929206", + "sao gabriel": "2929255", + "sao goncalo dos campos": "2929305", + "sao jose da vitoria": "2929354", + "sao jose do jacuipe": "2929370", + "sao miguel das matas": "2929404", + "sao sebastiao do passe": "2929503", + "sapeacu": "2929602", + "satiro dias": "2929701", + "saubara": "2929750", + "saude": "2929800", + "seabra": "2929909", + "sebastiao laranjeiras": "2930006", + "senhor do bonfim": "2930105", + "sento se": "2930204", + "serra do ramalho": "2930154", + "serra dourada": "2930303", + "serra preta": "2930402", + "serrinha": "2930501", + "serrolandia": "2930600", + "simoes filho": "2930709", + "sitio do mato": "2930758", + "sitio do quinto": "2930766", + "sobradinho": "2930774", + "souto soares": "2930808", + "tabocas do brejo velho": "2930907", + "tanhacu": "2931004", + "tanque novo": "2931053", + "tanquinho": "2931103", + "taperoa": "2931202", + "tapiramuta": "2931301", + "teixeira de freitas": "2931350", + "teodoro sampaio": "2931400", + "teofilandia": "2931509", + "teolandia": "2931608", + "terra nova": "2931707", + "tremedal": "2931806", + "tucano": "2931905", + "uaua": "2932002", + "ubaira": "2932101", + "ubaitaba": "2932200", + "ubata": "2932309", + "uibai": "2932408", + "umburanas": "2932457", + "una": "2932507", + "urandi": "2932606", + "urucuca": "2932705", + "utinga": "2932804", + "valenca": "2932903", + "valente": "2933000", + "varzea da roca": "2933059", + "varzea do poco": "2933109", + "varzea nova": "2933158", + "varzedo": "2933174", + "vera cruz": "2933208", + "vereda": "2933257", + "vitoria da conquista": "2933307", + "wagner": "2933406", + "wanderley": "2933455", + "wenceslau guimaraes": "2933505", + "xique-xique": "2933604" + }, + "MG": { + "abadia dos dourados": "3100104", + "abaete": "3100203", + "abre campo": "3100302", + "acaiaca": "3100401", + "acucena": "3100500", + "agua boa": "3100609", + "agua comprida": "3100708", + "aguanil": "3100807", + "aguas formosas": "3100906", + "aguas vermelhas": "3101003", + "aimores": "3101102", + "aiuruoca": "3101201", + "alagoa": "3101300", + "albertina": "3101409", + "alem paraiba": "3101508", + "alfenas": "3101607", + "alfredo vasconcelos": "3101631", + "almenara": "3101706", + "alpercata": "3101805", + "alpinopolis": "3101904", + "alterosa": "3102001", + "alto caparao": "3102050", + "alto jequitiba": "3153509", + "alto rio doce": "3102100", + "alvarenga": "3102209", + "alvinopolis": "3102308", + "alvorada de minas": "3102407", + "amparo do serra": "3102506", + "andradas": "3102605", + "andrelandia": "3102803", + "angelandia": "3102852", + "antonio carlos": "3102902", + "antonio dias": "3103009", + "antonio prado de minas": "3103108", + "aracai": "3103207", + "aracitaba": "3103306", + "aracuai": "3103405", + "araguari": "3103504", + "arantina": "3103603", + "araponga": "3103702", + "arapora": "3103751", + "arapua": "3103801", + "araujos": "3103900", + "araxa": "3104007", + "arceburgo": "3104106", + "arcos": "3104205", + "areado": "3104304", + "argirita": "3104403", + "aricanduva": "3104452", + "arinos": "3104502", + "astolfo dutra": "3104601", + "ataleia": "3104700", + "augusto de lima": "3104809", + "baependi": "3104908", + "baldim": "3105004", + "bambui": "3105103", + "bandeira": "3105202", + "bandeira do sul": "3105301", + "barao de cocais": "3105400", + "barao de monte alto": "3105509", + "barbacena": "3105608", + "barra longa": "3105707", + "barroso": "3105905", + "bela vista de minas": "3106002", + "belmiro braga": "3106101", + "belo horizonte": "3106200", + "belo oriente": "3106309", + "belo vale": "3106408", + "berilo": "3106507", + "berizal": "3106655", + "bertopolis": "3106606", + "betim": "3106705", + "bias fortes": "3106804", + "bicas": "3106903", + "biquinhas": "3107000", + "boa esperanca": "3107109", + "bocaina de minas": "3107208", + "bocaiuva": "3107307", + "bom despacho": "3107406", + "bom jardim de minas": "3107505", + "bom jesus da penha": "3107604", + "bom jesus do amparo": "3107703", + "bom jesus do galho": "3107802", + "bom repouso": "3107901", + "bom sucesso": "3108008", + "bonfim": "3108107", + "bonfinopolis de minas": "3108206", + "bonito de minas": "3108255", + "borda da mata": "3108305", + "botelhos": "3108404", + "botumirim": "3108503", + "bras pires": "3108701", + "brasilandia de minas": "3108552", + "brasilia de minas": "3108602", + "braunas": "3108800", + "brazopolis": "3108909", + "brumadinho": "3109006", + "bueno brandao": "3109105", + "buenopolis": "3109204", + "bugre": "3109253", + "buritis": "3109303", + "buritizeiro": "3109402", + "cabeceira grande": "3109451", + "cabo verde": "3109501", + "cachoeira da prata": "3109600", + "cachoeira de minas": "3109709", + "cachoeira de pajeu": "3102704", + "cachoeira dourada": "3109808", + "caetanopolis": "3109907", + "caete": "3110004", + "caiana": "3110103", + "cajuri": "3110202", + "caldas": "3110301", + "camacho": "3110400", + "camanducaia": "3110509", + "cambui": "3110608", + "cambuquira": "3110707", + "campanario": "3110806", + "campanha": "3110905", + "campestre": "3111002", + "campina verde": "3111101", + "campo azul": "3111150", + "campo belo": "3111200", + "campo do meio": "3111309", + "campo florido": "3111408", + "campos altos": "3111507", + "campos gerais": "3111606", + "cana verde": "3111903", + "canaa": "3111705", + "canapolis": "3111804", + "candeias": "3112000", + "cantagalo": "3112059", + "caparao": "3112109", + "capela nova": "3112208", + "capelinha": "3112307", + "capetinga": "3112406", + "capim branco": "3112505", + "capinopolis": "3112604", + "capitao andrade": "3112653", + "capitao eneas": "3112703", + "capitolio": "3112802", + "caputira": "3112901", + "carai": "3113008", + "caranaiba": "3113107", + "carandai": "3113206", + "carangola": "3113305", + "caratinga": "3113404", + "carbonita": "3113503", + "careacu": "3113602", + "carlos chagas": "3113701", + "carmesia": "3113800", + "carmo da cachoeira": "3113909", + "carmo da mata": "3114006", + "carmo de minas": "3114105", + "carmo do cajuru": "3114204", + "carmo do paranaiba": "3114303", + "carmo do rio claro": "3114402", + "carmopolis de minas": "3114501", + "carneirinho": "3114550", + "carrancas": "3114600", + "carvalhopolis": "3114709", + "carvalhos": "3114808", + "casa grande": "3114907", + "cascalho rico": "3115003", + "cassia": "3115102", + "cataguases": "3115300", + "catas altas": "3115359", + "catas altas da noruega": "3115409", + "catuji": "3115458", + "catuti": "3115474", + "caxambu": "3115508", + "cedro do abaete": "3115607", + "central de minas": "3115706", + "centralina": "3115805", + "chacara": "3115904", + "chale": "3116001", + "chapada do norte": "3116100", + "chapada gaucha": "3116159", + "chiador": "3116209", + "cipotanea": "3116308", + "claraval": "3116407", + "claro dos pocoes": "3116506", + "claudio": "3116605", + "coimbra": "3116704", + "coluna": "3116803", + "comendador gomes": "3116902", + "comercinho": "3117009", + "conceicao da aparecida": "3117108", + "conceicao da barra de minas": "3115201", + "conceicao das alagoas": "3117306", + "conceicao das pedras": "3117207", + "conceicao de ipanema": "3117405", + "conceicao do mato dentro": "3117504", + "conceicao do para": "3117603", + "conceicao do rio verde": "3117702", + "conceicao dos ouros": "3117801", + "conego marinho": "3117836", + "confins": "3117876", + "congonhal": "3117900", + "congonhas": "3118007", + "congonhas do norte": "3118106", + "conquista": "3118205", + "conselheiro lafaiete": "3118304", + "conselheiro pena": "3118403", + "consolacao": "3118502", + "contagem": "3118601", + "coqueiral": "3118700", + "coracao de jesus": "3118809", + "cordisburgo": "3118908", + "cordislandia": "3119005", + "corinto": "3119104", + "coroaci": "3119203", + "coromandel": "3119302", + "coronel fabriciano": "3119401", + "coronel murta": "3119500", + "coronel pacheco": "3119609", + "coronel xavier chaves": "3119708", + "corrego danta": "3119807", + "corrego do bom jesus": "3119906", + "corrego fundo": "3119955", + "corrego novo": "3120003", + "couto de magalhaes de minas": "3120102", + "crisolita": "3120151", + "cristais": "3120201", + "cristalia": "3120300", + "cristiano otoni": "3120409", + "cristina": "3120508", + "crucilandia": "3120607", + "cruzeiro da fortaleza": "3120706", + "cruzilia": "3120805", + "cuparaque": "3120839", + "curral de dentro": "3120870", + "curvelo": "3120904", + "datas": "3121001", + "delfim moreira": "3121100", + "delfinopolis": "3121209", + "delta": "3121258", + "descoberto": "3121308", + "desterro de entre rios": "3121407", + "desterro do melo": "3121506", + "diamantina": "3121605", + "diogo de vasconcelos": "3121704", + "dionisio": "3121803", + "divinesia": "3121902", + "divino": "3122009", + "divino das laranjeiras": "3122108", + "divinolandia de minas": "3122207", + "divinopolis": "3122306", + "divisa alegre": "3122355", + "divisa nova": "3122405", + "divisopolis": "3122454", + "dom bosco": "3122470", + "dom cavati": "3122504", + "dom joaquim": "3122603", + "dom silverio": "3122702", + "dom vicoso": "3122801", + "dona euzebia": "3122900", + "dores de campos": "3123007", + "dores de guanhaes": "3123106", + "dores do indaia": "3123205", + "dores do turvo": "3123304", + "doresopolis": "3123403", + "douradoquara": "3123502", + "durande": "3123528", + "eloi mendes": "3123601", + "engenheiro caldas": "3123700", + "engenheiro navarro": "3123809", + "entre folhas": "3123858", + "entre rios de minas": "3123908", + "ervalia": "3124005", + "esmeraldas": "3124104", + "espera feliz": "3124203", + "espinosa": "3124302", + "espirito santo do dourado": "3124401", + "estiva": "3124500", + "estrela dalva": "3124609", + "estrela do indaia": "3124708", + "estrela do sul": "3124807", + "eugenopolis": "3124906", + "ewbank da camara": "3125002", + "extrema": "3125101", + "fama": "3125200", + "faria lemos": "3125309", + "felicio dos santos": "3125408", + "felisburgo": "3125606", + "felixlandia": "3125705", + "fernandes tourinho": "3125804", + "ferros": "3125903", + "fervedouro": "3125952", + "florestal": "3126000", + "formiga": "3126109", + "formoso": "3126208", + "fortaleza de minas": "3126307", + "fortuna de minas": "3126406", + "francisco badaro": "3126505", + "francisco dumont": "3126604", + "francisco sa": "3126703", + "franciscopolis": "3126752", + "frei gaspar": "3126802", + "frei inocencio": "3126901", + "frei lagonegro": "3126950", + "fronteira": "3127008", + "fronteira dos vales": "3127057", + "fruta de leite": "3127073", + "frutal": "3127107", + "funilandia": "3127206", + "galileia": "3127305", + "gameleiras": "3127339", + "glaucilandia": "3127354", + "goiabeira": "3127370", + "goiana": "3127388", + "goncalves": "3127404", + "gonzaga": "3127503", + "gouveia": "3127602", + "governador valadares": "3127701", + "grao mogol": "3127800", + "grupiara": "3127909", + "guanhaes": "3128006", + "guape": "3128105", + "guaraciaba": "3128204", + "guaraciama": "3128253", + "guaranesia": "3128303", + "guarani": "3128402", + "guarara": "3128501", + "guarda-mor": "3128600", + "guaxupe": "3128709", + "guidoval": "3128808", + "guimarania": "3128907", + "guiricema": "3129004", + "gurinhata": "3129103", + "heliodora": "3129202", + "iapu": "3129301", + "ibertioga": "3129400", + "ibia": "3129509", + "ibiai": "3129608", + "ibiracatu": "3129657", + "ibiraci": "3129707", + "ibirite": "3129806", + "ibitiura de minas": "3129905", + "ibituruna": "3130002", + "icarai de minas": "3130051", + "igarape": "3130101", + "igaratinga": "3130200", + "iguatama": "3130309", + "ijaci": "3130408", + "ilicinea": "3130507", + "imbe de minas": "3130556", + "inconfidentes": "3130606", + "indaiabira": "3130655", + "indianopolis": "3130705", + "ingai": "3130804", + "inhapim": "3130903", + "inhauma": "3131000", + "inimutaba": "3131109", + "ipaba": "3131158", + "ipanema": "3131208", + "ipatinga": "3131307", + "ipiacu": "3131406", + "ipuiuna": "3131505", + "irai de minas": "3131604", + "itabira": "3131703", + "itabirinha": "3131802", + "itabirito": "3131901", + "itacambira": "3132008", + "itacarambi": "3132107", + "itaguara": "3132206", + "itaipe": "3132305", + "itajuba": "3132404", + "itamarandiba": "3132503", + "itamarati de minas": "3132602", + "itambacuri": "3132701", + "itambe do mato dentro": "3132800", + "itamogi": "3132909", + "itamonte": "3133006", + "itanhandu": "3133105", + "itanhomi": "3133204", + "itaobim": "3133303", + "itapagipe": "3133402", + "itapecerica": "3133501", + "itapeva": "3133600", + "itatiaiucu": "3133709", + "itau de minas": "3133758", + "itauna": "3133808", + "itaverava": "3133907", + "itinga": "3134004", + "itueta": "3134103", + "ituiutaba": "3134202", + "itumirim": "3134301", + "iturama": "3134400", + "itutinga": "3134509", + "jaboticatubas": "3134608", + "jacinto": "3134707", + "jacui": "3134806", + "jacutinga": "3134905", + "jaguaracu": "3135001", + "jaiba": "3135050", + "jampruca": "3135076", + "janauba": "3135100", + "januaria": "3135209", + "japaraiba": "3135308", + "japonvar": "3135357", + "jeceaba": "3135407", + "jenipapo de minas": "3135456", + "jequeri": "3135506", + "jequitai": "3135605", + "jequitiba": "3135704", + "jequitinhonha": "3135803", + "jesuania": "3135902", + "joaima": "3136009", + "joanesia": "3136108", + "joao monlevade": "3136207", + "joao pinheiro": "3136306", + "joaquim felicio": "3136405", + "jordania": "3136504", + "jose goncalves de minas": "3136520", + "jose raydan": "3136553", + "josenopolis": "3136579", + "juatuba": "3136652", + "juiz de fora": "3136702", + "juramento": "3136801", + "juruaia": "3136900", + "juvenilia": "3136959", + "ladainha": "3137007", + "lagamar": "3137106", + "lagoa da prata": "3137205", + "lagoa dos patos": "3137304", + "lagoa dourada": "3137403", + "lagoa formosa": "3137502", + "lagoa grande": "3137536", + "lagoa santa": "3137601", + "lajinha": "3137700", + "lambari": "3137809", + "lamim": "3137908", + "laranjal": "3138005", + "lassance": "3138104", + "lavras": "3138203", + "leandro ferreira": "3138302", + "leme do prado": "3138351", + "leopoldina": "3138401", + "liberdade": "3138500", + "lima duarte": "3138609", + "limeira do oeste": "3138625", + "lontra": "3138658", + "luisburgo": "3138674", + "luislandia": "3138682", + "luminarias": "3138708", + "luz": "3138807", + "machacalis": "3138906", + "machado": "3139003", + "madre de deus de minas": "3139102", + "malacacheta": "3139201", + "mamonas": "3139250", + "manga": "3139300", + "manhuacu": "3139409", + "manhumirim": "3139508", + "mantena": "3139607", + "mar de espanha": "3139805", + "maravilhas": "3139706", + "maria da fe": "3139904", + "mariana": "3140001", + "marilac": "3140100", + "mario campos": "3140159", + "maripa de minas": "3140209", + "marlieria": "3140308", + "marmelopolis": "3140407", + "martinho campos": "3140506", + "martins soares": "3140530", + "mata verde": "3140555", + "materlandia": "3140605", + "mateus leme": "3140704", + "mathias lobato": "3171501", + "matias barbosa": "3140803", + "matias cardoso": "3140852", + "matipo": "3140902", + "mato verde": "3141009", + "matozinhos": "3141108", + "matutina": "3141207", + "medeiros": "3141306", + "medina": "3141405", + "mendes pimentel": "3141504", + "merces": "3141603", + "mesquita": "3141702", + "minas novas": "3141801", + "minduri": "3141900", + "mirabela": "3142007", + "miradouro": "3142106", + "mirai": "3142205", + "miravania": "3142254", + "moeda": "3142304", + "moema": "3142403", + "monjolos": "3142502", + "monsenhor paulo": "3142601", + "montalvania": "3142700", + "monte alegre de minas": "3142809", + "monte azul": "3142908", + "monte belo": "3143005", + "monte carmelo": "3143104", + "monte formoso": "3143153", + "monte santo de minas": "3143203", + "monte siao": "3143401", + "montes claros": "3143302", + "montezuma": "3143450", + "morada nova de minas": "3143500", + "morro da garca": "3143609", + "morro do pilar": "3143708", + "munhoz": "3143807", + "muriae": "3143906", + "mutum": "3144003", + "muzambinho": "3144102", + "nacip raydan": "3144201", + "nanuque": "3144300", + "naque": "3144359", + "natalandia": "3144375", + "natercia": "3144409", + "nazareno": "3144508", + "nepomuceno": "3144607", + "ninheira": "3144656", + "nova belem": "3144672", + "nova era": "3144706", + "nova lima": "3144805", + "nova modica": "3144904", + "nova ponte": "3145000", + "nova porteirinha": "3145059", + "nova resende": "3145109", + "nova serrana": "3145208", + "nova uniao": "3136603", + "novo cruzeiro": "3145307", + "novo oriente de minas": "3145356", + "novorizonte": "3145372", + "olaria": "3145406", + "olhos-d'agua": "3145455", + "olimpio noronha": "3145505", + "oliveira": "3145604", + "oliveira fortes": "3145703", + "onca de pitangui": "3145802", + "oratorios": "3145851", + "orizania": "3145877", + "ouro branco": "3145901", + "ouro fino": "3146008", + "ouro preto": "3146107", + "ouro verde de minas": "3146206", + "padre carvalho": "3146255", + "padre paraiso": "3146305", + "pai pedro": "3146552", + "paineiras": "3146404", + "pains": "3146503", + "paiva": "3146602", + "palma": "3146701", + "palmopolis": "3146750", + "papagaios": "3146909", + "para de minas": "3147105", + "paracatu": "3147006", + "paraguacu": "3147204", + "paraisopolis": "3147303", + "paraopeba": "3147402", + "passa quatro": "3147600", + "passa tempo": "3147709", + "passa vinte": "3147808", + "passabem": "3147501", + "passos": "3147907", + "patis": "3147956", + "patos de minas": "3148004", + "patrocinio": "3148103", + "patrocinio do muriae": "3148202", + "paula candido": "3148301", + "paulistas": "3148400", + "pavao": "3148509", + "pecanha": "3148608", + "pedra azul": "3148707", + "pedra bonita": "3148756", + "pedra do anta": "3148806", + "pedra do indaia": "3148905", + "pedra dourada": "3149002", + "pedralva": "3149101", + "pedras de maria da cruz": "3149150", + "pedrinopolis": "3149200", + "pedro leopoldo": "3149309", + "pedro teixeira": "3149408", + "pequeri": "3149507", + "pequi": "3149606", + "perdigao": "3149705", + "perdizes": "3149804", + "perdoes": "3149903", + "periquito": "3149952", + "pescador": "3150000", + "piau": "3150109", + "piedade de caratinga": "3150158", + "piedade de ponte nova": "3150208", + "piedade do rio grande": "3150307", + "piedade dos gerais": "3150406", + "pimenta": "3150505", + "pingo-d'agua": "3150539", + "pintopolis": "3150570", + "piracema": "3150604", + "pirajuba": "3150703", + "piranga": "3150802", + "pirangucu": "3150901", + "piranguinho": "3151008", + "pirapetinga": "3151107", + "pirapora": "3151206", + "pirauba": "3151305", + "pitangui": "3151404", + "piumhi": "3151503", + "planura": "3151602", + "poco fundo": "3151701", + "pocos de caldas": "3151800", + "pocrane": "3151909", + "pompeu": "3152006", + "ponte nova": "3152105", + "ponto chique": "3152131", + "ponto dos volantes": "3152170", + "porteirinha": "3152204", + "porto firme": "3152303", + "pote": "3152402", + "pouso alegre": "3152501", + "pouso alto": "3152600", + "prados": "3152709", + "prata": "3152808", + "pratapolis": "3152907", + "pratinha": "3153004", + "presidente bernardes": "3153103", + "presidente juscelino": "3153202", + "presidente kubitschek": "3153301", + "presidente olegario": "3153400", + "prudente de morais": "3153608", + "quartel geral": "3153707", + "queluzito": "3153806", + "raposos": "3153905", + "raul soares": "3154002", + "recreio": "3154101", + "reduto": "3154150", + "resende costa": "3154200", + "resplendor": "3154309", + "ressaquinha": "3154408", + "riachinho": "3154457", + "riacho dos machados": "3154507", + "ribeirao das neves": "3154606", + "ribeirao vermelho": "3154705", + "rio acima": "3154804", + "rio casca": "3154903", + "rio do prado": "3155108", + "rio doce": "3155009", + "rio espera": "3155207", + "rio manso": "3155306", + "rio novo": "3155405", + "rio paranaiba": "3155504", + "rio pardo de minas": "3155603", + "rio piracicaba": "3155702", + "rio pomba": "3155801", + "rio preto": "3155900", + "rio vermelho": "3156007", + "ritapolis": "3156106", + "rochedo de minas": "3156205", + "rodeiro": "3156304", + "romaria": "3156403", + "rosario da limeira": "3156452", + "rubelita": "3156502", + "rubim": "3156601", + "sabara": "3156700", + "sabinopolis": "3156809", + "sacramento": "3156908", + "salinas": "3157005", + "salto da divisa": "3157104", + "santa barbara": "3157203", + "santa barbara do leste": "3157252", + "santa barbara do monte verde": "3157278", + "santa barbara do tugurio": "3157302", + "santa cruz de minas": "3157336", + "santa cruz de salinas": "3157377", + "santa cruz do escalvado": "3157401", + "santa efigenia de minas": "3157500", + "santa fe de minas": "3157609", + "santa helena de minas": "3157658", + "santa juliana": "3157708", + "santa luzia": "3157807", + "santa margarida": "3157906", + "santa maria de itabira": "3158003", + "santa maria do salto": "3158102", + "santa maria do suacui": "3158201", + "santa rita de caldas": "3159209", + "santa rita de ibitipoca": "3159407", + "santa rita de jacutinga": "3159308", + "santa rita de minas": "3159357", + "santa rita do itueto": "3159506", + "santa rita do sapucai": "3159605", + "santa rosa da serra": "3159704", + "santa vitoria": "3159803", + "santana da vargem": "3158300", + "santana de cataguases": "3158409", + "santana de pirapama": "3158508", + "santana do deserto": "3158607", + "santana do garambeu": "3158706", + "santana do jacare": "3158805", + "santana do manhuacu": "3158904", + "santana do paraiso": "3158953", + "santana do riacho": "3159001", + "santana dos montes": "3159100", + "santo antonio do amparo": "3159902", + "santo antonio do aventureiro": "3160009", + "santo antonio do grama": "3160108", + "santo antonio do itambe": "3160207", + "santo antonio do jacinto": "3160306", + "santo antonio do monte": "3160405", + "santo antonio do retiro": "3160454", + "santo antonio do rio abaixo": "3160504", + "santo hipolito": "3160603", + "santos dumont": "3160702", + "sao bento abade": "3160801", + "sao bras do suacui": "3160900", + "sao domingos das dores": "3160959", + "sao domingos do prata": "3161007", + "sao felix de minas": "3161056", + "sao francisco": "3161106", + "sao francisco de paula": "3161205", + "sao francisco de sales": "3161304", + "sao francisco do gloria": "3161403", + "sao geraldo": "3161502", + "sao geraldo da piedade": "3161601", + "sao geraldo do baixio": "3161650", + "sao goncalo do abaete": "3161700", + "sao goncalo do para": "3161809", + "sao goncalo do rio abaixo": "3161908", + "sao goncalo do rio preto": "3125507", + "sao goncalo do sapucai": "3162005", + "sao gotardo": "3162104", + "sao joao batista do gloria": "3162203", + "sao joao da lagoa": "3162252", + "sao joao da mata": "3162302", + "sao joao da ponte": "3162401", + "sao joao das missoes": "3162450", + "sao joao del rei": "3162500", + "sao joao do manhuacu": "3162559", + "sao joao do manteninha": "3162575", + "sao joao do oriente": "3162609", + "sao joao do pacui": "3162658", + "sao joao do paraiso": "3162708", + "sao joao evangelista": "3162807", + "sao joao nepomuceno": "3162906", + "sao joaquim de bicas": "3162922", + "sao jose da barra": "3162948", + "sao jose da lapa": "3162955", + "sao jose da safira": "3163003", + "sao jose da varginha": "3163102", + "sao jose do alegre": "3163201", + "sao jose do divino": "3163300", + "sao jose do goiabal": "3163409", + "sao jose do jacuri": "3163508", + "sao jose do mantimento": "3163607", + "sao lourenco": "3163706", + "sao miguel do anta": "3163805", + "sao pedro da uniao": "3163904", + "sao pedro do suacui": "3164100", + "sao pedro dos ferros": "3164001", + "sao romao": "3164209", + "sao roque de minas": "3164308", + "sao sebastiao da bela vista": "3164407", + "sao sebastiao da vargem alegre": "3164431", + "sao sebastiao do anta": "3164472", + "sao sebastiao do maranhao": "3164506", + "sao sebastiao do oeste": "3164605", + "sao sebastiao do paraiso": "3164704", + "sao sebastiao do rio preto": "3164803", + "sao sebastiao do rio verde": "3164902", + "sao tiago": "3165008", + "sao tomas de aquino": "3165107", + "sao tome das letras": "3165206", + "sao vicente de minas": "3165305", + "sapucai-mirim": "3165404", + "sardoa": "3165503", + "sarzedo": "3165537", + "sem-peixe": "3165560", + "senador amaral": "3165578", + "senador cortes": "3165602", + "senador firmino": "3165701", + "senador jose bento": "3165800", + "senador modestino goncalves": "3165909", + "senhora de oliveira": "3166006", + "senhora do porto": "3166105", + "senhora dos remedios": "3166204", + "sericita": "3166303", + "seritinga": "3166402", + "serra azul de minas": "3166501", + "serra da saudade": "3166600", + "serra do salitre": "3166808", + "serra dos aimores": "3166709", + "serrania": "3166907", + "serranopolis de minas": "3166956", + "serranos": "3167004", + "serro": "3167103", + "sete lagoas": "3167202", + "setubinha": "3165552", + "silveirania": "3167301", + "silvianopolis": "3167400", + "simao pereira": "3167509", + "simonesia": "3167608", + "sobralia": "3167707", + "soledade de minas": "3167806", + "tabuleiro": "3167905", + "taiobeiras": "3168002", + "taparuba": "3168051", + "tapira": "3168101", + "tapirai": "3168200", + "taquaracu de minas": "3168309", + "tarumirim": "3168408", + "teixeiras": "3168507", + "teofilo otoni": "3168606", + "timoteo": "3168705", + "tiradentes": "3168804", + "tiros": "3168903", + "tocantins": "3169000", + "tocos do moji": "3169059", + "toledo": "3169109", + "tombos": "3169208", + "tres coracoes": "3169307", + "tres marias": "3169356", + "tres pontas": "3169406", + "tumiritinga": "3169505", + "tupaciguara": "3169604", + "turmalina": "3169703", + "turvolandia": "3169802", + "uba": "3169901", + "ubai": "3170008", + "ubaporanga": "3170057", + "uberaba": "3170107", + "uberlandia": "3170206", + "umburatiba": "3170305", + "unai": "3170404", + "uniao de minas": "3170438", + "uruana de minas": "3170479", + "urucania": "3170503", + "urucuia": "3170529", + "vargem alegre": "3170578", + "vargem bonita": "3170602", + "vargem grande do rio pardo": "3170651", + "varginha": "3170701", + "varjao de minas": "3170750", + "varzea da palma": "3170800", + "varzelandia": "3170909", + "vazante": "3171006", + "verdelandia": "3171030", + "veredinha": "3171071", + "verissimo": "3171105", + "vermelho novo": "3171154", + "vespasiano": "3171204", + "vicosa": "3171303", + "vieiras": "3171402", + "virgem da lapa": "3171600", + "virginia": "3171709", + "virginopolis": "3171808", + "virgolandia": "3171907", + "visconde do rio branco": "3172004", + "volta grande": "3172103", + "wenceslau braz": "3172202" + }, + "ES": { + "afonso claudio": "3200102", + "agua doce do norte": "3200169", + "aguia branca": "3200136", + "alegre": "3200201", + "alfredo chaves": "3200300", + "alto rio novo": "3200359", + "anchieta": "3200409", + "apiaca": "3200508", + "aracruz": "3200607", + "atilio vivacqua": "3200706", + "baixo guandu": "3200805", + "barra de sao francisco": "3200904", + "boa esperanca": "3201001", + "bom jesus do norte": "3201100", + "brejetuba": "3201159", + "cachoeiro de itapemirim": "3201209", + "cariacica": "3201308", + "castelo": "3201407", + "colatina": "3201506", + "conceicao da barra": "3201605", + "conceicao do castelo": "3201704", + "divino de sao lourenco": "3201803", + "domingos martins": "3201902", + "dores do rio preto": "3202009", + "ecoporanga": "3202108", + "fundao": "3202207", + "governador lindenberg": "3202256", + "guacui": "3202306", + "guarapari": "3202405", + "ibatiba": "3202454", + "ibiracu": "3202504", + "ibitirama": "3202553", + "iconha": "3202603", + "irupi": "3202652", + "itaguacu": "3202702", + "itapemirim": "3202801", + "itarana": "3202900", + "iuna": "3203007", + "jaguare": "3203056", + "jeronimo monteiro": "3203106", + "joao neiva": "3203130", + "laranja da terra": "3203163", + "linhares": "3203205", + "mantenopolis": "3203304", + "marataizes": "3203320", + "marechal floriano": "3203346", + "marilandia": "3203353", + "mimoso do sul": "3203403", + "montanha": "3203502", + "mucurici": "3203601", + "muniz freire": "3203700", + "muqui": "3203809", + "nova venecia": "3203908", + "pancas": "3204005", + "pedro canario": "3204054", + "pinheiros": "3204104", + "piuma": "3204203", + "ponto belo": "3204252", + "presidente kennedy": "3204302", + "rio bananal": "3204351", + "rio novo do sul": "3204401", + "santa leopoldina": "3204500", + "santa maria de jetiba": "3204559", + "santa teresa": "3204609", + "sao domingos do norte": "3204658", + "sao gabriel da palha": "3204708", + "sao jose do calcado": "3204807", + "sao mateus": "3204906", + "sao roque do canaa": "3204955", + "serra": "3205002", + "sooretama": "3205010", + "vargem alta": "3205036", + "venda nova do imigrante": "3205069", + "viana": "3205101", + "vila pavao": "3205150", + "vila valerio": "3205176", + "vila velha": "3205200", + "vitoria": "3205309" + }, + "RJ": { + "angra dos reis": "3300100", + "aperibe": "3300159", + "araruama": "3300209", + "areal": "3300225", + "armacao dos buzios": "3300233", + "arraial do cabo": "3300258", + "barra do pirai": "3300308", + "barra mansa": "3300407", + "belford roxo": "3300456", + "bom jardim": "3300506", + "bom jesus do itabapoana": "3300605", + "cabo frio": "3300704", + "cachoeiras de macacu": "3300803", + "cambuci": "3300902", + "campos dos goytacazes": "3301009", + "cantagalo": "3301108", + "carapebus": "3300936", + "cardoso moreira": "3301157", + "carmo": "3301207", + "casimiro de abreu": "3301306", + "comendador levy gasparian": "3300951", + "conceicao de macabu": "3301405", + "cordeiro": "3301504", + "duas barras": "3301603", + "duque de caxias": "3301702", + "engenheiro paulo de frontin": "3301801", + "guapimirim": "3301850", + "iguaba grande": "3301876", + "itaborai": "3301900", + "itaguai": "3302007", + "italva": "3302056", + "itaocara": "3302106", + "itaperuna": "3302205", + "itatiaia": "3302254", + "japeri": "3302270", + "laje do muriae": "3302304", + "macae": "3302403", + "macuco": "3302452", + "mage": "3302502", + "mangaratiba": "3302601", + "marica": "3302700", + "mendes": "3302809", + "mesquita": "3302858", + "miguel pereira": "3302908", + "miracema": "3303005", + "natividade": "3303104", + "nilopolis": "3303203", + "niteroi": "3303302", + "nova friburgo": "3303401", + "nova iguacu": "3303500", + "paracambi": "3303609", + "paraiba do sul": "3303708", + "paraty": "3303807", + "paty do alferes": "3303856", + "petropolis": "3303906", + "pinheiral": "3303955", + "pirai": "3304003", + "porciuncula": "3304102", + "porto real": "3304110", + "quatis": "3304128", + "queimados": "3304144", + "quissama": "3304151", + "resende": "3304201", + "rio bonito": "3304300", + "rio claro": "3304409", + "rio das flores": "3304508", + "rio das ostras": "3304524", + "rio de janeiro": "3304557", + "santa maria madalena": "3304607", + "santo antonio de padua": "3304706", + "sao fidelis": "3304805", + "sao francisco de itabapoana": "3304755", + "sao goncalo": "3304904", + "sao joao da barra": "3305000", + "sao joao de meriti": "3305109", + "sao jose de uba": "3305133", + "sao jose do vale do rio preto": "3305158", + "sao pedro da aldeia": "3305208", + "sao sebastiao do alto": "3305307", + "sapucaia": "3305406", + "saquarema": "3305505", + "seropedica": "3305554", + "silva jardim": "3305604", + "sumidouro": "3305703", + "tangua": "3305752", + "teresopolis": "3305802", + "trajano de moraes": "3305901", + "tres rios": "3306008", + "valenca": "3306107", + "varre-sai": "3306156", + "vassouras": "3306206", + "volta redonda": "3306305" + }, + "SP": { + "adamantina": "3500105", + "adolfo": "3500204", + "aguai": "3500303", + "aguas da prata": "3500402", + "aguas de lindoia": "3500501", + "aguas de santa barbara": "3500550", + "aguas de sao pedro": "3500600", + "agudos": "3500709", + "alambari": "3500758", + "alfredo marcondes": "3500808", + "altair": "3500907", + "altinopolis": "3501004", + "alto alegre": "3501103", + "aluminio": "3501152", + "alvares florence": "3501202", + "alvares machado": "3501301", + "alvaro de carvalho": "3501400", + "alvinlandia": "3501509", + "americana": "3501608", + "americo brasiliense": "3501707", + "americo de campos": "3501806", + "amparo": "3501905", + "analandia": "3502002", + "andradina": "3502101", + "angatuba": "3502200", + "anhembi": "3502309", + "anhumas": "3502408", + "aparecida": "3502507", + "aparecida d'oeste": "3502606", + "apiai": "3502705", + "aracariguama": "3502754", + "aracatuba": "3502804", + "aracoiaba da serra": "3502903", + "aramina": "3503000", + "arandu": "3503109", + "arapei": "3503158", + "araraquara": "3503208", + "araras": "3503307", + "arco-iris": "3503356", + "arealva": "3503406", + "areias": "3503505", + "areiopolis": "3503604", + "ariranha": "3503703", + "artur nogueira": "3503802", + "aruja": "3503901", + "aspasia": "3503950", + "assis": "3504008", + "atibaia": "3504107", + "auriflama": "3504206", + "avai": "3504305", + "avanhandava": "3504404", + "avare": "3504503", + "bady bassitt": "3504602", + "balbinos": "3504701", + "balsamo": "3504800", + "bananal": "3504909", + "barao de antonina": "3505005", + "barbosa": "3505104", + "bariri": "3505203", + "barra bonita": "3505302", + "barra do chapeu": "3505351", + "barra do turvo": "3505401", + "barretos": "3505500", + "barrinha": "3505609", + "barueri": "3505708", + "bastos": "3505807", + "batatais": "3505906", + "bauru": "3506003", + "bebedouro": "3506102", + "bento de abreu": "3506201", + "bernardino de campos": "3506300", + "bertioga": "3506359", + "bilac": "3506409", + "birigui": "3506508", + "biritiba mirim": "3506607", + "boa esperanca do sul": "3506706", + "bocaina": "3506805", + "bofete": "3506904", + "boituva": "3507001", + "bom jesus dos perdoes": "3507100", + "bom sucesso de itarare": "3507159", + "bora": "3507209", + "boraceia": "3507308", + "borborema": "3507407", + "borebi": "3507456", + "botucatu": "3507506", + "braganca paulista": "3507605", + "brauna": "3507704", + "brejo alegre": "3507753", + "brodowski": "3507803", + "brotas": "3507902", + "buri": "3508009", + "buritama": "3508108", + "buritizal": "3508207", + "cabralia paulista": "3508306", + "cabreuva": "3508405", + "cacapava": "3508504", + "cachoeira paulista": "3508603", + "caconde": "3508702", + "cafelandia": "3508801", + "caiabu": "3508900", + "caieiras": "3509007", + "caiua": "3509106", + "cajamar": "3509205", + "cajati": "3509254", + "cajobi": "3509304", + "cajuru": "3509403", + "campina do monte alegre": "3509452", + "campinas": "3509502", + "campo limpo paulista": "3509601", + "campos do jordao": "3509700", + "campos novos paulista": "3509809", + "cananeia": "3509908", + "canas": "3509957", + "candido mota": "3510005", + "candido rodrigues": "3510104", + "canitar": "3510153", + "capao bonito": "3510203", + "capela do alto": "3510302", + "capivari": "3510401", + "caraguatatuba": "3510500", + "carapicuiba": "3510609", + "cardoso": "3510708", + "casa branca": "3510807", + "cassia dos coqueiros": "3510906", + "castilho": "3511003", + "catanduva": "3511102", + "catigua": "3511201", + "cedral": "3511300", + "cerqueira cesar": "3511409", + "cerquilho": "3511508", + "cesario lange": "3511607", + "charqueada": "3511706", + "chavantes": "3557204", + "clementina": "3511904", + "colina": "3512001", + "colombia": "3512100", + "conchal": "3512209", + "conchas": "3512308", + "cordeiropolis": "3512407", + "coroados": "3512506", + "coronel macedo": "3512605", + "corumbatai": "3512704", + "cosmopolis": "3512803", + "cosmorama": "3512902", + "cotia": "3513009", + "cravinhos": "3513108", + "cristais paulista": "3513207", + "cruzalia": "3513306", + "cruzeiro": "3513405", + "cubatao": "3513504", + "cunha": "3513603", + "descalvado": "3513702", + "diadema": "3513801", + "dirce reis": "3513850", + "divinolandia": "3513900", + "dobrada": "3514007", + "dois corregos": "3514106", + "dolcinopolis": "3514205", + "dourado": "3514304", + "dracena": "3514403", + "duartina": "3514502", + "dumont": "3514601", + "echapora": "3514700", + "eldorado": "3514809", + "elias fausto": "3514908", + "elisiario": "3514924", + "embauba": "3514957", + "embu das artes": "3515004", + "embu-guacu": "3515103", + "emilianopolis": "3515129", + "engenheiro coelho": "3515152", + "espirito santo do pinhal": "3515186", + "espirito santo do turvo": "3515194", + "estiva gerbi": "3557303", + "estrela do norte": "3515301", + "estrela d'oeste": "3515202", + "euclides da cunha paulista": "3515350", + "fartura": "3515400", + "fernando prestes": "3515608", + "fernandopolis": "3515509", + "fernao": "3515657", + "ferraz de vasconcelos": "3515707", + "flora rica": "3515806", + "floreal": "3515905", + "florida paulista": "3516002", + "florinea": "3516101", + "franca": "3516200", + "francisco morato": "3516309", + "franco da rocha": "3516408", + "gabriel monteiro": "3516507", + "galia": "3516606", + "garca": "3516705", + "gastao vidigal": "3516804", + "gaviao peixoto": "3516853", + "general salgado": "3516903", + "getulina": "3517000", + "glicerio": "3517109", + "guaicara": "3517208", + "guaimbe": "3517307", + "guaira": "3517406", + "guapiacu": "3517505", + "guapiara": "3517604", + "guara": "3517703", + "guaracai": "3517802", + "guaraci": "3517901", + "guarani d'oeste": "3518008", + "guaranta": "3518107", + "guararapes": "3518206", + "guararema": "3518305", + "guaratingueta": "3518404", + "guarei": "3518503", + "guariba": "3518602", + "guaruja": "3518701", + "guarulhos": "3518800", + "guatapara": "3518859", + "guzolandia": "3518909", + "herculandia": "3519006", + "holambra": "3519055", + "hortolandia": "3519071", + "iacanga": "3519105", + "iacri": "3519204", + "iaras": "3519253", + "ibate": "3519303", + "ibira": "3519402", + "ibirarema": "3519501", + "ibitinga": "3519600", + "ibiuna": "3519709", + "icem": "3519808", + "iepe": "3519907", + "igaracu do tiete": "3520004", + "igarapava": "3520103", + "igarata": "3520202", + "iguape": "3520301", + "ilha comprida": "3520426", + "ilha solteira": "3520442", + "ilhabela": "3520400", + "indaiatuba": "3520509", + "indiana": "3520608", + "indiapora": "3520707", + "inubia paulista": "3520806", + "ipaussu": "3520905", + "ipero": "3521002", + "ipeuna": "3521101", + "ipigua": "3521150", + "iporanga": "3521200", + "ipua": "3521309", + "iracemapolis": "3521408", + "irapua": "3521507", + "irapuru": "3521606", + "itabera": "3521705", + "itai": "3521804", + "itajobi": "3521903", + "itaju": "3522000", + "itanhaem": "3522109", + "itaoca": "3522158", + "itapecerica da serra": "3522208", + "itapetininga": "3522307", + "itapeva": "3522406", + "itapevi": "3522505", + "itapira": "3522604", + "itapirapua paulista": "3522653", + "itapolis": "3522703", + "itaporanga": "3522802", + "itapui": "3522901", + "itapura": "3523008", + "itaquaquecetuba": "3523107", + "itarare": "3523206", + "itariri": "3523305", + "itatiba": "3523404", + "itatinga": "3523503", + "itirapina": "3523602", + "itirapua": "3523701", + "itobi": "3523800", + "itu": "3523909", + "itupeva": "3524006", + "ituverava": "3524105", + "jaborandi": "3524204", + "jaboticabal": "3524303", + "jacarei": "3524402", + "jaci": "3524501", + "jacupiranga": "3524600", + "jaguariuna": "3524709", + "jales": "3524808", + "jambeiro": "3524907", + "jandira": "3525003", + "jardinopolis": "3525102", + "jarinu": "3525201", + "jau": "3525300", + "jeriquara": "3525409", + "joanopolis": "3525508", + "joao ramalho": "3525607", + "jose bonifacio": "3525706", + "julio mesquita": "3525805", + "jumirim": "3525854", + "jundiai": "3525904", + "junqueiropolis": "3526001", + "juquia": "3526100", + "juquitiba": "3526209", + "lagoinha": "3526308", + "laranjal paulista": "3526407", + "lavinia": "3526506", + "lavrinhas": "3526605", + "leme": "3526704", + "lencois paulista": "3526803", + "limeira": "3526902", + "lindoia": "3527009", + "lins": "3527108", + "lorena": "3527207", + "lourdes": "3527256", + "louveira": "3527306", + "lucelia": "3527405", + "lucianopolis": "3527504", + "luis antonio": "3527603", + "luiziania": "3527702", + "lupercio": "3527801", + "lutecia": "3527900", + "macatuba": "3528007", + "macaubal": "3528106", + "macedonia": "3528205", + "magda": "3528304", + "mairinque": "3528403", + "mairipora": "3528502", + "manduri": "3528601", + "maraba paulista": "3528700", + "maracai": "3528809", + "marapoama": "3528858", + "mariapolis": "3528908", + "marilia": "3529005", + "marinopolis": "3529104", + "martinopolis": "3529203", + "matao": "3529302", + "maua": "3529401", + "mendonca": "3529500", + "meridiano": "3529609", + "mesopolis": "3529658", + "miguelopolis": "3529708", + "mineiros do tiete": "3529807", + "mira estrela": "3530003", + "miracatu": "3529906", + "mirandopolis": "3530102", + "mirante do paranapanema": "3530201", + "mirassol": "3530300", + "mirassolandia": "3530409", + "mococa": "3530508", + "mogi das cruzes": "3530607", + "mogi guacu": "3530706", + "mogi mirim": "3530805", + "mombuca": "3530904", + "moncoes": "3531001", + "mongagua": "3531100", + "monte alegre do sul": "3531209", + "monte alto": "3531308", + "monte aprazivel": "3531407", + "monte azul paulista": "3531506", + "monte castelo": "3531605", + "monte mor": "3531803", + "monteiro lobato": "3531704", + "morro agudo": "3531902", + "morungaba": "3532009", + "motuca": "3532058", + "murutinga do sul": "3532108", + "nantes": "3532157", + "narandiba": "3532207", + "natividade da serra": "3532306", + "nazare paulista": "3532405", + "neves paulista": "3532504", + "nhandeara": "3532603", + "nipoa": "3532702", + "nova alianca": "3532801", + "nova campina": "3532827", + "nova canaa paulista": "3532843", + "nova castilho": "3532868", + "nova europa": "3532900", + "nova granada": "3533007", + "nova guataporanga": "3533106", + "nova independencia": "3533205", + "nova luzitania": "3533304", + "nova odessa": "3533403", + "novais": "3533254", + "novo horizonte": "3533502", + "nuporanga": "3533601", + "ocaucu": "3533700", + "oleo": "3533809", + "olimpia": "3533908", + "onda verde": "3534005", + "oriente": "3534104", + "orindiuva": "3534203", + "orlandia": "3534302", + "osasco": "3534401", + "oscar bressane": "3534500", + "osvaldo cruz": "3534609", + "ourinhos": "3534708", + "ouro verde": "3534807", + "ouroeste": "3534757", + "pacaembu": "3534906", + "palestina": "3535002", + "palmares paulista": "3535101", + "palmeira d'oeste": "3535200", + "palmital": "3535309", + "panorama": "3535408", + "paraguacu paulista": "3535507", + "paraibuna": "3535606", + "paraiso": "3535705", + "paranapanema": "3535804", + "paranapua": "3535903", + "parapua": "3536000", + "pardinho": "3536109", + "pariquera-acu": "3536208", + "parisi": "3536257", + "patrocinio paulista": "3536307", + "pauliceia": "3536406", + "paulinia": "3536505", + "paulistania": "3536570", + "paulo de faria": "3536604", + "pederneiras": "3536703", + "pedra bela": "3536802", + "pedranopolis": "3536901", + "pedregulho": "3537008", + "pedreira": "3537107", + "pedrinhas paulista": "3537156", + "pedro de toledo": "3537206", + "penapolis": "3537305", + "pereira barreto": "3537404", + "pereiras": "3537503", + "peruibe": "3537602", + "piacatu": "3537701", + "piedade": "3537800", + "pilar do sul": "3537909", + "pindamonhangaba": "3538006", + "pindorama": "3538105", + "pinhalzinho": "3538204", + "piquerobi": "3538303", + "piquete": "3538501", + "piracaia": "3538600", + "piracicaba": "3538709", + "piraju": "3538808", + "pirajui": "3538907", + "pirangi": "3539004", + "pirapora do bom jesus": "3539103", + "pirapozinho": "3539202", + "pirassununga": "3539301", + "piratininga": "3539400", + "pitangueiras": "3539509", + "planalto": "3539608", + "platina": "3539707", + "poa": "3539806", + "poloni": "3539905", + "pompeia": "3540002", + "pongai": "3540101", + "pontal": "3540200", + "pontalinda": "3540259", + "pontes gestal": "3540309", + "populina": "3540408", + "porangaba": "3540507", + "porto feliz": "3540606", + "porto ferreira": "3540705", + "potim": "3540754", + "potirendaba": "3540804", + "pracinha": "3540853", + "pradopolis": "3540903", + "praia grande": "3541000", + "pratania": "3541059", + "presidente alves": "3541109", + "presidente bernardes": "3541208", + "presidente epitacio": "3541307", + "presidente prudente": "3541406", + "presidente venceslau": "3541505", + "promissao": "3541604", + "quadra": "3541653", + "quata": "3541703", + "queiroz": "3541802", + "queluz": "3541901", + "quintana": "3542008", + "rafard": "3542107", + "rancharia": "3542206", + "redencao da serra": "3542305", + "regente feijo": "3542404", + "reginopolis": "3542503", + "registro": "3542602", + "restinga": "3542701", + "ribeira": "3542800", + "ribeirao bonito": "3542909", + "ribeirao branco": "3543006", + "ribeirao corrente": "3543105", + "ribeirao do sul": "3543204", + "ribeirao dos indios": "3543238", + "ribeirao grande": "3543253", + "ribeirao pires": "3543303", + "ribeirao preto": "3543402", + "rifaina": "3543600", + "rincao": "3543709", + "rinopolis": "3543808", + "rio claro": "3543907", + "rio das pedras": "3544004", + "rio grande da serra": "3544103", + "riolandia": "3544202", + "riversul": "3543501", + "rosana": "3544251", + "roseira": "3544301", + "rubiacea": "3544400", + "rubineia": "3544509", + "sabino": "3544608", + "sagres": "3544707", + "sales": "3544806", + "sales oliveira": "3544905", + "salesopolis": "3545001", + "salmourao": "3545100", + "saltinho": "3545159", + "salto": "3545209", + "salto de pirapora": "3545308", + "salto grande": "3545407", + "sandovalina": "3545506", + "santa adelia": "3545605", + "santa albertina": "3545704", + "santa barbara d'oeste": "3545803", + "santa branca": "3546009", + "santa clara d'oeste": "3546108", + "santa cruz da conceicao": "3546207", + "santa cruz da esperanca": "3546256", + "santa cruz das palmeiras": "3546306", + "santa cruz do rio pardo": "3546405", + "santa ernestina": "3546504", + "santa fe do sul": "3546603", + "santa gertrudes": "3546702", + "santa isabel": "3546801", + "santa lucia": "3546900", + "santa maria da serra": "3547007", + "santa mercedes": "3547106", + "santa rita do passa quatro": "3547502", + "santa rita d'oeste": "3547403", + "santa rosa de viterbo": "3547601", + "santa salete": "3547650", + "santana da ponte pensa": "3547205", + "santana de parnaiba": "3547304", + "santo anastacio": "3547700", + "santo andre": "3547809", + "santo antonio da alegria": "3547908", + "santo antonio de posse": "3548005", + "santo antonio do aracangua": "3548054", + "santo antonio do jardim": "3548104", + "santo antonio do pinhal": "3548203", + "santo expedito": "3548302", + "santopolis do aguapei": "3548401", + "santos": "3548500", + "sao bento do sapucai": "3548609", + "sao bernardo do campo": "3548708", + "sao caetano do sul": "3548807", + "sao carlos": "3548906", + "sao francisco": "3549003", + "sao joao da boa vista": "3549102", + "sao joao das duas pontes": "3549201", + "sao joao de iracema": "3549250", + "sao joao do pau d'alho": "3549300", + "sao joaquim da barra": "3549409", + "sao jose da bela vista": "3549508", + "sao jose do barreiro": "3549607", + "sao jose do rio pardo": "3549706", + "sao jose do rio preto": "3549805", + "sao jose dos campos": "3549904", + "sao lourenco da serra": "3549953", + "sao luiz do paraitinga": "3550001", + "sao manuel": "3550100", + "sao miguel arcanjo": "3550209", + "sao paulo": "3550308", + "sao pedro": "3550407", + "sao pedro do turvo": "3550506", + "sao roque": "3550605", + "sao sebastiao": "3550704", + "sao sebastiao da grama": "3550803", + "sao simao": "3550902", + "sao vicente": "3551009", + "sarapui": "3551108", + "sarutaia": "3551207", + "sebastianopolis do sul": "3551306", + "serra azul": "3551405", + "serra negra": "3551603", + "serrana": "3551504", + "sertaozinho": "3551702", + "sete barras": "3551801", + "severinia": "3551900", + "silveiras": "3552007", + "socorro": "3552106", + "sorocaba": "3552205", + "sud mennucci": "3552304", + "sumare": "3552403", + "suzanapolis": "3552551", + "suzano": "3552502", + "tabapua": "3552601", + "tabatinga": "3552700", + "taboao da serra": "3552809", + "taciba": "3552908", + "taguai": "3553005", + "taiacu": "3553104", + "taiuva": "3553203", + "tambau": "3553302", + "tanabi": "3553401", + "tapirai": "3553500", + "tapiratiba": "3553609", + "taquaral": "3553658", + "taquaritinga": "3553708", + "taquarituba": "3553807", + "taquarivai": "3553856", + "tarabai": "3553906", + "taruma": "3553955", + "tatui": "3554003", + "taubate": "3554102", + "tejupa": "3554201", + "teodoro sampaio": "3554300", + "terra roxa": "3554409", + "tiete": "3554508", + "timburi": "3554607", + "torre de pedra": "3554656", + "torrinha": "3554706", + "trabiju": "3554755", + "tremembe": "3554805", + "tres fronteiras": "3554904", + "tuiuti": "3554953", + "tupa": "3555000", + "tupi paulista": "3555109", + "turiuba": "3555208", + "turmalina": "3555307", + "ubarana": "3555356", + "ubatuba": "3555406", + "ubirajara": "3555505", + "uchoa": "3555604", + "uniao paulista": "3555703", + "urania": "3555802", + "uru": "3555901", + "urupes": "3556008", + "valentim gentil": "3556107", + "valinhos": "3556206", + "valparaiso": "3556305", + "vargem": "3556354", + "vargem grande do sul": "3556404", + "vargem grande paulista": "3556453", + "varzea paulista": "3556503", + "vera cruz": "3556602", + "vinhedo": "3556701", + "viradouro": "3556800", + "vista alegre do alto": "3556909", + "vitoria brasil": "3556958", + "votorantim": "3557006", + "votuporanga": "3557105", + "zacarias": "3557154" + }, + "PR": { + "abatia": "4100103", + "adrianopolis": "4100202", + "agudos do sul": "4100301", + "almirante tamandare": "4100400", + "altamira do parana": "4100459", + "alto paraiso": "4128625", + "alto parana": "4100608", + "alto piquiri": "4100707", + "altonia": "4100509", + "alvorada do sul": "4100806", + "amapora": "4100905", + "ampere": "4101002", + "anahy": "4101051", + "andira": "4101101", + "angulo": "4101150", + "antonina": "4101200", + "antonio olinto": "4101309", + "apucarana": "4101408", + "arapongas": "4101507", + "arapoti": "4101606", + "arapua": "4101655", + "araruna": "4101705", + "araucaria": "4101804", + "ariranha do ivai": "4101853", + "assai": "4101903", + "assis chateaubriand": "4102000", + "astorga": "4102109", + "atalaia": "4102208", + "balsa nova": "4102307", + "bandeirantes": "4102406", + "barbosa ferraz": "4102505", + "barra do jacare": "4102703", + "barracao": "4102604", + "bela vista da caroba": "4102752", + "bela vista do paraiso": "4102802", + "bituruna": "4102901", + "boa esperanca": "4103008", + "boa esperanca do iguacu": "4103024", + "boa ventura de sao roque": "4103040", + "boa vista da aparecida": "4103057", + "bocaiuva do sul": "4103107", + "bom jesus do sul": "4103156", + "bom sucesso": "4103206", + "bom sucesso do sul": "4103222", + "borrazopolis": "4103305", + "braganey": "4103354", + "brasilandia do sul": "4103370", + "cafeara": "4103404", + "cafelandia": "4103453", + "cafezal do sul": "4103479", + "california": "4103503", + "cambara": "4103602", + "cambe": "4103701", + "cambira": "4103800", + "campina da lagoa": "4103909", + "campina do simao": "4103958", + "campina grande do sul": "4104006", + "campo bonito": "4104055", + "campo do tenente": "4104105", + "campo largo": "4104204", + "campo magro": "4104253", + "campo mourao": "4104303", + "candido de abreu": "4104402", + "candoi": "4104428", + "cantagalo": "4104451", + "capanema": "4104501", + "capitao leonidas marques": "4104600", + "carambei": "4104659", + "carlopolis": "4104709", + "cascavel": "4104808", + "castro": "4104907", + "catanduvas": "4105003", + "centenario do sul": "4105102", + "cerro azul": "4105201", + "ceu azul": "4105300", + "chopinzinho": "4105409", + "cianorte": "4105508", + "cidade gaucha": "4105607", + "clevelandia": "4105706", + "colombo": "4105805", + "colorado": "4105904", + "congonhinhas": "4106001", + "conselheiro mairinck": "4106100", + "contenda": "4106209", + "corbelia": "4106308", + "cornelio procopio": "4106407", + "coronel domingos soares": "4106456", + "coronel vivida": "4106506", + "corumbatai do sul": "4106555", + "cruz machado": "4106803", + "cruzeiro do iguacu": "4106571", + "cruzeiro do oeste": "4106605", + "cruzeiro do sul": "4106704", + "cruzmaltina": "4106852", + "curitiba": "4106902", + "curiuva": "4107009", + "diamante do norte": "4107108", + "diamante do sul": "4107124", + "diamante d'oeste": "4107157", + "dois vizinhos": "4107207", + "douradina": "4107256", + "doutor camargo": "4107306", + "doutor ulysses": "4128633", + "eneas marques": "4107405", + "engenheiro beltrao": "4107504", + "entre rios do oeste": "4107538", + "esperanca nova": "4107520", + "espigao alto do iguacu": "4107546", + "farol": "4107553", + "faxinal": "4107603", + "fazenda rio grande": "4107652", + "fenix": "4107702", + "fernandes pinheiro": "4107736", + "figueira": "4107751", + "flor da serra do sul": "4107850", + "florai": "4107801", + "floresta": "4107900", + "florestopolis": "4108007", + "florida": "4108106", + "formosa do oeste": "4108205", + "foz do iguacu": "4108304", + "foz do jordao": "4108452", + "francisco alves": "4108320", + "francisco beltrao": "4108403", + "general carneiro": "4108502", + "godoy moreira": "4108551", + "goioere": "4108601", + "goioxim": "4108650", + "grandes rios": "4108700", + "guaira": "4108809", + "guairaca": "4108908", + "guamiranga": "4108957", + "guapirama": "4109005", + "guaporema": "4109104", + "guaraci": "4109203", + "guaraniacu": "4109302", + "guarapuava": "4109401", + "guaraquecaba": "4109500", + "guaratuba": "4109609", + "honorio serpa": "4109658", + "ibaiti": "4109708", + "ibema": "4109757", + "ibipora": "4109807", + "icaraima": "4109906", + "iguaracu": "4110003", + "iguatu": "4110052", + "imbau": "4110078", + "imbituva": "4110102", + "inacio martins": "4110201", + "inaja": "4110300", + "indianopolis": "4110409", + "ipiranga": "4110508", + "ipora": "4110607", + "iracema do oeste": "4110656", + "irati": "4110706", + "iretama": "4110805", + "itaguaje": "4110904", + "itaipulandia": "4110953", + "itambaraca": "4111001", + "itambe": "4111100", + "itapejara d'oeste": "4111209", + "itaperucu": "4111258", + "itauna do sul": "4111308", + "ivai": "4111407", + "ivaipora": "4111506", + "ivate": "4111555", + "ivatuba": "4111605", + "jaboti": "4111704", + "jacarezinho": "4111803", + "jaguapita": "4111902", + "jaguariaiva": "4112009", + "jandaia do sul": "4112108", + "janiopolis": "4112207", + "japira": "4112306", + "japura": "4112405", + "jardim alegre": "4112504", + "jardim olinda": "4112603", + "jataizinho": "4112702", + "jesuitas": "4112751", + "joaquim tavora": "4112801", + "jundiai do sul": "4112900", + "juranda": "4112959", + "jussara": "4113007", + "kalore": "4113106", + "lapa": "4113205", + "laranjal": "4113254", + "laranjeiras do sul": "4113304", + "leopolis": "4113403", + "lidianopolis": "4113429", + "lindoeste": "4113452", + "loanda": "4113502", + "lobato": "4113601", + "londrina": "4113700", + "luiziana": "4113734", + "lunardelli": "4113759", + "lupionopolis": "4113809", + "mallet": "4113908", + "mambore": "4114005", + "mandaguacu": "4114104", + "mandaguari": "4114203", + "mandirituba": "4114302", + "manfrinopolis": "4114351", + "mangueirinha": "4114401", + "manoel ribas": "4114500", + "marechal candido rondon": "4114609", + "maria helena": "4114708", + "marialva": "4114807", + "marilandia do sul": "4114906", + "marilena": "4115002", + "mariluz": "4115101", + "maringa": "4115200", + "mariopolis": "4115309", + "maripa": "4115358", + "marmeleiro": "4115408", + "marquinho": "4115457", + "marumbi": "4115507", + "matelandia": "4115606", + "matinhos": "4115705", + "mato rico": "4115739", + "maua da serra": "4115754", + "medianeira": "4115804", + "mercedes": "4115853", + "mirador": "4115903", + "miraselva": "4116000", + "missal": "4116059", + "moreira sales": "4116109", + "morretes": "4116208", + "munhoz de melo": "4116307", + "nossa senhora das gracas": "4116406", + "nova alianca do ivai": "4116505", + "nova america da colina": "4116604", + "nova aurora": "4116703", + "nova cantu": "4116802", + "nova esperanca": "4116901", + "nova esperanca do sudoeste": "4116950", + "nova fatima": "4117008", + "nova laranjeiras": "4117057", + "nova londrina": "4117107", + "nova olimpia": "4117206", + "nova prata do iguacu": "4117255", + "nova santa barbara": "4117214", + "nova santa rosa": "4117222", + "nova tebas": "4117271", + "novo itacolomi": "4117297", + "ortigueira": "4117305", + "ourizona": "4117404", + "ouro verde do oeste": "4117453", + "paicandu": "4117503", + "palmas": "4117602", + "palmeira": "4117701", + "palmital": "4117800", + "palotina": "4117909", + "paraiso do norte": "4118006", + "paranacity": "4118105", + "paranagua": "4118204", + "paranapoema": "4118303", + "paranavai": "4118402", + "pato bragado": "4118451", + "pato branco": "4118501", + "paula freitas": "4118600", + "paulo frontin": "4118709", + "peabiru": "4118808", + "perobal": "4118857", + "perola": "4118907", + "perola d'oeste": "4119004", + "pien": "4119103", + "pinhais": "4119152", + "pinhal de sao bento": "4119251", + "pinhalao": "4119202", + "pinhao": "4119301", + "pirai do sul": "4119400", + "piraquara": "4119509", + "pitanga": "4119608", + "pitangueiras": "4119657", + "planaltina do parana": "4119707", + "planalto": "4119806", + "ponta grossa": "4119905", + "pontal do parana": "4119954", + "porecatu": "4120002", + "porto amazonas": "4120101", + "porto barreiro": "4120150", + "porto rico": "4120200", + "porto vitoria": "4120309", + "prado ferreira": "4120333", + "pranchita": "4120358", + "presidente castelo branco": "4120408", + "primeiro de maio": "4120507", + "prudentopolis": "4120606", + "quarto centenario": "4120655", + "quatigua": "4120705", + "quatro barras": "4120804", + "quatro pontes": "4120853", + "quedas do iguacu": "4120903", + "querencia do norte": "4121000", + "quinta do sol": "4121109", + "quitandinha": "4121208", + "ramilandia": "4121257", + "rancho alegre": "4121307", + "rancho alegre d'oeste": "4121356", + "realeza": "4121406", + "reboucas": "4121505", + "renascenca": "4121604", + "reserva": "4121703", + "reserva do iguacu": "4121752", + "ribeirao claro": "4121802", + "ribeirao do pinhal": "4121901", + "rio azul": "4122008", + "rio bom": "4122107", + "rio bonito do iguacu": "4122156", + "rio branco do ivai": "4122172", + "rio branco do sul": "4122206", + "rio negro": "4122305", + "rolandia": "4122404", + "roncador": "4122503", + "rondon": "4122602", + "rosario do ivai": "4122651", + "sabaudia": "4122701", + "salgado filho": "4122800", + "salto do itarare": "4122909", + "salto do lontra": "4123006", + "santa amelia": "4123105", + "santa cecilia do pavao": "4123204", + "santa cruz de monte castelo": "4123303", + "santa fe": "4123402", + "santa helena": "4123501", + "santa ines": "4123600", + "santa isabel do ivai": "4123709", + "santa izabel do oeste": "4123808", + "santa lucia": "4123824", + "santa maria do oeste": "4123857", + "santa mariana": "4123907", + "santa monica": "4123956", + "santa tereza do oeste": "4124020", + "santa terezinha de itaipu": "4124053", + "santana do itarare": "4124004", + "santo antonio da platina": "4124103", + "santo antonio do caiua": "4124202", + "santo antonio do paraiso": "4124301", + "santo antonio do sudoeste": "4124400", + "santo inacio": "4124509", + "sao carlos do ivai": "4124608", + "sao jeronimo da serra": "4124707", + "sao joao": "4124806", + "sao joao do caiua": "4124905", + "sao joao do ivai": "4125001", + "sao joao do triunfo": "4125100", + "sao jorge do ivai": "4125308", + "sao jorge do patrocinio": "4125357", + "sao jorge d'oeste": "4125209", + "sao jose da boa vista": "4125407", + "sao jose das palmeiras": "4125456", + "sao jose dos pinhais": "4125506", + "sao manoel do parana": "4125555", + "sao mateus do sul": "4125605", + "sao miguel do iguacu": "4125704", + "sao pedro do iguacu": "4125753", + "sao pedro do ivai": "4125803", + "sao pedro do parana": "4125902", + "sao sebastiao da amoreira": "4126009", + "sao tome": "4126108", + "sapopema": "4126207", + "sarandi": "4126256", + "saudade do iguacu": "4126272", + "senges": "4126306", + "serranopolis do iguacu": "4126355", + "sertaneja": "4126405", + "sertanopolis": "4126504", + "siqueira campos": "4126603", + "sulina": "4126652", + "tamarana": "4126678", + "tamboara": "4126702", + "tapejara": "4126801", + "tapira": "4126900", + "teixeira soares": "4127007", + "telemaco borba": "4127106", + "terra boa": "4127205", + "terra rica": "4127304", + "terra roxa": "4127403", + "tibagi": "4127502", + "tijucas do sul": "4127601", + "toledo": "4127700", + "tomazina": "4127809", + "tres barras do parana": "4127858", + "tunas do parana": "4127882", + "tuneiras do oeste": "4127908", + "tupassi": "4127957", + "turvo": "4127965", + "ubirata": "4128005", + "umuarama": "4128104", + "uniao da vitoria": "4128203", + "uniflor": "4128302", + "urai": "4128401", + "ventania": "4128534", + "vera cruz do oeste": "4128559", + "vere": "4128609", + "virmond": "4128658", + "vitorino": "4128708", + "wenceslau braz": "4128500", + "xambre": "4128807" + }, + "SC": { + "abdon batista": "4200051", + "abelardo luz": "4200101", + "agrolandia": "4200200", + "agronomica": "4200309", + "agua doce": "4200408", + "aguas de chapeco": "4200507", + "aguas frias": "4200556", + "aguas mornas": "4200606", + "alfredo wagner": "4200705", + "alto bela vista": "4200754", + "anchieta": "4200804", + "angelina": "4200903", + "anita garibaldi": "4201000", + "anitapolis": "4201109", + "antonio carlos": "4201208", + "apiuna": "4201257", + "arabuta": "4201273", + "araquari": "4201307", + "ararangua": "4201406", + "armazem": "4201505", + "arroio trinta": "4201604", + "arvoredo": "4201653", + "ascurra": "4201703", + "atalanta": "4201802", + "aurora": "4201901", + "balneario arroio do silva": "4201950", + "balneario barra do sul": "4202057", + "balneario camboriu": "4202008", + "balneario gaivota": "4202073", + "balneario picarras": "4212809", + "balneario rincao": "4220000", + "bandeirante": "4202081", + "barra bonita": "4202099", + "barra velha": "4202107", + "bela vista do toldo": "4202131", + "belmonte": "4202156", + "benedito novo": "4202206", + "biguacu": "4202305", + "blumenau": "4202404", + "bocaina do sul": "4202438", + "bom jardim da serra": "4202503", + "bom jesus": "4202537", + "bom jesus do oeste": "4202578", + "bom retiro": "4202602", + "bombinhas": "4202453", + "botuvera": "4202701", + "braco do norte": "4202800", + "braco do trombudo": "4202859", + "brunopolis": "4202875", + "brusque": "4202909", + "cacador": "4203006", + "caibi": "4203105", + "calmon": "4203154", + "camboriu": "4203204", + "campo alegre": "4203303", + "campo belo do sul": "4203402", + "campo ere": "4203501", + "campos novos": "4203600", + "canelinha": "4203709", + "canoinhas": "4203808", + "capao alto": "4203253", + "capinzal": "4203907", + "capivari de baixo": "4203956", + "catanduvas": "4204004", + "caxambu do sul": "4204103", + "celso ramos": "4204152", + "cerro negro": "4204178", + "chapadao do lageado": "4204194", + "chapeco": "4204202", + "cocal do sul": "4204251", + "concordia": "4204301", + "cordilheira alta": "4204350", + "coronel freitas": "4204400", + "coronel martins": "4204459", + "correia pinto": "4204558", + "corupa": "4204509", + "criciuma": "4204608", + "cunha pora": "4204707", + "cunhatai": "4204756", + "curitibanos": "4204806", + "descanso": "4204905", + "dionisio cerqueira": "4205001", + "dona emma": "4205100", + "doutor pedrinho": "4205159", + "entre rios": "4205175", + "ermo": "4205191", + "erval velho": "4205209", + "faxinal dos guedes": "4205308", + "flor do sertao": "4205357", + "florianopolis": "4205407", + "formosa do sul": "4205431", + "forquilhinha": "4205456", + "fraiburgo": "4205506", + "frei rogerio": "4205555", + "galvao": "4205605", + "garopaba": "4205704", + "garuva": "4205803", + "gaspar": "4205902", + "governador celso ramos": "4206009", + "grao-para": "4206108", + "gravatal": "4206207", + "guabiruba": "4206306", + "guaraciaba": "4206405", + "guaramirim": "4206504", + "guaruja do sul": "4206603", + "guatambu": "4206652", + "herval d'oeste": "4206702", + "ibiam": "4206751", + "ibicare": "4206801", + "ibirama": "4206900", + "icara": "4207007", + "ilhota": "4207106", + "imarui": "4207205", + "imbituba": "4207304", + "imbuia": "4207403", + "indaial": "4207502", + "iomere": "4207577", + "ipira": "4207601", + "ipora do oeste": "4207650", + "ipuacu": "4207684", + "ipumirim": "4207700", + "iraceminha": "4207759", + "irani": "4207809", + "irati": "4207858", + "irineopolis": "4207908", + "ita": "4208005", + "itaiopolis": "4208104", + "itajai": "4208203", + "itapema": "4208302", + "itapiranga": "4208401", + "itapoa": "4208450", + "ituporanga": "4208500", + "jabora": "4208609", + "jacinto machado": "4208708", + "jaguaruna": "4208807", + "jaragua do sul": "4208906", + "jardinopolis": "4208955", + "joacaba": "4209003", + "joinville": "4209102", + "jose boiteux": "4209151", + "jupia": "4209177", + "lacerdopolis": "4209201", + "lages": "4209300", + "laguna": "4209409", + "lajeado grande": "4209458", + "laurentino": "4209508", + "lauro muller": "4209607", + "lebon regis": "4209706", + "leoberto leal": "4209805", + "lindoia do sul": "4209854", + "lontras": "4209904", + "luiz alves": "4210001", + "luzerna": "4210035", + "macieira": "4210050", + "mafra": "4210100", + "major gercino": "4210209", + "major vieira": "4210308", + "maracaja": "4210407", + "maravilha": "4210506", + "marema": "4210555", + "massaranduba": "4210605", + "matos costa": "4210704", + "meleiro": "4210803", + "mirim doce": "4210852", + "modelo": "4210902", + "mondai": "4211009", + "monte carlo": "4211058", + "monte castelo": "4211108", + "morro da fumaca": "4211207", + "morro grande": "4211256", + "navegantes": "4211306", + "nova erechim": "4211405", + "nova itaberaba": "4211454", + "nova trento": "4211504", + "nova veneza": "4211603", + "novo horizonte": "4211652", + "orleans": "4211702", + "otacilio costa": "4211751", + "ouro": "4211801", + "ouro verde": "4211850", + "paial": "4211876", + "painel": "4211892", + "palhoca": "4211900", + "palma sola": "4212007", + "palmeira": "4212056", + "palmitos": "4212106", + "papanduva": "4212205", + "paraiso": "4212239", + "passo de torres": "4212254", + "passos maia": "4212270", + "paulo lopes": "4212304", + "pedras grandes": "4212403", + "penha": "4212502", + "peritiba": "4212601", + "pescaria brava": "4212650", + "petrolandia": "4212700", + "pinhalzinho": "4212908", + "pinheiro preto": "4213005", + "piratuba": "4213104", + "planalto alegre": "4213153", + "pomerode": "4213203", + "ponte alta": "4213302", + "ponte alta do norte": "4213351", + "ponte serrada": "4213401", + "porto belo": "4213500", + "porto uniao": "4213609", + "pouso redondo": "4213708", + "praia grande": "4213807", + "presidente castello branco": "4213906", + "presidente getulio": "4214003", + "presidente nereu": "4214102", + "princesa": "4214151", + "quilombo": "4214201", + "rancho queimado": "4214300", + "rio das antas": "4214409", + "rio do campo": "4214508", + "rio do oeste": "4214607", + "rio do sul": "4214805", + "rio dos cedros": "4214706", + "rio fortuna": "4214904", + "rio negrinho": "4215000", + "rio rufino": "4215059", + "riqueza": "4215075", + "rodeio": "4215109", + "romelandia": "4215208", + "salete": "4215307", + "saltinho": "4215356", + "salto veloso": "4215406", + "sangao": "4215455", + "santa cecilia": "4215505", + "santa helena": "4215554", + "santa rosa de lima": "4215604", + "santa rosa do sul": "4215653", + "santa terezinha": "4215679", + "santa terezinha do progresso": "4215687", + "santiago do sul": "4215695", + "santo amaro da imperatriz": "4215703", + "sao bento do sul": "4215802", + "sao bernardino": "4215752", + "sao bonifacio": "4215901", + "sao carlos": "4216008", + "sao cristovao do sul": "4216057", + "sao domingos": "4216107", + "sao francisco do sul": "4216206", + "sao joao batista": "4216305", + "sao joao do itaperiu": "4216354", + "sao joao do oeste": "4216255", + "sao joao do sul": "4216404", + "sao joaquim": "4216503", + "sao jose": "4216602", + "sao jose do cedro": "4216701", + "sao jose do cerrito": "4216800", + "sao lourenco do oeste": "4216909", + "sao ludgero": "4217006", + "sao martinho": "4217105", + "sao miguel da boa vista": "4217154", + "sao miguel do oeste": "4217204", + "sao pedro de alcantara": "4217253", + "saudades": "4217303", + "schroeder": "4217402", + "seara": "4217501", + "serra alta": "4217550", + "sideropolis": "4217600", + "sombrio": "4217709", + "sul brasil": "4217758", + "taio": "4217808", + "tangara": "4217907", + "tigrinhos": "4217956", + "tijucas": "4218004", + "timbe do sul": "4218103", + "timbo": "4218202", + "timbo grande": "4218251", + "tres barras": "4218301", + "treviso": "4218350", + "treze de maio": "4218400", + "treze tilias": "4218509", + "trombudo central": "4218608", + "tubarao": "4218707", + "tunapolis": "4218756", + "turvo": "4218806", + "uniao do oeste": "4218855", + "urubici": "4218905", + "urupema": "4218954", + "urussanga": "4219002", + "vargeao": "4219101", + "vargem": "4219150", + "vargem bonita": "4219176", + "vidal ramos": "4219200", + "videira": "4219309", + "vitor meireles": "4219358", + "witmarsum": "4219408", + "xanxere": "4219507", + "xavantina": "4219606", + "xaxim": "4219705", + "zortea": "4219853" + }, + "RS": { + "acegua": "4300034", + "agua santa": "4300059", + "agudo": "4300109", + "ajuricaba": "4300208", + "alecrim": "4300307", + "alegrete": "4300406", + "alegria": "4300455", + "almirante tamandare do sul": "4300471", + "alpestre": "4300505", + "alto alegre": "4300554", + "alto feliz": "4300570", + "alvorada": "4300604", + "amaral ferrador": "4300638", + "ametista do sul": "4300646", + "andre da rocha": "4300661", + "anta gorda": "4300703", + "antonio prado": "4300802", + "arambare": "4300851", + "ararica": "4300877", + "aratiba": "4300901", + "arroio do meio": "4301008", + "arroio do padre": "4301073", + "arroio do sal": "4301057", + "arroio do tigre": "4301206", + "arroio dos ratos": "4301107", + "arroio grande": "4301305", + "arvorezinha": "4301404", + "augusto pestana": "4301503", + "aurea": "4301552", + "bage": "4301602", + "balneario pinhal": "4301636", + "barao": "4301651", + "barao de cotegipe": "4301701", + "barao do triunfo": "4301750", + "barra do guarita": "4301859", + "barra do quarai": "4301875", + "barra do ribeiro": "4301909", + "barra do rio azul": "4301925", + "barra funda": "4301958", + "barracao": "4301800", + "barros cassal": "4302006", + "benjamin constant do sul": "4302055", + "bento goncalves": "4302105", + "boa vista das missoes": "4302154", + "boa vista do burica": "4302204", + "boa vista do cadeado": "4302220", + "boa vista do incra": "4302238", + "boa vista do sul": "4302253", + "bom jesus": "4302303", + "bom principio": "4302352", + "bom progresso": "4302378", + "bom retiro do sul": "4302402", + "boqueirao do leao": "4302451", + "bossoroca": "4302501", + "bozano": "4302584", + "braga": "4302600", + "brochier": "4302659", + "butia": "4302709", + "cacapava do sul": "4302808", + "cacequi": "4302907", + "cachoeira do sul": "4303004", + "cachoeirinha": "4303103", + "cacique doble": "4303202", + "caibate": "4303301", + "caicara": "4303400", + "camaqua": "4303509", + "camargo": "4303558", + "cambara do sul": "4303608", + "campestre da serra": "4303673", + "campina das missoes": "4303707", + "campinas do sul": "4303806", + "campo bom": "4303905", + "campo novo": "4304002", + "campos borges": "4304101", + "candelaria": "4304200", + "candido godoi": "4304309", + "candiota": "4304358", + "canela": "4304408", + "cangucu": "4304507", + "canoas": "4304606", + "canudos do vale": "4304614", + "capao bonito do sul": "4304622", + "capao da canoa": "4304630", + "capao do cipo": "4304655", + "capao do leao": "4304663", + "capela de santana": "4304689", + "capitao": "4304697", + "capivari do sul": "4304671", + "caraa": "4304713", + "carazinho": "4304705", + "carlos barbosa": "4304804", + "carlos gomes": "4304853", + "casca": "4304903", + "caseiros": "4304952", + "catuipe": "4305009", + "caxias do sul": "4305108", + "centenario": "4305116", + "cerrito": "4305124", + "cerro branco": "4305132", + "cerro grande": "4305157", + "cerro grande do sul": "4305173", + "cerro largo": "4305207", + "chapada": "4305306", + "charqueadas": "4305355", + "charrua": "4305371", + "chiapetta": "4305405", + "chui": "4305439", + "chuvisca": "4305447", + "cidreira": "4305454", + "ciriaco": "4305504", + "colinas": "4305587", + "colorado": "4305603", + "condor": "4305702", + "constantina": "4305801", + "coqueiro baixo": "4305835", + "coqueiros do sul": "4305850", + "coronel barros": "4305871", + "coronel bicaco": "4305900", + "coronel pilar": "4305934", + "cotipora": "4305959", + "coxilha": "4305975", + "crissiumal": "4306007", + "cristal": "4306056", + "cristal do sul": "4306072", + "cruz alta": "4306106", + "cruzaltense": "4306130", + "cruzeiro do sul": "4306205", + "david canabarro": "4306304", + "derrubadas": "4306320", + "dezesseis de novembro": "4306353", + "dilermando de aguiar": "4306379", + "dois irmaos": "4306403", + "dois irmaos das missoes": "4306429", + "dois lajeados": "4306452", + "dom feliciano": "4306502", + "dom pedrito": "4306601", + "dom pedro de alcantara": "4306551", + "dona francisca": "4306700", + "doutor mauricio cardoso": "4306734", + "doutor ricardo": "4306759", + "eldorado do sul": "4306767", + "encantado": "4306809", + "encruzilhada do sul": "4306908", + "engenho velho": "4306924", + "entre rios do sul": "4306957", + "entre-ijuis": "4306932", + "erebango": "4306973", + "erechim": "4307005", + "ernestina": "4307054", + "erval grande": "4307203", + "erval seco": "4307302", + "esmeralda": "4307401", + "esperanca do sul": "4307450", + "espumoso": "4307500", + "estacao": "4307559", + "estancia velha": "4307609", + "esteio": "4307708", + "estrela": "4307807", + "estrela velha": "4307815", + "eugenio de castro": "4307831", + "fagundes varela": "4307864", + "farroupilha": "4307906", + "faxinal do soturno": "4308003", + "faxinalzinho": "4308052", + "fazenda vilanova": "4308078", + "feliz": "4308102", + "flores da cunha": "4308201", + "floriano peixoto": "4308250", + "fontoura xavier": "4308300", + "formigueiro": "4308409", + "forquetinha": "4308433", + "fortaleza dos valos": "4308458", + "frederico westphalen": "4308508", + "garibaldi": "4308607", + "garruchos": "4308656", + "gaurama": "4308706", + "general camara": "4308805", + "gentil": "4308854", + "getulio vargas": "4308904", + "girua": "4309001", + "glorinha": "4309050", + "gramado": "4309100", + "gramado dos loureiros": "4309126", + "gramado xavier": "4309159", + "gravatai": "4309209", + "guabiju": "4309258", + "guaiba": "4309308", + "guapore": "4309407", + "guarani das missoes": "4309506", + "harmonia": "4309555", + "herval": "4307104", + "herveiras": "4309571", + "horizontina": "4309605", + "hulha negra": "4309654", + "humaita": "4309704", + "ibarama": "4309753", + "ibiaca": "4309803", + "ibiraiaras": "4309902", + "ibirapuita": "4309951", + "ibiruba": "4310009", + "igrejinha": "4310108", + "ijui": "4310207", + "ilopolis": "4310306", + "imbe": "4310330", + "imigrante": "4310363", + "independencia": "4310405", + "inhacora": "4310413", + "ipe": "4310439", + "ipiranga do sul": "4310462", + "irai": "4310504", + "itaara": "4310538", + "itacurubi": "4310553", + "itapuca": "4310579", + "itaqui": "4310603", + "itati": "4310652", + "itatiba do sul": "4310702", + "ivora": "4310751", + "ivoti": "4310801", + "jaboticaba": "4310850", + "jacuizinho": "4310876", + "jacutinga": "4310900", + "jaguarao": "4311007", + "jaguari": "4311106", + "jaquirana": "4311122", + "jari": "4311130", + "joia": "4311155", + "julio de castilhos": "4311205", + "lagoa bonita do sul": "4311239", + "lagoa dos tres cantos": "4311270", + "lagoa vermelha": "4311304", + "lagoao": "4311254", + "lajeado": "4311403", + "lajeado do bugre": "4311429", + "lavras do sul": "4311502", + "liberato salzano": "4311601", + "lindolfo collor": "4311627", + "linha nova": "4311643", + "macambara": "4311718", + "machadinho": "4311700", + "mampituba": "4311734", + "manoel viana": "4311759", + "maquine": "4311775", + "marata": "4311791", + "marau": "4311809", + "marcelino ramos": "4311908", + "mariana pimentel": "4311981", + "mariano moro": "4312005", + "marques de souza": "4312054", + "mata": "4312104", + "mato castelhano": "4312138", + "mato leitao": "4312153", + "mato queimado": "4312179", + "maximiliano de almeida": "4312203", + "minas do leao": "4312252", + "miraguai": "4312302", + "montauri": "4312351", + "monte alegre dos campos": "4312377", + "monte belo do sul": "4312385", + "montenegro": "4312401", + "mormaco": "4312427", + "morrinhos do sul": "4312443", + "morro redondo": "4312450", + "morro reuter": "4312476", + "mostardas": "4312500", + "mucum": "4312609", + "muitos capoes": "4312617", + "muliterno": "4312625", + "nao-me-toque": "4312658", + "nicolau vergueiro": "4312674", + "nonoai": "4312708", + "nova alvorada": "4312757", + "nova araca": "4312807", + "nova bassano": "4312906", + "nova boa vista": "4312955", + "nova brescia": "4313003", + "nova candelaria": "4313011", + "nova esperanca do sul": "4313037", + "nova hartz": "4313060", + "nova padua": "4313086", + "nova palma": "4313102", + "nova petropolis": "4313201", + "nova prata": "4313300", + "nova ramada": "4313334", + "nova roma do sul": "4313359", + "nova santa rita": "4313375", + "novo barreiro": "4313490", + "novo cabrais": "4313391", + "novo hamburgo": "4313409", + "novo machado": "4313425", + "novo tiradentes": "4313441", + "novo xingu": "4313466", + "osorio": "4313508", + "paim filho": "4313607", + "palmares do sul": "4313656", + "palmeira das missoes": "4313706", + "palmitinho": "4313805", + "panambi": "4313904", + "pantano grande": "4313953", + "parai": "4314001", + "paraiso do sul": "4314027", + "pareci novo": "4314035", + "parobe": "4314050", + "passa sete": "4314068", + "passo do sobrado": "4314076", + "passo fundo": "4314100", + "paulo bento": "4314134", + "paverama": "4314159", + "pedras altas": "4314175", + "pedro osorio": "4314209", + "pejucara": "4314308", + "pelotas": "4314407", + "picada cafe": "4314423", + "pinhal": "4314456", + "pinhal da serra": "4314464", + "pinhal grande": "4314472", + "pinheirinho do vale": "4314498", + "pinheiro machado": "4314506", + "pinto bandeira": "4314548", + "pirapo": "4314555", + "piratini": "4314605", + "planalto": "4314704", + "poco das antas": "4314753", + "pontao": "4314779", + "ponte preta": "4314787", + "portao": "4314803", + "porto alegre": "4314902", + "porto lucena": "4315008", + "porto maua": "4315057", + "porto vera cruz": "4315073", + "porto xavier": "4315107", + "pouso novo": "4315131", + "presidente lucena": "4315149", + "progresso": "4315156", + "protasio alves": "4315172", + "putinga": "4315206", + "quarai": "4315305", + "quatro irmaos": "4315313", + "quevedos": "4315321", + "quinze de novembro": "4315354", + "redentora": "4315404", + "relvado": "4315453", + "restinga seca": "4315503", + "rio dos indios": "4315552", + "rio grande": "4315602", + "rio pardo": "4315701", + "riozinho": "4315750", + "roca sales": "4315800", + "rodeio bonito": "4315909", + "rolador": "4315958", + "rolante": "4316006", + "ronda alta": "4316105", + "rondinha": "4316204", + "roque gonzales": "4316303", + "rosario do sul": "4316402", + "sagrada familia": "4316428", + "saldanha marinho": "4316436", + "salto do jacui": "4316451", + "salvador das missoes": "4316477", + "salvador do sul": "4316501", + "sananduva": "4316600", + "santa barbara do sul": "4316709", + "santa cecilia do sul": "4316733", + "santa clara do sul": "4316758", + "santa cruz do sul": "4316808", + "santa margarida do sul": "4316972", + "santa maria": "4316907", + "santa maria do herval": "4316956", + "santa rosa": "4317202", + "santa tereza": "4317251", + "santa vitoria do palmar": "4317301", + "santana da boa vista": "4317004", + "sant'ana do livramento": "4317103", + "santiago": "4317400", + "santo angelo": "4317509", + "santo antonio da patrulha": "4317608", + "santo antonio das missoes": "4317707", + "santo antonio do palma": "4317558", + "santo antonio do planalto": "4317756", + "santo augusto": "4317806", + "santo cristo": "4317905", + "santo expedito do sul": "4317954", + "sao borja": "4318002", + "sao domingos do sul": "4318051", + "sao francisco de assis": "4318101", + "sao francisco de paula": "4318200", + "sao gabriel": "4318309", + "sao jeronimo": "4318408", + "sao joao da urtiga": "4318424", + "sao joao do polesine": "4318432", + "sao jorge": "4318440", + "sao jose das missoes": "4318457", + "sao jose do herval": "4318465", + "sao jose do hortencio": "4318481", + "sao jose do inhacora": "4318499", + "sao jose do norte": "4318507", + "sao jose do ouro": "4318606", + "sao jose do sul": "4318614", + "sao jose dos ausentes": "4318622", + "sao leopoldo": "4318705", + "sao lourenco do sul": "4318804", + "sao luiz gonzaga": "4318903", + "sao marcos": "4319000", + "sao martinho": "4319109", + "sao martinho da serra": "4319125", + "sao miguel das missoes": "4319158", + "sao nicolau": "4319208", + "sao paulo das missoes": "4319307", + "sao pedro da serra": "4319356", + "sao pedro das missoes": "4319364", + "sao pedro do butia": "4319372", + "sao pedro do sul": "4319406", + "sao sebastiao do cai": "4319505", + "sao sepe": "4319604", + "sao valentim": "4319703", + "sao valentim do sul": "4319711", + "sao valerio do sul": "4319737", + "sao vendelino": "4319752", + "sao vicente do sul": "4319802", + "sapiranga": "4319901", + "sapucaia do sul": "4320008", + "sarandi": "4320107", + "seberi": "4320206", + "sede nova": "4320230", + "segredo": "4320263", + "selbach": "4320305", + "senador salgado filho": "4320321", + "sentinela do sul": "4320354", + "serafina correa": "4320404", + "serio": "4320453", + "sertao": "4320503", + "sertao santana": "4320552", + "sete de setembro": "4320578", + "severiano de almeida": "4320602", + "silveira martins": "4320651", + "sinimbu": "4320677", + "sobradinho": "4320701", + "soledade": "4320800", + "tabai": "4320859", + "tapejara": "4320909", + "tapera": "4321006", + "tapes": "4321105", + "taquara": "4321204", + "taquari": "4321303", + "taquarucu do sul": "4321329", + "tavares": "4321352", + "tenente portela": "4321402", + "terra de areia": "4321436", + "teutonia": "4321451", + "tio hugo": "4321469", + "tiradentes do sul": "4321477", + "toropi": "4321493", + "torres": "4321501", + "tramandai": "4321600", + "travesseiro": "4321626", + "tres arroios": "4321634", + "tres cachoeiras": "4321667", + "tres coroas": "4321709", + "tres de maio": "4321808", + "tres forquilhas": "4321832", + "tres palmeiras": "4321857", + "tres passos": "4321907", + "trindade do sul": "4321956", + "triunfo": "4322004", + "tucunduva": "4322103", + "tunas": "4322152", + "tupanci do sul": "4322186", + "tupancireta": "4322202", + "tupandi": "4322251", + "tuparendi": "4322301", + "turucu": "4322327", + "ubiretama": "4322343", + "uniao da serra": "4322350", + "unistalda": "4322376", + "uruguaiana": "4322400", + "vacaria": "4322509", + "vale do sol": "4322533", + "vale real": "4322541", + "vale verde": "4322525", + "vanini": "4322558", + "venancio aires": "4322608", + "vera cruz": "4322707", + "veranopolis": "4322806", + "vespasiano correa": "4322855", + "viadutos": "4322905", + "viamao": "4323002", + "vicente dutra": "4323101", + "victor graeff": "4323200", + "vila flores": "4323309", + "vila langaro": "4323358", + "vila maria": "4323408", + "vila nova do sul": "4323457", + "vista alegre": "4323507", + "vista alegre do prata": "4323606", + "vista gaucha": "4323705", + "vitoria das missoes": "4323754", + "westfalia": "4323770", + "xangri-la": "4323804" + }, + "MS": { + "agua clara": "5000203", + "alcinopolis": "5000252", + "amambai": "5000609", + "anastacio": "5000708", + "anaurilandia": "5000807", + "angelica": "5000856", + "antonio joao": "5000906", + "aparecida do taboado": "5001003", + "aquidauana": "5001102", + "aral moreira": "5001243", + "bandeirantes": "5001508", + "bataguassu": "5001904", + "bataypora": "5002001", + "bela vista": "5002100", + "bodoquena": "5002159", + "bonito": "5002209", + "brasilandia": "5002308", + "caarapo": "5002407", + "camapua": "5002605", + "campo grande": "5002704", + "caracol": "5002803", + "cassilandia": "5002902", + "chapadao do sul": "5002951", + "corguinho": "5003108", + "coronel sapucaia": "5003157", + "corumba": "5003207", + "costa rica": "5003256", + "coxim": "5003306", + "deodapolis": "5003454", + "dois irmaos do buriti": "5003488", + "douradina": "5003504", + "dourados": "5003702", + "eldorado": "5003751", + "fatima do sul": "5003801", + "figueirao": "5003900", + "gloria de dourados": "5004007", + "guia lopes da laguna": "5004106", + "iguatemi": "5004304", + "inocencia": "5004403", + "itapora": "5004502", + "itaquirai": "5004601", + "ivinhema": "5004700", + "japora": "5004809", + "jaraguari": "5004908", + "jardim": "5005004", + "jatei": "5005103", + "juti": "5005152", + "ladario": "5005202", + "laguna carapa": "5005251", + "maracaju": "5005400", + "miranda": "5005608", + "mundo novo": "5005681", + "navirai": "5005707", + "nioaque": "5005806", + "nova alvorada do sul": "5006002", + "nova andradina": "5006200", + "novo horizonte do sul": "5006259", + "paraiso das aguas": "5006275", + "paranaiba": "5006309", + "paranhos": "5006358", + "pedro gomes": "5006408", + "ponta pora": "5006606", + "porto murtinho": "5006903", + "ribas do rio pardo": "5007109", + "rio brilhante": "5007208", + "rio negro": "5007307", + "rio verde de mato grosso": "5007406", + "rochedo": "5007505", + "santa rita do pardo": "5007554", + "sao gabriel do oeste": "5007695", + "selviria": "5007802", + "sete quedas": "5007703", + "sidrolandia": "5007901", + "sonora": "5007935", + "tacuru": "5007950", + "taquarussu": "5007976", + "terenos": "5008008", + "tres lagoas": "5008305", + "vicentina": "5008404" + }, + "MT": { + "acorizal": "5100102", + "agua boa": "5100201", + "alta floresta": "5100250", + "alto araguaia": "5100300", + "alto boa vista": "5100359", + "alto garcas": "5100409", + "alto paraguai": "5100508", + "alto taquari": "5100607", + "apiacas": "5100805", + "araguaiana": "5101001", + "araguainha": "5101209", + "araputanga": "5101258", + "arenapolis": "5101308", + "aripuana": "5101407", + "barao de melgaco": "5101605", + "barra do bugres": "5101704", + "barra do garcas": "5101803", + "bom jesus do araguaia": "5101852", + "brasnorte": "5101902", + "caceres": "5102504", + "campinapolis": "5102603", + "campo novo do parecis": "5102637", + "campo verde": "5102678", + "campos de julio": "5102686", + "canabrava do norte": "5102694", + "canarana": "5102702", + "carlinda": "5102793", + "castanheira": "5102850", + "chapada dos guimaraes": "5103007", + "claudia": "5103056", + "cocalinho": "5103106", + "colider": "5103205", + "colniza": "5103254", + "comodoro": "5103304", + "confresa": "5103353", + "conquista d'oeste": "5103361", + "cotriguacu": "5103379", + "cuiaba": "5103403", + "curvelandia": "5103437", + "denise": "5103452", + "diamantino": "5103502", + "dom aquino": "5103601", + "feliz natal": "5103700", + "figueiropolis d'oeste": "5103809", + "gaucha do norte": "5103858", + "general carneiro": "5103908", + "gloria d'oeste": "5103957", + "guaranta do norte": "5104104", + "guiratinga": "5104203", + "indiavai": "5104500", + "ipiranga do norte": "5104526", + "itanhanga": "5104542", + "itauba": "5104559", + "itiquira": "5104609", + "jaciara": "5104807", + "jangada": "5104906", + "jauru": "5105002", + "juara": "5105101", + "juina": "5105150", + "juruena": "5105176", + "juscimeira": "5105200", + "lambari d'oeste": "5105234", + "lucas do rio verde": "5105259", + "luciara": "5105309", + "marcelandia": "5105580", + "matupa": "5105606", + "mirassol d'oeste": "5105622", + "nobres": "5105903", + "nortelandia": "5106000", + "nossa senhora do livramento": "5106109", + "nova bandeirantes": "5106158", + "nova brasilandia": "5106208", + "nova canaa do norte": "5106216", + "nova guarita": "5108808", + "nova lacerda": "5106182", + "nova marilandia": "5108857", + "nova maringa": "5108907", + "nova monte verde": "5108956", + "nova mutum": "5106224", + "nova nazare": "5106174", + "nova olimpia": "5106232", + "nova santa helena": "5106190", + "nova ubirata": "5106240", + "nova xavantina": "5106257", + "novo horizonte do norte": "5106273", + "novo mundo": "5106265", + "novo santo antonio": "5106315", + "novo sao joaquim": "5106281", + "paranaita": "5106299", + "paranatinga": "5106307", + "pedra preta": "5106372", + "peixoto de azevedo": "5106422", + "planalto da serra": "5106455", + "pocone": "5106505", + "pontal do araguaia": "5106653", + "ponte branca": "5106703", + "pontes e lacerda": "5106752", + "porto alegre do norte": "5106778", + "porto dos gauchos": "5106802", + "porto esperidiao": "5106828", + "porto estrela": "5106851", + "poxoreu": "5107008", + "primavera do leste": "5107040", + "querencia": "5107065", + "reserva do cabacal": "5107156", + "ribeirao cascalheira": "5107180", + "ribeiraozinho": "5107198", + "rio branco": "5107206", + "rondolandia": "5107578", + "rondonopolis": "5107602", + "rosario oeste": "5107701", + "salto do ceu": "5107750", + "santa carmem": "5107248", + "santa cruz do xingu": "5107743", + "santa rita do trivelato": "5107768", + "santa terezinha": "5107776", + "santo afonso": "5107263", + "santo antonio de leverger": "5107800", + "santo antonio do leste": "5107792", + "sao felix do araguaia": "5107859", + "sao jose do povo": "5107297", + "sao jose do rio claro": "5107305", + "sao jose do xingu": "5107354", + "sao jose dos quatro marcos": "5107107", + "sao pedro da cipa": "5107404", + "sapezal": "5107875", + "serra nova dourada": "5107883", + "sinop": "5107909", + "sorriso": "5107925", + "tabapora": "5107941", + "tangara da serra": "5107958", + "tapurah": "5108006", + "terra nova do norte": "5108055", + "tesouro": "5108105", + "torixoreu": "5108204", + "uniao do sul": "5108303", + "vale de sao domingos": "5108352", + "varzea grande": "5108402", + "vera": "5108501", + "vila bela da santissima trindade": "5105507", + "vila rica": "5108600" + }, + "GO": { + "abadia de goias": "5200050", + "abadiania": "5200100", + "acreuna": "5200134", + "adelandia": "5200159", + "agua fria de goias": "5200175", + "agua limpa": "5200209", + "aguas lindas de goias": "5200258", + "alexania": "5200308", + "aloandia": "5200506", + "alto horizonte": "5200555", + "alto paraiso de goias": "5200605", + "alvorada do norte": "5200803", + "amaralina": "5200829", + "americano do brasil": "5200852", + "amorinopolis": "5200902", + "anapolis": "5201108", + "anhanguera": "5201207", + "anicuns": "5201306", + "aparecida de goiania": "5201405", + "aparecida do rio doce": "5201454", + "apore": "5201504", + "aracu": "5201603", + "aragarcas": "5201702", + "aragoiania": "5201801", + "araguapaz": "5202155", + "arenopolis": "5202353", + "aruana": "5202502", + "aurilandia": "5202601", + "avelinopolis": "5202809", + "baliza": "5203104", + "barro alto": "5203203", + "bela vista de goias": "5203302", + "bom jardim de goias": "5203401", + "bom jesus de goias": "5203500", + "bonfinopolis": "5203559", + "bonopolis": "5203575", + "brazabrantes": "5203609", + "britania": "5203807", + "buriti alegre": "5203906", + "buriti de goias": "5203939", + "buritinopolis": "5203962", + "cabeceiras": "5204003", + "cachoeira alta": "5204102", + "cachoeira de goias": "5204201", + "cachoeira dourada": "5204250", + "cacu": "5204300", + "caiaponia": "5204409", + "caldas novas": "5204508", + "caldazinha": "5204557", + "campestre de goias": "5204607", + "campinacu": "5204656", + "campinorte": "5204706", + "campo alegre de goias": "5204805", + "campo limpo de goias": "5204854", + "campos belos": "5204904", + "campos verdes": "5204953", + "carmo do rio verde": "5205000", + "castelandia": "5205059", + "catalao": "5205109", + "caturai": "5205208", + "cavalcante": "5205307", + "ceres": "5205406", + "cezarina": "5205455", + "chapadao do ceu": "5205471", + "cidade ocidental": "5205497", + "cocalzinho de goias": "5205513", + "colinas do sul": "5205521", + "corrego do ouro": "5205703", + "corumba de goias": "5205802", + "corumbaiba": "5205901", + "cristalina": "5206206", + "cristianopolis": "5206305", + "crixas": "5206404", + "crominia": "5206503", + "cumari": "5206602", + "damianopolis": "5206701", + "damolandia": "5206800", + "davinopolis": "5206909", + "diorama": "5207105", + "divinopolis de goias": "5208301", + "doverlandia": "5207253", + "edealina": "5207352", + "edeia": "5207402", + "estrela do norte": "5207501", + "faina": "5207535", + "fazenda nova": "5207600", + "firminopolis": "5207808", + "flores de goias": "5207907", + "formosa": "5208004", + "formoso": "5208103", + "gameleira de goias": "5208152", + "goianapolis": "5208400", + "goiandira": "5208509", + "goianesia": "5208608", + "goiania": "5208707", + "goianira": "5208806", + "goias": "5208905", + "goiatuba": "5209101", + "gouvelandia": "5209150", + "guapo": "5209200", + "guaraita": "5209291", + "guarani de goias": "5209408", + "guarinos": "5209457", + "heitorai": "5209606", + "hidrolandia": "5209705", + "hidrolina": "5209804", + "iaciara": "5209903", + "inaciolandia": "5209937", + "indiara": "5209952", + "inhumas": "5210000", + "ipameri": "5210109", + "ipiranga de goias": "5210158", + "ipora": "5210208", + "israelandia": "5210307", + "itaberai": "5210406", + "itaguari": "5210562", + "itaguaru": "5210604", + "itaja": "5210802", + "itapaci": "5210901", + "itapirapua": "5211008", + "itapuranga": "5211206", + "itaruma": "5211305", + "itaucu": "5211404", + "itumbiara": "5211503", + "ivolandia": "5211602", + "jandaia": "5211701", + "jaragua": "5211800", + "jatai": "5211909", + "jaupaci": "5212006", + "jesupolis": "5212055", + "joviania": "5212105", + "jussara": "5212204", + "lagoa santa": "5212253", + "leopoldo de bulhoes": "5212303", + "luziania": "5212501", + "mairipotaba": "5212600", + "mambai": "5212709", + "mara rosa": "5212808", + "marzagao": "5212907", + "matrincha": "5212956", + "maurilandia": "5213004", + "mimoso de goias": "5213053", + "minacu": "5213087", + "mineiros": "5213103", + "moipora": "5213400", + "monte alegre de goias": "5213509", + "montes claros de goias": "5213707", + "montividiu": "5213756", + "montividiu do norte": "5213772", + "morrinhos": "5213806", + "morro agudo de goias": "5213855", + "mossamedes": "5213905", + "mozarlandia": "5214002", + "mundo novo": "5214051", + "mutunopolis": "5214101", + "nazario": "5214408", + "neropolis": "5214507", + "niquelandia": "5214606", + "nova america": "5214705", + "nova aurora": "5214804", + "nova crixas": "5214838", + "nova gloria": "5214861", + "nova iguacu de goias": "5214879", + "nova roma": "5214903", + "nova veneza": "5215009", + "novo brasil": "5215207", + "novo gama": "5215231", + "novo planalto": "5215256", + "orizona": "5215306", + "ouro verde de goias": "5215405", + "ouvidor": "5215504", + "padre bernardo": "5215603", + "palestina de goias": "5215652", + "palmeiras de goias": "5215702", + "palmelo": "5215801", + "palminopolis": "5215900", + "panama": "5216007", + "paranaiguara": "5216304", + "parauna": "5216403", + "perolandia": "5216452", + "petrolina de goias": "5216809", + "pilar de goias": "5216908", + "piracanjuba": "5217104", + "piranhas": "5217203", + "pirenopolis": "5217302", + "pires do rio": "5217401", + "planaltina": "5217609", + "pontalina": "5217708", + "porangatu": "5218003", + "porteirao": "5218052", + "portelandia": "5218102", + "posse": "5218300", + "professor jamil": "5218391", + "quirinopolis": "5218508", + "rialma": "5218607", + "rianapolis": "5218706", + "rio quente": "5218789", + "rio verde": "5218805", + "rubiataba": "5218904", + "sanclerlandia": "5219001", + "santa barbara de goias": "5219100", + "santa cruz de goias": "5219209", + "santa fe de goias": "5219258", + "santa helena de goias": "5219308", + "santa isabel": "5219357", + "santa rita do araguaia": "5219407", + "santa rita do novo destino": "5219456", + "santa rosa de goias": "5219506", + "santa tereza de goias": "5219605", + "santa terezinha de goias": "5219704", + "santo antonio da barra": "5219712", + "santo antonio de goias": "5219738", + "santo antonio do descoberto": "5219753", + "sao domingos": "5219803", + "sao francisco de goias": "5219902", + "sao joao da parauna": "5220058", + "sao joao d'alianca": "5220009", + "sao luis de montes belos": "5220108", + "sao luiz do norte": "5220157", + "sao miguel do araguaia": "5220207", + "sao miguel do passa quatro": "5220264", + "sao patricio": "5220280", + "sao simao": "5220405", + "senador canedo": "5220454", + "serranopolis": "5220504", + "silvania": "5220603", + "simolandia": "5220686", + "sitio d'abadia": "5220702", + "taquaral de goias": "5221007", + "teresina de goias": "5221080", + "terezopolis de goias": "5221197", + "tres ranchos": "5221304", + "trindade": "5221403", + "trombas": "5221452", + "turvania": "5221502", + "turvelandia": "5221551", + "uirapuru": "5221577", + "uruacu": "5221601", + "uruana": "5221700", + "urutai": "5221809", + "valparaiso de goias": "5221858", + "varjao": "5221908", + "vianopolis": "5222005", + "vicentinopolis": "5222054", + "vila boa": "5222203", + "vila propicio": "5222302" + }, + "DF": { + "brasilia": "5300108" + } +} \ No newline at end of file diff --git a/brutils/ibge/municipality.py b/brutils/ibge/municipality.py index c3ffb7ff..af9a2bc2 100644 --- a/brutils/ibge/municipality.py +++ b/brutils/ibge/municipality.py @@ -1,6 +1,8 @@ import gzip import io import json +import pathlib +import unicodedata from urllib.error import HTTPError from urllib.request import urlopen @@ -71,6 +73,61 @@ def get_municipality_by_code(code): # type: (str) -> Tuple[str, str] | None return None +def get_code_by_municipality_name(municipality_name: str, uf: str): # type: (str, str) -> str | None + """ + Returns the IBGE code for a given municipality name and uf code. + + This function takes a string representing a municipality's name + and uf's code and returns the corresponding IBGE code (string). The function + will handle names by ignoring differences in case, accents, and + treating the character ç as c and ignoring case differences for the uf code. + + Args: + municipality_name (str): The name of the municipality. + uf (str): The uf code of the state. + + Returns: + str: The IBGE code of the municipality. + - Returns None if the name is not valid or does not exist. + + Example: + >>> get_code_by_municipality_name("São Paulo", "SP") + "3550308" + >>> get_code_by_municipality_name("goiania", "go") + "5208707" + >>> get_code_by_municipality_name("Conceição do Coité", "BA") + "2908408" + >>> get_code_by_municipality_name("conceicao do Coite", "Ba") + "2908408" + >>> get_code_by_municipality_name("Municipio Inexistente", "") + None + >>> get_code_by_municipality_name("Municipio Inexistente", "RS") + None + """ + + abs_path = pathlib.Path(__file__).resolve() + script_dir = abs_path.parent.parent + + json_cities_code_path = script_dir / "data" / "cities_code.json" + uf = uf.upper() + + with open(json_cities_code_path, "r", encoding="utf-8") as file: + cities_uf_code = json.load(file) + + if uf not in cities_uf_code.keys(): + return None + + cities_code = cities_uf_code.get(uf) + name_city = _transform_text(municipality_name) + + if name_city not in cities_code.keys(): + return None + + code = cities_code.get(name_city) + + return code + + def _get_values(data): municipio = data["nome"] estado = data["microrregiao"]["mesorregiao"]["UF"]["sigla"] @@ -79,3 +136,32 @@ def _get_values(data): def _is_empty(zip): return zip == b"[]" or len(zip) == 0 + + +def _transform_text(municipality_name: str): # type: (str) -> str + """ + Normalize municipality name and returns the normalized string. + + Args: + municipality_name (str): The name of the municipality. + + Returns: + str: The normalized string + + Example: + >>> _transform_text("São Paulo") + "sao paulo" + >>> _transform_text("Goiânia") + "goiania" + >>> _transform_text("Conceição do Coité") + "'conceicao do coite' + """ + + normalized_string = ( + unicodedata.normalize("NFKD", municipality_name) + .encode("ascii", "ignore") + .decode("ascii") + ) + case_fold_string = normalized_string.casefold() + + return case_fold_string diff --git a/tests/ibge/test_municipality.py b/tests/ibge/test_municipality.py index 516febb3..119c3c88 100644 --- a/tests/ibge/test_municipality.py +++ b/tests/ibge/test_municipality.py @@ -4,7 +4,10 @@ from unittest.mock import MagicMock, patch from urllib.error import HTTPError -from brutils.ibge.municipality import get_municipality_by_code +from brutils.ibge.municipality import ( + get_code_by_municipality_name, + get_municipality_by_code, +) class TestIBGE(TestCase): @@ -85,6 +88,44 @@ def test_error_json_key_error(self, mock_json_loads): result = get_municipality_by_code("3550308") self.assertIsNone(result) + def test_get_code_by_municipality_name(self): + self.assertEqual( + get_code_by_municipality_name("Florianópolis", "sc"), "4205407" + ) + self.assertEqual( + get_code_by_municipality_name("São Paulo", "sp"), "3550308" + ) + self.assertEqual( + get_code_by_municipality_name("GOIANIA", "GO"), "5208707" + ) + self.assertEqual( + get_code_by_municipality_name("Conceição do Coité", "BA"), "2908408" + ) + self.assertEqual( + get_code_by_municipality_name("conceicao do Coite", "Ba"), "2908408" + ) + self.assertEqual( + get_code_by_municipality_name("rio de janeiro", "rj"), "3304557" + ) + self.assertEqual( + get_code_by_municipality_name("Lauro Müller", "sc"), "4209607" + ) + self.assertEqual( + get_code_by_municipality_name("Tôrres", "rs"), "4321501" + ) + self.assertEqual( + get_code_by_municipality_name("aurora", "ce"), "2301703" + ) + self.assertEqual( + get_code_by_municipality_name("aurora", "sc"), "4201901" + ) + self.assertIsNone( + get_code_by_municipality_name("Municipio Inexistente", "RS") + ) + self.assertIsNone( + get_code_by_municipality_name("Municipio Inexistente", "") + ) + if __name__ == "__main__": main()