Subject: Re: 4409 to STD
From: Frank Ellermann <[email-masked]>
To: [email-masked]
Date: Fri, 29 Sep 2006 16:21:05 +0200
List-Id: <ietf-smtp.imc.org>

John C Klensin wrote:

>>: The MSA MAY add or replace the 'Sender' or 'Resent-Sender'
>>: field, if the identity of the sender is known and this is
>>: not given in the 'From' field.

>> : For a mail without 'Resent-From' field the MSA adds or
>> : replaces a 'Sender' field to reflect the known identity.

> s/adds/MAY add/

The complete section 8.1 is OPTIONAL, starting with the first
paragraph as shown above.  The following paragraphs are only
the "how-to" for some obscure 2822 Resent-cases.  Adding an
explicit MAY for the details again is okay, but a bit awkward.

Could be also a case of DEnglish and/or "avoid 2119 keywords"
on my side.

>>: For a mail with two or more 'Resent-From' fields the MSA
>>: verifies that the first (top-down) 'Resent-From' field
>>: reflects the known identity.  Where that's not the case
>>: it replaces the first 'Resent-Sender' field before the
>>: second 'Resent-From' field, if that exists.  Otherwise
>>: it adds a 'Resent-Sender' field reflecting the known
>>: identity before the first 'Resent-From' field.

> I can't completely parse the above paragraph in terms of
> what is intended and what is permitted.

It's the case with two or more Resent-* blocks, each block
contains a Resent-From.  RFC 2822 has this as "one per block,
see 3.6.6".  And 3.6.6 adds MUSTard.

So you can have (top down, simplified):

Resent-From: [email-masked]
Resent-Date: ...
Resent-From: [email-masked], [email-masked]
Resent-Sender: [email-masked]
Resent-Date: ...
From: [email-masked]
Sender: [email-masked]

The MSA then must not corrupt the good Sender or Resent-Sender,
and it has to check [email-masked].  If necessary it MAY add a
Resent-Sender: [email-masked] "near" the corresponding
Resent-From.  Directly above is good enough.  Directly below
would also work.

Maybe adding this simplified example as "artwork" helps (?)

> doing the verification must be optional but that the
> replacements MUST NOT be performed unless the verification
> is done.

Yes, MSAs wishing to support 8.1 (optional) "MUST" get it right.

>>: For a mail with 'Resent-Sender' field but no 'Resent-From'
>>: field the MSA MUST reject the syntactically invalid mail.

> I believe this violates provisions of 2821 and 2822.

It's a case where the 8.1 recipe fails.  And RFC 2822 says that
the Resent-From (and Resent-Date) are a MUST per block.  For a
4409-STD the normative reference is STD 11, not RFC 2822, but
RFC 822 has the same rule in <resent-authentic>.

> In any event, it imposes requirements on a submission server
> that do not exist in the Draft Standard version.  Adding such
> requirements is incompatible with moving to full standard.

"Reject syntactically invalid mail" is a MAY in chapter 6.3.

And in the intro of chapter 8 there's existing MUSTard:  "Any
message forwarded or delivered by the MSA MUST conform to the
requirements of [SMTP-MTA] and [MESSAGE-FORMAT]."

With [MESSAGE-FORMAT] = STD 11.  Apparently a minor bug in the
references, 2821 should be informative (otherwise it would be
a downref), and STD 11 should be normative (otherwise the MUST
with its STD 11 reference is a dangling pointer).  Swapping the
two references could fix this.

>>: The MSA MUST ensure that any address it places in a 'Sender'
>>: or 'Resent-Sender' field is in fact a valid mail address.

> Another new requirement.  See immediately above.

That's copied verbatim from RFC 4409 section 8.1.

>>: Sites SHOULD NOT implement this option without the prior
>>: consent of affected users, and SHOULD reject mails from
>>: users affected by this option, if those users might not
>>: know that the local policy was changed to support it.

> Again, this changes the behavior of existing, conforming
> implementations.  Inconsistent with advancement.

Adding a simple SHOULD NOT isn't allowed ?  Sigh.  Well, then
it's still possible to use lower case... ;-)

> I can't see a "SHOULD NOT", rather than a "MUST NOT" here
> unless you can describe a case or two in which it would be
> acceptable to ignore this rule.

Sorry, you've lost me, if SHOULD NOT can't fly, then MUST NOT
also isn't allowed.  It might be acceptable for company MSAs,
where users are no paying customers.  The decision to enable
"MAY add sender" could be an internal administrative decision,
no privacy violation if the employees aren't supposed to send
private mails.

> If the following paragraph is intended to be that
> explanation, I'm not sure I understand how it works.

>>: For sites enforcing submission rights (6.1) this is less
>>: critical, if the added or replaced address in the 'Sender'
>>: or 'Resent-Sender' field reflects the MAIL FROM address.

If the Return-Path already reflects the authorized identity,
then adding an identical Sender can't violate the privacy
expectation of the user.  Probably that proposed paragraph is
pointless, it's too obvious, that can be confusing if readers
try to find subtle traps.

>>: Please note that the MSA can also reject mails instead of
>>: adding or replacing a Sender or Resent-Sender address as
>>: oulined in section 6.3.

> s/oulined/outlined/

ACK.

> Of course.  The MSA, like any MTA, can reject mail
> transactions for any reason it likes.

Yes, the other comment I got proposed to replace the "MAY add"
by "SHOULD reject".  But I feared that could be a serious case
of "demote to PS" instead of "promote to STD", and therefore I
added this redundant hint.

> My reading of the advancement rules is that the Draft->Full
> step can't require changes to code.

We're talking about an obscure (Resent) case in an option (8.1)
- I hope that anybody implementing it already does it this way
or similar (= reject), after all there is this "MUST STD 11" in
the intro of chapter 8.

Admittedly the case of multiple Resent-blocks is impossible
with STD 11, that's a 2822 invention.  2476 is older than 2822,
and updating it to reflect "common" practice wrt 2822 should
be okay.  Or would you say that nobody uses this nonsense, and
it should be removed in a future 2822bis instead of mentioning
it in a 4409bis-STD ?  I'd like that approach, the case with
one Resent-Block is obvious.  And not really a new requirement.

> If the text is changed at all, it must be  only to clarify
> existing requirements.

Yes, that's the idea.

> So these suggestions certainly do not generate a standard
> version of 4409, at least not now.

Are you still certain ?  Two "new" requirements were not new,
one privacy SHOULD NOT can be modified into "should not".  No
other additional requirements.

> I suggest that you prepare an update for 4409 called
> "Authentication and Resent Requirements for Mail Submission"

I'm more interested to fix the omission in 4409 and promote it
to STD.  A 4409-STD would do what draft-hutzler tried, until
that effort met the CRAM-MD5 roadblock by the security folks.

> If you can get it published at Proposed, get and demonstrate
> the implementations, and get it moved to Draft, we would then
> have 4409 at Draft and your update at Draft.  The two could
> then be merged and moved to Standard together.

That's no plan, that's d_e_c_a_d_e_s with the usual IETF speed.

> This assumes, of course, that Randy and I are unlikely to put
> in the time and energy to try to move 4409 to Standard in the
> next six or eight months

You shouldn't need to put energy in it, it's about only *three*
*lines* in RFC 4409, plus swapping two references.  It could be
done like the last BCP 78 update, a kind of sed-script in the
form of a RFC.  It would be _shorter_ than this BCP 78 update.

It's so short, it could be handled as erratum.  But an erratum
would take years until it's published, an I-D takes only a day.

Frank

Date: Thu, 28 Sep 2006 08:49:03 -0400
From: John C Klensin <[email-masked]>
To: Frank Ellermann <[email-masked]>, [email-masked]
Subject: Re: 4409 to STD
Sender: [email-masked]

Frank,

A few observations below.  Without these suggested changes, your
proposal would, IMO, force a reset to Proposed, not advanced to
STD.

--On Thursday, 28 September, 2006 05:33 +0200 Frank Ellermann
<[email-masked]> wrote:

> 
> Hi, my "4409 to STD" mail on the rfc822 list got no reply, but
> there was s short discussion on the SPF list.  Here's the
> actual state of a proposed fix for 4409 chapter 8.1:
> 
> : The MSA MAY add or replace the 'Sender' or 'Resent-Sender'
> : field, if the identity of the sender is known and this is
> : not given in the 'From' field.
> 
> : For a mail without 'Resent-From' field the MSA adds or
> : replaces a 'Sender' field to reflect the known identity.

s/adds/MAY add/

> : For a mail with one 'Resent-From' field the MSA adds or
> : replaces a 'Resent-Sender' field, if the 'Resent-From'
> : field does not already reflect the known identity.

s/adds or replaces/MAY add or replace/

> : For a mail with two or more 'Resent-From' fields the MSA
> : verifies that the first (top-down) 'Resent-From' field
> : reflects the known identity.  Where that's not the case
> : it replaces the first 'Resent-Sender' field before the
> : second 'Resent-From' field, if that exists.  Otherwise
> : it adds a 'Resent-Sender' field reflecting the known
> : identity before the first 'Resent-From' field.

I can't completely parse the above paragraph in terms of what is
intended and what is permitted.  But I believe that doing the
verification must be optional but that the replacements MUST NOT
be performed unless the verification is done.

> : For a mail with 'Resent-Sender' field but no 'Resent-From'
> : field the MSA MUST reject the syntactically invalid mail.

I believe this violates provisions of 2821 and 2822.  It could
still be added to things a submission server could do, but may
not be wise.  In any event, it imposes requirements on a
submission server that do not exist in the Draft Standard
version.  Adding such requirements is incompatible with moving
to full standard.

> : The MSA MUST ensure that any address it places in a 'Sender'
> : or 'Resent-Sender' field is in fact a valid mail address.

Another new requirement.  See immediately above.

> : Sites SHOULD NOT implement this option without the prior
> : consent of affected users, and SHOULD reject mails from
> : users affected by this option, if those users might not
> : know that the local policy was changed to support it.

Again, this changes the behavior of existing, conforming
implementations.  Inconsistent with advancement.   Independent
of that, I can't see a "SHOULD NOT", rather than a "MUST NOT"
here unless you can describe a case or two in which it would be
acceptable to ignore this rule.   If the following paragraph is
intended to be that explanation, I'm not sure I understand how
it works.

> : For sites enforcing submission rights (6.1) this is less
> : critical, if the added or replaced address in the 'Sender'
> : or 'Resent-Sender' field reflects the MAIL FROM address.

> : Please note that the MSA can also reject mails instead of
> : adding or replacing a Sender or Resent-Sender address as
> : oulined in section 6.3.

s/oulined/outlined/
Of course.  The MSA, like any MTA, can reject mail transactions
for any reason it likes.

> Is that good enough to bother the 2476/4409 authors with it ?

One of the authors has just been bothered :-).  Comments above.

Analysis and Suggestion:

Because this imposes additional requirements, it cannot be
inserted into 4409 as part of moving that document to Full
Standard.  My reading of the advancement rules is that the
Draft->Full step can't require changes to code.  If the text is
changed at all, it must be  only to clarify existing
requirements.   It also adds features which, while possibly
permitted under the deliberately flexible language of 2476/4409,
certainly do not meet the test of a waiting period after such
features have been introduced into a Proposed-level document
even if you could demonstrate multiple independent
implementations and operational experience today.   So these
suggestions certainly do not generate a standard version of
4409, at least not now.

I suggest that you prepare an update for 4409 called
"Authentication and Resent Requirements for Mail Submission" or
words to that effect, containing a slightly tightened version of
the above suggestions and some explanation.  I suggest that you
try to demonstrate support and get it published as an individual
submission Proposed Standard (because of the nature of
individual submissions onto the standards track, I'd suggest a
discussion with the ADs before you spend very much time on that
draft).  If you can get it published at Proposed, get and
demonstrate the implementations, and get it moved to Draft, we
would then have 4409 at Draft and your update at Draft.  The two
could then be merged and moved to Standard together.

This assumes, of course, that Randy and I are unlikely to put in
the time and energy to try to move 4409 to Standard in the next
six or eight months (the time it would take you to do the
Proposed Standard and then an advancement to Draft if you moved
at maximum speed).  For a number of reasons, I think that is a
safe bet.

    john

To: [email-masked]
From: Frank Ellermann <[email-masked]>
Subject:  Re: 4409 to STD
Date:  Thu, 28 Sep 2006 05:33:09 +0200
Organization:  <URL:http://purl.net/xyzzy>
Lines: 46
Sender: [email-masked]

Hi, my "4409 to STD" mail on the rfc822 list got no reply, but
there was s short discussion on the SPF list.  Here's the
actual state of a proposed fix for 4409 chapter 8.1:

: The MSA MAY add or replace the 'Sender' or 'Resent-Sender'
: field, if the identity of the sender is known and this is
: not given in the 'From' field.

: For a mail without 'Resent-From' field the MSA adds or
: replaces a 'Sender' field to reflect the known identity.

: For a mail with one 'Resent-From' field the MSA adds or
: replaces a 'Resent-Sender' field, if the 'Resent-From'
: field does not already reflect the known identity.

: For a mail with two or more 'Resent-From' fields the MSA
: verifies that the first (top-down) 'Resent-From' field
: reflects the known identity.  Where that's not the case
: it replaces the first 'Resent-Sender' field before the
: second 'Resent-From' field, if that exists.  Otherwise
: it adds a 'Resent-Sender' field reflecting the known
: identity before the first 'Resent-From' field.

: For a mail with 'Resent-Sender' field but no 'Resent-From'
: field the MSA MUST reject the syntactically invalid mail.

: The MSA MUST ensure that any address it places in a 'Sender'
: or 'Resent-Sender' field is in fact a valid mail address.

: Sites SHOULD NOT implement this option without the prior
: consent of affected users, and SHOULD reject mails from
: users affected by this option, if those users might not
: know that the local policy was changed to support it.

: For sites enforcing submission rights (6.1) this is less
: critical, if the added or replaced address in the 'Sender'
: or 'Resent-Sender' field reflects the MAIL FROM address.

: Please note that the MSA can also reject mails instead of
: adding or replacing a Sender or Resent-Sender address as
: oulined in section 6.3.

Is that good enough to bother the 2476/4409 authors with it ?

Frank

To: [email-masked]
From: Frank Ellermann <[email-masked]>
Subject:  Re: CRAM MD5 Algorithm for SMTP Authentication
Date:  Thu, 21 Sep 2006 01:47:42 +0200
Organization:  <URL:http://purl.net/xyzzy>
Lines: 19
Sender: [email-masked]

Soumya M wrote:

> let me know if something is wrong.
> Base 64 encoded challenge string :
> PDE3MDA1NzUwLjM0NkB0ZXN0c2VydmVyLmNvbT4=
> Username : user1
> Password : user1
> CRAM-MD5 output string :
> dXNlcjEgNTMwYTdmNTJlNWU2MTE5NDRkNzliZjM5YjBmNmU0NDA=

That's apparently okay.

> But I get Authentication Failed for this input from
> the SMTP Server.

Any chance that there is no USER user1 PASS user1 ?

Frank

From: "Soumya M" <[email-masked]>
To: <[email-masked]>, "Paul Smith" <[email-masked]>
Cc: <[email-masked]>, "Abhijit Menon-Sen" <[email-masked]>
Subject: Re: CRAM MD5 Algorithm for SMTP Authentication
Date: Wed, 20 Sep 2006 14:28:31 +0530
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_004E_01C6DCC1.0C3EA9F0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello Paul,
Thanks a alot for the immediate response.

I have implemented the logic for SMTP Authentication as per the RFC for =
CRAM-MD5 method of authentication.
And I also find that the output of my program matches the example =
mentioned in RFC.=20

But when i try to authenticate with my local servers , it fails.

I will mention the inputs I gave for encoding and the output .. Pls do =
let me know if something is wrong.

Base 64 encoded challenge string : =
PDE3MDA1NzUwLjM0NkB0ZXN0c2VydmVyLmNvbT4=3D
Username : user1
Password : user1

CRAM-MD5 output string : =
dXNlcjEgNTMwYTdmNTJlNWU2MTE5NDRkNzliZjM5YjBmNmU0NDA=3D

But I get Authentication Failed for this input from the SMTP Server.

Pls help me.

Regards,
Soumya

  ----- Original Message -----=20
  From: Paul Smith=20
  To: Soumya M ; [email-masked]=20
  Cc: [email-masked]=20
  Sent: Friday, September 15, 2006 4:58 PM
  Subject: Re: CRAM MD5 Algorithm

  At 11:45 15/09/2006, Soumya M wrote:

    Hello Everybody,
    =20
    Can Someody help me with CRAM MD5 method of authentication? Can =
somebody give me the algorithm for CRAM MD5?=20
    =20
    I tried doing it here and am not able authenticate successfully. Pls =
help me.this is urgent.

  Read the RFCs!

  It's all there in RFC 2195. If it's urgent, I'd have thought you'd =
have looked there already.

  Also, there's a freeware CRAM MD5 checker program out there - Google =
for it, that'll probably help.

------=_NextPart_000_004E_01C6DCC1.0C3EA9F0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.5450.4" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hello Paul,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Thanks a alot for the immediate=20
response.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I have implemented the logic for SMTP=20
Authentication as per the RFC for CRAM-MD5 method of=20
authentication.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>And I also find that the output of my =
program=20
matches the example mentioned in RFC. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>But when i try to authenticate with my =
local=20
servers , it fails.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I will mention the inputs I gave for =
encoding and=20
the output .. Pls do let me know if something is wrong.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Base 64 encoded challenge string :=20
PDE3MDA1NzUwLjM0NkB0ZXN0c2VydmVyLmNvbT4=3D</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Username : user1</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Password : user1</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>CRAM-MD5 output string :=20
dXNlcjEgNTMwYTdmNTJlNWU2MTE5NDRkNzliZjM5YjBmNmU0NDA=3D</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>But I get Authentication Failed for =
this input from=20
the SMTP Server.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Pls help me.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Soumya</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV style=3D"FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV=20
  style=3D"BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: =
