Re: [JMeter] evolution request - handle BeanDescriptor.hidden flag in JMeter

Stéphane Hoblingre <[email protected]> Wed, 9 Nov 2011 12:57:45 +0530
Newsgroups gmane.comp.jakarta.cactus.devel
Message-ID <CA+oWjF7j=MVV-WdhU-vrrRY9mnY5NF7O=UoCWhkBez5Eryvpvw@mail.gmail.com>
--f46d040fa0006c4dea04b14839ca
Content-Type: multipart/alternative; boundary=f46d040fa0006c4de504b14839c8

--f46d040fa0006c4de504b14839c8
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Thank you Sebb for your quick response!

I know about not_in_menu configuration, but we would like to avoid JMeter
users to edit propertie file from JMeter to install the plugins. So this is
why we would like to do it from the plugin code itself. I did the
modification in MenuFactory.java from trunk (r1199633), please find
attached the patch / file.

The modification is very light (in bold):

if (name.endsWith("JMeterTreeNode") // $NON-NLS-1$
        || name.endsWith("TestBeanGUI")) {// $NON-NLS-1$
    continue;// Don't try to instantiate these
}

*>//Handle BeanDescriptor hidden property
>boolean isHiddenBean =3D false;*

JMeterGUIComponent item;
try {
    Class<?> c =3D Class.forName(name);
    if (TestBean.class.isAssignableFrom(c)) {
        item =3D new TestBeanGUI(c);
*>        try {
>           isHiddenBean =3D
Introspector.getBeanInfo(c).getBeanDescriptor().isHidden();
>        } catch (IntrospectionException e) {
>            log.warn("Cannot get bean info from class " + name + ".");
>        }*

    } else {
        item =3D (JMeterGUIComponent) c.newInstance();
    }
} catch (NoClassDefFoundError e) {
    log.warn("Missing jar? Could not create " + name + ". " + e);
    continue;
} catch (Throwable e) {
    log.warn("Could not instantiate " + name, e);
    if (e instanceof Error){
        throw (Error) e;
    }
    if (e instanceof RuntimeException){
        throw (RuntimeException) e;
    }
    continue;
}
*>* if (elementsToSkip.contains(name) ||
elementsToSkip.contains(item.getStaticLabel()) *|| isHiddenBean*) {
    log.info("Skipping " + name);
    continue;
}

Could this be added in the next version of JMeter?

Thanks,

Stef

On Wed, Nov 9, 2011 at 12:06 AM, sebb <[email protected]> wrote:

> 2011/11/8 St=E9phane Hoblingre <[email protected]>:
> > Dear JMeter dev team,
> >
> > I have an evolution request for JMeter which will help plugin developer=
s.
> > In our plugins, we implemented one component using TestBeans. We have n=
ow
> > rewrote this component and use regular test elements, so we need to hid=
e
> > the previous one from jmeter add menus (backward jmx compatibility). Th=
e
> > only way I found is very dirty, that is setting its name to null. But i=
n
>
> You can also edit the JMeter property:
>
> not_in_menu
>
> see jmeter.properties.
>
> You might also be able to make use of upgrade.properties and dispense
> with the old class altogether.
>
> > BeanDescriptor class, there is one attribute:
> >
> > isHidden
> > public boolean isHidden()
> >    The "hidden" flag is used to identify features that are intended onl=
y
> > for tool use, and which should not be exposed to humans.
> >
> > While building the add component menu, could you check the hidden flag
> and
> > if true not add it in the menu? That would allow to plugin developers t=
o
> > hide properly it.
> >
> > Is it possible? Do you want me to open a bug for it?
>
> If it can be done without affecting the existing API, then I suppose
> it would be possible to interpret the isHidden() status as meaning
> that the TestBean is not added to the display.
>
> If you provide a patch as a Bugzilla enhancement we will take a look.
>
> > Thanks,
> >
> > Stef
> > JMeter Plugins - http://code.google.com/p/jmeter-plugins
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

