Jump to content
cjulio

Utilizar Webservices da AT

Recommended Posts

JacsonPaz
1 hour ago, Solskajer said:

Bom dia,

Se andares uns posts para trás vês que o certificado da AT (chave pública) expirou no mês passado.

Tens de usar o que foi enviado por email ou descarregar da AT.

Bom dia

Eu testei com o novo certificado do ambiente de TESTES no webservices de TRANSPORTE e o erro continua (um pouco diferente do mencionado pelo colega). 

Response-Code: 500
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>

Response-Code: 500
Encoding: ISO-8859-1
Content-Type: text/xml
Headers: {connection=[close], content-type=[text/xml], Set-Cookie=[cpd83x3AvETSAw1U4VzyhVmift8nwq9oX+r7j6K4-FzI=v1U1yRg+mBFAf; Expires=Wed, 12-Aug-2020 13:22:05 GMT; Path=/], X-Backside-Transport=[FAIL FAIL]}
Payload: <?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://autenticacao.portaldasfinancas.gov.pt/services/ValidateCredencialService/2012/11" xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>
<detail/></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

 

Share this post


Link to post
Share on other sites
samuquinha
Em 07/07/2020 às 10:36, Bruno Barbosa disse:

ja instalei o certificado e nao tive sucesso, 
tiveste que reiniciar o servidor ou instalar o certificado com algum parametro específico?

Não me recorda se reiniciei o servidor, mas em caso de dúvida...

Share this post


Link to post
Share on other sites
Bruno Barbosa
Em 12/08/2020 às 12:32, JacsonPaz disse:

Bom dia

Eu testei com o novo certificado do ambiente de TESTES no webservices de TRANSPORTE e o erro continua (um pouco diferente do mencionado pelo colega). 

Response-Code: 500
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>


Response-Code: 500
Encoding: ISO-8859-1
Content-Type: text/xml
Headers: {connection=[close], content-type=[text/xml], Set-Cookie=[cpd83x3AvETSAw1U4VzyhVmift8nwq9oX+r7j6K4-FzI=v1U1yRg+mBFAf; Expires=Wed, 12-Aug-2020 13:22:05 GMT; Path=/], X-Backside-Transport=[FAIL FAIL]}
Payload: <?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://autenticacao.portaldasfinancas.gov.pt/services/ValidateCredencialService/2012/11" xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>33</faultcode>
<faultstring>Falha comunicacao com Servidor de Autenticacao (500)</faultstring>
<detail/></SOAP-ENV:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>

 

boa tarde

verifica se está a passar a chave na comunicação, os erros 500 que tive eram situações em que falhava esse conteudo na mensagem

 

55 minutos atrás, samuquinha disse:

Não me recorda se reiniciei o servidor, mas em caso de dúvida...

obrigado

foi-se resolvendo

Share this post


Link to post
Share on other sites
José Jorge Matos

Boa tarde,

Uma dúvida para os colegas que programam em C#.

Sempre que se instancia a classe X509Certificate2 é criado um ficheiro na pasta C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys.

Por exemplo:

X509Certificate2 cert = new X509Certificate2(certificado, password);

Existe alguma forma de evitar que isso aconteça?

Estou com problemas com o antivírus, que bloqueia a escrita na pasta que referi acima.

Obrigado.

JJM

Edited by José Jorge Matos
-

Share this post


Link to post
Share on other sites
MAbrantes

Alguém com problemas no envio? Não estou a conseguir comunicar há mais de meia hora.

Share this post


Link to post
Share on other sites
jorang
4 minutos atrás, MAbrantes disse:

Alguém com problemas no envio? Não estou a conseguir comunicar há mais de meia hora.

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

Share this post


Link to post
Share on other sites
Isabel Carvalho
1 hora atrás, MAbrantes disse:

Alguém com problemas no envio? Não estou a conseguir comunicar há mais de meia hora.

Boa tarde,

 

também estamos com problemas com comunicação, mas não em todos os clientes e temos até clientes que só têm problemas com alguns postos de trabalho. Com que software trabalham? 

Share this post


Link to post
Share on other sites
MAbrantes

No meu caso está solucionado, fui verificar a data do certificado e estava expirado. Tudo operacional agora.

Share this post


Link to post
Share on other sites
pedrokins

Boa tarde a todos.

