[Insight-users] RE: VersorRigid3DTransform & Optimization

Radhika Sivaramakrishna radhika.sivaramakrishna at synarc.com
Fri, 9 Jan 2004 11:49:36 -0800


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C3D6E9.7DF1A6BE
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C3D6E9.7DF1A6BE"


------_=_NextPart_001_01C3D6E9.7DF1A6BE
Content-Type: text/plain

Hi Luis,

Sorry about that. Here it is. I also forgot to add in my previous message
that I manually set the Translation parameters all to 0, so they are not
what would come back from the CenteredTransformIntiializer.

Thanks
Radhika


-----Original Message-----
From: Luis Ibanez [mailto:luis.ibanez at kitware.com] 
Sent: Friday, January 09, 2004 11:49 AM
To: Radhika Sivaramakrishna
Cc: 'insight-users at itk.org'
Subject: Re: [Insight-users] RE: VersorRigid3DTransform & Optimization


Hi Radhika,

It seems that you forgot to attach the optimization
results to your previous message.


Could you please resend ?



---


In any case,
about your questions:


1) Using multi resolution is always good.
    It increases robustness and speeds up
    the registration process.

    You will find multi-resolution examples
    in the SoftwareGuide

    http://www.itk.org/ItkSoftwareGuide.pdf

    Section 8.6, pdf-page 281.


2) There is not a direct way to set a tolerance
    for the Metric value in the optimizer. However
    you can easily implement this in the Observer
    of the Optimizer. Simply check for the metric
    value on the Execute() method of the Command/
    Observer and if it matches your stopping
    criteria you invoke

       optimizer->StopOptimization()

     Otherwise you could use the GradientMagnitudeTolerance
     which is a stopping criterion based on the magnitude
     of the gradient. Therefore indicating how flat is
     the metric value in the current position. In theory,
     the gradient will tend to be zero when you are in
     critical point (minimum/maximum/saddle) of the metric.

     Please look at the documentation of the RegularStep
     GradientDescentOptimizer.
http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepGradientDesce
ntBaseOptimizer.html


3)  The step length stopping criteria is based on the
     fact that each time the value of the metric increases
     the step length is divided by two and its direction
     is reversed.  If the optimizer enters a valley this
     process may lead convergence at the bottom of the valley.
     What you specify with MinimumStepLength is how much you
     care about precision.

     In other words, if you set the minimum step length to
     0.001 you are saying that you are satisfied with a
     rotation precision of +- 0.01 radians which is about
     0.57 degrees.  If you are too exigent on the precision,
     e.g. 10-7 radians, the optimizer will take a long time
     to converge until its oscillations are smaller than this
     value.  So you basically have a trade-off between
     precision and optimization time.





Thanks


    Luis


-------------------------------
Radhika Sivaramakrishna wrote:

> Hi Luis,
> 
> I decided to start with an initial rotation of 9 degrees (my real 
> rotation is 10 degrees) and I was trying to study what parameters to use 
> to recover this. I am attaching part of the results at each iteration.
> 
> I used the following:
> 
> Maximum step length = 0.1
> Minimum step length = 0.01
> 
> I find the metric comes down to a low value of about 37 and then starts 
> climbing again. Looking at these results, would you recommend
> 
> 1) going to a smaller max step length
>           OR
> 2) Using a hierarchical multiresolution approach.
> 
> I also have another question:
> 
> Is there a way to set a minimum value of metric to go down to? How is 
> this related to the parameter MinimumStepLength?
> 
> Thanks
> Radhika
> 
>  
> 

                                                     
-----------------------------------------------------  
Confidentiality Notice. 
This email message is for the sole use of the intended recipient(s) and may
contain confidential and privileged information. Any unauthorized review,
use, disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all copies
of the original message. If you are the intended recipient, please be
advised that the content of this message is subject to access, review and
disclosure by the sender's Email System Administrator.
  


------_=_NextPart_001_01C3D6E9.7DF1A6BE
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
5.5.2656.87">
<TITLE>RE: [Insight-users] RE: VersorRigid3DTransform &amp; =
Optimization</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=3D2>Hi Luis,</FONT>
</P>

