Re: Re: browsehost in new version

Michael Green <[email protected]> Wed, 09 Jun 2010 15:45:35 +0100
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
--4M6N3-q5i8TChN0lSYzRApBuCEaSoVzjxue7nnn
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

Joseph,

Out of curiousity, where are you obtaining the Gnutella specifications from?

At any rate, this sentence from the specs sums up your answer: "A 
servent can request a file push by routing a Push request back to the 
servent that sent the QueryHit message describing the target file.A  
servent can request a file push by routing a Push request back to the 
servent that sent the QueryHit message describing the target file."

Let's put that in laymen's terms:

Say that you found a file that interests you and wish to download it. 
You try to connect to the remote peer, but it turns out that peer is 
firewalled. You can't download it directly then. So now what?

Well, that remote peer *is* connected to the Gnutella network somehow, 
otherwise you never got a QueryHit with all the matches for your Query. 
What if we send a message back along the same route of the QueryHit? 
That's what the "PUSH" message does.

You build a small "PUSH" message, containing some details about how 
*your* peer can be contacted and which file you're interested in. This 
message is sent to the immediately connected peer from whom you've 
received the matching QueryHit (meaning, you're already connected to the 
path this message should take, so no need to send "GNUTELLA CONNECT/0.6" 
again!). This peer forwards it to the next one, etc., etc., until it 
reaches the originator of the QueryHit. Think of a breadcrum trail - the 
QueryHit serves as a breadcrum back to the originating peer, which a 
Push message follows.