Após dois dias a navegar pelas primeiras páginas deste tópico a tentar implementar a comunicação de faturas à AT, sem sucesso, queria perguntar se alguém aqui tem um exemplo em C# ou .NET que esteja funcional?

Já tentei pelo wsdl e já tentei contruir o pedido Raw pelo xml. Pelo wsdl não passo de "internal error", pelo xml não passo de um Erro 99.

Alguém me consegue ajudar? Muito obrigado a todos.

Share this post


Link to post
Share on other sites
Isabel Carvalho
6 horas atrás, jorang disse:

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

 

6 horas atrás, jorang disse:

Por aqui não houve qualquer erro na última hora, nem com faturas nem com docs de trasnporte.

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Share this post


Link to post
Share on other sites
pedrokins
Em 22/03/2013 às 16:36, araujor disse:

Boa tarde a todos, recentemente iniciei o desenvolvimento desta funcionalidade, já li e reli todos os posts deste tópico e com a a vossa ajuda já consegui fazer alguma coisa. Possuo o certificado de teste (TestesWebServices.pfx + a chave pública da AT) que solicitei junto da AT.

Aqui está o meu código...

Gerar o conteúdo....

 


private string GenerateXmlString()
 {
	 StringBuilder sb = new StringBuilder();
	 sb.Append("<S:Envelope xmlns:S=\"http://schemas.xmlsoap.org/soap/envelope/\">");
	 sb.Append("<S:Header>");
	 sb.Append("<wss:Security xmlns:wss=\"http://schemas.xmlsoap.org/ws/2002/12/secext/\">");
	 sb.Append("<wss:UsernameToken>");
	 sb.Append("<wss:Username>" + NifConta + "</wss:Username>");
	 sb.Append("<wss:Password>" + PassFinancasEncriptada + "</wss:Password>");
	 sb.Append("<wss:Nonce>" + ChaveSimetricaEncriptada + "</wss:Nonce>");
	 sb.Append("<wss:Created>" + DataCriacaoEncriptada + "</wss:Created>");
	 sb.Append("</wss:UsernameToken>");
	 sb.Append("</wss:Security>");
	 sb.Append("</S:Header>");
	 sb.Append("<S:Body>");
	 sb.Append("<ns2:RegisterInvoiceElem xmlns:ns2=\"http://servicos.portaldasfinancas.gov.pt/faturas/\">");
	 sb.Append("<TaxRegistrationNumber>" + "XXXXXXXXX" + "</TaxRegistrationNumber>");
	 sb.Append("<ns2:InvoiceNo>FT 1/1</ns2:InvoiceNo>");
	 sb.Append("<ns2:InvoiceDate>2012-05-05</ns2:InvoiceDate>");
	 sb.Append("<ns2:InvoiceType>FT</ns2:InvoiceType>");
	 sb.Append("<ns2:InvoiceStatus>N</ns2:InvoiceStatus>");
	 sb.Append("<CustomerTaxID>299999998</CustomerTaxID>");
	 sb.Append("<Line>");
	 sb.Append("<ns2:DebitAmount>100</ns2:DebitAmount>");
	 sb.Append("<ns2:Tax>");
	 sb.Append("<ns2:TaxType>IVA</ns2:TaxType>");
	 sb.Append("<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>");
	 sb.Append("<ns2:TaxPercentage>23</ns2:TaxPercentage>");
	 sb.Append("</ns2:Tax>");
	 sb.Append("</Line>");
	 sb.Append("<DocumentTotals>");
	 sb.Append("<ns2:TaxPayable>23</ns2:TaxPayable>");
	 sb.Append("<ns2:NetTotal>100</ns2:NetTotal>");
	 sb.Append("<ns2:GrossTotal>123</ns2:GrossTotal>");
	 sb.Append("</DocumentTotals>");
	 sb.Append("</ns2:RegisterInvoiceElem>");
	 sb.Append("</S:Body>");
	 sb.Append("</S:Envelope>");

	 XmlDocument xc = new XmlDocument();
	 TextReader textReader = new StringReader(sb.ToString());
	 XDocument xmlDocument = Xdocument.Load(textReader);
	 xmldocument.Save(Application.StartupPath + "\\tosend.xml");
	 return sb.ToString();

 }
 

 

método de cifragem de dados...

 