<P><FONT SIZE=3D2>Sorry about that. Here it is. I also forgot to add in =
my previous message that I manually set the Translation parameters all =
to 0, so they are not what would come back from the =
CenteredTransformIntiializer.</FONT></P>

<P><FONT SIZE=3D2>Thanks</FONT>
<BR><FONT SIZE=3D2>Radhika</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>-----Original Message-----</FONT>
<BR><FONT SIZE=3D2>From: Luis Ibanez [<A =
HREF=3D"mailto:luis.ibanez at kitware.com">mailto:luis.ibanez at kitware.com</=
A>] </FONT>
<BR><FONT SIZE=3D2>Sent: Friday, January 09, 2004 11:49 AM</FONT>
<BR><FONT SIZE=3D2>To: Radhika Sivaramakrishna</FONT>
<BR><FONT SIZE=3D2>Cc: 'insight-users at itk.org'</FONT>
<BR><FONT SIZE=3D2>Subject: Re: [Insight-users] RE: =
VersorRigid3DTransform &amp; Optimization</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>Hi Radhika,</FONT>
</P>

<P><FONT SIZE=3D2>It seems that you forgot to attach the =
optimization</FONT>
<BR><FONT SIZE=3D2>results to your previous message.</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>Could you please resend ?</FONT>
</P>
<BR>
<BR>

<P><FONT SIZE=3D2>---</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>In any case,</FONT>
<BR><FONT SIZE=3D2>about your questions:</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>1) Using multi resolution is always good.</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; It increases robustness and =
speeds up</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; the registration process.</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; You will find multi-resolution =
examples</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; in the SoftwareGuide</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; <A =
HREF=3D"http://www.itk.org/ItkSoftwareGuide.pdf" =
TARGET=3D"_blank">http://www.itk.org/ItkSoftwareGuide.pdf</A></FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; Section 8.6, pdf-page 281.</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>2) There is not a direct way to set a =
tolerance</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; for the Metric value in the =
optimizer. However</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; you can easily implement this in =
the Observer</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; of the Optimizer. Simply check =
for the metric</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; value on the Execute() method of =
the Command/</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; Observer and if it matches your =
stopping</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; criteria you invoke</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
optimizer-&gt;StopOptimization()</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; Otherwise you could use the =
GradientMagnitudeTolerance</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; which is a stopping =
criterion based on the magnitude</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; of the gradient. Therefore =
indicating how flat is</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; the metric value in the =
current position. In theory,</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; the gradient will tend to =
be zero when you are in</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; critical point =
(minimum/maximum/saddle) of the metric.</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; Please look at the =
documentation of the RegularStep</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; =
GradientDescentOptimizer.</FONT>
<BR><FONT SIZE=3D2><A =
HREF=3D"http://www.itk.org/Insight/Doxygen/html/classitk_1_1RegularStepG=
radientDescentBaseOptimizer.html" =
TARGET=3D"_blank">http://www.itk.org/Insight/Doxygen/html/classitk_1_1Re=
gularStepGradientDescentBaseOptimizer.html</A></FONT>
</P>
<BR>

<P><FONT SIZE=3D2>3)&nbsp; The step length stopping criteria is based =
on the</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; fact that each time the =
value of the metric increases</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; the step length is divided =
by two and its direction</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; is reversed.&nbsp; If the =
optimizer enters a valley this</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; process may lead =
convergence at the bottom of the valley.</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; What you specify with =
MinimumStepLength is how much you</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; care about =
precision.</FONT>
</P>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; In other words, if you set =
the minimum step length to</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; 0.001 you are saying that =
you are satisfied with a</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; rotation precision of +- =
0.01 radians which is about</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; 0.57 degrees.&nbsp; If you =
are too exigent on the precision,</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; e.g. 10-7 radians, the =
optimizer will take a long time</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; to converge until its =
oscillations are smaller than this</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; value.&nbsp; So you =
basically have a trade-off between</FONT>
<BR><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp; precision and optimization =
time.</FONT>
</P>
<BR>
<BR>
<BR>
<BR>

<P><FONT SIZE=3D2>Thanks</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>&nbsp;&nbsp;&nbsp; Luis</FONT>
</P>
<BR>

