[pypy-svn] r71979 - in pypy/extradoc/pypy.org: . css image js

fijal at codespeak.net fijal at codespeak.net
Tue Mar 9 18:25:54 CET 2010


Author: fijal
Date: Tue Mar  9 18:25:52 2010
New Revision: 71979

Added:
   pypy/extradoc/pypy.org/archive.html
   pypy/extradoc/pypy.org/compat.html
   pypy/extradoc/pypy.org/css/
   pypy/extradoc/pypy.org/css/site.css
   pypy/extradoc/pypy.org/download.html
   pypy/extradoc/pypy.org/image/
   pypy/extradoc/pypy.org/image/header-background.png   (contents, props changed)
   pypy/extradoc/pypy.org/image/pypy-logo.png   (contents, props changed)
   pypy/extradoc/pypy.org/js/
   pypy/extradoc/pypy.org/js/detect.js
   pypy/extradoc/pypy.org/more.html
   pypy/extradoc/pypy.org/sandbox.html
Modified:
   pypy/extradoc/pypy.org/   (props changed)
   pypy/extradoc/pypy.org/index.html
Log:
Try to import new stuff for pypy.org, let's see...


Added: pypy/extradoc/pypy.org/archive.html
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/archive.html	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>PyPy</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div class="section-info" id="all-articles"><strong>Blog Posts Archive</strong></div>
+<ul>
+</ul>
+<br />
+<div class="section-info" id="all-articles"><strong>Other Articles</strong></div>
+<ul>
+</ul>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file

Added: pypy/extradoc/pypy.org/compat.html
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/compat.html	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>PyPy :: Python compatibility</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div id="main">
+<h1 class="title">Python compatibility</h1>
+<p>PyPy implements Python language version 2.5. It supports all of the core
+language, passing Python test suite (with minor modifications that were
+already accepted in main python in newer versions). It supports most
+of commonly used Python <a class="reference external" href="http://docs.python.org/library/">standard library modules</a>, list below.</p>
+<p>PyPy does not support <a class="reference external" href="http://docs.python.org/c-api/">CPython C API</a>, which means that third party
+libraries for python, written in C, will not work.</p>
+<p>Standard library modules supported by PyPy, in alphabetical order:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">__builtin__</span> <span class="pre">__pypy__</span> <span class="pre">_codecs</span> <span class="pre">_lsprof</span> <span class="pre">_minimal_curses</span> <span class="pre">_random</span> <span class="pre">_rawffi</span> <span class="pre">_socket</span> <span class="pre">_sre</span> <span class="pre">_weakref</span> <span class="pre">bz2</span> <span class="pre">cStringIO</span> <span class="pre">crypt</span> <span class="pre">errno</span> <span class="pre">exceptions</span> <span class="pre">fcntl</span> <span class="pre">gc</span> <span class="pre">itertools</span> <span class="pre">marshal</span> <span class="pre">math</span> <span class="pre">md5</span> <span class="pre">mmap</span> <span class="pre">operator</span> <span class="pre">parser</span> <span class="pre">posix</span> <span class="pre">pyexpat</span> <span class="pre">select</span> <span class="pre">sha</span> <span class="pre">signal</span> <span class="pre">struct</span> <span class="pre">symbol</span> <span class="pre">sys</span> <span class="pre">termios</span> <span class="pre">thread</span> <span class="pre">time</span> <span class="pre">token</span> <span class="pre">unicodedata</span> <span class="pre">zipimport</span> <span class="pre">zlib</span></tt></li>
+</ul>
+<p>Supported, but written in pure-python:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">array</span> <span class="pre">binascii</span> <span class="pre">cPickle</span> <span class="pre">cmath</span> <span class="pre">collections</span> <span class="pre">ctypes</span> <span class="pre">datetime</span> <span class="pre">functools</span> <span class="pre">grp</span> <span class="pre">md5</span> <span class="pre">pwd</span> <span class="pre">pyexpat</span> <span class="pre">sha</span> <span class="pre">sqlite3</span> <span class="pre">syslog</span></tt></li>
+</ul>
+<p>All modules that are pure python in CPython of course work.</p>
+<p>Python libraries known to work under PyPy (the list is not exhaustive):</p>
+<ul class="simple">
+<li>ctypes</li>
+<li>django (without any DB but sqlite)</li>
+<li>twisted (without ssl support)</li>
+<li>pylons</li>
+<li>divmod's nevow</li>
+<li>pyglet</li>
+</ul>
+<p>Known differencies that are not going to be fixed:</p>
+<ul>
+<li><p class="first">PyPy does not support refcounting semantics. The code below
+won't fill the file immediately, but only after a certain period
+of time, when the GC will collect:</p>
+<pre class="literal-block">
+open(&quot;filename&quot;, &quot;w&quot;).write(&quot;stuff&quot;)
+</pre>
+<p>The proper fix is:</p>
+<pre class="literal-block">
+f = open(&quot;filename&quot;, &quot;w&quot;)
+f.write(&quot;stuff&quot;)
+f.close()
+</pre>
+</li>
+<li><p class="first">We don't support certain attributes that were decided to be
+implementation-dependent. For example <tt class="docutils literal"><span class="pre">gc.get_referrers</span></tt>. <tt class="docutils literal"><span class="pre">gc.enable</span></tt>
+and <tt class="docutils literal"><span class="pre">gc.disable</span></tt> are supported, but they don't enable and disable GC,
+but instead enable and disable running of finalizers.</p>
+</li>
+<li><p class="first">You can't attach a <tt class="docutils literal"><span class="pre">__del__</span></tt> method to a class after its creation.</p>
+</li>
+<li><p class="first">You can't store non-string keys in type objects. Example:</p>
+<pre class="literal-block">
+class A(object):
+    locals()[42] = 3
+</pre>
+<p>won't work.</p>
+</li>
+</ul>
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHJwYJKoZIhvcNAQcEoIIHGDCCBxQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAH3/sy5bDoM4O25ByvR5NOcWBI0FYbYC+pVo7QpE1V37Niw5RBidm8i3nf43oVHNrAnfeIzMmUfqpKjAHUxAVPmOAj/eCAMRrftdVALZ6CyKQspes8sBcA5lWYJQdG8C9fCrEFEpO4fHIALCVG8yQHxTzf+O5phBmz83cGFHNMAzELMAkGBSsOAwIaBQAwgaQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI4br55DXW8RqAgYD/r1840+fvxOpoBq/nayUvSYaNVcE3AXPvGfV4nlCEotgxkxxiN9eb4gIhAeKPQKXfy1IfyyWvKGInjHpfWza6VnAC6mfWun8yny5wM8lJ2y/qCFEHUjrO7z0xKhNA/M7A275wjTTGfILdIMmiPLOtFFpo9jBTNR0G0cdzq9cSsaCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDMwODE2MjkzMFowIwYJKoZIhvcNAQkEMRYEFBlmAndieba1aPu4bCySecgdf2DyMA0GCSqGSIb3DQEBAQUABIGAbsalxdqAxBBOgQZzA6u30njM6jqGugdDTUnbiaAKOK8K/i0lE+81vPWmta2xjXijZc9w7xiC6FQQwnsUqzj8IaEZbb1UalWnmkPh6Hg3pFexqUVfYMEdm6wqJzYKtUD0vcxT2rDyC2RRwXrrXwsdFrf2IVsfhpkx6LBVOb5UWX0=-----END PKCS7----- " />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+</div>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file