--f46d040fa0006c4de504b14839c8
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Thank you Sebb for your quick response!<br><br>I know about not_in_menu con=
figuration, but we would like to avoid JMeter users to edit propertie file =
from JMeter to install the plugins. So this is why we would like to do it f=
rom the plugin code itself. I did the modification in MenuFactory.java from=
 trunk (r1199633), please find attached the patch / file.<br>
<br>The modification is very light (in bold):<br><br>if (name.endsWith(&quo=
t;JMeterTreeNode&quot;) // $NON-NLS-1$<br>=A0=A0=A0=A0=A0=A0=A0 || name.end=
sWith(&quot;TestBeanGUI&quot;)) {// $NON-NLS-1$<br>=A0=A0=A0 continue;// Do=
n&#39;t try to instantiate these<br>
}<br><br><b>&gt;//Handle BeanDescriptor hidden property<br>&gt;boolean isHi=
ddenBean =3D false;</b><br><br>JMeterGUIComponent item;<br>try {<br>=A0=A0=
=A0 Class&lt;?&gt; c =3D Class.forName(name);<br>=A0=A0=A0 if (TestBean.cla=
ss.isAssignableFrom(c)) {<br>
=A0=A0=A0=A0=A0=A0=A0 item =3D new TestBeanGUI(c);<br><b>&gt;=A0=A0=A0=A0=
=A0=A0=A0 try {<br>&gt; =A0=A0=A0=A0=A0=A0=A0=A0=A0 isHiddenBean =3D Intros=
pector.getBeanInfo(c).getBeanDescriptor().isHidden();<br>&gt;=A0=A0=A0=A0=
=A0=A0=A0 } catch (IntrospectionException e) {<br>&gt;=A0=A0=A0=A0=A0=A0=A0=
=A0=A0=A0=A0 log.warn(&quot;Cannot get bean info from class &quot; + name +=
 &quot;.&quot;);<br>
&gt;=A0=A0=A0=A0=A0=A0=A0 }</b><br><br>=A0=A0=A0 } else {<br>=A0=A0=A0=A0=
=A0=A0=A0 item =3D (JMeterGUIComponent) c.newInstance();<br>=A0=A0=A0 }<br>=
} catch (NoClassDefFoundError e) {<br>=A0=A0=A0 log.warn(&quot;Missing jar?=
 Could not create &quot; + name + &quot;. &quot; + e);<br>
=A0=A0=A0 continue;<br>} catch (Throwable e) {<br>=A0=A0=A0 log.warn(&quot;=
Could not instantiate &quot; + name, e);<br>=A0=A0=A0 if (e instanceof Erro=
r){<br>=A0=A0=A0=A0=A0=A0=A0 throw (Error) e;<br>=A0=A0=A0 }<br>=A0=A0=A0 i=
f (e instanceof RuntimeException){<br>=A0=A0=A0=A0=A0=A0=A0 throw (RuntimeE=
xception) e;<br>
=A0=A0=A0 }<br>=A0=A0=A0 continue;<br>}<br><b>&gt;</b> if (elementsToSkip.c=
ontains(name) || elementsToSkip.contains(item.getStaticLabel()) <b>|| isHid=
denBean</b>) {<br>=A0=A0=A0 <a href=3D"http://log.info">log.info</a>(&quot;=
Skipping &quot; + name);<br>
=A0=A0=A0 continue;<br>}<br><br>Could this be added in the next version of =
JMeter?<br><br>Thanks,<br><br>Stef<br><br><div class=3D"gmail_quote">On Wed=
, Nov 9, 2011 at 12:06 AM, sebb <span dir=3D"ltr">&lt;<a href=3D"mailto:seb=
[email protected]">[email protected]</a>&gt;</span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1p=
x #ccc solid;padding-left:1ex;">2011/11/8 St=E9phane Hoblingre &lt;<a href=
=3D"mailto:[email protected]">[email protected]</a>&g=
t;:<br>