<P><FONT SIZE=3D2>-------------------------------</FONT>
<BR><FONT SIZE=3D2>Radhika Sivaramakrishna wrote:</FONT>
</P>

<P><FONT SIZE=3D2>&gt; Hi Luis,</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; I decided to start with an initial rotation of =
9 degrees (my real </FONT>
<BR><FONT SIZE=3D2>&gt; rotation is 10 degrees) and I was trying to =
study what parameters to use </FONT>
<BR><FONT SIZE=3D2>&gt; to recover this. I am attaching part of the =
results at each iteration.</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; I used the following:</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; Maximum step length =3D 0.1</FONT>
<BR><FONT SIZE=3D2>&gt; Minimum step length =3D 0.01</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; I find the metric comes down to a low value of =
about 37 and then starts </FONT>
<BR><FONT SIZE=3D2>&gt; climbing again. Looking at these results, would =
you recommend</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; 1) going to a smaller max step length</FONT>
<BR><FONT =
SIZE=3D2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; OR</FONT>
<BR><FONT SIZE=3D2>&gt; 2) Using a hierarchical multiresolution =
approach.</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; I also have another question:</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; Is there a way to set a minimum value of metric =
to go down to? How is </FONT>
<BR><FONT SIZE=3D2>&gt; this related to the parameter =
MinimumStepLength?</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt; Thanks</FONT>
<BR><FONT SIZE=3D2>&gt; Radhika</FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
<BR><FONT SIZE=3D2>&gt;&nbsp; </FONT>
<BR><FONT SIZE=3D2>&gt; </FONT>
</P>

<P><FONT =
SIZE=3D2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </FONT>
<BR><FONT =
SIZE=3D2>-----------------------------------------------------&nbsp; =
</FONT>
<BR><FONT SIZE=3D2>Confidentiality Notice. </FONT>
<BR><FONT SIZE=3D2>This email message is for the sole use of the =
intended recipient(s) and may contain confidential and privileged =
information. Any unauthorized review, use, disclosure or distribution =
is prohibited. If you are not the intended recipient, please contact =
the sender by reply email and destroy all copies of the original =
message. If you are the intended recipient, please be advised that the =
content of this message is subject to access, review and disclosure by =
the sender's Email System Administrator.</FONT></P>

<P><FONT SIZE=3D2>&nbsp;</FONT>=20
</P>

<P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"></FONT>&nbsp;

</BODY>
</HTML>
------_=_NextPart_001_01C3D6E9.7DF1A6BE--

------_=_NextPart_000_01C3D6E9.7DF1A6BE
Content-Type: text/plain;
	name="iterations-angle-9.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="iterations-angle-9.txt"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcZGVmbGFuZzEwMzN7XGZvbnR0Ymx7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fX0NCntcKlxnZW5lcmF0b3IgTXNmdGVkaXQgNS40MS4xNS4x
