Re: Re: Conca : a small interpreter

<[email protected]> 01 May 2014 03:17:34 -0700
Newsgroups gmane.comp.lang.concatenative
Message-ID <[email protected]>
--9nlWnTS9ocNmxdhsK3FKVLWiM6a5jwOaA8HvrLV
Content-Type:  text/plain;  charset=utf-8 
Content-Transfer-Encoding: base64

PldlZCBBcHIgMzAsIDIwMTQgMzo1MyBwbSAoUERUKSAuIFBvc3RlZCBieToNCj4iQ2xhdWRl
IE1hcmluaWVyIg0KPg0KPk9uIFdlZCwgMzAgQXByIDIwMTQsIHBtbDU0MDExNEBnbWFpbC5j
b20gd3JvdGU6DQo+Pg0KPj4gSW50ZXJlc3RpbmdseSwgZnJvbSB0aGUgcG9pbnQgb2Ygdmll
dyBvZiBlcnJvciBjaGVja2luZywgdGhlIHNpbXBsaWZpZWQNCj4+IHZlcnNpb24gb2YgbXkg
b3duIEZ1cnBoeSAoc2VlDQo+PiBodHRwOi8vdXNlcnMuYmVhZ2xlLmNvbS5hdS9wZXRlcmwv
ZnVycGh5Lmh0bWwpIGRvZXNuJ3QgaGF2ZSBhbnkgcG9zc2libGUNCj4+IGNvbXBpbGUgdGlt
ZSBlcnJvcnMgYXBhcnQgZnJvbSBpbnN1ZmZpY2llbnQgbWVtb3J5LiBBTEwgcG9zc2libGUg
c291cmNlDQo+PiBpcyBzeW50YWN0aWNhbGx5IHZhbGlkLCBhbmQgcnVuIHRpbWUgY2hlY2tz
IGFyZSB0aGUgb25seSBtZWFuaW5nZnVsDQo+PiBvbmVzISBCdXQgSSBhbHNvIGhhdmUgaW1t
ZWRpYXRlIHdvcmRzIHRvIHJ1biBkdXJpbmcgY29tcGlsYXRpb24gdG8NCj4+IHByb3ZpZGUg
c3ludGFjdGljIHN1Z2FyLCB3aGljaCBub3Qgb25seSBtYWtlcyBzb21lIHN5bnRheCBsaWtl
IG1hdGNoaW5nDQo+PiBzcXVhcmUgYnJhY2tldHMgYW5kIHF1b3RhdGlvbiBtYXJrcyBuZWNl
c3NhcnksIGl0IGFsc28gcHJvdmlkZXMgbmF0dXJhbA0KPj4gcGxhY2VzIHRvIHRlc3QgZm9y
IGVycm9ycyBpbiB0aGVtLiBJZGVhbGx5LCB0aGUgY29tcGlsZXIgYnVpbGRzIHVwIGENCj4+
IHByZXR0eSBwcmludGVkIGxpc3RpbmcgYXMgaXQgZ29lcywgYW5kIHN5bnRheCBmYWlsdXJl
cyBzaW1wbHkgZHJvcCBlcnJvcg0KPj4gYW5ub3RhdGlvbnMgaW50byB0aGF0IHdoaWxlIGtl
ZXBpbmcgdHJhY2sgb2YgdGhlIGVycm9yIGxldmVsIHJlYWNoZWQgYW5kDQo+PiBtYWtpbmcg
c2FmZS1pc2ggZGVmYXVsdCBhc3N1bXB0aW9ucyB0byB0cnkgdG8gZmlsbCBpbiBtaXNtYXRj
aGVzOyBhdCB0aGUNCj4+IGVuZCwganVzdCBiZWZvcmUgdGhlIGNvbXBpbGVyIHRyaWdnZXJz
IGl0cyBjb21waWxlLWFuZC1nbyBydW4gdGltZQ0KPj4gZXhlY3V0aW9uLCBpdCBzaG91bGQg
Y2hlY2sgdGhlIGVycm9yIGxldmVsIGFuZCBvbmx5IHJ1biBpZiBhbiBpbW1lZGlhdGUNCj4+
IHdvcmQgaGFzIHNwZWNpZmllZCBhIHNhZmUgaGlnaGVyIGVycm9yIGxldmVsIHRoYW4gYSBk
ZWZhdWx0IG9mIG5vIGVycm9ycw0KPj4gKGFuZCB0aGVyZSBzaG91bGQgYmUgYSBkZWZhdWx0
IG91dHB1dCBvZiB0aGUgbGlzdGluZyBhdCB0aGF0IHN0YWdlDQo+PiB3aGV0aGVyIHRoZSBw
cm9ncmFtIHJ1bnMgb3Igbm90LCB1bmxlc3MgYW5vdGhlciBpbW1lZGlhdGUgd29yZCBoYXMN
Cj4+IHN0b3BwZWQgdGhhdCkuDQo+Pg0KPj4gQSBnb29kIGFsbCByb3VuZCBndWlkZSB0byB0
aGlzIHdob2xlIGFyZWEgaXMgUC5KLkJyb3duJ3MgIldyaXRpbmcNCj4+IEludGVyYWN0aXZl
IENvbXBpbGVycyBhbmQgSW50ZXJwcmV0ZXJzIi4NCj4NCj5JIHRlbmQgdG8gcmVhZCBlLW1h
aWwgZnJvbSB0aGlzIGFjY291bnQgaW4gdGhlIGV2ZW5pbmcgKE5vcnRoIEFtZXJpY2EsDQo+
RURUKS4NCg0KSSBhbSBpbiBBdXN0cmFsaWE7IGl0J3MgYXJvdW5kIDggcC5tLiByaWdodCBu
b3cuDQoNCj4NCj5JIGFtIHJlYWRpbmcgYW5kIGRpZ2VzdGluZyB3aGF0IHlvdSBzYXkuIFRo
YXQncyBhIGxvdCB0byB0aGluayBhYm91dC4NCj4NCj5ZZXMsIHRoZXJlIGlzIHNvIGxvdHRs
ZSBzeW50YXggdGhhdCBhbGwgcHJvZ3JhbXMgYXJlIHZhbGlkLiBUaGUgaXNzdWUgaGVyZQ0K
PmlzIHR5cGUgY2hlY2tpbmcuIEF0IHJ1bi10aW1lLCBidWlsdC1pbiB3b3JkcyBjaGVjayB0
aGUgdHlwZSBvZiB0aGUgZGF0YQ0KPnRoZXkgdXNlLiBUaGUgZHluYW1pYyBuYXR1cmUgb2Yg
dGhlIGxhbmd1YWdlIG1ha2UgdGhpcyB0aGUgZGVmYXVsdA0KPmJlaGF2aW91ci4gU3RhdGlj
IHR5cGUgY2hlY2tpbmcgcmVxdWlyZXMga25vd2xlZGdlIG9mIHdoYXQgdGhlIGNhbGxlcg0K
PmV4cGVjdHMgKHVzdWFsbHkgZWFzeSkgYW5kIG9mIHdoYXQgdGhlIGNhbGxlciBpcyBwcm92
aWRpbmcgKG11Y2ggbW9yZQ0KPmRpZmZpY3VsdCkuDQoNClRoZSBpc3N1ZSBpcyBwYXJ0bHkg
d2hhdCB0aGUgc3ludGF4IGZlYXR1cmVzIG9mZmVyIGEgcHJvZ3JhbW1lciBieSBob2xkaW5n
IGhpcyBoYW5kIGFuZCBtYWtpbmcgaGltIGRvIHRoZSByaWdodCB0aGluZywgYW5kIHBhcnRs
eSB3aGF0IGZ1bmN0aW9uYWxpdHkgY2FuIGJlIHByb3ZpZGVkIG1vc3QgZWFzaWx5IHRoYXQg
d2F5LiBGb3IgaW5zdGFuY2UsIHlvdSBjYW4gZG8gb2JqZWN0IG9yaWVudGVkIHByb2dyYW1t
aW5nIGluIEMgZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBoYXZlIHRoZSBmZWF0dXJlcyBmb3Ig
Y29kaW5nIGl0IGRpcmVjdGx5LCBidXQgdGhlIGZlYXR1cmVzIGZvciB0aGF0IGluIEMrKyBt
YWtlIGl0IGVhc2llci4NCg0KU2luY2UgSSBjb21lIGZyb20gYSBGb3J0aC1pc2ggb3JpZW50
YXRpb24sIEkgZG9uJ3Qgd2FudCB0byBjb25zdHJhaW4gdGhlIHByb2dyYW1tZXIgdG9vIG11
Y2guIFJhdGhlciwgSSBoYXZlIGZvdW5kIHRoYXQgY2FyZWZ1bCBjaG9pY2Ugb2YgbWVhbmlu
Z2Z1bCB3b3JkIG5hbWVzIGhlbHBzIGEgbG90IGhlcmUgYnkgbWFraW5nIGhpbSB0aGluayB0
aHJvdWdoIHdoYXQgaGUgaXMgZG9pbmcuIFNvIGNhbGxlZCAiSHVuZ2FyaWFuIG5vdGF0aW9u
IiAtIG5hbWluZyBndWlkZWxpbmVzIHRvIHJlZmxlY3QgY29uY2VwdHVhbCB0eXBlcyAoaS5l
LiB3aGF0IHRoZSBwcm9ncmFtbWVyIGhhcyBpbiBtaW5kIGFzIGEgdHlwZSwgbm90IHdoYXQg
dGhlIHZpcnR1YWwgbWFjaGluZSB3aWxsIGluc2lzdCBvbikgLSBtYXkgaGVscCB0b28uDQoN
Ck92ZXIgYW5kIGFib3ZlIHRoYXQsIEkgaGF2ZSBmb3VuZCBGb3J0aCBzdGFjayBjb21tZW50
aW5nIGhlbHBmdWwsIGUuZy4gKCB0cnVlL2ZhbHNlIHZhbDEgdmFsMiAtLS0gdmFsICkgaXMg
YSBjb21tZW50IGZvciBGdXJwaHkncyBJRiB0aGF0IHNob3VsZCBtYWtlIGl0IGNsZWFyIHRo
YXQgaXQgZXhwZWN0cyB0aHJlZSBwYXJhbWV0ZXJzLCBvZiB3aGljaCB0aGUgZmlyc3Qgc2hv
dWxkIGJlIGNvbmNlcHR1YWxseSBCb29sZWFuIGJ1dCB0aGUgb3RoZXJzIGFyZSB1bnJlc3Ry
aWN0ZWQsIGFuZCBsZWF2ZXMganVzdCBvbmUgdW5yZXN0cmljdGVkIHZhbHVlLiBJIGhhdmUg
dGhvdWdodCBhYm91dCB1c2luZyBhIHZhcmlhbnQgb2YgdGhhdCBjb21tZW50IGZvcm1hbGlz
bSB0byBzZXQgdXAgImFzc2VydGlvbnMiLCBpLmUuIHBpZWNlcyBvZiBydW4gdGltZSBjb2Rl
IHRoYXQgYXJlIG9ubHkgdHJpZ2dlcmVkIGR1cmluZyB0ZXN0aW5nIGFuZCByZXR1cm4gZXJy
b3IgbWVzc2FnZXMgaWYgcGFyYW1ldGVycyBhbmQgcmVzdWx0cyBkb24ndCBtYXRjaCB0aGUg
YXNzZXJ0aW9ucy4gVGhhdCBtaWdodCBwZXJoYXBzIGJlIGV4dGVuZGVkIHRvIHN0YXRpYyB0
ZXN0aW5nIGR1cmluZyBjb21waWxhdGlvbi4NCg0KRm9yIG1lLCB0eXBlcyBkb24ndCBsb29r
IGFzIHByb21pc2luZyBhcyBhIGNvZGluZyBndWlkZWxpbmUgc28gbXVjaCBhcyBmb3IgaW1w
bGVtZW50aW5nIG9iamVjdCBvcmllbnRlZCBzdHVmZjsgV2lydGgncyBPYmVyb24gZmFtaWx5
IG9mIGxhbmd1YWdlcyBpbXBsZW1lbnRzIG9iamVjdCBvcmllbnRhdGlvbiBieSB1c2luZyB0
eXBlIGV4dGVuc2lvbiwgc28gaXQgc2hvdWxkIGJlIHBvc3NpYmxlLiBJZiBJIGV2ZXIgYWRk
IGl0IHRvIEZ1cnBoeSwgZmlyc3QgSSB3aWxsIGxvb2sgaGFyZCBhdCBPYmVyb24gYW5kIEZJ
Q0wgKGFuIG9iamVjdCBvcmllbnRlZCBGb3J0aCkuDQoNCj4NCj5UaGlzIGlzIHN0YXJ0aW5n
IHRvIGxvb2sgbGlrZSAibW9yZSB0aGFuIEkgY2FuIGNoZXciKDEpLg0KPg0KPlRoYW5rcyBm
b3IgdGhlIGNvbW1lbnRzLg0KPg0KPigxKSBBbWVyaWNhbiBFbmdsaXNoIGhhcyBhbiBhYnVu
ZGFudCBzdXBwbHkgb2YgY29sb3VyZnVsIGlkaW9tYXRpYw0KPmV4cHJlc3Npb25zLiA6LSkN
Cg0KQWx0aG91Z2ggSSBhbSBpbiBBdXN0cmFsaWEsIEkgYW0gaW4gZmFjdCBCcml0aXNoLCBv
ZiBhIHRoaXJkIGdlbmVyYXRpb24gb2Ygd29ybGQgdHJhdmVsbGVycy4gIkJpdGluZyBvZmYg
bW9yZSB0aGFuIHlvdSBjYW4gY2hldyIgaXNuJ3QgVS5TLiBFbmdsaXNoIGluIHBhcnRpY3Vs
YXIsIGp1c3QgRW5nbGlzaC4gVGhlbiBhZ2FpbiwgRnJlbmNoIGhhcyBub3QgYSBmZXcgc3Vj
aCBleHByZXNzaW9ucyBvZiBpdHMgb3duOyAiZmFpcmUgc3VlciBsZSBidXJub3VzIiAobWVz
IHBhcmVudHMgaGFiaXRhaWVudCBldCB0cmF2YWlsbGFpZW50IGVuIEFsZ2VycyBlbnRyZSAx
OTQ0IGV0IDE5NDgsIGV0IHMneSByZW5jb250cmFpZW50KSBhbmQgImFsbGVyIGF1eCBmcmFp
c2VzIiBjb21lIHRvIG1pbmQsIGp1c3Qgb2ZmIHRoZSB0b3Agb2YgbXkgaGVhZCAod2hpY2gg
aXMgaXRzZWxmIGFuIGV4cHJlc3Npb24pLiBQTUwuDQoNCj4NCj4tLSANCj5DbGF1ZGUgTWFy
aW5pZXI=

