# Duvida com assinatura de XML com o GINFES Jundiai

**URL:** <https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861>\
**Category:** Diversos\
**Created:** [Maio 25, 2023, 7:45pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861 "2023-05-25T19:45:30Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 25, 2023, 7:45pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/1 "2023-05-25T19:45:30Z")

</div>

Olá, estou tentando assinar o XML da GINFES de Jundiai, porém está dando Assinatura inválida, ja testei de tudo e nunca da certo, estou usando php com as bibliotecas RobRichards\XMLSecLibs\XMLSecurityDSig, RobRichards\XMLSecLibs\XMLSecurityKey;

Alguém poderia me dar algum help?

Segue o XML com a assinatura gerada

```auto
digite ou cole o código <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hom="http://homologacao.ginfes.com.br">
	<soapenv:Header/>
	<soapenv:Body>
		<hom:RecepcionarLoteRpsV3>
			<arg0>
				<ns2:cabecalho versao="3" xmlns:ns2="http://www.ginfes.com.br/cabecalho_v03.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
					<versaoDados>3</versaoDados>
				</ns2:cabecalho>
			</arg0>
			<arg1>
				<EnviarLoteRpsEnvio xmlns="http://www.ginfes.com.br/servico_enviar_lote_rps_envio_v03.xsd" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:tipos="http://www.ginfes.com.br/tipos_v03.xsd" xmlns:n2="http://www.altova.com.br/samplexml/other-namespace" xmlns:xsi="http://wwww.w3.org/2001/XMLSchema-instance">
					<LoteRps>
						<tipos:NumeroLote>5301</tipos:NumeroLote>
						<tipos:Cnpj>5041</tipos:Cnpj>
						<tipos:InscricaoMunicipal>48</tipos:InscricaoMunicipal>
						<tipos:QuantidadeRps>1</tipos:QuantidadeRps>
						<tipos:ListaRps>
							<tipos:Rps>
								<tipos:InfRps>
									<tipos:IdentificacaoRps>
										<tipos:Numero>0012001</tipos:Numero>
										<tipos:Serie>2</tipos:Serie>
										<tipos:Tipo>1</tipos:Tipo>
									</tipos:IdentificacaoRps>
									<tipos:DataEmissao>2023-05-22T15:26:15</tipos:DataEmissao>
									<tipos:NaturezaOperacao>1</tipos:NaturezaOperacao>
									<tipos:OptanteSimplesNacional>2</tipos:OptanteSimplesNacional>
									<tipos:IncentivadorCultural>2</tipos:IncentivadorCultural>
									<tipos:Status>1</tipos:Status>
									<tipos:Servico>
										<tipos:Valores>
											<tipos:ValorServicos>2767.46</tipos:ValorServicos>
											<tipos:ValorDeducoes>0</tipos:ValorDeducoes>
											<tipos:ValorPis>0</tipos:ValorPis>
											<tipos:ValorCofins>0</tipos:ValorCofins>
											<tipos:ValorInss>0</tipos:ValorInss>
											<tipos:ValorIr>0</tipos:ValorIr>
											<tipos:ValorCsll>0</tipos:ValorCsll>
											<tipos:IssRetido>2</tipos:IssRetido>
											<tipos:ValorIss>5.55</tipos:ValorIss>
											<tipos:ValorIssRetido>0</tipos:ValorIssRetido>
											<tipos:OutrasRetencoes>0</tipos:OutrasRetencoes>
											<tipos:BaseCalculo>2767.46</tipos:BaseCalculo>
											<tipos:Aliquota>0.0200</tipos:Aliquota>
											<tipos:ValorLiquidoNfse>2767.46</tipos:ValorLiquidoNfse>
										</tipos:Valores>
										<tipos:ItemListaServico>4.22</tipos:ItemListaServico>
										<tipos:CodigoTributacaoMunicipio>4.22.00 / 11</tipos:CodigoTributacaoMunicipio>
										<tipos:Discriminacao>VALOR REFERENTE A ASSISTENCIA MEDICA - CONTRATO 09 - CONFORME LEI 12.741/12, VALOR APROXIMADO DOS TRIBUTOS (6.65%) R$ 33.25</tipos:Discriminacao>
										<tipos:CodigoMunicipio>3509601</tipos:CodigoMunicipio>
									</tipos:Servico>
									<tipos:Prestador>
										<tipos:Cnpj>49242</tipos:Cnpj>
										<tipos:InscricaoMunicipal>173</tipos:InscricaoMunicipal>
									</tipos:Prestador>
									<tipos:Tomador>
										<tipos:IdentificacaoTomador>
											<tipos:CpfCnpj>
												<tipos:Cnpj>017117</tipos:Cnpj>
											</tipos:CpfCnpj>
										</tipos:IdentificacaoTomador>
										<tipos:RazaoSocial>GDA</tipos:RazaoSocial>
										<tipos:Endereco>
											<tipos:Endereco>PRAGUES</tipos:Endereco>
											<tipos:Numero>2</tipos:Numero>
											<tipos:Complemento>3 ADAR</tipos:Complemento>
											<tipos:Bairro>CEO</tipos:Bairro>
											<tipos:CodigoMunicipio>356</tipos:CodigoMunicipio>
											<tipos:Uf>SP</tipos:Uf>
											<tipos:Cep>114</tipos:Cep>
										</tipos:Endereco>
										<tipos:Contato>
											<tipos:Telefone>19222</tipos:Telefone>
											<tipos:Email>so.br</tipos:Email>
										</tipos:Contato>
									</tipos:Tomador>
								</tipos:InfRps>
							</tipos:Rps>
						</tipos:ListaRps>
					</LoteRps>
					<dsig:Signature>
						<dsig:SignedInfo>
							<dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
							<dsig:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
							<dsig:Reference URI="">
								<dsig:Transforms>
									<dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
									<dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
								</dsig:Transforms>
								<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
								<dsig:DigestValue>teifJXSaKeiBIyqNDwmw3efM=</dsig:DigestValue>
							</dsig:Reference>
						</dsig:SignedInfo>
						<dsig:SignatureValue>skop3lU7NNrPh7FlZFMOeB0/kOV2z5tnd7ghTDYQJ/Wuq/NgNiDb5qMSkIdM/KiDuWFE9pKopaIEJArRxj1WN+ILE9iZv0533KqlyQT/n9ywR6oUX7ODcrqJUKpPLIR/96+VD3asT3UgH4X05gDje4hBIPPzSg6pinQyb0ESvc1/PwjN+vfMSKdYzh/yma2S5dLMU9SdGaEfvU/2yAl8vkefanyp5xqlhpbn8gRcIiiTpbIwv5B9Ke8vHa+AiP7zbYhhuFri/VfOekWc38Q7nGY2c9VsHvewAzIfK6Q3qDGPhPL5YU9jQegdn+JxlCMTMB8eQP+/dgbz5A==</dsig:SignatureValue>
						<dsig:KeyInfo>
							<dsig:X509Data>
								<dsig:X509Certificate>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</dsig:X509Certificate>
							</dsig:X509Data>
						</dsig:KeyInfo>
					</dsig:Signature>
				</EnviarLoteRpsEnvio>
			</arg1>
		</hom:RecepcionarLoteRpsV3>
	</soapenv:Body>
</soapenv:Envelope>aqui

```

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 1:44am UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/2 "2023-05-26T01:44:41Z")