Added: pypy/extradoc/pypy.org/css/site.css
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/css/site.css	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,1352 @@
+/* No Copyright (-) 2010 The Ampify Authors. This file is under the */
+/* Public Domain license that can be found in the root LICENSE file. */
+
+/* Element styles */
+
+* {
+	margin: 0;
+	padding: 0;
+}
+
+html {
+	height: 100%;
+}
+
+body {
+	background-color: #efefef;
+	background-repeat: repeat;
+	font: 90%/1em 'Lucida Grande', 'Lucida Sans Unicode', Optima, Verdana, sans-serif;
+	height: 100%;
+	width: 100%;
+}
+
+a, a:visited, a:hover, a:active, a:hover {
+	color: blue;
+	text-decoration: underline;
+}
+
+a:hover {
+	text-decoration: none;
+}
+
+a.promote-fb, a.promote-fb:active, a.promote-fb:hover, a.promote-fb:visited {
+	background: url(http://static.ampify.it/gfx.share-facebook-sprite.png) no-repeat;
+	color: transparent;
+	display: block;
+	float: left;
+	height: 22px;
+	margin: 0 16px 0 0px;
+	outline; none;
+	overflow: hidden;
+	position: relative;
+	text-indent: 9999px !important;
+	top: -2px;
+	vertical-align: middle;
+	width: 146px;
+}
+
+a.promote-fb:hover {
+	background-position: 0 -22px;
+}
+
+a.promote-fb:active {
+	background-position: 0 -44px;
+}
+
+blockquote, p, dl, h1, h2, h3, h4, h5, h6, ol, ul {
+	padding-top: 0.5em;
+	padding-bottom: 0.5em;
+}
+
+code, .literal {
+	background-color: #f0f0f0;
+	border: 1px solid #dadada;
+	padding: 1px 3px;
+	font-family: Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+}
+
+dl, ol, ul {
+	padding-left: 20px;
+}
+
+h1 {
+	font-size: 2.25em;
+}
+
+h1, h2 {
+	color: #c32528;
+	font-family: "museo-1", "museo-2", Verdana;
+	letter-spacing: 1px;
+	text-shadow: #eee 2px 2px 3px;
+}
+
+img {
+	border: 0;
+}
+
+label, input, select, textarea {
+	cursor: pointer;
+}
+
+pre {
+	background-color: #fff;
+	border: 1px solid #cacaca;
+	color: #101010;
+	font: 12px/1.4em Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+	overflow: auto;
+	padding: 7px 0 8px 7px;
+	margin: 10px 30px 0 30px;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 0px 0px 7px #cacaca;
+}
+
+pre.ascii-art {
+	line-height: 1em;
+	overflow: visible;
+}
+
+pre code {
+	background-color: transparent;
+	border: 0;
+	padding: 0;
+}
+
+select {
+	max-width: 200px;
+}
+
+
+strong {
+	font-family: Museo, Verdana;
+	font-size: 1.1em;
+}
+
+table, table.docutils {
+	border: 0;
+	border-collapse: collapse;
+	margin: 0 auto;
+	text-align: left;
+}
+
+table.docutils {
+	margin: 5px 40px 10px 30px;
+}
+
+/*
+table a {
+	text-decoration: none;
+}
+*/
+
+th {
+	border-bottom: 2px solid #808096;
+	padding: 8px;
+}
+
+table.docutils td {
+	border-bottom: 1px solid #ccc;
+	padding: 9px 8px 8px 8px;
+}
+
+ul {
+	list-style-type: circle;
+}
+
+/* ID styles */
+
+#body {
+	background-color: #fff;
+	border-radius: 15px;
+	-webkit-border-radius: 15px;
+	-moz-border-radius: 15px;
+	padding: 5px;
+}
+
+#body-inner {
+   	margin: 0 auto;
+	padding: 10px 20px;
+	width: 950px;
+}
+
+#body-outer {
+	height: 100%;
+}
+
+body > #body-outer {
+	height: auto;
+	min-height: 100%;
+}
+
+#content {
+	line-height: 1.55em;
+}
+
+#footer-espians {
+	margin: 0 auto;
+	text-align: center;
+}
+
+#footer {
+	background-color: #161616;
+	background-image: url(http://static.ampify.it/gfx.footer-background.png);
+	background-position: top left;
+	background-repeat: repeat-x;
+	clear: both;
+	color: #fff;
+	height: 50px;
+	margin-top: -200px;
+	position: relative;
+	text-align: center;
+	width: 100%;
+}
+
+#footer-content {
+	margin: 0 auto;
+	padding-top: 15px;
+	text-align: center;
+}
+
+#header {
+	width: 100%;
+	border-bottom: 1px dashed #9e9e9e;
+	margin-bottom: 10px;
+}
+
+#logo {
+	float: left;
+}
+
+#main {
+	float: left;
+	padding: 10px 30px 0 10px;
+	width: 630px;
+	line-height: 2em;
+	font-size: 0.9em;
+}
+
+#main blockquote {
+	padding-left: 20px;
+}
+
+#main h1 {
+	font-size: 1.5em;
+	padding-top: 20px;
+	padding-bottom: 0;
+}
+
+#main h1.title {
+	font-size: 1.8em;
+	padding-top: 0;
+	padding-bottom: 10px;
+}
+
+#main p {
+	padding-top: 10px;
+}
+
+#main pre {
+	font-size: 14px;
+	font-family: "inconsolata-1", "inconsolata-2", Monaco, "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace;
+}
+
+#main ul, #main ol {
+	padding-left: 35px;
+}
+
+#main li {
+	padding-top: 5px;
+}
+
+#sidebar {
+	float: left;
+	width: 270px;
+	font-size: 0.9em;
+	line-height: 1.6em;
+}
+
+#sidebar a, #sidebar a:hover, #sidebar a:active, #sidebar a:visited {
+	text-decoration: none;
+}
+
+#sidebar a:hover {
+	text-decoration: underline;
+}
+
+#sidebar h3 {
+	text-align: right;
+	border-bottom: 1px solid #cacaca;
+	margin-bottom: 10px;
+}
+
+#sidebar ul {
+	list-style-type: none;
+	padding: 0;
+	margin: 0;
+}
+
+#sidebar li {
+	padding-bottom: 12px;
+}
+
+#sidebar li div, .sidebar-text {
+	color: #6e6e6e;
+	font-size: 0.9em;
+}
+
+#table-of-contents {
+	float: right;
+	margin: 10px 0 10px 20px;
+	border: 1px solid #cacaca;
+}
+
+#table-of-contents .topic-title {
+	display: none;
+}
+
+#table-of-contents ul {
+	padding: 0 20px 5px 20px;
+}
+
+#main-support-page {
+	width: 540px;
+	margin: 0 auto;
+}
+
+#main-support-page pre {
+	width: 350px;
+}
+
+#menu ul {
+	list-style-type: none;
+	padding: 0;
+}
+
+#menu ul li {
+	background-color: #fff;
+	float: left;
+	margin-left: 12px;
+	text-align: center;
+}
+
+#menu a {
+	border-top: 2px solid #ccc;
+	color: #000;
+	display: block;
+	font-size: 18px;
+	padding-top: 6px;
+	padding-bottom: 8px;
+	text-decoration: none;
+}
+
+#menu a.selected, #menu a.selected:hover {
+	background-color: #f6f6f6;
+	border-top: 2px solid #a9151b;
+}
+
+#menu a:hover {
+	border-top: 2px solid #969696;
+}
+
+#menu-follow {
+	float: right;
+}
+
+#menu-follow div {
+	padding: 0 5px 5px 0;
+}
+
+#menu-lang {
+	margin: 0 105px 0 20px;
+	float: left;
+	text-align: right;
+	width: 140px;
+}
+
+#menu-lang select {
+	max-width: 120px;
+}
+
+#menu-lang-form {
+	display: none;
+	margin-top: 5px;
+}
+
+#menu-sub {
+	font-size: 1em;
+	padding-bottom: 10px;
+	text-align: center;
+}
+
+.menu-sub-sep {
+	color: #9f9f9f;
+	padding: 2px;
+}
+
+#spread-button {
+	background-color: #ffffff;
+	border-radius: 5px;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	padding: 5px;
+}
+
+/* Support site IDs */
+
+#help-spread-the-word {
+	float: left;
+}
+
+/* Class styles */
+
+.absmiddle {
+	vertical-align: middle;
+}
+
+.boxed {
+	border: 1px solid #cacaca;
+	-moz-border-radius: 5px;
+	-webkit-border-radius: 5px;
+	border-radius: 5px;
+	-webkit-box-shadow: 0px 0px 7px #cacaca;
+}
+
+.center {
+	text-align: center;
+}
+
+/* clear utility classes */
+
+.clear {
+	background-color: transparent;
+	border: 0px solid;
+	clear: both;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+.clear-left {
+	background-color: transparent;
+	border: 0px solid;
+	clear: left;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+.clear-right {
+	background-color: transparent;
+	border: 0px solid;
+	clear: right;
+	height: 0;
+	margin: 0;
+	padding: 0;
+	width: 0;
+}
+
+/* clearfix */
+
+.clearfix:after {
+	content: ".";
+	display: block;
+	height: 0;
+	clear: both;
+	visibility: hidden;
+}
+
+.clearfix {
+	display: inline-block;
+}
+
+/* Hides from IE-mac \*/
+* html .clearfix {
+	height: 1%;
+}
+.clearfix {
+	display: block;
+}
+/* End hide from IE-mac */
+
+/* float utility classes */
+
+.float-left {
+  float: left;
+  padding-bottom: 7px;
+  padding-right: 7px;
+}
+
+.float-right {
+  float: right;
+  padding-bottom: 7px;
+  padding-left: 7px;
+}
+
+/* footer classes */
+
+.footer-follow {
+	margin: 0 45px 15px 0;
+	float: left;
+}
+
+.footer-follow a {
+	color: #fff;
+	text-decoration: underline;
+	font-size: 10px;
+}
+
+.footer-follow a:hover {
+	text-decoration: none;
+}
+
+.footer-follow div {
+	white-space: nowrap;
+}
+
+.footer-menu {
+	float: right;
+	margin: 17px 50px 0 0;
+	font-size: 10px;
+}
+
+.footer-menu a {
+	color: #fff;
+	padding-left: 5px;
+	padding-right: 5px;
+}
+
+.footer-text {
+	text-align: left;
+}
+
+/* quoted blocks with attribution */
+
+.quote {
+	background: transparent url(http://static.ampify.it/gfx.blockquote.gif) no-repeat 0 0;
+	padding: 6px 12px 0 40px;
+	color: #575757;
+	font-size: 22px;
+	line-height: 28px;
+}
+
+.quote-attribution {
+	color: #575757;
+	font-size: 14px;
+	text-align: right;
+	padding: 10px 12px 10px 0;
+}
+
+.quote-attribution a, .quote-attribution a:active, .quote-attribution a:visited {
+	color: #575757;
+	text-decoration: underline;
+}
+
+.quote-attribution a:hover {
+	text-decoration: none;
+}
+
+/* Source code syntax highlighting */
+
+.syntax .c { color: #919191 } /* Comment */
+.syntax .cm { color: #919191 } /* Comment.Multiline */
+.syntax .cp { color: #919191 } /* Comment.Preproc */
+.syntax .cs { color: #919191 } /* Comment.Special */
+.syntax .c1 { color: #919191 } /* Comment.Single */
+
+.syntax .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+
+.syntax .g { color: #101010 } /* Generic */
+.syntax .gd { color: #d22323 } /* Generic.Deleted */
+.syntax .ge { color: #101010; font-style: italic } /* Generic.Emph */
+.syntax .gh { color: #101010 } /* Generic.Heading */
+.syntax .gi { color: #589819 } /* Generic.Inserted */
+.syntax .go { color: #6a6a6a } /* Generic.Output */
+.syntax .gp { color: #6a6a6a } /* Generic.Prompt */
+.syntax .gr { color: #d22323 } /* Generic.Error */
+.syntax .gs { color: #101010 } /* Generic.Strong */
+.syntax .gt { color: #d22323 } /* Generic.Traceback */
+.syntax .gu { color: #101010 } /* Generic.Subheading */
+
+.syntax .k { color: #c32528 } /* Keyword */ /* espian red */
+.syntax .k { color: #ff5600 } /* Keyword */ /* orangy */
+.syntax .kc { color: #ff5600 } /* Keyword.Constant */
+.syntax .kd { color: #ff5600 } /* Keyword.Declaration */
+.syntax .kd { color: #ff5600 } /* Keyword.Declaration */
+.syntax .kn { color: #ff5600 } /* Keyword */
+.syntax .kp { color: #ff5600 } /* Keyword.Pseudo */
+.syntax .kr { color: #ff5600 } /* Keyword.Reserved */
+.syntax .kt { color: #ff5600 } /* Keyword.Type */
+
+.syntax .l { color: #101010 } /* Literal */
+.syntax .ld { color: #101010 } /* Literal.Date */
+
+.syntax .m { color: #3677a9 } /* Literal.Number */ /* darkish pastely blue */
+.syntax .m { color: #00a33f } /* Literal.Number */ /* brightish green */
+.syntax .m { color: #1550a2 } /* Literal.Number */ /* darker blue */
+.syntax .m { color: #5d90cd } /* Literal.Number */ /* pastely blue */
+.syntax .mf { color: #5d90cd } /* Literal.Number.Float */
+.syntax .mh { color: #5d90cd } /* Literal.Number.Hex */
+.syntax .mi { color: #5d90cd } /* Literal.Number.Integer */
+.syntax .il { color: #5d90cd } /* Literal.Number.Integer.Long */
+.syntax .mo { color: #5d90cd } /* Literal.Number.Oct */
+
+.syntax .bp { color: #a535ae } /* Name.Builtin.Pseudo */
+.syntax .n { color: #101010 } /* Name */
+.syntax .na { color: #bbbbbb } /* Name.Attribute */
+.syntax .nb { color: #bf78cc } /* Name.Builtin */ /* pastely purple */
+.syntax .nb { color: #af956f } /* Name.Builtin */ /* pastely light brown */
+.syntax .nb { color: #a535ae } /* Name.Builtin */ /* brightish pastely purple */
+.syntax .nc { color: #101010 } /* Name.Class */
+.syntax .nd { color: #6d8091 } /* Name.Decorator */
+.syntax .ne { color: #af956f } /* Name.Exception */
+.syntax .nf { color: #3677a9 } /* Name.Function */
+.syntax .nf { color: #1550a2 } /* Name.Function */
+.syntax .ni { color: #101010 } /* Name.Entity */
+.syntax .nl { color: #101010 } /* Name.Label */
+.syntax .nn { color: #101010 } /* Name.Namespace */
+.syntax .nn { color: #101010 } /* Name.Namespace */
+.syntax .no { color: #101010 } /* Name.Constant */
+.syntax .nx { color: #101010 } /* Name.Other */
+.syntax .nt { color: #6d8091 } /* Name.Tag */
+.syntax .nv { color: #101010 } /* Name.Variable */
+.syntax .vc { color: #101010 } /* Name.Variable.Class */
+.syntax .vg { color: #101010 } /* Name.Variable.Global */
+.syntax .vi { color: #101010 } /* Name.Variable.Instance */
+.syntax .py { color: #101010 } /* Name.Property */
+
+.syntax .o { color: #ff5600 } /* Operator */ /* orangy */
+.syntax .o { color: #101010 } /* Operator */
+.syntax .ow { color: #101010 } /* Operator.Word */
+
+.syntax .p { color: #101010 } /* Punctuation */
+
+.syntax .s { color: #dd1144 } /* Literal.String */ /* darkish red */
+.syntax .s { color: #c32528 } /* Literal.String */ /* espian red */
+.syntax .s { color: #39946a } /* Literal.String */ /* pastely greeny */
+.syntax .s { color: #5d90cd } /* Literal.String */ /* pastely blue */
+.syntax .s { color: #00a33f } /* Literal.String */ /* brightish green */
+.syntax .sb { color: #00a33f } /* Literal.String.Backtick */
+.syntax .sc { color: #00a33f } /* Literal.String.Char */
+.syntax .sd { color: #00a33f } /* Literal.String.Doc */
+.syntax .se { color: #00a33f } /* Literal.String.Escape */
+.syntax .sh { color: #00a33f } /* Literal.String.Heredoc */
+.syntax .si { color: #00a33f } /* Literal.String.Interpol */
+.syntax .sr { color: #00a33f } /* Literal.String.Regex */
+.syntax .ss { color: #00a33f } /* Literal.String.Symbol */
+.syntax .sx { color: #00a33f } /* Literal.String.Other */
+.syntax .s1 { color: #00a33f } /* Literal.String.Single */
+.syntax .s2 { color: #00a33f } /* Literal.String.Double */
+
+.syntax .w { color: #101010 } /* Text.Whitespace */
+.syntax .x { color: #101010 } /* Other */
+
+.syntax.bash .nb { color: #101010 }
+.syntax.bash .nv { color: #c32528 }
+
+.syntax.css .k { color: #606060 }
+.syntax.css .nc { color: #c32528 }
+.syntax.css .nf { color: #c32528 }
+.syntax.css .nt { color: #c32528 }
+
+.syntax.rst .k { color: #5d90cd }
+.syntax.rst .ow { color: #5d90cd }
+.syntax.rst .p { color: #5d90cd }
+
+.syntax.yaml .l-Scalar-Plain { color: #5d90cd }
+.syntax.yaml .p-Indicator { color: #101010 }
+
+/* classes for support pages */
+
+.community-section {
+	margin: 10px auto 10px auto;
+	width: 500px;
+}
+
+.community-section-heading {
+	font-size: 1.6em;
+	margin-top: 10px;
+}
+
+.community-section-heading span {
+	background-color: #efd7d7;
+	line-height: 1.7em;
+}
+
+.community-section-text {
+	line-height: 1.6em;
+	padding: 10px 0 0 50px;
+}
+
+.support-page-banner {
+	font-size: 1.2em;
+	line-height: 1.6em;
+	margin: 20px 0;
+}
+
+.support-page-banner-text {
+	background-color: #f0f0f0;
+}
+
+/* classes for the main support page */
+
+.promote {
+	margin: 5px 0 0px 26px;
+}
+
+.promote-retweet {
+	margin-top: 2px;
+	float: left;
+}
+
+.promote-yahoo-buzz {
+	margin: -2px 15px 0 0;
+	float: left;
+	padding-bottom: 5px;
+}
+
+.promote-google-buzz, .promote-google-buzz:active, .promote-google-buzz:visited, .promote-google-buzz:hover {
+	background: url(http://static.ampify.it/icon.google-buzz.png) no-repeat 0 3px;
+	color: #666;
+	float: left;
+	font-size: 0.9em;
+	font-weight: bold;
+	margin-top: -2px;
+	padding: 0 10px 5px 20px;
+	text-decoration: none;
+}
+
+.promote-google-buzz:hover {
+	text-decoration: underline;
+}
+
+.share-text {
+	font-size: 18px;
+	line-height: 24px;
+	margin: 0px 0 12px 26px;
+	color: #aaa;
+}
+
+/* thanks to mashable.com for these wonderful share icons + css!! thanks guys -- you rock!! */
+
+ul.share-buttons {
+	line-height: normal;
+	margin: 12px 0 0 24px;
+	padding: 0;
+}
+
+.share-buttons li {
+	display: inline;
+	float: left;
+	list-style-type: none;
+	margin: 0 18px 12px 0;
+	padding-top: 1px;
+}
+
+.share-buttons a {
+	background: url(http://static.ampify.it/gfx.mashable-syndication.gif) no-repeat;
+	color: #575757;
+	display: block;
+	font-size: 7px;
+	height: 14px;
+	overflow: hidden;
+	padding: 33px 0 0;
+	text-align: center;
+	text-decoration: none;
+	white-space: nowrap;
+	width: 46px;
+}
+
+.share-buttons a:hover {
+	text-decoration:none;
+}
+
+.share-buttons .delicious a {
+	background-position: -138px 0;
+}
+
+.share-buttons .delicious a:hover {
+	background-position: -138px -47px;
+}
+
+.share-buttons .digg a {
+	background-position: 0 0;
+}
+
+.share-buttons .digg a:hover {
+	background-position: 0 -47px;
+}
+
+.share-buttons .facebook a {
+	background-position: -184px 0;
+}
+
+.share-buttons .facebook a:hover {
+	background-position: -184px -47px;
+}
+
+.share-buttons .google a {
+	background-position: -276px 0;
+}
+
+.share-buttons .google a:hover {
+	background-position: -276px -47px;
+}
+
+.share-buttons .myspace a {
+	background-position: -230px 0;
+}
+
+.share-buttons .myspace a:hover {
+	background-position: -230px -47px;
+}
+
+.share-buttons .reddit a {
+	background-position: -414px 0;
+}
+
+.share-buttons .reddit a:hover {
+	background-position: -414px -47px;
+}
+
+.share-buttons .sharethis a {
+	background-position: -460px 0;
+}
+
+.share-buttons .sharethis a:hover {
+	background-position: -460px -47px;
+}
+
+.share-buttons .stumbleupon a {
+	background-position: -92px 0;
+}
+
+.share-buttons .stumbleupon a:hover {
+	background-position: -92px -47px;
+}
+
+.share-buttons .technorati a {
+	background-position: -322px 0;
+}
+
+.share-buttons .technorati a:hover {
+	background-position: -322px -47px;
+}
+
+.share-buttons .twitter a {
+	background-position: -46px 0;
+}
+
+.share-buttons .twitter a:hover {
+	background-position: -46px -47px;
+}
+
+.share-buttons .yahoo a {
+	background-position: -368px 0;
+}
+
+.share-buttons .yahoo a:hover {
+	background-position: -368px -47px;
+}
+
+/* Unsorted */
+
+.columns {
+  max-width: 940px;
+  width: 940px;
+}
+
+.column, .column-last {
+  float: left;
+	/*
+  height: 180px;
+	   */
+  padding: 0 10px 0 0;
+  position: relative;
+  width: 227px;
+}
+
+.column-last {
+  padding: 0 0 0 0;
+}
+
+.column-text {
+  font-size: 12px;
+  line-height: 18px;
+  margin: 10px 0 20px 15px;
+}
+
+.column-footer {
+  background-image: url(bottom.gif);
+  background-repeat: no-repeat;
+  background-color: transparent;
+/*
+	background-attachment: scroll;
+	   */
+}
+
+.column-left {
+  border-right: 0px solid #f00;
+  float: left;
+  width: 455px;
+}
+
+.column-left-text {
+  font-size: 12px;
+  line-height: 18px;
+  margin-left: 12px;
+}
+
+.column-right {
+  float: right;
+  width: 485px;
+}
+
+.follow {
+  display: block;
+  list-style-type: none;
+  margin: 12px 0px 0px 24px;
+  padding: 0px;
+  text-align: center;
+}
+
+.follow li {
+  float: left;
+  display: block;
+  margin-right: 30px;
+  margin-bottom: 18px;
+}
+
+.follow a {
+  color: #575757;
+  display: block;
+  font-size: 10px;
+  margin-top: 7px;
+  text-decoration: underline;
+  text-decoration: none;
+  font-weight: bold;
+}
+
+.follow a:hover {
+  text-decoration: none;
+}
+
+.get-left {
+  float: left;
+  width: 230px;
+  margin-right: 12px;
+  font-weight: bold;
+}
+
+.get-right {
+  float: right;
+  width: 230px;
+  margin-right: 12px;
+  font-weight: bold;
+}
+
+.get-item {
+  border: 1px solid #ccc;
+  border-radius: 15px;
+  -webkit-border-radius: 15px;
+  -moz-border-radius: 15px;
+  margin-top: 10px;
+  font-weight: normal;
+  margin: 12px 0 12px 0;
+  padding: 10px;
+}
+
+.get-item img {
+  float: left;
+  margin-right: 5px;
+  padding-top: 3px;
+  vertical-align: middle;
+}
+
+.headline {
+  margin-bottom: 10px;
+  text-align: center;
+  line-height: 36px;
+}
+
+.headline-text {
+  background-color: #f0f0f0;
+  font-size: 20px;
+}
+
+.headline-text-small {
+  background-color: #f0f0f0;
+  font-size: 20px;
+}
+
+.lede {
+  background-color: #dfdfdf;
+}
+
+.link {
+  font-size: 16px;
+}
+
+.oneoff {
+  margin: 12px 12px 12px 0;
+  font-size: 14px;
+  line-height: 20px;
+  border-top: 1px solid #ccc;
+  border-bottom: 1px solid #ccc;
+  padding: 12px 0 12px 0;
+}
+
+.optional {
+  color: #666;
+  font-size: 9px;
+  vertical-align: super;
+}
+
+/* other */
+
+#callout {
+  background-color: #fff;
+  margin-bottom: 10px;
+/*
+  border-bottom-left-radius: 15px;
+  border-bottom-right-radius: 15px;
+  -moz-border-radius-bottomleft: 15px;
+  -moz-border-radius-bottomright: 15px;
+  -webkit-border-bottom-left-radius: 15px;
+  -webkit-border-bottom-right-radius: 15px;
+*/
+  padding: 10px;
+}
+
+#feature {
+  float: right;
+}
+
+#supporter-form {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 8px 0 0 0;
+  padding-top: 5px;
+}
+
+#supporter-form td {
+  padding-top: 10px;
+  vertical-align: top;
+}
+
+#supporter-form .label {
+  text-align: right;
+  width: 205px;
+  padding-right: 10px;
+  padding-left: 10px;
+  font-size: 12px;
+  font-weight: bold;
+  white-space: nowrap;
+}
+
+.input-item input, .input-item textarea {
+  /* thanks soundcloud! */
+  background-image: url(http://static.ampify.it/gfx.button-repeat.png);
+  background-position: 0 -1200px;
+  background-repeat: repeat-x;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  -webkit-border-radius: 5px;
+  -moz-border-radius: 5px;
+  color: #333;
+  font-size: 20px;
+  max-width: 220px;
+  padding: 3px 0 3px 3px;
+  width: 220px;
+}
+
+.input-item select {
+  font-size: 16px;
+}
+
+.male {
+  border: 2px solid #70b1e6;
+  background-color: #eaf3fb;
+}
+
+.male .label {
+  color: #70b1e6;
+}
+
+.female {
+  border: 2px solid #ed6aa4;
+  background-color: #fee5f5;
+}
+
+.female .label {
+  color: #ed6aa4;
+}
+
+#supporter-submit {
+  text-align: center;
+  padding: 0 0 15px 0;
+}
+
+#support {
+  font-size: 20px;
+  margin-bottom: 15px;
+  margin-top: 5px;
+}
+
+.male-counter {
+  color: #70b1e6;
+  font-size: 12px;
+  margin-bottom: -50px;
+  white-space: nowrap;
+}
+
+.female-counter {
+  color: #ed6aa4;
+  font-size: 12px;
+  padding-left: 24px;
+  margin-bottom: -50px;
+  white-space: nowrap;
+}
+
+
+.tav-thanks {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 12px 12px 12px 0;
+  color: #575757;
+  color: #000;
+  font-style: italic;
+}
+
+.tav-thanks img {
+  float: right;
+  margin-left: 12px;
+}
+
+.tav-thanks div {
+  text-align: right;
+  font-size: 12px;
+  line-height: 20px;
+  margin-top: 12px;
+}
+/*
+.tav-thanks a {
+  color: #000;
+  text-decoration: underline;
+}  
+
+.tav-thanks a:hover {
+  text-decoration: none;
+}  
+*/
+
+.the-disqus-section {
+  margin: 12px 12px 12px 0;
+  min-height: 500px;
+}
+
+.the-disqus-section h3 {
+  margin-top: 10px;
+  margin-bottom: 12px;
+  font-size: 20px;
+}
+
+.action-items {
+  font-size: 14px;
+  line-height: 26px;
+  margin: 10px 24px; 20px 24px;
+}
+
+.action-left {
+  float: left;
+  margin-right: 20px;
+}
+
+.action-link {
+  margin-top: 20px;
+}
+
+.action-text {
+  margin-top: 20px;
+}
+
+/* plan file related css */
+
+a.button {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-a.gif') no-repeat scroll top right;
+  color: #444;
+  display: block;
+  float: left;
+  font: normal 12px arial, sans-serif;
+  height: 24px;
+  margin-right: 6px;
+  padding-right: 18px; /* sliding doors padding */
+  text-decoration: none;
+}
+
+a.button span {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-span.gif') no-repeat;
+  display: block;
+  line-height: 14px;
+  padding: 5px 0 5px 18px;
+}
+
+a.button:active {
+  background-position: bottom right;
+  color: #000;
+  outline: none; /* hide dotted outline in Firefox */
+}
+
+a.button:active span {
+  background-position: bottom left;
+  padding: 6px 0 4px 18px; /* push text down 1px */
+}
+
+a.buttondown {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-a.gif') no-repeat scroll top right;
+  color: #444;
+  display: block;
+  float: left;
+  font: normal 12px arial, sans-serif;
+  height: 24px;
+  margin-right: 6px;
+  padding-right: 18px; /* sliding doors padding */
+  text-decoration: none;
+  background-position: bottom right;
+  color: #000;
+  outline: none; /* hide dotted outline in Firefox */
+}
+
+a.buttondown span {
+  background: transparent url('http://static.ampify.it/gfx.bg-button-span.gif') no-repeat;
+  display: block;
+  line-height: 14px;
+  padding: 5px 0 5px 18px;
+  background-position: bottom left;
+  padding: 6px 0 4px 18px; /* push text down 1px */
+}
+
+.tag-segment {
+  text-align: right;
+}
+
+.tag-segment span {
+  color: #fff;
+  padding: 0.5em;
+  font-size: 0.7em;
+}
+
+.tag-link {
+  text-decoration: none;
+  color: #000;
+}
+
+.tag {
+  background-color: #696969;
+}
+
+.tag-val-done {
+  background-color: #007f16;
+  background-color: #00782d;
+  background-color: #006400;
+}
+
+.tag-val-needsreview {
+  background-color: #a4ff00;
+  color: #000 !important;
+}
+
+.tag-val-inreview {
+  background-color: #3056bf;
+}
+
+.tag-val-todo {
+  background-color: #a60c00;
+  background-color: #d0006e;
+  background-color: #8B0000;
+}
+
+.tag-val-wip {
+  background-color: #a66e00;
+  background-color: #ff550f;
+}
+
+.tag-type-1 {
+}
+
+.tag-type-2 { /* #hashtags */
+  background-color: #2a4580;
+  background-color: #696969;
+}
+
+.tag-type-dep {
+  display: none;
+}
+
+.tag-type-milestone {
+  background-color: #00008B;
+  background-color: #06276f;
+  background-color: #a4ff00; /* nice colour! */
+  /* color: #000 !important; */
+  background-color: #002ca6;
+  background-color: #3056bf;
+  background-color: #898989;
+}
+
+.tag-type-priority {
+  background-color: #481254;
+}
+
+.tag-type-zuser {
+  background-color: #4573d5;
+  background-color: #696969;
+}
+
+#plan-tags a, #site-tags a {
+  margin-bottom: 0.7em;
+}
+
+#plan-container {
+  margin-top: 1.2em;
+  margin-bottom: 2.4em;
+}
+
+.plan-help {
+  font-size: 0.9em;
+  font-weight: bold;
+  text-align: right;
+  margin-bottom: 1.4em;
+}
+
+.container {
+	padding-left: 20px;
+}
+
+.container blockquote {
+	padding: 0 0 0 30px;
+}
+
+.container > p:first-child {
+	font-weight: bold;
+	font-family: "museo-1", "museo-2", Verdana;
+	padding-bottom: 0;
+}
+
+.sidepic {
+    padding-top: 50px;
+    text-align: center;
+}
+
+a#main_download {
+    -moz-border-radius: 10px;
+    -webkit-border-radius: 10px;
+    border-radius: 5px;
+    margin-left: 10%;
+    margin-right: 10%;
+    padding: 5px;
+    display: block;
+    color: white;
+    background-color: #0b0;
+}
\ No newline at end of file

Added: pypy/extradoc/pypy.org/download.html
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/download.html	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,221 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>PyPy :: Download and install</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div id="main">
+<h1 class="title">Download and install</h1>
+<p>Here are the various binaries of <strong>PyPy 1.2</strong> that we provide for x86 Linux,
+Mac OS/X or Windows.</p>
+<ul class="simple">
+<li><a class="reference internal" href="#with-a-jit-compiler">With a JIT Compiler</a> <strong>(recommended!)</strong></li>
+<li><a class="reference internal" href="#with-no-jit-compiler">With no JIT Compiler</a></li>
+<li><a class="reference internal" href="#sandboxed-version">Sandboxed version</a></li>
+<li><a class="reference internal" href="#stackless-version">Stackless version</a></li>
+<li><a class="reference internal" href="#building-from-source">Building from source</a></li>
+</ul>
+<p>The release 1.2 of PyPy supports <strong>Python version 2.5</strong>.
+If you are interested in helping
+with 2.6, 2.7 or 3.x features, <a class="reference external" href="http://codespeak.net/mailman/listinfo/pypy-dev">contact us</a>!</p>
+<div class="section" id="jit-compiler-version">
+<span id="with-a-jit-compiler"></span><h1>&ldquo;JIT Compiler&rdquo; version</h1>
+<p>These binaries include a Just-in-Time compiler.  They only work on
+<strong>32-bit</strong> <a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a> CPUs that have the <a class="reference external" href="http://en.wikipedia.org/wiki/SSE2">SSE2</a> instruction set (most of
+them do, nowadays), as well as on any <a class="reference external" href="http://en.wikipedia.org/wiki/X86-64">x86-64</a> machine in the 32-bit
+compatibility mode.</p>
+<ul class="simple">
+<li>Linux binary</li>
+<li>Mac OS/X binary</li>
+<li>Windows binary (this version is alpha software!)</li>
+</ul>
+<p>If your CPU is really old, it may not have SSE2.  In this case, you need
+to <a class="reference internal" href="#translate">translate</a> yourself with the option <tt class="docutils literal"><span class="pre">--jit-backend=x86-without-sse2</span></tt>.</p>
+<p>If your CPU is a 64-bit machine and you want to <a class="reference internal" href="#translate">translate</a> a 32-bit
+version of PyPy yourself, <a class="reference internal" href="#here-are-hints">here are hints</a>.</p>
+<p>If you want to help us with implementing the 64-bit JIT backend,
+<a class="reference external" href="http://codespeak.net/mailman/listinfo/pypy-dev">contact us</a>!</p>
+</div>
+<div class="section" id="id1">
+<span id="no-jit-version"></span><span id="with-no-jit-compiler"></span><h1>&ldquo;No JIT&rdquo; version</h1>
+<p><strong>WARNING!</strong> Unless you really want to try this out, we recommend the JIT
+version.</p>
+<p>This version still has a few advantages over the JIT Compiler version.
+Notably, for Python programs that require large amounts of memory (at
+least a few hundred MBs), the following version of <tt class="docutils literal"><span class="pre">pypy-c</span></tt> runs them
+by requiring generally 1.5x or 2x less memory than CPython.  These
+binaries work on 32-bit <a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a> CPUs as well as <a class="reference external" href="http://en.wikipedia.org/wiki/X86-64">x86-64</a> CPUs
+in the 32-bit compatibility mode.</p>
+<ul class="simple">
+<li>Linux binary</li>
+<li>Mac OS/X binary</li>
+<li>Windows binary</li>
+</ul>
+<p>If your CPU is a 64-bit machine and you want to <a class="reference internal" href="#translate">translate</a> a 32-bit
+version of PyPy yourself, <a class="reference internal" href="#here-are-hints">here are hints</a>.</p>
+<p>If you want to help us with finishing the implementation of the native
+64-bit version (there are a few known issues, like missing code in
+<a class="reference external" href="http://www.python.org/doc/2.5.4/lib/module-ctypes.html">ctypes</a> to implement calls to C functions), <a class="reference external" href="http://codespeak.net/mailman/listinfo/pypy-dev">contact us</a> or
+<strong>donate money</strong>!</p>
+</div>
+<div class="section" id="sandbox-version">
+<span id="sandboxed-version"></span><h1>&ldquo;Sandbox&rdquo; version</h1>
+<p>A special safe version.  Read the docs about <a class="reference external" href="sandbox.html">sandboxing</a>.  These
+binaries work on 32-bit <a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a> CPUs as well as <a class="reference external" href="http://en.wikipedia.org/wiki/X86-64">x86-64</a> CPUs
+in the 32-bit compatibility mode.</p>
+<ul class="simple">
+<li>Linux binary</li>
+<li>Mac OS/X binary</li>
+<li>Windows binary</li>
+</ul>
+<p>It is also possible to <a class="reference internal" href="#translate">translate</a> a version that includes both
+sandboxing and the JIT compiler, although as the JIT is relatively
+complicated, this reduce a bit the level of confidence we can put in it.</p>
+<p>If your CPU is a 64-bit machine and you want to <a class="reference internal" href="#translate">translate</a> a 32-bit
+version of PyPy yourself, <a class="reference internal" href="#here-are-hints">here are hints</a>.</p>
+<p>The native 64-bit version needs testing and careful reviewing;
+<a class="reference external" href="http://codespeak.net/mailman/listinfo/pypy-dev">contact us</a>!</p>
+</div>
+<div class="section" id="id2">
+<span id="stackless-version"></span><h1>&ldquo;Stackless&rdquo; version</h1>
+<p>Provides <a class="reference external" href="http://www.stackless.com/">Stackless</a> extensions, as well as <a class="reference external" href="http://codespeak.net/svn/greenlet/trunk/doc/greenlet.txt">greenlets</a>.  These
+binaries work on 32-bit <a class="reference external" href="http://en.wikipedia.org/wiki/IA-32">x86 (IA-32)</a> CPUs as well as <a class="reference external" href="http://en.wikipedia.org/wiki/X86-64">x86-64</a> CPUs
+in the 32-bit compatibility mode.</p>
+<ul class="simple">
+<li>Linux binary</li>
+<li>Mac OS/X binary</li>
+<li>Windows binary</li>
+</ul>
+<p>It is not possible right now to combine Stackless features with the JIT.</p>
+<p>If your CPU is a 64-bit machine and you want to <a class="reference internal" href="#translate">translate</a> a 32-bit
+version of PyPy yourself, <a class="reference internal" href="#here-are-hints">here are hints</a>.</p>
+<p>For the native 64-bit version, see the issues of the <a class="reference internal" href="#no-jit-version">no jit version.</a>.</p>
+</div>
+<div class="section" id="building-from-source">
+<span id="translate"></span><h1>Building from source</h1>
+<ol class="arabic">
+<li><p class="first">Get the source code.  The following packages contain the source at
+the same revision as the above binaries:</p>
+<ul class="simple">
+<li><a class="reference external" href="binaries/pypy-1.2.0.tar.bz2">pypy-1.2.0.tar.bz2</a> (sources, Unix line endings)</li>
+<li><a class="reference external" href="binaries/pypy-1.2.0.zip">pypy-1.2.0.zip</a> (sources, Windows line endings)</li>
+</ul>
+<p>Or you can checkout the current trunk using <a class="reference external" href="http://subversion.tigris.org/">Subversion</a> (the trunk
+usually works and is of course more up-to-date):</p>
+<pre class="literal-block">
+svn co http://codespeak.net/svn/pypy/trunk pypy-dist
+</pre>
+</li>
+<li><p class="first">Enter the <tt class="docutils literal"><span class="pre">goal</span></tt> directory:</p>
+<pre class="literal-block">
+cd pypy-dist/pypy/translator/goal
+</pre>
+</li>
+<li><p class="first">Run the <tt class="docutils literal"><span class="pre">translate.py</span></tt> script.  Here are the common combinations
+of options:</p>
+<pre class="literal-block">
+python translate.py -Ojit                # get the JIT version
+python translate.py -O2                  # get the no-jit version
+python translate.py --sandbox            # get the sandbox version
+python translate.py --stackless          # get the stackless version
+python translate.py -Ojit --backend=cli  # only for branch/cli-jit
+</pre>
+</li>
+<li><p class="first">Enjoy Mandelbrot <tt class="docutils literal"><span class="pre">:-)</span></tt>  It takes on the order of one hour to
+finish the translation, and 1.3 GB of RAM on a 32-bit system.
+(Do not start a translation on a machine with 1GB or less!)</p>
+</li>
+</ol>
+<div class="section" id="note-on-building-a-32-bit-version-on-64-bit-systems">
+<span id="here-are-hints"></span><h2>Note on building a 32-bit version on 64-bit systems</h2>
+<p>To build 32-bit versions of <tt class="docutils literal"><span class="pre">pypy-c</span></tt> you need to run <tt class="docutils literal"><span class="pre">translate.py</span></tt>
+in a 32-bit version of Python.  You can check with:</p>
+<pre class="literal-block">
+$ python
+Python 2.6.2 (...)
+&gt;&gt;&gt; import sys
+&gt;&gt;&gt; sys.maxint
+</pre>
+<p>This prints 9223372036854775807 in 64-bit versions and 2147483647 in
+32-bit versions.</p>
+<p>On Linux, you may have to compile yourself a 32-bit Python, e.g.:</p>
+<pre class="literal-block">
+cd Python-2.6.4
+CC=&quot;gcc -m32&quot; LDFLAGS=&quot;-L/lib32 -L/usr/lib32 \
+  -L`pwd`/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32&quot; \
+  ./configure
+make
+# and then use this ./python to run translate.py
+</pre>
+<p>On Mac OS/X: the easiest is to systematically use Python 2.5 when
+working with PyPy.  Indeed, the standard Python 2.5 runs in 32-bit mode.</p>
+<p>On Windows, I only know about the solution of installing a 32-bit Python
+manually.</p>
+</div>
+</div>
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- " />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+</div>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file

Added: pypy/extradoc/pypy.org/image/header-background.png
==============================================================================
Binary file. No diff available.

Added: pypy/extradoc/pypy.org/image/pypy-logo.png
==============================================================================
Binary file. No diff available.

Modified: pypy/extradoc/pypy.org/index.html
==============================================================================
--- pypy/extradoc/pypy.org/index.html	(original)
+++ pypy/extradoc/pypy.org/index.html	Tue Mar  9 18:25:52 2010
@@ -1,16 +1,93 @@
-
+<!DOCTYPE html>
 <html>
-    <head>
-        <meta http-equiv="refresh" 
-              content="0 ; URL=http://codespeak.net/pypy/" />
-        <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
-        <META HTTP-EQUIV="expires" CONTENT="0">
-    </head>
-    <body>
-        <p>
-            you should be redirected to
-            <a href="http://codespeak.net/pypy/">
-            http://codespeak.net/pypy/dist/pypy/</a>
-        </p>
-    </body>
-</html>
+<head>
+	<title>PyPy :: PyPy</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div id="main">
+<h1 class="title">PyPy</h1>
+<p>PyPy is a <a class="reference external" href="compat.html">very compliant</a> implementation of the <a class="reference external" href="http://python.org/">Python</a> language.
+PyPy has several advantages and distinctive features:</p>
+<blockquote>
+<ul class="simple">
+<li><strong>Speed:</strong> thanks to its Just-in-Time compiler, Python programs
+often run <a class="reference external" href="http://speed.pypy.org/">faster</a> on PyPy.  <a class="reference external" href="http://en.wikipedia.org/wiki/Just-in-time_compilation">(What is a JIT compiler?)</a></li>
+<li><strong>Memory usage:</strong> large, memory-hungry Python programs might end up
+taking <a class="reference external" href="http://morepypy.blogspot.com/2009/10/gc-improvements.html">less space</a> than they do in CPython.</li>
+<li><strong>Sandboxing:</strong> PyPy provides the ability to <a class="reference external" href="sandbox.html">run untrusted code</a> in a
+fully secure way.</li>
+<li><strong>Stackless:</strong> PyPy can be configured to run in <a class="reference external" href="http://www.stackless.com/">stackless</a> mode,
+providing micro-threads for massive concurrency.</li>
+<li>As well as <a class="reference external" href="more.html">other features</a>.</li>
+</ul>
+</blockquote>
+<p class="download"><a class="reference external" href="download.html">Download and try out the PyPy release 1.2!</a></p>
+<p>To read more about Python, look into <a class="reference external" href="http://www.python.org/doc/2.5.4/">Python docs</a> and check our
+<a class="reference external" href="compat.html">Compatibility</a> page.  PyPy can run such python libraries as <a class="reference external" href="http://twistedmatrix.com/">twisted</a>
+and <a class="reference external" href="http://www.djangoproject.com/">django</a> and supports <a class="reference external" href="http://www.python.org/doc/2.5.4/lib/module-ctypes.html">ctypes</a>.</p>
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- " />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+</div>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file

Added: pypy/extradoc/pypy.org/js/detect.js
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/js/detect.js	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,18 @@
+
+$(document).ready(function() {
+    var download_url, download_text;
+    if (navigator.platform.indexOf('Linux') != -1) {
+        download_url = 'download/pypy-1.2.tar.bz2';
+        download_text = 'Download linux i386 bin';
+    } else if (navigator.platform.indexOf('Windows') != -1) {
+        download_url = 'download/pypy-1.2-win32.zip';
+        download_text = 'Download Windows i386 bin';
+    } else if (navigator.platform.indexOf('Mac') != 1) {
+        download_url = 'download/pypy-1.2-mac.tar.bz2';
+        downloat_text = 'Download Mac OS X 10.6 bin';
+    } else {
+        return;
+    }
+    $("#main_download").attr('href', download_url);
+    $("#main_download").text(download_text);
+});

Added: pypy/extradoc/pypy.org/more.html
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/more.html	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>PyPy :: More features</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div id="main">
+<h1 class="title">More features</h1>
+<p>PyPy has many secondary features and semi-independent
+projects.  We will mention here:</p>
+<ul class="simple">
+<li><strong>the .NET backend:</strong> you get a version of <tt class="docutils literal"><span class="pre">pypy-c</span></tt> that runs
+natively in the .NET/CLI VM.  Of particular interest is <a class="reference external" href="http://codespeak.net/svn/pypy/branch/cli-jit/">the cli-jit
+branch,</a> in which you can make a version of <tt class="docutils literal"><span class="pre">pypy-c</span></tt> which also
+contains a high-level JIT compiler (it compiles your Python programs
+Just in Time into CLR bytecodes, which are in turn compiled natively
+by the VM).</li>
+<li><strong>the Java backend:</strong> PyPy can run on the Java VM, but more
+care is needed to finish this project.  Writing a backend for our
+high-level JIT compiler would be excellent.  <a class="reference external" href="http://codespeak.net/mailman/listinfo/pypy-dev">Contact us!</a></li>
+<li><strong>Other languages:</strong> available in a <a class="reference external" href="http://codespeak.net/svn/pypy/lang/">separate part of the repository</a>,
+we implemented other languages too: <a class="reference external" href="http://codespeak.net/svn/pypy/lang/prolog/trunk">Prolog</a> (almost complete), as
+well as Smalltalk, JavaScript, Io, Scheme and Gameboy.</li>
+</ul>
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----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-----END PKCS7----- " />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+</div>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file

Added: pypy/extradoc/pypy.org/sandbox.html
==============================================================================
--- (empty file)
+++ pypy/extradoc/pypy.org/sandbox.html	Tue Mar  9 18:25:52 2010
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<title>PyPy :: Sandboxing</title>
+	<meta http-equiv="content-language" content="en" />
+	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+	<meta name="author" content="PyPy Team" />
+	<meta name="description" content="PyPy" />
+	<meta name="copyright" content="MIT" />
+	<meta name="document-rating" content="general" />
+	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
+	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
+	<script type="text/javascript" src="http://use.typekit.com/hdt8sni.js"></script>
+	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
+	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+  <script type="text/javascript" src="js/detect.js"></script>
+</head>
+<body>
+<script type="text/javascript">
+	var _gaq = [['_setAccount', 'UA-90176-26'], ['_trackPageview']];
+	if (document.location.protocol !== 'file:') {
+		(function() {
+			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
+		})();
+	}
+</script>
+<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
+<div id="header">
+	<div id="menu-follow">
+		<div><a href="http://search.twitter.com/search?q=%23pypy" title="Follow the conversation on Twitter"><img src="http://static.ampify.it/icon.twitter.gif" alt="Follow the conversation on Twitter" width="14px" height="14px" /></a></div>
+    <div><a href="http://codespeak.net/svn/pypy/trunk/"><img src="http://svn.apache.org/repos/asf/subversion/trunk/notes/logo/256-colour/subversion_logo_notxt-32.png" width="14px" height="14px" /></a></div>
+		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="http://static.ampify.it/icon.rss.png" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
+	</div>
+	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" width="149px" height="110px" /></a></div>
+	<!--
+	<div id="menu"><ul>
+		<li><a href="http://dev.ampify.it" py:attrs="menu_class['code']">Code</a></li>
+	</ul></div>
+	-->
+	<hr class="clear-left" />
+	<div id="menu-sub"><a href="index.html">Home</a><span class="menu-sub-sep"> | </span><a href="download.html">Download</a><span class="menu-sub-sep"> | </span><a href="compat.html">Compatibility</a><span class="menu-sub-sep"> | </span><a href="http://speed.pypy.org">Performance</a><span class="menu-sub-sep"> | </span><a href="http://codespeak.net/pypy/trunk/pypy/doc/index.html">Dev Site</a><span class="menu-sub-sep"> | </span><a href="http://morepypy.blogspot.com">Blog</a></div>
+	<hr class="clear" />
+</div>
+<div id="content">
+<div>
+<div id="main">
+<h1 class="title">Sandboxing</h1>
+<p>PyPy's <em>sandboxing</em> is a working prototype for the idea of running untrusted
+user programs. Unlike other sandboxing approaches for Python, PyPy's does not
+try to limit language features considered &ldquo;unsafe&rdquo;. Instead we replace all
+calls to external libraries (C or platform) with a stub that communicates
+with an external process handling the policy.</p>
+<p>To run the sandboxed process, get a <a class="reference external" href="download.html#sandbox">sandboxed pypy-c</a> and run:</p>
+<pre class="literal-block">
+pypy_interact.py pypy-c-sandbox
+</pre>
+<p>To read more about its features, go to <a class="reference external" href="http://codespeak.net/pypy/dist/pypy/doc/sandbox.html">our dev site</a>.</p>
+</div>
+<div id="sidebar">
+<ul>
+  <li>
+  <div class="sidepic">
+  <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+<input type="hidden" name="cmd" value="_s-xclick" />
+<input type="hidden" name="encrypted" value="-----BEGIN PKCS7-----MIIHJwYJKoZIhvcNAQcEoIIHGDCCBxQCAQExggEwMIIBLAIBADCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwDQYJKoZIhvcNAQEBBQAEgYAH3/sy5bDoM4O25ByvR5NOcWBI0FYbYC+pVo7QpE1V37Niw5RBidm8i3nf43oVHNrAnfeIzMmUfqpKjAHUxAVPmOAj/eCAMRrftdVALZ6CyKQspes8sBcA5lWYJQdG8C9fCrEFEpO4fHIALCVG8yQHxTzf+O5phBmz83cGFHNMAzELMAkGBSsOAwIaBQAwgaQGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQI4br55DXW8RqAgYD/r1840+fvxOpoBq/nayUvSYaNVcE3AXPvGfV4nlCEotgxkxxiN9eb4gIhAeKPQKXfy1IfyyWvKGInjHpfWza6VnAC6mfWun8yny5wM8lJ2y/qCFEHUjrO7z0xKhNA/M7A275wjTTGfILdIMmiPLOtFFpo9jBTNR0G0cdzq9cSsaCCA4cwggODMIIC7KADAgECAgEAMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTAeFw0wNDAyMTMxMDEzMTVaFw0zNTAyMTMxMDEzMTVaMIGOMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDU1vdW50YWluIFZpZXcxFDASBgNVBAoTC1BheVBhbCBJbmMuMRMwEQYDVQQLFApsaXZlX2NlcnRzMREwDwYDVQQDFAhsaXZlX2FwaTEcMBoGCSqGSIb3DQEJARYNcmVAcGF5cGFsLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwUdO3fxEzEtcnI7ZKZL412XvZPugoni7i7D7prCe0AtaHTc97CYgm7NsAtJyxNLixmhLV8pyIEaiHXWAh8fPKW+R017+EmXrr9EaquPmsVvTywAAE1PMNOKqo2kl4Gxiz9zZqIajOm1fZGWcGS0f5JQ2kBqNbvbg2/Za+GJ/qwUCAwEAAaOB7jCB6zAdBgNVHQ4EFgQUlp98u8ZvF71ZP1LXChvsENZklGswgbsGA1UdIwSBszCBsIAUlp98u8ZvF71ZP1LXChvsENZklGuhgZSkgZEwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLUGF5UGFsIEluYy4xEzARBgNVBAsUCmxpdmVfY2VydHMxETAPBgNVBAMUCGxpdmVfYXBpMRwwGgYJKoZIhvcNAQkBFg1yZUBwYXlwYWwuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAgV86VpqAWuXvX6Oro4qJ1tYVIT5DgWpE692Ag422H7yRIr/9j/iKG4Thia/Oflx4TdL+IFJBAyPK9v6zZNZtBgPBynXb048hsP16l2vi0k5Q2JKiPDsEfBhGI+HnxLXEaUWAcVfCsQFvd2A1sxRr67ip5y2wwBelUecP3AjJ+YcxggGaMIIBlgIBATCBlDCBjjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtQYXlQYWwgSW5jLjETMBEGA1UECxQKbGl2ZV9jZXJ0czERMA8GA1UEAxQIbGl2ZV9hcGkxHDAaBgkqhkiG9w0BCQEWDXJlQHBheXBhbC5jb20CAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMDMwODE2MjkzMFowIwYJKoZIhvcNAQkEMRYEFBlmAndieba1aPu4bCySecgdf2DyMA0GCSqGSIb3DQEBAQUABIGAbsalxdqAxBBOgQZzA6u30njM6jqGugdDTUnbiaAKOK8K/i0lE+81vPWmta2xjXijZc9w7xiC6FQQwnsUqzj8IaEZbb1UalWnmkPh6Hg3pFexqUVfYMEdm6wqJzYKtUD0vcxT2rDyC2RRwXrrXwsdFrf2IVsfhpkx6LBVOb5UWX0=-----END PKCS7----- " />
+<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+<img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1" />
+</form>
+    </div>
+  </li>
+  <li>
+    <div class="sidepic">
+      <a id="main_download" href="#"></a>
+    </div>
+  </li>
+</ul>
+</div>
+</div>
+</div>
+</div></div></div>
+</body>
+</html>
\ No newline at end of file



More information about the Pypy-commit mailing list