--9nlWnTS9ocNmxdhsK3FKVLWiM6a5jwOaA8HvrLV
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit




<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
</head>






 
<body style="background-color: #fff;">
<span style="display:none">&nbsp;</span>

<!--~-|**|PrettyHtmlStartT|**|-~-->
<div id="ygrp-mlmsg" style="position:relative;">
  <div id="ygrp-msg" style="z-index: 1;">
<!--~-|**|PrettyHtmlEndT|**|-~-->

    <div id="ygrp-text" >
      
      
      <p>&gt;Wed Apr 30, 2014 3:53 pm (PDT) . Posted by:<br>&gt;&quot;Claude Marinier&quot;<br>&gt;<br>&gt;On Wed, 30 Apr 2014, [email protected] wrote:<br>&gt;&gt;<br>&gt;&gt; Interestingly, from the point of view of error checking, the simplified<br>&gt;&gt; version of my own Furphy (see<br>&gt;&gt; http://users.beagle.com.au/peterl/furphy.html) doesn&#39;t have any possible<br>&gt;&gt; compile time errors apart from insufficient memory. ALL possible source<br>&gt;&gt; is syntactically valid, and run time checks are the only meaningful<br>&gt;&gt; ones! But I also have immediate words to run during compilation to<br>&gt;&gt; provide syntactic sugar, which not only makes some syntax like matching<br>&gt;&gt; square brackets and quotation marks necessary, it also provides natural<br>&gt;
 &gt; places to test for errors in them. Ideally, the compiler builds up a<br>&gt;&gt; pretty printed listing as it goes, and syntax failures simply drop error<br>&gt;&gt; annotations into that while keeping track of the error level reached and<br>&gt;&gt; making safe-ish default assumptions to try to fill in mismatches; at the<br>&gt;&gt; end, just before the compiler triggers its compile-and-go run time<br>&gt;&gt; execution, it should check the error level and only run if an immediate<br>&gt;&gt; word has specified a safe higher error level than a default of no errors<br>&gt;&gt; (and there should be a default output of the listing at that stage<br>&gt;&gt; whether the program runs or not, unless another immediate word has<br>&gt;&gt; stopped that).<br>&gt;&gt;<br>&gt;&gt; A good all r
 ound guide to this whole area is P.J.Brown&#39;s &quot;Writing<br>&gt;&gt; Interactive Compilers and Interpreters&quot;.<br>&gt;<br>&gt;I tend to read e-mail from this account in the evening (North America,<br>&gt;EDT).<br><br>I am in Australia; it&#39;s around 8 p.m. right now.<br><br>&gt;<br>&gt;I am reading and digesting what you say. That&#39;s a lot to think about.<br>&gt;<br>&gt;Yes, there is so lottle syntax that all programs are valid. The issue here<br>&gt;is type checking. At run-time, built-in words check the type of the data<br>&gt;they use. The dynamic nature of the language make this the default<br>&gt;behaviour. Static type checking requires knowledge of what the caller<br>&gt;expects (usually easy) and of what the caller is providing (much more<br>&gt;difficult).<br><br>T
 he issue is partly what the syntax features offer a programmer by holding his hand and making him do the right thing, and partly what functionality can be provided most easily that way. For instance, you can do object oriented programming in C even though it doesn&#39;t have the features for coding it directly, but the features for that in C&#43;+ make it easier.<br><br>Since I come from a Forth-ish orientation, I don&#39;t want to constrain the programmer too much. Rather, I have found that careful choice of meaningful word names helps a lot here by making him think through what he is doing. So called &quot;Hungarian notation&quot; - naming guidelines to reflect conceptual types (i.e. what the programmer has in mind as a type, not what the virtual machine will insist on) - may help too.
 <br><br>Over and above that, I have found Forth stack commenting helpful, e.g. ( true/false val1 val2 --- val ) is a comment for Furphy&#39;s IF that should make it clear that it expects three parameters, of which the first should be conceptually Boolean but the others are unrestricted, and leaves just one unrestricted value. I have thought about using a variant of that comment formalism to set up &quot;assertions&quot;, i.e. pieces of run time code that are only triggered during testing and return error messages if parameters and results don&#39;t match the assertions. That might perhaps be extended to static testing during compilation.<br><br>For me, types don&#39;t look as promising as a coding guideline so much as for implementing object oriented stuff; Wirth&#39;s Oberon family of l
 anguages implements object orientation by using type extension, so it should be possible. If I ever add it to Furphy, first I will look hard at Oberon and FICL (an object oriented Forth).<br><br>&gt;<br>&gt;This is starting to look like &quot;more than I can chew&quot;(1).<br>&gt;<br>&gt;Thanks for the comments.<br>&gt;<br>&gt;(1) American English has an abundant supply of colourful idiomatic<br>&gt;expressions. :-)<br><br>Although I am in Australia, I am in fact British, of a third generation of world travellers. &quot;Biting off more than you can chew&quot; isn&#39;t U.S. English in particular, just English. Then again, French has not a few such expressions of its own; &quot;faire suer le burnous&quot; (mes parents habitaient et travaillaient en Algers entre 1944 et 1948, et s&#39;y re
 ncontraient) and &quot;aller aux fraises&quot; come to mind, just off the top of my head (which is itself an expression). PML.<br><br>&gt;<br>&gt;-- <br>&gt;Claude Marinier</p>

    </div>
     

    <!--~-|**|PrettyHtmlStart|**|-~-->
    <div style="color: #fff; height: 0;">__._,_.___</div>

          
  
 

    
    <div style="clear:both"> </div>

    <table cellspacing=4px style="margin-top: 20px; margin-bottom: 10px; color: #2D50FD;">
      <tbody>
        <tr>
          <td style="font-size: 12px; font-family: arial; font-weight: bold; padding: 7px 5px 5px;"  >
                          <a style="text-decoration: none; color: #2D50FD" href="https://groups.yahoo.com/neo/groups/concatenative/conversations/messages/4988;_ylc=X3oDMTJwOTc3Y24zBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5ODgEc2VjA2Z0cgRzbGsDcnBseQRzdGltZQMxMzk4OTM5NDU1?act=reply&messageNum=4988">Reply via web post</a>
                      </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
            <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Re%3A%20Conca%20%3A%20a%20small%20interpreter" style="text-decoration: none; color: #2D50FD;">
               Reply to sender            </a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;">
            <a href="mailto:[email protected]?subject=Re%3A%20%5Bstack%5D%20Re%3A%20Conca%20%3A%20a%20small%20interpreter" style="text-decoration: none; color: #2D50FD">
              Reply to group            </a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;" >
            <a href="https://groups.yahoo.com/neo/groups/concatenative/conversations/newtopic;_ylc=X3oDMTJlZThmNTIyBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTM5ODkzOTQ1NQ--" style="text-decoration: none; color: #2D50FD">Start a New Topic</a>
          </td>
          <td>&bull;</td>
          <td style="font-size: 12px; font-family: arial; padding: 7px 5px 5px;color: #2D50FD;" >
                            <a href="https://groups.yahoo.com/neo/groups/concatenative/conversations/topics/4969;_ylc=X3oDMTM0c3ZsbGI0BF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BG1zZ0lkAzQ5ODgEc2VjA2Z0cgRzbGsDdnRwYwRzdGltZQMxMzk4OTM5NDU1BHRwY0lkAzQ5Njk-" style="text-decoration: none; color: #2D50FD;">Messages in this topic</a>
                (14)
                      </td>
        </tr>
      </tbody>
    </table>

        