That originating peer sees the "PUSH" message and interprets it as "Hey, 
I can't connect to you to download this file. Can you connect to me 
instead and I'll grab it?". An outgoing connection to *your* peer is 
then made and starts with a "GIV" (as in the opposite of HTTP's "GET"). 
This GIV will contain details for you to verify and to retrieve the file 
you wish to download...

As you may expect, this would not work if both peers are firewalled (the 
one who received can't connect to you either). In such case, the Push 
message is ineffective. Most servents check their own connectivity and 
will skip sending the Push message if they're firewalled. This is to 
save unneccesary messages over the network. There are some other 
extensions which do provide a means of two firewalled peers to download 
the file anyway, but you should focus on the basics first.

Hopefully this will help a bit.

-- Mike

On 09/06/2010 03:35, josephversaceca wrote:
> Thanks Raphael,
>
> I have read more and believe I am coming to grasp push requests. Could you explain to me or give me an example of the message that I would send to the proxy to request a push? Also can I just send the push request or do I have to begin with the GNUTELLA CONNECT/0.6 first?
>
>
>    


--4M6N3-q5i8TChN0lSYzRApBuCEaSoVzjxue7nnn
Content-Type: text/html; charset=ISO-8859-1
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>Joseph,<br>
<br>
Out of curiousity, where are you obtaining the Gnutella specifications from?<br>
<br>
At any rate, this sentence from the specs sums up your answer: &quot;A <br>
servent can request a file push by routing a Push request back to the <br>
servent that sent the QueryHit message describing the target file.A  <br>
servent can request a file push by routing a Push request back to the <br>
servent that sent the QueryHit message describing the target file.&quot;<br>
<br>
Let's put that in laymen's terms:<br>
<br>
Say that you found a file that interests you and wish to download it. <br>
You try to connect to the remote peer, but it turns out that peer is <br>
firewalled. You can't download it directly then. So now what?<br>
<br>
Well, that remote peer *is* connected to the Gnutella network somehow, <br>
otherwise you never got a QueryHit with all the matches for your Query. <br>
What if we send a message back along the same route of the QueryHit? <br>
That's what the &quot;PUSH&quot; message does.<br>
<br>
You build a small &quot;PUSH&quot; message, containing some details about how <br>
*your* peer can be contacted and which file you're interested in. This <br>
message is sent to the immediately connected peer from whom you've <br>
received the matching QueryHit (meaning, you're already connected to the <br>
path this message should take, so no need to send &quot;GNUTELLA CONNECT/0.6&quot; <br>
again!). This peer forwards it to the next one, etc., etc., until it <br>
reaches the originator of the QueryHit. Think of a breadcrum trail - the <br>
QueryHit serves as a breadcrum back to the originating peer, which a <br>
Push message follows.<br>
<br>
That originating peer sees the &quot;PUSH&quot; message and interprets it as &quot;Hey, <br>
I can't connect to you to download this file. Can you connect to me <br>
instead and I'll grab it?&quot;. An outgoing connection to *your* peer is <br>
then made and starts with a &quot;GIV&quot; (as in the opposite of HTTP's &quot;GET&quot;). <br>
This GIV will contain details for you to verify and to retrieve the file <br>
you wish to download...<br>
<br>
As you may expect, this would not work if both peers are firewalled (the <br>
one who received can't connect to you either). In such case, the Push <br>
message is ineffective. Most servents check their own connectivity and <br>
will skip sending the Push message if they're firewalled. This is to <br>
save unneccesary messages over the network. There are some other <br>
extensions which do provide a means of two firewalled peers to download <br>
the file anyway, but you should focus on the basics first.<br>
<br>
Hopefully this will help a bit.<br>
<br>
-- Mike<br>
<br>
On 09/06/2010 03:35, josephversaceca wrote:<br>
&gt; Thanks Raphael,<br>
&gt;<br>
&gt; I have read more and believe I am coming to grasp push requests. Could you explain to me or give me an example of the message that I would send to the proxy to request a push? Also can I just send the push request or do I have to begin with the GNUTELLA CONNECT/0.6 first?<br>
&gt;<br>
&gt;<br>
&gt;    <br>
<br>
</p>

    </div>
     

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

        
  
   
    <div id="ygrp-actbar" style="clear: both; margin-bottom: 10px; white-space: nowrap; color: #666; padding-top: 15px;">
      <div>
        <a href="mailto:[email protected]?subject=Re: [the_gdf] Re: browsehost in new version" style="margin-right: 0; padding-right: 0;">
	  Reply to <span style="font-weight: 700;">sender</span></a> |
        <a href="mailto:[email protected]?subject=Re: [the_gdf] Re: browsehost in new version">
	  Reply to <span style="font-weight: 700;">group</span></a> |
        	  <a href="http://groups.yahoo.com/group/the_gdf/post;_ylc=X3oDMTJxY2FzOTAzBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzQzBHNlYwNmdHIEc2xrA3JwbHkEc3RpbWUDMTI3NjA5NDc4Ng--?act=reply&messageNum=23743">Reply <span style="font-weight: 700;">via web post</span></a> |
            	<a href="http://groups.yahoo.com/group/the_gdf/post;_ylc=X3oDMTJlZ21pMG1sBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA250cGMEc3RpbWUDMTI3NjA5NDc4Ng--" style="font-weight: 700;">Start a New Topic</a>
      </div>

                <a href="http://groups.yahoo.com/group/the_gdf/message/23723;_ylc=X3oDMTM2OHIwdG1hBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBG1zZ0lkAzIzNzQzBHNlYwNmdHIEc2xrA3Z0cGMEc3RpbWUDMTI3NjA5NDc4NgR0cGNJZAMyMzcyMw--">Messages in this topic</a>
          (<span style="font-weight: 700;">6</span>)
          </div> 
<!------- Start Nav Bar ------>

<!-- |**|begin egp html banner|**| -->
<div id="ygrp-vital" style="background-color: #e0ecee; font-family: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">
      <span id="vithd" style="font-weight: bold; color: #333; text-transform: uppercase; ">Recent Activity:</span>

    <ul style="list-style-type: none; margin: 0; padding: 0; display: inline;">
            <li style="border-right: 1px solid #000; font-weight: 700; display: inline; padding: 0 5px; margin-left: 0;">
      <span class="cat"><a href="http://groups.yahoo.com/group/the_gdf/members;_ylc=X3oDMTJmYW9sdDZzBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzEyNzYwOTQ3ODY-?o=6" style="text-decoration: none;">New Members</a></span>
      <span class="ct" style="color: #ff7900;">1</span>
    </li>
                                              </ul>
    
  <div style="clear: both; padding-top: 2px; color: #1e66ae;">
    <a href="http://groups.yahoo.com/group/the_gdf;_ylc=X3oDMTJlNzQ2OTgzBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTI3NjA5NDc4Ng--" style="text-decoration: none;">Visit Your Group</a>
  </div>
</div>

              <div id="ygrp-mkp" style="border: 1px solid #d8d8d8; clear: both; float: left; font-family: Arial; margin: 5px 0 10px 0; padding: 0 10px;">
      <div id="hd" style="color: #628c2a; font-size: 85%; font-weight: 700; line-height: 122%; margin: 10px 0;">MARKETPLACE</div>
      <div id="ads" style="margin-bottom: 10px;">
                  <div class="ad" style="color: #628C2A; font-family: Arial; font-weight: 700; padding: 0 0;">
            <p><a href="http://us.ard.yahoo.com/SIG=15o9ug47i/M=493064.13983314.14041046.13298430/D=groups/S=1705016061:MKP1/Y=YAHOO/EXP=1276101986/L=c81ab29a-73d5-11df-a307-e34b6faa28bb/B=XWawCWKJiR8-/J=1276094786710093/K=IqndecRWqlSi3MDwGIMj8g/A=6060255/R=0/SIG=1194m4keh/*http://us.toolbar.yahoo.com/?.cpdl=grpj">Stay on top of your group activity without leaving the page you're on - Get the Yahoo! Toolbar now.</a></p> <script language=javascript>
if(window.yzq_d==null)window.yzq_d=new Object();
window.yzq_d['XWawCWKJiR8-']='&U=13c8thaum%2fN%3dXWawCWKJiR8-%2fC%3d493064.13983314.14041046.13298430%2fD%3dMKP1%2fB%3d6060255%2fV%3d1';
</script><noscript><img width=1 height=1 alt="" src="http://us.bc.yahoo.com/b?P=c81ab29a-73d5-11df-a307-e34b6faa28bb&T=1d9c5hfkc%2fX%3d1276094786%2fE%3d1705016061%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO%2fF%3d3802905477%2fH%3dY29udGVudD0iR3JvdXBzO1dlYnNpdGVfU2VydmljZXM7UG9sbHM7QnJpZWZjYXNlO0ZsaWNrcjtHZW9jaXRpZXM7UGhvdG9zO1lhaG9vX1RlY2g7TWVtYmVyX0RpcmVjdG9yeTtQb2RjYXN0czsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImM4MWFiMjlhLTczZDUtMTFkZi1hMzA3LWUzNGI2ZmFhMjhiYiIgc2l0ZUlkPSIyNzk2MDUxIiB0U3RtcD0iMTI3NjA5NDc4NjY4MjY5NyIg%2fQ%3d-1%2fS%3d1%2fJ%3d27228962&U=13c8thaum%2fN%3dXWawCWKJiR8-%2fC%3d493064.13983314.14041046.13298430%2fD%3dMKP1%2fB%3d6060255%2fV%3d1"></noscript>          </div>
                          <div class="ad" style="color: #628C2A; font-family: Arial; font-weight: 700; padding: 0 0;">
                          <hr style="border: 1px solid #d8d8d8;">
                        <p><a href="http://us.ard.yahoo.com/SIG=15oao575k/M=493064.13814537.14041040.10835568/D=groups/S=1705016061:MKP1/Y=YAHOO/EXP=1276101986/L=c81ab29a-73d5-11df-a307-e34b6faa28bb/B=XmawCWKJiR8-/J=1276094786710093/K=IqndecRWqlSi3MDwGIMj8g/A=6078812/R=0/SIG=114ae4ln1/*http://dogandcatanswers.yahoo.com/">Get great advice about dogs and cats.  Visit the Dog & Cat Answers Center.</a></p><script language=javascript>
if(window.yzq_d==null)window.yzq_d=new Object();
window.yzq_d['XmawCWKJiR8-']='&U=13ceu25ss%2fN%3dXmawCWKJiR8-%2fC%3d493064.13814537.14041040.10835568%2fD%3dMKP1%2fB%3d6078812%2fV%3d1';
</script><noscript><img width=1 height=1 alt="" src="http://us.bc.yahoo.com/b?P=c81ab29a-73d5-11df-a307-e34b6faa28bb&T=1d9d994np%2fX%3d1276094786%2fE%3d1705016061%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO%2fF%3d2488888685%2fH%3dY29udGVudD0iR3JvdXBzO1dlYnNpdGVfU2VydmljZXM7UG9sbHM7QnJpZWZjYXNlO0ZsaWNrcjtHZW9jaXRpZXM7UGhvdG9zO1lhaG9vX1RlY2g7TWVtYmVyX0RpcmVjdG9yeTtQb2RjYXN0czsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImM4MWFiMjlhLTczZDUtMTFkZi1hMzA3LWUzNGI2ZmFhMjhiYiIgc2l0ZUlkPSIyNzk2MDUxIiB0U3RtcD0iMTI3NjA5NDc4NjY4MjY5NyIg%2fQ%3d-1%2fS%3d1%2fJ%3d27228962&U=13ceu25ss%2fN%3dXmawCWKJiR8-%2fC%3d493064.13814537.14041040.10835568%2fD%3dMKP1%2fB%3d6078812%2fV%3d1"></noscript>          </div>
                          <div class="ad" style="color: #628C2A; font-family: Arial; font-weight: 700; padding: 0 0;">
                          <hr style="border: 1px solid #d8d8d8;">
                        <p><a href="http://us.ard.yahoo.com/SIG=15odnvstf/M=493064.14012770.13963757.13298430/D=groups/S=1705016061:MKP1/Y=YAHOO/EXP=1276101986/L=c81ab29a-73d5-11df-a307-e34b6faa28bb/B=X2awCWKJiR8-/J=1276094786710093/K=IqndecRWqlSi3MDwGIMj8g/A=6093983/R=0/*http://us.lrd.yahoo.com/_ylc=X3oDMTFnaW51Y3EyBHRtX2RtZWNoA1RleHQgTGluawR0bV9sbmsDVTExMjc3MDUEdG1fbmV0A1lhaG9vIQ--/SIG=1219e5kan/**http%3A//toolbar.yahoo.com/tour%3Ftab=wc%26.intl=us%26.cpdl=wc">Get real-time World Cup coverage on the Yahoo! Toolbar.  Download now to win a signed team jersey!</a></p> <script language=javascript>
if(window.yzq_d==null)window.yzq_d=new Object();
window.yzq_d['X2awCWKJiR8-']='&U=13cfdnrkd%2fN%3dX2awCWKJiR8-%2fC%3d493064.14012770.13963757.13298430%2fD%3dMKP1%2fB%3d6093983%2fV%3d1';
</script><noscript><img width=1 height=1 alt="" src="http://us.bc.yahoo.com/b?P=c81ab29a-73d5-11df-a307-e34b6faa28bb&T=1d9ua05m4%2fX%3d1276094786%2fE%3d1705016061%2fR%3dgroups%2fK%3d5%2fV%3d2.1%2fW%3dH%2fY%3dYAHOO%2fF%3d3945690258%2fH%3dY29udGVudD0iR3JvdXBzO1dlYnNpdGVfU2VydmljZXM7UG9sbHM7QnJpZWZjYXNlO0ZsaWNrcjtHZW9jaXRpZXM7UGhvdG9zO1lhaG9vX1RlY2g7TWVtYmVyX0RpcmVjdG9yeTtQb2RjYXN0czsiIGRpc2FibGVzaHVmZmxpbmc9IjEiIHNlcnZlSWQ9ImM4MWFiMjlhLTczZDUtMTFkZi1hMzA3LWUzNGI2ZmFhMjhiYiIgc2l0ZUlkPSIyNzk2MDUxIiB0U3RtcD0iMTI3NjA5NDc4NjY4MjY5NyIg%2fQ%3d-1%2fS%3d1%2fJ%3d27228962&U=13cfdnrkd%2fN%3dX2awCWKJiR8-%2fC%3d493064.14012770.13963757.13298430%2fD%3dMKP1%2fB%3d6093983%2fV%3d1"></noscript>          </div>
              </div>
    </div>
  
<div id="ft" style="font-family: Arial; font-size: 11px; margin-top: 5px; padding: 0 2px 0 0; clear: both;">
  <a href="http://groups.yahoo.com/;_ylc=X3oDMTJkYnRhYzZpBF9TAzk3MzU5NzE0BGdycElkAzI2ODQyNTMEZ3Jwc3BJZAMxNzA1MDE2MDYxBHNlYwNmdHIEc2xrA2dmcARzdGltZQMxMjc2MDk0Nzg2" style="float: left;"><img src="http://l.yimg.com/a/i/us/yg/logo/us.gif" height="15" width="137" alt="Yahoo! Groups" style="border: 0;"/></a>
  <div style="color: #747575; float: right;">Switch to: <a href="mailto:[email protected]?subject=Change Delivery Format: Traditional" style="text-decoration: none;">Text-Only</a>, <a href="mailto:[email protected]?subject=Email Delivery: Digest" class="margin-rt" style="text-decoration: none;">Daily Digest</a> &bull; <a href="mailto:[email protected]?subject=Unsubscribe" style="text-decoration: none;">Unsubscribe</a> &bull; <a href="http://docs.yahoo.com/info/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=2684253/grpspId=1705016061/msgId=23743/stime=1276094786/nc1=6083913/nc2=5733755/nc3=5191955" width="1" height="1"> <br>

<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 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;
}

  a {
    color: #1e66ae;
  }

  #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-mlmsg a {
    color: #1E66AE;
  }

  #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 -->


--4M6N3-q5i8TChN0lSYzRApBuCEaSoVzjxue7nnn--