void buildCredentials()
 {
	 X509Certificate2 certCP = new X509Certificate2();
	 //certCP.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet);
	 certCP.Import(CaminhoChavePublica);
	 String publicKey = certCP.PublicKey.Key.ToXmlString(false);

	 String DataCriacao = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.ff") + "Z";

	 RijndaelManaged rijndaelCipher = new RijndaelManaged();
	 rijndaelCipher.GenerateKey();
	 rijndaelCipher.Mode = CipherMode.ECB;
	 rijndaelCipher.Padding = PaddingMode.PKCS7;
	 string simetrickey = rijndaelCipher.Key.ToString();
	 Byte[] chaveSimetrica = rijndaelCipher.Key;
	 SymmetricAlgorithm rijn = SymmetricAlgorithm.Create();
	 rijn.Key = rijndaelCipher.IV;
	 rijn.IV = rijndaelCipher.IV;
	 rijn.Mode = CipherMode.ECB;
	 MemoryStream msPassFinancas = new MemoryStream();
	 CryptoStream csPassFinancas = new CryptoStream(msPassFinancas, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write);
	 using (StreamWriter swPassFinancas = new StreamWriter(csPassFinancas))
	 {
		 swPassFinancas.Write(PassFinancas);
	 }
	 MemoryStream msDataCriacao = new MemoryStream();
	 CryptoStream csDataCriacao = new CryptoStream(msDataCriacao, rijn.CreateEncryptor(rijn.Key, rijn.IV), CryptoStreamMode.Write);
	 using (StreamWriter swDataCriacao = new StreamWriter(csDataCriacao))
	 {
		 swDataCriacao.Write(DataCriacao);
	 }
	 PassFinancasEncriptada = Convert.ToBase64String(msPassFinancas.ToArray());
	 DataCriacaoEncriptada = Convert.ToBase64String(msDataCriacao.ToArray());
	 RSACryptoServiceProvider AlgRSA = new RSACryptoServiceProvider();
	 AlgRSA.FromXmlString(publicKey);
	 Byte[] Chave = AlgRSA.Encrypt(rijn.Key, false);
	 ChaveSimetricaEncriptada = Convert.ToBase64String(Chave);

 }
 

 

método de envio...

 


public string send()
 {	


	 buildCredentials();
	 try
	 {
		 Uri EnderecoWebService = new Uri("https://servicos.portaldasfinancas.gov.pt:700/fews/faturas");
		 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(EnderecoWebService);
		 request.Headers.Add("SOAPAction", "http://servicos.portaldasfinancas.gov.pt/faturas/RegisterInvoice");

		 X509Certificate2 cert = new X509Certificate2();
		 // cert.Import(CaminhoChavePublica); //<-----
		 cert.Import(CaminhoCertificado, SenhaCertificado, X509KeyStorageFlags.DefaultKeySet);

		 request.ClientCertificates.Add(cert);

		 request.Method = "POST";
		 request.ContentType = "text/xml; charset=utf-8";
		 request.Accept = "text/xml";
		 string oRequest = GenerateXmlString();
		 string postData = oRequest;
		 byte[] byteArray = Encoding.UTF8.GetBytes(postData);
		 request.ContentLength = byteArray.Length;

		 Stream dataStream = request.GetRequestStream();
		 dataStream.Write(byteArray, 0, byteArray.Length);
		 dataStream.Close();

		 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

		 dataStream = response.GetResponseStream();
		 StreamReader reader = new StreamReader(dataStream);
		 string responseFromServer = reader.ReadToEnd();

		 reader.Close();
		 dataStream.Close();
		 response.Close();

		 return responseFromServer;
	 }
	 catch (WebException ex)
	 {
		 if (ex.Status == WebExceptionStatus.ProtocolError)
		 {
			 WebResponse resp = ex.Response;
			 StreamReader sr = new StreamReader(resp.GetResponseStream());
			 return sr.ReadToEnd();
		 }
		 else
		 {
			 return ex.Message;
		 }
	 }
 }
 

 

Peço a alguém que me ajude, com este código, neste momento está me a retornar um erro 99 a dizer que o utilizador não ta registado no portal,

o engraçado é que as credenciais que tou a usar permitem me entrar no portal efaturas mas ao efectuar o teste através do portal retorna-me exactamente

o erro que apanho no protótipo (utilizador não registado)...

Desde já obrigado por perderem tempo a olhar pra isto...

Este é o código que estou a utilizar e não me parece dar qualquer erro com a comunicação.