<div id="megaphoneModule">
     
    <hr style="height:2px ; border-width:0; color:#E3E3E3; background-color:#E3E3E3;">
</div>

<!------- Start Nav Bar ------>




 

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #f2f2f2; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

    <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; "><a href="https://groups.yahoo.com/neo/groups/concatenative/info;_ylc=X3oDMTJlcTlmaXBqBF9TAzk3MzU5NzE0BGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTM5ODkzOTQ1NQ--" style="text-decoration: none;">Visit Your Group</a></span>

     <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
                                                    </ul>
  </div>


<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="https://groups.yahoo.com/neo;_ylc=X3oDMTJkY211dW1lBF9TAzk3NDc2NTkwBGdycElkAzE4MzkyNzQEZ3Jwc3BJZAMxNzA1MDA2NzY0BHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMzk4OTM5NDU1" style="float: left;"><img src="http://l.yimg.com/ru/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;"> &bull; <a href="https://info.yahoo.com/privacy/us/yahoo/groups/details.html" style="text-decoration: none;">Privacy</a> &bull; <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="https://info.yahoo.com/legal/us/yahoo/utos/terms/" style="text-decoration: none;">Terms of Use</a> </div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

 
  <!-- Sponsor -->
  <!-- |**|begin egp html banner|**| -->
  <div id="ygrp-sponsor" style="width:160px; float:right; clear:none; margin:0 0 25px 0; background: #fff;">