</div>

Estou tentando Fazer a nota de brasilia em PHP e sofrendo demais sem sucesso. metodo GerarNfse. Tbm sofrendo demais faz 3 dias. Nota de Serviço não é coisa de Deus

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 11:39am UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/3 "2023-05-26T11:39:51Z")

</div>

Pois é, estou há duas semanas sem sucesso tbm, a documentação dos caras fala, fala mas não explica nada

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 11:57am UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/4 "2023-05-26T11:57:45Z")

</div>

Você já testou na producao?  
Muitas vezes o ambiente de teste é bugado e tem comportamento diferente.

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 12:01pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/5 "2023-05-26T12:01:15Z")

</div>

Testei sim, deu mesmo erro de assinatura inválida.

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 12:17pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/6 "2023-05-26T12:17:03Z")

</div>

acabei de conseguir montar um xml pro metodo GerarNFSe. Agora vai começar a brincadeira. montar com dados verdadeiros e Tentar assinar. Se eu consegui posto aqui pra vc saber o que fiz.

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 12:25pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/7 "2023-05-26T12:25:26Z")

</div>

beleza…  
Qual biblioteca você esta usando para assinar?

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 12:35pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/8 "2023-05-26T12:35:52Z")

</div>

ainda estou nas previas. Não usei nada. A principio quero conseguir fazer com o próprio php, Eu procuro evitar ao máximo bibliotecas cheias classe pra fazer algo que 6 linhas de código fazem. Mas esse biblioteca que vc está usando parece boa. Te mantenho informado aqui. Se você conseguir algum sucesso compartilhe aqui tbm.