NTAzO31cdmlld2tpbmQ0XHVjMVxwYXJkXGYwXGZzMjAgSW5pdGlhbCBQYXJhbWV0ZXJzXHBhcg0K
WzAsIDAsIDAuMDc4NDU5LCAwLCAwLCAwXVxwYXINCiBccGFyDQpTdGFydGluZyBSZWdpc3RyYXRp
b25ccGFyDQowICAgMTIyLjI4NCAgIFstNy43NjM4NGUtMDUsIC0wLjAwMDIwMzI0OCwgMC4wNzc5
NTA3LCAtMC4wOTAzOTE3LCAtMC4wNDI3MTM1LCAtMFxwYXINCi4wMDE5MTQ1MV1ccGFyDQoxICAg
MTEyLjk5NyAgIFstMC4wMDAxNDM5ODQsIC0wLjAwMDQxNjM0LCAwLjA3NzQ3NzEsIC0wLjE4MDc4
NSwgLTAuMDg1NDM1NiwgLTAuMFxwYXINCjAzNTk5NTldXHBhcg0KMiAgIDEwNC4wMDMgICBbLTAu
MDAwMTk5MDM1LCAtMC4wMDA2Mzg5NjYsIDAuMDc3MDQ4LCAtMC4yNzEyMDcsIC0wLjEyODEwNiwg
LTAuMDBccGFyDQo1MDU0NzFdXHBhcg0KMyAgIDk1LjkzMjIgICBbLTAuMDAwMjQzNzA5LCAtMC4w
MDA4NzEyNDEsIDAuMDc2NjcyNSwgLTAuMzYxNjIzLCAtMC4xNzA3OTYsIC0wLjBccGFyDQowNjMy
ODc5XVxwYXINCjQgICA4OC43MzQ1ICAgWy0wLjAwMDI3NjI3LCAtMC4wMDExMTU5NSwgMC4wNzYz
NjUzLCAtMC40NTIwNDUsIC0wLjIxMzQ4MywgLTAuMDA3XHBhcg0KMzYxMDddXHBhcg0KNSAgIDgy
LjMzMjcgICBbLTAuMDAwMjk3MDMsIC0wLjAwMTM3NDc2LCAwLjA3NjE0ODYsIC0wLjU0MjQ5OSwg
LTAuMjU2MTA4LCAtMC4wMDhccGFyDQoyMjE1OF1ccGFyDQo2ICAgNzYuNiAgIFstMC4wMDAzMDUx
MjgsIC0wLjAwMTY0ODk4LCAwLjA3NjA0NzEsIC0wLjYzMjk5MiwgLTAuMjk4NjU1LCAtMC4wMDg5
NFxwYXINCjM3OF1ccGFyDQo3ICAgNzEuMzc5OCAgIFstMC4wMDAzMDA0NTUsIC0wLjAwMTk0Nzks
IDAuMDc2MTAxNSwgLTAuNzIzNDg4LCAtMC4zNDExOTcsIC0wLjAwOVxwYXINCjQ4MzY2XVxwYXIN
CjggICA2Ni40MzcxICAgWy0wLjAwMDI3OTgwOCwgLTAuMDAyMjgxODIsIDAuMDc2MzcyMiwgLTAu
ODE0MDIxLCAtMC4zODM2NTYsIC0wLjAwXHBhcg0KOTg0ODEzXVxwYXINCjkgICA2MS40MjY5ICAg
Wy0wLjAwMDI0MzA0OSwgLTAuMDAyNjgxNDEsIDAuMDc2OTY2OCwgLTAuOTA0NTg4LCAtMC40MjYw
MzEsIC0wLjAxXHBhcg0KMDA3NjVdXHBhcg0KMTAgICA1NS43ODg5ICAgWy0wLjAwMDE4ODkyOSwg
LTAuMDAzMjA0MTcsIDAuMDc4MTEwNCxccGFyDQpTdGFydGluZyBSZWdpc3RyYXRpb25ccGFyDQow
ICAgMTIyLjI4NCAgIFstNy43NjM4NGUtMDUsIC0wLjAwMDIwMzI0OCwgMC4wNzc5NTA3LCAtMC4w
OTAzOTE3LCAtMC4wNDI3MTM1LCAtMFxwYXINCi4wMDE5MTQ1MV1ccGFyDQoxICAgMTEyLjk5NyAg
IFstMC4wMDAxNDM5ODQsIC0wLjAwMDQxNjM0LCAwLjA3NzQ3NzEsIC0wLjE4MDc4NSwgLTAuMDg1
NDM1NiwgLTAuMFxwYXINCjAzNTk5NTldXHBhcg0KMiAgIDEwNC4wMDMgICBbLTAuMDAwMTk5MDM1
LCAtMC4wMDA2Mzg5NjYsIDAuMDc3MDQ4LCAtMC4yNzEyMDcsIC0wLjEyODEwNiwgLTAuMDBccGFy
DQo1MDU0NzFdXHBhcg0KMyAgIDk1LjkzMjIgICBbLTAuMDAwMjQzNzA5LCAtMC4wMDA4NzEyNDEs
IDAuMDc2NjcyNSwgLTAuMzYxNjIzLCAtMC4xNzA3OTYsIC0wLjBccGFyDQowNjMyODc5XVxwYXIN
CjQgICA4OC43MzQ1ICAgWy0wLjAwMDI3NjI3LCAtMC4wMDExMTU5NSwgMC4wNzYzNjUzLCAtMC40
NTIwNDUsIC0wLjIxMzQ4MywgLTAuMDA3XHBhcg0KMzYxMDddXHBhcg0KNSAgIDgyLjMzMjcgICBb
LTAuMDAwMjk3MDMsIC0wLjAwMTM3NDc2LCAwLjA3NjE0ODYsIC0wLjU0MjQ5OSwgLTAuMjU2MTA4
LCAtMC4wMDhccGFyDQoyMjE1OF1ccGFyDQo2ICAgNzYuNiAgIFstMC4wMDAzMDUxMjgsIC0wLjAw
MTY0ODk4LCAwLjA3NjA0NzEsIC0wLjYzMjk5MiwgLTAuMjk4NjU1LCAtMC4wMDg5NFxwYXINCjM3
OF1ccGFyDQo3ICAgNzEuMzc5OCAgIFstMC4wMDAzMDA0NTUsIC0wLjAwMTk0NzksIDAuMDc2MTAx
NSwgLTAuNzIzNDg4LCAtMC4zNDExOTcsIC0wLjAwOVxwYXINCjQ4MzY2XVxwYXINCjggICA2Ni40
MzcxICAgWy0wLjAwMDI3OTgwOCwgLTAuMDAyMjgxODIsIDAuMDc2MzcyMiwgLTAuODE0MDIxLCAt
MC4zODM2NTYsIC0wLjAwXHBhcg0KOTg0ODEzXVxwYXINCjkgICA2MS40MjY5ICAgWy0wLjAwMDI0
MzA0OSwgLTAuMDAyNjgxNDEsIDAuMDc2OTY2OCwgLTAuOTA0NTg4LCAtMC40MjYwMzEsIC0wLjAx
XHBhcg0KMDA3NjVdXHBhcg0KMTAgICA1NS43ODg5ICAgWy0wLjAwMDE4ODkyOSwgLTAuMDAzMjA0
MTcsIDAuMDc4MTEwNCwgLTAuOTk1MDcsIC0wLjQ2ODUzNCwgLTAuMDFccGFyDQowMTg1OV1ccGFy
DQoxMSAgIDQ4LjUxNTYgICBbLTAuMDAwMTIzODUzLCAtMC4wMDQwMTY2NSwgMC4wODA0NTcyLCAt
MS4wODQ4OSwgLTAuNTEyMTk3LCAtMC4wMVxwYXINCjExNzgxXVxwYXINCjEyICAgMzcuNDQ3OCAg
IFszLjEwMzMyZS0wNSwgLTAuMDA3MDQxOTgsIDAuMDg5MjQ5OCwgLTEuMTY5NzEsIC0wLjU2MTc0
MiwgLTAuMDA5XHBhcg0KNDUzMDJdXHBhcg0KMTMgICAzNy4zNjM4ICAgWzcuNDEyMTVlLTA1LCAt
MC4wMTEwMzgyLCAwLjA4OTkxMDUsIC0xLjEyMjU2LCAtMC41NDgzMjEsIC0wLjAxNTBccGFyDQoz
NzRdXHBhcg0KMTQgICA2NC43OSAgIFs3LjU4Nzc2ZS0wNSwgLTAuMDE0NTIyMywgMC4wOTAxNjM1
LCAtMS4xNDU3OSwgLTAuNTUyOTksIC0wLjAxODg2NzZccGFyDQpdXHBhcg0KMTUgICA4OC4zNzEz
ICAgWzAuMDAwMTA3OTA0LCAtMC4wMTg5NTAxLCAwLjA5MDY3NTcsIC0xLjE2NzMzLCAtMC41NTcz
MDUsIC0wLjAyNjhccGFyDQowMDZdXHBhcg0KMTYgICAxMTguMjE1ICAgWzAuMDAwMTMwMjQ4LCAt
MC4wMjU0MDUsIDAuMDkxNTY4MiwgLTEuMTg2NDQsIC0wLjU2MTg4MSwgLTAuMDM1MDlccGFyDQo2
Nl1ccGFyDQpccGFyDQp9DQoA

------_=_NextPart_000_01C3D6E9.7DF1A6BE--