<!-- Start Recommendations -->
<div id="ygrp-reco">
     </div>
<!-- End Recommendations -->



  </div>   <!-- |**|end egp html banner|**| -->

  <div style="clear:both; color: #FFF; font-size:1px;">.</div>
</div>

  <img src="http://geo.yahoo.com/serv?s=97359714/grpId=1839274/grpspId=1705006764/msgId=4988/stime=1398939455" width="1" height="1"> <br>

<img src="http://y.analytics.yahoo.com/fpc.pl?ywarid=515FB27823A7407E&a=10001310322279&js=no&resp=img" width="1" height="1"> 

<div style="color: #fff; height: 0;">__,_._,___</div>
<!--~-|**|PrettyHtmlEnd|**|-~-->

</body>

<!--~-|**|PrettyHtmlStart|**|-~-->
<head>
  <style type="text/css">
  <!--
  #ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
  #ygrp-sponsor #ygrp-lc {
  font-family: Arial;
}

#ygrp-sponsor #ygrp-lc #hd {
  margin: 10px 0px;
  font-weight: 700;
  font-size: 78%;
  line-height: 122%;
}

#ygrp-sponsor #ygrp-lc .ad {
  margin-bottom: 10px;
  padding: 0 0;
}

  #actions {
    font-family: Verdana;
    font-size: 11px;
    padding: 10px 0;
  }

  #activity {
    background-color: #e0ecee;
    float: left;
    font-family: Verdana;
    font-size: 10px;
    padding: 10px;
  }

  #activity span {
    font-weight: 700;
  }

  #activity span:first-child {
    text-transform: uppercase;
  }

  #activity span a {
    color: #5085b6;
    text-decoration: none;
  }

  #activity span span {
    color: #ff7900;
  }

  #activity span .underline {
    text-decoration: underline;
  }

  .attach {
    clear: both;
    display: table;
    font-family: Arial;
    font-size: 12px;
    padding: 10px 0;
    width: 400px;
  }

  .attach div a {
    text-decoration: none;
  }

  .attach img {
    border: none;
    padding-right: 5px;
  }

  .attach label {
    display: block;
    margin-bottom: 5px;
  }

  .attach label a {
    text-decoration: none;
  }
  
  blockquote {
    margin: 0 0 0 4px;
  }

  .bold {
    font-family: Arial;
    font-size: 13px;
    font-weight: 700;
  }

  .bold a {
    text-decoration: none;
  }

  dd.last p a {
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span {
    margin-right: 10px;
    font-family: Verdana;
    font-weight: 700;
  }

  dd.last p span.yshortcuts {
    margin-right: 0;
  }

  div.attach-table div div a {
    text-decoration: none;
  }

  div.attach-table {
    width: 400px;
  }

  div.file-title a, div.file-title a:active, div.file-title a:hover, div.file-title a:visited {
    text-decoration: none;
  }

  div.photo-title a, div.photo-title a:active, div.photo-title a:hover, div.photo-title a:visited {
    text-decoration: none;
  }

  div#ygrp-mlmsg #ygrp-msg p a span.yshortcuts {
    font-family: Verdana;
    font-size: 10px;
    font-weight: normal;
  }

  .green {
    color: #628c2a;
  }

  .MsoNormal {
    margin: 0 0 0 0;
  }

  o {
    font-size: 0;
  }

  #photos div {
    float: left;
    width: 72px;
  }

  #photos div div {
    border: 1px solid #666666;
    height: 62px;
    overflow: hidden;
    width: 62px;
  }

  #photos div label {
    color: #666666;
    font-size: 10px;
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    width: 64px;
  }

  #reco-category {
    font-size: 77%;
  }

  #reco-desc {
    font-size: 77%;
  }

  .replbq {
    margin: 4px;
  }

  #ygrp-actbar div a:first-child {
   /* border-right: 0px solid #000;*/
    margin-right: 2px;
    padding-right: 5px;
  }

  #ygrp-mlmsg {
    font-size: 13px;
    font-family: Arial, helvetica,clean, sans-serif;
    *font-size: small;
    *font: x-small;
  }

  #ygrp-mlmsg table {
    font-size: inherit;
    font: 100%;
  }

  #ygrp-mlmsg select, input, textarea {
    font: 99% Arial, Helvetica, clean, sans-serif;
  }

  #ygrp-mlmsg pre, code {
    font:115% monospace;
    *font-size:100%;
  }

  #ygrp-mlmsg * {
    line-height: 1.22em;
  }

  #ygrp-mlmsg #logo {
    padding-bottom: 10px;
  }


  #ygrp-msg p a {
    font-family: Verdana;
  }

  #ygrp-msg p#attach-count span {
    color: #1E66AE;
    font-weight: 700;
  }

  #ygrp-reco #reco-head {
    color: #ff7900;
    font-weight: 700;
  }

  #ygrp-reco {
    margin-bottom: 20px;
    padding: 0px;
  }

  #ygrp-sponsor #ov li a {
    font-size: 130%;
    text-decoration: none;
  }

  #ygrp-sponsor #ov li {
    font-size: 77%;
    list-style-type: square;
    padding: 6px 0;
  } 

  #ygrp-sponsor #ov ul {
    margin: 0;
    padding: 0 0 0 8px;
  }

  #ygrp-text {
    font-family: Georgia;
  }

  #ygrp-text p {
    margin: 0 0 1em 0;
  }

  #ygrp-text tt {
    font-size: 120%;
  }

  #ygrp-vital ul li:last-child {
    border-right: none !important; 
  } 
  -->
  </style>
</head>

<!--~-|**|PrettyHtmlEnd|**|-~-->
</html>
<!-- end group email -->


--9nlWnTS9ocNmxdhsK3FKVLWiM6a5jwOaA8HvrLV--