---

<div class="post-metadata">

**Author:** ![luizvaz](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/luizvaz/32/4_2.png) [@luizvaz](https://comunidade.opendfe.com.br/u/luizvaz)\
**Post date:** [Maio 26, 2023, 4:09pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/9 "2023-05-26T16:09:07Z")

</div>

O problema dessa biblioteca é que o C14N fica corrompido.

Já comentei sobre isso aqui:

> [@Como assinar o XML em um nó específico (Nota Fiscal)](https://comunidade.opendfe.com.br/t/como-assinar-o-xml-em-um-no-especifico-nota-fiscal/640/5):
>
> Obrigado mais uma vez pela resposta, mas eu estou seguindo exatamente essa ordem, mas quando tento validar, ele da erro. Se eu assinar apenas uma vez o documento, seja ele onde for, funciona, entretanto quando tento fazer a segunda assinatura que da o erro. Eu to fazendo um modelo da nota fiscal, e assina ela no espaço Rps. Depois disso, antes de enviar eu uso a mesma função para assinar, só que agora no campo EnviarLoteRpsEnvio. Minha nota fiscal sai igual ao modelo que o funcionário da SEF…

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 4:11pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/10 "2023-05-26T16:11:55Z")

</div>

Eu vi esse post seu, tentei fazer mas não deu certo.  
O problema é que esse XML contem namespace “tipo”, dificultando ainda mais o procedimento

---

<div class="post-metadata">

**Author:** ![luizvaz](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/luizvaz/32/4_2.png) [@luizvaz](https://comunidade.opendfe.com.br/u/luizvaz)\
**Post date:** [Maio 26, 2023, 4:16pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/11 "2023-05-26T16:16:47Z")

</div>

É simples!

Olhe essa linha onde os NS são declarados:

```auto
<EnviarLoteRpsEnvio xmlns="http://www.ginfes.com.br/servico_enviar_lote_rps_envio_v03.xsd"
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
xmlns:tipos="http://www.ginfes.com.br/tipos_v03.xsd"
xmlns:n2="http://www.altova.com.br/samplexml/other-namespace"
xmlns:xsi="http://wwww.w3.org/2001/XMLSchema-instance">
					<LoteRps>

```

  
  
  
Você pode registrar vários namespaces, para o XPATH funcionar:

```auto
$xpath->registerNamespace('dsig', "http://www.w3.org/2000/09/xmldsig#");
$xpath->registerNamespace('n2', "http://www.altova.com.br/samplexml/other-namespace");
$xpath->registerNamespace('tipos', "http://www.ginfes.com.br/tipos_v03.xsd");
$node = $xpath->query("//tipos:{$tagid}")->item(0);

```

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 4:53pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/12 "2023-05-26T16:53:56Z")

</div>

```auto
$data = file_get_contents('certificado.pfx');
$certPassword = 'senha';
openssl_pkcs12_read($data, $certs, $certPassword);
$pkey_pem = $certs['pkey'];
$cert_pem = $certs['cert'];
file_put_contents('cert.pem', $cert_pem);
file_put_contents('chave.pem', $pkey_pem);

$doc = new DOMDocument();
/*Recupera xml sem assinatura*/
$doc->load('brasilia.xml');

$objDSig = new XMLSecurityDSig();
$objDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N);
$objDSig->addReference(
    $doc, 
    XMLSecurityDSig::SHA1, 
    ['http://www.w3.org/2000/09/xmldsig#enveloped-signature', 
		'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'],
	['force_uri' => true, 'uri' => 'rpsId23253']	
);

$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
$objKey->loadKey('chave.pem', TRUE);
$objDSig->sign($objKey);
$objDSig->add509Cert(file_get_contents('cert.pem'));
/*indica a tag que será gravada a assinatura*/
$objDSig->appendSignature($doc->getElementsByTagName('Rps')->item(0));
$doc->save('signed.xml');
$xml=file_get_contents('signed.xml');

```

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 5:32pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/13 "2023-05-26T17:32:31Z")

</div>

O meu código esta assim

na $tagid estou colocando o LoteRps, porem não esta encontrando pelo fato dessa tag não ter o namespace “tipos”, mas se informo InfRps por exemplo ele acha, mas mesmo assim da assinatura inválida.

Não sei se estou fazendo a coisa certa