<div class=3D"im">&gt; Dear JMeter dev team,<br>
&gt;<br>
&gt; I have an evolution request for JMeter which will help plugin develope=
rs.<br>
&gt; In our plugins, we implemented one component using TestBeans. We have =
now<br>
&gt; rewrote this component and use regular test elements, so we need to hi=
de<br>
&gt; the previous one from jmeter add menus (backward jmx compatibility). T=
he<br>
&gt; only way I found is very dirty, that is setting its name to null. But =
in<br>
<br>
</div>You can also edit the JMeter property:<br>
<br>
not_in_menu<br>
<br>
see jmeter.properties.<br>
<br>
You might also be able to make use of upgrade.properties and dispense<br>
with the old class altogether.<br>
<div class=3D"im"><br>
&gt; BeanDescriptor class, there is one attribute:<br>
&gt;<br>
&gt; isHidden<br>
&gt; public boolean isHidden()<br>
&gt; =A0 =A0The &quot;hidden&quot; flag is used to identify features that a=
re intended only<br>
&gt; for tool use, and which should not be exposed to humans.<br>
&gt;<br>
&gt; While building the add component menu, could you check the hidden flag=
 and<br>
&gt; if true not add it in the menu? That would allow to plugin developers =
to<br>
&gt; hide properly it.<br>
&gt;<br>
&gt; Is it possible? Do you want me to open a bug for it?<br>
<br>
</div>If it can be done without affecting the existing API, then I suppose<=
br>
it would be possible to interpret the isHidden() status as meaning<br>
that the TestBean is not added to the display.<br>
<br>
If you provide a patch as a Bugzilla enhancement we will take a look.<br>
<div class=3D"im"><br>
&gt; Thanks,<br>
&gt;<br>
&gt; Stef<br>
&gt; JMeter Plugins - <a href=3D"http://code.google.com/p/jmeter-plugins" t=
arget=3D"_blank">http://code.google.com/p/jmeter-plugins</a><br>
<br>
</div>---------------------------------------------------------------------=
<br>
To unsubscribe, e-mail: <a href=3D"mailto:[email protected]=
g">[email protected]</a><br>
For additional commands, e-mail: <a href=3D"mailto:[email protected].=
org">[email protected]</a><br>
<br>
</blockquote></div><br>

--f46d040fa0006c4de504b14839c8--
--f46d040fa0006c4dea04b14839ca
Content-Type: application/zip; name="MenuFactory.zip"
Content-Disposition: attachment; filename="MenuFactory.zip"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gus06xjk0