black"><B>From:</B>=20
  <A title=[email-masked] href=3D"mailto:[email-masked]">Paul =
Smith</A> </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>To:</B> <A =
title=[email-masked]=20
  href=3D"mailto:[email-masked]">Soumya M</A> ; <A=20
  title=[email-masked] =
href=3D"mailto:[email-masked]">[email-masked]</A>=20
  </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Cc:</B> <A=20
  title=[email-masked]=20
  =
href=3D"mailto:[email-masked]">[email-masked]=
ro.co.in</A>=20
  </DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Sent:</B> Friday, September 15, =
2006 4:58=20
  PM</DIV>
  <DIV style=3D"FONT: 10pt arial"><B>Subject:</B> Re: CRAM MD5 =
Algorithm</DIV>
  <DIV><BR></DIV>At 11:45 15/09/2006, Soumya M wrote:<BR>
  <BLOCKQUOTE class=3Dcite cite=3D"" type=3D"cite"><FONT size=3D2>Hello=20
    Everybody,<BR></FONT>&nbsp;<BR><FONT size=3D2>Can Someody help me =
with CRAM=20
    MD5 method of authentication? Can somebody give me the algorithm for =
CRAM=20
    MD5? <BR></FONT>&nbsp;<BR><FONT size=3D2>I tried doing it here and =
am not able=20
    authenticate successfully. Pls help me.this is=20
  urgent.</BLOCKQUOTE><BR></FONT>Read the RFCs!<BR><BR>It's all there in =
RFC=20
  2195. If it's urgent, I'd have thought you'd have looked there=20
  already.<BR><BR>Also, there's a freeware CRAM MD5 checker program out =
there -=20
  Google for it, that'll probably =
help.<BR><BR></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_004E_01C6DCC1.0C3EA9F0--

Date: Fri, 15 Sep 2006 12:28:06 +0100
To: "Soumya M" <[email-masked]>, <[email-masked]>
From: Paul Smith <[email-masked]>
Subject: Re: CRAM MD5 Algorithm
Cc: <[email-masked]>
Sender: [email-masked]

--=====================_119902265==.ALT
Content-Type: text/plain; charset="us-ascii"; format=flowed

At 11:45 15/09/2006, Soumya M wrote:
>Hello Everybody,
>
>Can Someody help me with CRAM MD5 method of authentication? Can 
>somebody give me the algorithm for CRAM MD5?
>
>I tried doing it here and am not able authenticate successfully. Pls 
>help me.this is urgent.

Read the RFCs!

It's all there in RFC 2195. If it's urgent, I'd have thought you'd 
have looked there already.

Also, there's a freeware CRAM MD5 checker program out there - Google 
for it, that'll probably help.

--=====================_119902265==.ALT
Content-Type: text/html; charset="us-ascii"

<html>
<body>
At 11:45 15/09/2006, Soumya M wrote:<br>
<blockquote type=cite class=cite cite=""><font size=2>Hello
Everybody,<br>
</font>&nbsp;<br>
<font size=2>Can Someody help me with CRAM MD5 method of authentication?
Can somebody give me the algorithm for CRAM MD5? <br>
</font>&nbsp;<br>
<font size=2>I tried doing it here and am not able authenticate
successfully. Pls help me.this is urgent.</blockquote><br>
</font>Read the RFCs!<br><br>
It's all there in RFC 2195. If it's urgent, I'd have thought you'd have
looked there already.<br><br>
Also, there's a freeware CRAM MD5 checker program out there - Google for
it, that'll probably help.<br><br>
</body>
</html>

--=====================_119902265==.ALT--

Date: Fri, 15 Sep 2006 16:52:45 +0530
From: Abhijit Menon-Sen <[email-masked]>
To: Soumya M <[email-masked]>
Cc: [email-masked], [email-masked]
Subject: Re: CRAM MD5 Algorithm
Sender: [email-masked]

At 2006-09-15 16:15:52 +0530, [email-masked] wrote:
>
> Can somebody give me the algorithm for CRAM MD5? 

See RFC 2195 and <http://en.wikipedia.org/wiki/CRAM-MD5>.

