Request Method: | GET |
---|---|
Request URL: | http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html |
Exception Type: | UnicodeDecodeError |
Exception Value: | 'ascii' codec can't decode byte 0xc3 in position 41: ordinal not in range(128) |
Exception Location: | /internet/toolkit/python/BeautifulSoup.py in renderContents, line 442 |
/internet/appserv/DjangoTrunk/django/core/handlers/base.py
in get_response
Variable | Value |
---|---|
callback | <function by_slug at 0x1366230> |
callback_args | () |
callback_kwargs | {'slug': 'more-two-column-layout'} |
debug | <module 'django.views.debug' from '/internet/appserv/DjangoTrunk/django/views/debug.pyc'> |
e | <exceptions.UnicodeDecodeError instance at 0x1a4e7e8> |
exceptions | <module 'django.core.exceptions' from '/internet/appserv/DjangoTrunk/django/core/exceptions.pyc'> |
mail_admins | <function mail_admins at 0x7f98921826e0> |
middleware_method | <bound method XViewMiddleware.process_view of <django.middleware.doc.XViewMiddleware object at 0xd68510>> |
request | <WSGIRequest
GET:<MultiValueDict: {}>,
POST:<MultiValueDict: {}>,
COOKIES:{},
META:{'CONTENT_LENGTH': '0',
'DOCUMENT_ROOT': '/internet/hosts/www.hackermojo.com/html',
'HTTP_ACCEPT': '*/*',
'HTTP_HOST': 'hackermojo.com',
'HTTP_USER_AGENT': 'claudebot',
'PATH_INFO': '/mt-static/archives/2007/09/more-two-column-layout.html',
'QUERY_STRING': '',
'REMOTE_ADDR': '44.221.43.208',
'REMOTE_PORT': '50346',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SCGI': '1',
'SCRIPT_NAME': '',
'SCRIPT_URI': 'http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html',
'SCRIPT_URL': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SERVER_ADDR': '208.78.103.181',
'SERVER_ADMIN': '[no address given]',
'SERVER_NAME': 'hackermojo.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'Apache/2.2.14 (Ubuntu)',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f9895923210>,
'wsgi.input': <cStringIO.StringO object at 0x7f9895933760>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}> |
resolver | <django.core.urlresolvers.RegexURLResolver object at 0x17bce50> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f98957d6690> |
settings | <django.conf.LazySettings object at 0x7f989247f710> |
urlconf | 'urls' |
urlresolvers | <module 'django.core.urlresolvers' from '/internet/appserv/DjangoTrunk/django/core/urlresolvers.pyc'> |
/internet/hosts/www.hackermojo.com/hm/apps/blog/views.py
in by_slug
Variable | Value |
---|---|
c | [{'LastABTestScenario': 'top', 'request': <WSGIRequest
GET:<MultiValueDict: {}>,
POST:<MultiValueDict: {}>,
COOKIES:{},
META:{'CONTENT_LENGTH': '0',
'DOCUMENT_ROOT': '/internet/hosts/www.hackermojo.com/html',
'HTTP_ACCEPT': '*/*',
'HTTP_HOST': 'hackermojo.com',
'HTTP_USER_AGENT': 'claudebot',
'PATH_INFO': '/mt-static/archives/2007/09/more-two-column-layout.html',
'QUERY_STRING': '',
'REMOTE_ADDR': '44.221.43.208',
'REMOTE_PORT': '50346',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SCGI': '1',
'SCRIPT_NAME': '',
'SCRIPT_URI': 'http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html',
'SCRIPT_URL': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SERVER_ADDR': '208.78.103.181',
'SERVER_ADMIN': '[no address given]',
'SERVER_NAME': 'hackermojo.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'Apache/2.2.14 (Ubuntu)',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f9895923210>,
'wsgi.input': <cStringIO.StringO object at 0x7f9895933760>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>, 'recengines': 'top', 'LastABTest': 'recengines'}, {'LANGUAGES': (('ar', 'Arabic'), ('bn', 'Bengali'), ('bg', 'Bulgarian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('es', 'Spanish'), ('es_AR', 'Argentinean Spanish'), ('fi', 'Finnish'), ('fr', 'French'), ('gl', 'Galician'), ('hu', 'Hungarian'), ('he', 'Hebrew'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ko', 'Korean'), ('kn', 'Kannada'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('nl', 'Dutch'), ('no', 'Norwegian'), ('pl', 'Polish'), ('pt', 'Portugese'), ('pt-br', 'Brazilian'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sr', 'Serbian'), ('sv', 'Swedish'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tr', 'Turkish'), ('uk', 'Ukrainian'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Traditional Chinese')), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'en-us'}, {}, {'perms': <django.core.context_processors.PermWrapper object at 0x2605e10>, 'messages': [], 'user': <django.contrib.auth.models.AnonymousUser object at 0x2605050>}, {'request': <WSGIRequest
GET:<MultiValueDict: {}>,
POST:<MultiValueDict: {}>,
COOKIES:{},
META:{'CONTENT_LENGTH': '0',
'DOCUMENT_ROOT': '/internet/hosts/www.hackermojo.com/html',
'HTTP_ACCEPT': '*/*',
'HTTP_HOST': 'hackermojo.com',
'HTTP_USER_AGENT': 'claudebot',
'PATH_INFO': '/mt-static/archives/2007/09/more-two-column-layout.html',
'QUERY_STRING': '',
'REMOTE_ADDR': '44.221.43.208',
'REMOTE_PORT': '50346',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SCGI': '1',
'SCRIPT_NAME': '',
'SCRIPT_URI': 'http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html',
'SCRIPT_URL': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SERVER_ADDR': '208.78.103.181',
'SERVER_ADMIN': '[no address given]',
'SERVER_NAME': 'hackermojo.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'Apache/2.2.14 (Ubuntu)',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f9895923210>,
'wsgi.input': <cStringIO.StringO object at 0x7f9895933760>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>, 'entries': [<MtEntry: More on the two column layout>]}] |
entries | [<MtEntry: More on the two column layout>] |
exposures | {'Programming': 1} |
isotope | 'Programming' |
referer | None |
request | <WSGIRequest
GET:<MultiValueDict: {}>,
POST:<MultiValueDict: {}>,
COOKIES:{},
META:{'CONTENT_LENGTH': '0',
'DOCUMENT_ROOT': '/internet/hosts/www.hackermojo.com/html',
'HTTP_ACCEPT': '*/*',
'HTTP_HOST': 'hackermojo.com',
'HTTP_USER_AGENT': 'claudebot',
'PATH_INFO': '/mt-static/archives/2007/09/more-two-column-layout.html',
'QUERY_STRING': '',
'REMOTE_ADDR': '44.221.43.208',
'REMOTE_PORT': '50346',
'REQUEST_METHOD': 'GET',
'REQUEST_URI': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SCGI': '1',
'SCRIPT_NAME': '',
'SCRIPT_URI': 'http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html',
'SCRIPT_URL': '/mt-static/archives/2007/09/more-two-column-layout.html',
'SERVER_ADDR': '208.78.103.181',
'SERVER_ADMIN': '[no address given]',
'SERVER_NAME': 'hackermojo.com',
'SERVER_PORT': '80',
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'Apache/2.2.14 (Ubuntu)',
'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f9895923210>,
'wsgi.input': <cStringIO.StringO object at 0x7f9895933760>,
'wsgi.multiprocess': True,
'wsgi.multithread': False,
'wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}> |
slug | 'more-two-column-layout' |
t | <django.template.Template object at 0x204fc90> |
tpath | 'entry-1column.html' |
/internet/hosts/www.hackermojo.com/hm/apps/blog/views.py
in highlight_code
Variable | Value |
---|---|
html | '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r\n\t"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r\n\n\n<html>\r\n<head>\r\n<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>\r\n<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />\n<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />\r\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r\n<meta name="author" content="Glenn Franxman" />\r\n<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />\r\n<meta name="keywords" content="django mintcache hacker python knoxville" />\r\n<meta name="description" content="Glenn Franxman\'s thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />\r\n\n \n <link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />\n \n\n\n</head>\r\n<body>\r\n\r\n<div id="hdrimg">\r\n<span class="validation">\r\n<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>\r\n<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>\r\n</span>\r\n<br/><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>\r\n<p>\n<br/><span class="left">Ceci n\'est pas une blog</span>\n<br/><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>\n<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->\n</p>\n\n<ul id="nav">\n <li><a href="http://hackermojo.com/" title="home" >home</a></li>\n <li><a href="/mt-static/archives/" title="blog" id="current" >archives</a></li>\n <li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>\n <li><a href="http://franxman.com/" title="contact">contact</a></li>\n <li><a href="/links/" title="links">links</a></li>\n</ul>\n\n<ul id="rnav">\r\n <li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == \'Search\' )this.value=\'\';" onchange="javascript:document.location=\'/search/\'+this.value;1;"/></li>\n</ul>\r\n</div>\t<!-- end of hdr img -->\r\n\r\n\n</div>\n\n\r\n<div class="watermark"></div>\n\n<div class="rowcontainer">\n\n <div class="halfcolumn">\n <h1>More on the two column layout</h1>\n <p>\n<script type="text/javascript"><!--\ngoogle_ad_client = "pub-7995148183567273";\ngoogle_ad_width = 400; //728;\ngoogle_ad_height = 15;\ngoogle_ad_format = "728x15_0ads_al";\ngoogle_ad_channel = "";\n//-->\n</script>\n<script type="text/javascript"\n src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\n</script>\n</p>\n <p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>\n <p></p>\n <p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>\n\n<p>This gives the ad a persistent spot on the page in a location that doesn\'t compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>\n <p>Part of me wants to put the comment form over there as well.</p>\n\n<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you\'ve read. Ultimately, I\'m going to have a mix of strategies that build a single list.</p>\n\n<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I\'ll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>\n\n<p>I\'m still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I\'ve based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>\n \n <hr/>\n\n\n \n\n \n \n\n\n\n \n\n\n\n <h2 id="comments"><a name="comments">Comments</a></h2>\n \n \n\t<div class="comment_odd" id="c24">\n\n\t\t<span class="comnum">1<a id="c24" href="#c24">#1</a></span>\n\n\t\t<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>\n\n\t\t<p>The ad following you as you scroll down is kinda distracting.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c27">\n\n\t\t<span class="comnum">2<a id="c27" href="#c27">#2</a></span>\n\n\t\t<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n\n\t\t<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c34">\n\n\t\t<span class="comnum">3<a id="c34" href="#c34">#3</a></span>\n\n\t\t<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>\n\n\t\t<p>There are ads on this site?</p>\n\n<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>\n\n<p>I wonder what else I'm missing...</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c41">\n\n\t\t<span class="comnum">4<a id="c41" href="#c41">#4</a></span>\n\n\t\t<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n\n\t\t<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c71">\n\n\t\t<span class="comnum">5<a id="c71" href="#c71">#5</a></span>\n\n\t\t<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>\n\n\t\t<p>I really want to see what my little alien guy looks like!</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c80">\n\n\t\t<span class="comnum">6<a id="c80" href="#c80">#6</a></span>\n\n\t\t<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>\n\n\t\t<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>\n\n\t</div>\n \n \n \n \n \n\t<div class="comment_odd" id="c26755">\n\n\t\t<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>\n\n\t\t<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>\n\n\t\t<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>\n\n\t</div>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t<div class="comment_even" id="c98673">\n\n\t\t<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>\n\n\t\t<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98674">\n\n\t\t<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>\n\n\t\t<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c98675">\n\n\t\t<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>\n\n\t\t<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98676">\n\n\t\t<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>\n\n\t\t<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c98677">\n\n\t\t<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>\n\n\t\t<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98678">\n\n\t\t<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>\n\n\t\t<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> \xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?He has power stuff and command, which is rare for someone his age and his size,\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82\xc2\x9d says Paul DePodesta, the Mets\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82? VP for player development and scouting. \xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?He does very well repeating his delivery, which is why at 20 years old he\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?s already in Double-A.\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82\xc2\x9d</p>\n\n\t</div>\n \n \n\n\n\n <h2><a name="post">Post a comment</a></h2>\n\n \n\n<!-- ghf -->\n<script>\n/*\n * This is the function that actually highlights a text string by\n * adding HTML tags before and after all occurrences of the search\n * term. You can pass your own tags if you\'d like, or if the\n * highlightStartTag or highlightEndTag parameters are omitted or\n * are empty strings then the default <font> tags will be used.\n */\nfunction doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) \n{\n // the highlightStartTag and highlightEndTag parameters are optional\n if ((!highlightStartTag) || (!highlightEndTag)) {\n highlightStartTag = "<font style=\'color:blue; background-color:yellow;\'>";\n highlightEndTag = "</font>";\n }\n \n // find all occurences of the search term in the given text,\n // and add some "highlight" tags to them (we\'re not using a\n // regular expression search, because we want to filter out\n // matches that occur within HTML tags and script blocks, so\n // we have to do a little extra validation)\n var newText = "";\n var i = -1;\n var lcSearchTerm = searchTerm.toLowerCase();\n var lcBodyText = bodyText.toLowerCase();\n \n while (bodyText.length > 0) {\n i = lcBodyText.indexOf(lcSearchTerm, i+1);\n if (i < 0) {\n newText += bodyText;\n bodyText = "";\n } else {\n // skip anything inside an HTML tag\n if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {\n // skip anything inside a <script> block\n if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {\n newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;\n bodyText = bodyText.substr(i + searchTerm.length);\n lcBodyText = bodyText.toLowerCase();\n i = -1;\n }\n }\n }\n }\n \n return newText;\n}\n\n\n/*\n * This is sort of a wrapper function to the doHighlight function.\n * It takes the searchText that you pass, optionally splits it into\n * separate words, and transforms the text on the current web page.\n * Only the "searchText" parameter is required; all other parameters\n * are optional and can be omitted.\n */\nfunction highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)\n{\n // if the treatAsPhrase parameter is true, then we should search for \n // the entire phrase that was entered; otherwise, we will split the\n // search string so that each word is searched for and highlighted\n // individually\nalert("marking " + searchText ) ;\n if (treatAsPhrase) {\n searchArray = [searchText];\n } else {\n searchArray = searchText.split(" ");\n }\n \n if (!document.body || typeof(document.body.innerHTML) == "undefined") {\n if (warnOnFailure) {\n alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");\n }\n return false;\n }\n \n var bodyText = document.body.innerHTML;\n for (var i = 0; i < searchArray.length; i++) {\n bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);\n }\n \n document.body.innerHTML = bodyText;\n return true;\n}\n\nfunction get_sel() {\nd=window.getSelection()+\'\';\nif( d.length ) { highlightSearchTerms( d, true, true, \'<b>\',\'</b>\' ); }\n}\n\n\n\n</script>\n<form action="/comments/postfree/" method="post">\n<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>\n<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>\n<p>\n<input type="hidden" name="options" value="ip" />\n<input type="hidden" name="target" value="17:290" />\n<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />\n<input type="submit" name="preview" value="Preview comment" />\n<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->\n</p>\n</form>\n\n\n </div>\n\n <div class="halfcolumn">\n <div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3" >\n <table>\n <tr>\n <td>\n <p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it\'s not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( \'search_terms\' ) --></p>\n </td>\n <td>\n <script type="text/javascript"><!--\n google_ad_client = "pub-7995148183567273";\n google_ad_width = 200;\n google_ad_height = 200;\n google_ad_format = "200x200_as";\n google_ad_type = "image";\n google_ad_channel = "";\n //-->\n </script>\n <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\r\n<script>\nscrollSpeed2=100; //Screen refresh rate in msec.\nscrolled2=\'document.body.scrollTop\';\nvar ltop2;\nfunction checkScrolled2()\n { \n //backTo Top link stays in lower right\n document.getElementById(\'floater_1\').style.top=eval(scrolled2)+ltop2+\'px\';\n setTimeout(\'checkScrolled2()\',scrollSpeed2) ;\n //alert( \'brb\' ) ;\n }\nfunction stickyInit()\n {\n x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr\n x2=eval(scrolled2);window.scrollBy(0,-1); //reset position\n if((x2-x1)<1)\n {\n scrolled2=\'document.documentElement.scrollTop\';\n }\n ltop2=parseInt(document.getElementById(\'floater_1\').style.top,10);\n checkScrolled2();\n }\nwindow.onload=stickyInit;\n</script>\n\n\n\n \n\n\n\r\n<div id="bttmbar">\n <span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />\r\n </span>\n <p>\n <br/>\n <!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->\n hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.\n powered by: <a href="http://djangoproject.com/">django</a>.\n written in: <a href="http://python.org/">python</a>.\n controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.\n <!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->\n monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.\n </p>\n <p>You\'ve been exposed to: {\'Programming\': 1}</p>\n</div><!-- end of bttmbar -->\r\n\n\n<!-- stats -->\n\t<script type="text/javascript">\n\t\tvar gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\n\t\tdocument.write(unescape("%3Cscript src=\'" + gaJsHost + "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));\n\t</script>\n\t<script type="text/javascript">\n\t\tvar pageTracker = _gat._getTracker("UA-4052584-1");\n\t\tpageTracker._initData();\n\t\tpageTracker._trackPageview();\n\t</script>\n<!-- /stats -->\n\n</body>\r\n</html>\n' |
orig_html | '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r\n\t"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r\n\n\n<html>\r\n<head>\r\n<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>\r\n<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />\n<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />\r\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\r\n<meta name="author" content="Glenn Franxman" />\r\n<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />\r\n<meta name="keywords" content="django mintcache hacker python knoxville" />\r\n<meta name="description" content="Glenn Franxman\'s thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />\r\n\n \n <link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />\n \n\n\n</head>\r\n<body>\r\n\r\n<div id="hdrimg">\r\n<span class="validation">\r\n<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>\r\n<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>\r\n</span>\r\n<br/><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>\r\n<p>\n<br/><span class="left">Ceci n\'est pas une blog</span>\n<br/><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>\n<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->\n</p>\n\n<ul id="nav">\n <li><a href="http://hackermojo.com/" title="home" >home</a></li>\n <li><a href="/mt-static/archives/" title="blog" id="current" >archives</a></li>\n <li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>\n <li><a href="http://franxman.com/" title="contact">contact</a></li>\n <li><a href="/links/" title="links">links</a></li>\n</ul>\n\n<ul id="rnav">\r\n <li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == \'Search\' )this.value=\'\';" onchange="javascript:document.location=\'/search/\'+this.value;1;"/></li>\n</ul>\r\n</div>\t<!-- end of hdr img -->\r\n\r\n\n</div>\n\n\r\n<div class="watermark"></div>\n\n<div class="rowcontainer">\n\n <div class="halfcolumn">\n <h1>More on the two column layout</h1>\n <p>\n<script type="text/javascript"><!--\ngoogle_ad_client = "pub-7995148183567273";\ngoogle_ad_width = 400; //728;\ngoogle_ad_height = 15;\ngoogle_ad_format = "728x15_0ads_al";\ngoogle_ad_channel = "";\n//-->\n</script>\n<script type="text/javascript"\n src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\n</script>\n</p>\n <p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>\n <p></p>\n <p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>\n\n<p>This gives the ad a persistent spot on the page in a location that doesn\'t compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>\n <p>Part of me wants to put the comment form over there as well.</p>\n\n<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you\'ve read. Ultimately, I\'m going to have a mix of strategies that build a single list.</p>\n\n<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I\'ll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>\n\n<p>I\'m still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I\'ve based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>\n \n <hr/>\n\n\n \n\n \n \n\n\n\n \n\n\n\n <h2 id="comments"><a name="comments">Comments</a></h2>\n \n \n\t<div class="comment_odd" id="c24">\n\n\t\t<span class="comnum">1<a id="c24" href="#c24">#1</a></span>\n\n\t\t<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>\n\n\t\t<p>The ad following you as you scroll down is kinda distracting.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c27">\n\n\t\t<span class="comnum">2<a id="c27" href="#c27">#2</a></span>\n\n\t\t<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n\n\t\t<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c34">\n\n\t\t<span class="comnum">3<a id="c34" href="#c34">#3</a></span>\n\n\t\t<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>\n\n\t\t<p>There are ads on this site?</p>\n\n<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>\n\n<p>I wonder what else I'm missing...</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c41">\n\n\t\t<span class="comnum">4<a id="c41" href="#c41">#4</a></span>\n\n\t\t<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n\n\t\t<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c71">\n\n\t\t<span class="comnum">5<a id="c71" href="#c71">#5</a></span>\n\n\t\t<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>\n\n\t\t<p>I really want to see what my little alien guy looks like!</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c80">\n\n\t\t<span class="comnum">6<a id="c80" href="#c80">#6</a></span>\n\n\t\t<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>\n\n\t\t<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>\n\n\t</div>\n \n \n \n \n \n\t<div class="comment_odd" id="c26755">\n\n\t\t<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>\n\n\t\t<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>\n\n\t\t<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>\n\n\t</div>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\t<div class="comment_even" id="c98673">\n\n\t\t<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>\n\n\t\t<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98674">\n\n\t\t<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>\n\n\t\t<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c98675">\n\n\t\t<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>\n\n\t\t<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98676">\n\n\t\t<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>\n\n\t\t<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_even" id="c98677">\n\n\t\t<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>\n\n\t\t<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>\n\n\t</div>\n \n \n \n\t<div class="comment_odd" id="c98678">\n\n\t\t<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>\n\n\t\t<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n\n\t\t<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> \xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?He has power stuff and command, which is rare for someone his age and his size,\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82\xc2\x9d says Paul DePodesta, the Mets\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82? VP for player development and scouting. \xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?He does very well repeating his delivery, which is why at 20 years old he\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82?s already in Double-A.\xc3\x83\xc2\xa2\xc3\x82?\xc3\x82\xc2\x9d</p>\n\n\t</div>\n \n \n\n\n\n <h2><a name="post">Post a comment</a></h2>\n\n \n\n<!-- ghf -->\n<script>\n/*\n * This is the function that actually highlights a text string by\n * adding HTML tags before and after all occurrences of the search\n * term. You can pass your own tags if you\'d like, or if the\n * highlightStartTag or highlightEndTag parameters are omitted or\n * are empty strings then the default <font> tags will be used.\n */\nfunction doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) \n{\n // the highlightStartTag and highlightEndTag parameters are optional\n if ((!highlightStartTag) || (!highlightEndTag)) {\n highlightStartTag = "<font style=\'color:blue; background-color:yellow;\'>";\n highlightEndTag = "</font>";\n }\n \n // find all occurences of the search term in the given text,\n // and add some "highlight" tags to them (we\'re not using a\n // regular expression search, because we want to filter out\n // matches that occur within HTML tags and script blocks, so\n // we have to do a little extra validation)\n var newText = "";\n var i = -1;\n var lcSearchTerm = searchTerm.toLowerCase();\n var lcBodyText = bodyText.toLowerCase();\n \n while (bodyText.length > 0) {\n i = lcBodyText.indexOf(lcSearchTerm, i+1);\n if (i < 0) {\n newText += bodyText;\n bodyText = "";\n } else {\n // skip anything inside an HTML tag\n if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {\n // skip anything inside a <script> block\n if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {\n newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;\n bodyText = bodyText.substr(i + searchTerm.length);\n lcBodyText = bodyText.toLowerCase();\n i = -1;\n }\n }\n }\n }\n \n return newText;\n}\n\n\n/*\n * This is sort of a wrapper function to the doHighlight function.\n * It takes the searchText that you pass, optionally splits it into\n * separate words, and transforms the text on the current web page.\n * Only the "searchText" parameter is required; all other parameters\n * are optional and can be omitted.\n */\nfunction highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)\n{\n // if the treatAsPhrase parameter is true, then we should search for \n // the entire phrase that was entered; otherwise, we will split the\n // search string so that each word is searched for and highlighted\n // individually\nalert("marking " + searchText ) ;\n if (treatAsPhrase) {\n searchArray = [searchText];\n } else {\n searchArray = searchText.split(" ");\n }\n \n if (!document.body || typeof(document.body.innerHTML) == "undefined") {\n if (warnOnFailure) {\n alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");\n }\n return false;\n }\n \n var bodyText = document.body.innerHTML;\n for (var i = 0; i < searchArray.length; i++) {\n bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);\n }\n \n document.body.innerHTML = bodyText;\n return true;\n}\n\nfunction get_sel() {\nd=window.getSelection()+\'\';\nif( d.length ) { highlightSearchTerms( d, true, true, \'<b>\',\'</b>\' ); }\n}\n\n\n\n</script>\n<form action="/comments/postfree/" method="post">\n<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>\n<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>\n<p>\n<input type="hidden" name="options" value="ip" />\n<input type="hidden" name="target" value="17:290" />\n<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />\n<input type="submit" name="preview" value="Preview comment" />\n<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->\n</p>\n</form>\n\n\n </div>\n\n <div class="halfcolumn">\n <div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3" >\n <table>\n <tr>\n <td>\n <p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it\'s not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( \'search_terms\' ) --></p>\n </td>\n <td>\n <script type="text/javascript"><!--\n google_ad_client = "pub-7995148183567273";\n google_ad_width = 200;\n google_ad_height = 200;\n google_ad_format = "200x200_as";\n google_ad_type = "image";\n google_ad_channel = "";\n //-->\n </script>\n <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>\n </td>\n </tr>\n </table>\n </div>\n </div>\n</div>\r\n<script>\nscrollSpeed2=100; //Screen refresh rate in msec.\nscrolled2=\'document.body.scrollTop\';\nvar ltop2;\nfunction checkScrolled2()\n { \n //backTo Top link stays in lower right\n document.getElementById(\'floater_1\').style.top=eval(scrolled2)+ltop2+\'px\';\n setTimeout(\'checkScrolled2()\',scrollSpeed2) ;\n //alert( \'brb\' ) ;\n }\nfunction stickyInit()\n {\n x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr\n x2=eval(scrolled2);window.scrollBy(0,-1); //reset position\n if((x2-x1)<1)\n {\n scrolled2=\'document.documentElement.scrollTop\';\n }\n ltop2=parseInt(document.getElementById(\'floater_1\').style.top,10);\n checkScrolled2();\n }\nwindow.onload=stickyInit;\n</script>\n\n\n\n \n\n\n\r\n<div id="bttmbar">\n <span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />\r\n </span>\n <p>\n <br/>\n <!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->\n hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.\n powered by: <a href="http://djangoproject.com/">django</a>.\n written in: <a href="http://python.org/">python</a>.\n controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.\n <!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->\n monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.\n </p>\n <p>You\'ve been exposed to: {\'Programming\': 1}</p>\n</div><!-- end of bttmbar -->\r\n\n\n<!-- stats -->\n\t<script type="text/javascript">\n\t\tvar gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");\n\t\tdocument.write(unescape("%3Cscript src=\'" + gaJsHost + "google-analytics.com/ga.js\' type=\'text/javascript\'%3E%3C/script%3E"));\n\t</script>\n\t<script type="text/javascript">\n\t\tvar pageTracker = _gat._getTracker("UA-4052584-1");\n\t\tpageTracker._initData();\n\t\tpageTracker._trackPageview();\n\t</script>\n<!-- /stats -->\n\n</body>\r\n</html>\n' |
soup | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html>
|
/internet/toolkit/python/BeautifulSoup.py
in __unicode__
Variable | Value |
---|---|
self | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html>
|
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | [] |
close | '' |
closeTag | '</[document]>' |
indentIncrement | None |
needUnicode | 1 |
self | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html>
|
showStructureIndent | None |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html> |
needUnicode | 1 |
s | [u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r\n\t"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r\n\n\n'] |
self | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html>
|
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | [] |
close | '' |
closeTag | '</html>' |
indentIncrement | None |
needUnicode | 1 |
self | <html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html> |
showStructureIndent | None |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body> |
needUnicode | 1 |
s | [u'\n',
u'<head>\n<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>\n<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />\n<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />\n<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />\n<meta name="author" content="Glenn Franxman" />\n<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />\n<meta name="keywords" content="django mintcache hacker python knoxville" />\n<meta name="description" content="Glenn Franxman\'s thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />\n<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />\n</head>',
u'\n'] |
self | <html>
<head>
<title> More on the two column layout by Glenn Franxman at HackerMojo.com</title>
<link rel="alternate" type="application/rss+xml" title="RSS" href="/mt-static/index.rdf" />
<link rel="stylesheet" type="text/css" href="/media/fluidity.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Glenn Franxman" />
<meta name="copyright" content="Copyright (c) GFranxman 2003,2004,2005,2006,2007,2008" />
<meta name="keywords" content="django mintcache hacker python knoxville" />
<meta name="description" content="Glenn Franxman's thoughts and experiments on django, python, technology, family and life from Knoxville, TN" />
<link rel="alternate" type="application/rss+xml" title="Entry RSS" href="/mt-static/story_comments/more-two-column-layout.rdf" />
</head>
<body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body>
</html> |
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | [] |
close | '' |
closeTag | '</body>' |
indentIncrement | None |
needUnicode | 1 |
self | <body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body> |
showStructureIndent | None |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div> |
needUnicode | 1 |
s | [u'\n',
u'<div id="hdrimg">\n<span class="validation">\n<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>\n<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>\n</span>\n<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>\n<p>\n<br /><span class="left">Ceci n\'est pas une blog</span>\n<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>\n<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->\n</p>\n<ul id="nav">\n<li><a href="http://hackermojo.com/" title="home">home</a></li>\n<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>\n<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>\n<li><a href="http://franxman.com/" title="contact">contact</a></li>\n<li><a href="/links/" title="links">links</a></li>\n</ul>\n<ul id="rnav">\n<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == \'Search\' )this.value=\'\';" onchange="javascript:document.location=\'/search/\'+this.value;1;" /></li>\n</ul>\n</div>',
u'\t<!-- end of hdr img -->\r\n\r\n\n',
u'\n',
u'<div class="watermark"></div>',
u'\n'] |
self | <body>
<div id="hdrimg">
<span class="validation">
<a href="http://jigsaw.w3.org/css-validator/check/referer"><img src="/media/images/fluidcss.gif" alt="validate the css" /></a>
<a href="http://validator.w3.org/check?uri=referer"><img src="/media/images/fluidxhtml1.1.gif" alt="validate the xhtml" /></a>
</span>
<br /><h1><a href="/"><strong>HackerMoJo</strong>.com</a></h1>
<p>
<br /><span class="left">Ceci n'est pas une blog</span>
<br /><span class="right">by <a href="http://franxman.com/">Glenn Franxman</a>, Django Developer / Stunt Programmer.</span>
<br /><!-- % load twittertags %"<a href="http://twitter.com/glenn1you0">% last_tweet glenn1you0 % Wassup?</a>" -->
</p>
<ul id="nav">
<li><a href="http://hackermojo.com/" title="home">home</a></li>
<li><a href="/mt-static/archives/" title="blog" id="current">archives</a></li>
<li><a href="#http://franxman.com" title="about" onclick="showSlidingAd()">about</a></li>
<li><a href="http://franxman.com/" title="contact">contact</a></li>
<li><a href="/links/" title="links">links</a></li>
</ul>
<ul id="rnav">
<li><input type="text" id="search" name="search" value="Search" size="10" onfocus="javascript:if( this.value == 'Search' )this.value='';" onchange="javascript:document.location='/search/'+this.value;1;" /></li>
</ul>
</div> <!-- end of hdr img -->
<div class="watermark"></div>
<div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div>
<script>
scrollSpeed2=100; //Screen refresh rate in msec.
scrolled2='document.body.scrollTop';
var ltop2;
function checkScrolled2()
{
//backTo Top link stays in lower right
document.getElementById('floater_1').style.top=eval(scrolled2)+ltop2+'px';
setTimeout('checkScrolled2()',scrollSpeed2) ;
//alert( 'brb' ) ;
}
function stickyInit()
{
x1=eval(scrolled2);window.scrollBy(0,1); //test scrolled2 ptr
x2=eval(scrolled2);window.scrollBy(0,-1); //reset position
if((x2-x1)<1)
{
scrolled2='document.documentElement.scrollTop';
}
ltop2=parseInt(document.getElementById('floater_1').style.top,10);
checkScrolled2();
}
window.onload=stickyInit;
</script>
<div id="bttmbar">
<span id="copyright">Copyright © 2003,2004,2005,2006,2007,2008 GFranxman. All Rights Reserved<br />
</span>
<p>
<br />
<!-- design: <a href="http://www.davereederdesign.com/">davereederdesign.com</a>. -->
hosting: <a href="https://manage.slicehost.com/customers/new?referrer=88269359">slicehost.com</a>.
powered by: <a href="http://djangoproject.com/">django</a>.
written in: <a href="http://python.org/">python</a>.
controlled by: <a href="http://bazaar-vcs.org/">bzr</a>.
<!-- managed by: <a href="http://www.sixapart.com/movabletype/">MovableType</a>. -->
monsters by: <a href="http://www.splitbrain.org/go/monsterid">monsterID</a>.
</p>
<p>You've been exposed to: {'Programming': 1}</p>
</div><!-- end of bttmbar -->
<!-- stats -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-4052584-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
<!-- /stats -->
</body> |
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | ['class="rowcontainer"'] |
close | '' |
closeTag | '</div>' |
indentIncrement | None |
key | 'class' |
needUnicode | 1 |
self | <div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div> |
showStructureIndent | None |
val | 'rowcontainer' |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div> |
needUnicode | 1 |
s | [u'\n'] |
self | <div class="rowcontainer">
<div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div>
<div class="halfcolumn">
<div class="floater" id="floater_1" style="position:absolute;top:200px;;z-index:3">
<table>
<tr>
<td>
<p></p><p>Based upon your reading habits, might I recommend: <ul><li><a href="/mt-static/archives/2003/06/key-inversion-i.html">Key Inversion, it's not just for breakfast anymore</a></li> <li><a href="/mt-static/archives/2007/02/the-power-of-ze.html">The power of Zero</a></li> <li><a href="/mt-static/archives/2006/12/long-time-no-po.html">Long time, no post</a></li></ul></p> <p>Or, you might like: <ul><li><a href="/mt-static/archives/2008/03/seo-rapper.html">SEO Rapper</a></li> <li><a href="/mt-static/archives/2005/09/google-labs.html">Google Labs</a></li> <li><a href="/mt-static/archives/2003/06/key-inversion-h.html">Key Inversion, how hard can it be?</a></li></ul></p> <!-- error searching for none ( 'search_terms' ) -->
</td>
<td>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 200;
google_ad_height = 200;
google_ad_format = "200x200_as";
google_ad_type = "image";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</td>
</tr>
</table>
</div>
</div>
</div> |
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | ['class="halfcolumn"'] |
close | '' |
closeTag | '</div>' |
indentIncrement | None |
key | 'class' |
needUnicode | 1 |
self | <div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div> |
showStructureIndent | None |
val | 'halfcolumn' |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div> |
needUnicode | 1 |
s | [u'\n',
u'<h1>More on the two column layout</h1>',
u'\n',
u'<p>\n<script type="text/javascript"><!--\ngoogle_ad_client = "pub-7995148183567273";\ngoogle_ad_width = 400; //728;\ngoogle_ad_height = 15;\ngoogle_ad_format = "728x15_0ads_al";\ngoogle_ad_channel = "";\n//-->\n</script>\n<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">\n</script>\n</p>',
u'\n',
u'<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>',
u'\n',
u'<p></p>',
u'\n',
u'<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>',
u'\n',
u"<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>",
u'\n',
u'<p>Part of me wants to put the comment form over there as well.</p>',
u'\n',
u"<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>",
u'\n',
u"<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>",
u'\n',
u"<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>",
u'\n',
u'<hr />',
u'\n',
u'<h2 id="comments"><a name="comments">Comments</a></h2>',
u'\n',
u'<div class="comment_odd" id="c24">\n<span class="comnum">1<a id="c24" href="#c24">#1</a></span>\n<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>\n<p>The ad following you as you scroll down is kinda distracting.</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c27">\n<span class="comnum">2<a id="c27" href="#c27">#2</a></span>\n<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>\n</div>',
u'\n',
u'<div class="comment_odd" id="c34">\n<span class="comnum">3<a id="c34" href="#c34">#3</a></span>\n<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>\n<p>There are ads on this site?</p>\n<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>\n<p>I wonder what else I'm missing...</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c41">\n<span class="comnum">4<a id="c41" href="#c41">#4</a></span>\n<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>\n<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>\n</div>',
u'\n',
u'<div class="comment_odd" id="c71">\n<span class="comnum">5<a id="c71" href="#c71">#5</a></span>\n<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>\n<p>I really want to see what my little alien guy looks like!</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c80">\n<span class="comnum">6<a id="c80" href="#c80">#6</a></span>\n<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>\n<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>\n</div>',
u'\n',
u'<div class="comment_odd" id="c26755">\n<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>\n<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>\n<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c98673">\n<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>\n<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>\n</div>',
u'\n',
u'<div class="comment_odd" id="c98674">\n<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>\n<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c98675">\n<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>\n<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>\n</div>',
u'\n',
u'<div class="comment_odd" id="c98676">\n<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>\n<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>\n</div>',
u'\n',
u'<div class="comment_even" id="c98677">\n<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>\n<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>\n<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>\n</div>',
u'\n'] |
self | <div class="halfcolumn">
<h1>More on the two column layout</h1>
<p>
<script type="text/javascript"><!--
google_ad_client = "pub-7995148183567273";
google_ad_width = 400; //728;
google_ad_height = 15;
google_ad_format = "728x15_0ads_al";
google_ad_channel = "";
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<p><small>posted: 2007-09-08 17:19:19 <a href="/mt-static/archives/2007/09/more-two-column-layout.html">perma-link</a>, <a href="/mt-static/story_comments/more-two-column-layout.rdf">RSS comments feed</a></small></p>
<p></p>
<p>More tweaks on the <a href="http://hackermojo.com/mt-static/archives/2007/08/two-column-layout.html">two column layout</a>. In addition to using multiple columns to pull the comments up alongside the original posting, I can use the second column for a single prominent ad and a few navigational tools.</p>
<p>This gives the ad a persistent spot on the page in a location that doesn't compete with the content, but maintains a certain amount of weight and commands some attention in so far as there is a little animation involved without it actually competing with the content.</p>
<p>Part of me wants to put the comment form over there as well.</p>
<p>You might also notice that the system is now making recommendations for additional articles based on a combination of the current article and past articles you've read. Ultimately, I'm going to have a mix of strategies that build a single list.</p>
<p>Right now, there are content targeted entries and behaviorally targeted ones. I want to add featured articles that I select, articles deemed most popular by page viewing, and articles that match whatever search term last brought you to the site. I'll be presenting them separately until I understand a little better how each performs, but I hope to ultimately have a formula for combining the sets and ranking each against the other.</p>
<p>I'm still experimenting with linear versus logarithmic decay for the behavioral recommendation engine which I've based on radio active exposure to variously tagged content. You can see your scores in the footer if you are interested in that sort of thing.</p>
<hr />
<h2 id="comments"><a name="comments">Comments</a></h2>
<div class="comment_odd" id="c24">
<span class="comnum">1<a id="c24" href="#c24">#1</a></span>
<p><b>David Mastio</b> commented, on September 9, 2007 at 12:31 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.0.25.117" align="left" /></p>
<p>The ad following you as you scroll down is kinda distracting.</p>
</div>
<div class="comment_even" id="c27">
<span class="comnum">2<a id="c27" href="#c27">#2</a></span>
<p><b>Glenn Franxman</b> commented, on September 13, 2007 at 11:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>True dat, but that's kind of the point. If successful, the ad and the tools will find greater use than in conventional layouts. For the tools, that means an increase in engagment. For ads, that means increased attention, from which greater click-thrus might follow.</p>
</div>
<div class="comment_odd" id="c34">
<span class="comnum">3<a id="c34" href="#c34">#3</a></span>
<p><b>Clark</b> commented, on September 21, 2007 at 10:02 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=68.205.41.191" align="left" /></p>
<p>There are ads on this site?</p>
<p>Damn you Adblock... some of us don't even get to see the distracting ad.</p>
<p>I wonder what else I'm missing...</p>
</div>
<div class="comment_even" id="c41">
<span class="comnum">4<a id="c41" href="#c41">#4</a></span>
<p><b>Glenn Franxman</b> commented, on September 22, 2007 at 8:21 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.187.87.233" align="left" /></p>
<p>Well, I'm sure you're not the only one using AdBlock. Ads aren't that effective on most sites anyway. It will be interesting to see what happens as google starts looking at the effectiveness of ads on sites and realizes that some sites have yeilds so small they aren't worth serving ads to based purely on bandwidth costs.</p>
</div>
<div class="comment_odd" id="c71">
<span class="comnum">5<a id="c71" href="#c71">#5</a></span>
<p><b>MIke</b> commented, on October 1, 2007 at 4:15 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=207.203.254.110" align="left" /></p>
<p>I really want to see what my little alien guy looks like!</p>
</div>
<div class="comment_even" id="c80">
<span class="comnum">6<a id="c80" href="#c80">#6</a></span>
<p><b>Rob Perkins</b> commented, on October 19, 2007 at 4:16 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=67.168.213.28" align="left" /></p>
<p>That's a slick bit of code, there, Glenn. I wonder if it runs in Safari... ;-)</p>
</div>
<div class="comment_odd" id="c26755">
<span class="comnum">8<a id="c26755" href="#c26755">#8</a></span>
<p><b>Natalia</b> commented, on August 20, 2012 at 5:17 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=222.126.155.54" align="left" /></p>
<p>Historically, thousands if not miilnols of people have been persecuted and killed by Christians. These Muslims have shown no signs of being radical, and are 100% moderate. The only way groups like Al Qeuda can be stopped is if moderate Islam prevails. The tea party stands for lower taxes and less government, I've never really heard Martin Luther King talk about either of those things. Also, Glenn Beck has shown that he is an opponent of social justice , however Martin Luther King repeatedly advocated for Social Justice. No one, not even those close to MLK, can really know for sure what he would have thought of Glenn Beck(I say this because some of his relatives seem to have core disagreements about how MLK would handle modern day issues), however, multiple civil rights groups have opposed this rally, and he seems to be acting very insensitive to that. If your going to have a rally at that day and place it should be about togetherness, but instead he's making it another event with the theme of stop the evil democrats . Either oppose the mosque and move the rally, or support the mosque and move the event.</p>
</div>
<div class="comment_even" id="c98673">
<span class="comnum">14901<a id="c98673" href="#c98673">#14901</a></span>
<p><b>Fausto</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Where do you come from? <a href=" <a href="http://profisrael.com.br/tag/fiscalizacao/" rel="nofollow">http://profisrael.com.br/tag/fiscalizaca...</a> ">desvenlafaxine in japan</a> Francesco Schettino who was Captain of the Costa Concordia, faces charges of multiple manslaughter, causing a ship wreck and abandoning ship. His defence is that no single person was to blame for the accident.</p>
</div>
<div class="comment_odd" id="c98674">
<span class="comnum">14902<a id="c98674" href="#c98674">#14902</a></span>
<p><b>Jamison</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>The line's engaged <a href=" <a href="http://www.actiup.com/datos-actiup.html" rel="nofollow">http://www.actiup.com/datos-actiup.html</a> ">chances of twins on 25mg clomid</a> FireEye, which sells technology that helps businessesprotect themselves against malicious software, said in an IPOfiling it more than doubled revenue in the first half of 2013 to$61.6 million, from $29.7 million a year earlier.</p>
</div>
<div class="comment_even" id="c98675">
<span class="comnum">14903<a id="c98675" href="#c98675">#14903</a></span>
<p><b>Rolland</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Will I have to work shifts? <a href=" <a href="http://profisrael.com.br/tag/educacao/" rel="nofollow">http://profisrael.com.br/tag/educacao/</a> ">pristiq reviews 2011</a> Marshall is in his first year with the Tigers, after transferring in from Garden City (Kan.) Community College this summer. Marshall spent his first season of college eligibility playing defensive back at Georgia.</p>
</div>
<div class="comment_odd" id="c98676">
<span class="comnum">14904<a id="c98676" href="#c98676">#14904</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>I'm afraid that number's ex-directory <a href=" <a href="http://www.actiup.com/datos-actiup.html#locking" rel="nofollow">http://www.actiup.com/datos-actiup.html#...</a> ">where to buy clomid online in usa</a> In its first government-sanctioned trip into Syria during the 2-1/2-year conflict, New York-based HRW has documented a series of sectarian mass killings by Assad's foes during a broader campaign in which Western-backed rebels took part.</p>
</div>
<div class="comment_even" id="c98677">
<span class="comnum">14905<a id="c98677" href="#c98677">#14905</a></span>
<p><b>Larry</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Could you tell me my balance, please? <a href=" <a href="http://www.ccoi.ie/enterprise#perfect" rel="nofollow">http://www.ccoi.ie/enterprise#perfect</a> ">reviews for nizagara</a> More than 70% either had to create or add to waiting lists of seniors who need food. And 40% eliminated staff positions. Meanwhile, roughly 17% said they had to close their community meals centers or end their home-delivered meal programs.</p>
</div>
<div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div>
<h2><a name="post">Post a comment</a></h2>
<!-- ghf -->
<script>
/*
* This is the function that actually highlights a text string by
* adding HTML tags before and after all occurrences of the search
* term. You can pass your own tags if you'd like, or if the
* highlightStartTag or highlightEndTag parameters are omitted or
* are empty strings then the default <font> tags will be used.
*/
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag)
{
// the highlightStartTag and highlightEndTag parameters are optional
if ((!highlightStartTag) || (!highlightEndTag)) {
highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
highlightEndTag = "</font>";
}
// find all occurences of the search term in the given text,
// and add some "highlight" tags to them (we're not using a
// regular expression search, because we want to filter out
// matches that occur within HTML tags and script blocks, so
// we have to do a little extra validation)
var newText = "";
var i = -1;
var lcSearchTerm = searchTerm.toLowerCase();
var lcBodyText = bodyText.toLowerCase();
while (bodyText.length > 0) {
i = lcBodyText.indexOf(lcSearchTerm, i+1);
if (i < 0) {
newText += bodyText;
bodyText = "";
} else {
// skip anything inside an HTML tag
if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
// skip anything inside a <script> block
if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<" + "script", i)) {
newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
bodyText = bodyText.substr(i + searchTerm.length);
lcBodyText = bodyText.toLowerCase();
i = -1;
}
}
}
}
return newText;
}
/*
* This is sort of a wrapper function to the doHighlight function.
* It takes the searchText that you pass, optionally splits it into
* separate words, and transforms the text on the current web page.
* Only the "searchText" parameter is required; all other parameters
* are optional and can be omitted.
*/
function highlightSearchTerms(searchText, treatAsPhrase, warnOnFailure, highlightStartTag, highlightEndTag)
{
// if the treatAsPhrase parameter is true, then we should search for
// the entire phrase that was entered; otherwise, we will split the
// search string so that each word is searched for and highlighted
// individually
alert("marking " + searchText ) ;
if (treatAsPhrase) {
searchArray = [searchText];
} else {
searchArray = searchText.split(" ");
}
if (!document.body || typeof(document.body.innerHTML) == "undefined") {
if (warnOnFailure) {
alert("Sorry, for some reason the text of this page is unavailable. Searching will not work.");
}
return false;
}
var bodyText = document.body.innerHTML;
for (var i = 0; i < searchArray.length; i++) {
bodyText = doHighlight(bodyText, searchArray[i], highlightStartTag, highlightEndTag);
}
document.body.innerHTML = bodyText;
return true;
}
function get_sel() {
d=window.getSelection()+'';
if( d.length ) { highlightSearchTerms( d, true, true, '<b>','</b>' ); }
}
</script>
<form action="/comments/postfree/" method="post">
<p><label for="id_person_name">Your name:</label> <input type="text" id="id_person_name" name="person_name" /></p>
<p><label for="id_comment">Comment:</label><br /><textarea name="comment" id="id_comment" rows="10" cols="60"></textarea></p>
<p>
<input type="hidden" name="options" value="ip" />
<input type="hidden" name="target" value="17:290" />
<input type="hidden" name="gonzo" value="da9fce35071cd291f9b2ce886ed57f35" />
<input type="submit" name="preview" value="Preview comment" />
<!-- <p onMouseDown="get_sel();">Annotate selected text</p> -->
</p>
</form>
</div> |
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | ['class="comment_odd"', 'id="c98678"'] |
close | '' |
closeTag | '</div>' |
indentIncrement | None |
key | 'id' |
needUnicode | 1 |
self | <div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div> |
showStructureIndent | None |
val | 'c98678' |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | <p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p> |
needUnicode | 1 |
s | [u'\n',
u'<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>',
u'\n',
u'<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>',
u'\n'] |
self | <div class="comment_odd" id="c98678">
<span class="comnum">14906<a id="c98678" href="#c98678">#14906</a></span>
<p><b>Walker</b> commented, on January 21, 2016 at 4:26 p.m.:<img src="http://franxman.com/monsters/monsterid/monsterip.php?ip=188.143.232.16" align="left" /></p>
<p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p>
</div> |
showStructureIndent | None |
text | None |
/internet/toolkit/python/BeautifulSoup.py
in __str__
Variable | Value |
---|---|
attrs | [] |
close | '' |
closeTag | '</p>' |
indentIncrement | None |
needUnicode | 1 |
self | <p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p> |
showStructureIndent | None |
/internet/toolkit/python/BeautifulSoup.py
in renderContents
Variable | Value |
---|---|
c | ' ">order promethazine</a> \xc3ƒ\xc2\xa2\xc3‚?\xc3‚?He has power stuff and command, which is rare for someone his age and his size,\xc3ƒ\xc2\xa2\xc3‚?\xc3‚\xc2? says Paul DePodesta, the Mets\xc3ƒ\xc2\xa2\xc3‚?\xc3‚? VP for player development and scouting. \xc3ƒ\xc2\xa2\xc3‚?\xc3‚?He does very well repeating his delivery, which is why at 20 years old he\xc3ƒ\xc2\xa2\xc3‚?\xc3‚?s already in Double-A.\xc3ƒ\xc2\xa2\xc3‚?\xc3‚\xc2?' |
needUnicode | 1 |
s | [u'Do you know what extension he's on? <a href=" ',
u'<a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a>'] |
self | <p>Do you know what extension he's on? <a href=" <a href="http://www.vidacandanga.com.br/category/noticias/poraodorock/" rel="nofollow">http://www.vidacandanga.com.br/category/...</a> ">order promethazine</a> �He has power stuff and command, which is rare for someone his age and his size,� says Paul DePodesta, the Mets� VP for player development and scouting. �He does very well repeating his delivery, which is why at 20 years old he�s already in Double-A.�</p> |
showStructureIndent | None |
text | None |
Traceback (most recent call last):
|
No GET data
No POST data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '0' |
DOCUMENT_ROOT | '/internet/hosts/www.hackermojo.com/html' |
HTTP_ACCEPT | '*/*' |
HTTP_HOST | 'hackermojo.com' |
HTTP_USER_AGENT | 'claudebot' |
PATH_INFO | '/mt-static/archives/2007/09/more-two-column-layout.html' |
QUERY_STRING | '' |
REMOTE_ADDR | '44.221.43.208' |
REMOTE_PORT | '50346' |
REQUEST_METHOD | 'GET' |
REQUEST_URI | '/mt-static/archives/2007/09/more-two-column-layout.html' |
SCGI | '1' |
SCRIPT_NAME | '' |
SCRIPT_URI | 'http://hackermojo.com/mt-static/archives/2007/09/more-two-column-layout.html' |
SCRIPT_URL | '/mt-static/archives/2007/09/more-two-column-layout.html' |
SERVER_ADDR | '208.78.103.181' |
SERVER_ADMIN | '[no address given]' |
SERVER_NAME | 'hackermojo.com' |
SERVER_PORT | '80' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'Apache/2.2.14 (Ubuntu)' |
wsgi.errors | <open file '<stderr>', mode 'w' at 0x7f9895923210> |
wsgi.input | <cStringIO.StringO object at 0x7f9895933760> |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | (('Glenn Franxman', 'gfranxman@gmail.com'),) |
ADMIN_FOR | () |
ADMIN_MEDIA_PREFIX | '/admin_media/' |
AKISMET_API_KEY | 'cf9a924f00a9' |
ALLOWED_INCLUDE_ROOTS | () |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ('django.contrib.auth.backends.ModelBackend',) |
BANNED_IPS | () |
CACHE_BACKEND | 'file:///var/tmp/django/hackermojo' |
CACHE_MIDDLEWARE_KEY_PREFIX | '' |
COMMENTS_ALLOW_PROFANITIES | False |
COMMENTS_BANNED_USERS_GROUP | None |
COMMENTS_FIRST_FEW | 0 |
COMMENTS_MODERATORS_GROUP | None |
COMMENTS_SKETCHY_USERS_GROUP | None |
DATABASE_ENGINE | 'mysql' |
DATABASE_HOST | '' |
DATABASE_NAME | 'movable_type' |
DATABASE_OPTIONS | {} |
DATABASE_PASSWORD | '********************' |
DATABASE_PORT | '' |
DATABASE_USER | 'mt' |
DATETIME_FORMAT | 'N j, Y, P' |
DATE_FORMAT | 'N j, Y' |
DEBUG | True |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_CONTENT_TYPE | 'text/html' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DISALLOWED_USER_AGENTS | () |
EMAIL_HOST | 'localhost' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '' |
EMAIL_PORT | 25 |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_USE_TLS | False |
FIXTURE_DIRS | () |
IGNORABLE_404_ENDS | ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php') |
IGNORABLE_404_STARTS | ('/cgi-bin/', '/_vti_bin', '/_vti_inf') |
INSTALLED_APPS | ['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'apps.categories',
'apps.blog',
'apps.utils',
'apps.muchonada',
'apps.abtesting',
'django.contrib.comments'] |
INTERNAL_IPS | () |
JING_PATH | '/usr/bin/jing' |
LANGUAGES | (('ar', 'Arabic'),
('bn', 'Bengali'),
('bg', 'Bulgarian'),
('ca', 'Catalan'),
('cs', 'Czech'),
('cy', 'Welsh'),
('da', 'Danish'),
('de', 'German'),
('el', 'Greek'),
('en', 'English'),
('es', 'Spanish'),
('es_AR', 'Argentinean Spanish'),
('fi', 'Finnish'),
('fr', 'French'),
('gl', 'Galician'),
('hu', 'Hungarian'),
('he', 'Hebrew'),
('is', 'Icelandic'),
('it', 'Italian'),
('ja', 'Japanese'),
('ko', 'Korean'),
('kn', 'Kannada'),
('lv', 'Latvian'),
('mk', 'Macedonian'),
('nl', 'Dutch'),
('no', 'Norwegian'),
('pl', 'Polish'),
('pt', 'Portugese'),
('pt-br', 'Brazilian'),
('ro', 'Romanian'),
('ru', 'Russian'),
('sk', 'Slovak'),
('sl', 'Slovenian'),
('sr', 'Serbian'),
('sv', 'Swedish'),
('ta', 'Tamil'),
('te', 'Telugu'),
('tr', 'Turkish'),
('uk', 'Ukrainian'),
('zh-cn', 'Simplified Chinese'),
('zh-tw', 'Traditional Chinese')) |
LANGUAGES_BIDI | ('he', 'ar') |
LANGUAGE_CODE | 'en-us' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_URL | '/accounts/logout/' |
MANAGERS | (('Glenn Franxman', 'gfranxman@gmail.com'),) |
MEDIA_ROOT | '' |
MEDIA_URL | '' |
MIDDLEWARE_CLASSES | ('qr.middleware.QRCodeMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.doc.XViewMiddleware',
'apps.abtesting.middleware.ABTestResultsMiddleware') |
MONTH_DAY_FORMAT | 'F j' |
PREPEND_WWW | False |
PROFANITIES_LIST | '********************' |
ROOT_URLCONF | 'urls' |
SECRET_KEY | '********************' |
SEND_BROKEN_LINK_EMAILS | False |
SERVER_EMAIL | 'root@localhost' |
SESSION_COOKIE_AGE | 31536000 |
SESSION_COOKIE_DOMAIN | '.hackermojo.com' |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_SECURE | False |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_SAVE_EVERY_REQUEST | False |
SETTINGS_MODULE | 'settings' |
SITE_ID | 1 |
TEMPLATE_CONTEXT_PROCESSORS | ('django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.request') |
TEMPLATE_DEBUG | True |
TEMPLATE_DIRS | ('/internet/hosts/www.hackermojo.com/hm/templates/',
'/internet/hosts/www.hackermojo.com/hm/templates/fluidity') |
TEMPLATE_LOADERS | ('django.template.loaders.filesystem.load_template_source',
'django.template.loaders.app_directories.load_template_source') |
TEMPLATE_STRING_IF_INVALID | '' |
TEST_DATABASE_NAME | None |
TEST_RUNNER | 'django.test.simple.run_tests' |
TIME_FORMAT | 'P' |
TIME_ZONE | 'America/Kentucky/Louisville' |
TRANSACTIONS_MANAGED | False |
URL_VALIDATOR_USER_AGENT | 'Django/0.96pre (http://www.djangoproject.com)' |
USE_ETAGS | False |
USE_I18N | True |
YEAR_MONTH_FORMAT | 'F Y' |
You're seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard 500 page.