E em baixo o XML que que estou a enviar. 

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
	<S:Header>
		<wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
			<wss:UsernameToken>
				<wss:Username>NIF/USER</wss:Username>
				<wss:Password>s5NJQQ....</wss:Password>
				<wss:Nonce>ZxXOJgzEHDnNX58Z84y6w0z+NuXXiJp....</wss:Nonce>
				<wss:Created>aJ/iTo7IjH.....</wss:Created>
			</wss:UsernameToken>
		</wss:Security>
	</S:Header>
	<S:Body>
		<ns2:RegisterInvoiceElem xmlns:ns2="http://servicos.portaldasfinancas.gov.pt/faturas/">
			<TaxRegistrationNumber>NIF</TaxRegistrationNumber>
			<ns2:InvoiceNo>FR 2020SA1/1</ns2:InvoiceNo>
			<ns2:InvoiceDate>2020-09-02</ns2:InvoiceDate>
			<ns2:InvoiceType>FR</ns2:InvoiceType>
			<ns2:InvoiceStatus>N</ns2:InvoiceStatus>
			<CustomerTaxID>999999990</CustomerTaxID>
			<Line>
				<ns2:DebitAmount>100</ns2:DebitAmount>
				<ns2:Tax>
					<ns2:TaxType>IVA</ns2:TaxType>
					<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>
					<ns2:TaxPercentage>23</ns2:TaxPercentage>
				</ns2:Tax>
			</Line>
			<DocumentTotals>
				<ns2:TaxPayable>23</ns2:TaxPayable>
				<ns2:NetTotal>100</ns2:NetTotal>
				<ns2:GrossTotal>123</ns2:GrossTotal>
			</DocumentTotals>
		</ns2:RegisterInvoiceElem>
	</S:Body>
</S:Envelope>

 

O XML de resposta que recebo é este, mas quando testo o serviço em https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action tudo esta a funcionar bem. O que me parece ser um erro do meu lado. Alguém me consegue ajudar a tentar perceber o que está errado?

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns0:RegisterInvoiceResponseElem xmlns:ns0="http://servicos.portaldasfinancas.gov.pt/faturas/"><ReturnCode>-99</ReturnCode><ReturnMessage>Erro de sistema. Por favor volte a tentar mais tarde.</ReturnMessage></ns0:RegisterInvoiceResponseElem></env:Body></env:Envelope>

Obrigado desde já!

Edited by pedrokins

Share this post


Link to post
Share on other sites
davdew05
17 horas atrás, Isabel Carvalho disse:

 

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Bom dia,

Uma pergunta qual o sistema operativo que tem ? se for XP, tem que atualizar manualmente alguns certificados de root. 

No meu caso utilizei estes: https://drive.google.com/file/d/1VrOrEaXFiOkpa-d1hU-_c8qsE_g-Lfas/view?usp=sharing

Espero ter ajudado.

Share this post


Link to post
Share on other sites
Isabel Carvalho
12 minutos atrás, davdew05 disse:

Bom dia,

Uma pergunta qual o sistema operativo que tem ? se for XP, tem que atualizar manualmente alguns certificados de root. 

No meu caso utilizei estes: https://drive.google.com/file/d/1VrOrEaXFiOkpa-d1hU-_c8qsE_g-Lfas/view?usp=sharing

Espero ter ajudado.

Bom dia,

 

obrigada pela resposta, mas não é esse  problema. Estamos a falar de vários sistemas operativos, em centenas de clientes que comunicavam até ontem, e deixaram quase todos de comunicar. 

 

Share this post


Link to post
Share on other sites
ezio
18 horas atrás, Isabel Carvalho disse:

 

Boa tarde,

Desde terça feira estamos novamente a ter problemas de comunicação com a AT. Mais alguém está a ter problemas?

O erro que obtemos é o seguinte:

"Web exception: The remote certificate is invalid according to the validation procedure. : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. "

Estamos a tentar perceber se se trata de um problema do lado da AT ou não. A verdade é que não acontece em todos os clientes, pelo menos para já.

Cumprimentos,

 

Isabel Carvalho

Bom dia
Temos o mesmo problema. Algumas máquinas funcionam em outras não. Num servidor 12 funciona, numa  windows 10 funciona e noutra não. ambas são actualizadas com o 1903.

Share this post


Link to post
Share on other sites
davdew05
5 horas atrás, Isabel Carvalho disse:

Bom dia,

 

obrigada pela resposta, mas não é esse  problema. Estamos a falar de vários sistemas operativos, em centenas de clientes que comunicavam até ontem, e deixaram quase todos de comunicar. 

 

Neste vários sistemas operativos tem a certeza que têm os certificados actualizados? E o certificados da aplicação não terá caducado? Sei que são perguntas estúpidas, mas as vezes pode acontecer :)

Share this post


Link to post
Share on other sites
pjmvc

Em Julho tive o mesmo problema num Windows 2008 e foi necessário actualizar o seguinte certificado do Windows:

Global Chambersign Root 2008

Foi exportado de outro Windows e importado para o 2008 e tem a data de expiração de 31/07/2038.
Pode ser que seja um problema semelhante...

Share this post


Link to post
Share on other sites
ezio
4 horas atrás, pjmvc disse:

Em Julho tive o mesmo problema num Windows 2008 e foi necessário actualizar o seguinte certificado do Windows:

Global Chambersign Root 2008

Foi exportado de outro Windows e importado para o 2008 e tem a data de expiração de 31/07/2038.
Pode ser que seja um problema semelhante...

até agora resolvi-o como aqui indicado
https://genopro.com/ssl/

  • Vote 2

Share this post


Link to post
Share on other sites
pedrokins
Em 04/09/2020 às 08:18, pedrokins disse:

Este é o código que estou a utilizar e não me parece dar qualquer erro com a comunicação.

E em baixo o XML que que estou a enviar. 


<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
	<S:Header>
		<wss:Security xmlns:wss="http://schemas.xmlsoap.org/ws/2002/12/secext">
			<wss:UsernameToken>
				<wss:Username>NIF/USER</wss:Username>
				<wss:Password>s5NJQQ....</wss:Password>
				<wss:Nonce>ZxXOJgzEHDnNX58Z84y6w0z+NuXXiJp....</wss:Nonce>
				<wss:Created>aJ/iTo7IjH.....</wss:Created>
			</wss:UsernameToken>
		</wss:Security>
	</S:Header>
	<S:Body>
		<ns2:RegisterInvoiceElem xmlns:ns2="http://servicos.portaldasfinancas.gov.pt/faturas/">
			<TaxRegistrationNumber>NIF</TaxRegistrationNumber>
			<ns2:InvoiceNo>FR 2020SA1/1</ns2:InvoiceNo>
			<ns2:InvoiceDate>2020-09-02</ns2:InvoiceDate>
			<ns2:InvoiceType>FR</ns2:InvoiceType>
			<ns2:InvoiceStatus>N</ns2:InvoiceStatus>
			<CustomerTaxID>999999990</CustomerTaxID>
			<Line>
				<ns2:DebitAmount>100</ns2:DebitAmount>
				<ns2:Tax>
					<ns2:TaxType>IVA</ns2:TaxType>
					<ns2:TaxCountryRegion>PT</ns2:TaxCountryRegion>
					<ns2:TaxPercentage>23</ns2:TaxPercentage>
				</ns2:Tax>
			</Line>
			<DocumentTotals>
				<ns2:TaxPayable>23</ns2:TaxPayable>
				<ns2:NetTotal>100</ns2:NetTotal>
				<ns2:GrossTotal>123</ns2:GrossTotal>
			</DocumentTotals>
		</ns2:RegisterInvoiceElem>
	</S:Body>
</S:Envelope>

 

O XML de resposta que recebo é este, mas quando testo o serviço em https://faturas.portaldasfinancas.gov.pt/testarLigacaoWebService.action tudo esta a funcionar bem. O que me parece ser um erro do meu lado. Alguém me consegue ajudar a tentar perceber o que está errado?


<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Header/><env:Body><ns0:RegisterInvoiceResponseElem xmlns:ns0="http://servicos.portaldasfinancas.gov.pt/faturas/"><ReturnCode>-99</ReturnCode><ReturnMessage>Erro de sistema. Por favor volte a tentar mais tarde.</ReturnMessage></ns0:RegisterInvoiceResponseElem></env:Body></env:Envelope>

Obrigado desde já!

Bom dia mais uma vez! Desculpem voltar ao mesmo...mas faça continuo a nao conseguir comunicar e a nao perceber o que está a acontecer....olhando para este código alguém consegue detetar o que me poderá estar a falhar?

Comunicação de faturas À AT....

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.