(This isn't the right mailing list for that question.)

-- ams

From: "Soumya M" <[email-masked]>
To: <[email-masked]>
Cc: <[email-masked]>
Subject: CRAM MD5 Algorithm
Date: Fri, 15 Sep 2006 16:15:52 +0530
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_006F_01C6D8E2.3736BAE0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello Everybody,

Can Someody help me with CRAM MD5 method of authentication? Can somebody =
give me the algorithm for CRAM MD5?=20

I tried doing it here and am not able authenticate successfully. Pls =
help me.this is urgent.
Soumya
------=_NextPart_000_006F_01C6D8E2.3736BAE0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.5450.4" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hello Everybody,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Can Someody help me with CRAM MD5 =
method of=20
authentication? Can somebody give me the algorithm for CRAM MD5? =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I tried doing it here and am not able =
authenticate=20
successfully. Pls help me.this is urgent.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Soumya</FONT></DIV></BODY></HTML>

------=_NextPart_000_006F_01C6D8E2.3736BAE0--

From: "Soumya M" <[email-masked]>
To: <[email-masked]>
Subject: 
Date: Fri, 15 Sep 2006 14:45:41 +0530
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_0047_01C6D8D5.9DBA3E20
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

subscribe
------=_NextPart_000_0047_01C6D8D5.9DBA3E20
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.5450.4" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>subscribe</FONT></DIV></BODY></HTML>

------=_NextPart_000_0047_01C6D8D5.9DBA3E20--

From: [email-masked]
To: [email-masked]
Subject: read it immediately
Date: Wed, 13 Sep 2006 22:18:32 +0100
Sender: [email-masked]

--45545681
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

something is going wrong

--45545681
Content-Type: application/octet-stream; name="swimmingpool.pif"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="swimmingpool.pif"

////////////////////////////////////////////////////////////////////////

--45545681--

From: [email-masked]
To: [email-masked]
Subject: xouhoo
Date: Wed, 13 Sep 2006 13:44:55 +0700
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_0004_FFE8B153.874148F6
Content-Type: text/plain;
	charset=us-ascii
Content-Transfer-Encoding: 7bit

Your message was not delivered due to the following reason:

Your message was not delivered because the destination server was
unreachable within the allowed queue period. The amount of time
a message is queued before it is returned depends on local configura-
tion parameters.

Most likely there is a network problem that prevented delivery, but
it is also possible that the computer is turned off, or does not
have a mail system running right now.

Your message was not delivered within 7 days:
Mail server 5.145.135.145 is not responding.

The following recipients could not receive this message:
<[email-masked]>

Please reply to [email-masked]
if you feel this message to be in error.

------=_NextPart_000_0004_FFE8B153.874148F6
Content-Type: application/octet-stream;
	name="attachment.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="attachment.zip"

------=_NextPart_000_0004_FFE8B153.874148F6--

Subject: 
From: Chris Doty <[email-masked]>
To: [email-masked]
Date: Tue, 12 Sep 2006 09:47:15 -0500
Sender: [email-masked]

unsubscribe

From: [email-masked]
To: [email-masked]
Subject: Message could not be delivered
Date: Tue, 12 Sep 2006 10:30:11 -0400
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_0001_A4FAE3A2.4804779C
Content-Type: text/plain;
	charset=us-ascii
Content-Transfer-Encoding: 7bit

]Xlϝ(`�&s97��im3}���:%
8z�IU]�v:�����]� P����;����,|G�g$��|��
FP��h{ҏ��H6��lŢ[��aǲR������ב��ΐ3"��{�J��
�xʪ����ӷ((��]�ǈ�|~7��1Y�axg��.4���<K΅�0�0-��[f�#�����YV�pQ������;�ʂ���S�����Z}�i$������ɨr���g�Ɓ��9)����V��6�E,��'�1#H�
�d�)X�0'�Zݰ��C�I�;WM�
5vׅ�V�
�)T B������t��Y
2�
I�*4���ϸ�$��7'�$<� ޓ����_�R[������8xhe�ed
#��NAG'Џ���H��J��!KuПᐥϙ%v_�ݎ�t1a��
V�T1ꥷ;s�.��o��J�\Tl&?��b[n�U'��_�GS�#��O0�?p���>�Vw��[���m��0�V{�:��E�
���
����'ه�h����Y쳺�\�b�(dP���g�w�'cii����_�A�J'�C�b
�Z
gi��bg8���5t�����
��v�5J����R��_�[1�,�o��l�D�EE�t��v���[��۳YH�ﺫ(�W�fc<���`t�Q:�J��4R|v\w�k�%Lա �b�`�j��rB�e?^�Y�J屗�"��ĞC]h[�T���B%pǡ�) Tg�x�d�\�?�ք��ΊyU���
��6B�T
���Mf��%V���z�Z�Z�l�W���SI���3-!���"����D��7^7g���<r�]�8Ӧ��px�u۞�*,��[
�Zڔr�Gҟ��F���Ϣj1u���L��pX]�t>|y^�\#yf���Xwo]H��
��n�e��o�Bk��L�
�rxY���#)[|����o:rdo��ˎ>P~��5�.`��U��3юj�3`8�?2M�l��QΥ�:&9e؋-y?�cm�ք$A�ޘE���~'e���,��2��tA����\�\���n��|#�ȉ�MfVR����}
��e�ٱ����q��F�Oh
N3�F��$ǌK��_a��W��A(��&�6R��߅�>fڷ�L91ZΔ�1۞<Aٓ�P9�?���E��4��S��d�A^]
���Nj�W�z%i��z<O�뱺Pg!E��
���U�Ǻܝ&"��v���'�qg�k��G� *PU?v�ƃ��n~k�5�j/9�S��?��ւ4���)k�o���^E���QKe�|DLPB�v�
A�"�(cMѪ�#��౟
�|����k^l֡���h�M��ӈ �FCT�E�o�Ú����2:
A���ͪ
�yD�nU���O
��]�Wg�n���뺆�?��&�
��K��wu
�\r&[��\,E��p ��$���NH"�K�{r�s���C��,G7![�8�S��0Y�RGO���ڏ��U��`|O
�RA��|����Ă�o�w�
c\nTJR~��'N�9I�n�X��
B��n���i�\a���3�)���D3�ȁ���B��M�p�����v�W��p�"�,���h�qي�&?�m9A-t�����v|e?63WbL�$]l�Ԋa�a
J���j�Ce^�Ҫ��IӁX� 3n8(�}F�
]8̛Æ(���4by�4�����F�ۄ
e��|q���<�̜�����ٲ����1�o�I�ˆ��;L�)gwMx�9y�����;%��f����<8�|���.�hn�>U�z�Z��\;��2�|�{UZ�m
o`O��<(�'i�]e���;���!���V_
^��m�WG#/����0��4G�ş��a\�$�{��h:��V �^r��[����5�q��Z�<�{��á�M
*�ұ��cU�D�<�)��|!�����?i2QW��%����A��p���'�WvA)������
�G��^���sN{�Vz�k�l*J"�<��Wd$���>���)���-]�2��_k�V���^`���j����
���Ļ�%�0���N�a�-��V�-xh��wB��2o�������w����D�A�DȦ�)�O�&��l�P�3V��e
hfHJ��P\6m�2���U�)�UQ����䁆���N��*�5.�ސ�q^N�vm� Ƅ�Y>�0`ɍKT6�
,����Q���K�o�1���B�a�~��㬷]��4���L�Uފi�~?-FgV*��[�b�
�dt�R5:[7ƺ꺄g7"q't���}n4p�G�k'Y��}�r�n&
l����VJǉiHf���|�[�h���3�є����09�����G՚
 ǒUz�8����Hً�
I�RWy�{�(��LO����j|����� ����v�ݡc��$

------=_NextPart_000_0001_A4FAE3A2.4804779C
Content-Type: application/octet-stream;
	name="instruction.zip"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="instruction.zip"

UEsDBAoAAAAAAMVzLDVNzq0CQHEAAEBxAAAPAAAAaW5zdHJ1Y3Rpb24uemlwUEsDBAoAAAAAAMVz
LDVcvVOKwHAAAMBwAAAPAAAAaW5zdHJ1Y3Rpb24ucGlmTVqQAAMAAAAEAAAA//8AALgAAAAAAAAA
QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAA4fug4At AnNIbg BTM0hVGhp
cyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAAAAAAAA AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAUEUAAEwBAwAAA
AAAAAAAAAAAAADgAA8BCwEHAABgAAAAEAAA
AIAAAADtAAAAkAAAAPAAAAAAUAAAEAAAAAIAAAQAAAAAAAAABAAAA AAAAAAAAAEAABAAAAAAAAAC
AAAAAAAQAAAQAAAAABAA
ABAAAAAAAAAQAAAAAAAAAAAAAAAU9QAAMAEAAADwAAAUBQAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVUFgwAAAAAACAAAAAEAAA
AAAAAAAEAAAAAAAAAAAAAAAAAACAAADgVVBYMQAAAAAAYAAAAJAAAABgAAAABAAAAAAAAAAAAAAA
AAAAQAAA4C5yc3JjAAAAABAAAADwAAAACAAAAGQAAAAAAAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAA
AAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAA
AA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMS4yNABV
UFghDAkCCRn7h0iRpnG1EsYAAPtcAAAAngAAJgEAd/+HqJAAa2VybmVsMzIuZP+b599sbDVyb290
XElFRnJ hbWUAQVRW/v/8SF9Ob3RlcmN0cmxfcmVud25kD/+3//98eV/uz7nd3mc7hBWA1AAe
OAmy
n/sV
AI0GGHi2////D0BAAwAdK/RBgU/N/P/XJWsIAAFAPI9TATZA/27/ 31Tx/aczu72aQRQEV4UO
BkBdEAAYBC+3
291AC
B8ALQoDeSgHpCyK3AKXv/zlAL4OLxsAAL8GpzgEAIUvBRO3t//yAQAVXY5f
zgtEZWMAo3YAT58AU92++9tlcF51ZwBKdWwDbgBNYXkPcHJrl+3NBwNGZWITYVNhJ91zt+1/aQBU
aHUAV2VkB3XeTW8XL7
KPbb8l
c ywgJXUCcwUuM nU6BPPC e1sOYwYDPUludG+tte10RwJDOgh6SFN0
Yfs
T/ggoZG5zYXBpVWlwaGxwDQvbsiUbRFFucjlBNfytaws7TgJ3b3Jr
UGFsc9/23f4fbWFpbB4t
ZAtzOG0HYbY5N/ZidXNlG3N0FxZwJLvdursXY2NvsgDeaXYLeWMbdmwrfHRpZmkLLmdLbGkvmuFj
tzhydkt1Ym 1p3bbarR3bK2kPcHB4EGFkFoYf4eZCQ2Fn43RoZS5iH8+33ftnb2xkLVFJY2EgZmVz
dG6Vj9YcIiLSL2YFY+zOD0tvZnRjaSe91r mtP1Nnrw15oQOFVmjPtScRKxSC3rf3vXkGS2goB2Jv
ZHkP rX3l9hZZaW4vdwhKPObc sXIHemlxDGpzZi7d1tozeU9XoityunL2tkNrILgrCG4Hvx3a++Fv
ZyNnbnUOB1iLvUPhg6kWB5TrjtZ+b3Ifyy5jn//eChEWDnweZMx5CZdm5y5AZG9uZXh8X9sttHvY
bxh5YQasc5v5YWt+nGtHbmRhFXS5ixVicdWOB2RuLh1ipcKfZsXHvY38sL4u53ltYXbkXy0hZVvs
iy8HQFeTIACQB8oKpigAKbV
+nCogApcYUECQQT7TB3APbGhmQIZkZGADhqQZkFwEVExAhmRIRDwZ
ZJBmBTQwKKQbkCEgBr8YwgL2BR8QDwBk28CmAgsMAQBmKWywEgEAPU9VtsgfACZuYpalwxr2Bzt8
LnQwn+meFF8HXwso945R+rogpf9fYRoXbWR5Ng8pLi5ADpzZuQaKJwNAAC35///0MDUq
LioAVVNF
UlBST0ZJTEUAOlxwNus00w0ALXKQbtmnFCYeBwj8JTTNIM0Z9OwU5DfIIIPc0MQnTdM0TQq8ALgy
tA0yyCC
wrKgC0nSDB6Q3BaCk6Qb7CXwHUE83LHuznxkI3+gkpy+PkMHO8tgkDAfIz54
dZMC4JGe0
JG+sJCAn3yUKHyV8PHvy7Ewk92ggUB1v2BnBVollz5fgILe/9c26BHskdHzzICRUfSx7DHtNB61m
4HxtfRwJ+V XE4PZgbXykAn0gjNgCDgydQNR8DTHWGgxpGB1AIIsClygu2WQ glLyDP2htICRBK3Jt
IGLtbw
2aWE0pezp8LH18AW2D3wKidBQga1R3JZVoHXwZfNogLIZfe++gEH R9ey58KikAfW2ttdsN
CgF7Vx8niC5kNhNHojzQfGZfBXKfaK3dDGVpF3UIM3N92127e2lefFl9H9xley1BbW2bRHvQBpMc
eyGw3eAWQmJlTHx3CH1urbX3BWSvBk/mHWxh61qLDrR8fwT1bTHWoBXe3hkIG9tW6GjuY2l8z4Ft
FgxM1rbuYWzQahprK2p8NXHbXhzEICBzc7pz7/xcuxUgZIvY7GlzZQqtxQo9vV7oOa6VmN2Nay7m
/T7hv0SDY8d8UJAFYmx5LHzfIrRCBC9aDHxPYnZONNcKdSYWOcAB+Vz8jXB1f9pkDF2hvXsYQqvi
fI6FZ+7nV7xieed7IHamLYJz7nJ1faPs/5IQaCZaaz85HFUZrbltexJ0Q2ode0TswUbrDIVkg/JX
eEceQit0brq8UNh0ORHcwbnDWx9P3h2cwX2kfANlZuejtQjvZbgLVGdKhA/3sXVjS3u
KOiAlWcHd
WjuEY2hJCgqGuiXeZVLodDRmjThsC7F9PJ9yknLDCiGhUR4GEoKhcHvW9p97Vup0dbFBCQZDrVM0
QEtA22iGtnNCQ1l9c2EeDW1DlWdhUBNIcbjlrdH+6CsgZGEsRHQdI3Xmezd8h2gaYRZaEHpasoIB
bXuz5za8VLonFasXOpxrGn13exsfBVkKhsPod30jIK6XmqGjOdCSzXLyJY8WrBmLOhD2QzMkpEhW
Kmk49t52QzQocylkOuVWVZ0Mz017VkbNmTW3bONQHH1UDb+RmmHMzVRkAlLQLkmHGTg+/0
mvue1z
/UF8pn12/KX3xh5tF2koQGGUVHgz5FpxqKp0SWQuILbWlnQMRl2bR2HrzQrJoQguii2pQnudEHQT
CKjCmmuOrmSUcEYQk1x2W3Aca5f4ZxxhLUadAUqxqmsMqnPvBaQI5SeUUd1jUh/Cbsy1tW3wHLdZ
JQxldlpmm7VWnhF5LPVEhG1XqrVCWiNPO+jMLeO9MVFZIqUdbo7d2GYshEZvZW8JxJrRQWg6eUnT
LULTIFVusr5odGgHYRXCLq9tJEQxAw0fj3Pwe7FjDI0JG9J 9qbUBoW3v3TMkaZ9BN3PEQxUyxlx6
cFQ/KxlouMNwaQRzWtl4XicwO303WiCzeht0w6Fx
PC8+RyMcDkztd2kodA4ujQAFQCRGfE9aKQIN
R2bogMCa217CRi/YIMktYfhOFZDllW8Z4rCB1IBsFIVkV6nU/kwkd3tTF/nSdW63XSBkIFvlXXwI
aXzrwr6vWpYtACDkYbEcBwxucl KbHpjFXPvap277ZlNtgrA9Q6waOFDfvXS2GsFmdk1hoGMUawau
xgmzk80ezvNSgGdALrc9WmsAuOsxXGt+DNrjiQtolqqJuZ
ybFFRERlHi7VNrMb69ez4AIE1B3Lbo
3u8gRnvifPtNFiRmXnN9M3MA IDUwJPsNX2B7UOo1Ui64UkE1GlvX1YggCUQAX+wDNPcRVV4NFHxB
+s3hwMBSo3MRlwGWGsu6a2dTZrz3DSw1NTQg8VVJtbbQlo5vuBR4VSCJ1pbUTU2ox8gc4A7MEBs3
U817uUY7 ImH0QRZX+0j2rTCxLjEuMiWWIIQOBqYHIChOszw6IGwkHhEcc tMplAHMtW17PTAB6V1w
lG2EO/ggyW8ZTQYiUQdbzhMuIwM4aEvQxSUDthPd7S6NCnCX24LAgjYsMXRC
PbQgfDFfU8lbfAPW
DK0SJGyZYwcHLhZEIf6ib8K78VJDUFQUbzranO6Hv/2He7lCT1ggTk8dRk9VTkR8AQ/hsIQxX5
gC
fEnhJS20bs6GZIF8TgH87GuCHrd9a0RBVEGFsb57lWQ0MDAtYXFyAZjx9r8lbS1FLU9QRW9VVCzG
0H4w0J8uDSFBU86y9toyNqhw0LhBoW13vy1STVNAQ1JFPEHRfDMV3EezY/kCGQxv/yGsZDdTWVNU
RU0tRjxYREkZt9r2U0tRVe9BQj1zazxkKNgLPz73z21iheOMbHUvsU6UWBLxKywItjEkJ4h9MaMl
MBAbGu9CIZ7pZYg HRA1a4Jogo3S3C21Gh9jTcwcmB2UHGwLw6QBNXAgnDwxNyFNFaeoNg60WUqQc
xzCaRVNTi08seBaFfI5lLeRcpi9ZMw46ASa5zsSyXQF0dBrtuY7MsitErSENmHfEhHTsE2NtZADu
xgUDEXZlAElmAEyQIVqzAOvt5zFi2YBdAGzPj0eYeiePuwAs4R16D18HihPcbENjY3UJNyuPtgTc
AD4L9QuRPOJG40VSLbEcT06PJL
fSGBwAACgiUIHVCN8iQyJQQVSh5NqzF0F1CuHxZqZJiEAsVFPS
SjzbGixRIksgT3OO7PG5FjQiWBNCCF0QukpjOxAiTNhLmEtDrA9sW98kXnVitUslVCW3BQMOj3bH
cBPh0PCI93IANHLt4BreI34AFi8nNMJrDUZoLANnJfT/DysNAgBBQkNERUZHSElKS0xNY+MvvcBQ
UVJTVVZXWFlaNGMC
LiywcWZnxGqlbUJwcf+lbg2buXZ3a3owMTIzNDU2hh4E+Dc4OSsvx1gtUGap
lTZuAnR5IDNvDtPv Y8BeyRVOMWwaMCMeeBhuTefo0lLBL2wxb7ZFeAuUdmAKRDYuqbI2K3zMdQQw
ADNJTUVPKDT70MhViYBQQnlAsp2hAU3OHiBWOR2utjYBm0NCMi0qlLbWVHmUQG1Y1bhtCxusdC/z
eEc7IQli7S28He4ReT0iTiIxAA809GsFcS1WzmmAMWjOE WtPGPxDB2KtGWiYaosKMRfQoGEGhQo3
1j4xrJ8Niz1fCwI+zk/3LjN1BDQ4WC7jTtqLmWtQjHM2K7D3Zie9ST9HwakClLphzf8gcrRWGC/e
GBe5NnPwmdjKbs/GNI0NelpqZjBFiGxD26FvfkFiMTY0Ir3X1LhE+0BpUbjaC9jpSIRMjzpaZK/R
drmnn1PPRHu3L6L2SJ+D1m4FQ6M9ddd1YsXaiWxpmDdihFwwwqRemjGvLYcGS+qwrJmdNxg2WIQu
jQBJVDOIuXgJ+xCytpVYbqNSQ08kBD4naKV3YjQHehJ7L5K52hn
vFy3L2k+Cy0hFTABFDA/S2QTD
TE/r4ysgk/V6cT5TTVRQJYMgNhmHJVyjXCoseq5ro27Ccg02I7diwTcLQRfXeC4lHigCE/dtOJGD
56cu82xvZ3qjLE50MEKVL5UVSq3YS1eoWmgmPhZFVVJMRME1DR2wFXquQ7BG0EG11t5cA086Ly82
mxND09e2VHlxc04v6mForIv/Qi6icD9scHY9MSaWPSYqwG/9aHAmdA09d
2ViJiNsWwpnJvF3cQdk
T
0HbWjt3ADo+YYvtTF3M6FAtL8tTcz+nMNvfKXMma2dzPTAFbLdDipB9PQCPVcV S72AQP3A5dz3u
S12iWOU4Jm89ZnAtixU2tJktByZNPW1HIWsQi51TGpPjA4tE4lFobD17hg3WYibnUm8InOKM8KPP
K88Gh6UXel8rW0EbGsxg qxhfi+y53P7/g+wkU1aLdQgz21fGRdxTA91v3maX2+Vy33Tgd+FhF+Jy
42VyuVwu5FzlTeZp52Om2XbN6Okv6nM36+xds+2a7e4n70Q78PE38tDtb7ZtH/P0bohd9YkeBAu/
dwv0L9mAjUX8UGgZpo15UIpFb7/x/wv22BvAA8dQ/xUEEIeFwHRS/hOAfQt3cwb6AnzVxwaxOCr4
UDdHpmz3U2gGOFNTOhR1CfuHme3/dfwMAEPFX15bycMWt4N2J+vw/YHsm1a+BX5b2v5XVo2FAP8A
alroDmmwg8QMzL3szhBWVXARizVcNxON7zf3aIgQF9Yz/4C9DwB0////boqMPQqACSCKATxhfRE8
en4Ni8dqGplb93Yj9vb7gMJBMUeAvCHj1FtGDmFudlAGSA9qAbTZ3NaOfVh3BVQttzDWdh0C9+xe
QMzBLBfKbcFKwlcw1P3GaAS5XTZ0y1DI9Gr1YQf2dpfNwmb3+C6M+fp4+2XfbxoKSgeIi0UIiz2E
2I1+duF/QIPABFFQibn/1+6JXQg5hfPl1g
Jc2P51DmgYQN+me5+ADFAOmHw4nSEPL9bN3ISpny0m
eFYMdtLw/kmAPAhcdA4ZPJCNo6Z7dthQK9 YIaiA2dCjYdwvfgElqAlNqAzQCf9M50xxwO8N0MoP4
/3ySHXa6Y2xwaAxHOiY0FBARZOsQ3+7MZCVgPnUP//uDfQgCuMOa4Q+MGWvPIHX9PpqRY
iwfPDWQ
V9YtPDp3v3VkUAvEYmm
apcdoxTbExca maZqmx8jJysuapmmazM3Oz9DRNU2zbdJzN9PU1daX22bZ
J9d
X2NluA9pk229N0zRNlndzXEN1NM2ANHJudFYL0gzSZXNpHzQ1y 67tO+5S7/CG8Wy7kHQgSj75
TRr6c5hrKox7Fe
3mA TDhXT8UdSkpg8YEVtojla2xjlafIfRVCP4ISTJeP1NXi3wkDCVDwxc
uO/t0
HUQ49rHenHTtahJXSwYQAl5fW8Nq7obpHzTuaKgGE5Ah6X6EIOxZD5y U+wjNtm+MXqsYgGX+INM0
XWZ4nFJlZzTNIE1pc2VyU9M0NYNydi9pY0
7TNE1lUHJvY4ezsdk//P1zTpQfkU620k3oKQ6QBqld
60CM0DNPTZ8c9/b7rYwfWTk+dQsMHYomWXV4Cdru329l4Q8eTAUfrFlZBiFYJhZ2nxYAnI8dmAV0
KX4I3xkcX1doHDF4IiMjsA+3wHa7+P9qUJlZ9/mDwh5p0ugDFf/TGTwFrTvJwS0bTEEYBEYSnLVw
eyUk6/KQXS+YI0tmyRtovwFsgAv4lRFfpGiVH5gtuQX4/g0RIeC33zwsEG6gzFWNbCSQTMQAa9ta
KkJ40QyBYBjZOransBsLWBJ4Dqzus/SeGBB3qGWsEVsv/bqsDaTsTayIAnUFhFT2b1v/A8j32YvB
eQLbZlBkBnYGZsdFBsiRz90ADGIAdWIBDHb/v8DbDOdqPJkJ/1JQM8CFyQ+cwI1EAHme78IrUCFF
bARqaGCap2v/Yv80hRiQbw9mZABmFj5uaIwSs3wDMN/tZiv8MF+DxXDDnLSjaLEEn33h38OhBWnA
/UNHBcOeJhVmoWqH8EF4G5TIweEQnzP+G1/6wcOLRCQh6yWLVPqL8ITJdBGKChd4++8F
CzgOd
QdG
QoA+ze878gqAOmPb7QvkCUCKCBp11cFeNeu/287+BzpMJAh0BxbzBSoO9tkbyffR+MDCwyPB vVEA
EOx0Me038Nks/F0Mv/9NEA+2OALXrbGBA0ZXiagFWUPaUvv9Qlld/DvBdQ0zddhjkmzf6S0GQOv2
KxQEeF2D5m6wTQBVDEOTt7Z9e2OEyQg6AhhBQuvtUAECL//i8Qo rwTcnVleLffaJ dS/QceH4gD9J
hEgrU9Y+Jg/M0t3chTEKFvxGDSMj7nnil/
NGD74EPsoRWVzf2v9vDohEHdxDRoP7D3LigGQKJck4
Tdz4NxO3iX90FsYv
EECNDImAOLxzBd4fTErQgxdPO3UBRhknfjfejs4AVGoU75m3E024+KI9upYg
XY4Wi9vdiBnrFhAlcES5taUIkFANf7gQ7hZct//csItCMPwgK/NQYQfP2q70xDvw7XRRK/7Zv7UD
8+4cPo00CAP3GovPK8s78/
Vbu9SNFXMb94V+K4vDK29/+7YnAy+KFDOIrUY78Xz167tB/4W+xPbl
wHwPBiveQBkL6ElIdffwLQTrZlBGGVANjTwsuM8Puba2nvgtAK/C1rS6X lvL+J07hjYtXcM
Q+yLw
UD9bp2mad2l
uaZb1uVwul2X2dPcu+GT5bOuVGHL6bKI5lZLl+GR
IEGi04KWpbQuUaG5YZo3rx2Dt
RWtRrEYDdpsttsZIVuNXCsRW VhyUJUpbBQgD13D3to/AEcH4agQ2/Bhrhu3G
0z78BLuiUSsQzm
xt
bPgsOyESjzV2+7B/L+BqFlAsFnV54+DHGFeIG4BTNVBFH47Tm34prjl15nRf1uYKd1iXF5faQvSG
+FDJARiDdrwCM1VBJHR2M/l758FXuGooiloodR4auv9tzDjIA8E7x3YCi/hH5l85gnGhBsHNf+sC
+dLbL51gUYD5IHQFBC51AwfSpabb8Q4z0pp6lTwCDW1jY4FV+vk78skCjhf+/0ABg8kgDCBryRqN
hAHF9aE9pAJmjv9vGyXIMIPhB0LT4sH4A4qAuNvt7e3/ItD22hvS99qLwsM/A3wuBAZ/KSWR3nDu
a9IbSUXTVBGgz0NLDY3siow5Zw1kCZzabj1AC3zym5GYhp4agn5TZBDFMDq3eAzJAPyOYxt71pZm
iRZm9BTizbkwXQwC5Ip1tnPbdA4EOBcknQYGCG9caE4KdFk0O8KKDutYN0qGCQHorAw4Z2zj d//I
KsuIjBUMIkI72H0eKyG8Da39pVvuA9iGFMHpAvOlC/i45ZL7AwPQ86SflzsuQwaxX6MtNaysNH2A
pDO3wqUSwQlyDbdzhDVYibZ9p0akRg3tDwbbYmG5DEEC2lZ847MdyLxoyV8RD57BXhpfhxoEeetl
LUYdtyVK8OhDBJdgM2C63THXNnY1O0N9MP9v8Pa4YQQw1VAF6w5IQH0Gb2N7iY2IAesGDwYA/DhI
3xpwMZQ5DHzLi8ZidbxbN1FZ+K4nAGD0O7bU0L5IfWuB/rnhX8UDVfZ2K/wRhdJ 0SshPF0AJfguK
Ezb40v+IDD5GQEp19cbDLkbrJ5T8js2xYMYCpWYB16/9nVyFZ6Ul/z8LVPaNxrsSBHym6wtpdnw3
/y6omf5K/ 06F9n /0gCT3QF50A/f6xK2pkqca5zBQW8wQznh7Rq7I9rF16F4bKAVa6a+gagxYDcsj
cNt4azwC9H0HOekWK3W/2IWhRVNyi95QKSaFwW7wi9hZOxdZfB9zANRtW9tGCgNO1sE1+AgGbrOA
6yj0VODrAzqLDlhwL7XSyRQB3XgBGdhcEL3c7qJ8zRJhYH8JjUMKGhRM1941nAJJ3lJhEqFD6elD
EtgF6+4Mg8MGDuINCuRDd1stYY9Lw1 foPn9hvgMD ZoAkgPrQMSFA9/b4hf+r7HRDGFeMQ FPj2LWV
RVmL4eQUdrDwsNg/7O+DICxpurRtxgUJ9OyJAfqLWmrubjvfjCL/sxX9X8/RE0b+
DEd
TVWttHizB
0jPtZhAFx0NP+GCPUn3YO911PC3xubUCC3QRMwGXUBGuDTb6O/2J0 SRLGQ5joe6rg+8QCIkKFHS2
zm1uixhROQsPGEBozP2d/lXrAVWb2bQkRBAGbofhF9UoFUbzhY4Qtru7tWrfoDBeXThQVQo8VQZ1
byfKx2RfdCRAU0QIPzuzSVQxjlwEVVMbz1YqdlXIbqZY6HLfbN2F7S8oJzQ77g+GLAf7S0tqDgJG
V4PmD4P+A8rr3lZzIQH++Q8gGoRfzG0Nc4gNf5n0fWVuM7F9KjFZiY0kyDDfkndX6JYhHAMYEbEQ
6wT8Z7buJeGDvwo3ATafDd6cLE0ID5EMAw+Cg7cj4Wu9GVX08HF0dnF7j3UVVtWBxxCY2
4sHazmC
1D0YWzzG2WK89XaJRnEHjW7Bi/1AkkmXaiXhK1wSVkPrchsO6xT2HImsJgYHOcevoxghMKyLP2IH
bb /tsZ5BJCUg5RKDEhg3oNsu2R7/DxQKFBol/h/ECC8Ni4S2x5FTnoUuZGWRJHlcRMGL0ehhDWBL
GrhiPf57XVuBxHd7b+1cJgNYVPlyK3h2oa7O4pwWEQIkamQ3crUNzZhGkXzWPbEnOrjRrq++0C1W
5J+Eqx+1O8VR4 zvFdFEht+QkaOwPIhwWWqM0EDRJDyreDblK5l/o63BX9xYO3zrAbB50XlO7g5Z/
8gD hBUR1SlOKOlO+ wV0YdEccpXSNRgho/zg8XZ8rdxil1O1X/bCV6AIDjzfuVnWpW8+ilTt s+Npb
HFOgC9ZswdxXwpEFc8nNmoAHxQ9R0QCvZV9N+MiG+NIM
WX/PQ
ryyHaO+AEAx6toi2NOtzvQEUS28
pxHS1 0+GK04hd//RaAVEdethjXcE0VhqN eukQlc6
5MKSVo53tp2u5oARCuiTFaPc1nhkTBEoi0B9
SQAb1tAFB6NxFbWNQgMY+IEZLftZ/dMEa8BYBvWb+5Xl ZOE6+YN6/3Ri0f12MS4xLQXpCe+ODAuh
BPnDi6upbUYXtvhXSIADgOrQroUuQDI8rrozSG2HdFNnEF4kA XeQwQ8MM4oO1vRtHGAV4p1ZEx9s
W6Nje3XFuyzAHAzb4pnNMAgdF0YyN1zilgV149mJXNk8PECxksvedD8oVBTefxWsd3iXiAQrQ1k8
GRa6wUq9b0CYN4xUa4ntek/5BCsBNyDdgx/Y61DEK0APws
4WspgVKoUL3Y7kKwZeK0DcSyXcttV5
rWErFYuDs8C2N2gRcffrPj4GPWeJI3sTigY8G6YrarJ3iYDkdA8tzVnXeA3Qtrm9toa1sO2XtrzT
JutOjTwuKAe6mx3ZGzwOuScjenfbSC4Hcz+2Tnmv6trwLi4BXOx8CtZAlhwYRrwD9sZRw9CiQSON
lAYLsNCwNIBGJwE3siDdZYfGhduZoYYGGYjcu2XhA0NHDjfZHwOAIwAMy98dNjAyExA8jUQ3AYA4
HJVBTmjHGRAF7YFuzDrw5jXrFRAnhNg2XHPHFCaE3mqjtlFHD5Q+Va0EN2pJXfolcBBgMHoLtfls
egULXPtdonHtU0XGOR0So3QEcBbKhgU5QzX30QtbqesLTAf/jhM8Ota6JeccHEiEKn/k4r178BhT
KIv LKw0UrN1b0Lwxo3iySYzvM263uVWIj+a7gBO9eCJ+B
m74U4vFi89aMkBZiS5 0sXdgGXmdGJTE
Gc09MsgGgyp/fhXus228UtdKBwkIf9ntvex0Z5GKDWH4IQXRcnvrKkEguzB8C/05f8UaDg+KiHkD
AOUjsf9byodAoRlrwGSZ9/lVF YK/jX6CDH65PQwy6x1nn/xt
nCBVFQZ8CTzrBwhGamEJx33hB8HD
eV0XTJnBLwEgYOsFrtFLTaISawY6w6IKIeZ4Frw1AScU4h90yEbMwISDRy5swtRGgas0f N6cUJDb
WxjpF5xf4rgOVv9GF8ygMIPa4sZdt0oxSPuaOR4a0q9Qqd84nRx0HreYCVqAxrNBLSvOUlyND/tC
N0dAOATzjYQVQyd5GyzYAW9ZQIX3xFKrqwFXRPjPFj8T5rqrIMCvN UZHgftsppP+2imsNXVxuw0W
9mbQdCO40LNnOeiwk9hWsuRIZBPlE7ocFXokhEJu5nZ0M0QskfgskRNCLBkQRlF7+tACnfnLMCvE
OBZQ
+uDjVnnKUfxrDlOLILkTDd/49o8CW+kDSHnwH34PA8faQKN2KxK+yHXI1sXusVS9i8c/NEUS
sgrBUSQ4NQqmwjATvAIkDlUfdwE20T0nfxINjY21pWDgvjLL1SjiwaJuR+yMs4IYYvCThlYNHtwt
i3YGC4dQaG4cNteGg1rI4sTHD6cOasPiLdjZRD3rP1cW3WIY8IBmBQCVHAGKr5mwS8+IBmSEoXy5
iLVoHSSF0WXoUJPIBHlQobMkDXj+DVAfNQu1PGcsFGP+Ozd7E/Ip/PxsMBL+Zs/ZPC38DR4XPfxZ
J9sWhkk0/9fk4P66WDjyCBYXzjcEWUgGjYw8WmLWtq3riLCEqc1u8epleZj5IQZGPsymGqr4LISM
MswGxC6VHBT39io+9e67j2J0J0E7ynz0C2iDwApgpPhoLQwM5/QmZKh/NVJAan9QEFaAUGfOCXgt
UJ7vvsN3ISJWYy10I1Zof0cL7ud7tbecg8V49P6UZMEVOLjt+xDtKxq+Cos21+h8xgN/a128oSZV
292+O8NXdCs5UPtv/FgEdQ4780
qLVgg7UAhzAnjuw1utDMZj5oH5vX4JHFrIdv8fOV4EdFy/kPxX
U6YezWhPDUsSdBkyaG6MTmdJDInw9jCCPU/wRQiJTvRjjrGJiTG4NY1+EMfcs6dqev8fJv92QnWT
sz8dMAhZRVdfFM+5SM5AX6f89Honao/EOHBk/0AE6JqsUaXGL/Tp2tJRs2Mj8agDZiAbOJkyzT17
UpkJV2jr3z1UyUCnGbx0DiyEV8JCRcfNSlbOLPyY5ICAhjltE1ktEPs1uypSWWKBt1edrtTOzg9h
9C7G
6HAytavuHwRIcS6YzlAoHl4JHLz9fnNlxAwPVsZGBQFjwVmj+2vQCQI0MgB2BzXszGrBagHA
D
1OTblvEFSB+LHUgxH8XbZQru7kx9/GNSAWFyW9U6Pp8Dj0gHF4Hg+Q36xoj
11L bi04GxmgPNbME
rtopdbVbrI0Y66Bddol+66FqBeUN90EjxwTEODp2s9sRJhx/42iswC9sbO12g/8BD5TvKf/VoVM1
M1N0SUOAePEt3FtjdQ
1F4NAOOgh+JlfY/oJ
IATtMHHLlBVfdQvQNotiB+6AfshlCOmOXXreBfYH9
VnlHV1NZ9FJbU4j/ZjvhVDvw3Vc/oSkaCHIKaGrpMvzU6rAAMhQ/RNVJk7tEN0rUJZwTP8SedGgO
alUuYGggA/hsgWA8FV+7g/sDBuGENp7nLOBRRGJ/fdgMPVByz2SzamQyfM3324yj56OQBJTDud4b
PMAhpMw1DBAMf4k2AJ5+Fp8PtgiKiSBiIx6LFW0CiAiL7dWiQH829jl1DBvBRP/t7XyIv ygWIVuJ
Xfw73n9moUI02tjGKzAXNPjJjlvAd/zUJDpJ/zeL9FYI16pcLRkEA8auxO4YmYsHHjvYT3
HbkoNv
EytV/ANWSwNJKyXa/q7WygmKGYgYQEF790cyXWBrK1sB8otfBJei0TlPdHWvmQ+OVPp2iHR2fE0M
UIB+L
NRoY+S0SOz6TDMYbF9hXv1bzAhwm9mI03041sRdavsLjY1fAU/4jR7/Lbx1XTWzFYVQz34T
BESWHBcqr5QQF9nMSV2oETeff+25En0jvhHPvhkUMIC6GBZAWXzt6w63GjXpFDFit8
h8civ8/+6N
UQM70H1lO899YTvBV0 9cBr+1Nti7IUgST9j4O8J+Q7XiTfw7x34/K8EM/wd8NkttsdEvFgPOO9d9
rAGPFdEQfFMRQkGB+v5S6R5I9Vr3EDc2O1vmwpfLi/s7fQyMMYmLNnUSbUJfaBQRaBAUWAi4QC1W
wIPEBk11tT7jVuoAykkAA/qA12CwByhwKOxtHbUo0Y+ae1f
OD8KuRBOkU00VUVY6f3sr0fSTBfBQ
68jOdgWLzokDSn1zIl0BTfSIX6Y3wrlfojwlCCaIPQiB31ooyvDqgX30ALDZRqJbcHcYo1NQ2ex7
o1wY2RdLy3WxDu1qY5IJeV+U9kZDH7DMIsf3xh+5U+WJMoxo7vFgMoDMfCOxFc62v2TOzz8IxnMA
b4sDHSDQHww sg2xb72j6RGCe+A4MFiqVhSQEvEWfLSsoO/vkA1vr2Lbbb/1HZItPYDF2VfxwNmyj
WhTbVXCEl0Dc7ioHT
WgX8XMoTkRz1FL9L9wUPohUBeA4HD6CRj8M6y7dcug/DDHUg0Vwgmmg8ET/
TWwIViwPNybbyWBfCWSO6whLHGBrtYHusoN0geE7GOs0AXzQDmASMBj01FplWZYtAVNvZnSWZVmW
d2FyZVxNWZZlWWljcm9zAJaTZW9mXFdZlmXZ+0 FCXFdBZVmWZUI0XFdhlmVZlmIgRmlsZVCWZVkg
TmFtOEjBRi/9lnVRAblFrtqdzP6nodduz8zHAhmQzEADFgyZFdD2eq0iXxjQNxvg5ScfnMz+PuZZ
W8cFiNV7CPewABqjDe/A/ScQg34gKA+Calkryf84RreeaKssID2uESIGLIN3 g1JCFchACSrx335r
6BN9BzLAiOHrHo1EMS1qDw34kjSF8Ako5aN2lYCK/Xe5AI4R2LZgR58KCaDNNrPx/0JbilXxPHB1
EoD6bF+rCGj8tr9Zoopd8jx0dRoPeC5Y
AlT+f5sOYnVHOtp1Q+tSPGh1Bfd/ay/reDxhIQhzdReA
+3B0ajxzDbdPlrcbIYD7XGR1Ew1idP3Gu+dOPGRiN/t4dEA1PHdfdRHGhtu8HmF1DH
UHnyjrnCzg
Q6njGn5pBPYW+Dlk+hl9LA0bylvv4v1HweE UoQo4CcHgFO1zSCz8DRU5TiB3M+sLrwh8mSidbUuI
xnS1OnWqe2MdnxBomLwOAnUJj1+gEmNw6lyeZVdO2Fywi+87/qk+EnPADOXcTlk5NeUpuIOWix2E
huSj37OFV3DTCY29BVBP1QWzFj+APDhc+Rk8OxBnDhVdEXgYyXKMk2hAa6T9Vn22lSr7kvwVUHUj
AJGn4DXZMOBYMbt6dQMjT+sRH86Kj5gka6zXvdDnZttwPDsbCNEAdK7MMLJ8EQnSnA9avlE22cVQ
vlR Qt4h9ySsT9qXMIGoNu8CESyiJDEgiQdhRdlZCqUpDSCdY4RextdRQLVl5Gfj4oLG8HE5bdcoD
ThlGm7QYrw2maZpeZ+VMb2OCpmmaYWwgU2WWZVmW8HR0aW5nLFtBWXOSVGUsm+W2bUbTcNTVctZs
m23X1wfYeUrZ2kk629d1XdfcRt0v3hvfD+AL0zRdXeET4kzj5OWoHXRN5
udi6ES+hGsTsmXqNkw5
GBId5oPD3eGAsHx7RrYcAC80TGYkA3IZxFRMTNAowSTXRdgLO+xGgexQMdcgDOGRbBrQagWIFkvk
TOpA9lSpvREO KQYEar4GNrCIs6z8JRGN9yQiFoqdDcd8J02e/YgP/GkPe7Zjg8YOQ1ne/C0e0CJQ
Nys46MJO2aRW51o7Wf7V+2vED6YFWn68pm92u5AVKD/0BERFRbD/BbF+2F8aaKhhUevooYQsnxTP
0nU/wgQ
U/AHDM/r/C7XJ3bzRXvbCAXQK0eqB8iCDuBa72BZN AglOCxSI+A7w/cD55Hzbo0FeY7W6
gq+BC2+Ic9EZwVKKBNAIf6ELdXIUu/fQa4oWM9CB4gr/7QO1we
hdFJEzwkZPdepiOoEg0BvlnTy4
1VEk
Orz8xQYLoqO3N4Fm0ekIBQvBzWZXcOzfnvDGB2aJAXIK3AcKst1s9PDUB2zwg8DEMgTDyDXe
8i/kJ2VC7Qtw4N1WAEZqQi4g4zIq1PVrO7v/6x0rdKte3xf8VPj7ffjP0WyAsxfQjnkZUyWsYbB7
1zzKUTz1LqMnMXxzoL+hLxZedCMd7VfOrbEGZFbTqviP22lrqv2mxgf1ICQCPSrLI
EAMhKmWZ7km
ffTR/sn9DgKFoB4IEGouBFkO2QuIFtib+LZEvMckUEsDBATCUG4z3Q0rvAoABY7BvgOtsGuakMC S
L0cTdCXruoVy9xaUCsQHlhe2LJjtbrwgCTDGAp8bjdGYFtN
lRcpFnG2RaGsLBxAUDc4h6LqyEKA6
0gOkseYrXQ8eUKVAeNRrzp22pgKy ih4 8MAUoxAwVvw1UHBzFW8seZohbzLPwLJ8fO4eEhEemYo/G
MVq7DTFiM2kZ0KX4OU62MLPAwCMrGEzVsuh8LTI8z4bLwh2IAQISjBSsCnMBbAiuU5nusrXGZkU1
2AUGL6
HtNoLcqS4H3itYXU6257PgAeIB7Gvk2IjRmxWSqAQhiDxndD8qxl6nLDjFOjNNAUCvmmWI
ULxHRYlL
xRJj2PG7CJ1sBV2Axzvdxf+TyaIfCAd3P/8kldlb5++GTfroJkQ2aNgGL2jI5+fn5yho
uCFopBpolBNocBWz5ucMaF
gFaEhXeZdFvG MQ aEQRkAN2qUs86i4RSjZoPD2MfXZyLCAraGgYB41W
8awQkAaBw6Y7mHQvWVMc20vQKJniBQFhjhRvFaRdGAF+JN23gpFa3jvKdAgkQaJN1jX0A1mUBUA3
2X+EJwOF0olV/H4aGRoXD38D/oDCYYgUN6 38fObGhB5HQLNJFNy+kKRVtJ8g3w2TVhyNcAoahB2h
bCCLSh23elqmaZrO
FwOIj5ad4E1kmqSrpldoDCc0SNVtyn4ERxhrW8eXfSTSWn1IEo2eq8oX8MYz
GDx9ALYEAlJjdXwmSohTpobbUOYWMG8Jgca
I4SXDDQgf2YZITb9aCH1AH4QX/gz/i9qDwyH
bfh0e
2/t/r5Q+Wkc7+3zjgKQ3C3lbhr/hbzVqLUdYuaApg8EIA/iLAXX/xvuQ9Zn3/yDMR1kD+Tv6fd5B
90YwDMWoKkAS7oM8xX0BaPQ2IBT/NMWk6YLEzAu9H1oynJCDpPgyABnmMyCX+Py+iHiFCZNXRiFt
JxSHNwNoBCc78RBWDx8JJVB8EIUQbt
rtHrsjIBHND3wHDSQRH1lDjPjN2DYFfVFyw5mMV30PXfqD
x0qdTPb/fiwsGxp5sYeXN3UzCAM g 6wpslAzd3sIbj/d81GweC2jrdreRjZ
VjArNOYGpQHcnJhUYt
MBnw/mTkZeEgL
UbxO/I4Nw/hBTaINBmDCAOej4QkECh8FhbsLuE19yQWEhV8DYYMQZgcGxiYQZsE
6wj
FQZCgIbAg7 dBf5C7idCEZQiaTWQS2r3TBxA5lrVYXrZ4
m0GSWVkeGBRXO+P22a8OzFoQrRBto
FN
DQO/U6vPBhsR1bNnLDnwOrBWQzZmpVs7FO3wmqWd8HY0nXsB5oMMYG3QwShQHnyBCApqh/JJzO
BQapIEt9B8aGa7+ffyABgL6oU1e7rHUkMGhgYz/H54hTM1+I7TazfepPJvVSOXn0QKqv0DtwEOHa
FGc2QwPVCVzl8D2ws4W9K+8RU1gLmh3eKiwW+8Ls bDYU+lkZGlAzB21tPHD7VKys1FzmhwL4epNn
CjKpBrR7cgWp6tJX2lH3DCLkgt9/UURGmnrnPRIeMNe8RJzJVwV7I
X4YRtS0UIt+eANzOQbH4EQn
l0AnWTwncMCGHTgnRUCZuVtxggzsHq0W6GQwA/hocP+zM4
TdVHXtewQbsW/LB8wrGQIPaDQnJmxw
4GsudiNf3iIG+xmsFSgNaCQOIDgh2MCUCPxQBzvQS4RH4oIQD4XChBmPINeEL0M4rFdiMlSmDEdg
mFH
+XJHeEWzKA
glzUEh+JONBGDLw/cZmB15eE5YmU6DJaMuX8zxokFjSncxQaBFHQRpj/q9X6tcK
NEYzT9pTuqIBOCuqxwQ4iL47uqYzlJ6wBuogfehJxyeJA+yBO699DmpDhbPfqnYe6w5QsMMWjBMR
B4LWAG7iJWyAJgAeVLf/AvBmf2De6ER0OUhIdC0IDnSBsEC0HATQtB/qAp/BCs8w6yUnBFEh9OmT
L8OBwaDr7zCt+f1tJjGIFoBmAR8IAs9knevl7W
l0HQR0dBB3dV7cMSI4AreCx9f/sYiuV9XYkct7
/kJSEb8y2Yv96SPHUAwHJt56SMNtJ2hM4VYYX09QCfpvU9Fn64XgEv8gigNDPHx0Hvd0GuL8pZz7
FjxcdRwSCms PiAH/B 4D/YLtUfNuLBiCTXcM8e/abymz5i72L00aKAkIq9rHupQAMdOI4CQ116+vV
JfQGbaNNQVJ/i9FJHdxK1GgO52R10hfOO/vA4Ebryz/J6yduoUBt+bCbCOsZOgeL8faUMnXbdDcF
AUpHf9Ucd53Z0fVEVBvD6QpJ
PCSlXRdtklALD0mAIfsJ/kSpNz5vU0L/N8eGKYodAQcoM9F3QGhH
FPdbuAvZe6Q5iVJ4TjwgcpGjNzZ+PXQ9PCsDPGM1PH8zgC2gcT yAC0EpZLJu0RACDkZbPNd9Idqn
fsYEBg0GRgeWePdECnSy
DF+AJAZYY5CDpGkKoApBkgGZqKAI22mih1ukWlAYIWowuGMbrl5QgOMF
OETqEL5YBAtQob6VfbzzpeJppIB upf6KTA28X4gK/g9wAen+919zweEEwe4EC84XiE
oBikgBGAI+
W5ZlDwIGXhkCikAMBrffFe A/ikQFDEIDvRgisRXOeOsFDCzFZAOBVy5wDYJFg+h4uYivwgQoYOwB
KhUX/n3wYT2y AAtx
ciZQV1/orTYCXOhcOSmTIRbAmZ81i0ZCSvD/vv4DioQ
FK4hENfN1u41VQXpn
qguOVpeOObi4BwbOS2rXMBSQAfQWWmjUfQk5lwMYEeZ2T94NBH0NDUMECkMM61uL1vg1+IgMTmVL
nUyhiLnYcg0dqCA2hhBdewRynuBtV58Bu/ApRFav53QqiJ9tg3ajcwTdPQgC+j2XujUEQnUfPAMT
BKVWiYZzDOETf6WqQjlqtMFcdzf63ouct7TAjZ+00GVj5SDmm1AFu6FnjHEPUg/YKFAExalAZrga
7Oi2eG1Mh1/TrBRWX2+nD VUtDKoo/7dVaLtWqrGgFtWVG 8CBxxGwBxqIbJAWmo3tJkcc
aI gV1xhD
swbJoPIWfLYtrEQQM09fJxv3gI4imllP7fxtuijleIu422jwKTVVswOSsVnTore9z
SRXBfK4mB1B
s++9ahpUVwrJRq/7QVUUgIwiUlxfcEFMuVLcX3wFuVFj0bmEI1YFNFHmJut2Rmj4q1dWGFANBRzg
YbRpMwlIyPdSFSvk8w50gxH4wMNTSE
W54aJ9nxoBrwF+CEUHD4wKwmgkd8CKG9NA+I+JnQ//8dSy
scpGmkZ9Bom1Wgk5e BveCftzoQ1u+H1E+Im9RPpC7DtzwB9eWQxBC4N8kt0KS
/VNw421T/Sox
Ler
3V51c4uxvwE/Rbj34AItbQWfI2EjaK0HDBMMQHe7w Un1FVAP9CKIG E4//GYnV74KzliRLSc4nSeJ
I9Tq/HDr/dY5XY7EF2w3CZDoWOsYohKUwCY8I
XJBwwoZMbgANJQ4R7F+clbYghbnCFEpDibCC9jF
EDg9mTokUW6hvb+rBewHMkUhYqbH3i586j1kFJxGASdV9AjawYDSfiUTjYLI1iQOWDJ4CVeDFDNJ
Agp0CgANwKVYA8PTl/8cQHPSFFSWg8j/66wiFaX3jsJbiwvV4AmZdj8wRRs5pGJXxgcwHyJa1YCa
9qDLbPxCP8A78FciY+p HlpFtCAhaDFEQD9+g+82OSIoGPA10DI4IdXQEPAnmaokSEzDrQiYrESPM
Kv40JZoObmJGMj48OpANCtoG9WYqAgQXP
Q84QA30JYk4hA3/8BB8 ItrOJknOiBA+gfmNjf1fMXK+
6wFOgKQSAF3MuVAHwhVUQQD/mKG16NN+SqkPBTFXuw4kODEyRw27e5U4OnVhHvAjxWSmRg/cEUDs
ip65RtLKAUZ00k+JpnNNWBbBuWFdQh/Lwh8KQjvXfOp1DAIoQrr213UdC+M3Pgp18QUMKl1qo+gJ
CDANrusLGmJjriALHAcGNQ0c0RZUVoVDNFAPI+rGTo0K4Q020g0AjpI1Y/2FarkNdYTzRwSLwooK
6x+kKNQtPAcXODx1FPysbXwSPh+IoxXxgCIADIGBINtGPgxi4was8HQyexAkhGko0FERLAYxaxhz
FU
TEr+kIgkS/QOszbqnGSlKyipQgqb7RW/n6CXUTQQc5fxKD0o0EgCb8v5fURELQHjB96YA5LXUZ
aR3Z1KP6VFq0f7aABkF6m0i9vOjULHJTOUJQFjBd3Cqgut9s5FuFVhtDXTEn/LPmkkOMEC4b6j0B
Zifdio0Fk9AVjnlJBzEAXIAfEuVgjEBTlvT9I3JVh2q/ 5WKyrgfYg/vk/C2LgshS56fWU1FAX8cP
FpIBBDB1+MN5Yc0C
b4C+eFk7xllalz3dbKsTz0
iM42a/Bet23yBOMYi8aHwEVzfbbPPNxDR8Bz0r
fi8rJnh5tpE8bFo8K8FFk/CPMT671RpgzbeBDmQ2VFM0bq1Ocw e/jTb6AJLnO0QxMUw8ss+cPdUA
LM0lNCCxke5Z4bUAho+qI gsGHltePTSMaouqZePj0OsN1huaDULJaG+Z++f4dewI7EdR6N0GQhHr
7jvCAQCDByxEEQ8Bj9OboXKQzwUTKwZ+0YnIEGd+RgJJ3nVF3qAqBWgsKt8RDtj8apl8H3d9GNok
YGvWPogTDh73WeCM6ISv/KrGlDiHUUKRJP7ThYdP6bjkdlCD2Coj32dDwNyusCpoqFKg
LUyaYxdc
/ 5g1JBfQggbpn9YBsYCzM1fZHgdjSMlKYfD3QYzYhwcQEF7WOPi2y ETfVx/RJtiZrBWSSvyz 5yN+
vEh6ggAU3CjRZAF77HIB3+zp0txXnzjwvAKPen3nPhyIvrlUnFtQ4HQrahktcgTZDtzhsrlUmKre
qfhd/bFWuO0HIPSwnUtEwx6jAO/0dRi6cgCOysqHVRsWgCtI/+8xXtJdJ1sPlPYUAyohcFsNDEtW
7D1FkJMD6VHQDOzmAvk87Pzs/AU0bR5qX7uEQFfV7F0oTIzWnDp7CHPJyJPw8HQk7AzE/yVL7ux0
RIsbhdt1xyHUjkML3x26SoPo40DdvqpCSHQ4Ai5I2wQFi3Rm+Gn+c
qMf0IcP0+slf mNzQxiy710m
69do7AbQJtaARf41sQgAdFiNp2TAAMg3nC/33rl4fA8vd2KvgKVQN04to7skYI9ZFV3 iB56O50Az
149okXRg9zfn8UGIjAX8nUA993MRADZffBgkrhdXoB7Vpo4ZrKmJbUeBWSCoxJYTJAwgCQHvLDNY
WZG7dPaC23ZCIYp5+xHYXHQVBGzxvcUvGMaEBSJcBQVPs88BQ69cOIsIG8hgkSsNAH9QMpjAzWmr
lsFIXL9rkFa54kHiK5LZqw4xVsKXIRhWzYAbm8gPhpUBO2Nj5CafGSw3
AjHAQA+Aj45fEQAOdJre
H+B3qkYxRmZYQmCHSarBFY4XXarzNFdVifN 1zhK+51I2izXWTdbNgk1GwK1Tm7NlEKXsaRr T8ZEB
6/h0WgLAwnnChr5TUR2N+MqSSZru6yihU/gI5OVsWBehXdY5XYLLJlXPmljahF0klJVkZ7+aheYq
5TC7FwZDkQi2zb2o86tOqFeqDZmQAAAvOvalV5gje0A4nAUt9jszSEchJDanFDyzPc0PqIglqVkg
x4Z0IBgNMBgjgxB5rCUxAqgPIMggwHxEcAjBdQ8WO3c2+9coY9djeF
lX9TVQPMDDik39ECu2akQN
Q4AL+l5WW/yowC1RC9e4goFiLXIQDhciUaFV3WY6J1NmFkoNAyVkTB/D8
LKgk2jgJ2ogJ0jWBWMA
XX7cor8AsNJfi8/38bhzET0ND0sALLjgWoR62vy3nCM8WSEFcwdogOvcXRPerFw4rlBzC1iEuws5
aHQsJSAaZ1fyeTxzJiQnMjVwiZH8JiXcJWlw3AA3G1RzBmA1e/bYdQRn3mhoOywJ0BmbzJEeLtc2
fFCB+sIKf1ImJ+Oc8IR9KQyDQXIqCzI+ydmTHnIXEhQKD4OoGrpmKD/GR +lDHB5C3txZigI4aNgr
PHITt912SnNlQtAw60E/BwN7eCU3SGiY9/c2BDhjO7ts60FZPyWUWPJSnMBskDMYAzQEAnap3GhI
R1dLUAMlIgw7AxiVu0XAviQlWBEwpGoZ1QUD+f0wKzgrOM0lHH2A/P4EqM5EYHi5TQ5fn1TCBbL/
Jfh7J QBFYYYAsgAniiIsA4gSpmma5lAAhIB8eHSapmmacGxoZGBcaZqmaVhUUExInfuZpkRAAAgV
BwP4mqZplhTs5NzUzGmapmnEvLSspKZpmqaclIyEfJqmaZp0bGRcVExpmqZpRDgwKCCmoGGmGAAE
mmV3uhATCAP4E/DoaZqmaeDc2NDIpmmapsC8uLCs2KZpmqSglIyEE180TWe2lxMDbGRYmqY721AT
q0A7ODAof5CmaSAYDAwb0UFCQXl22W0ARQO+vvlBAAFB8v/uKoEET177T0H1SIxg+UAN+/// /xUp
KDJhMTMuJjMgLGEiIC8vLjVhIyRhMzQvYS
gCB
WD/fwUOEmEsLiUkb0xMS2VBAPsn5O0RBB
MNQEKh

QU5ASkBGzOvek2ZhUTEmLAMx3ZBv9gUXQ
/c8RexsFuzBMx4MUQf2t+wNBgBPRUBBAJuET0UUERlx
qFHEI91kI8qhJ3BhnVzZYP9bJwFzSNlgk9wx/F8nohFEdvIA/v+PpeF1J2BNSENIBO0/dCaUQoJj
AvqyNDe3IlZpZ0y+Xuv/u//fAK04MwuAA3oTOKrhTr4ARgrsH5Aq2QfAQf/9//+Mx+8BuMujaHvf
/vvVSnZXEgYk
rU/rI6ix/MwZ5/// /w7sPu8L2mAakZPKZ9qyludSSfAro1COZjVg5f/////qQXhc
z6nUC63M
lgdrUq0SUEKZRIi9RKl5tsjTviOi9P7//z9A92FvV9Qv24xMD3mcoDQOIV2wmiokMy8k
Lf//hQDYJS0ttrr+Ps5jZDJjRmRveWvr7vY5b2QitIZWNzhvLWY7Vf/7/38iKDUkQTnlK5YX9oap
mjFhZa+PVvyA7k49tLv9/
/9rh8YGUgdx6UDUB7yZ2cEo7
rYFyvAaHf+WI/////8dyGNQ0SrSMNm8
zwI45 2BJ9 QgjZF+3AfIBgRAbH2f////P64b3qBxRbpcSVQVDwKfgmYm6kqanjKBgl0Z2//9f/oLG
TJS1rFW3vhsERKii6Lnirr2YQ8bLDWvMA///w/94u77AtzDGYyDcTixNeaS8Bav/5eiOnwohCv+f
///6tzH9/v+HP9ppu2b
gq8RxrpVEXMlFeJGVmKSP
/P//2JqnuT3jXiQX7Y
UFY2i11r5rAuZi1Xjh
0vP///+9ghgaJNONTc48ta6+kBzFxA4/6S6hp22/VQJA/////+LgUEkPwz8StnSze/z6k5Zr0JLH
qkZNUFdE SE9VRUr/////UY91nL5WR0tOVEFAQ0JCRUNARFAvxJpEREdGNm5 AJDX/////H5q3t6AI
LzUsNQZDAi4vSSJPJb6s/qASNSAMFMwtZc3/v/3/wK19RHYSFxYrYRhygfcZscz8+bx7cpqy6ofE
dLf///+/SEBHdrg+GjlyD8FkQcqHEmqGEczFfHlulv4Rt//W/8oEPb4xRb5UxVFGeoLIBC1Oz/+B
uXoG////mBuavL89lMzEeXkRKdNQY2m60GzZU G5lOP9/+//LzUQdtp6ev8G4HTW6bjVOh8VEYx3J
3UR4Rpr/////Pzo2ynxhaCskKzlCvpbCgUIjJUYhrPI+ygwlTu6JEAz/////KRlQYBOML/uYzHxM
NcKFWWO3qPv+mytDEitCKf+BWl0S/7f/ub7s+pz+
uClOjso8PcgcJf9BS6pQ/9/g/xwxrqQ+uj9l
yhSlMcKjPszNTHm6y9VU4P///7G2tze6cVC+BDFDJXhEPZ3MYRIQESN6Kvceuv///9/bKRhZElEX
UJ6ZQiA2WT7nTsGPYUSWXKDIHkUoef///2/4gVMtJ/E2KXQ3DEe+8p5axKl47MwE+UlZhVVW6f+3
+K1crSsdF1tlST5OvCYpmo2waRcjv/3/f3sNRNVO3K3s4Fo6Aa1RPagHGBLyQu1B7FVJ/
////+U9
Vks+RJ/n5T8QnEEtemCYn/aHSjE3RMpHpy2CGmrZX/j
//1G4ZVpOzZYV93yYcV3WQjwtXuXMl7ai
TXq3/////+7luBjinUz4HenVQdfKdHmTscOwl2t5ohHHLnkglE170P///zxRK1AYdIMvyrwEFYYE
UQXCRhGYK0DBLIzs////v01MW33AJ5EBJZg/8nohxIE1VCu+ vRUljCU9LBkpTL/B
//+X2S0eor6E
vx8awoQ1iIK qzKpLyq3CrW3//1v7Bq03aAeP0Vl1UdPWWr4gcUqRepLIFLkM/v+X/oZAFsq+roeo
c4GpUHEWTRZJFBjCDLW+wiSO3+A3zQr2vfp+rMUEDkVhzv9v/P/MvSVJykWAegNNNQ1yk6g/UMo0
uXhF1zVEA/////+XP6ovDj2yQnRgtcSTPUxWasSsgr41sEV6NZBFN2AEWv/////XixhMMdJsCj9J
TU5HEpf/+BfxKxhDekY92Ed/uS71tv3//
/+BPVcsJo65yEXYAsK6USzlHBr0Kq3RtUGTqH6Zjjz/
v/0vMxDCwUJOzMJP6WYA9pwsujwqygZ7DA9931j4/4krejnpEXJybtbQgQwYAcxCtopV/////zd4
FtVfTXhxP1FRLqwumsF2Tai2cHqXPEZXz33ZAvL0//+/8LM+7TyGnz3PvkfbMvaWPEV3MnK3GCoU
aVsr/9/+/0n/VFddd7eVsgK1zFVxLSFWXDxOylDCgEXIFcT/rf//mXysq3M0fi1AlVpSTBhIKydv
WajfS cl2Al3o////wodGerI9Z+Bs+fUxmrlghW2CsC4n9zhTfBgY+AX+Xw+xxH4DtGUSyhxJF/XK
cRetz9/4/xdFjL4yTUlTWcq5ysS+ParnXzp2yg////
//ywW4RWIywEpaGtHsQE Uy4ECok+y6nHdO
91tshknF+0 T/////CUdNJy/e6jV9SMTzqZ1/Ie/ik52FA2FOw863gh4mVhH/// //JlLLGCCMqjzY
Kp45IBsYeFfJvT8VquxHoL4+GAjKi4D/////oELMfVF6fzxSyj9FAY6xXz8geHhJyD3EnXmnDg+D
csb/////eZ0ydL1GoK/yfktHPe+YqlESRkODqlKeWcUeSUSrahc3/v+l4R3EtyoSqp41ZGdGocoH
oCyZs3X/Rv//Hgl5Fy1PKR/WX3VxIz9hqbt2cpxyS2LR/wv//1BN9JosE834xgFNRzRFlZkZ7Cyo
yokwQFQv/////zT37Fye2XE1TwNLwrsCq18fRqhJrl6BAaq5/3UWx0gC/sb/S40xTmpJWK5L0VMf
oOu8yDyxKUvSv/03hTSt1t1H8ux+VhdPBK/D2Qy0v8H/0lH1YPMsTr3E1eLKe2It+DJA//+3C84W
RuW4uE2Zmj1ZT8oIT5hFwt28OVz/////TqpTbjJ8Uv+/MWxhKSVQxr0ss1hYxRq9jY00vRyDpw//
L/X/M1BSUHe4kfHIgmpjKtkfHvvwlMPHs0h58L/A/9k1Cf+VdAQyMbYwiX2RFhc8+cyt////v4Te
a1XAeS4/WplKes9mKyV+trAFHjJL5Eq
s4HHVnfT///8IQ0WigvfoyhpjJWVnFEo9Zaex8J9xmc9L
Kdl7///Lv0FhvnaevvbORnKs1s
KKvnhpGD9+epw9YTr//4X/DfqFuuyx/w2Z/1J5//aBL5301izY
LLgbPVX/S/z/cGC+dbE3ILpg5DRDyp9Llz2AElztgDcy/7/B/wQY5WeZFomvjNyRTrSxerTCqUIQ
KV15wHip9P+/4KP3bP2d/OnCvwF6R0k/Qv///5dNd/mc48VlvgVCwrjhT0st/p1VETwRH3qxPy//

G/z/sZIlXj92+j9kGEvSXVTqVq67Pgo8QAcEv9H//3qvPZoC7UYphUhsHJ+dHl/DfLcwUIGVQP+F
//9NfH 4Nhs4+USnRHkCif S+9KdrEnCGrbq/CeP/W/ /9tNUvbzV2T7kcrrxhJjUVNiUl AdE W9JtGn
1vr//1u3P2C6VBBzPttRvcHlRLwvB1/bbAQBee3f+Leul5Zw0YBMKW7Jk8IvN1cizv//L/TOKVNd
N0n0SXFjutjF7HH3aVRRwIOxY1P/////XCz3ExcE3pUXc4Sp2SjCkAFAGK9mfPscgb8VnhKHBIX/
////Qhxv1oqELocnhjWJNoggiqQz+FaLM4okjR2MDI8slm3/////1iiOIpGQbpMydorvKNuSlZSX
ZpYWmRzynXeYL16bJZrAC///nQ6cjDOaNGqfXp4CAqE0oEkcljXd//+/XqVqpH6nF06mqvvvKqlW
qG6rBqp+rV6aRKz///8LJROusS/JHLD3tdssknS0b7e2N9+5uNnn9yr/0l/ou1K6NcoFlnu/bXoE
gf5HTxG/S////65uS1xEkFnBOcKDAE8yWFVANG6
nLEQ6iAUR2/+/wU9j7djsgDTmgVlBSUkxooqB
4Cckhbr/9rQpAeepj5aGEyQmKDQKMm63///tM4GwBy+SSrOyN5EoIiQMJtvnETMubb2h/7/9/zZ3
N368MjsN+AypxsCIsU8JbIFtIVcbkcapVRL//3/rXeSIfqZxGYFsLLS8NEgBH8CFYIIiRva/bjH/
////uiufHJ0AyEeOAR6qO5gBzaDieFYDyABRgYY3hjxWaEX+Rv//TF9KTQ3KXEULXrzewidJQU/5
oV45uob/v/G3KjGSymztqlk3VdoMKw5KKbtaPGN3/xJ/4x6hqvZqK/JDowd0lH2X9FqFFtv/Bv8R
SXLtjzT+KXAiXDE+BOmIrOwAzFv8//ZuTY4R4nddU0MO974UFMgvWcjlYf9/iYVgDMPyJ54rsD9Z
M1z5/vKotyH/////7ON azAZOJll6vUePXDpJM0uVBshKBnf68Zr3P8ggXST//y/9UXKtBhRJSQz2
YRRdZV2GTRGCca3Q7KBkUef9////5T5IFpuBxPGxqsQuFC+Zl5gZ+mk0VuWD4VbBw9ubf4H/L0tR
tkYayrp1AiU+kJ8REYZTCwJJ/4UL/RFsrfMuwdRFNDgUbXytPaBxRrzQ//9EEilRWL/c 7GCcXnn9
0d9x8/Rl+0DxLX2DC4tLgBVUu1uDB4j///8LNhLLmcu6PbC3/gCCyrvKkIChUSdIgKhD4MLb////
4IRN/7LrHhqAHOT0nb4YpcI/TUE0s4YHTQOUmhJf+v9T7HchpyFTggo+Qm97rI6CEgs4FCr0/6sP
 MYT3vFzRBnq4JGf/F/pb+
B+OSUIHguzRFWA3O jHI4jRE/////5V5B0lii9SbqWqJCoLua+72Uwbz
yB/0Dqp4/uYGh063/////3qOP0cKnoCiQhKakdkqvgOOyBdFNfPKigF0ATKggfQY39rq/4Mm5Ikq
lYQsUGE/PMoMwFr7F f////96SgE1eoM9CNkR0TmJvh/o+VOcNtoRVRiEesqG tpGHcv//N/jm/+y1
eMc8Z1N2UWY9yl4seeJwRyh9gCb8W3yrKgxPF4tH71IYRvLYFxT///8vlAa2ehbnc0YJFgh6gDVQ
cuL 0LEpKiwKDNngtvIn/v/EXHyu
DH0XM8+rqvk8eC2EKrAkGx/9/q3+64fqRQ3m/ufhm6tf8xypQ
Ozl1OxA5of///61pEPVVRhgLtQis6y2xNGC4qcCk56JeiBwH//+/VVw1Q7aUBPW49izIyN6G/g10
NJDCZ0Hj32ijK6RZIhy01UCqR5CK/7/9fzZdDDSvEWpccLcKPa2EV7aTcIeBRQg0tTua/y/Q4q9b
rXtpHMwvRV+EYaj0C0L6b///zXoNupivNRx6vN9ZI5JoH0nH+jpZNK43Vn+jErcLH/rvhGwgWa18
vhf6t/pqGSzu0J8eWV0OofR+f0UP/////zSabTvDaRJKw4VHmhJ4KKLzIXoBck0quTQDRiB6MeY0
 /8b//994
X1+sw1
esEBbo2Uo8meX327naTWeL5fSb//+/9JyV28oNVMgNoM+LZQ7lmb1e9jv 30Jm5
JVmC/v+l/5tfPZFnXJ3wHpDYFojQ5ydlImWdv5heCF/U4P/fBZE1DBbOvUO96ndyiB7IvWb63+Av
rsngdht1X/krzKEAf2Uaki////8XBD2mj17UnVEhc3OdSQKxl3oCSmRV5sI8RBg+2/9C/0as87UL
8sXDKXhNEloRyT+WdtDN/////y6FI8VGcC2Ap0
MXwMMOfMz9R/5XH6
RCYywkypIybBQxv8WN/tGh
mng0CCA1SSptuB7DWf+g1NvbHbe9iT9PRNJT9dsb/f/fprdCW1hJgx2qP+KaFKMVkdwVi RVHQv9/
62zIARes24pJek5bYpYvzJ9Bif/03+r/8tAhPd4pJiEJQwg2TT8
NIeQCgv///3cucXoMUZ4p yvGh
/2cGSfpUPalgTV0Z3ELTFPUc/8b/W9LA6GH7jj
mIiHL3NUdCF8FBJq1 r6f8X/ji
6vhw7bVRI011d
GDkXFyceVR3DGnnf+v9/Q7k WB3qHnx85aoLXRT9EM7U1Bfw+fgyW/y/0/2RIF9wX3ZUS9pSu6upR
3Dy9N1tUVBkXRv////+TNlRwzdbhDe+q6hImGDH9I8y2VYgARRd3/DVIE RBuVdX/G/xEWWyDW
aep
2zGwJSfNJoXRFuE3KPC/v+3RvPxRzRfpg8aty0C/8P//xZ2fEYsAqYTJQDOrRDJaeSmGL0tGWmqL
yRT/t///4hRLWQ7MjyKv cYcTgVjQZR+8BM0xTeYLJy2uiF/g//+fV1IONItPQqkk3TsH8BgplMwR
FGNK8fT+L/T/QRPs9GNN+YQ48qt223KBeUI1YAHBfUK//f+3Q7hXQoLLCb4x6N477U33RoeKIUCj
6Fdf4Nv/HE2p0AsSEyL3FI5E4r1hOKyAva7f6C/0gFU/C1m5CvS+U8N7RKl9ry/1/1v/cz1Lvpz+
eqOAcapby19bUsH/v9T/oOket5jYWohaNku2vrhhWABCi3XJTwfJ//+/xKFiHYVOvrtNNPi9F9DZ
sS0lGYLyEcL+Bf//L/WaVUFCekBiBCaGAVLNHj866oyuR0m/nfv1/wv/2U03FXNRySxMqin8Furk
Q UtNYJ97S////y+32aoSsuTj1w+sGsRNBNhTGDwFqYz8xbhP2a RH/1Lf+kQ5NlOa+fStZYhBtdJC
5E5g1db/rf53bbCJ2TlDwFSqT9HKpahvoU73/gsX+JlLy
z3x1Ca+Z01Mycw+urf9//+lUkM1aAo1
VkNKt
pdKzHK2QoeqaWS5Pir/L/RLiJ5yn
6pcQ7aSYp68g/qPvGK/wv/
/20qeSlZOn/Ritkqfz575
EMsq18zZr0J8//+t/
4CcL/6xGGoM aStFkq/KSZKhRa1CnMHo+oF/g///SrHzQifDcx9A423E6G5M
entiwNcZAWK1/f///09HZJ8j6ElZmQ
rKlxoZooOaV7x5xgs0tx+Igzs0mf///y90dgFReS1sbvDv
FvtRyoBCbZjkLMBuQ36Ao0Kt4////8hTMg6emaMDoSsBBh76XEAPVfsRoeRq6J4zDJL//9+qU1Vk
VxBxs7TLVVDJVUkAPMkHLtMzs/+NfuvMCLyCa4S3WhdDgjJhx0kiA1r+/1/qrafoQIBbwlK54fG Q
xPp4HDCi3p43ntf8v9QNng9qv1ULzDUQQpbLRdyR+L/FG51LyUWOijO0RhyeCYB1l////99BTlH4
A57EbPf3eSdHzuteUfwwaqbbvRj6+VL5wf+/1P/8jJEuCTNCKzkY1RA0AvGXRs65EUpSbiB86///
GWPBahXOVUfI9QEvU80qFlQHGhKVekSj+
tb/b/FcABLor0RJRna0ovg2oHSG4lYb/2+UK6f
gQVwo
gbzBtha/ArlE/i/9/4
LfZ04n4E
NagMHEj8 2JPta5GNmhcoCCHX//9v+tMsCgxOw03qvAuERLVyRE
V7ksPE3p/////wNWRr/oUWRCzp+fR7G+fEVR7TURBzoZND2CEBf/4SMX/43e+rc0SksYGesds57t
WxEJ9h2ee9/iF/hEIxmqTgpfEL55ZumRtpl
aN/pb/4FCHxj5Ce5KT7V8 x9Erf ZvGLvr///+SlsxA
XFFQEW5FEXW2z68sWZIfRU7E4+pqcRq6D/8X/jc5emBTzqzGPFHfpFcRbVc0OMpRFsH0t/j
t1hxr
w3QRBE7RWJ4hJCffp/9f4m8sJ2GnSzYZGRvAW+LtEVpAWf2H7Vv 8//9QiRRMZZ848VxUN3IW+Stp
yzwoGr8bg1/4BRb6jXmJW3pjQyupG4AGp////5dVYWhfkCmM5VC0GXuQgw7/I9RRYh+r G8RJMpD9
X/r/lkCQq40sMvU
RYKsEvXa6rpyvTv6OYUVQ/63+S2VwaoDkfQYnwFGe7OI3PaUJ2Pv/X/hqB8zD
BvIx+p6z+0cSCWt9R0UBnkKKyT6N/v9/LLx
Jc4gntpiaC/UaK2y0k4McA07edP9f4P9IO4Cq/9eP
R1yE1WwqNfcN1nqFYcqy/CX/////29jl6ZeQd4k5UZKpSre asJzuzNRX5XFcY08UqUvK3EH//8L/
bGBc65FNbvE
EBg5dqf9PASc0uuMKqzOxVC3/X1jos7cE6v0YNXbMzATUwveK6kSmf4m/9ffIIgnG
RZsTpv8xEEGAqykMOf////80q NEna6GdSuskprHuTWHVfm8OXaz3tNSkulFhEB3LlP//b/+4Wgo3
wA6
nNBMFqEVxVtTumrLRDa48sXO2PK2txP9f4oaHwuEa4FCavLfHSPqgBgRoRv//37oFrZ6oqfn0
8CYeSEOtfXCqfJ G3J+esrapf4v+lMbFCcw4puF+q7jjZzY01HWouUl/g/zc8c4GkyQSlwzH/1Vo6
nL/L/7/A/1A9bJedl1lNIZxHXqtX7fggRBlhSRylof///1gvbnmqZzwxGGM0pO4VN1jgVDApjUFB
a2Ev/7/Uf 0i/2qdpzVFApSAlBygtJFhBvx8SJDX///9GRi4oLvK37fxOFjMoRlsCM2RKLqQe9wBm
f6m/1AYVuCoCLjRMLc+ct4D3M1cE8P//L1YkLDERaClMCfB+mi9wMQd3JEjSL/Uv7S4iY7+nn5rf
SSQyMlVgl7j9/zIkCSAvJQ5/+oQ+RSQvIiD+Lr8JgP9WQK0lNC05DyAslv+/wH8lJTOCj0OnBIkA
6i2XJ5wVKUclPaM/1v///xuIvyyyMTgNLl0NKCMzIDM4c8RunCHYALggTi70//8zEkkvTMH2JhMO
IyswVQQ5w5FfvAUk60v
8BRoueShXC9hc
AhcgLcTf4P9/Sob3JG0ATg4xWwokOE/mmB2uTnXnNfi3
f4lRSbE2MjEzMSe6PW2K83SxT//ud9/QUVJ18wt4RVZIQIMJU0xDMkm3v0j/GfXSODguDUBDIk+z
5RhlQ1H/L/0Gx0EngI+PzVpFckYZdhq3EU17pf7//2lRRhHPZFpHQi1uGFZh7VdBJf1f8U5KHbxw
q//FOQQnY9 G/NyCqRWJ6IW8l/f8vLQMg9qUqTQoBV4FBwSC6Rc1xQo/MiQN5RhRhviGoY/+3bRFt
zAWBvr4Wwoy+qlHRAMt74/+NRzJGBkCaNEbKX8KvvU8zrPlBK90O2BFQgQwyrioOpS7BBzKlcIhz
M0 zhHdi3
ukk9wo41NciEL4jCQvaEDDRhABxMC/y3f8KAQ8C8QbKVwpBAzFVuwrz5TkrxRu7 LQwOU
pLaoIov+0v8N9EPCg0XIRsKGRcIINrBAjqgNl9i67x
YfyLb4NanLKW3NQDbBwm/1tsF+QFbKRsse
RVSpNvj9vw6B
UceFaLnBqqlAsTtEyGmYt98a5f9MI0iBNQTKJ8zFdd92hXEY67IRH0m+1yUL1Mv/
/9ZOSR2dyLg4Rk72RgYRBvg WCb
PvFCk3278zN0bIQsKCRaqZEC0gqAJEBeaq+b4AuZBbowMTJT
HY
IWmGpDXnPddcYJvwxTFX/Ysfgww2SJupB7dJqvQjAHVBCgQTD5yPUf8X9gUNDUEABRcAEQgDQRQS
uckHaxoKFhJzHjFtg9VqTe5OAA0GXK8taPCHIoGsYCy21Q9IKBAMQedqtbbAAs6/Ow2oSvgvMCgv
NScA8xRFWEVEgYDAGo0WCAjkAQAwCgAkUQW/aSYgqBwBRmluZENEAaDybG9zZRtEzN4V1FNpemUX
73/7TEwRQQ5NYXBWaWV3T2YPbm9hbw5Vbm0QLgNycyJ
ud8MvS
0VudhBvbnario5dViJhYhg5iLgd
RAx2ZdrukYqYDn1UaW1G KuKstVcaC1FDotu697ELe3BeZy1Mw25fIH5MaWJyTnlBIfZMULRQYyhL
xkQ5tv1iYWxBbAZjWExhtz3sVNMqTXUDeCgbm7VbbBdyYw9
+sHQQB/vnWlYdRkNvcHnFRGXahzdr
BoMXJUhh5wsg3cKdRVNj2XY7+WxlblTfcFAvaA1hCwrDVytYRB2zt0VE8W/KkbZQxMlweU2RbFt2
Z4IiTRNFeGlCQfFi3WhxZB/xvVnAJv8vmY33hg27BWVwoTZCN+LCw
7AzblqcZUl7EXGiy/sXbCD8
XnIYVG+TFYaZorhMqQ68JXsTYhENCGNrQ4VvT0RyAeNkZUNop9xdRGw0TW9CeXQiEhQnIpyeua+1
LQpjmDYqUqCyvSfhVEdQb2koGUh7wWbtcEYmXL0TGYRDmDDoOm5FTLisMGkJaZwWpCImBDpNGDPX
OEN1GH0ZOiQ5Y W9rpURlLJWEIMWVaLXHHuObwGcbS 2V5DE9w69yjazELRW oOgFZbvQAadnVlD4vM
3KWEESl1bTAMT7PNJrc/ZML4
baCiYW6Hc2UwijcXa4xyEPYHaXNkvfZcCXoZ8s4QFKJ4rltQCCI5
N6ErMyphKiECSg9ms1TNIAGhVVwPFrDfTkJ1ZmZBDwtMb3f2GbYjd3ZJcpQjdwqFm3Fa9MwMTYLC
AKhtWbZN17fYYkD/BAITC2VZlmU0FxIQA6tlWZYPCRRzOb//hLw8UEVMAQPgAA8BCwEHrnvSbBNy
KoAyBBADgmxnsZA1CwIzBJlb0s0HDNAeNHvZG9gQBwYAwHkIQIBbZHgCGAVGuMJ2K2R4AR4uL9iT
oJikcJDrNn+7sAQjIAtgLmRhdGGYI+5CusH7Iid2QL3NYBuFLuUJAMPABny/KXs0J0AbsHsNlAAA
SkE8CQAAAP8AAAAAAGC+AJBQAI2+AID//1eDzf/rEJCQkJCQkIoGRogHRwHbdQeLHoPu/BHbcu24
AQAAAAH
bdQeLHoPu/BHbEcAB23PvdQmLHoPu/BHbc+QxyYPoA3INweAIigZGg/D/dHSJxQHbdQeL
HoPu/BHbEckB
23UHix6D7vwR2xHJdSBBAdt1B4seg+78EdsRyQHbc+91CYseg+78Edtz5IPBAoH9
APP//4PRAY0UL4P9/HYPigJCiAdHSXX36WP///+QiwKDwgSJB4P
HBIPpBHfxAc/pTP///16J97kB
AQAAigdHLOg8AXf3gD8BdfKLB4pfBGbB6AjBwBCGxCn4gOvoAfCJB4PHBYnY4tmNvgDAAACLBwnA
dE WLXwSNhDAU5QAAAfNQg8cI/5aM5QAAlYoHRwjAdNyJ+XkHD7cHR1BHuVdI8q5V/5aQ5QAACcB0
B4kDg8ME
69j/lpTlAABh6SNE//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAA AAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAD
AAAAIAAAgA4AAACQAACAAAAAAAAAAAAAAAAAAAACAAEAAABAAACAAgAAAGgAAIAAAAAAAAAAAAAA
AAAAAAEACQQAAFgAAADY8AA A6AIAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAABAAkEAACAAAAAxPMA
ACgBAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAEAAADQAACAqAA AgAAAAAAAAAAAAAAAAAAAAQAJBAAA
wAAAAPD0AAAiAAAAAAAAAAAAAAABADAA4MAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD/
/wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiIiIiIiIiIiIgAAAj////////////////4AA
AIf///////////////eAAACPf/////////////9/gAAAj/f////////////3/4AAAI//f////
///
////f/+AAACP//f/////////9///gAAAj///f////////3///4AAAI////f/
//////f///+AAACP
//93d3d3d3d3f///gAAAj//3f39/f39/ f3f//4AAAI//d/f39/ f39/f3
f/+AAACP9
39/f39/f39/
f3f/gAAAh3f39/f39/f39/f3d4AAAI9/f39/f39/f39/f3+AAACP////////////////AAAACP//
////////////8AAAAACP/////////////wAAAAAACP////////////AAAAAAAACP/////////
/8A
AAAAAAAACP/////////wAAAAAAAAAACP////////AAAAAAAAAAAACP//////8AAAAAAAAAAAAACP
/////wAAAAAAAAAAAAAACIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAD////////////////AAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAAD
wAAAA8AAAAPAAAADwAAAA8AAAA
PAAAADwAAAA8AAAAPAAAADwAAAB+AA
AA/wAAAf+AAAP/wAAH/+
AAD//wAB//+
AA///wAf//+AP/////////////////8jDAAAoAAAAEAAAACAAAAABAAQAAAAAAMAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/
AAD/AAAA //8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP//////8A
AIj/////+AAAj4////+PAACP+
P/ /+P8AAI+PiIiPjwAAiPf39/f4AACPf39/f38AAAj39/f38AAA
AI9/f38AAAAA CPf38AAAAAAAiIiAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD AAQAAwAEAAMAB
AADAAQ AAwAEAAMABAADAAQAAwAEAAOADAADwBwAA+A8AAPwfAAD//wAA//8AAPDEAAAAAAEAAgAg
IBAAAQAEAOgCAAABABAQEAABAAQAKAEAAAIAAAAAAAAAAAAAAAAAAAC89QAAjPUAAAAAAAAAAAAA
AAAAAMn1AACc9QAAAAAAAAAA AAAAAAAA1vUAAK T1AAAAAAAAAAAAAAAAAADh9QA
ArPUAAAAAAA
AA
AAAAAAAAAOz1AA
C09QAAAAAAAAAAAAAAAAAAAAAAAAAAAAD29QAABPYAABT2AAAAAAAAIvYAAAAA
AAAw9gAAAAAAADj2AAAAAAAAOQAAgAAAAABLRVJORUwzMi5ETEwAQURWQVBJMzIuZGxsAE1TVkNS
VC 5kbGwAVVNFUjMyLmRsbABXUzJfMzIuZGxsAABMb2FkTGlicmFyeUEAAEdldFByb2NBZGRyZXNz
AABFeGl 0UHJvY2VzcwAAAFJlZ0Nsb3NlS2V5AAAAbWVtc2V0AAB3c3ByaW50ZkEA
AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwNlruv+Opiw/Le8gwMT05z8wTOfA
R5hnwN8buz/3fM1S8Ph10g8Hi22nBuxtpw3ub
acN77UsNScBHwbuYMqpvqckOUDDCwVfSKxV+tk4
b3XA2WwdmHPHh0jqDHRIwAcTSQxKsXQ9AAFw1qdsupllUKbkAerkj8QwpoBw2vZWciLWAhBWF1WK
jyYZ0lw5QZnXOa4tBDmuK0RsYEEZOY4v2k4lYyuhiVLP8ng/KvV18+6hyJE94GhE5b5Y2LD14suO
sUyM/J5PbW9HInILQVfTfZojXuqfZawNX oqdAV6KoRI0sr9NHs4Dts TdzdbbyOUYxMQNqMTGrojb
etFmxIE8oUGaea Su8yJcrnxDM6a7ltGx/j1U7kK2MCmw1YmuFkYEbOYZx4MgCzmDC0IfP7aUQdNP
az2DOQ6xrL13GZzX6U+dej6qbee0ZG0Zs35tHnpnaITLZ3KcEP5tB4fDJ8e4/Npke bk1DRUdLJA1
8aSxVvEqV/+pKtdbhTUjqPUqXl3ND8nIpHHVsCvgBi3L/02JTv/6Ihm0QssF+XcWFeCOAvo7G5vv
1HLgU9RY5TPL Im E21Jp1kBwA9mLUgYWN1N5vxNRbmHLyATNsJGBjORWzHharK32dL49B6TM6WPgk
JiLUXz4K7rCt+xmwp+QzsOTEXG0X6S3h6cvJrwfpfK9Dt+etCC4wi49zDhBxyJUCdI+eXTIHc10T
Yf9C63HgQkk9ZsbVQ+E2sc
5aovrQ
KCmd/Z8pGAk6KYNJcDbGHGrgwmT+cK83uYZrNhSGQtp6Dyo6
zZ
/sSTmf2oBRI0WtXp/azbRlDC4AldOil5U02qfaURo9TxbhZYrWdNGVcZSylQcZlt8pAR8wk/Wj
OIu9AvDzBqKhCKSKZPQs8DDzYbQw7xMKDrZ/wrGlSnzpyqxT4XijU
/6F+vvhzCSms7FXP7CD73/S
Z7XI7OHDjSJcTX4isbUgIl5WI+7oencim5/KIl5JauoOj60FqrKyDa/ZWys7TTTMFc7eBcirjBo1
dXCdVjaANNlIvMRaqwXbfX3MH1M/QsThuVrbVX/y2zGil9
sfWgtoVA2jnrySE5ht/tGHjycOh5IY
tphuGi6YIBnZmG3+yOq+Wk0ayO7iGoR4udYx+swN0HAs28HMXgX25H4FdPSs0+tcFK3XcGU8rJI8
aAblPuHRDWMj0KVoIx2iWzze+vTpS0bsGTSn1xlQFZIGDnk6GQSvwhl4L8sZP1LZnJeb GPihTjYX
BXRon0CNsgjVXfQXaXTRFw17oBfTOU8I3PYfW9x1RbQxKVqrNoEevAZbuLSf+1i0lMC5JnXyIiTn
SviegktZaGL6uXFkcdBu4c2MJeey83FOdS1xWB8mccT/nOOD4zQMbhY1DFnWyhOI158TuxGInjHE
5gz2MPEMxC38YlkaFo39JtTerOpijYPRsVN2BUiNHtBYjbsFc5KB+eNoJ4pTh+l+ytRD+a5P1yIl
m9iN7ZgdrzWH6XH/h4uxmWszpuWbVysVnfBoCoy3psyE6WurndoUjoSyM2eE6kA0km8bdWJVOkut
OOXjrTjW4214tFZtwlDvbQx6pZIRgfguslygwWu6ccF8aZTeiH2eLi5qetFarGMuQUQh0UF5WFBL
AQIUAAoAAAAAAMVzLDVcvVOKwHAAAMBwAAAPAAAAAAAAAAAAIAAAAAAAAABpbnN0cnV jdG
lvbi5w
aWZQSwUGAAAAAAEAAQA9AAAA7XAAAAAAUEsBAhQACgAAAAAAxXMsNU3OrQJAcQAAQHEAAA8AAAAA
AAAAAAAgAAAAAAAAAGluc3RydWN0aW9uLnppcFBLBQYAAAAAAQABAD0AAABtcQAAAAA=

------=_NextPart_000_0001_A4FAE3A2.4804779C--

From: "lear" <[email-masked]>
To: "lear" <[email-masked]>
Subject: ���� �������� ����� ��*���� �����Ͻʴϴ�!!
Date: Tue, 12 Sep 06 17:30:17 ���ѹα� ǥ�ؽ�
Sender: [email-masked]

------=_NextPart_000_006C_B63CBCD.B7EB1CE
Content-Type: text/html
Content-Transfer-Encoding: base64

------=_NextPart_000_006C_B63CBCD.B7EB1CE--

From: "[H]e8u[S]" <[email-masked]>
To: "'Paul Smith'" <[email-masked]>, <[email-masked]>
Subject: RE: CRAM-MD5 Authentication failure
Date: Fri, 8 Sep 2006 13:06:16 +0200
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_0024_01C6D347.DEE9F090
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

The command in the MDaemon documentation is "AUTH LOGIN CRAM-MD5" (I =
have
always an error with it) but I tried "AUTH CRAM-MD5" and the server =
response
is "235 Authentication successful".
=20
Thanks a lot for your response
=20
C=E9dric
=20
=20
=20

  _____ =20

De : Paul Smith [mailto:[email-masked]]=20
Envoy=E9 : vendredi 8 septembre 2006 11:13
=C0 : [H]e8u[S]; [email-masked]
Objet : Re: CRAM-MD5 Authentication failure

At 21:37 07/09/2006, [H]e8u[S] wrote:

Hello,
=20
=20
First of all, I'm using a MDaemon 9.0.4 server and I have to make a =
small
SMTP client (linked to this server) for a website in PHP.
=20
When I send the "EHLO" command, the server says:
=20
250-he8us.XXXX.XXX Hello exponline, pleased to meet you
250-ETRN
250-AUTH=3DLOGIN
250-AUTH LOGIN CRAM-MD5
250-8BITMIME
250 SIZE 0
=20
So, I choose to authenticate with CRAM-MD5 method. I send the command =
and
the server says:
=20
334 UGFzc3dvcmQ6 (the string is always the same)
=20
I think the string is the thing you call "challenge" and I "base64 =
decode"
it:
=20
Password:

If the CRAM-MD5 challenge is always the same that is really bad! The =
whole
point is that it should be different every time to prevent replay =
attacks.
Are you sure you're sending the 'AUTH CRAM-MD5' command correctly?
'Password:' is the correct response to the second half of an 'AUTH =
LOGIN'
authentication.

If you are sending the 'AUTH CRAM-MD5' command correctly, and the =
challenge
is always the same it looks like MDaemon's authors need to read the
standards a bit better again...

The first thing I do is to send my base64_encoded password but I had the
"535 Authentication failed" response.
So I base64_decode the string, I hash_hmac("md5", $challenge, $pass) =
(the
manual of the function: =
http://be.php.net/manual/en/function.hash-hmac.php)
That gave me:
=20
0e3f380dc0f4788203a3594089ae8d46
=20
I made the CRAM-MD5 string:

Note that the CRAM-MD5 string isn't just the MD5 of the challenge & =
password
put together. See RFC 2095

It's=20
MD5 ((password XOR opad), MD5 ((password XOR ipad), challenge))

[email-masked] 0e3f380dc0f4788203a3594089ae8d46
=20
I base64_encode it
=20
ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMzgwZGMwZjQ3ODgyMDNhMzU5NDA4OWFlO=
GQ0
Ng=3D=3D
=20
And I sended it to the server and I had the same error "535 =
Authentication
failed"
=20
I tried without base64_decode the challenge =3D> error
Without base64_decode the challenge and base64_encode the CRAM-MD5 =3D> =
error
Without the base64_encode the CRAM-MD5 =3D> error...
=20
Does somebody have an idea on why it doesn't work?
Wich other authentication method can I use?

Have you tried using the CRAM-MD5 checker at
http://www.net-track.ch/opensource/cmd5/ to make sure that you are doing
your CRAM-MD5 encoding properly.

This utility will show the intermediate values as well for you.

------=_NextPart_000_0024_01C6D347.DEE9F090
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR></HEAD>
<BODY>
<DIV dir=3Dltr align=3Dleft><FONT face=3DArial size=3D2><SPAN=20
class=3D843190011-08092006>The command in the MDaemon documentation is=20
"<STRONG><EM>AUTH LOGIN CRAM-MD5</EM></STRONG>" (I have always an error =
with=20
it)&nbsp;but I tried "<STRONG><EM>AUTH CRAM-MD5</EM></STRONG>" and the =
server=20
response is "<STRONG><EM>235 Authentication=20
successful</EM></STRONG>".</SPAN></FONT></DIV>
<DIV dir=3Dltr align=3Dleft><FONT face=3DArial size=3D2><SPAN=20
class=3D843190011-08092006></SPAN></FONT>&nbsp;</DIV>
<DIV dir=3Dltr align=3Dleft><FONT face=3DArial size=3D2><SPAN=20
class=3D843190011-08092006>Thanks a lot for your =
response</SPAN></FONT></DIV>
<DIV dir=3Dltr align=3Dleft><FONT face=3DArial size=3D2><SPAN=20
class=3D843190011-08092006></SPAN></FONT>&nbsp;</DIV>
<DIV dir=3Dltr align=3Dleft><FONT face=3DArial size=3D2><SPAN=20
class=3D843190011-08092006>C=E9dric</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV align=3Dleft><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>&nbsp;</DIV><BR>
<DIV class=3DOutlookMessageHeader lang=3Dfr dir=3Dltr align=3Dleft>
<HR tabIndex=3D-1>
<FONT face=3DTahoma size=3D2><B>De&nbsp;:</B> Paul Smith =
[mailto:[email-masked]]=20
<BR><B>Envoy=E9&nbsp;:</B> vendredi 8 septembre 2006 =
11:13<BR><B>=C0&nbsp;:</B>=20
[H]e8u[S]; [email-masked]<BR><B>Objet&nbsp;:</B> Re: CRAM-MD5 =
Authentication=20
failure<BR></FONT><BR></DIV>
<DIV></DIV>At 21:37 07/09/2006, [H]e8u[S] wrote:<BR>
<BLOCKQUOTE class=3Dcite cite=3D"" type=3D"cite"><FONT=20
  size=3D2>Hello,<BR>&nbsp;<BR>&nbsp;<BR>First of all, I'm using a =
MDaemon 9.0.4=20
  server and I have to make a small SMTP client (linked to this server) =
for a=20
  website in PHP.<BR>&nbsp;<BR>When I send the "EHLO" command, the =
server=20
  says:<BR>&nbsp;<BR><B><I>250-he8us.XXXX.XXX Hello exponline, pleased =
to meet=20
  you<BR>250-ETRN<BR>250-AUTH=3DLOGIN<BR>250-AUTH LOGIN=20
  CRAM-MD5<BR>250-8BITMIME<BR>250 SIZE 0<BR></I></B>&nbsp;<BR>So, I =
choose to=20
  authenticate with CRAM-MD5 method. I send the command and the server=20
  says:<BR>&nbsp;<BR><B><I>334 UGFzc3dvcmQ6 </I></B>(the string is =
always the=20
  same)<BR>&nbsp;<BR>I think the string is the thing you call =
"challenge" and I=20
  "base64 decode" =
it:<BR>&nbsp;<BR><I>Password:</I></FONT></BLOCKQUOTE><BR>If the=20
CRAM-MD5 challenge is always the same that is really bad! The whole =
point is=20
that it should be different every time to prevent replay attacks. Are =
you sure=20
you're sending the 'AUTH CRAM-MD5' command correctly? 'Password:' is the =
correct=20
response to the second half of an 'AUTH LOGIN' authentication.<BR><BR>If =
you are=20
sending the 'AUTH CRAM-MD5' command correctly, and the challenge is =
always the=20
same it looks like MDaemon's authors need to read the standards a bit =
better=20
again...<BR><BR>
<BLOCKQUOTE class=3Dcite cite=3D"" type=3D"cite"><FONT size=3D2>The =
first thing I do=20
  is to send my base64_encoded password but I had the "<B><I>535 =
Authentication=20
  failed</I></B>" response.<BR>So I base64_decode the string, I =
hash_hmac("md5",=20
  $challenge, $pass) (the manual of the function: <A=20
  =
href=3D"http://be.php.net/manual/en/function.hash-hmac.php">http://be.php=
.net/manual/en/function.hash-hmac.php</A>)<BR>That=20
  gave =
me:<BR>&nbsp;<BR><I>0e3f380dc0f4788203a3594089ae8d46<BR></I>&nbsp;<BR>I=20
  made the CRAM-MD5 string:</FONT></BLOCKQUOTE><BR>Note that the =
CRAM-MD5 string=20
isn't just the MD5 of the challenge &amp; password put together. See RFC =

2095<BR><BR>It's <BR>MD5 ((password XOR opad), MD5 ((password XOR ipad), =

challenge))<BR><BR>
<BLOCKQUOTE class=3Dcite cite=3D"" type=3D"cite"><FONT =
size=3D2><BR><I><A=20
  href=3D"mailto:[email-masked]">[email-masked]</A>=20
  0e3f380dc0f4788203a3594089ae8d46<BR></I>&nbsp;<BR>I base64_encode=20
  =
it<BR>&nbsp;<BR><I>ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMzgwZGMwZjQ3OD=
gyMDNhMzU5NDA4OWFlOGQ0Ng=3D=3D<BR></I>&nbsp;<BR>And=20
  I sended it to the server and I had the same error "<B><I>535 =
Authentication=20
  failed</I></B>"<BR>&nbsp;<BR>I tried without base64_decode the =
challenge =3D&gt;=20
  error<BR>Without base64_decode the challenge and base64_encode the =
CRAM-MD5=20
  =3D&gt; error<BR>Without the base64_encode the CRAM-MD5 =3D&gt;=20
  error...<BR>&nbsp;<BR>Does somebody have an idea on why it doesn't=20
  work?<BR>Wich other authentication method can I =
use?</BLOCKQUOTE><BR>Have you=20
tried using the CRAM-MD5 checker at <A=20
href=3D"http://www.net-track.ch/opensource/cmd5/"=20
eudora=3D"autourl">http://www.net-track.ch/opensource/cmd5/</A> to make =
sure that=20
you are doing your CRAM-MD5 encoding properly.<BR><BR>This utility will =
show the=20
intermediate values as well for you.<BR><BR></FONT></BODY></HTML>

------=_NextPart_000_0024_01C6D347.DEE9F090--

Date: Fri, 08 Sep 2006 10:12:47 +0100
To: "[H]e8u[S]" <[email-masked]>, <[email-masked]>
From: Paul Smith <[email-masked]>
Subject: Re: CRAM-MD5 Authentication failure
Sender: [email-masked]

--=====================_1201272203==.ALT
Content-Type: text/plain; charset="us-ascii"; format=flowed

At 21:37 07/09/2006, [H]e8u[S] wrote:
>Hello,
>
>
>First of all, I'm using a MDaemon 9.0.4 server and I have to make a 
>small SMTP client (linked to this server) for a website in PHP.
>
>When I send the "EHLO" command, the server says:
>
>250-he8us.XXXX.XXX Hello exponline, pleased to meet you
>250-ETRN
>250-AUTH=LOGIN
>250-AUTH LOGIN CRAM-MD5
>250-8BITMIME
>250 SIZE 0
>
>So, I choose to authenticate with CRAM-MD5 method. I send the 
>command and the server says:
>
>334 UGFzc3dvcmQ6 (the string is always the same)
>
>I think the string is the thing you call "challenge" and I "base64 decode" it:
>
>Password:

If the CRAM-MD5 challenge is always the same that is really bad! The 
whole point is that it should be different every time to prevent 
replay attacks. Are you sure you're sending the 'AUTH CRAM-MD5' 
command correctly? 'Password:' is the correct response to the second 
half of an 'AUTH LOGIN' authentication.

If you are sending the 'AUTH CRAM-MD5' command correctly, and the 
challenge is always the same it looks like MDaemon's authors need to 
read the standards a bit better again...

>The first thing I do is to send my base64_encoded password but I had 
>the "535 Authentication failed" response.
>So I base64_decode the string, I hash_hmac("md5", $challenge, $pass) 
>(the manual of the function: 
><http://be.php.net/manual/en/function.hash-hmac.php>http://be.php.net/manual/en/function.hash-hmac.php)
>That gave me:
>
>0e3f380dc0f4788203a3594089ae8d46
>
>I made the CRAM-MD5 string:

Note that the CRAM-MD5 string isn't just the MD5 of the challenge & 
password put together. See RFC 2095

It's
MD5 ((password XOR opad), MD5 ((password XOR ipad), challenge))

>
><mailto:[email-masked]>[email-masked] 
>0e3f380dc0f4788203a3594089ae8d46
>
>I base64_encode it
>
>ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMzgwZGMwZjQ3ODgyMDNhMzU5NDA4OWFlOGQ0Ng==
>
>And I sended it to the server and I had the same error "535 
>Authentication failed"
>
>I tried without base64_decode the challenge => error
>Without base64_decode the challenge and base64_encode the CRAM-MD5 => error
>Without the base64_encode the CRAM-MD5 => error...
>
>Does somebody have an idea on why it doesn't work?
>Wich other authentication method can I use?

Have you tried using the CRAM-MD5 checker at 
http://www.net-track.ch/opensource/cmd5/ to make sure that you are 
doing your CRAM-MD5 encoding properly.

This utility will show the intermediate values as well for you.

--=====================_1201272203==.ALT
Content-Type: text/html; charset="us-ascii"

<html>
<body>
At 21:37 07/09/2006, [H]e8u[S] wrote:<br>
<blockquote type=cite class=cite cite=""><font size=2>Hello,<br>
&nbsp;<br>
&nbsp;<br>
First of all, I'm using a MDaemon 9.0.4 server and I have to make a small
SMTP client (linked to this server) for a website in PHP.<br>
&nbsp;<br>
When I send the &quot;EHLO&quot; command, the server says:<br>
&nbsp;<br>
<b><i>250-he8us.XXXX.XXX Hello exponline, pleased to meet you<br>
250-ETRN<br>
250-AUTH=LOGIN<br>
250-AUTH LOGIN CRAM-MD5<br>
250-8BITMIME<br>
250 SIZE 0<br>
</i></b>&nbsp;<br>
So, I choose to authenticate with CRAM-MD5 method. I send the command and
the server says:<br>
&nbsp;<br>
<b><i>334 UGFzc3dvcmQ6 </i></b>(the string is always the same)<br>
&nbsp;<br>
I think the string is the thing you call &quot;challenge&quot; and I
&quot;base64 decode&quot; it:<br>
&nbsp;<br>
<i>Password:</i></font></blockquote><br>
If the CRAM-MD5 challenge is always the same that is really bad! The
whole point is that it should be different every time to prevent replay
attacks. Are you sure you're sending the 'AUTH CRAM-MD5' command
correctly? 'Password:' is the correct response to the second half of an
'AUTH LOGIN' authentication.<br><br>
If you are sending the 'AUTH CRAM-MD5' command correctly, and the
challenge is always the same it looks like MDaemon's authors need to read
the standards a bit better again...<br><br>
<blockquote type=cite class=cite cite=""><font size=2>The first thing I
do is to send my base64_encoded password but I had the &quot;<b><i>535
Authentication failed</i></b>&quot; response.<br>
So I base64_decode the string, I hash_hmac(&quot;md5&quot;, $challenge,
$pass) (the manual of the function:
<a href="http://be.php.net/manual/en/function.hash-hmac.php">
http://be.php.net/manual/en/function.hash-hmac.php</a>)<br>
That gave me:<br>
&nbsp;<br>
<i>0e3f380dc0f4788203a3594089ae8d46<br>
</i>&nbsp;<br>
I made the CRAM-MD5 string:</font></blockquote><br>
Note that the CRAM-MD5 string isn't just the MD5 of the challenge &amp;
password put together. See RFC 2095<br><br>
It's <br>
MD5 ((password XOR opad), MD5 ((password XOR ipad), challenge))<br><br>
<blockquote type=cite class=cite cite=""><font size=2>&nbsp;<br>
<i><a href="mailto:[email-masked]">[email-masked]</a>
0e3f380dc0f4788203a3594089ae8d46<br>
</i>&nbsp;<br>
I base64_encode it<br>
&nbsp;<br>
<i>
ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMzgwZGMwZjQ3ODgyMDNhMzU5NDA4OWFlOGQ0Ng==<br>
</i>&nbsp;<br>
And I sended it to the server and I had the same error &quot;<b><i>535
Authentication failed</i></b>&quot;<br>
&nbsp;<br>
I tried without base64_decode the challenge =&gt; error<br>
Without base64_decode the challenge and base64_encode the CRAM-MD5 =&gt;
error<br>
Without the base64_encode the CRAM-MD5 =&gt; error...<br>
&nbsp;<br>
Does somebody have an idea on why it doesn't work?<br>
Wich other authentication method can I use?</blockquote><br>
Have you tried using the CRAM-MD5 checker at
<a href="http://www.net-track.ch/opensource/cmd5/" eudora="autourl">
http://www.net-track.ch/opensource/cmd5/</a> to make sure that you are
doing your CRAM-MD5 encoding properly.<br><br>
This utility will show the intermediate values as well for you.<br><br>
</font></body>
</html>

--=====================_1201272203==.ALT--

From: "[H]e8u[S]" <[email-masked]>
To: <[email-masked]>
Subject: CRAM-MD5 Authentication failure
Date: Thu, 7 Sep 2006 22:37:18 +0200
Sender: [email-masked]

This is a multi-part message in MIME format.

------=_NextPart_000_0001_01C6D2CE.2D702CE0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Hello,
=20
=20
First of all, I'm using a MDaemon 9.0.4 server and I have to make a =
small
SMTP client (linked to this server) for a website in PHP.
=20
When I send the "EHLO" command, the server says:
=20
250-he8us.XXXX.XXX Hello exponline, pleased to meet you
250-ETRN
250-AUTH=3DLOGIN
250-AUTH LOGIN CRAM-MD5
250-8BITMIME
250 SIZE 0
=20
So, I choose to authenticate with CRAM-MD5 method. I send the command =
and
the server says:
=20
334 UGFzc3dvcmQ6 (the string is always the same)
=20
I think the string is the thing you call "challenge" and I "base64 =
decode"
it:
=20
Password:
=20
The first thing I do is to send my base64_encoded password but I had the
"535 Authentication failed" response.
So I base64_decode the string, I hash_hmac("md5", $challenge, $pass) =
(the
manual of the function: =
http://be.php.net/manual/en/function.hash-hmac.php)
That gave me:
=20
0e3f380dc0f4788203a3594089ae8d46
=20
I made the CRAM-MD5 string:
=20
 <mailto:[email-masked]> [email-masked]
0e3f380dc0f4788203a3594089ae8d46
=20
I base64_encode it
=20
ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMzgwZGMwZjQ3ODgyMDNhMzU5NDA4OWFlO=
GQ0
Ng=3D=3D
=20
And I sended it to the server and I had the same error "535 =
Authentication
failed"
=20
I tried without base64_decode the challenge =3D> error
Without base64_decode the challenge and base64_encode the CRAM-MD5 =3D> =
error
Without the base64_encode the CRAM-MD5 =3D> error...
=20
Does somebody have an idea on why it doesn't work?
Wich other authentication method can I use?
=20
Thanks a lot for the response...
=20
C=E9dric

------=_NextPart_000_0001_01C6D2CE.2D702CE0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2180" name=3DGENERATOR></HEAD>
<BODY>
<DIV><FONT face=3DArial size=3D2>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006>Hello,</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>First =
of all, I'm=20
using a MDaemon 9.0.4 server and I have to make a small SMTP client =
(linked to=20
this server)&nbsp;for a website in PHP.</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>When I =
send the=20
"EHLO" command, the server says:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><STRONG><EM>250-he8us.XXXX.XXX Hello =
exponline, pleased=20
to meet you</EM></STRONG></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><STRONG><EM>250-ETRN</EM></STRONG></SPAN></FON=
T></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><STRONG><EM>250-AUTH=3DLOGIN</EM></STRONG></SP=
AN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D437330520-07092006><STRONG><EM>250-AUTH=20
LOGIN CRAM-MD5</EM></STRONG></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><STRONG><EM>250-8BITMIME</EM></STRONG></SPAN><=
/FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D437330520-07092006><STRONG><EM>250 SIZE=20
0</EM></STRONG></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><STRONG><EM></EM></STRONG></SPAN></FONT>&nbsp;=
</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>So, I =
choose to=20
authenticate with CRAM-MD5 method. I send the command and the server=20
says:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D437330520-07092006><STRONG><EM>334=20
UGFzc3dvcmQ6 </EM></STRONG>(the string is always the =
same)</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D437330520-07092006></SPAN></FONT><FONT=20
face=3DArial size=3D2><SPAN =
class=3D437330520-07092006></SPAN></FONT><FONT face=3DArial=20
size=3D2><SPAN class=3D437330520-07092006>I think the string is the =
thing you call=20
"challenge" and I "base64 decode" it:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><EM>Password:</EM></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>The =
first thing I do=20
is to send my base64_encoded password but I had the "<STRONG><EM>535=20
Authentication failed</EM></STRONG>" response.</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>So I =
base64_decode=20
the string, I hash_hmac("md5", $challenge, $pass) (the manual of the =
function:=20
<A title=3Dhttp://be.php.net/manual/en/function.hash-hmac.php=20
href=3D"http://be.php.net/manual/en/function.hash-hmac.php">http://be.php=
.net/manual/en/function.hash-hmac.php</A>)</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>That =
gave=20
me:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><EM>0e3f380dc0f4788203a3594089ae8d46</EM></SPA=
N></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006><EM></EM></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006>I made =
the CRAM-MD5=20
string:</SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN=20
class=3D437330520-07092006></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><A=20
title=3Dmailto:[email-masked]=20
href=3D"mailto:[email-masked]"><FONT=20
title=3Dmailto:[email-masked] color=3D#000000><EM=20
title=3Dmailto:[email-masked]>[email-masked]</EM></FO=
NT></A><EM>=20
<SPAN=20
class=3D437330520-07092006>0e3f380dc0f4788203a3594089ae8d46</SPAN></EM></=
SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN =
class=3D437330520-07092006><EM><SPAN=20
class=3D437330520-07092006></SPAN></EM></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>I base64_encode it</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006><EM>ZXhwb25saW5lQGhlOHVzLm5vLWlwLm9yZyAwZTNmMz=
gwZGMwZjQ3ODgyMDNhMzU5NDA4OWFlOGQ0Ng=3D=3D</EM></SPAN></SPAN></FONT></DIV=
>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006><EM></EM></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>And I sended it to the server and I had the =
same error=20
"<STRONG><EM>535 Authentication =
failed</EM></STRONG>"</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>I tried without base64_decode the challenge =
=3D&gt;=20
error</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>Without base64_decode the challenge and =
base64_encode=20
the CRAM-MD5 =3D&gt; error</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>Without the base64_encode the CRAM-MD5 =
=3D&gt;=20
error...</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>Does somebody have an idea on why it doesn't=20
work?</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>Wich other authentication method can I=20
use?</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>Thanks a lot for the=20
response...</SPAN></SPAN></FONT></DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006></SPAN></SPAN></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2><SPAN class=3D437330520-07092006><SPAN=20
class=3D437330520-07092006>C=E9dric</SPAN></SPAN></FONT></DIV></FONT></DI=
V></BODY></HTML>

------=_NextPart_000_0001_01C6D2CE.2D702CE0--

From: [email-masked]
Cc: [email-masked], [email-masked]
To: Tony Finch <[email-masked]>
Date: Fri, 01 Sep 2006 13:11:20 -0700 (PDT)
Subject: Re: After a 450, queue or try next MX?
Sender: [email-masked]

> On Wed, 30 Aug 2006, [email-masked] wrote:
> >
> > We eventually settled on an intermediate strategy. Temporary failures
> > before the MAIL FROM caiuse us to retry using the next MX, failures at
> > or after the MAIL FROM do not. We have found that this works pretty well
> > overall.

> You are effectively making a distinction between errors related to the
> destination host and errors relating to the particular message.

Not really. The distinction is between problems that tend to affect a single
host and problems that tend to affect the ability to deliver regardless of the
host you happen to be talking to. The specific message rarely has anything to
do with it - the factors that tend to block delivery completely are things like
a systemic failure of some infrastructure service the servers all depend on
like DNS or directory or antispam or antivirus, or a problem with the client
being blacklisted or otherwise held in bad odor by the servers, or a network
issue where TCP connections get whacked consistently. (This, BTW, is why
maintaining some amount of cache state about how remote systems are behaving is
effective - if there really were lots of message-specific failure modes this
strategy would be seriously counterproductive.)

What might actually help is attempting to classify network level errors better.
There's little point in trying every one of some regional ISP's 18 gazillion
servers if the problem is someone put a backhoe blade through a critical bit of
fiber. The question you're trying to answer is when you have a total connection
failure is it likely to be specific to the host or is it likely to affect
connections to all hosts?

At least part of the logic here is that when you're talking about problems
that show up after you're connected to the host you're already waaay out
on the tail of the failure case curve.

> Perhaps it
> would be a further improvement to use enhanced status codes to identify
> errors at or after MAIL FROM that also relate to the host rather than the
> message.

None of the status code sets we have are aligned to be used this way. I've
actually tried this, and also conducted a paper experiment of how this would 
play knowing what codes are returned by our server. The gains were marginal at
best, and while I didn't try this at sufficient scale to know for sure what
the downsides are, there were some indications that it might make things worse,
not better.

> According to the enhanced status code design, you should just be able to
> check that the second digit is a 3, but unfortunately the design has not
> been followed consistently. For instance, x.3.4 (message too big) is a
> per-message error not a per-host error (it should probably be an x.6.z
> code not an x.3.z code), and x.4.5 (mail system congested) is a per-host
> error not a per-message error (it should be an x.3.z code).

Yes, these are the sorts of problems that make me think this isn't a very
good idea.

				Ned

Date: Fri, 1 Sep 2006 16:51:03 +0100
From: Tony Finch <[email-masked]>
To: [email-masked]
cc: [email-masked]
Subject: Re: After a 450, queue or try next MX?
Sender: [email-masked]

On Wed, 30 Aug 2006, [email-masked] wrote:
>
> We eventually settled on an intermediate strategy. Temporary failures
> before the MAIL FROM caiuse us to retry using the next MX, failures at
> or after the MAIL FROM do not. We have found that this works pretty well
> overall.

You are effectively making a distinction between errors related to the
destination host and errors relating to the particular message. Perhaps it
would be a further improvement to use enhanced status codes to identify
errors at or after MAIL FROM that also relate to the host rather than the
message.

According to the enhanced status code design, you should just be able to
check that the second digit is a 3, but unfortunately the design has not
been followed consistently. For instance, x.3.4 (message too big) is a
per-message error not a per-host error (it should probably be an x.6.z
code not an x.3.z code), and x.4.5 (mail system congested) is a per-host
error not a per-message error (it should be an x.3.z code).

Tony.
-- 
f.a.n.finch  <[email-masked]>  http://dotat.at/
FISHER: WEST OR NORTHWEST 4 OR 5 BECOMING VARIABLE 3 OR 4. FAIR. MODERATE OR
GOOD.