UEsDBBQAAAAIAKFmaT/Yq2WEMxMAAABjAAAQAAAATWVudUZhY3RvcnkuamF2YexaW3PrNBB+768Q
GR4cyHGBRw4whNYtgTTJxDkwDMNk1GSTiDqSkeTmFIb/zq4vsuPYuXBgBhj80NjS7rdX70qqrz+4
Yh+woViANLBkVjG7AdaP+QJ/QrWyO66B3alELrkVSjKvH951GT6CZkoCU5ptlQZCWShptXhMLI5F
GSLjaw2wBWmNz1gIkMKPxrPBTcBWIgK2FCZjQuk7YTcIhDTCsJ3ST2yFUHy5FCSaR0xIHNhmimhY
c70Uco1y4xct1hvL1E6CNhsR+wQzQ1GobaGLyXBJKtn5g0oyMyoWF47ose8Qh6R84n9EUB7RdPLZ
Tvc1e0HuLX9hUlmWGKhAw9sFxBZVRb22cSS4XEBpWSnDZ6hCBqIeLUd6Tpbg06pKxrhFRuJlbGNt
/On19W6383mqr6/0+row73qITh2FwSvSOWN5IyMwhmn4JREaHfz4wngcIwN/RE0jvqPwUYjS0JPO
Oy0s+rTHTB57gqnGyLnMKSjMHoFCQyTr9EM2CDvsq344CHsE8v1g9vX4zYx9359O+6PZIAjZeMpu
xqPbwWwwHuHTHeuPfmDfDka3PQYCRWh0ZqzRAlJTkDNhSZEtEsmpsFKZSiaGhViJBZom1wlfA1ur
Z9CSsiQGvRWGgmpQwSXBRGIrLLc0dGiXn/nw+uoKXf1EWOjswu8/b8GC9teJ8BMrotdXV6ie0pb9
zJ+5z3fWv1E4IEHa13tTj8Cl8QfSakXKkuyAEoZujlMqvT8vlD8Yt/DiXAha8Ej8SpHenySFUb0o
ysQfnTSNs9uYa04KHU5+zc3mgcctMyHYhpmhkE+wHArTNNky3Cwjxa8Ov/XNDoPvf/MAMnndOjOw
sG2enag4iVuZv4WXEOPzBI2zxBZEVP1KrRqSKC2bCv2a/Ubg/NqScfeJmGQpeZwQbaPb+zcDl4wn
GHgadL+f/oz4FswlDFOV4PhZHM5zJyVYDZAbMsPbkVoes9pwrBKgjR/SzVFlLBibvWMzvPsK784h
Jp0cA3r2BA9k4U85XCqczTGJuDyT/Hvsll+BXGyO0NMrkrvyDd4e8/yzMAlVD3LlRAtpXRmp0ysd
b7j0I7VeU84Ps98HLjE99TEODSsqMv5NxI25E3J5nDxTfpw+tGofqUwDgrqKk0fsdNiUaeWwICmM
3sg7TrX0hf12xfCKtXjmFpix3DriDIIhGvuc7Vvkr8Fm03dKp6p7XZRFULSUwos69UTDEhALlgis
kdukLWrLn4BU8Lq+I51tgJq8BpYYJOeGbZGCLVCptdICDBOS2lI6jFWPUR3d8rjnELhEtsioVIQG
oxK9AFRePSUxMW/BGFTd+LFWMWiLmMRLrY1+MjftOyBMlWazr6dB/zZEJ3RI+txuNPCl6bxm19fv
j8ajV6Nh+Orj91OYU1h30/79QzCalWgrzdeUu4d4J/UaPATTilpiC/pSEFp5zKbj4bCKhBEXi/nC
FeKLQcP+w2QPcQ0SNNI9wzvAkq53g/t5MAz2XEiQK7Ge50XgYtjJOJzNJ9PxTRCG44rSsTJ2jtmy
AGOUNpfjToNGWA3vgtoPw2BKS8USkRsDmvrJ5WhIOp8F4ezQqVLJOZXWwq2XYw8H4SwY7SWWMBZk
Q+TbixC+659leD1Gi6DP0oWKXKkvvnC14HNkzy4Ju7QyHOGiQtUuLgSbM37BCsNnKnwSKMWhl0QO
De1h6L838/7t7fzt27fsFcsT3bDdRiw2TFjYGqpwRSVDytSCPfZJf4pROBNhICnubIJD0jqsFsNS
fX/8qdSyfPMz00qS35w/K53Cr1SKXgtB9fVsIcKi1QpQfWHaaKi0tKtAr/JJCPcGtcy7vC2nf6co
n3ZtGcF38S5JuySQ5JIWOX9zkP75YSDf/OUxqJUUlnZe02OutdEDrcGzu2y9gDdOqOv5vax15Wti
JHGlHO+Laom3UsnK2tmUHqEeNXHNpIfqQvmYmVCo7mwuFMqd4vadpUlU1g6UPZM+88aZxM5l53OQ
Xy8gdw6+xAQXhTMZXKhO0x+G7XwmDZfyuMS5yP6isfpxYr189evSuIXMLWx7LmHaSPPqkiVKG1Gl
OpThaCOuF7Va1Nu5XENzidiuUVmPXLjbSA9WVfU3uI3RdTeX5i2E9Qpby6gWrlrtdhlV57HFxtBd
rnKmO0hwa6KCyF3Vvalv4khYr7LX9tdAWsa3sOJJZL2OVHYu5JyU7PRYp9PFP71O93BrVV60v/OE
tExgNn/0Gn8+29fKj0Cu7QZnPvyw6+xwV21d5/Pl0tvj/1H85KO5W6+bu8S1n6u9RyGFTQ8X092s
8WrU6FM7iZK1kAfTv9PGFld03myj1S49hYa6prSJB62V9jroGaiBixXzADUwlg7W1YoFRNo9NNaS
BOZl0wxqBh3HnCaS3lF3utoOX6dsk+Tufi8OC9xpwSRvtAuFCuiEOjKzilL0GaTN1UJ/E7yfM11X
W3S1lXuFN39v2qU8K7FkGPZgKSwxeeX5Zvq69NijUhFwyTRs1TPGpxod4gwhP/v1iB5jU/VhE5N7
FdN0oxOQ4sB1CsbrLBKLQa4cOPo3b2Y9Vh4P0nO35bUgK88QoeKXuozx5Ic9ITRAUmpiToPH3Fio
oU/6WC9L+GIE8S+G12DAzteJqImYBmEwm+P5IztAfdeIpCxwIO9h/F3FJjd0JDSn03BCzkOh0JiM
JzLv3xucoz65ExH8Pd5QMciapuNJMEIdcQ9+meU0g61Lr+vexfXNffBnEA1/hjk3Nbiw/10w74eH
gGe5wv1rhxH6RCxsogFbZ5vwudhysqhReXcdKng/7U++HtyEvTqpy7I6ZVO8KjrWyup7XvkfH1pH
DPJG5XXp6SbRGqRFEq9b7WHu2L5bf/crknwDNpBEtfRWPDJOtEvTdk/2o+iUM/Emiv68Q+f94fB8
pxJ1q2OdykhxLHmabF4Kk3qoydp8rpa3t4Ow/9UwqKdtAzbIVmiQDcjB6Biwa9/CBA74WPLMNMAw
X9PvpdNILYnE4Xi1nHQTteRyzqpmltVJbRlX2H00/xjgwHF4x3ga32nRvnTImZqSqJDbWF6sWq+j
xspCMwcxnI3v74eVHuSGTtfNFA+teMdWsIEorin1dTCcuDp7sl1lxjt7jee2SeU/rnrFcXjEHyFy
TzwVeqO2Wy5d9jh/kkH0m+3XszEvBUDDjm6EnNxjuyBCr3vFK1lxA9SrKdiYMRpsomWB9rrdTZUm
vgabb/7Kf/Sn4is6VuljVZy8l4P7JynZDq56jlfGo+Gw+7CS1vanmBpZjLwOAne6l9RtFNVtUK5U
qH5EfLlOIj30n8fpof/F2uWyq0pWPVfdFKHyPUbVopXWrdKI1lG5vMDBS3OCvlf42xPCHZr/o7KB
FPo/FSrloXqEd3FC/EON+s59UPJfsWgmtv8dY/rFQfN/xaDgrdUE/5+JUGEHnifQAty+xOmXt4l8
kmon/9HWVc46bzRwC4xnHzmttNoyXvngieAzUsfxJS1ut26avWJx/eMq5hWfTj3BCy0O976Vol8u
l02fQeUfSXVrsvYWgE0Cewz8tV9vKwUKXV8agLO/sXTiM/+5r73cWe+p5Xe++nZOOr3WziSVALnD
qM16BUq3thTutTdkx9K9KPAL950xU6vsK4+W8G/zf9axVzWmh2Ii5f6nBLJUmsbfPb5/tHd0PU7D
sHd+RdgDtDCK4JFPISY+xKf4EA8Ioa4L247SntoNdIL779jxEqd129zYhgAxCe7WOrZjO07i2DlO
yOZjSyeTbm3bp44LudX60t5nWdD2VouFjP/dcJTPFFSOsNE2uyrEcjMQKPW29dwXYodjFPgM7fT1
empPH6N4sztUt2Hn2MX/YEQiZNw1CDwn5RqD7DRm2g+7mgUrpxZQAXoQMH+KfbMhc18D1kyRkoZh
dIYHsN9B/8UY0Xrx9/uLcplpsmZ+KyIHDWhUNfYrQpp9QGjPJAIXJ/Oz3ZshtVaQrKmf88DcOs+5
Gz0s3fNbNXHI6CyPmyaim9uaKvlk0CinEKNYuv2xhfnHLfSVtoEt2+E9mmbvZGpJxSG7tZD/bZfW
E7wYKKdHMF12my5OR2yyDP2XWq4r7WlYbnPK3p/RIjZTAoF+NQpaqIM3lRLmSfwvG+tenYp3QAAv
Mp13KowGgDx6YNx9HcOGJAbArekEgeiIHR2Cckd3nd/33t+ISCDuw/SXk2F5DSqyoHx2ZR4ZGDUn
2IMLMCNCY16iVwCVfIIfmzdvFilGMXQxa08Vr3VaZYuX6WoBRMdojoTDpveKj6wDTDJsMFa2ko2+
q9PWKZpXCJpgVlfEjDMk7xM8FasbXidRMg1ocuyS10uqWelnNu5etZ1KKyryBbkr/J4RgTECdqBD
+OIi5lChHKnIeQpYZ/S7cbC1bNfJ2ZsXkxc3FCpIpYBkBWyqb6kp1wbnnn2GnmMVuEDn/HY748ws
r4Ct+h3UOkejZs9HsRoMavPnxw/VwuQJbISH/0FElI28LNYaz/8mJYoMLXhVetlnpuK61qL5aYdq
rz4CfeRaIRcTXWfV8hiz2hZLEHyhNgGYE24nTq8fGUhsDgPEbMPgZD5s1jxw+cOjUX5o3Ny6e0dl
diAmYMlyUyC11xw5ybKGEOpybjaOD2A1EmWcdiE/hk+aXH3zjjJBMNgJ/rTF5peOo9vAx7gkACr2
K+sGNsa2edTPBOdvdlewK93faU7u/JZWRTS6nxZ4eQJwoqZG6cAaLeTIF43UZWPY8GOUjHyewgbI
6QNhHUTSjGKVJaAaXm4QcUm4VzzPS2NMELs1V2eYJFQpHCmUZ8u6RkdylFZ3wfuu85lCIWW08m2I
xHwDCx0cz/w2kIEb4ItZYYfA/Igs3S2ydQNZuwHB75TFu302L3OwrdQ7Z4BWPjY2T4F/cj3o2PsA
0HTNSsAsR+xiHFv4PmBIrUt0BCPEegz2ZjUZNqfAKAvmmwsiQj5i6WFXTX5N9G1lRWBW4u4FDVUp
ab+p2B0I4cz0dD2P7EhTsCEEKS+P0xVVYxebhUMy2l5cAe6cim31iZhFWqVMJFT9ze1mjW2MSZnx
DgxwXYtgQdRHHYwJqpiRHDQrrrYnf1b6rWoTyUhXWdNBGaJCljA/lf4t7HAmj+RFVLodkhNbQCTZ
8MvnDsuDqH6SzHRXpx2QJy7eEryIEr4DckF1akG5cPnaYf0KF9lJVkQp5K5yOZXVT97FTdvUP52G
QhJ+NuhQAYF3MxEEDTTXSHYdmbVibZEFtydpd/Ag7cIFdd69ed8GuaKuffBXZsxa4viN+04TuUdn
OIqb6BXe81Vo9W2hzRViZYXrVvg30zXIv/ADAHRtG6WRtU863tZ0YdozLHPoDiVTQ9yuN19Yiaor
QOP4Sq6/6lzhlRL2hR+HYNR+/Nexv1wpYPHFE2iC8AoeMpZGB/qDxHZjjd2/N5u9KaNWmIU7Mlbs
lxy7vmaaLVGsHCX231hjGONqS4bYmBWftkTz/sN3JAGBqd+m8Aksa55PqpLSRkyNUrKl/on2FZVW
FUWI6MEKQnoK2uyo/hkwONczQnoQI+jSMoQX2wfsqFlcT3NLhvCVbSM40iMilk+4Q6arlAydRkTz
u7vYigItp3GM8az7KcaoUCCpQogpQoC+TkBuld4zC/Yqrl4OLMCvMeAPOJKk8kWK7tgDifwaFeDj
QVll2uB4AGZh3UJZ5CdoYlgBZ/b4dL0hsaqQ1y36339lnU+Ws9pZTqLKlrrlTQVOdjHBSrmtKtpI
hQV6bpiSsyQKiaZ5Dlt+cM3VCYyfYm42sueCDJDewv3hkTAg5u54hC/7TV64jdcLIY/RBjZAtXFY
DFIDJk1RG7z180QlSdJNUWrYbi/vTWuTSPnGfH9Yletjohwb65uuV6oDREXMRUwOTBBm6xhQrJB6
WDHIVydPy9oMC1K8njWGxA4jIiwvHg6hzobNi+VKVvy4yPI1zS1IUM2R4k10RGTU81LXuxs1GhiR
3MHaQmING3t8WJvJc1XipHuuBzc7GRR8jUJWBZ1SOWHhZF8W5gegsudTd+WKnedjTybd0+6YTykI
HczE34eKobBhdx3U8CqO6C0/UF8FgaPbgP7IXTrBBI4EAadwy/HRh2RZu4B6sZnXYMlVvTDZF1Es
lNurOKljudPavw7H6OzIvAul7fZt75odK/eMiPxOVZMu1NqphSCFruSVHOeJWV/JjIW3djuYVdC0
JFVuGzQqYVh7NjVQwqKc1SjaGXadFmJZCh3wr6oCedjk9Y81ZBZEMmnbvk/ovSXUQsLRi148DDKI
qhmT6UXXBAuhdJ69Hx/DBJBR/GoIFUGEEHFQLtBThgt3tRkZ7sXZBAuhrHQYI0OFEVJodAAXAQTQ
YDR+AAm+DqFonRj1oWqBEcreCIGJgGH2isKyZ12Rn+GNsvDfBOCife6+c7qDnigrfsop+WPl37rO
bHffpZeXxVzVpsHmrw28fTwBh3vtKfWEd/A0ZgxBHXHa4rWx4i/XSUzSyQGcl7GXbNDA9r+87j0/
Q2jtNYowL1OMpKAPEiIU4UhxEZRhkb1/6zZBRAoaRTI3nJf7muZrDU2x7UBiErelJaVUHveRu3h6
7idQSwMEFAAAAAgArmZpPwxGz8E1AQAAHAMAABEAAABNZW51RmFjdG9yeS5wYXRjaL1RTU8CMRC9
k/AfJnvqRljibiEY1ANqAok3/AOzZRaqu23TNioR/7vtRhNBPm7OpZ3Je3lv3uSXmOe9vOh2bkE2
RlsPz/iKWUmoXDZX3mpnSHip1cO7IBM/k3NgbQOEFwXyYtTjxTji92swmKFa1gTTQL4nJ6w0gQhr
uVySAmO1Ies3h6il1nUggXSzFjyNzQ1UWDtqvUXxMXLOe5xfxcGx8nYDHxFwovZlfq+ZrcjH8VxV
mok0trvrsDT7obN0ckrpEwR6sQZ2OHOg9LzTWq+yN7SKJXeolPYQ/EDZRhUMQmV1A6JG5yCBC1DY
UHiSLDnj7DvS4VDw0ajbuf6bUAWMampIefekFy/SZEIrj1I5FlVS2G7hGEB6amJwC49eikcsqWZp
2m7b7/eD9j/IRcbOnVv5L1BLAQI/ABQAAAAIAKFmaT/Yq2WEMxMAAABjAAAQACQAAAAAAAAAIAAA
AAAAAABNZW51RmFjdG9yeS5qYXZhCgAgAAAAAAABABgAbFBnabCezAFsUGdpsJ7MATrTXuysnswB
UEsBAj8AFAAAAAgArmZpPwxGz8E1AQAAHAMAABEAJAAAAAAAAAAgAAAAYRMAAE1lbnVGYWN0b3J5
LnBhdGNoCgAgAAAAAAABABgAygWqebCezAHKBap5sJ7MAbd76D6wnswBUEsFBgAAAAACAAIAxQAA
AMUUAAAAAA==

--f46d040fa0006c4dea04b14839ca
Content-Type: text/plain; charset=us-ascii


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
--f46d040fa0006c4dea04b14839ca--