```auto
        $doc = new DOMDocument('1.0', 'UTF-8');
        $doc->loadXML($conteudo);
        
        / **CRIAÇÃO DA CLASSE XML SECURITY DSIG** /
        $objDSig = new XMLSecurityDSig();
        
        $tagid = 'LoteRps';

        //extrair a tag com os dados a serem assinados
        $xpath = new DOMXPath($doc);
        $xpath->registerNamespace('dsig', "http://www.w3.org/2000/09/xmldsig#");
        $xpath->registerNamespace('n2', "http://www.altova.com.br/samplexml/other-namespace");
        $xpath->registerNamespace('tipos', "http://www.ginfes.com.br/tipos_v03.xsd");
        $node = $xpath->query("//tipos:{$tagid}")->item(0);

        if (!isset($node)) 
        {
            $msg = "A tag <$tagid> não existe no XML!!";
            throw new Exception($msg);
        }

        Util::log($node, 'RPS');
        
        / **DETERMINA O MÉTODO CANONICO C14** /
        //$objDSig->setCanonicalMethod(XMLSecurityDSig::C14N);

        $objDSig->setCanonicalMethod(XMLSecurityDSig::C14N);

        
        // ASSINA UTILIZANDO SHA-1
        $objDSig->addReference(
            $node,
            XMLSecurityDSig::SHA1,
            array('http://www.w3.org/2000/09/xmldsig#enveloped-signature',
            'http://www.w3.org/TR/2001/REC-xml-c14n-20010315'
           ),
            array("force_uri"=> true)
        );
        
        / **CRIA UMA NOVA CHAVE PRIVADA** /
        $objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
                
        / **CARREGA A CHAVE PRIVADA** /
        $objKey->loadKey( __CHPRIVADA__ , true);
        
       / **ASSINA O ARQUIVO XML** /
        $objDSig->sign($objKey);        

        // / **FAZ ASSOCIAÇÃO DA CHAVE PUBLICA** /
        $objDSig->add509Cert(file_get_contents( __CHPUBLICA__ ));
        
        / **FAZ O APPEND DA ASSINATURA NO XML** /
        $objDSig->appendSignature($node->parentNode);
        
        / **RETORNA O RPS ASSINADO COMO STRING** /
        return $doc->saveXML($doc);

```

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 5:45pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/15 "2023-05-26T17:45:01Z")

</div>

este código seria para que?

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 5:46pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/16 "2023-05-26T17:46:20Z")

</div>

o que te passei. eu recupero o xml sem a assinatura e assino. Ja conseguir transmitir em ambiente de teste

---

<div class="post-metadata">

**Author:** ![bcs018](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/bcs018/32/400_2.png) [@bcs018](https://comunidade.opendfe.com.br/u/bcs018)\
**Post date:** [Maio 26, 2023, 6:27pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/17 "2023-05-26T18:27:38Z")

</div>

Deu certo com esse seu método Fagner, valew mesmo!!!

Obrigado também Luiz pela atenção!

O problema na verdade estava com os certificados, ao fazer esses passos:

```auto
$data = file_get_contents(‘certificado.pfx’);
$certPassword = ‘senha’;
openssl_pkcs12_read($data, $certs, $certPassword);
$pkey_pem = $certs[‘pkey’];
$cert_pem = $certs[‘cert’];
file_put_contents(‘cert.pem’, $cert_pem);
file_put_contents(‘chave.pem’, $pkey_pem);

```

Deu certo!!

---

<div class="post-metadata">

**Author:** ![fagner](https://comunidade.opendfe.com.br/user_avatar/comunidade.opendfe.com.br/fagner/32/401_2.png) [@fagner](https://comunidade.opendfe.com.br/u/fagner)\
**Post date:** [Maio 26, 2023, 6:57pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/18 "2023-05-26T18:57:21Z")

</div>

Que legal que funcionou. Fico contente.

---

<div class="post-metadata">

**Author:** ![system](https://comunidade.opendfe.com.br/uploads/default/original/1X/20b19a0ebccca67297d62e1f7d90c347e0761163.png) [@system](https://comunidade.opendfe.com.br/u/system)\
**Post date:** [Junho 25, 2023, 6:57pm UTC](https://comunidade.opendfe.com.br/t/duvida-com-assinatura-de-xml-com-o-ginfes-jundiai/861/19 "2023-06-25T18:57:23Z")

</div>

Este tópico foi fechado automaticamente 30 dias depois da última resposta. Novas respostas não são mais permitidas.
